FC块用UC调用问题

在FC程序块里面调用了FC800程序块,用的是UC调用,这个是不带参数调用,但他下面的 P#L 22.0  P#L 32.0     P#L 18.2是干什么用。FC800里面的
 L     P##IN0
      LAR1  
      L     P##IN1
      LAR2  
的IN0和IN1是从哪里来的,这些程序是用SCL编的,现在是用语句表打开的,现在用的是UC调用,是不是IN0和IN1就没有用?谢谢!

问题补充:
见图片

图片说明:

FC块用UC调用问题    FC块用UC调用问题   

最佳答案

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、转帖:
UC指令是不能传递参数的,但是并不代表UC指令不能传递地址(SETP7手册没有关于这方面的文档资料),在实际中发现UC调用FC时可以传递地址,语句的格式是: UC FCx{addr1,addr2,…,addrn}; 这种使用方法只能在STL文本状态下使用,在非文本模式下无法书写,但是可以显示,在非文本下显示的格式是:
UC FCx
addr1
addr2
addrn
有了UC调用FC的传递地址格式,我们还要知道地址和我们FC的参数对应方法: 输入参数 –> 返回参数 –> 输出参数 –> 输入输出参数 .
有了上面的方法,我们可以使用UC来调用带参数的FC了,我们还是以上面的程序为例,在OB1中使用UC调用"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去执行,他的效果和使用CALL指令的效果是一样的。

提问者对于答案的评价:
谢谢

专家置评

已阅,最佳答案正确。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc235602.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日
下一篇 2018年12月1日

相关推荐