FC塊用UC調(diào)用問題
劉玉蓉
發(fā)布于2014-12-08 17:21
168
0
標簽:
在FC程序塊里面調(diào)用了FC800程序塊,用的是UC調(diào)用,這個是不帶參數(shù)調(diào)用,但他下面的 P#L 22.0 P#L 32.0 P#L 18.2是干什么用。FC800里面的
L P##IN0
LAR1
L P##IN1
LAR2
的IN0和IN1是從哪里來的,這些程序是用SCL編的,現(xiàn)在是用語句表打開的,現(xiàn)在用的是UC調(diào)用,是不是IN0和IN1就沒有用?
問題補充:
見圖片
圖片說明: 1,1 2,2
佳答案
1、這樣寫就直觀了。
UC FC800
P#L 22.0 //就是#IN0
P#L 32.0 //就是#IN1
P#L 18.2//就是#IN2
程序:
L P##IN0//就是#L 22.0
LAR1
L P##IN1//就是#L 32.0
LAR2
2、轉(zhuǎn)帖:
UC指令是不能傳遞參數(shù)的,但是并不代表UC指令不能傳遞地址(SETP7手冊沒有關(guān)于這方面的文檔資料),在實際中發(fā)現(xiàn)UC調(diào)用FC時可以傳遞地址,語句的格式是: UC FCx{addr1,addr2,...,addrn}; 這種使用方法只能在STL文本狀態(tài)下使用,在非文本模式下無法書寫,但是可以顯示,在非文本下顯示的格式是:
UC FCx
addr1
addr2
addrn
有了UC調(diào)用FC的傳遞地址格式,我們還要知道地址和我們FC的參數(shù)對應(yīng)方法: 輸入?yún)?shù) --> 返回參數(shù) --> 輸出參數(shù) --> 輸入輸出參數(shù) .
有了上面的方法,我們可以使用UC來調(diào)用帶參數(shù)的FC了,我們還是以上面的程序為例,在OB1中使用UC調(diào)用"FC_DEMO" ,
. //其他程序代碼
UC "FC_DEMO" {P#DBX 0.0,P#L 20.0,P#M 0.0};
. //其他程序代碼
編譯后,在非文本模式下看OB1的代碼,
. //其他程序代碼
UC "FC_DEMO"
P#DBX 0.0
P#L 20.0
P#M 0.0
. //其他程序代碼
我們把程序下載到PLC去執(zhí)行,他的效果和使用CALL指令的效果是一樣的。