摘要:随着工业自动化水平的不断提高,AGV在物流、制造等领域的应用越来越广泛。为了提高AGV系统的智能化、高效化和兼容性,本文提出了一种基于西门子PLC与德国工业通信标准VDA5050的AGV调度系统设计方案。应用结果表明,该系统能够显著提高AGV的运行效率,加强了
摘要:随着工业自动化水平的不断提高,AGV在物流、制造等领域的应用越来越广泛。为了提高AGV系统的智能化、高效化和兼容性,本文提出了一种基于西门子PLC与德国工业通信标准VDA5050的AGV调度系统设计方案。应用结果表明,该系统能够显著提高AGV的运行效率,加强了与不同制造商设备之间的兼容性。
关键词:AGV;西门子PLC;VDA5050;物流自动化
作者:张成礼 刘灿江 孟林
中国汽车工业工程有限公司工艺工程院
一
引言
随着全球制造业的快速发展,物流和仓储系统的智能化需求不断增加。作为物流自动化的重要组成部分,AGV(Automatic Guided Vehicle)被广泛应用于生产线、仓库搬运等场景中。
VDA5050是由德国汽车业协会(VDA)与VDMA材料处理和物流协会共同制定的AGV通信标准。VDA5050旨在统一并规范AGV与调度系统之间的通信流程及数据交换格式,解决不同制造商AGV系统之间兼容性差的问题,提升工厂自动化水平和整体效率。
西门子PLC是一种广泛应用于工业自动化控制的设备,具有高可靠性、高灵活性、高实时性、功能强大、易于使用等特点。
本文提出了一种基于西门子PLC和VDA5050标准的AGV调度系统设计方案,实现AGV的高效调度与管理。
二
系统总体架构及开发内容
1.系统总体架构
基于西门子PLC和VDA5050的AGV调度系统的总体架构如图1所示。该系统由以下几部分组成:
(1)PLC控制单元及HMI:运行调度系统程序,负责所有AGV的订单、动作和监控。
(2)AGV:实时定位;根据调度的订单,沿着相应路线进行导航;通过MQTT Broker与PLC实现MQTT通信。
(3)MQTT Broker:AGV与调度PLC之间MQTT通讯的中介。
图1 系统总体架构
2.系统开发内容
基于西门子PLC和VDA5050的AGV调度系统的开发内容主要包括以下几个方面的内容:
(1)VDA5050接口数据定义:定义符合VDA5050标准的调度系统与AGV之间的接口数据;
(2)VDA5050通信模块设计:使用博图通信库中的MQTT协议程序块进行编程设计,实现调度系统与AGV之间的MQTT通讯;
(3)调度系统设计:AGV路径规划及订单分配;交通管制,检测和解决交通堵塞问题;充电管理;与外围设备的通讯及联锁控制。
三
VDA5050接口数据定义
VDA5050接口数据包括调度系统命令数据和AGV状态数据两部分。
1.调度系统命令数据
调度系统命令数据主要包括AGV运行路线的点数据、边数据和AGV动作数据。
(1)node:调度系统规划的AGV运行路线点,每次最多发送10个路线点。每个路线点的具体内容如表1。
表1 调度命令的点数据
(2)edge:调度系统规划的AGV运行路线边,每次最多发送9个路线边,与路线点对应。每个路线边的具体内容如表2。
表2 调度命令的边数据
(3)action:需要AGV执行的动作,每次最多发送4个动作。每个动作的具体内容如表3。
表3 调度命令的动作数据
2.AGV状态数据
AGV状态数据主要包括AGV的状态位、错误代码、当前位置、动作状态、电池状态、载货编号。
(1)state:AGV的状态位,具体内容如表4。
表4 AGV的状态位
(2)error:AGV的错误代码,每次最多发送16个错误代码,具体内容如表5。
表5 AGV的错误代码
(3)currentPosition:AGV的当前位置,具体内容如表6。
表6 AGV的当前位置
(4)action:AGV执行动作的状态,每次最多发送4个动作的状态,具体内容如表7。
表7 AGV的动作状态
(5)batteryState:AGV的电池状态,具体内容如表8。
表8 AGV的电池状态
(6)loadID:AGV的载货编号,具体内容如表9。
表9 AGV的载货编号
四
VDA5050通信模块设计
MQTT协议是lot领域使用最广泛的通讯协议,也是VDA5050推荐使用的通讯协议。该协议是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT协议用极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。
西门子官方提供了一个包含多种通信协议的SIMATIC控制器通信库,该库基于博途环境,不仅支持TCP、FTP、HTTP等传统协议,还涵盖了MQTT、OPCUA、SNMP等新兴协议。利用通信库中的MQTT功能块,把S7-1500或S7-1200作为客户端,快速实现与服务器(Broker)的MQTT通信,大大简化了通信模块的开发难度。VDA5050通信的数据流如图2所示。
图2 VDA5050通信的数据流
1.博图MQTT功能块的关键参数
(1)QoS参数
QoS参数是MQTT通讯的一个重要参数,用于设置传输质量等级,发布消息时可设置0、1或2;订阅消息时仅可设置0或1。其含义如下:
QoS0:最多交付一次,是最低的QoS等级,消息即发即弃,不需要等待确认,不需要存储和重传。此等级存在丢失消息的可能。
QoS1:至少交付一次。为了保证消息送达,QoS1加入了应答与重传机制,发送方只有在收到接收方的PUBACK报文以后,才认为消息投递成功,停止发送;在此之前,发送方需要存储该PUBLISH报文并定时重传。此等级存在收到重复消息的可能。
QoS2:只交付一次,是最高的QoS等级,解决了QoS0可能丢失消息和QoS1可能收到重复消息的问题。但其交互流程复杂、开销较高。每次QoS2消息投递,都要求发送方与接收方进行至少两次请求/响应流程。
为了平衡PLC的运行效率和硬件开销,本系统采用定时发布消息的方式,即使消息没有变化,也定时发布。这样,发布消息的QoS参数设置为0即可满足要求。订阅消息时,每次收到消息后,与上一次收到的消息进行比较,相同时丢弃。
(2)topic参数
topic参数是一个字符串,表示要发布或订阅的主题。在MQTT协议中,消息是通过主题进行发布和订阅的,主题可以看作是消息的地址。当有新消息发布到订阅的主题时,客户端会接收到这些消息。主题可以使用斜杠(/)来分隔多个层级;订阅主题时可以使用单层级通配符“+”或多层级通配符“。
本系统用“AGVxxx/Command”表示调度系统发布的主题;“AGVxxx/Status”表示AGV发布的主题(xxx表示AGV编号,下同)。
(3)connID参数和clientIdentifier参数
connID参数表示连接标识符。在MQTT协议中,每个客户端与MQTT服务器之间的连接都会被分配一个唯一的连接标识符,这个标识符用于区分不同的客户端连接。用Word类型的整数表示。clientIdentifier参数是一个字符串,表示MQTT客户端的标识名。为了避免发布消息与订阅消息之间的相互影响,建议使用不同的连接标识符和客户端标识名。
本系统用“1xxx”表示调度系统发布消息的连接标识符;“2xxx”表示调度系统订阅消息的连接标识符;“3xxx”表示AGV发布消息的连接标识符;“4xxx”表示AGV订阅消息的连接标识符。
本系统用“MCtoAGVxxx”表示调度系统发布消息的客户端标识名;“MCfromAGVxxx”表示调度系统订阅消息的客户端标识名;“AGVxxxtoMC”表示AGV发布消息的客户端标识名;“AGVxxxfromMC”表示AGV订阅消息的客户端标识名。
2.接口数据的序列化和反序列化
TCP是传输层的网络协议;MQTT是基于TCP的应用层的网络协议;也就是说,MQTT使用TCP作为其传输层协议来实现网络通信。MQTT和TCP一样,传输的是面向字节流的二进制数据;而PLC中的接口数据以结构方式存储,所以在接口数据发布前需要使用序列化命令将结构数据转换为字节流数据;同样,在接收到订阅的接口数据后,需要使用反序列化命令将接收到的字节流数据转换为结构数据。西门子官方基于博图环境提供了功能块Serialize 和Deserialize实现序列化和反序列化功能。
3.接口数据的MQTT发布
接口数据的发布采用定时发布的方式。发布消息时,除需要设置一般参数外,还需要设置以下参数:
(1)mqttTopic主题;
(2)publishMsgLen发布消息的长度;
(3)publishMsgPayload发布的消息;
(4)Publish发布命令:布尔型变量,上升沿时发布命令。
4.接口数据的MQTT订阅与接收
只有订阅指定主题的消息后,才能接到订阅主题的信息。订阅主题只需执行一次。订阅主题时,除需要设置一般参数外,还需要设置以下参数:
(1)mqttTopic主题;
(2)Subscribe订阅命令:布尔型变量,上升沿时订阅命令。
接收消息相关的参数如下:
(1)receivedMsgStatus 接收消息的状态:0-没有新消息,1-收到新的有效消息,2: 收到新的无效消息或超长消息;
(2)receivedTopic收到消息的主题;
(3)receivedMsgDataLen:收到消息的长度;
(4)receivedMsgPayload:收到的消息。
5.MQTT通讯故障的检测与恢复
MQTT连接可能会因为各种原因被终止。为了保证MQTT通讯的可靠性,采用以下几种方式实现MQTT通讯故障的检测与恢复:
网络问题:客户端与服务器之间的网络连接可能因为网络不稳定、故障或其他问题导致连接断开。客户端实现网络监测机制,一旦检测到连接断开,尝试重新连接。
MQTT服务器关闭:MQTT服务器可能会因为维护、升级或者其他原因暂时停止服务。客户端监测识别服务器不可用状态,并在服务恢复后尝试重新连接。
客户端主动断开:客户端程序可能会因为业务逻辑需要而主动断开连接。确保在断开前完成必要的清理工作,如取消订阅主题等。
认证失败或连接策略变化:服务器可能因为认证信息不正确或连接策略变化拒绝连接。客户端应正确处理CONNACK报文中返回的错误码,并按照相应策略响应。
网络断开、未知故障或不能自动恢复的故障:进行故障报警,提示维护人员进行处理。
五
调度系统设计
1.基本信息设置
根据AGV的运行线路、工艺流程等因素设置基本信息,主要包括点(Node)表、边(Edge)表、订单(Order)表等。
(1)点(Node)表:其结构同调度系统命令数据中的node;根据需要在AGV的运行路线上设置点,并把点的相应信息填入该表中。
(2)边(Edge)表:其结构同调度系统命令数据中的edge;首先,根据需要对边进行分类(如:直线边、转弯边等),然后为每类边定义信息并填入该表。
(3)订单(Order)表:每个订单的具体内容如表10。
表10 订单表
2.示例说明
为便于说明,如图3所示,以某新能源汽车电池模组检测线为例进行说明,工作流程如下:
(1)点1:检测位分配;根据检测位A(点19)、检测位B(点26)的使用情况进行分配或等待;
图3 某新能源汽车电池模组检测线简化图
(2)点19、26:电池模组装载、检测及充电; 检测完成后,运行到卸载点;
(3)点13:电池模组卸载;卸载完成后,运行到检测位分配点。
根据工作流程,订单路径配置如表11。
表11 示例订单路径配置
3.系统主要控制逻辑
AGV到达订单的倒数第二个点后,根据以下逻辑自动分配新订单,实现AGV的路径选择、交通管制和自动连续运行。
(1)当前订单允许离开:如订单1,当AGV接到AGV测试完成的放行信号且电量满足最低要求时允许;如订单3,无外界条件,直接设置为允许;
(2)下一订单设置:如订单8,当下一订单不唯一(分岔)时,根据订单1、4、5的占用情况确定下一订单为1、4、0;当下一订单唯一时,直接设置;下一订单为0表示等待分配下一订单;
(3)下一订单允许进入:如订单1,当下一订单2没被占用且订单5没被占用时允许;
(4)当上面三个条件同时满足时,把下一订单分配给AGV。
六
结论与展望
结合PLC的强大控制能力和VDA5050的标准化通信优势,本文设计并实现了一种基于西门子PLC和VDA5050标准的AGV调度系统。实际应用表明,系统具有明显优势,可支撑智能制造的可靠性与灵活性需求。
(1)高可靠性保障:采用工业级设计的PLC硬件,具备抗振动、耐高温特性,可在恶劣工况下稳定运行。
(2)维护与改造便捷性:PLC编程语言标准化程度高,维护人员可快速定位并修复问题。模块化架构支持灵活扩展,当AGV路线或工艺调整时,仅需修改局部逻辑代码,无需重构系统。
(3)复杂交通协同能力:实现多AGV交叉路径的交通控制,通过逻辑避免碰撞;支持激光、磁条等多导航技术,确保不同类型AGV在混合场景中的协同作业。
(4)高效外部信号集成:直接接入急停、ANDON等设备信号,减少中间通信层级,提升联锁控制实时性。
(5)网络容错机制优化:降低对无线网络的实时依赖,减少因信号波动导致的AGV停滞风险。
未来将在以下几个方面进行升级改进:
(1)优化调度算法:进一步提高系统的动态适应能力。
(2)扩展应用场景:将该系统推广至更多工业领域。
参考文献:
[1]德国汽车工业协会.VDA5050通信标准2.1.0[S].2024.
———— 物流技术与应用 ————
编辑、排版:王茜
本文内容源自
欢迎文末分享、点赞、在看!转载请联系后台。
广告宣传
来源:肖宇科技频道