EPA通信協(xié)議在μC/OS-II的設(shè)計(jì)
1. 引言
本文引用地址:http://m.butianyuan.cn/article/201610/305668.htm《用于工業(yè)測(cè)量與控制系統(tǒng)的EPA系統(tǒng)結(jié)構(gòu)與通信規(guī)范》(以下簡(jiǎn)稱(chēng)EPA)是基于工業(yè)以太網(wǎng)的實(shí)時(shí)通信規(guī)范,它有效地解決了以太網(wǎng)通信的確定性通信問(wèn)題,進(jìn)而可以應(yīng)用于多種工業(yè)領(lǐng)域,構(gòu)成各種工業(yè)測(cè)量與控制系統(tǒng)。該規(guī)范將收錄在制定中的實(shí)時(shí)以太網(wǎng)國(guó)際標(biāo)準(zhǔn)IEC61784-2中,成為我國(guó)首例具有自主知識(shí)產(chǎn)權(quán)的現(xiàn)場(chǎng)總線標(biāo)準(zhǔn);開(kāi)發(fā)和實(shí)現(xiàn)EPA通信協(xié)議是應(yīng)用EPA系統(tǒng)的基礎(chǔ)和前提。
μC/OS-II是一種占先機(jī)制的實(shí)時(shí)多任務(wù)嵌入式操作系統(tǒng),具有源碼公開(kāi)、可移植、可固化、可裁剪等特點(diǎn),已經(jīng)得到廣泛的應(yīng)用。相對(duì)于同為源碼公開(kāi)的μClinux,它具有內(nèi)核小、實(shí)時(shí)性高等特點(diǎn),更適合于控制應(yīng)用。μC/OS-II作為EPA通信協(xié)議的實(shí)現(xiàn)平臺(tái),能夠較大的提高系統(tǒng)資源利用率,利用優(yōu)先級(jí)劃分獲得較好的實(shí)時(shí)響應(yīng)性能,其任務(wù)間多種通信方法有助于實(shí)現(xiàn)各實(shí)體協(xié)議狀態(tài)機(jī)。
2. EPA通信協(xié)議與模型
EPA系統(tǒng)采用ISO/OSI開(kāi)放系統(tǒng)互連模型(ISO 7498)的第一、二、三、四和七層,并增加用戶(hù)層。系統(tǒng)中除了采用普通以太網(wǎng)協(xié)議組件外,有些層增加了部分實(shí)體,以適應(yīng)EPA通信的需求:
增加的用戶(hù)層包含EPA功能塊應(yīng)用進(jìn)程與非實(shí)時(shí)應(yīng)用進(jìn)程。應(yīng)用層增加了由EPA系統(tǒng)管理實(shí)體、EPA應(yīng)用訪問(wèn)實(shí)體和EPA套接字映射實(shí)體組成的EPA協(xié)議,三個(gè)實(shí)體分別實(shí)現(xiàn)EPA設(shè)備管理、應(yīng)用通信服務(wù)、應(yīng)用層與UDP/IP軟件實(shí)體之間的映射接口和報(bào)文優(yōu)先發(fā)送管理、報(bào)文封裝、響應(yīng)信息返回、鏈路狀況監(jiān)視等功能。在MAC層和IP層之間增加EPA通信調(diào)度管理實(shí)體,對(duì)EPA設(shè)備向網(wǎng)絡(luò)上發(fā)送的報(bào)文進(jìn)行調(diào)度管理。調(diào)度策略采用分時(shí)發(fā)送機(jī)制,將報(bào)文分為周期報(bào)文和非周期報(bào)文,按預(yù)先組態(tài)的調(diào)度方案,在相應(yīng)的時(shí)間段內(nèi)發(fā)送,以避免碰撞。各設(shè)備網(wǎng)絡(luò)時(shí)間由時(shí)間同步組件維護(hù)其一致性。EPA管理信息庫(kù)為各層協(xié)議實(shí)體提供操作所需信息,包括設(shè)備描述對(duì)象,鏈接對(duì)象等。
按照EPA通信協(xié)議,每個(gè)EPA設(shè)備由至少一個(gè)功能塊實(shí)例、EPA應(yīng)用訪問(wèn)實(shí)體、EPA系統(tǒng)管理實(shí)體、EPA套接字映射實(shí)體、EPA鏈接對(duì)象、通信調(diào)度管理實(shí)體以及UDP/IP協(xié)議等幾個(gè)部分組成。各個(gè)實(shí)體和對(duì)象通過(guò)互相調(diào)用,協(xié)同完成設(shè)備間通信過(guò)程如圖1示:
3. 實(shí)現(xiàn)平臺(tái)
本文實(shí)現(xiàn)EPA通信協(xié)議的硬件結(jié)構(gòu)如圖2所示,通信卡CPU為RABBIT2000微處理器,它是Rabbit半導(dǎo)體公司所生產(chǎn)的8位微處理器,工作主頻22.1MHZ,工作電壓5V,具有40個(gè)通用I/O引腳。內(nèi)建日歷、時(shí)鐘、看門(mén)狗、定時(shí)器、多級(jí)中斷、雙DMA通道,數(shù)據(jù)存儲(chǔ)為128K靜態(tài)存儲(chǔ)器和 256K 動(dòng)態(tài)存儲(chǔ)器,可外擴(kuò)4~8MB FLASH,對(duì)于通信協(xié)議棧和小型控制應(yīng)用,其存儲(chǔ)空間是足夠的。
由zworld公司提供的基于Dynamic C的軟件開(kāi)發(fā)平臺(tái)集編程、編譯、鏈接、調(diào)試、下載于一體,提供完善的TCP/IP協(xié)議棧,支持全功能RS232/485通信,配備了各種I/O驅(qū)動(dòng)函數(shù)庫(kù);文件管理系統(tǒng)可在FLASH或SRAM上建立數(shù)據(jù)文件,便于存儲(chǔ)系統(tǒng)或用戶(hù)數(shù)據(jù);開(kāi)源的協(xié)議庫(kù)不但縮短了軟件開(kāi)發(fā)周期,而且便于修改以更好的實(shí)現(xiàn)EPA通信協(xié)議。
通信卡通過(guò)以太網(wǎng)模塊接口與EPA網(wǎng)絡(luò)相連,通過(guò)串口RS-232與電動(dòng)執(zhí)行器連接形成一個(gè)底層IO設(shè)備,掛接在EPA網(wǎng)絡(luò)上進(jìn)行測(cè)試。
RABBIT2000支持協(xié)作式(使用costate)和占先式(移植μC/OS-II)多任務(wù)模式,選擇占先式模式基于以下兩點(diǎn)考慮:
(1)對(duì)于EPA設(shè)備來(lái)說(shuō),系統(tǒng)實(shí)時(shí)性是一個(gè)很重要的指標(biāo),表現(xiàn)在經(jīng)過(guò)組態(tài)后功能塊模塊的執(zhí)行時(shí)間精度、通信調(diào)度發(fā)送周期性報(bào)文的時(shí)間精度,以及時(shí)鐘同步的精度,而且這幾個(gè)參數(shù)在很大程度上影響了網(wǎng)絡(luò)帶寬利用率。μC/OS-II具有任務(wù)執(zhí)行時(shí)間的可確定性,可以很好的滿(mǎn)足系統(tǒng)的實(shí)時(shí)性要求。
(2)EPA設(shè)備可以直接在通信卡的接口上進(jìn)一步開(kāi)發(fā)實(shí)現(xiàn),同時(shí)需要增加用戶(hù)層任務(wù)進(jìn)程,而RABBIT2000是8位微處理器,資源比較有限,因此基于任務(wù)可擴(kuò)展性考慮,也應(yīng)該采用占先式任務(wù)調(diào)度方式。
4. 軟件設(shè)計(jì)與實(shí)現(xiàn)
4.1 通信協(xié)議的模塊化設(shè)計(jì)
從數(shù)據(jù)處理角度上看,EPA設(shè)備通信是對(duì)控制過(guò)程所需要數(shù)據(jù)進(jìn)行處理和通過(guò)EPA網(wǎng)絡(luò)傳輸?shù)倪^(guò)程,發(fā)送方從上到下各層依次對(duì)應(yīng)用進(jìn)程或者管理服務(wù)數(shù)據(jù)進(jìn)行處理和封裝,接收方則進(jìn)行解包和處理,將服務(wù)數(shù)據(jù)交給應(yīng)用進(jìn)程。因此,協(xié)議軟件設(shè)計(jì)主要是系統(tǒng)各模塊對(duì)服務(wù)數(shù)據(jù)的處理程序的設(shè)計(jì)。EPA通信卡的功能主要包含系統(tǒng)管理、應(yīng)用服務(wù)、時(shí)鐘同步、實(shí)時(shí)調(diào)度等。需要編寫(xiě)的功能模塊有EPA服務(wù)棧模塊、套接字映射模塊、時(shí)間同步模塊、通信調(diào)度模塊。
(1)EPA服務(wù)棧模塊:系統(tǒng)管理服務(wù)包括設(shè)備查詢(xún)、設(shè)備聲明等服務(wù),應(yīng)用訪問(wèn)服務(wù)包括域操作服務(wù)、事件操作服務(wù)、變量操作服務(wù),各種服務(wù)對(duì)相應(yīng)的服務(wù)報(bào)文進(jìn)行處理。 以域下載服務(wù)為例說(shuō)明服務(wù)棧的實(shí)現(xiàn)流程如圖3示。
(2)EPA套接字映射模塊:對(duì)服務(wù)棧數(shù)據(jù)進(jìn)行封裝,并作為與UDP層之間的數(shù)據(jù)接口,其接口函數(shù)包括創(chuàng)建與關(guān)閉EPA套接字函數(shù)、發(fā)送應(yīng)用服務(wù)報(bào)文與響應(yīng)報(bào)文函數(shù),發(fā)送系統(tǒng)管理報(bào)文與響應(yīng)報(bào)文函數(shù),從UDP層接收應(yīng)用服務(wù)與系統(tǒng)管理報(bào)文函數(shù)等。EPA套接字開(kāi)UDP套接字的實(shí)現(xiàn)語(yǔ)句如下:
if(!udp_open(gEPA_AP_Sock, EPA_AP_PORT, -1, EPA_AP_PORT, NULL))
SockErr=1;
else SockErr=0;
(3)時(shí)鐘同步服務(wù)的實(shí)現(xiàn)采用IEEE 1588精確時(shí)鐘同步協(xié)議,該協(xié)議用于分布式系統(tǒng)中的設(shè)備通過(guò)以太網(wǎng)的亞微秒級(jí)時(shí)鐘同步。設(shè)備與主時(shí)鐘通過(guò)交換同步報(bào)文而實(shí)現(xiàn)同步,同步報(bào)文分為同步信息(Sync)、附加信息(Follow_Up)、延時(shí)請(qǐng)求(Delay_Req)、延時(shí)響應(yīng)(Delay_Rsp)四種報(bào)文。同步過(guò)程分兩個(gè)階段,第一階段通過(guò)Sync和Follow_Up報(bào)文測(cè)量時(shí)間偏差,第二個(gè)階段通過(guò)Delay_Req和Delay_Rsp測(cè)量延遲(網(wǎng)絡(luò)延遲和協(xié)議棧延遲),進(jìn)一步校正偏差。為了進(jìn)一步減少協(xié)議棧帶來(lái)的延遲,可以讓時(shí)間同步服務(wù)盡量接近物理層,這里通過(guò)修改TCP/IP庫(kù)文件實(shí)現(xiàn)。
評(píng)論