quote:以下是引用流星fly在2012-03-20 13:50:12的发言:quote:以下是引用liw2z3在2012-03-14 22:16:21的发言:走
modbus速度还是挺慢的,比如我要传输约100多个数据,那么,发一个启动命令,一开始没动静以为没通讯上,后来发现,发一个2、3s脉冲plc才能接到(plc中用的上升沿做启动命令),所以上位机需要发出启动脉冲的宽度要够,接plc的状态要做延时。
大概几十个毫秒便可以完成一个通信吧(请求帧和响应帧)。我用的19.2k,纯通信测试,大概20多ms。
在9600的速率下,主站发送指令,从站接受到请求,并返回响应的时间大概为:
(13+数据长度*2)*1.04ms+从站响应时间(如果是PLC,则为扫描时间)+50ms余量。
modbus 的1个请求最多可以读取125个字的数据,写出100个字的数据。因此,如果楼主的例子中100多个数据都是写出的数据,需要2个请求才能实现。如果是9600,假如PLC扫描时间为50ms,写出100个数据时所需的延时时间为:
(13+200)*.04+50+50=315ms左右。
由于楼主的请求需要2次才能响应,因此,时间至少500ms以上。
但是楼主说的2~3秒才能响应,理论上不太可能,建议楼主用串口调试工具软件查看一下,是上位计算机发出的请求太多或者发请求问题,还是PLC响应时间太长,还是请求有误码等问题。