程松貴 張文群 王福松
(1.安徽江淮汽車集團股份有限公司 安徽省合肥市 230000 2.合肥通用職業(yè)技術(shù)學院 安徽省合肥市 230000)
(3.安徽江淮銀聯(lián)重型工程機械有限公司 安徽省合肥市 230000)
隨著人工成本越來越高,隨著企業(yè)市場競爭壓力越來越大,越來越多的物流工作由AGV 小車自動完成[1]。AGV 的技術(shù)核心在車載控制系統(tǒng)及AGV 調(diào)度系統(tǒng)。調(diào)度系統(tǒng)與AGV 之間普遍采用Wi-Fi 進行數(shù)據(jù)交互,并且普遍采用TCPIP 通信協(xié)議。這種模式在車間鋼結(jié)構(gòu)比較復雜或電磁干擾比較嚴重的環(huán)境下,由于無線網(wǎng)絡的不穩(wěn)定,導致車載無線通信模塊偶爾掉線,掉線之后車載通信模塊需重新上電或調(diào)度程序重啟才能恢復正常的通信。鑒于此文章提出基于UDP的AGV無線通信方案,并應用于工程項目中,效果良好。
用戶數(shù)據(jù)報協(xié)議(UDP)是ISO 參考模型中一種無連接的傳輸層協(xié)議,提供面向操作的簡單非可靠信息傳送服務。UDP 協(xié)議直接工作于IP 協(xié)議的上層,和TCP 協(xié)議提供的服務相比具有以下特點:
(1)是一種報文投遞方式,沒有流的概念;
(2)不存在連接,不提供可靠通信保證;
(3)UDP 頭部包含很少的字節(jié),比TCP 頭部消耗少,傳輸效率高。
在數(shù)據(jù)傳輸?shù)目煽啃陨?,TCP 具有顯而易見的優(yōu)勢。由于建立了明確的連接,加上有確認與超時重發(fā)、流量控制等功能,端與端之間進行數(shù)據(jù)傳輸穩(wěn)定可靠。這樣的通信方式適合于網(wǎng)絡環(huán)境復雜的廣域網(wǎng),數(shù)據(jù)傳輸可能跨越多個不可預知的網(wǎng)段的場合。如果應用是在網(wǎng)絡環(huán)境簡單明確或網(wǎng)絡不確定因素可預知的局域網(wǎng),強調(diào)系統(tǒng)的可靠性及穩(wěn)定性,強調(diào)系統(tǒng)能快速自恢復,UDP 是更合適的通信協(xié)議。
AGV 系統(tǒng)的基本構(gòu)成(如圖1 所示),包括調(diào)度系統(tǒng)、局域網(wǎng)、無線基站若干、車載通信模塊若干、車載控制系統(tǒng)若干等。無線基站采用AWK-1131A模塊,為工業(yè)無線AP/client;支持高速無線連接,數(shù)據(jù)傳輸速率高達300 Mbps。車載通信模塊為MOXA W2150A,支持TCP Client、TCP Server 及UDP 通信模式;支持快速自動無線漫游功能,支持在不同的AP 之間無線漫游接入。調(diào)度系統(tǒng)與AGV的數(shù)據(jù)交互鏈路如下:車載控制系統(tǒng)通過RS232 接口與車載通信模塊通信;再經(jīng)過無線網(wǎng)絡與現(xiàn)場分布的無線基站通信;無線基站通過有線局域網(wǎng)與調(diào)度系統(tǒng)通信。
為了保證車載通信模塊與調(diào)度計算機之間能可靠通信,需要對無線網(wǎng)絡模塊進行正確配置。無線基站配置的主要參數(shù)有:基站IP地址;基站信道號;基站AP 運行模式。車載通信模塊配置的主要參數(shù)有:車載模塊IP 地址;支持的信道號(最多3 個);網(wǎng)絡協(xié)議配置為UDP 模式;目標地址(調(diào)度計算機IP)及目標端口號(每臺AGV 對應的目標端口號不同,如圖2 所示);數(shù)據(jù)包分割符。圖3 所示為車載模塊網(wǎng)絡設置界面。
圖1:無線網(wǎng)絡示意圖
圖2:AGV IP 及端口分配
圖3:車載模塊網(wǎng)絡設置
調(diào)度系統(tǒng)基于Visual Studio 環(huán)境開發(fā),開發(fā)語言Visual C#,為了與所有AGV 進行數(shù)據(jù)交互,建立通信類,該類用UdpClient 類實現(xiàn)UDP 協(xié)議,用IPEndPoint 類負責捆綁IP 及端口號,分別位于命名空間System.Net.Sockets 及System.Net。通信類設計接收和發(fā)送兩個線程,通過UdpClient 對象實現(xiàn)數(shù)據(jù)的發(fā)送接收。通信類部分代碼如下:
圖4:調(diào)度系統(tǒng)發(fā)送的數(shù)據(jù)報文
圖5:AGV 發(fā)送的數(shù)據(jù)報文
圖6:調(diào)度系統(tǒng)發(fā)送線程邏輯流程
基于上述通信類,為每個AGV 創(chuàng)建通信對象,并依據(jù)圖2 網(wǎng)絡配置報表配置AGV_IP、AGV_Port 及調(diào)度計算機端口號PC_Port。
鑒于UDP 網(wǎng)絡協(xié)議不提供可靠性保證,調(diào)度系統(tǒng)需要在UDP應用層進行通信安全性設計。交互的數(shù)據(jù)主要用于AGV 運行狀態(tài)監(jiān)控、交通燈控制、交通管制及AGV 車輛調(diào)度等。數(shù)據(jù)交互的應用層安全設計最基本最重要的是軟件接口協(xié)議設計,合理的軟件接口協(xié)議能以極少的資源消耗穩(wěn)定高效地實現(xiàn)數(shù)據(jù)交互,并且程序邏輯易于實現(xiàn)。
圖4 及圖5 分別為調(diào)度系統(tǒng)和AGV 發(fā)送的數(shù)據(jù)報文格式,既調(diào)度系統(tǒng)與AGV 之間的軟件接口協(xié)議。該軟件接口協(xié)議可靠性實現(xiàn)有3 層保障。
(1)有報頭及報尾支持數(shù)據(jù)的高效截取,報文長度短小固定,便于控制系統(tǒng)高效采集數(shù)據(jù);
(2)采用校驗碼,校驗碼檢驗數(shù)據(jù)報文的有效性,校驗碼只對報頭、報尾及檢驗碼之外的數(shù)據(jù)進行校驗,為提高系統(tǒng)運行效率,采用按字節(jié)累加校驗策略,若應用環(huán)境惡劣,可采用CRC 校驗策略;
(3)采用序號戳,以支持控制系統(tǒng)判定數(shù)據(jù)報文有無丟失。
應用層通信安全設計除了合適的軟件接口協(xié)議之外,還需合適的數(shù)據(jù)交互邏輯實現(xiàn)機制。調(diào)度系統(tǒng)與車載控制系統(tǒng)組之間的數(shù)據(jù)交互采用多線程應答機制,調(diào)度系統(tǒng)主動發(fā)起AGV 心跳數(shù)據(jù)或命令數(shù)據(jù),AGV 收到心跳數(shù)據(jù)或命令數(shù)據(jù)報后,返回相關信息給調(diào)度系統(tǒng)。調(diào)度系統(tǒng)啟動后首先發(fā)送心跳數(shù)據(jù),然后根據(jù)AGV 返回的數(shù)據(jù)決定下一次是發(fā)送命令數(shù)據(jù)還是發(fā)送心跳數(shù)據(jù)。
調(diào)度系統(tǒng)每個AGV 通信對象包含接收及發(fā)送線程。接收線程的Receive 方法采用阻止執(zhí)行機制,直到收到消息該方法才執(zhí)行完畢,消息糾錯及解析處理后再循環(huán)調(diào)用Receive 方法,阻止執(zhí)行直到下一個數(shù)據(jù)報文到來。
發(fā)送線程采用定時發(fā)送數(shù)據(jù)報文的模式,時間間隔滿足工程需要就行,本調(diào)度系統(tǒng)時間間隔1 秒。為防止AGV 與調(diào)度系統(tǒng)之間的數(shù)據(jù)出錯或數(shù)據(jù)丟失,增加了序號戳處理,數(shù)據(jù)發(fā)送若出錯則重新發(fā)送。調(diào)度系統(tǒng)發(fā)送線程邏輯流程如圖6 所示。
圖6 關鍵點為等待命令發(fā)送標識符判定、命令已發(fā)送標識符判定及序號戳一致性判定。調(diào)度系統(tǒng)根據(jù)發(fā)送的序號戳與返回序號戳是否一致判定命令發(fā)送是否有效,若無效則重新發(fā)送。調(diào)度系統(tǒng)每發(fā)送一次數(shù)據(jù)報文前,序號戳更新,相對時間戳控制系統(tǒng)處理起來簡單高效。
AGV 車載控制系統(tǒng)收到調(diào)度系統(tǒng)發(fā)送過來的數(shù)據(jù)報后,只做報文的截取、糾錯、解析及應用處理,然后立即回發(fā)數(shù)據(jù),邏輯相對簡單,不再贅述。
文章采用UDP 網(wǎng)絡協(xié)議,制定合理的軟件接口協(xié)議及數(shù)據(jù)交互機制,實現(xiàn)了復雜的無線網(wǎng)絡環(huán)境下的數(shù)據(jù)安全交互。該技術(shù)經(jīng)濟性、實用性及可靠性比較高,經(jīng)長期的生產(chǎn)驗證,效果良好。