技术论坛

 西门子1200 Modbus RTU速率太慢问题,是否是背板通讯太慢造成?

返回主题列表
作者 主题
耀眼光芒
侠圣

经验值: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
版主

经验值:76197
发帖数:19330
精华帖:377
1楼    2021-04-17 11:20:22
精编帖  主题:回复:西门子1200 Modbus RTU速率太慢问题,是否是背板通讯太慢造成??

通信速度的快慢与下列因素有关

1) 通信波特率的高低

2) 通信数据的的多少

3) 扫描周期的长短,因为通信是异步执行的,实际通信完成到查询到DONE标志位的时间是有一定间隔的

4) 通信的逻辑控制

5) 从站的响应速度

6) 线路上的干扰

Zane 注册自动化系统工程师 Always save before download
WWCWWC
至圣

经验值:71712
发帖数:8024
精华帖: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次:



您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。