#goodid := #index + 1;怎么理解 #index的含义,是定义的变量,还是内部的变量

完整的程序


#goodid := #index + 1;
IF #goodid > 100 THEN
    #goodid := 1;
END_IF;
#Temp1 := #goodid * 28;//获取ID地址
POKE(area := 16#84,
     dbNumber := 1,
     byteOffset := #Temp1,
     value := #goodid);

问题补充:
你看看这个图,

图片说明:

#goodid := #index + 1;怎么理解   #index的含义,是定义的变量,还是内部的变量   

最佳答案

有可能是内部变量,也有可能是外部给定的,你看看在在程序的形参定义的位置是在哪里
如果是在TEMP区域,那就是内部临时变量,如果是在IN区域,那就是输入的形参,在调用该程序的时候需要输入数值或者地址。
IN---------变量是外部输入的,只能被本程序块读,不能被本程序块写;
OUT-------是本程序块输出的,他可以被本程序块读写,其他程序通过引脚只能读值不能写;
IN_OUT--- 输入输出变量 本程序块和其他程序都可以读写这个引脚的值。
TEMP -----临时变量,顾名思义是暂时存储数据的变量。这些临时的数据存储在CPU工作存储区的局部数据堆栈(L堆栈)中。
STAT-------在PLC运行期间始终被存储。S7 将静态变量定义在背景数据块(仅对FB而言,FC和OB无静态变量),当被调用块运行时,能读出或修改静态变量;被调用块结束后,静态变量保留在数据块中。
关于形参可以参考:
FB块和FC块
http://www.ad.siemens.com.cn/productportal/Prods/published/Prog/Prog_2.3/Prog_2.3.html

补充:
那index就是db1.dbw0了
goodid也是db1.dbw0

根据
程序的含义有点看不明白了,需要了解一下工艺
好像是根据index的值,先自加一,改写index*28的值

图片说明:

#goodid := #index + 1;怎么理解   #index的含义,是定义的变量,还是内部的变量  

提问者对于答案的评价:
智能分拣系统的程序,具体的工艺不是很清楚

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月1日 上午12:17
下一篇 2017年6月1日 上午12:17

相关推荐