技术论坛

 通过以太网UDP协议经串口服务器进行ModbusRTU通信的SCL源码

返回主题列表
作者 主题
宝冬
至圣

经验值: 10032
发帖数: 1522
精华帖: 29
楼主    2021-11-03 03:48:28
主题:通过以太网UDP协议经串口服务器进行ModbusRTU通信的SCL源码 精华帖  精编帖 

1、这是之前练习测试写的,框架是完整的。目的是为了与串口设备进行通信的时候,取代官方的ModbusTCP的Client指令。官方的体积太大了,一个FB代码就占20K工作内存。

另外与串口设备通信,都是轮询,用TCP开销大,且从道理上讲没有意义。而且TCP慢,尤其是连接通道的建立和断开。

UDP不怕网线的插拔,不怕有线和无线之间的切换,这是无连接通信的好处。断两小时也没事,插上网线立马恢复通信。用用下面这个块就知道了。

因为是给自己用的,如果解析中的数据类型不符合需求,各位自行修改。


2、把串口服务器设置为UDP Server。把网关功能关闭,串口侧不做协议转换,直接是UDP拆包之后或打包之前的数据部分透传往来。这数据部分就是完整的ModbusRTU报文。

如果是ModbusTCP,网关做的转换是:把报文前面的MAP(Modbus Application Protocal)的6字节报文头添加或去掉,报文后面的CRC16去掉或添加。


3、指令接口与Modbus指令类似,但是需要一个UDP连接的ID,而不是485端口。还需要包含串口服务器的地址端口信息的一个结构化参数。用博途V14 SP1写的。你可以把它改写成任何自定义的串口协议。

ModbusUDP.rar


4、这个指令需要一个UDP连接。关于建立连接这件事,说起来还是有点小讲究的,所以额外提供一个如何建立连接的指令块源码。其中的道理不只是对UDP,对TCP连接一样,具体看源码。其实这个也是我从全球库中德国工程师写的改的。理念保持一样,但是原来的组织方式我觉得代码之间的耦合有点高,就重新改写了。你会看到残留的变量注释。

BuildConnection.rar


5、博途中所说的以太网连接,其实是指在PLC后台一个独立运行的通信线程。

了解一点上位机开发的知道,你自己用比如C#建立一个socket对象进行通信的时候,都是把它单独放在一个线程里。每个Socket用一个线程,大家都在同时监听各自的端口。所谓异步,就是指并行的线程,各干各的不等别人。

PLC中连接资源的限制,就是指后台可以运行的通信线程的数量限制。这就解释了,为什么UDP是无连接通信,但它还要占用一个连接资源。它必须要占用一个线程。


6、关于以太网连接,除了TCON和TDISCON,还有两条指令。

一个是T_DIAG,可以知道某个连接的状态和属性。我觉得作用一般,你还是得需要健壮的策略能成功新建、断开、重建,另建才行。

另一个是T_RESET,这个很有用。它可以把阻塞的连接重新建立起来,也就是对应的线程被憋死了需要重现。这在串口应用很少,在常规以太网中很有用,阻塞不少见。


7、关于如何使用这个块建立UDP连接和一些参数设置,参考下图。最终得到的连接ID在Connect结构变量里面的ID,把它连接到modbusUDP模块的管脚就可以了。包含串口服务器的地址端口信息的结构化参数,也要连接到modbusUDP模块的管脚。


8、有兴趣研究的朋友,建议买个带端口镜像的交换机,一百多块钱。以太网侧用wireshark抓包,串口侧用串口助手抓包,可以实时对比观察协议报文的细节和转换,还有时间因素等。

通信的东西说到底,要落到网络报文的内容上。无论出现任何问题,抓包看报文,是高效靠谱的排查手段,单靠软件很多时候就是猜测。

UDP在抓包诊断上有绝对优势。使用UDP的通信,底层往来的场景是非常干净的。没有TCP内在那些复杂度。一看就知道应用层的问题出在哪。


9、UDP真正有魅力的地方是自建应用层协议实现可靠传输,这是当前的发展趋势,TCP有点落伍了。腾讯抖音快手,鸿蒙软总线等都有UDP在里面。你在家wifi玩游戏,走到外面已经切换到手机4G了,但是游戏依然不会掉线,这后面都是UDP。

在PLC中同样可以自建协议实现可靠传输。单个UDP连接复用,组播。可以很大程度替代TCP。如果PLC通信全部是UDP,网络被堵死的可能性大大降低。参考下面这个帖子。

UDP的可靠传输与应用


10、这个ModbusUDP指令的地位和使用方式,与官方Master指令、自己用PtP做的Master指令、官方ModbusTCP指令是一样的。做为不同的Modbus通道方式,都是设备功能执行的资源选项。我通常把这些指令做为参数传递到设备FB内部供调度机制使用,图例如下。




ZD_JY
至圣

经验值: 13038
发帖数: 1080
精华帖: 8
1楼    2021-11-03 07:08:24
主题:回复:通过以太网UDP协议经串口服务器进行ModbusRTU通信的SCL源码

,这几个块下载下来,自己动手按照楼主的建议抓包看看,真的很不错。

做最好的自己!活出自我!
xuxiaoxue
奇侠

经验值: 8228
发帖数: 641
精华帖: 0
2楼    2021-11-03 07:57:04
主题:回复:通过以太网UDP协议经串口服务器进行ModbusRTU通信的SCL源码

好东西,学习了

努力向上
WEI~WEI
侠士

经验值: 1289
发帖数: 164
精华帖: 3
3楼    2021-11-03 07:57:07
主题:回复:通过以太网UDP协议经串口服务器进行ModbusRTU通信的SCL源码
感谢楼主的无私分享
赠人玫瑰,手留余香!
gongs
奇侠

经验值: 5699
发帖数: 1178
精华帖: 5
4楼    2021-11-03 08:47:19
主题:回复:通过以太网UDP协议经串口服务器进行ModbusRTU通信的SCL源码

下载先学习下,不懂再请教楼主

自强不息
imsea
奇侠

经验值: 9229
发帖数: 1414
精华帖: 1
5楼    2021-11-03 14:08:02
主题:回复:通过以太网UDP协议经串口服务器进行ModbusRTU通信的SCL源码

感谢楼主分享,做个标记,学习了

认真学习,努力工作
zhcwos
侠圣

经验值: 3103
发帖数: 440
精华帖: 0
6楼    2021-11-03 14:21:01
主题:回复:通过以太网UDP协议经串口服务器进行ModbusRTU通信的SCL源码


感谢楼主的无私分享

云淡风轻
千万个为什么
至圣

经验值: 10582
发帖数: 848
精华帖: 9
7楼    2021-11-03 15:04:18
主题:回复:通过以太网UDP协议经串口服务器进行ModbusRTU通信的SCL源码

感谢楼主的分享 

学如逆水行舟,不进则退! wwhoho@163.com
Virgo_Zhao
侠客

经验值: 726
发帖数: 14
精华帖: 0
8楼    2021-11-03 16:14:18
主题:回复:通过以太网UDP协议经串口服务器进行ModbusRTU通信的SCL源码

感谢分享,内容很丰富

新 手 一 枚
侠圣

经验值: 4153
发帖数: 111
精华帖: 0
9楼    2021-11-03 16:30:40
主题:回复:通过以太网UDP协议经串口服务器进行ModbusRTU通信的SCL源码


感谢楼主的无私分享!

天芯
至圣

经验值: 18789
发帖数: 2104
精华帖: 0
10楼    2021-11-03 19:25:48
主题:回复:通过以太网UDP协议经串口服务器进行ModbusRTU通信的SCL源码

不错,感谢分享源码

每个眼神都只身荒野
侠圣

经验值: 2237
发帖数: 208
精华帖: 2
11楼    2021-11-03 21:57:46
主题:回复:通过以太网UDP协议经串口服务器进行ModbusRTU通信的SCL源码


感谢楼主的分享

WOWUWUWU
至圣

经验值: 10367
发帖数: 1793
精华帖: 0
12楼    2021-11-04 07:44:06
主题:回复:通过以太网UDP协议经串口服务器进行ModbusRTU通信的SCL源码


值得学习,谢谢了。

xuxiaoxue
奇侠

经验值: 8228
发帖数: 641
精华帖: 0
13楼    2021-11-04 07:44:39
主题:回复:通过以太网UDP协议经串口服务器进行ModbusRTU通信的SCL源码


很好的学习资料

努力向上
不断攀登
至圣

经验值: 12543
发帖数: 1843
精华帖: 0
14楼    2021-11-04 08:14:41
主题:回复:通过以太网UDP协议经串口服务器进行ModbusRTU通信的SCL源码


  很强  UDP 输出速度也不错。

邮箱 yongquancun@126.com
gaojianrong
侠士

经验值: 1698
发帖数: 113
精华帖: 0
15楼    2021-11-04 08:46:15
主题:回复:通过以太网UDP协议经串口服务器进行ModbusRTU通信的SCL源码


涨知识了,跟着楼主学习。

苍穹8421
侠士

经验值: 1829
发帖数: 166
精华帖: 9
22楼    2021-11-05 11:09:09
主题:回复:通过以太网UDP协议经串口服务器进行ModbusRTU通信的SCL源码

请问楼主为什么我下载解压后用博途V16打开不呢?就是平常打开文件的方式打开的,是我打开的方式不对吗?

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