作者 | 主题 |
---|---|
耀眼光芒 侠圣 经验值:2331 发帖数:382 精华帖:3 |
楼主 2021-04-17 10:02:00
主题:西门子1200 Modbus RTU速率太慢问题,是否是背板通讯太慢造成? Modbus RTU有完全开放和经济的特点,但显然不是一种完全实时的协议,需要用户程序来驱动。 但是感觉Modbus速率在S7-1200下实在是太慢了,作为主站100ms才能更新一次,如果使用嵌入式系统就好很多,测量方法是通过1200内置的trace功能, 而且Modbus超时时间最短为1s,而好多嵌入式系统超时时间是100ms,请问大家遇到过吗? 我监测的是modbus master的背景DB (Modbus_Master [FB641] 3.2) 按照这个速率,读写一次相关Modbus从站就需要200ms左右了 有些相对精确的控制就需要换成别的通讯方式了。 波特率我已经调整到最高了,这个参数和波特率似乎没有太大关系。 大家Modbus轮询周期一般是多久? 更新: 有网友提示done 和req等待时间太长,我之前确实加了延时,因为考虑到周期采集。更新无等待一个截图。 模块是CM 1241 (RS422/485) S7-1200 中 截图是57600,No parity, 8 bits, 1 stop。 只有一个从站 直连 因从站配置无终端电阻困难,DP总线头终端电阻未启用。 为保证测试正确,使用了计算机模拟Modbus Slave(Modbus Slave 7.3.1 )效果相似 相同
工艺第一&
我所说的一切均代表个人意见
|
Zane 版主 经验值:76112 发帖数:19121 精华帖:378 |
1楼 2021-04-17 11:20:22
主题:回复:西门子1200 Modbus RTU速率太慢问题,是否是背板通讯太慢造成?? 通信速度的快慢与下列因素有关 1) 通信波特率的高低 2) 通信数据的的多少 3) 扫描周期的长短,因为通信是异步执行的,实际通信完成到查询到DONE标志位的时间是有一定间隔的 4) 通信的逻辑控制 5) 从站的响应速度 6) 线路上的干扰
Zane
注册自动化系统工程师
Always save before download
|
WWCWWC 至圣 经验值:72003 发帖数:8041 精华帖:145 |
2楼 2021-04-17 11:29:50
主题:回复:西门子1200 Modbus RTU速率太慢问题,是否是背板通讯太慢造成?? 通讯正常前提下:主要看从站数量、通讯数据长度。 通讯波特率我之前还真的单独测试过,比如用9600与19.2K比较,并不能够理解为通讯速率快一半的概念,频率越高通讯数据交换越快,但不是与通讯频率呈线性关系的。 |
Zaxife 至圣 经验值:12573 发帖数:2503 精华帖:31 |
4楼 2021-04-17 17:56:59
主题:回复:西门子1200 Modbus RTU速率太慢问题,是否是背板通讯太慢造成?? 看trace图,人家库运行没任何问题啊。 1、你的Req并不是Done的下一个周期触发?或者主程序周期过长?反正趋势图很明显的看到主要就是这两个原因造成的通讯事务过慢。 2、根据串口通讯波特率与Modbus RTU数据帧计算,9600波特率下,100ms是否读/写超过35个保持寄存器? 120ms是否读/写超过40个保持寄存器?320ms是否读/写超过120个保持寄存器?从Busy可以看出很长的时间都是消耗在通讯事务上了,要么是操作寄存器太多,要么是波特率太低。 最后,感觉都是你的问题啊。。。。 |
耀眼光芒 侠圣 经验值:2331 发帖数:382 精华帖:3 |
5楼 2021-04-18 10:13:56
主题:回复:西门子1200 Modbus RTU速率太慢问题,是否是背板通讯太慢造成?? 感谢回复 回应1. 更新了一下截图,done结束后立即req。 只调用Modbus程序,不调用用户程序了。 之前有延时是因为既然时间差这么多,那我相对固定一个周期采集把。 只有一个从站。 回应2. 读取Modbus 10个words,这个应该不算数据量大吧? 当然为了保证测试无干扰,用PC软件模拟主站(Modbus Slave)效果相同。 如果谁手头有1500 的模块,可否一起测试一下1500的Modbus RTU速率?
工艺第一&
我所说的一切均代表个人意见
|
Zaxife 至圣 经验值:12573 发帖数:2503 精华帖:31 |
8楼 2021-04-20 21:04:40
主题:回复:西门子1200 Modbus RTU速率太慢问题,是否是背板通讯太慢造成?
嗯,看到你说的是跟电脑通讯调试…
这样的话基本上明白了…而且你肯定也是用Win10系统吧?并且还是不知名品牌的RS485数据线吧? 原因在于Win10电脑的串口通讯数据更新周期基本上都是15~100ms之间,再加上你的不知名品牌USB转RS485估计是软模拟串口,通讯延迟50ms以上妥妥的…所以你测试的结果都是电脑的锅。 你应该拿两个PLC来测试,然后USB转RS485线并到PLC间的数据线上,打开电脑的串口调试助手就可以看到通讯数据流,用秒表计时10秒的数据流,然后自己分析数据帧就知道通讯数据帧间隔时间了。 记得以前WinXP的串口数据流可以做到2~3ms一次中断、Win7可以做到10~15ms一次中断,到了反~人~类的Win10就糟糕透顶20ms~100ms………烂系统一大堆无用的系统服务在后台浪费系统资源。 给你个参考:我的Win7系统,Smart200仅ModbusS库,9600波特率读取电脑ModbusSlave10个寄存器,一秒钟大概读取了13~14,也就是70ms一次。用115200波特率也就17~18次。通讯时间大概可以算出来的。9600波特率时PLC请求3 + 4 + 8 = 15ms、电脑响应处理反馈数据(10~15) + (3~10) + 26 =40ms、PLC检验返回数据10ms,一共15+40+10也就65ms以上。波特率增加到57600后减少的是通讯帧时间,帧间隔等待数据检验等时间是没法减小的,时间大概10+20+10也就40ms以上,所以只要是跟电脑扯淡都不会快到哪里去的。 算了,我都不知道我乱说些什么了……… |
耀眼光芒 侠圣 经验值:2331 发帖数:382 精华帖:3 |
9楼 2021-04-21 09:59:49
主题:回复:西门子1200 Modbus RTU速率太慢问题,是否是背板通讯太慢造成? 感谢回复 现场不具备两个485 通讯的条件,等有空回到办公室可以测试。 用计算机测试的时候计算机是win7. USB转串口用的还是不错的,工控机也自带串口,我暂时未测试。 USB转串口同样曾用于与嵌入式设备直接通讯,速率远低于50ms。
工艺第一&
我所说的一切均代表个人意见
|
Zaxife 至圣 经验值:12573 发帖数:2503 精华帖:31 |
10楼 2021-04-29 10:11:38
主题:回复:西门子1200 Modbus RTU速率太慢问题,是否是背板通讯太慢造成? 今天测量了Smart200与Modbus Slave 7.1.3、单片机 做9600通讯测试读取6个保持寄存器、写3个保持寄存器。 从测试中可以看出,用Modbus Slave模拟从站与PLC通讯,PLC每秒能够进行13~14次通讯; 而与实际的单片机做通讯,PLC每秒能够进行22~23次通讯; 从这可以看出来,Win7系统的串口通讯Api是做不到每1ms中断接收处理数据的。所以,PLC与PC通讯的时间是不可能达到modbus rtu协议中定义的最小间隔时间的。 这是PLC与PC仿真的通讯次数,每秒大概13~14次: 这是PLC与单片机的通讯次数,每秒大概22~23次: |