工業(yè)以太網(wǎng)確定性調(diào)度的設(shè)計與實現(xiàn)

發(fā)布時間:2023-08-13
工業(yè)控制網(wǎng)絡(luò)對網(wǎng)絡(luò)的實時性要求很高,不僅要求傳輸速度快,數(shù)據(jù)傳輸還要具有確定性。以太網(wǎng)的通信存在不確定性,不能滿足實時性要求,成為以太網(wǎng)應(yīng)用于工業(yè)控制領(lǐng)域的主要障礙。本設(shè)計實現(xiàn)的實時以太網(wǎng)[2]就是網(wǎng)絡(luò)中每個節(jié)點的通信被嚴(yán)格地限定在規(guī)定時間內(nèi),確保在同一網(wǎng)段內(nèi)同時只有一臺在發(fā)送數(shù)據(jù)。
1.前言
工業(yè)控制網(wǎng)絡(luò)是一種特定應(yīng)用的網(wǎng)絡(luò),和商業(yè)信息網(wǎng)絡(luò)相比,它具有自身的要求和特點,其中非常重要的一點就是實時性要求高,不僅要求傳輸速度快,還要求響應(yīng)快,并且數(shù)據(jù)傳輸要具有確定性。以太網(wǎng)的通信調(diào)度方式——帶有沖突檢測的載波偵聽多路訪問機制(csma/cd),是一種非確定性的通信調(diào)度方式。網(wǎng)絡(luò)每個節(jié)點要通過競爭來取得信息的發(fā)送權(quán):節(jié)點監(jiān)聽信道,只有發(fā)現(xiàn)信道空閑時才能發(fā)送信息。信息開始發(fā)送后,還需要檢查是否發(fā)生碰撞,如發(fā)生碰撞,則需等待,等待的時間取決于“二進制指數(shù)退避算法”得出的隨機延遲[1][4],這種隨機延遲為工業(yè)通信的數(shù)據(jù)傳輸增加了難以避免的不確定性。
2.系統(tǒng)模型
本設(shè)計通過在以太網(wǎng)mac層之上增加確定性調(diào)度層,上層采用了epa[3](ethernetofplantautomation)協(xié)議的數(shù)據(jù)封裝格式,因此使數(shù)據(jù)包的類型判斷和調(diào)度發(fā)送時間的獲取成為可能。epa是一種基于工業(yè)以太網(wǎng)的現(xiàn)場總線標(biāo)準(zhǔn),是在控制系統(tǒng)與現(xiàn)場測量、控制裝置之間,以及現(xiàn)場測量、執(zhí)行機構(gòu)之間進行通信的分布式數(shù)字控制系統(tǒng)。這樣對所有的上層數(shù)據(jù)包在整個實時網(wǎng)段范圍內(nèi)進行數(shù)據(jù)包統(tǒng)一調(diào)度發(fā)送,從而避免碰撞現(xiàn)象的發(fā)生并確保數(shù)據(jù)傳輸?shù)拇_定性要求。通信模型如圖1所示:
圖1實時以太網(wǎng)通信模型
3.系統(tǒng)設(shè)計
本設(shè)計是在嵌入式平臺下實現(xiàn)的,利用arm7處理器和cs8900網(wǎng)絡(luò)接口芯片搭建的硬件平臺進行開發(fā),在同一網(wǎng)段中,每一個運行的設(shè)備等同于一個網(wǎng)絡(luò)節(jié)點。
上層采用epa協(xié)議封裝,分實時數(shù)據(jù)和非實時數(shù)據(jù)進行發(fā)送和接收。實時數(shù)據(jù)到達后,通過實時通信服務(wù)接口向下遞交,對數(shù)據(jù)進行緩存處理,等待調(diào)度發(fā)送。下一個發(fā)送周期到來后,將用新的實時數(shù)據(jù)更新相應(yīng)緩沖區(qū);非實時通信服務(wù)通過os中提供的bsd接口來提供,但是為了實現(xiàn)確定性的調(diào)度,非實時數(shù)據(jù)包穿越tcp/ip協(xié)議棧到達數(shù)據(jù)鏈路層時,不允許直接調(diào)用硬件驅(qū)動接口進行數(shù)據(jù)包收發(fā)操作,而是通過一個虛擬的驅(qū)動接口將數(shù)據(jù)包放入相應(yīng)的發(fā)送和接收隊列。修改原e-nic的驅(qū)動接口,使其成為虛擬驅(qū)動接口,無法直接將數(shù)據(jù)遞交給硬件驅(qū)動,而是入非周期隊列。對硬件網(wǎng)卡的收發(fā)操作在硬件驅(qū)動接口中實現(xiàn)。設(shè)計圖如圖2:
圖2以太網(wǎng)確定性調(diào)度設(shè)計圖
確定性調(diào)度層負(fù)責(zé)何時調(diào)用硬件驅(qū)動接口收發(fā)數(shù)據(jù)幀。當(dāng)確定性調(diào)度層收到數(shù)據(jù)幀時,根據(jù)以太網(wǎng)幀首部的type字段來區(qū)分實時數(shù)據(jù)幀和非實時數(shù)據(jù)幀。若是實時數(shù)據(jù)幀,將用收到的實時數(shù)據(jù)更新相應(yīng)緩沖區(qū);若是非實時數(shù)據(jù),則將其放入相應(yīng)的接收隊列并通過任務(wù)通信機制通知上層協(xié)議棧數(shù)據(jù)幀到達事件。確定性調(diào)度層的調(diào)度表由調(diào)度算法生成。
4.主要模塊描述
實時通信服務(wù)接口、虛擬驅(qū)動接口、時鐘同步服務(wù)和實時調(diào)度算法為本設(shè)計的四個主要模塊。
4.1實時通信服務(wù)接口
實時通信服務(wù)接口負(fù)責(zé)為上層應(yīng)用(協(xié)議)提供周期性實時消息的實時通信服務(wù)。
周期性實時消息的發(fā)送和接收采用緩沖機制,即為本節(jié)點在運行過程中要發(fā)送的每個周期性實時消息在內(nèi)存中定義相應(yīng)的緩沖區(qū),每當(dāng)上層應(yīng)用通過實時通信服務(wù)接口發(fā)送新的消息時,即用該新消息值更新其對應(yīng)緩沖區(qū)中的舊消息值;為本節(jié)點在運行過程中要接收的每個周期性實時消息在內(nèi)存中定義相應(yīng)的緩沖,每當(dāng)上層應(yīng)用通過實時通信服務(wù)接口接收新的消息時,則將對應(yīng)緩沖區(qū)中的消息值返回。節(jié)點在運行過程中將要發(fā)送的每個周期性實時消息必須要有與其對應(yīng)的已知的目標(biāo)地址(包括目標(biāo)mac地址-用于識別節(jié)點,端口號-用于識別實時消息所對應(yīng)的緩沖區(qū)元素)。
實時通信服務(wù)接口要提供以下接口函數(shù):
(1)rtappinterface()
創(chuàng)建實時接口函數(shù),用于實時周期性消息的發(fā)送和接收。
(2)rtmapping()
將由rtappinterface()函數(shù)創(chuàng)建的接口進程映射到特定的地址(mac,端口號(即緩沖元素的索引))。
(3)rtsend()
使用已創(chuàng)建和映射完畢的實時接口進程進行實時消息的發(fā)送。
(4)rtrecv()
使用已創(chuàng)建和綁定完畢的實時接口進程進行實時消息的接收。
4.2虛擬驅(qū)動接口
虛擬驅(qū)動接口負(fù)責(zé)為上層tcp/udp/ip協(xié)議棧提供一套虛擬的驅(qū)動程序接口,該接口必須與上層協(xié)議棧所使用的原硬件驅(qū)動接口一致,但需改變該接口中的具體函數(shù)實現(xiàn),使得虛擬驅(qū)動接口所對應(yīng)的具體函數(shù)無法直接實現(xiàn)對硬件的控制(如打開,關(guān)閉設(shè)備,收發(fā)數(shù)據(jù)包等)。必須確保用虛擬驅(qū)動接口替換原硬件驅(qū)動接口后,從tcp/ip協(xié)議棧使用驅(qū)動接口的角度來看,和使用原硬件接口一樣,即用虛擬驅(qū)動接口替換原硬件驅(qū)動接口的改動對于上層協(xié)議棧的使用而言必須是透明的。對上層協(xié)議棧發(fā)下來的數(shù)據(jù)包以fifo的順序緩存到消息隊列,何時調(diào)用硬件驅(qū)動接口發(fā)送這些數(shù)據(jù)包由確定性調(diào)度層決定。
虛擬驅(qū)動接口提供的主要函數(shù):
(1)rtvirtualin()
接收ip層的發(fā)送數(shù)據(jù)包,根據(jù)數(shù)據(jù)包類型確定轉(zhuǎn)存入隊列還是向下遞交。
(2)rtvirtualout()
調(diào)用驅(qū)動層的發(fā)送函數(shù)發(fā)送數(shù)據(jù),接收發(fā)送返回信息。
(3)rtvirtualpackettype()
取對應(yīng)字段,判斷到來包類型(epa類型字段以太網(wǎng)類型字段)。
4.3時鐘同步
在實時網(wǎng)段內(nèi),時鐘同步是非常關(guān)鍵的,因為實時網(wǎng)段內(nèi)各節(jié)點上的任務(wù)運行和消息發(fā)送都是基于時間基準(zhǔn)的,特別是總線上的消息調(diào)度,為了避免碰撞,消息間必須留出足夠的間隙來容納節(jié)點間的同步誤差。為了提高時鐘同步精度,應(yīng)把時鐘同步功能放在協(xié)議棧中盡可能靠近硬件的位置。本系統(tǒng)中時鐘同步功能由確定性調(diào)度層來提供。時鐘同步協(xié)議采用ieee1588協(xié)議[6]。
在實時網(wǎng)段內(nèi)選定一節(jié)點作為主時鐘,主時鐘定期發(fā)布時鐘同步消息,時鐘同步消息作為主時鐘節(jié)點上的周期性消息。由于時鐘同步消息在調(diào)度好的同步窗口中發(fā)送,可以保證時鐘消息的發(fā)送獨立于當(dāng)前網(wǎng)絡(luò)負(fù)載而無碰撞的發(fā)送,因而時鐘消息從發(fā)布節(jié)點到各個接收節(jié)點的延遲對各個接收節(jié)點而言為一常量。
4.4實時調(diào)度算法
本設(shè)計采用的算法根據(jù)rm和edf算法改進而成的[7],每個基本周期開始時動態(tài)生成此基本調(diào)度單位(esu)的調(diào)度時間表。整個鏈路時間由連續(xù)等長的基本調(diào)度單位(esu)組成,通常esu為實時網(wǎng)段內(nèi)所有周期性實時消息的周期的最大公約數(shù)hcf。每個esu被分成周期性實時消息窗口(pw)和非周期性消息窗口(aw),如圖3所示。pw中的調(diào)度根據(jù)事先由周期性實時消息調(diào)度算法生成的調(diào)度表來進行,調(diào)度表的長度為所有周期性實時消息的周期的最小公倍數(shù)lcm,調(diào)度表中與各個節(jié)點相關(guān)的部分被存放在各個節(jié)點中,各節(jié)點根據(jù)調(diào)度表中規(guī)定的時刻,以宏周期為循環(huán)單位周而復(fù)始的執(zhí)行周期性實時消息的發(fā)送動作。在aw中,數(shù)據(jù)采用優(yōu)先級隊列節(jié)點輪詢的方式發(fā)送。按照非周期數(shù)據(jù)實時要求將非周期數(shù)據(jù)劃分為i個優(yōu)先級,每個優(yōu)先級在節(jié)點中維護一個非周期優(yōu)先級隊列,因此每個節(jié)點中的非實時優(yōu)先級隊列為i個。發(fā)送時采用節(jié)點輪詢的方式按優(yōu)先級從高到低的順序進行發(fā)送,每次被輪詢節(jié)點將指定優(yōu)先級隊列中的數(shù)據(jù)全部發(fā)送。
圖3基本周期內(nèi)數(shù)據(jù)發(fā)送窗口
5.結(jié)論
本系統(tǒng)所實現(xiàn)的實時以太網(wǎng)可以完成網(wǎng)段內(nèi)數(shù)據(jù)的調(diào)度發(fā)送,基于本設(shè)計的實時以太網(wǎng)完全可以應(yīng)用于一般的過程控制工業(yè)領(lǐng)域。通過改進原型系統(tǒng)的時鐘同步機制等來可以進一步提高系統(tǒng)的實時性以及時鐘精度,基于本設(shè)計的實時以太網(wǎng)改進的目標(biāo)是把時鐘精度提高到微秒級,進而應(yīng)用于時間精度要求較高的工業(yè)領(lǐng)域,如運動控制等。
上一個:苦蕎茶的分類
下一個:你是什么年紀(jì),請喝什么茶!

紅茶的飲法(紅茶怎么喝)
大數(shù)據(jù)技術(shù)有哪些,大數(shù)據(jù)主要學(xué)習(xí)什么
拆除接地線應(yīng)講究安全方法
電腦硬盤分區(qū)表類型,更改硬盤分區(qū)表類型為GPT
電阻概念
win10桌面怎么快速切換(windows桌面快速切換)
華為gt2和gt2 pro有什么區(qū)別(華為gt2和gt2pro對比有什么區(qū)別)
移動電源怎么看容量,怎么看充電寶的容量
新型傳感器——owlssensors,可以檢測到細(xì)微的運動
4字母com域名很值錢嗎?現(xiàn)在還有嗎?
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos