在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