上次提的问题没有表述清楚,谢谢专家的回答。我看到官方例程里,同一个轴,生成的子程序,比如初始化ctl,手动man,goto指令等,每个指令上都有一个C-Pos和一个C-Speed管脚,而且这个管脚的地址都是VD1000(C-Pos)和VD1004(C-Speed)这两个寄存器地址。假如我在轴0的子程序里同时使用了轴初始化ctl,手动Man,goto指令等,而且这几个指令的C-Pos、C-Speed都是用的VD1000和VD1004。这样是不是可以呢?附了一张图
问题补充:
昨天可能没把图传上来。我试了一下,如果用的不同地址,有时调用时再暂停调用,这几个管脚的值会有差异,比如C-Pos的值在每个子程序(初始化ctl、手动man、goto指令)里数值都是不一样,有微小差异,有点迷惑。
图片说明:
最佳答案
同一个轴组态里面的程序都可以通用这两个地址,这两个管脚本来就是通用,我一直在同一组态轴上面调用的几个指令里面都是将这两个管脚地址用相同地址。你可以将这个管脚地址不用同一地址,再去监控这些地址里面值都是一样。
补充问题回答:
不因该才对,我以前测试没有出现这样的情况,你说微小不一样,是不是哪里设置不对,这个微小对你使用这些数据有影响吗?我做的地址和官方是一样。
提问者对于答案的评价:
谢谢老师给我回答,也谢谢其他老师。我也很奇怪,比如初始化ctrl的EN用sm0.0调用,C-Pos寄存器地址VD2000;后面goto指令的en端用m1.0,start端用m1.0的上升沿触发,C-Pos地址是VD2100,在goto指令运行中,突然复位m1.0,停止调用goto调用,goto指令立马停止,我监控了一下goto指令的C-Pos值(这个寄存器地址是VD2100和初始化ctrl子程序的C-Pos地址VD2000是不同的寄存器地址)发现这个值和初始化ctrl指令后面的C-Pos的值竟然不一样,有极微小差异,按理说应该一样才对。我猜测这个是不是跟PLC扫描周期有关系,goto指令是写在初始化指令之后的,停止调用后后面的C-Pos管脚数值不再更新,导致这个差异,这个时候哪一个寄存器里值是正确的位置值,有点迷惑。不知道这样想对不对。
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc346319.html