OUC之UDP使用总结

已锁定

yanxiao

版主

  • 帖子

    12148
  • 精华

    46
  • 被关注

    183

论坛等级:至圣

注册时间:2003-06-06

钻石 钻石 如何晋级?

OUC之UDP使用总结

1823

2

2023-04-13 18:33:41

使用UDP没有TCP普遍。

一般认为TCP是可靠的通讯,因此优先考虑TCP。

但是,UDP也有它存在的价值。

UDP通讯,不需要通讯双方事先握手,事后也不需要维护两者之间的连接,所以,UDP是开销资源较TCP少的通讯协议。

但是UDP也有缺点,就是它无法确认数据是否准确到达目的地,如有多个数据包,到达目的地也不能区分数据包的先后顺序。

但是,有些场合,UDP的缺点并不构成问题。

比如,我用UDP传送Modbus-RTU数据到串口服务器,并向RS485串口透传,在此场景下,不会出现多个数据包的问题,而且,相对来讲,RS485通讯的可靠性比UDP还差,所以,UDP作RS485的网关协议,正合适。


我使用UDP,有一些经验可供参考:


1、在固件V2.5之前的CPU上使用OUC之UDP,遇到第一个连接就一直BUSY的问题,而且这个问题有时存在,有时不存在,有时更换一个连接ID可消除,有时也不能成功。

在固件V2.7的CPU上测试,上述问题一直没有遇到,所以,我认为应当是固件V2.5以前的CPU对UDP支持有问题。

使用UDP的库指令,并不能改变问题性质。因为,库指令只是帮使用者维护通讯所需要的表格,和直接使用UDP指令没有本质区别。

如果有人遇到相同的问题,建议直接放弃在V2.5版本以前CPU上玩UDP,改为固件V2.7版本的CPU。



2、UDP连接始终是被动连接,没有主动UDP连接类型。

在串口世界,主站控制总线,因此,从站没有主动发起通讯的权力。

在以太网世界,UDP、TCP等并不控制底层硬件,所以,即使是被动连接,也能主动发起通讯。

另外,在创建UDP连接时,没有发生和远端设备进行握手,所以,在执行TCON指令时,只须提供本地端口,无须提供远端IP、远端端口,这些IP、端口在表格中置为0。


3、远端IP、远端端口在发送指令TSEND中提供,原理上来讲,一个UDP连接,可以向不同的远端IP、不同的远端端口发送数据。

我测试了在同一个UDP连接下,向同一个IP地址,不同的两个端口发送数据,偶尔会出现状态字节报16#A7错误。

这个测试利用了同一个发送表格,没有测试各自独立使用一个表格的情况。

如果一个UDP连接,只固定向1个IP地址、1个端口发送数据,没有遇到任何问题。

也许是使用同一个表格造成的交叉感染,因为手册要求,在TSEND执行过程中,表格中的参数不能改变。这个问题,没有进一步测试确认。


4、接收指令TRECV,属于即时完成型指令,也就是指令执行完,有无数据收到立即可判断,而且后续收到的数据,与本次执行的指令已无关系。

所以,多个TRECV指令,可以共用一个表格,不会出现交叉感染的问题。

相对于TSEND,前一个TSEND指令是否完成,还要置REQ=0后再次调用指令进行查询。


OUC之UDP使用总结 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有8945条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

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