廣東工業(yè)大學(xué)自動化學(xué)院 莫俊暉 許錦標(biāo)
利用STM32F103ZET6芯片作為硬件平臺,通過在基于嵌入式的PLC模塊中添加以太網(wǎng)模塊和HTTP協(xié)議層,構(gòu)建一個對嵌入式PLC模塊進(jìn)行監(jiān)測的WEB系統(tǒng)。
由于傳統(tǒng)PLC具有不方便拓展新模塊,而且成本較高等問題,最近幾年已經(jīng)出現(xiàn)了許多基于嵌入式的PLC方面的研究。傳統(tǒng)PLC設(shè)備使用組態(tài)軟件來對PLC進(jìn)行監(jiān)控或下載程序,然而傳統(tǒng)PLC在不同廠家之間使用不同的組態(tài)軟件,并且傳統(tǒng)PLC組態(tài)軟件無法應(yīng)用在新型嵌入式PLC上進(jìn)行監(jiān)控。
為了解決以上問題,并為嵌入式PLC設(shè)備提供一種接入以太網(wǎng)的方式,本文在以STM32F103ZET6為核心控制器的嵌入式PLC模塊上增加HTTP協(xié)議層及WEB服務(wù)器的相關(guān)功能,使工程師可以通過瀏覽網(wǎng)頁的B/S方式對該嵌入式PLC的狀態(tài)進(jìn)行在線監(jiān)測。
該嵌入式PLC系統(tǒng)使用STM32F103ZET6作為核心控制器,主要包括STM32最小系統(tǒng)、輸入輸出電路、串口以及SPI等通信接口。該系統(tǒng)的以太網(wǎng)通信部分使用以太網(wǎng)模塊W5500芯片完成TCP協(xié)議棧的功能,W5500以太網(wǎng)芯片通過SPI通信接口與STM32進(jìn)行數(shù)據(jù)傳輸。
本部分將對該模塊的軟件功能進(jìn)行設(shè)計,軟件功能包括硬件系統(tǒng)的初始化、通信接口處理、PLC指令執(zhí)行、WEB服務(wù)器等功能及網(wǎng)頁文件的設(shè)計。其中主要闡述WEB服務(wù)器的執(zhí)行過程和網(wǎng)頁文件的設(shè)計,如圖1所示。

圖1 基于嵌入式PLC模塊的WEB監(jiān)測系統(tǒng)硬件結(jié)構(gòu)

圖2 主函數(shù)流程示意圖

圖3 WEB服務(wù)器流程圖
系統(tǒng)主函數(shù)主要為一個循環(huán)的過程,在每個循環(huán)中按順序執(zhí)行輸入輸出點位的刷新、PLC程序的執(zhí)行和WEB服務(wù)器程序等功能,如圖2所示。
WEB服務(wù)器程序負(fù)責(zé)接收瀏覽器發(fā)送的HTTP報文,并根據(jù)報文 內(nèi)容做出響應(yīng)。HTTP協(xié)議是基于TCP協(xié)議的應(yīng)用層協(xié)議,本文使用W5500以太網(wǎng)芯片完成TCP協(xié)議的傳輸,WEB服務(wù)器程序只需要按照HTTP協(xié)議的標(biāo)準(zhǔn),通過SPI通信接口對從W5500中相關(guān)寄存器讀取的字符串內(nèi)容進(jìn)行解析處理即可。完成WEB服務(wù)器相關(guān)功能之后,STM32通過SPI通信接口將HTTP響應(yīng)報文寫入到W5500芯片的相應(yīng)寄存器中,由W5500芯片負(fù)責(zé)將報文返回到發(fā)起請求的瀏覽器中。如圖3所示。
2.2.1 HTTP報文的解析
超文本協(xié)議HTTP是一種基于TCP/IP通信協(xié)議的應(yīng)用層協(xié)議,常用于瀏覽器與服務(wù)器之間傳輸超文本文件。HTTP協(xié)議的請求報文包括請求行、報文頭和報文體。請求行中包括了請求方法、請求URL和HTTP協(xié)議版本,請求頭中包括服務(wù)器可以發(fā)送的編碼格式、報文體長度等報文屬性信息。在該系統(tǒng)中實現(xiàn)嵌入式PLC模塊的WEB監(jiān)測功能,只需要關(guān)注請求方法和請求URL。
請求方法包括GET、POST、DELETE、HEAD、OPTION和PUT等,而在該系統(tǒng)中需要用到請求方法中最常用的GET方法和POST方法。GET方法主要用于瀏覽器向WEB服務(wù)器請求獲取數(shù)據(jù),POST方法主要用于瀏覽器向WEB服務(wù)器提交數(shù)據(jù),其中使用POST方法提交的數(shù)據(jù)會包含在HTTP協(xié)議的報文體中。請求URL是統(tǒng)一資源定位符,用于描述該報文所請求的資源在服務(wù)器中的位置,通常會指向一個HTML頁面或者一個圖像等文件。
當(dāng)該系統(tǒng)從W5500以太網(wǎng)芯片中以字符串的形式讀取到HTTP報文之后,WEB服務(wù)器程序通過對字符串進(jìn)行處理,提取和解析請求行中的請求方法和URL,可以得到該請求所指定的執(zhí)行動作。
2.2.2 CGI程序
CGI是外部與WEB服務(wù)器之間的接口標(biāo)準(zhǔn),負(fù)責(zé)具體執(zhí)行HTTP的請求,執(zhí)行WEB服務(wù)器需要實現(xiàn)的功能,并按照執(zhí)行結(jié)果生成網(wǎng)頁文件。在該系統(tǒng)中CGI是一段子程序的程序代碼。
當(dāng)系統(tǒng)解析HTTP報文獲得請求方法和URL之后,就可以確定該報文要求服務(wù)器所執(zhí)行的功能,得到瀏覽器向服務(wù)器請求何種數(shù)據(jù)。需要服務(wù)器執(zhí)行的CGI程序通常以文件路徑的形式在請求報文的URL中指定。根據(jù)接收到的URL,系統(tǒng)調(diào)用對應(yīng)的子程序,執(zhí)行該請求對應(yīng)的動作實現(xiàn)相應(yīng)的功能,包括查詢嵌入式PLC模塊的各輸入輸出點位狀態(tài)等。
然后CGI程序根據(jù)執(zhí)行的結(jié)果,生成HTTP響應(yīng)報文,通過SPI通信接口寫入W5500芯片的相應(yīng)寄存器,發(fā)送到發(fā)起請求的瀏覽器。HTTP響應(yīng)報文包括響應(yīng)行、響應(yīng)頭部和響應(yīng)體。響應(yīng)行和響應(yīng)頭部通常包含報文協(xié)議版本、狀態(tài)碼及狀態(tài)描述等信息,該系統(tǒng)將HTTP協(xié)議響應(yīng)行和響應(yīng)頭部以字符串?dāng)?shù)組保存起來。待CGI程序執(zhí)行完具體功能之后,根據(jù)執(zhí)行結(jié)果,在其中填充狀態(tài)碼及狀態(tài)描述等相應(yīng)的數(shù)據(jù)信息。最后將具體執(zhí)行結(jié)果或者嵌入式PLC模塊相關(guān)輸入輸出點位的數(shù)據(jù)填入網(wǎng)頁文件中生成對應(yīng)的網(wǎng)頁作為響應(yīng)體,并且添加上HTTP響應(yīng)行和響應(yīng)報文頭部,合并為HTTP響應(yīng)報文,通過W5500芯片返回到發(fā)起請求的瀏覽器。
HTML是一種超文本標(biāo)記語言,是一種常用于編寫網(wǎng)頁文件的標(biāo)準(zhǔn)標(biāo)記語言,HTML運行在瀏覽器上,由瀏覽器來解析、渲染和執(zhí)行。由于在該嵌入式系統(tǒng)中沒有使用文件系統(tǒng)的相關(guān)功能,沒有文件的概念,所以網(wǎng)頁文件通過HTML語言編輯之后以字符串?dāng)?shù)組常量的形式保存到STM32芯片中。
在嵌入式PLC的WEB監(jiān)控系統(tǒng)中,工程師需要通過瀏覽器頁面對嵌入式PLC模塊的各個點位輸入和輸出進(jìn)行實時的監(jiān)測。因為監(jiān)測系統(tǒng)的網(wǎng)頁需要實時返回嵌入式PLC系統(tǒng)中的數(shù)據(jù),所以需要在網(wǎng)頁文件中使用JavaScript網(wǎng)頁腳本每隔一段時間向WEB服務(wù)器請求相關(guān)的嵌入式PLC出入輸出數(shù)據(jù)。而這一過程將有大量時間花費在等待服務(wù)器讀取數(shù)據(jù)、解析數(shù)據(jù)和返回數(shù)據(jù)上,這將導(dǎo)致瀏覽器長時間處在刷新的狀態(tài)。為了解決這個問題就需要在網(wǎng)頁文件中使用AJAX技術(shù),即異步的JavaScript和XML技術(shù)。它是一種瀏覽器的腳本技術(shù),可以在不重新加載整個頁面的情況下,與WEB服務(wù)器交換數(shù)據(jù)并更新部分的網(wǎng)頁內(nèi)容。利用AJAX技術(shù)向服務(wù)器請求數(shù)據(jù),瀏覽器將不再需要等待從WEB服務(wù)器中返回的數(shù)據(jù),它可以在數(shù)據(jù)返回的時候再進(jìn)行處理。
并且通過AJAX技術(shù)向服務(wù)器請求數(shù)據(jù),可以只請求需要實時更新的數(shù)據(jù),而服務(wù)器可以只返回請求的數(shù)據(jù)而不再需要返回整個網(wǎng)頁文件。這將大大提升了數(shù)據(jù)傳輸?shù)男剩?jié)省了STM32嵌入式系統(tǒng)寶貴的運行資源,同時WEB監(jiān)測系統(tǒng)的實時性也能夠得到保證。
結(jié)束語:本文分析了嵌入式PLC相關(guān)研究在目前存在的聯(lián)網(wǎng)遠(yuǎn)程監(jiān)測的主要問題,并針對該問題提出了一種解決方案。在基于STM32F103ZET6芯片的嵌入式PLC模塊的基礎(chǔ)之上增加了W5500以太網(wǎng)芯片,在嵌入式PLC模塊軟件中添加HTTP協(xié)議層和WEB服務(wù)器功能,為嵌入式PLC模塊提供一種接入以太網(wǎng)的方法,并且為工程師提供一種以B/S模式對嵌入式PLC模塊進(jìn)行監(jiān)控的方法。該解決方案使用嵌入式系統(tǒng)構(gòu)建,成本較低,客戶端使用瀏覽器,無需使用專用的組態(tài)軟件,利用現(xiàn)成的以太網(wǎng)網(wǎng)絡(luò)進(jìn)行通信,能夠大大降低系統(tǒng)組建的成本,并且簡化了系統(tǒng)搭建的流程。