quote:[b]
以下是引用掠影匆匆在2011-05-16 [/b]的发言关于通讯快慢问题,首先需要了解通讯机制,对于RTU来说,由于主站和从站之间采用轮寻的通讯方式,与Profibus类似,因此一个从站的数据更新肯定是有一定的滞后,因此我们可以通过提高通讯波特率来改善,但需要说明的是,这还要取决于从站的响应速度,即一定程度上从站的"CPU"处理器能力
而对于Modbus/TCP来说,其通讯采用Client-Server的响应机制,而且基于以太网,虽然在应用层的数据封装上会占用一定的时间,但是由于给予以太网,因此这部分时间是可以忽略不计的,另外通讯延迟也在很大程度上取决于Server的并行处理能力(多线程处理),对于单线程服务器来说,其通讯延迟也是不可避免的,当然现在很多设备都是多线程处理,因此通讯速度都是很快的,需要说明的是Modbus/TCP本身的协议规范也是相对简单的,因此通讯速度是非常块的
从上面分析来看,简单的修改replay monitoring时间和超时响应时间对于改善通讯性能没有任何作用,这两个参数只能用于通讯诊断。
总结的很好,值得学习。
和TCP的关系就是
TCP打包modubstcp帧
Modbus/TCP是在TCP/IP上传输Modbus报文,所以兼有TCP/IP的流控特点,一是Modbus/TCP相对于Modbus RTU来说中去掉CRC校验,主要是TCP中已经有报文的安全传输校验机制,可以节省打包和解包的时间,所以通讯速度还是很快的。另外在Modbus/TCP的报头中有个字节包含传输的数据长度,TCP/IP协议的本质就是有没有数据的结束标,一定程度上减少了TCP/IP的“流控”“弱点”,保证了应用层数据的安全可靠传输。
所以,还要尽量简化编程,利用程序块中的现成功能完成要求,另外例子程序感觉很完善,也包含了详细的诊断。