最近查资料,看到官网写的一个文档,链接如下:
S7-1500作为Modbus TCP客户端访问多个设备的方法
https://support.industry.siemens.com/cs/document/109782521
程序里面用同一个背景数据块完成ModbusTCP三次读写任务,思路挺好理解的。但是有处问题想不明白,让我疑惑的是,三次任务都是对MB_Client块无条件调用,那么块的输出引脚应该同一周期输出,要么就只有第一次调用时输出,如果有以上情况,那么程序就不应该能正常执行,但实际上功能又是正常在执行,可以说已经超出了我的理解了,这是怎么实现的,有没有了解的仁兄解答下?
更新:
我自己又把程序写了一遍,用PLCSIM ADVANCED做的测试,结果是可以用的,trace结果也正常。我的问题是它作为FB,同一个背景数据块无条件的多次调用,为什么输出不会混乱?
再次更新:
资料显示,作为异步指令块,其执行确实与引脚参数有关。但是将第一次和第三次的参数设置成一样,第三次的触发完成位Done仍然可以在第三次引脚输出,而不是第一次的,这个是目前我唯一想不通的地方。
如果认为测试有问题的,可以自行测试,指出问题所在,如果知道实现方法,可以跟帖解答,或者参与以下编程挑战【编程挑战】同一个FB使用同一个实例多次无条件调用完成功能