李昕澤,鄧中華
(1.華中科技大學(xué),武漢 430074; 2.武漢華茂工業(yè)自動(dòng)化公司)
?
一種工業(yè)遠(yuǎn)程實(shí)時(shí)監(jiān)控系統(tǒng)的實(shí)現(xiàn)
李昕澤1,鄧中華2
(1.華中科技大學(xué),武漢 430074; 2.武漢華茂工業(yè)自動(dòng)化公司)
為了解決當(dāng)今工業(yè)生產(chǎn)中實(shí)時(shí)監(jiān)控系統(tǒng)通信距離短和傳輸速率慢的問題,提出了一種基于CAN總線和ModbusTCP的遠(yuǎn)程監(jiān)控系統(tǒng)方案。該方案以異構(gòu)雙核處理器F28M35x為硬件平臺(tái)核心,移植了嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-II和LwIP網(wǎng)絡(luò)協(xié)議棧,并開發(fā)了人機(jī)監(jiān)控程序。實(shí)驗(yàn)結(jié)果表明該方案有效地實(shí)現(xiàn)了遠(yuǎn)距離、高速率的工業(yè)數(shù)據(jù)通信,達(dá)到了遠(yuǎn)程實(shí)時(shí)監(jiān)控系統(tǒng)的各項(xiàng)要求。
F28M35x;實(shí)時(shí)監(jiān)控系統(tǒng);ModbusTCP;LwIP
本文提出了一種基于嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-II的采用ModbusTCP協(xié)議來實(shí)現(xiàn)遠(yuǎn)程實(shí)時(shí)監(jiān)控系統(tǒng)的方案,有效地解決了工業(yè)應(yīng)用中設(shè)備與監(jiān)控系統(tǒng)通信速率慢、傳輸距離短的問題,并成功將其應(yīng)用于武漢華茂工業(yè)自動(dòng)化公司的印刷套色設(shè)備的遠(yuǎn)程監(jiān)控系統(tǒng)中。
本文采用的主控制器為TI公司生產(chǎn)的異構(gòu)雙核處理器F28M35x,該芯片雙核由主系統(tǒng)ARM Cortex-M3核和控制系統(tǒng)TMS320C28x核組成,實(shí)際應(yīng)用中,Cortex-M3內(nèi)核主要負(fù)責(zé)數(shù)據(jù)通信、協(xié)議轉(zhuǎn)換及操作系統(tǒng)的植入,TMS320C28x內(nèi)核的浮點(diǎn)運(yùn)算功能支持高效可靠的控制算法,雙核間通過片上IPC(Inter-Process Communication)模塊進(jìn)行數(shù)據(jù)交互。本文中的監(jiān)控設(shè)備采用HITECH公司生產(chǎn)的支持Ethernet通信的HMI設(shè)備PWS6800C。
本遠(yuǎn)程實(shí)時(shí)監(jiān)控系統(tǒng)在運(yùn)行過程中,系統(tǒng)現(xiàn)場(chǎng)套色設(shè)備各通道數(shù)據(jù)采集通過CAN總線協(xié)議傳輸給主芯片F(xiàn)28M35x,CAN模塊將CAN郵箱里的數(shù)據(jù)取出來,分析計(jì)算后將核心參數(shù)交給協(xié)議棧進(jìn)程,協(xié)議棧對(duì)該數(shù)據(jù)進(jìn)行各層封裝后再通過EMAC模塊傳輸?shù)揭蕴W(wǎng)總線上,在監(jiān)控設(shè)備和工業(yè)現(xiàn)場(chǎng)的控制板已經(jīng)建立了通信的基礎(chǔ)上,遠(yuǎn)程的HMI人機(jī)設(shè)備可以通過以太網(wǎng)實(shí)時(shí)獲取套色設(shè)備的數(shù)據(jù),達(dá)到遠(yuǎn)程監(jiān)控的目的。工業(yè)現(xiàn)場(chǎng)的控制板為TI公司研發(fā)的以F28M35x為主芯片的開發(fā)板套件Concerto開發(fā)板。本系統(tǒng)整體原理圖如圖1所示。
圖1 系統(tǒng)整體原理圖
系統(tǒng)的實(shí)現(xiàn)需要完成的主要任務(wù)有:嵌入式操作系統(tǒng)μC/OS-II在F28M35x上的移植、CAN協(xié)議在F28M35x上的實(shí)現(xiàn)、基于LwIP協(xié)議棧的ModbusTCP網(wǎng)絡(luò)協(xié)議在μC/OS-II上的實(shí)現(xiàn)及上位機(jī)HMI觸摸屏程序的開發(fā)。F28M35x軟件設(shè)計(jì)結(jié)構(gòu)如圖2所示。
2.1 CAN協(xié)議在F28M35x上的實(shí)現(xiàn)
圖2 F28M35x軟件設(shè)計(jì)結(jié)構(gòu)
CAN(Controller Area Network)總線協(xié)議目前已廣泛應(yīng)用于工業(yè)通信中,是一種自動(dòng)化系統(tǒng)常用的多主方式的串行通信總線。CAN的標(biāo)準(zhǔn)報(bào)文幀結(jié)構(gòu)如圖3所示。
具體實(shí)現(xiàn)CAN協(xié)議的主要任務(wù)是CAN初始化函數(shù)和中斷處理函數(shù)。CAN初始化函數(shù)需要對(duì)各寄存器配置來完成模塊啟動(dòng)、位定時(shí)、郵箱參數(shù)、波特率設(shè)置、運(yùn)行模式選擇等任務(wù),然后初始化函數(shù)打開內(nèi)核級(jí)中斷和子中斷。中斷服務(wù)程序完成的任務(wù)有檢測(cè)中斷來源、執(zhí)行相關(guān)的數(shù)據(jù)提取和回應(yīng)等。
圖3 CAN的標(biāo)準(zhǔn)報(bào)文幀結(jié)構(gòu)
本系統(tǒng)中,在CAN基本通信實(shí)現(xiàn)后,加入了定時(shí)查詢報(bào)文,旨在獲取套色各通道的節(jié)點(diǎn)狀態(tài)。定時(shí)查詢報(bào)文在200 ms定時(shí)中斷服務(wù)程序完成,從節(jié)點(diǎn)會(huì)將自己的狀態(tài)數(shù)據(jù)返回主站,主站再通過Modbus/TCP協(xié)議將此狀態(tài)傳給遠(yuǎn)程實(shí)時(shí)人機(jī)監(jiān)控設(shè)備。
2.2 μC/OS-II在F28M35x上的移植
μC/OS-II是一個(gè)完整的搶占式多任務(wù)內(nèi)核,執(zhí)行效率高,占用空間較小,實(shí)時(shí)性能和可擴(kuò)展性較強(qiáng)。其源代碼完全公開,移植性很強(qiáng),適合在各種微處理器上運(yùn)行。μC/OS-II為每個(gè)任務(wù)賦予了不同的優(yōu)先級(jí),不支持時(shí)間輪轉(zhuǎn)調(diào)度法。μC/OS-II提供了任務(wù)管理的各種函數(shù)可供移植者調(diào)用,包括任務(wù)的創(chuàng)建、刪除、優(yōu)先級(jí)翻轉(zhuǎn)、掛起等。為了實(shí)現(xiàn)系統(tǒng)的各項(xiàng)功能,需要對(duì)任務(wù)進(jìn)行劃分。主要包括TCP/IP協(xié)議棧進(jìn)程、CAN數(shù)據(jù)收發(fā)進(jìn)程、以太網(wǎng)數(shù)據(jù)收發(fā)進(jìn)程、I/O任務(wù)、時(shí)鐘信號(hào)等任務(wù)。
移植過程中,主要實(shí)現(xiàn)的內(nèi)容是與處理器相關(guān)的文件編寫,包括C語(yǔ)言編寫的OS_CPU.H和OS_CPU_C.C,以及匯編語(yǔ)言編寫的OS_CPU_A.S。具體配置時(shí),應(yīng)注意配置參數(shù)TCP_NODELAY,該參數(shù)用于屏蔽NAGLE算法。NAGLE算法是將網(wǎng)絡(luò)上的小包組成大包發(fā)出去,用于減少網(wǎng)絡(luò)阻塞。監(jiān)控系統(tǒng)中傳輸?shù)臄?shù)據(jù)包多為小包,為了提升實(shí)時(shí)性,即使小量的數(shù)據(jù)也應(yīng)該及時(shí)發(fā)送。
2.3 基于LwIP開源網(wǎng)絡(luò)協(xié)議棧的網(wǎng)絡(luò)協(xié)議移植
這部分任務(wù)是本系統(tǒng)的核心部分,ModbusTCP協(xié)議是通過移植LwIP開源協(xié)議棧實(shí)現(xiàn)的。LwIP是由瑞士計(jì)算機(jī)科學(xué)院開發(fā)的一套開源TCP/IP協(xié)議棧,它只占用了幾十KB的RAM和40 KB的ROM,是專用于嵌入式系統(tǒng)的協(xié)議棧。LwIP主要實(shí)現(xiàn)的模塊有IP、ICMP、TCP、UDP和ARP,另外也包括IGMP、PPPoE和DNS等服務(wù)。
F28M35x開發(fā)板的EMAC模塊為網(wǎng)絡(luò)報(bào)文幀的收發(fā)模塊,當(dāng)有數(shù)據(jù)包發(fā)來的時(shí)候會(huì)觸發(fā)以太網(wǎng)接收中斷,中斷子服務(wù)程序再通過μDMA(Micro Direct Memory Access)模塊將接收的數(shù)據(jù)通過接收線程傳給LwIP協(xié)議棧,協(xié)議棧再對(duì)接收的數(shù)據(jù)包進(jìn)行分析、重組、掛起、丟棄等操作。其中μDMA模塊為直接內(nèi)存訪問,數(shù)據(jù)直接傳輸而不需要CPU的參與,增強(qiáng)了數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性和速率。EMAC模塊接收到的以太網(wǎng)數(shù)據(jù)包結(jié)構(gòu)如下所示。
以太網(wǎng)首部(14字節(jié))IP首部(20字節(jié))TCP首部(20字節(jié))Modbus報(bào)文MBAP(7字節(jié))功能碼數(shù)據(jù)以太網(wǎng)尾部
數(shù)據(jù)報(bào)交由LwIP協(xié)議棧處理的流程圖如圖4所示。
圖4 LwIP協(xié)議棧流程
圖4中,netif結(jié)構(gòu)為網(wǎng)卡參數(shù)結(jié)構(gòu)體,結(jié)構(gòu)體中的兩個(gè)指針函數(shù)netif->input()和netif->output()分別為數(shù)據(jù)的以太網(wǎng)層的數(shù)據(jù)收發(fā)函數(shù)。接收到的數(shù)據(jù)包依次經(jīng)過IP層和TCP層解析,檢驗(yàn)校驗(yàn)和、協(xié)議類型、IP地址、端口號(hào)、序列號(hào)、連接狀態(tài)、確認(rèn)序號(hào)等是否正確,如果是正確的報(bào)文幀,LwIP就把它交給應(yīng)用層處理。這些數(shù)據(jù)是一個(gè)帶MBAP報(bào)頭的Modbus報(bào)文,MBAP報(bào)頭是Modbus/TCP協(xié)議定義的一個(gè)7字節(jié)的報(bào)頭,包括2字節(jié)標(biāo)識(shí)符、2字節(jié)協(xié)議碼、2字節(jié)長(zhǎng)度和1字節(jié)單元標(biāo)識(shí)符,接下來是1字節(jié)的功能碼和Modbus數(shù)據(jù),應(yīng)用層部分再作出相應(yīng)回應(yīng)。
發(fā)送數(shù)據(jù)時(shí),應(yīng)用層要發(fā)送的數(shù)據(jù)先被掛到TCP層的發(fā)送隊(duì)列,執(zhí)行函數(shù)為tcp_enquene()。在符合窗口滑動(dòng)協(xié)議和擁塞控制協(xié)議情況下,將數(shù)據(jù)進(jìn)行TCP頭部封裝后發(fā)送至IP層,IP層封裝了IP頭部后,再在arp緩存表尋找有沒有符合目的IP地址的MAC地址。若有則調(diào)用netif->output()函數(shù)將數(shù)據(jù)包發(fā)送出去,若沒有找到則發(fā)送ARP請(qǐng)求獲取目的MAC地址后再發(fā)送數(shù)據(jù)。
移植過程需要將LwIP移植于μC/OS-II操作系統(tǒng)上,LwIP中需要使用信號(hào)量進(jìn)行通信,所以在sys_arch中應(yīng)實(shí)現(xiàn)相應(yīng)的信號(hào)量結(jié)構(gòu)體struct sys_semt、處理函數(shù)sys_sem_new()、sys_sem_free()、sys_sem_signal()和sys_arch_sem_wait()。μC/OS-II已經(jīng)實(shí)現(xiàn)了信號(hào)量OSEVENT的各種操作,只需要稍作修改直接調(diào)用就可以了。另外,LwIP通過消息隊(duì)列來緩沖、傳輸數(shù)據(jù)報(bào)文,因此需要實(shí)現(xiàn)相應(yīng)的消息隊(duì)列結(jié)構(gòu)和操作函數(shù),在μC/OS-II中需要通過其內(nèi)存管理模塊實(shí)現(xiàn)對(duì)消息的創(chuàng)建、使用、刪除和回收。μC/OS-II中沒有線程(thread)的概念,因此移植時(shí)還需要在μC/OS-II中創(chuàng)建新線程函數(shù),并為其分配好優(yōu)先級(jí)。
本次實(shí)驗(yàn)套色盒子和儀器設(shè)備均為武漢華茂工業(yè)自動(dòng)化公司設(shè)備,人機(jī)監(jiān)控設(shè)備使用的是HITECH公司生產(chǎn)的支持網(wǎng)絡(luò)通信的HMI設(shè)備PWS6800C,該人機(jī)設(shè)備程序的編寫使用的是專用于人機(jī)程序編程的軟件ADP6.5。在該軟件的工程參數(shù)設(shè)定中,選擇通信方式為Ethernet通信,人機(jī)類型為網(wǎng)絡(luò)型,PLC種類為ModbusTCP/IP master。
本次實(shí)驗(yàn)中人機(jī)設(shè)備接入路由器的網(wǎng)絡(luò),該路由器IP地址為183.94.7.80,人機(jī)設(shè)備本機(jī)IP地址設(shè)為子網(wǎng)地址192.168.101.100。本公司有5M靜態(tài)IP網(wǎng)絡(luò),將F28M35x板子接入該靜態(tài)IP網(wǎng)絡(luò),靜態(tài)IP地址為113.57.163.146。程序中本地IP地址填為路由器子網(wǎng)IP:192.168.101.72,并在路由器設(shè)置界面的協(xié)議轉(zhuǎn)換選項(xiàng)中建立好映射192.168.101.72對(duì)應(yīng)于端口號(hào)502。人機(jī)程序軟件設(shè)定中將目的IP地址和目的端口號(hào)填為之前設(shè)定的靜態(tài)IP113.57.163.146和502端口。8個(gè)套色盒子通過CAN總線連到F28M35x上,然后上電系統(tǒng)開始正常工作。實(shí)驗(yàn)中在系統(tǒng)運(yùn)行后斷開通道4、6、7三個(gè)通道的總線,監(jiān)控系統(tǒng)顯示如圖5所示。
圖5 監(jiān)控系統(tǒng)顯示圖
檢查各通道參數(shù),與工業(yè)現(xiàn)場(chǎng)控制計(jì)算機(jī)所存儲(chǔ)的參數(shù)一樣。通過實(shí)驗(yàn)表明,系統(tǒng)準(zhǔn)確地完成了遠(yuǎn)程實(shí)時(shí)監(jiān)控任務(wù),功能強(qiáng)大,可擴(kuò)展性強(qiáng),使得工業(yè)監(jiān)控不再有地域的限制,工業(yè)設(shè)備調(diào)試未來也可通過遠(yuǎn)程實(shí)現(xiàn)。
[1] Labrosse Jean J.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-II[M]. 北京:北京航空航天大學(xué)出版社,2003: 40-153.
[2] 王慶雙. 基于ARM的CAN通訊系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 航空電子技術(shù),2011,42(1):9-13.
[3] 王海,張娟,朱曉陽(yáng),等.TCP/IP協(xié)議族[M]. 北京:清華大學(xué)出版社,2011:300-319.
[4] 司馬莉萍. 基于ModbusTCP協(xié)議的工業(yè)控制通訊[J]. 計(jì)算機(jī)應(yīng)用,2005,25(12):29-31.
[5] 李素俠,段友祥. 嵌入式TCP/IP協(xié)議的分析與研究[J]. 微計(jì)算機(jī)信息,2005(21):52-54.
[6] 王力生,梅巖,曹南洋. 輕量級(jí)嵌入式TCP/IP協(xié)議棧的設(shè)計(jì)[J]. 計(jì)算機(jī)工程,2007,2(33):246-248.
[7] 景柏豪,沈孟良.CAN-Modbus/TCP協(xié)議轉(zhuǎn)換的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2013,5(34):2-6.
李昕澤(碩士研究生),研究方向?yàn)榍度胧较到y(tǒng)開發(fā)、以太網(wǎng)通信及其他工業(yè)通信;鄧中華(博士生導(dǎo)師),研究方向?yàn)榍度胧较到y(tǒng)研究、自動(dòng)控制原理、計(jì)算機(jī)網(wǎng)絡(luò)等。
An Industrial Implementation of Remote Real-time Monitoring System
Li Xinze1, Deng Zhonghua2
(1.Huazhong University of Science & Technology, Wuhan 430074,China; 2.Huamao Industrial Automation Company in Wuhan)
In order to solve the problems of short communication distance and low transmission rate in nowadays' industrial production, the paper proposes a remote real-time monitoring system based on CAN-Bus and ModbusTCP. In this program, the heterogeneous dual-core processor F28M35x works as the core of hardware platform, it transplantes embedded real-time operating system μC/OS-II and LwIP network protocol stack, and the HMI monitoring program is developed. The experimental results show that the programs effectively achieves long-distance, high-speed data communications of industry,and reaches requirements of remote real-time monitoring system and remote real-time monitoring system requirements.
F28M35x; real-time monitoring system; ModbusTCP;LwIP
TP368.1
A
迪娜
2013-07-29)