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