基于UDP的AGV无线通信系统设计

2021-08-09 03:23程松贵张文群王福松
电子技术与软件工程 2021年11期
关键词:线程无线网络报文

程松贵 张文群 王福松

(1.安徽江淮汽车集团股份有限公司 安徽省合肥市 230000 2.合肥通用职业技术学院 安徽省合肥市 230000)

(3.安徽江淮银联重型工程机械有限公司 安徽省合肥市 230000)

1 引言

随着人工成本越来越高,随着企业市场竞争压力越来越大,越来越多的物流工作由AGV 小车自动完成[1]。AGV 的技术核心在车载控制系统及AGV 调度系统。调度系统与AGV 之间普遍采用Wi-Fi 进行数据交互,并且普遍采用TCPIP 通信协议。这种模式在车间钢结构比较复杂或电磁干扰比较严重的环境下,由于无线网络的不稳定,导致车载无线通信模块偶尔掉线,掉线之后车载通信模块需重新上电或调度程序重启才能恢复正常的通信。鉴于此文章提出基于UDP的AGV无线通信方案,并应用于工程项目中,效果良好。

2 UDP协议通信[2]

用户数据报协议(UDP)是ISO 参考模型中一种无连接的传输层协议,提供面向操作的简单非可靠信息传送服务。UDP 协议直接工作于IP 协议的上层,和TCP 协议提供的服务相比具有以下特点:

(1)是一种报文投递方式,没有流的概念;

(2)不存在连接,不提供可靠通信保证;

(3)UDP 头部包含很少的字节,比TCP 头部消耗少,传输效率高。

在数据传输的可靠性上,TCP 具有显而易见的优势。由于建立了明确的连接,加上有确认与超时重发、流量控制等功能,端与端之间进行数据传输稳定可靠。这样的通信方式适合于网络环境复杂的广域网,数据传输可能跨越多个不可预知的网段的场合。如果应用是在网络环境简单明确或网络不确定因素可预知的局域网,强调系统的可靠性及稳定性,强调系统能快速自恢复,UDP 是更合适的通信协议。

3 AGV无线网络的构建

AGV 系统的基本构成(如图1 所示),包括调度系统、局域网、无线基站若干、车载通信模块若干、车载控制系统若干等。无线基站采用AWK-1131A模块,为工业无线AP/client;支持高速无线连接,数据传输速率高达300 Mbps。车载通信模块为MOXA W2150A,支持TCP Client、TCP Server 及UDP 通信模式;支持快速自动无线漫游功能,支持在不同的AP 之间无线漫游接入。调度系统与AGV的数据交互链路如下:车载控制系统通过RS232 接口与车载通信模块通信;再经过无线网络与现场分布的无线基站通信;无线基站通过有线局域网与调度系统通信。

4 UDP网络配置

为了保证车载通信模块与调度计算机之间能可靠通信,需要对无线网络模块进行正确配置。无线基站配置的主要参数有:基站IP地址;基站信道号;基站AP 运行模式。车载通信模块配置的主要参数有:车载模块IP 地址;支持的信道号(最多3 个);网络协议配置为UDP 模式;目标地址(调度计算机IP)及目标端口号(每台AGV 对应的目标端口号不同,如图2 所示);数据包分割符。图3 所示为车载模块网络设置界面。

图1:无线网络示意图

图2:AGV IP 及端口分配

图3:车载模块网络设置

调度系统基于Visual Studio 环境开发,开发语言Visual C#,为了与所有AGV 进行数据交互,建立通信类,该类用UdpClient 类实现UDP 协议,用IPEndPoint 类负责捆绑IP 及端口号,分别位于命名空间System.Net.Sockets 及System.Net。通信类设计接收和发送两个线程,通过UdpClient 对象实现数据的发送接收。通信类部分代码如下:

图4:调度系统发送的数据报文

图5:AGV 发送的数据报文

图6:调度系统发送线程逻辑流程

基于上述通信类,为每个AGV 创建通信对象,并依据图2 网络配置报表配置AGV_IP、AGV_Port 及调度计算机端口号PC_Port。

5 UDP应用层安全通信实现

鉴于UDP 网络协议不提供可靠性保证,调度系统需要在UDP应用层进行通信安全性设计。交互的数据主要用于AGV 运行状态监控、交通灯控制、交通管制及AGV 车辆调度等。数据交互的应用层安全设计最基本最重要的是软件接口协议设计,合理的软件接口协议能以极少的资源消耗稳定高效地实现数据交互,并且程序逻辑易于实现。

图4 及图5 分别为调度系统和AGV 发送的数据报文格式,既调度系统与AGV 之间的软件接口协议。该软件接口协议可靠性实现有3 层保障。

(1)有报头及报尾支持数据的高效截取,报文长度短小固定,便于控制系统高效采集数据;

(2)采用校验码,校验码检验数据报文的有效性,校验码只对报头、报尾及检验码之外的数据进行校验,为提高系统运行效率,采用按字节累加校验策略,若应用环境恶劣,可采用CRC 校验策略;

(3)采用序号戳,以支持控制系统判定数据报文有无丢失。

应用层通信安全设计除了合适的软件接口协议之外,还需合适的数据交互逻辑实现机制。调度系统与车载控制系统组之间的数据交互采用多线程应答机制,调度系统主动发起AGV 心跳数据或命令数据,AGV 收到心跳数据或命令数据报后,返回相关信息给调度系统。调度系统启动后首先发送心跳数据,然后根据AGV 返回的数据决定下一次是发送命令数据还是发送心跳数据。

调度系统每个AGV 通信对象包含接收及发送线程。接收线程的Receive 方法采用阻止执行机制,直到收到消息该方法才执行完毕,消息纠错及解析处理后再循环调用Receive 方法,阻止执行直到下一个数据报文到来。

发送线程采用定时发送数据报文的模式,时间间隔满足工程需要就行,本调度系统时间间隔1 秒。为防止AGV 与调度系统之间的数据出错或数据丢失,增加了序号戳处理,数据发送若出错则重新发送。调度系统发送线程逻辑流程如图6 所示。

图6 关键点为等待命令发送标识符判定、命令已发送标识符判定及序号戳一致性判定。调度系统根据发送的序号戳与返回序号戳是否一致判定命令发送是否有效,若无效则重新发送。调度系统每发送一次数据报文前,序号戳更新,相对时间戳控制系统处理起来简单高效。

AGV 车载控制系统收到调度系统发送过来的数据报后,只做报文的截取、纠错、解析及应用处理,然后立即回发数据,逻辑相对简单,不再赘述。

6 结论

文章采用UDP 网络协议,制定合理的软件接口协议及数据交互机制,实现了复杂的无线网络环境下的数据安全交互。该技术经济性、实用性及可靠性比较高,经长期的生产验证,效果良好。

猜你喜欢
线程无线网络报文
基于J1939 协议多包报文的时序研究及应用
CTCS-2级报文数据管理需求分析和实现
滤波器对无线网络中干扰问题的作用探讨
浅析反驳类报文要点
浅谈linux多线程协作
无线网络的中间人攻击研究
ATS与列车通信报文分析
基于上下文定界的Fork/Join并行性的并发程序可达性分析*
Linux线程实现技术研究
数说无线网络:覆盖广 流量大 均衡差