gnail092 发表于 2023-8-5 21:53:22

请教ModbusTcp从站响应速度问题

本帖最后由 gnail092 于 2023-8-6 06:12 编辑

设备属于工业仪表,作为ModbusTcp从站,以太网用想用现成的串口转以太网模块来做,简单又稳定可靠,但我不知道行业内对modbusTcp从站的响应速度有没有要求,工业上是不是有这方面的要求的,用串口模块能不能满足,因为用串口模块的话响应速度肯定是在串口的速度瓶颈,没有MCU自己跑协议栈来的快。另外我想到ModbusTcp主站在抄读从站的时候一般都是采用轮询机制的吗,还是采用并发机制可以同时抄读从站设备数据,这样主站获取从站数据是最及时的吧。所以我觉的主站要想实时的获取从站的数据,不要采用轮询模式是最快的,不然即使从站响应速度再快也效果不大,因为主要的时间是耗在了轮询所有设备一个周期的时间,不知道我理解的对不对?

modbus 发表于 2023-8-5 22:23:06

响应速度没要求,但也别超过主站设置的最长应答等待时间(一般为秒级)。主站是电脑的话一般都是同时建立多个TCP连接来与不同的从站通讯

gnail092 发表于 2023-8-5 22:39:30

modbus 发表于 2023-8-5 22:23
响应速度没要求,但也别超过主站设置的最长应答等待时间(一般为秒级)。主站是电脑的话一般都是同时建立多 ...
(引用自2楼)

嗯,主站是监控平台或者DCS,与所有的从站建立连接后,那也像modbus RTU那样一个一个轮询获取数据的吗

modbus 发表于 2023-8-5 23:10:35

gnail092 发表于 2023-8-5 22:39
嗯,主站是监控平台或者DCS,与所有的从站建立连接后,那也像modbus RTU那样一个一个轮询获取数据的吗 ...
(引用自3楼)

与所有从站都建立连接后,主站与各个从站之间你可以理解为是并行通讯的,轮询的话是先与从站1建立连接、读写数据、关闭连接,再与从站2建立连接、读写数据、关闭连接,……

honami520 发表于 2023-8-5 23:14:13

不要把主站想的多么高大上,一般都是些PLC,触摸屏啥的去读你的设备。
超时时间都是可以调节的。
你就按照正常的逻辑去处理就行了。
只有菜鸟,才会用尽全力分秒不差的疯狂读取。对于一个需要长期运行的环境来说,兼容性、稳定性超过性能。谁都不想老是跑过去维护。
而且那些读到的数据有时候是需要存储到数据库里面的,真的疯狂读的那么快,硬盘也会很快爆掉的。

实际使用的时候,就是给出一个数据配置表格,然后按照文档来分配寄存器。之后就按照标准的modbus方式,能一次读取到的就一次读取到。
不能一次读取到的,就分多次来读取,然后周而复始就完了。

gnail092 发表于 2023-8-6 10:41:58

honami520 发表于 2023-8-5 23:14
不要把主站想的多么高大上,一般都是些PLC,触摸屏啥的去读你的设备。
超时时间都是可以调节的。
你就按照 ...
(引用自5楼)

那modbus Tcp主站这边与各个从站之间一般是并行通讯的吗,这样至少比modbus RTU获取所有的设备的数据所花的时间要短的多

honami520 发表于 2023-8-6 10:56:15

gnail092 发表于 2023-8-6 10:41
那modbus Tcp主站这边与各个从站之间一般是并行通讯的吗,这样至少比modbus RTU获取所有的设备的数据所花 ...
(引用自6楼)

这个要看用到的主站设备了。一般常用的就是电脑(上面运行modbus tcp poll这样的类似软件),再就是触摸屏、PLC等等支持modbus tcp的设备。
一般来说,modbus tcp是开启网络连接的,就是一个连接就需要占用一个socket,一个线程。
电脑上面支持的socket数量肯定足够大,所以可以做到并发去连接,这样读取速度快。
如果是plc、触摸屏的话,因为它里面也是单片机或者linux系统。这个时候可能支持的socket数量是有限的,在有限的范围内,是可以做到并发读取的。

所以你要是做主站的话,还是要支持并行通信最好的

liao-ljj 发表于 2023-8-6 11:14:36

还是买好设备把....不行就Modbus通讯网关...实时性和可靠性都有保障,便宜没好货....切记!

gnail092 发表于 2023-8-6 11:30:44

honami520 发表于 2023-8-6 10:56
这个要看用到的主站设备了。一般常用的就是电脑(上面运行modbus tcp poll这样的类似软件),再就是触摸 ...
(引用自7楼)

对,还是由主站决定的,之前碰到一个客户要求下面任何一台设备端检测的开关量状态变化有要求,主站至少要在3秒内能够读到这个状态变化,当时采用的是modbus rtu,再通过网关跟主站建立连接的,
轮询机制肯定不行,设备越多轮询下来越慢。

gnail092 发表于 2023-8-6 11:34:16

modbus 发表于 2023-8-5 23:10
与所有从站都建立连接后,主站与各个从站之间你可以理解为是并行通讯的,轮询的话是先与从站1建立连接、 ...
(引用自4楼)

感谢回复,要想更快的获取所有从站设备的实时数据,主站并发最关键

asj1989 发表于 2023-8-7 12:34:58

modbus-tcp是可以并行的啊,同时连接多个设备,一起读,这是没问题的。

asj1989 发表于 2023-8-7 12:35:23

modbus-tcp是可以并行的啊,同时连接多个设备,一起读,这是没问题的。

陆小凤之北京 发表于 2023-8-7 16:25:10

10mS-20mS能回复就差不多

gnail092 发表于 2023-8-7 22:11:18

本帖最后由 gnail092 于 2023-8-7 22:14 编辑

陆小凤之北京 发表于 2023-8-7 16:25
10mS-20mS能回复就差不多
(引用自13楼)

你是指从主站发送完报文开始到接收到从站的响应报文之间的时间吗,我大概估计下,用串口转以太网模块的话,一般都可以到115200波特率甚至更高,假如与模块交互的数据包总共100字节就要花费10ms,单片机为了提高响应速度,可以采用DMA方式去做串口接收,另外以太网模块对以太网接口这边或串口这边在接收到数据后再进行转发这个速度应该都是比较快的吧,然后从以太网接口出去后的百兆速度所消耗的时间忽略不计,20ms以内理论上应该可以,当然其它因以太网网络问题导致的延迟也不包含在这里。

ddcour 发表于 2023-8-7 23:06:59

这个是要看场合,系统的实时要求的,能用modbus-tcp的系统都不会太苛刻了
页: [1]
查看完整版本: 请教ModbusTcp从站响应速度问题