发布于 2008-09-08 21:15:11
0楼
不要把思路局限在两次调用上。
你可以假设一下如果有3-4次以上的读写需要怎么办。而其实具体应用中多个fc的调用是很平常的事。即便最简单的应用,一读一写总要有的吧,这里面FB8就需要调用2次。
比如我们要分别调用fc03,fc16,fc01,fc05
那么由于485通讯是半双工的,所以需要编制一套顺控程序来解决。
比如从m0.0开始的变量
M0.0 FB8 调用fc03请求
M0.1 FB7 fc03的返回
M0.2 FB8 SEND FC16
M0.3 FB7 RCV FC16
M0.4 FB8 SEND FC01
M0.5 FB7 RCV FC01
M0.6 FB8 SEND FC05
M0.7 FB7 RCV FC05
如果用到了232/485转换,或者从站的响应速度比较慢的情况下,还需要在中间加入延时的时间。
另外,也需要考虑到通讯超时情况下的处理。某一环节的数据回不来我们怎么处理。
当然还有一点,如果你的从站不只一个,那么需要的步骤更多了,耗费的的M变量当然会更多。所有操作都要你有计划地一个一个地逐个完成。
这也就是大家普遍抱怨多从站的情况下,modbus通讯的效率比较低。
微信公众号:PLC标准化编程,ZHO6371995