廣 告 | 點(diǎn)擊查看
摘要:隨著工業(yè)自動(dòng)化水平的不斷提高,AGV在物流、制造等領(lǐng)域的應(yīng)用越來(lái)越廣泛。為了提高AGV系統(tǒng)的智能化、高效化和兼容性,本文提出了一種基于西門(mén)子PLC與德國(guó)工業(yè)通信標(biāo)準(zhǔn)VDA5050的AGV調(diào)度系統(tǒng)設(shè)計(jì)方案。應(yīng)用結(jié)果表明,該系統(tǒng)能夠顯著提高AGV的運(yùn)行效率,加強(qiáng)了與不同制造商設(shè)備之間的兼容性。
關(guān)鍵詞:AGV;西門(mén)子PLC;VDA5050;物流自動(dòng)化
作者:張成禮 劉燦江 孟林
中國(guó)汽車(chē)工業(yè)工程有限公司工藝工程院
一
引言
隨著全球制造業(yè)的快速發(fā)展,物流和倉(cāng)儲(chǔ)系統(tǒng)的智能化需求不斷增加。作為物流自動(dòng)化的重要組成部分,AGV(Automatic Guided Vehicle)被廣泛應(yīng)用于生產(chǎn)線(xiàn)、倉(cāng)庫(kù)搬運(yùn)等場(chǎng)景中。
VDA5050是由德國(guó)汽車(chē)業(yè)協(xié)會(huì)(VDA)與VDMA材料處理和物流協(xié)會(huì)共同制定的AGV通信標(biāo)準(zhǔn)。VDA5050旨在統(tǒng)一并規(guī)范AGV與調(diào)度系統(tǒng)之間的通信流程及數(shù)據(jù)交換格式,解決不同制造商AGV系統(tǒng)之間兼容性差的問(wèn)題,提升工廠(chǎng)自動(dòng)化水平和整體效率。
西門(mén)子PLC是一種廣泛應(yīng)用于工業(yè)自動(dòng)化控制的設(shè)備,具有高可靠性、高靈活性、高實(shí)時(shí)性、功能強(qiáng)大、易于使用等特點(diǎn)。
本文提出了一種基于西門(mén)子PLC和VDA5050標(biāo)準(zhǔn)的AGV調(diào)度系統(tǒng)設(shè)計(jì)方案,實(shí)現(xiàn)AGV的高效調(diào)度與管理。
二
系統(tǒng)總體架構(gòu)及開(kāi)發(fā)內(nèi)容
1.系統(tǒng)總體架構(gòu)
基于西門(mén)子PLC和VDA5050的AGV調(diào)度系統(tǒng)的總體架構(gòu)如圖1所示。該系統(tǒng)由以下幾部分組成:
(1)PLC控制單元及HMI:運(yùn)行調(diào)度系統(tǒng)程序,負(fù)責(zé)所有AGV的訂單、動(dòng)作和監(jiān)控。
(2)AGV:實(shí)時(shí)定位;根據(jù)調(diào)度的訂單,沿著相應(yīng)路線(xiàn)進(jìn)行導(dǎo)航;通過(guò)MQTT Broker與PLC實(shí)現(xiàn)MQTT通信。
(3)MQTT Broker:AGV與調(diào)度PLC之間MQTT通訊的中介。
圖1 系統(tǒng)總體架構(gòu)
2.系統(tǒng)開(kāi)發(fā)內(nèi)容
基于西門(mén)子PLC和VDA5050的AGV調(diào)度系統(tǒng)的開(kāi)發(fā)內(nèi)容主要包括以下幾個(gè)方面的內(nèi)容:
(1)VDA5050接口數(shù)據(jù)定義:定義符合VDA5050標(biāo)準(zhǔn)的調(diào)度系統(tǒng)與AGV之間的接口數(shù)據(jù);
(2)VDA5050通信模塊設(shè)計(jì):使用博圖通信庫(kù)中的MQTT協(xié)議程序塊進(jìn)行編程設(shè)計(jì),實(shí)現(xiàn)調(diào)度系統(tǒng)與AGV之間的MQTT通訊;
(3)調(diào)度系統(tǒng)設(shè)計(jì):AGV路徑規(guī)劃及訂單分配;交通管制,檢測(cè)和解決交通堵塞問(wèn)題;充電管理;與外圍設(shè)備的通訊及聯(lián)鎖控制。
三
VDA5050接口數(shù)據(jù)定義
VDA5050接口數(shù)據(jù)包括調(diào)度系統(tǒng)命令數(shù)據(jù)和AGV狀態(tài)數(shù)據(jù)兩部分。
1.調(diào)度系統(tǒng)命令數(shù)據(jù)
調(diào)度系統(tǒng)命令數(shù)據(jù)主要包括AGV運(yùn)行路線(xiàn)的點(diǎn)數(shù)據(jù)、邊數(shù)據(jù)和AGV動(dòng)作數(shù)據(jù)。
(1)node:調(diào)度系統(tǒng)規(guī)劃的AGV運(yùn)行路線(xiàn)點(diǎn),每次最多發(fā)送10個(gè)路線(xiàn)點(diǎn)。每個(gè)路線(xiàn)點(diǎn)的具體內(nèi)容如表1。
表1 調(diào)度命令的點(diǎn)數(shù)據(jù)
(2)edge:調(diào)度系統(tǒng)規(guī)劃的AGV運(yùn)行路線(xiàn)邊,每次最多發(fā)送9個(gè)路線(xiàn)邊,與路線(xiàn)點(diǎn)對(duì)應(yīng)。每個(gè)路線(xiàn)邊的具體內(nèi)容如表2。
表2 調(diào)度命令的邊數(shù)據(jù)
(3)action:需要AGV執(zhí)行的動(dòng)作,每次最多發(fā)送4個(gè)動(dòng)作。每個(gè)動(dòng)作的具體內(nèi)容如表3。
表3 調(diào)度命令的動(dòng)作數(shù)據(jù)
2.AGV狀態(tài)數(shù)據(jù)
AGV狀態(tài)數(shù)據(jù)主要包括AGV的狀態(tài)位、錯(cuò)誤代碼、當(dāng)前位置、動(dòng)作狀態(tài)、電池狀態(tài)、載貨編號(hào)。
(1)state:AGV的狀態(tài)位,具體內(nèi)容如表4。
表4 AGV的狀態(tài)位
(2)error:AGV的錯(cuò)誤代碼,每次最多發(fā)送16個(gè)錯(cuò)誤代碼,具體內(nèi)容如表5。
表5 AGV的錯(cuò)誤代碼
(3)currentPosition:AGV的當(dāng)前位置,具體內(nèi)容如表6。
表6 AGV的當(dāng)前位置
(4)action:AGV執(zhí)行動(dòng)作的狀態(tài),每次最多發(fā)送4個(gè)動(dòng)作的狀態(tài),具體內(nèi)容如表7。
表7 AGV的動(dòng)作狀態(tài)
(5)batteryState:AGV的電池狀態(tài),具體內(nèi)容如表8。
表8 AGV的電池狀態(tài)
(6)loadID:AGV的載貨編號(hào),具體內(nèi)容如表9。
表9 AGV的載貨編號(hào)
四
VDA5050通信模塊設(shè)計(jì)
MQTT協(xié)議是lot領(lǐng)域使用最廣泛的通訊協(xié)議,也是VDA5050推薦使用的通訊協(xié)議。該協(xié)議是一種基于發(fā)布/訂閱(publish/subscribe)模式的“輕量級(jí)”通訊協(xié)議,該協(xié)議構(gòu)建于TCP/IP協(xié)議上,由IBM在1999年發(fā)布。MQTT協(xié)議用極少的代碼和有限的帶寬,為連接遠(yuǎn)程設(shè)備提供實(shí)時(shí)可靠的消息服務(wù)。
西門(mén)子官方提供了一個(gè)包含多種通信協(xié)議的SIMATIC控制器通信庫(kù),該庫(kù)基于博途環(huán)境,不僅支持TCP、FTP、HTTP等傳統(tǒng)協(xié)議,還涵蓋了MQTT、OPCUA、SNMP等新興協(xié)議。利用通信庫(kù)中的MQTT功能塊,把S7-1500或S7-1200作為客戶(hù)端,快速實(shí)現(xiàn)與服務(wù)器(Broker)的MQTT通信,大大簡(jiǎn)化了通信模塊的開(kāi)發(fā)難度。VDA5050通信的數(shù)據(jù)流如圖2所示。
圖2 VDA5050通信的數(shù)據(jù)流
1.博圖MQTT功能塊的關(guān)鍵參數(shù)
(1)QoS參數(shù)
QoS參數(shù)是MQTT通訊的一個(gè)重要參數(shù),用于設(shè)置傳輸質(zhì)量等級(jí),發(fā)布消息時(shí)可設(shè)置0、1或2;訂閱消息時(shí)僅可設(shè)置0或1。其含義如下:
QoS0:最多交付一次,是最低的QoS等級(jí),消息即發(fā)即棄,不需要等待確認(rèn),不需要存儲(chǔ)和重傳。此等級(jí)存在丟失消息的可能。
QoS1:至少交付一次。為了保證消息送達(dá),QoS1加入了應(yīng)答與重傳機(jī)制,發(fā)送方只有在收到接收方的PUBACK報(bào)文以后,才認(rèn)為消息投遞成功,停止發(fā)送;在此之前,發(fā)送方需要存儲(chǔ)該P(yáng)UBLISH報(bào)文并定時(shí)重傳。此等級(jí)存在收到重復(fù)消息的可能。
QoS2:只交付一次,是最高的QoS等級(jí),解決了QoS0可能丟失消息和QoS1可能收到重復(fù)消息的問(wèn)題。但其交互流程復(fù)雜、開(kāi)銷(xiāo)較高。每次QoS2消息投遞,都要求發(fā)送方與接收方進(jìn)行至少兩次請(qǐng)求/響應(yīng)流程。
為了平衡PLC的運(yùn)行效率和硬件開(kāi)銷(xiāo),本系統(tǒng)采用定時(shí)發(fā)布消息的方式,即使消息沒(méi)有變化,也定時(shí)發(fā)布。這樣,發(fā)布消息的QoS參數(shù)設(shè)置為0即可滿(mǎn)足要求。訂閱消息時(shí),每次收到消息后,與上一次收到的消息進(jìn)行比較,相同時(shí)丟棄。
(2)topic參數(shù)
topic參數(shù)是一個(gè)字符串,表示要發(fā)布或訂閱的主題。在MQTT協(xié)議中,消息是通過(guò)主題進(jìn)行發(fā)布和訂閱的,主題可以看作是消息的地址。當(dāng)有新消息發(fā)布到訂閱的主題時(shí),客戶(hù)端會(huì)接收到這些消息。主題可以使用斜杠(/)來(lái)分隔多個(gè)層級(jí);訂閱主題時(shí)可以使用單層級(jí)通配符“+”或多層級(jí)通配符“。
本系統(tǒng)用“AGVxxx/Command”表示調(diào)度系統(tǒng)發(fā)布的主題;“AGVxxx/Status”表示AGV發(fā)布的主題(xxx表示AGV編號(hào),下同)。
(3)connID參數(shù)和clientIdentifier參數(shù)
connID參數(shù)表示連接標(biāo)識(shí)符。在MQTT協(xié)議中,每個(gè)客戶(hù)端與MQTT服務(wù)器之間的連接都會(huì)被分配一個(gè)唯一的連接標(biāo)識(shí)符,這個(gè)標(biāo)識(shí)符用于區(qū)分不同的客戶(hù)端連接。用Word類(lèi)型的整數(shù)表示。clientIdentifier參數(shù)是一個(gè)字符串,表示MQTT客戶(hù)端的標(biāo)識(shí)名。為了避免發(fā)布消息與訂閱消息之間的相互影響,建議使用不同的連接標(biāo)識(shí)符和客戶(hù)端標(biāo)識(shí)名。
本系統(tǒng)用“1xxx”表示調(diào)度系統(tǒng)發(fā)布消息的連接標(biāo)識(shí)符;“2xxx”表示調(diào)度系統(tǒng)訂閱消息的連接標(biāo)識(shí)符;“3xxx”表示AGV發(fā)布消息的連接標(biāo)識(shí)符;“4xxx”表示AGV訂閱消息的連接標(biāo)識(shí)符。
本系統(tǒng)用“MCtoAGVxxx”表示調(diào)度系統(tǒng)發(fā)布消息的客戶(hù)端標(biāo)識(shí)名;“MCfromAGVxxx”表示調(diào)度系統(tǒng)訂閱消息的客戶(hù)端標(biāo)識(shí)名;“AGVxxxtoMC”表示AGV發(fā)布消息的客戶(hù)端標(biāo)識(shí)名;“AGVxxxfromMC”表示AGV訂閱消息的客戶(hù)端標(biāo)識(shí)名。
2.接口數(shù)據(jù)的序列化和反序列化
TCP是傳輸層的網(wǎng)絡(luò)協(xié)議;MQTT是基于TCP的應(yīng)用層的網(wǎng)絡(luò)協(xié)議;也就是說(shuō),MQTT使用TCP作為其傳輸層協(xié)議來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)通信。MQTT和TCP一樣,傳輸?shù)氖敲嫦蜃止?jié)流的二進(jìn)制數(shù)據(jù);而PLC中的接口數(shù)據(jù)以結(jié)構(gòu)方式存儲(chǔ),所以在接口數(shù)據(jù)發(fā)布前需要使用序列化命令將結(jié)構(gòu)數(shù)據(jù)轉(zhuǎn)換為字節(jié)流數(shù)據(jù);同樣,在接收到訂閱的接口數(shù)據(jù)后,需要使用反序列化命令將接收到的字節(jié)流數(shù)據(jù)轉(zhuǎn)換為結(jié)構(gòu)數(shù)據(jù)。西門(mén)子官方基于博圖環(huán)境提供了功能塊Serialize 和Deserialize實(shí)現(xiàn)序列化和反序列化功能。
3.接口數(shù)據(jù)的MQTT發(fā)布
接口數(shù)據(jù)的發(fā)布采用定時(shí)發(fā)布的方式。發(fā)布消息時(shí),除需要設(shè)置一般參數(shù)外,還需要設(shè)置以下參數(shù):
(1)mqttTopic主題;
(2)publishMsgLen發(fā)布消息的長(zhǎng)度;
(3)publishMsgPayload發(fā)布的消息;
(4)Publish發(fā)布命令:布爾型變量,上升沿時(shí)發(fā)布命令。
4.接口數(shù)據(jù)的MQTT訂閱與接收
只有訂閱指定主題的消息后,才能接到訂閱主題的信息。訂閱主題只需執(zhí)行一次。訂閱主題時(shí),除需要設(shè)置一般參數(shù)外,還需要設(shè)置以下參數(shù):
(1)mqttTopic主題;
(2)Subscribe訂閱命令:布爾型變量,上升沿時(shí)訂閱命令。
接收消息相關(guān)的參數(shù)如下:
(1)receivedMsgStatus 接收消息的狀態(tài):0-沒(méi)有新消息,1-收到新的有效消息,2: 收到新的無(wú)效消息或超長(zhǎng)消息;
(2)receivedTopic收到消息的主題;
(3)receivedMsgDataLen:收到消息的長(zhǎng)度;
(4)receivedMsgPayload:收到的消息。
5.MQTT通訊故障的檢測(cè)與恢復(fù)
MQTT連接可能會(huì)因?yàn)楦鞣N原因被終止。為了保證MQTT通訊的可靠性,采用以下幾種方式實(shí)現(xiàn)MQTT通訊故障的檢測(cè)與恢復(fù):
網(wǎng)絡(luò)問(wèn)題:客戶(hù)端與服務(wù)器之間的網(wǎng)絡(luò)連接可能因?yàn)榫W(wǎng)絡(luò)不穩(wěn)定、故障或其他問(wèn)題導(dǎo)致連接斷開(kāi)??蛻?hù)端實(shí)現(xiàn)網(wǎng)絡(luò)監(jiān)測(cè)機(jī)制,一旦檢測(cè)到連接斷開(kāi),嘗試重新連接。
MQTT服務(wù)器關(guān)閉:MQTT服務(wù)器可能會(huì)因?yàn)榫S護(hù)、升級(jí)或者其他原因暫時(shí)停止服務(wù)。客戶(hù)端監(jiān)測(cè)識(shí)別服務(wù)器不可用狀態(tài),并在服務(wù)恢復(fù)后嘗試重新連接。
客戶(hù)端主動(dòng)斷開(kāi):客戶(hù)端程序可能會(huì)因?yàn)闃I(yè)務(wù)邏輯需要而主動(dòng)斷開(kāi)連接。確保在斷開(kāi)前完成必要的清理工作,如取消訂閱主題等。
認(rèn)證失敗或連接策略變化:服務(wù)器可能因?yàn)檎J(rèn)證信息不正確或連接策略變化拒絕連接??蛻?hù)端應(yīng)正確處理CONNACK報(bào)文中返回的錯(cuò)誤碼,并按照相應(yīng)策略響應(yīng)。
網(wǎng)絡(luò)斷開(kāi)、未知故障或不能自動(dòng)恢復(fù)的故障:進(jìn)行故障報(bào)警,提示維護(hù)人員進(jìn)行處理。
五
調(diào)度系統(tǒng)設(shè)計(jì)
1.基本信息設(shè)置
根據(jù)AGV的運(yùn)行線(xiàn)路、工藝流程等因素設(shè)置基本信息,主要包括點(diǎn)(Node)表、邊(Edge)表、訂單(Order)表等。
(1)點(diǎn)(Node)表:其結(jié)構(gòu)同調(diào)度系統(tǒng)命令數(shù)據(jù)中的node;根據(jù)需要在AGV的運(yùn)行路線(xiàn)上設(shè)置點(diǎn),并把點(diǎn)的相應(yīng)信息填入該表中。
(2)邊(Edge)表:其結(jié)構(gòu)同調(diào)度系統(tǒng)命令數(shù)據(jù)中的edge;首先,根據(jù)需要對(duì)邊進(jìn)行分類(lèi)(如:直線(xiàn)邊、轉(zhuǎn)彎邊等),然后為每類(lèi)邊定義信息并填入該表。
(3)訂單(Order)表:每個(gè)訂單的具體內(nèi)容如表10。
表10 訂單表
2.示例說(shuō)明
為便于說(shuō)明,如圖3所示,以某新能源汽車(chē)電池模組檢測(cè)線(xiàn)為例進(jìn)行說(shuō)明,工作流程如下:
(1)點(diǎn)1:檢測(cè)位分配;根據(jù)檢測(cè)位A(點(diǎn)19)、檢測(cè)位B(點(diǎn)26)的使用情況進(jìn)行分配或等待;
圖3 某新能源汽車(chē)電池模組檢測(cè)線(xiàn)簡(jiǎn)化圖
(2)點(diǎn)19、26:電池模組裝載、檢測(cè)及充電; 檢測(cè)完成后,運(yùn)行到卸載點(diǎn);
(3)點(diǎn)13:電池模組卸載;卸載完成后,運(yùn)行到檢測(cè)位分配點(diǎn)。
根據(jù)工作流程,訂單路徑配置如表11。
表11 示例訂單路徑配置
3.系統(tǒng)主要控制邏輯
AGV到達(dá)訂單的倒數(shù)第二個(gè)點(diǎn)后,根據(jù)以下邏輯自動(dòng)分配新訂單,實(shí)現(xiàn)AGV的路徑選擇、交通管制和自動(dòng)連續(xù)運(yùn)行。
(1)當(dāng)前訂單允許離開(kāi):如訂單1,當(dāng)AGV接到AGV測(cè)試完成的放行信號(hào)且電量滿(mǎn)足最低要求時(shí)允許;如訂單3,無(wú)外界條件,直接設(shè)置為允許;
(2)下一訂單設(shè)置:如訂單8,當(dāng)下一訂單不唯一(分岔)時(shí),根據(jù)訂單1、4、5的占用情況確定下一訂單為1、4、0;當(dāng)下一訂單唯一時(shí),直接設(shè)置;下一訂單為0表示等待分配下一訂單;
(3)下一訂單允許進(jìn)入:如訂單1,當(dāng)下一訂單2沒(méi)被占用且訂單5沒(méi)被占用時(shí)允許;
(4)當(dāng)上面三個(gè)條件同時(shí)滿(mǎn)足時(shí),把下一訂單分配給AGV。
六
結(jié)論與展望
結(jié)合PLC的強(qiáng)大控制能力和VDA5050的標(biāo)準(zhǔn)化通信優(yōu)勢(shì),本文設(shè)計(jì)并實(shí)現(xiàn)了一種基于西門(mén)子PLC和VDA5050標(biāo)準(zhǔn)的AGV調(diào)度系統(tǒng)。實(shí)際應(yīng)用表明,系統(tǒng)具有明顯優(yōu)勢(shì),可支撐智能制造的可靠性與靈活性需求。
(1)高可靠性保障:采用工業(yè)級(jí)設(shè)計(jì)的PLC硬件,具備抗振動(dòng)、耐高溫特性,可在惡劣工況下穩(wěn)定運(yùn)行。
(2)維護(hù)與改造便捷性:PLC編程語(yǔ)言標(biāo)準(zhǔn)化程度高,維護(hù)人員可快速定位并修復(fù)問(wèn)題。模塊化架構(gòu)支持靈活擴(kuò)展,當(dāng)AGV路線(xiàn)或工藝調(diào)整時(shí),僅需修改局部邏輯代碼,無(wú)需重構(gòu)系統(tǒng)。
(3)復(fù)雜交通協(xié)同能力:實(shí)現(xiàn)多AGV交叉路徑的交通控制,通過(guò)邏輯避免碰撞;支持激光、磁條等多導(dǎo)航技術(shù),確保不同類(lèi)型AGV在混合場(chǎng)景中的協(xié)同作業(yè)。
(4)高效外部信號(hào)集成:直接接入急停、ANDON等設(shè)備信號(hào),減少中間通信層級(jí),提升聯(lián)鎖控制實(shí)時(shí)性。
(5)網(wǎng)絡(luò)容錯(cuò)機(jī)制優(yōu)化:降低對(duì)無(wú)線(xiàn)網(wǎng)絡(luò)的實(shí)時(shí)依賴(lài),減少因信號(hào)波動(dòng)導(dǎo)致的AGV停滯風(fēng)險(xiǎn)。
未來(lái)將在以下幾個(gè)方面進(jìn)行升級(jí)改進(jìn):
(1)優(yōu)化調(diào)度算法:進(jìn)一步提高系統(tǒng)的動(dòng)態(tài)適應(yīng)能力。
(2)擴(kuò)展應(yīng)用場(chǎng)景:將該系統(tǒng)推廣至更多工業(yè)領(lǐng)域。
參考文獻(xiàn):
[1]德國(guó)汽車(chē)工業(yè)協(xié)會(huì).VDA5050通信標(biāo)準(zhǔn)2.1.0[S].2024.
———— 物流技術(shù)與應(yīng)用 ————
編輯、排版:王茜
本文內(nèi)容源自
歡迎文末分享、點(diǎn)贊、在看!轉(zhuǎn)載請(qǐng)聯(lián)系后臺(tái)。
廣告宣傳
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶(hù)上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.