倪文龍,錢宏文,付 強(qiáng),楊文豪,饒 飛
(中國(guó)電子科技集團(tuán)公司第五十八研究所,江蘇 無錫 214035)
隨著以太網(wǎng)應(yīng)用的普及和技術(shù)的發(fā)展成熟,其他類型網(wǎng)絡(luò)技術(shù)也在逐步發(fā)展,在某些領(lǐng)域發(fā)揮著自己的優(yōu)勢(shì)[1]。在工業(yè)控制領(lǐng)域中,工業(yè)以太網(wǎng)是性能優(yōu)于現(xiàn)場(chǎng)總線,且處于快速蓬勃發(fā)展中的以太網(wǎng)改進(jìn)技術(shù)。由于系統(tǒng)兼容性好、互聯(lián)操作通用性能好,用工業(yè)以太網(wǎng)組成的網(wǎng)絡(luò)系統(tǒng)不僅可以即插即用,還可兼容許多廠家的設(shè)備;數(shù)據(jù)互通能力好,能更好實(shí)現(xiàn)系統(tǒng)管理層與現(xiàn)場(chǎng)控制信息的資源互通,傳輸距離長(zhǎng)且傳輸速率高,因此受到廣泛的關(guān)注。因此,研究基于工業(yè)以太網(wǎng)的工業(yè)設(shè)備具有很大的市場(chǎng)前景[2-3]。
工業(yè)以太網(wǎng)設(shè)備安裝運(yùn)行后,當(dāng)需要修補(bǔ)漏洞、進(jìn)行更新程序版本時(shí),要對(duì)設(shè)備程序進(jìn)行維護(hù)和升級(jí)。如果對(duì)工業(yè)以太網(wǎng)設(shè)備群進(jìn)行大規(guī)模統(tǒng)一的現(xiàn)場(chǎng)程序升級(jí),不僅會(huì)增加廠家程序維護(hù)人員的工作強(qiáng)度,還會(huì)對(duì)用戶造成極大不便,從而阻礙工業(yè)以太網(wǎng)技術(shù)的推廣和發(fā)展[4]。所以,設(shè)計(jì)能為工業(yè)控制系統(tǒng)程序完成自動(dòng)升級(jí)維護(hù)方案的需求很迫切。
傳統(tǒng)的網(wǎng)絡(luò)通信方式是利用源—目的的方式,網(wǎng)絡(luò)數(shù)據(jù)發(fā)送源節(jié)點(diǎn)唯一對(duì)應(yīng)一個(gè)目的節(jié)點(diǎn)[5]。當(dāng)源發(fā)送節(jié)點(diǎn)要將相同信息發(fā)送給多個(gè)目的節(jié)點(diǎn)時(shí),需要多次更換報(bào)文中的目的地址,同一條信息得發(fā)送多次才能發(fā)送完。因此,產(chǎn)生了生產(chǎn)者—消費(fèi)者網(wǎng)絡(luò)通信概念[6-7],并在Netlinx網(wǎng)絡(luò)中大量應(yīng)用。該模式使用組播的方式進(jìn)行數(shù)據(jù)傳輸,一個(gè)源生產(chǎn)節(jié)點(diǎn)可對(duì)應(yīng)多個(gè)目的消費(fèi)者節(jié)點(diǎn)。在網(wǎng)絡(luò)上,源節(jié)點(diǎn)數(shù)據(jù)可以在同一時(shí)刻傳送給多個(gè)目的節(jié)點(diǎn)。源節(jié)點(diǎn)對(duì)數(shù)據(jù)按報(bào)文進(jìn)行標(biāo)志,再運(yùn)用組播方式發(fā)送到互聯(lián)網(wǎng)絡(luò)中。然后,網(wǎng)絡(luò)上的目的節(jié)點(diǎn)通過標(biāo)志符按照需求接收與自身匹配的數(shù)據(jù)。此模式下,源節(jié)點(diǎn)要將同一數(shù)據(jù)發(fā)送給多個(gè)目的節(jié)點(diǎn)的時(shí)候,只需一次發(fā)送即可結(jié)束。與傳統(tǒng)方式相比,該方式優(yōu)點(diǎn)突出。
以太網(wǎng)協(xié)議、傳輸層TCP/IP協(xié)議和應(yīng)用層CIP協(xié)議組成了Ethernet/IP網(wǎng)絡(luò)主要架構(gòu)[8]。Ethernet/IP網(wǎng)絡(luò)模型如圖1所示。

圖1 Ethernet/IP網(wǎng)絡(luò)模型
常用的升級(jí)編程實(shí)現(xiàn)方法分為在系統(tǒng)編程(in system programming,ISP)與在應(yīng)用編程(in application programming,IAP)[9-10]。ISP方法通過微控制器專用的編程仿真器對(duì)微控制器的FLASH進(jìn)行編程。IAP則是將FLASH從結(jié)構(gòu)上劃分為多個(gè)存儲(chǔ)區(qū),可對(duì)除升級(jí)代碼執(zhí)行區(qū)域以外的存儲(chǔ)區(qū)重新燒寫后跳轉(zhuǎn)到最新燒寫區(qū)域執(zhí)行更新后的代碼。ISP一般需要手動(dòng)的外部電路boot實(shí)現(xiàn)。IAP則更加靈活,可使用微控制器的RS-232口或者SD卡作為媒介,并運(yùn)用引導(dǎo)加載區(qū)升級(jí)來完成內(nèi)部存儲(chǔ)區(qū)升級(jí)。
該技術(shù)主要是在產(chǎn)品出廠以后利用預(yù)留接口完成對(duì)產(chǎn)品的升級(jí)[11]。通常情況下,產(chǎn)品在出廠時(shí)就已經(jīng)完成功能代碼燒寫。當(dāng)設(shè)備需要升級(jí)時(shí),將設(shè)備返廠燒錄。此方式會(huì)對(duì)用戶造成極大困擾。如果將主控芯片的FLASH分區(qū)使用,主要分為應(yīng)用程序區(qū)(application)和引導(dǎo)加載區(qū)(bootloader)。設(shè)備出廠時(shí),需要將引導(dǎo)加載程序一次性燒好,一般不輕易修改;主要對(duì)用戶應(yīng)用程序進(jìn)行更新和升級(jí)。IAP技術(shù)原理如圖2所示。

圖2 IAP技術(shù)原理圖
此設(shè)備的升級(jí)系統(tǒng)主要是通過 STM32主系統(tǒng)、SD卡與上位機(jī)聯(lián)合使用系統(tǒng)實(shí)現(xiàn)的。設(shè)備IAP升級(jí)如圖3所示。

圖3 設(shè)備IAP升級(jí)示意圖
該系統(tǒng)實(shí)現(xiàn)了通過按鍵觸發(fā),利用SD卡完成通信系統(tǒng)的IAP升級(jí)后,再通過連接兩塊板子的RS-485總線完成另外一塊控制系統(tǒng)的IAP升級(jí),從而完成整套系統(tǒng)的軟件升級(jí)。
每一個(gè)系統(tǒng)存儲(chǔ)都劃分為引導(dǎo)加載區(qū)(APP1)和應(yīng)用程序區(qū)(APP2)。APP1中的程序可通過與工業(yè)設(shè)備連接的SD卡通信,并從SD卡中讀取工業(yè)以太網(wǎng)通信程序(預(yù)先存入SD卡里)后對(duì)APP2中的程序進(jìn)行擦除和改寫;完成通信板程序升級(jí)以后,讀取SD卡中的控制系統(tǒng)程序;通過RS-485接口完成對(duì)變頻器控制系統(tǒng)的升級(jí)工作,待第二個(gè)系統(tǒng)升級(jí)結(jié)束以后,結(jié)束系統(tǒng)的引導(dǎo)加載程序,跳轉(zhuǎn)到APP2中執(zhí)行程序。
工業(yè)以太網(wǎng)的設(shè)備包含工業(yè)以太網(wǎng)通信系統(tǒng)(通信系統(tǒng))、變頻器控制系統(tǒng)(控制系統(tǒng))2套系統(tǒng)。工業(yè)以太網(wǎng)模塊選用Anybus公司的B40集成模塊。通信系統(tǒng)為了實(shí)現(xiàn)IAP系統(tǒng)升級(jí),需要完整的最小硬件配置,除了觸發(fā)條件與升級(jí)載體外圍相關(guān)電路,還要包含STM32運(yùn)行最小系統(tǒng)。本文設(shè)計(jì)中的2套系統(tǒng)均采用STM32F429作為主控器件、按鍵作為觸發(fā)機(jī)制,決定是否升級(jí);SD卡作為升級(jí)程序載體,完成升級(jí)程序源的更新。設(shè)備內(nèi)部硬件連接如圖4所示。

圖4 設(shè)備內(nèi)部硬件連接圖
常用存儲(chǔ)設(shè)備有SD卡、FLASH和U盤。綜合比較后,本文設(shè)計(jì)采用SD卡作為2套嵌入式應(yīng)用程序更新參數(shù)數(shù)據(jù)的存儲(chǔ)介質(zhì)。STM32只需幾個(gè)I/O接口就可外擴(kuò)32 GB的外設(shè)存儲(chǔ)[12-14]。STM32自帶SD卡I/O接口(SDIO),操作編程簡(jiǎn)單方便,且SD卡自帶文件系統(tǒng),可插拔,靈活性強(qiáng)。
所以工業(yè)以太網(wǎng)設(shè)備也選用STM32連接SD卡,將SD卡作為升級(jí)系統(tǒng)文件的載體,很大程度上便于直接與計(jì)算機(jī)對(duì)接,導(dǎo)入/導(dǎo)出升級(jí)程序以及導(dǎo)出存儲(chǔ)的參數(shù)數(shù)據(jù)。STM32F249 SDIO接口數(shù)據(jù)流如圖5所示。

圖5 SDIO接口數(shù)據(jù)流示意圖
系統(tǒng)整體升級(jí)流程如圖6所示。

圖6 系統(tǒng)整體升級(jí)流程圖
系統(tǒng)復(fù)位后,首先進(jìn)行串口、RS-485、SD卡、SDRAM及數(shù)據(jù)緩沖區(qū)初始化,然后判斷外部按鍵中斷狀態(tài),得到升級(jí)程序請(qǐng)求標(biāo)志。如果沒有外部按鍵中斷,則直接跳轉(zhuǎn)到最新一次標(biāo)志位區(qū)域的APP程序區(qū)執(zhí)行主程序。如果有外部按鍵按下,通信系統(tǒng)與控制系統(tǒng)分別跳轉(zhuǎn)到各自的IAP升級(jí)程序部分,通信板先開始執(zhí)行IAP升級(jí)程序,并給控制系統(tǒng)發(fā)送升級(jí)需求等待數(shù)據(jù)報(bào)文,使其進(jìn)入等候狀態(tài)。當(dāng)通信系統(tǒng)升級(jí)結(jié)束以后,判斷升級(jí)數(shù)據(jù)校驗(yàn)是否合格,如通過直接跳轉(zhuǎn)更新后的APP1/APP2,開始運(yùn)行程序;如果升級(jí)狀態(tài)數(shù)據(jù)異常,則直接跳轉(zhuǎn)到重新讀取SD卡中的數(shù)據(jù),重新開始IAP升級(jí)步驟。
控制系統(tǒng)升級(jí)與前者升級(jí)方法類似,工業(yè)以太網(wǎng)通信系統(tǒng)通過SD卡讀取變頻器控制系統(tǒng)升級(jí)程序,并通過RS-485發(fā)送給變頻器控制系統(tǒng)。當(dāng)控制系統(tǒng)接收到數(shù)據(jù)并校驗(yàn)通過以后,調(diào)用IAP升級(jí)程序,完成對(duì)其的在線升級(jí)功能。
2套系統(tǒng)在執(zhí)行設(shè)備用戶程序的過程中,都會(huì)不停檢查各自的升級(jí)請(qǐng)求觸發(fā)條件。如果收到請(qǐng)求,就會(huì)保存當(dāng)前現(xiàn)場(chǎng)與相關(guān)參數(shù),指針運(yùn)行到引導(dǎo)代碼執(zhí)行。
升級(jí)設(shè)備連接如圖7所示。連接好設(shè)備之后,給設(shè)備供電,等待設(shè)備運(yùn)轉(zhuǎn)正常。當(dāng)系統(tǒng)需要升級(jí)時(shí),按下工業(yè)以太網(wǎng)設(shè)備升級(jí)鍵,等待1 s,系統(tǒng)就開始進(jìn)入自動(dòng)升級(jí)階段。

圖7 升級(jí)設(shè)備連接圖
待系統(tǒng)軟件完成升級(jí)后,系統(tǒng)會(huì)重新進(jìn)入更新后的程序。為驗(yàn)證系統(tǒng)設(shè)計(jì)程序是否更新成功,最直接的辦法是利用Anybus工業(yè)以太網(wǎng)模塊內(nèi)嵌的Web服務(wù)器通過計(jì)算機(jī)訪問。此Web返回信息為系統(tǒng)設(shè)備的相關(guān)信息與參數(shù)。通過對(duì)Web服務(wù)器的訪問,初步驗(yàn)證升級(jí)是否完成,最終需要將設(shè)備接入工業(yè)現(xiàn)場(chǎng)環(huán)境中,完成對(duì)升級(jí)程序新需求的功能驗(yàn)證和應(yīng)用。
本文提出了基于IAP和SD卡的工業(yè)以太網(wǎng)設(shè)備嵌入式應(yīng)用程序的在線升級(jí)法。預(yù)先通過讀卡器將需要升級(jí)的工業(yè)以太網(wǎng)設(shè)備存入SD卡中,并安裝到工業(yè)以太網(wǎng)設(shè)備。當(dāng)升級(jí)按鍵被觸發(fā),應(yīng)用程序代碼捕捉到按鍵升級(jí)請(qǐng)求后,將當(dāng)前相關(guān)參數(shù)保存到SD卡。系統(tǒng)復(fù)位后,計(jì)算機(jī)指針跳轉(zhuǎn)到引導(dǎo)加載區(qū)。通信系統(tǒng)與控制系統(tǒng)分別讀取SD卡中需要更新的設(shè)備升級(jí)程序到微控制器的RAM中,并使用引導(dǎo)加載區(qū)IAP功能將用戶程序燒錄到主控器片內(nèi)劃分的指定FLASH中,完成各自設(shè)備升級(jí)工作,從而實(shí)現(xiàn)工業(yè)以太網(wǎng)的設(shè)備應(yīng)用程序整體在線升級(jí)過程。該方法免去了拆卸設(shè)備到現(xiàn)場(chǎng)和帶專用燒寫編程器的復(fù)雜流程。SD卡便于拆卸和攜帶,升級(jí)程序與相關(guān)參數(shù)的讀取和保存也十分方便,成本低廉。該方法在工業(yè)以太網(wǎng)的設(shè)備程序在線升級(jí)中已經(jīng)得到使用。