浔之漫智控技术(上海)有限公司
西门子PLC模块 , CPU模块 , DP通讯电缆 , 6GK交换机
西门子全国授权总代理|交换机代理商
发布时间:2023-10-26

PID的TBL要重新分配存储区还是直接用向导生成的存储区

PID向导会生成一个存储区说是用来装参数的,PID指令在用的时候TBL也是用来指定参数表的首地址的。我就想问,PID指令的TBL是需要重新分配存储区呢还是直接用向导生成的,如果是后者,应该从生成的存储区的哪个字节开始?

答:

1、指令中TBL 是回路表的起始地址,LOOP 是回路编号。如图为VB0开始。
2、PID指令的TBL向导生成的。
PID指令(功能块)使用了一个120个字节的V区参数表来进行控制回路的运算工作;除此之外,PID向导生成的输入/输出量的标准化程序也需要运算数据存储区。需要为它们定义一个起始地址,要保证该地址起始的若干字节在程序的其它地方没有被重复使用。如果点击“Suggest Address”,则向导将自动为你设定当前程序中没有用过的V区地址。  自动分配的地址只是在执行PID向导时编译检测到空闲地址。向导将自动为该参数表分配符号名,用户不要再自己为这些参数分配符号名,否则将导致PID控制不执行

ANY指针的结构图

程序中ANY的个字表示数据类型为字节,第2个字表示字节数为12,第3个字表示不是DB,第
4个字表示I区。因为起始地址(iDriveBaseINAddress)是字节地址(图中用16个b表示),需要将它左移3位,相当于乘以8(一个字节8位),作为间接寻址的指针的基础,再用OD指令叠加上指针高字节的地址区信息16#81。


ANY用的是I区,不是PI区。
假设I区的起始地址(iDriveBaseINAddress)为X,SFC20的输入参数(ANY)的实际地址为P#IX.0 BYTE 12。
当然也可以在调用SFC20时直接写P#IX.0 BYTE 12,不过老外这种模板的优点是通用,灵活。但是要看懂程序的门槛比较高


展开全文
优质商家推荐 拨打电话