300plc的局部变量的问题

在FC里面有IN 、out、in-out它们的地址是连续的从L0.0开始;但是下面的temp
的变量也是从L0.0开始的,假如我的编程时这个样子的:
A I0.0 
FP L0.0
S Q0.0
我想问下这里的L0.0是指IN等一类的 还是归属于temp一类的,作何解释
希望各位专家帮忙解释下。
还是就是能不能帮我引荐一些个指针的例子特别是pointer和any  在fc里面的应用。

问题补充:
1、首先说下,我在局部变量表里建立变量表up1,地址为0.0。
A I0.0  FP  #up1  L MW0   + 1  T MW0  
我测试的时候没有出错,为什么是正常的,二楼说的不宜的原因是什么?
2、一楼说  in  out in-out是形参而二楼说是实参到底哪个市正确的,能否解释下
3、我在out里面建立一个变量表  out , output
   A I0.0    L#OUTPUT,  + 1 ,  T OUTPUT
有人说不对,说这个变量必须建立在in-out里,但是我测试的时候没有出错啊为什么?

最佳答案

1、fc中in,out,in_out只能定义变量,没有地址,只有临时变量才有地址;fb中的in,out,in_out,stat,temp变量才有地址,除了temp外其他的地址都是连续的(可以再背景db中看到数据),temp变量只是程序内使用的,不保存,所以数据块中没有他们的地址。
2、A I0.0 
FP L0.0
S Q0.0
这样编程时错误的,因为临时变量不能保存,所以不能用于上升沿检测,如果你这样用那么s q0.0这个指令就会一直执行的,我想这不是你想要的结果的。


补充回答:
1、A I0.0  FP  #up1  L MW0   + 1  T MW0  这里你是想i0.0有一个上升沿mw0才加1吧?实际上你的程序每扫描一次,就执行一次自加正确用法是:fc中定义in_out,fb中定义in_out或者stat变量up1,然后:
A I0.0
FP UP1
JCN M1
L MW0
L 1
+I
T MW0
M1:NOP 0
2、形参就是fc,fb的引脚的名称,实参就是fc或者fb被调用时在调用块中给fb,fc的引脚连接的地址,比如你给fc定义一个输入参数in1,real,在再调用这个fc的程序中给in1连接地址md0,in1就是形参,md0就是实参。
3、不要总是相信权威,实践出真知。

提问者对于答案的评价:
各位前辈说的都有道理,但是只能选择一个—抱歉。

专家置评

楼主说正确执行的程序写错了啊,应该加跳转指令才行啊。另外就算测试的时候能够正确执行。也并不表明这段程序就会在任何环境下能够正确执行。

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

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

相关推荐