蘇憲利,鄭一麟
(1.渤海大學(xué) 信息科學(xué)與技術(shù)學(xué)院,遼寧 錦州 121013;2.中國科學(xué)院 沈陽計(jì)算技術(shù)研究所,沈陽110068)
基于RT-thread的機(jī)床物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)*
蘇憲利1,鄭一麟2
(1.渤海大學(xué) 信息科學(xué)與技術(shù)學(xué)院,遼寧 錦州 121013;2.中國科學(xué)院 沈陽計(jì)算技術(shù)研究所,沈陽110068)
針對機(jī)床物聯(lián)網(wǎng)系統(tǒng)中多緊急度數(shù)據(jù)調(diào)度的要求和數(shù)據(jù)通信穩(wěn)定性的要求,在機(jī)床物聯(lián)網(wǎng)系統(tǒng)中采用了RT-thread實(shí)時(shí)操作系統(tǒng),通過對mailbox進(jìn)程通信機(jī)制的改進(jìn),滿足了數(shù)據(jù)優(yōu)先級調(diào)度的需求,提高了系統(tǒng)對緊急數(shù)據(jù)優(yōu)先處理的能力。通過采用socket通信技術(shù),滿足了網(wǎng)絡(luò)重負(fù)載通信的要求,在硬件上采用了ARM Cortex-M3處理芯片和W5100網(wǎng)絡(luò)通信芯片。通過實(shí)驗(yàn)仿真,證明了本系統(tǒng)大幅度提高了機(jī)床數(shù)據(jù)處理的實(shí)時(shí)性和可調(diào)度性。
數(shù)據(jù)調(diào)度;郵箱模型;socket
機(jī)床物聯(lián)網(wǎng)系統(tǒng)是近年來發(fā)展起來的物聯(lián)網(wǎng)技術(shù)[1]在機(jī)床領(lǐng)域的綜合應(yīng)用,通過將物聯(lián)網(wǎng)設(shè)備、技術(shù)應(yīng)用于機(jī)床設(shè)備,實(shí)現(xiàn)對機(jī)床數(shù)據(jù)的采集和傳輸。機(jī)床物聯(lián)網(wǎng)系統(tǒng)是對傳統(tǒng)的機(jī)床信息采集技術(shù)的有益補(bǔ)充[2],對于不能直接通過機(jī)床控制系統(tǒng)自身獲取的機(jī)床運(yùn)行狀態(tài)參數(shù)和環(huán)境參數(shù),可以由機(jī)床物聯(lián)網(wǎng)系統(tǒng)進(jìn)行獲取,通過網(wǎng)絡(luò)傳送給診斷系統(tǒng)或CNC系統(tǒng),對診斷系統(tǒng)和CNC系統(tǒng)起到數(shù)據(jù)支持的作用。
根據(jù)機(jī)床數(shù)據(jù)獲取的實(shí)際需求,在機(jī)床物聯(lián)網(wǎng)系統(tǒng)中數(shù)據(jù)采集通常采用溫度傳感器[3]、振動傳感器、壓力傳感器等傳感設(shè)備獲取數(shù)據(jù),數(shù)據(jù)進(jìn)行匯聚后通過匯聚節(jié)點(diǎn)傳送給診斷系統(tǒng)或CNC系統(tǒng)。在實(shí)際的機(jī)床物聯(lián)網(wǎng)系統(tǒng)運(yùn)行中出現(xiàn)了以下問題。
(1)根據(jù)工業(yè)要求采集到的數(shù)據(jù)被分為報(bào)警數(shù)據(jù)和普通數(shù)據(jù),所以數(shù)據(jù)在系統(tǒng)中傳輸和處理時(shí)就產(chǎn)生了不同傳送和處理緊急度的要求,報(bào)警數(shù)據(jù)需要進(jìn)行優(yōu)先傳送和處理,因而產(chǎn)生了數(shù)據(jù)調(diào)度的問題。
(2)由于傳感器設(shè)備數(shù)量的增加和采集頻率的提高,機(jī)床物聯(lián)網(wǎng)系統(tǒng)數(shù)據(jù)通信量在大幅度的上升,因此產(chǎn)生了大數(shù)據(jù)量、快速通信的要求。
為了解決上述問題,本文提出建設(shè)一套基于RT-thread操作系統(tǒng)的機(jī)床物聯(lián)網(wǎng)系統(tǒng),實(shí)現(xiàn)數(shù)據(jù)傳送、處理的科學(xué)調(diào)度和大數(shù)據(jù)快速網(wǎng)絡(luò)通信的處理。
本系統(tǒng)的設(shè)計(jì)是為了采用物聯(lián)網(wǎng)技術(shù)完成對機(jī)床數(shù)據(jù)的采集、處理和傳輸工作,所以在系統(tǒng)結(jié)構(gòu)上設(shè)計(jì)了感知層、匯聚層和應(yīng)用層,感知層使用的主要設(shè)備有溫度傳感器、振動傳感器,感知層設(shè)備完成數(shù)據(jù)的采集和發(fā)送。匯聚層使用的主要設(shè)備為匯聚節(jié)點(diǎn),匯聚節(jié)點(diǎn)完成數(shù)據(jù)的接收、處理和轉(zhuǎn)發(fā)。應(yīng)用層完成數(shù)據(jù)分析、處理和反饋控制。系統(tǒng)整體結(jié)構(gòu)如圖1所示。
圖1 機(jī)床物聯(lián)網(wǎng)系統(tǒng)整體結(jié)構(gòu)圖
本系統(tǒng)中溫度(振動)傳感節(jié)點(diǎn)完成溫度(振動)數(shù)據(jù)的采集和發(fā)送,并接收來自匯聚節(jié)點(diǎn)傳來的反饋控制數(shù)據(jù)。溫度傳感節(jié)點(diǎn)采用了cc2430無線通信模塊通過zigbee協(xié)議與匯聚節(jié)點(diǎn)通信。匯聚節(jié)點(diǎn)完成傳感節(jié)點(diǎn)上傳數(shù)據(jù)的處理、調(diào)度,并轉(zhuǎn)發(fā)給診斷系統(tǒng),接收診斷系統(tǒng)發(fā)來的反饋控制命令并轉(zhuǎn)根據(jù)控制需求轉(zhuǎn)發(fā)給傳感節(jié)點(diǎn)。匯聚節(jié)點(diǎn)采用cc2430芯片和zigbee協(xié)議完成與傳感節(jié)點(diǎn)通信,采用w5100以太網(wǎng)網(wǎng)卡模塊和TCP協(xié)議通過工業(yè)以太網(wǎng)完成與診斷系統(tǒng)通信。診斷系統(tǒng)從以太網(wǎng)接收數(shù)據(jù)進(jìn)行分析處理,根據(jù)分析結(jié)果產(chǎn)生反饋控制,將控制命令通過TCP協(xié)議發(fā)送給匯聚節(jié)點(diǎn)。
根據(jù)機(jī)床物聯(lián)網(wǎng)系統(tǒng)功能和性能的需求,本系統(tǒng)在匯聚節(jié)點(diǎn)上采用RT-thread操作系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)封裝(解封)處理、數(shù)據(jù)調(diào)度、網(wǎng)絡(luò)通信和硬件設(shè)備管理功能。下面將進(jìn)行RT-thread在匯聚節(jié)點(diǎn)上應(yīng)用的討論,其中對數(shù)據(jù)調(diào)度算法的改進(jìn)是本文的重點(diǎn)。
根據(jù)本系統(tǒng)的總體設(shè)計(jì),匯聚節(jié)點(diǎn)在硬件結(jié)構(gòu)上設(shè)計(jì)為通過cc2430芯片采用zigbee協(xié)議與傳感節(jié)點(diǎn)通信,通過W5100芯片采用tcp協(xié)議完成與與診斷系統(tǒng)的通信。
在功能上匯聚節(jié)點(diǎn)需要完成數(shù)據(jù)接收、處理和轉(zhuǎn)發(fā)工作,匯聚節(jié)點(diǎn)處理數(shù)據(jù)來源有兩種,一種是由多個(gè)傳感節(jié)點(diǎn)通過cc2430發(fā)來的具有不同緊急度的數(shù)據(jù),一種是由診斷系統(tǒng)通過w5100發(fā)來的反饋控制數(shù)據(jù)。因此數(shù)據(jù)接收功能需要完成zigbee通信和tcp通信管理。數(shù)據(jù)處理功能需要完成兩部分工作內(nèi)容,一部分是根據(jù)數(shù)據(jù)的緊急度完成發(fā)送順序的調(diào)整和控制,也就是數(shù)據(jù)調(diào)度。另一部分是按約定的數(shù)據(jù)通信協(xié)議對數(shù)據(jù)進(jìn)行tcp封裝和解封。
根據(jù)對匯聚節(jié)點(diǎn)功能的分析,本系統(tǒng)設(shè)計(jì)為在RT-thread操作系統(tǒng)中采用多線程機(jī)制[4]、中斷機(jī)制和mailbox機(jī)制完成數(shù)據(jù)處理和調(diào)度,采用LWIP協(xié)議棧[5]機(jī)制完成以太網(wǎng)通信管理,采用zigbee技術(shù)完成無線通信管理。因此在RT-thread中設(shè)計(jì)了兩道線程,一道線程是轉(zhuǎn)發(fā)控制線程,完成數(shù)據(jù)從郵箱讀取和向以太網(wǎng)發(fā)送工作,該線程具有低優(yōu)先級。另一道是管理線程,完成tcp通信初始化和socket通信管理,該線程具有高優(yōu)先級。為了保證數(shù)據(jù)調(diào)度功能的優(yōu)先進(jìn)行,單獨(dú)設(shè)計(jì)了數(shù)據(jù)調(diào)度處理函數(shù),該函數(shù)在中斷處理函數(shù)中被調(diào)用執(zhí)行。匯聚節(jié)點(diǎn)工作原理如圖2所示。
圖2 匯聚節(jié)點(diǎn)工作原理
RT-thread系統(tǒng)開始工作時(shí)完成系統(tǒng)初始化工作[6],包括系統(tǒng)核心硬件設(shè)備驅(qū)動、系統(tǒng)參數(shù)的設(shè)定和線程的創(chuàng)建。之后由管理線程[7-8]進(jìn)行網(wǎng)絡(luò)通信設(shè)備w5100初始化和socket通信初始化,在初始化完成后該線程進(jìn)入掛起狀態(tài),當(dāng)socket監(jiān)聽有數(shù)據(jù)到來時(shí)喚醒該線程并進(jìn)行數(shù)據(jù)處理,處理后轉(zhuǎn)發(fā)控制命令給cc2430。當(dāng)cc2430接收到傳感節(jié)點(diǎn)發(fā)來的數(shù)據(jù)時(shí),產(chǎn)生中斷,進(jìn)入中斷處理程序,中斷處理程序調(diào)用數(shù)據(jù)調(diào)度函數(shù)根據(jù)數(shù)據(jù)優(yōu)先級進(jìn)行郵箱寫入,中斷返回后喚醒轉(zhuǎn)發(fā)控制線程讀取郵箱進(jìn)行數(shù)據(jù)封裝和轉(zhuǎn)發(fā)。
RT-thread中的mailbox是一種輕量級進(jìn)程通信機(jī)制[9],具有控制簡單、開銷低和運(yùn)行效率高的特點(diǎn),傳統(tǒng)mailbox進(jìn)程通信機(jī)制中采用了如圖3所示的控制方法。
圖3 mailbox機(jī)制原理圖
其中郵箱是一個(gè)順序循環(huán)操作隊(duì)列,out_offset為出口偏移位置,in_offset為入口偏移位置,entry為郵箱中當(dāng)前存放郵件的數(shù)量,size為郵箱長度即圖中n+1,每個(gè)郵件大小固定為4字節(jié),郵箱大小為size×4字節(jié),其中郵箱長度可由設(shè)計(jì)者自行設(shè)定,郵箱的寫入可以由線程或中斷程序完成,郵箱的讀取只能由線程完成。in_offset、out_offset初始時(shí)都指向郵箱0號位置,增長方向?yàn)?至n方向,entry初始值為0,郵箱寫入后in_offset增加1,向右移動,entry加1,郵件讀出后out_offset增加1,向右移動,entry減1,當(dāng)in_offset、out_offset到達(dá)郵箱右端點(diǎn)時(shí),再次發(fā)生寫入和讀取操作后in_offset、out_ffset重新指向郵箱0號位置。當(dāng)郵箱空時(shí)即entry等于0,郵箱讀取線程被掛起(當(dāng)該線程timeout設(shè)置為0時(shí)則直接返回超時(shí)錯(cuò)誤),郵箱讀取線程由郵箱寫入操作喚醒。當(dāng)郵箱滿時(shí)即entry等于size,郵箱寫入線程被掛起(當(dāng)該線程timeout設(shè)置為0時(shí)則直接返回郵箱滿錯(cuò)誤),由郵箱讀出操作喚醒。由于本系統(tǒng)設(shè)計(jì)中為了保證數(shù)據(jù)調(diào)度操作的最高優(yōu)先級采用了由中斷處理程序調(diào)用數(shù)據(jù)調(diào)度函數(shù)完成郵箱的寫入,由轉(zhuǎn)發(fā)控制線程完成數(shù)據(jù)的封裝和發(fā)送,因此本系統(tǒng)中沒有郵箱寫入線程。
在本系統(tǒng)中,傳感器上傳的數(shù)據(jù)由傳感節(jié)點(diǎn)在上傳前根據(jù)數(shù)據(jù)閾值設(shè)定了數(shù)據(jù)的優(yōu)先級。上傳數(shù)據(jù)共具有兩種優(yōu)先級,一種是低優(yōu)先級數(shù)據(jù)即普通數(shù)據(jù),是指傳感節(jié)點(diǎn)上傳的未達(dá)到報(bào)警閾值的數(shù)據(jù)。另一種是高優(yōu)先級數(shù)據(jù)即報(bào)警數(shù)據(jù),是指傳感節(jié)點(diǎn)上傳的到達(dá)或超過報(bào)警閾值的數(shù)據(jù)。系統(tǒng)運(yùn)行的規(guī)則為,低優(yōu)先級數(shù)據(jù)到達(dá)后根據(jù)FIFO策略進(jìn)行郵箱寫入和轉(zhuǎn)發(fā),當(dāng)有高優(yōu)先級數(shù)據(jù)到達(dá)后,需立即停止低優(yōu)先級數(shù)據(jù)的傳送,改為傳送高優(yōu)先級數(shù)據(jù),而在傳統(tǒng)的mailbox機(jī)制中是數(shù)據(jù)寫入和讀取是順序循環(huán)工作進(jìn)行的,無法完成不同優(yōu)先級數(shù)據(jù)傳送順序調(diào)整和控制的要求,因此本文提出一種改進(jìn)式mailbox進(jìn)程通信機(jī)制,實(shí)現(xiàn)不同優(yōu)先級數(shù)據(jù)按需求進(jìn)行轉(zhuǎn)發(fā)控制。改進(jìn)式mailbox工作原理如圖4所示。
圖4 改進(jìn)式mailbox工作原理
圖4a圖是當(dāng)普通數(shù)據(jù)到達(dá)時(shí)改進(jìn)式mailbox的處理過程:
①當(dāng)有第k個(gè)普通數(shù)據(jù)到達(dá)時(shí),中斷程序分析該數(shù)據(jù),由于數(shù)據(jù)為低優(yōu)先級數(shù)據(jù),則判斷郵箱是否為滿,如為滿立刻執(zhí)行中斷返回,該數(shù)據(jù)丟失。否則找到in_offset指針位置,in_offset指針當(dāng)前指向第m號郵箱。
②將第k個(gè)普通數(shù)據(jù)復(fù)制到該位置,對in_offset進(jìn)行加1操作,in_offset指針指向第m+1號郵箱,entry加1。
③中斷返回后由轉(zhuǎn)發(fā)控制線程找到out_offset指針位置,當(dāng)前指向第j號郵箱,將該郵箱的內(nèi)容封裝發(fā)送,out_offset指針加1,entry減1。
當(dāng)out_offset或in_offset指針指向郵箱最后一個(gè)位置時(shí),再次發(fā)生指針加1操作時(shí)將把該指針指向第0號郵箱位置。
圖4b圖是當(dāng)有高優(yōu)先級數(shù)據(jù)到達(dá)時(shí)改進(jìn)式mailbox的處理過程,這是本文重點(diǎn)改進(jìn)的內(nèi)容。
①當(dāng)有高優(yōu)先級數(shù)據(jù)到達(dá),中斷程序分析該數(shù)據(jù),由于數(shù)據(jù)為高優(yōu)先級數(shù)據(jù),直接找到out_offset指針位置,此處不進(jìn)行郵箱滿的判斷,out_offset指針當(dāng)前指向第t號郵箱,in_offset 指針指向第i個(gè)郵箱。
②對out_offset進(jìn)行減1操作,out_offset指針指向第t-1號郵箱,將高優(yōu)先級數(shù)據(jù)放進(jìn)第t-1號郵箱,判斷當(dāng)entry小于size時(shí),執(zhí)行entry加1,否則執(zhí)行in_offset等于out_offset。此操作用于保證后續(xù)的低優(yōu)先級數(shù)據(jù)能寫在空郵箱位置上。
③中斷返回后由轉(zhuǎn)發(fā)控制線程找到out_offset指針位置第t-1號郵箱,將該郵箱的內(nèi)容封裝發(fā)送,out_offset指針加1,entry減1。繼續(xù)恢復(fù)正常發(fā)送。
當(dāng)out_offset指針指向第0號郵箱時(shí),再次發(fā)生減1操作則將該指針指向最大編號郵箱即第n號郵箱。
由于傳統(tǒng)mailbox機(jī)制中每個(gè)郵箱的大小為4個(gè)字節(jié),在本設(shè)計(jì)中采用郵箱存放變量地址的方法,實(shí)現(xiàn)大數(shù)據(jù)的存儲和發(fā)送。數(shù)據(jù)結(jié)構(gòu)體設(shè)計(jì)如下:
struct datamsg
{
uint8_t * data_prt;
unit8_t data_pro;
unit32_t data_size;
};
其中data_prt為指向該結(jié)構(gòu)體變量的指針,data_pro為本條數(shù)據(jù)的優(yōu)先級,data_size為本條數(shù)據(jù)的長度。
算法改進(jìn)分析:
(1)當(dāng)高優(yōu)先級數(shù)據(jù)到達(dá)時(shí),采用了對out_offset進(jìn)行減1操作而不是操作in_offset是因?yàn)閛ut_offset指向即將被讀取郵件的位置,所以out_offset-1指向位置的數(shù)據(jù)應(yīng)該是已經(jīng)讀取完成的,對out_offset-1指向位置進(jìn)行寫入不會產(chǎn)生數(shù)據(jù)丟失。同時(shí)在中斷返回后將立刻由轉(zhuǎn)發(fā)控制程序讀取out_offset指向位置的數(shù)據(jù)(此時(shí)為高優(yōu)先級數(shù)據(jù))進(jìn)行發(fā)送,從而完成高優(yōu)先級數(shù)據(jù)的優(yōu)先發(fā)送。
(2)當(dāng)高優(yōu)先級數(shù)據(jù)是不連續(xù)偶發(fā)性出現(xiàn)時(shí),該操作只是將out_offset進(jìn)行減1,隨后郵箱讀取線程將讀取位置郵箱的內(nèi)容發(fā)送,并進(jìn)行out_offset加1,此時(shí)out_offset恢復(fù)成為高優(yōu)先級數(shù)據(jù)到達(dá)前的值,恢復(fù)到正常數(shù)據(jù)的收發(fā)過程。
(3)當(dāng)高優(yōu)先級數(shù)據(jù)連續(xù)到達(dá)時(shí),就會出現(xiàn)不斷的執(zhí)行out_offset減1操作,最壞的一種可能是經(jīng)過n+1個(gè)連續(xù)中斷后out_offset值比原始值小1,也就是全部郵箱都被高優(yōu)先級數(shù)據(jù)寫滿,并產(chǎn)生了高優(yōu)先級數(shù)據(jù)間覆蓋,由于本算法中中斷處理程序內(nèi)容設(shè)計(jì)為不能被阻塞,所以只要中斷有間歇,高優(yōu)先級數(shù)據(jù)就能被轉(zhuǎn)發(fā)控制線程讀出并發(fā)給診斷系統(tǒng)。達(dá)到了高優(yōu)先級數(shù)據(jù)優(yōu)先傳送的目的,根據(jù)本系統(tǒng)的實(shí)際工作情況,由于溫度和振動傳感器的采集頻率為每秒1次,cc2430發(fā)送頻率也為每秒1次,所以只要在1秒內(nèi)完成最大中斷數(shù)量的處理,本系統(tǒng)中設(shè)計(jì)負(fù)載為20個(gè)傳感器,所以最多為每秒20個(gè)中斷,就不會出現(xiàn)系統(tǒng)一直處于中斷狀態(tài)導(dǎo)致數(shù)據(jù)不能發(fā)送的情況,后續(xù)的實(shí)驗(yàn)證明該情況不會出現(xiàn)。
(4)郵箱大小的設(shè)置,由于每個(gè)郵件長度為4個(gè)字節(jié),郵箱的大小為長度size×4,該參數(shù)將影響到嵌入式設(shè)備的內(nèi)存占用情況,郵箱長度size的設(shè)置過少將出現(xiàn)只要出現(xiàn)高優(yōu)先級數(shù)據(jù)就將把低優(yōu)先級數(shù)據(jù)覆蓋,郵箱數(shù)量設(shè)置過大內(nèi)存占用過大,影響系統(tǒng)的整體性能,所以可以根據(jù)實(shí)際傳感節(jié)點(diǎn)的并發(fā)數(shù)量進(jìn)行設(shè)定和調(diào)整,本系統(tǒng)中設(shè)定郵箱長度size值為20。
算法實(shí)現(xiàn)核心偽代碼如下:
轉(zhuǎn)發(fā)控制線程進(jìn)行郵件讀?。?/p>
rt_mb_read (rt_mailbox_t mb, rt_uint32_t value, rt_int32_t timeout)
{.......;
*value = mb->msg_pool[mb->out_offset];
++ mb->out_offset;
if (mb->out_offset >= mb->size)
mb->out_offset = 0;
mb->entry --;
.......;}
中斷處理程序調(diào)用數(shù)據(jù)調(diào)度函數(shù)進(jìn)行郵件寫入,數(shù)據(jù)調(diào)度函數(shù)內(nèi)容為:
rt_mb_urgent(rt_mailbox_t mb, rt_uint32_t value, datamsg* msg)
{......;
if(msg->pro==0)//低優(yōu)先級數(shù)據(jù)
{mb->msg_pool[mb->in_offset] = msg->value;
++ mb->in_offset;
if (mb->in_offset >= mb->size)
mb->in_offset = 0;
mb->entry++;
......;}
if(msg->pro==1)//高優(yōu)先級數(shù)據(jù)
{if (mb->out_offset ==0)
mb->out_offset =mb->size-1;
else
-- mb->out_offset;
mb->msg_pool[mb->out_offset] = value;
if(mb->entry
mb->entry ++;
else
mb->in_offset=mb->out_offset; }
......;}
為了對改進(jìn)式mailbox算法的性能進(jìn)行分析,采用了以下條件進(jìn)行系統(tǒng)仿真測試實(shí)驗(yàn):
(1)采用了10個(gè)溫度傳感節(jié)點(diǎn)、10個(gè)振動傳感節(jié)點(diǎn)進(jìn)行預(yù)定數(shù)據(jù)的發(fā)送。為了測試算法在并行數(shù)據(jù)到達(dá)時(shí)的實(shí)際處理能力,這20個(gè)傳感節(jié)點(diǎn)沒有實(shí)際采集數(shù)據(jù),而是由傳感節(jié)點(diǎn)中的程序按預(yù)設(shè)的條件發(fā)送報(bào)警數(shù)據(jù)和普通數(shù)據(jù)。
(2)傳感節(jié)點(diǎn)程序中設(shè)計(jì)CC2430發(fā)送頻率為1次/秒。
(3)為了保證實(shí)驗(yàn)的可靠性,在數(shù)據(jù)出現(xiàn)報(bào)警時(shí)提高傳感節(jié)點(diǎn)報(bào)警數(shù)據(jù)的發(fā)送次數(shù),設(shè)計(jì)為一次報(bào)警發(fā)送3次報(bào)警數(shù)據(jù)。
(4)系統(tǒng)實(shí)驗(yàn)時(shí)間為24個(gè)小時(shí),其中每個(gè)傳感節(jié)點(diǎn)發(fā)生報(bào)警400次,其中連續(xù)報(bào)警200次即200秒完成600條報(bào)警數(shù)據(jù)的發(fā)送,且20個(gè)傳感節(jié)點(diǎn)同時(shí)發(fā)生連續(xù)報(bào)警。每個(gè)傳感節(jié)點(diǎn)間隔性報(bào)警200次,間隔時(shí)間為3秒。
實(shí)驗(yàn)結(jié)果:匯聚節(jié)點(diǎn)成功收到報(bào)警數(shù)據(jù)24000條,普通數(shù)據(jù)1704000條,成功轉(zhuǎn)發(fā)報(bào)警數(shù)據(jù)24000條,普通數(shù)據(jù)1703992條。成功轉(zhuǎn)發(fā)數(shù)據(jù)統(tǒng)計(jì)結(jié)論如圖5所示。
圖5 數(shù)據(jù)轉(zhuǎn)發(fā)成功率對比
實(shí)驗(yàn)分析:在實(shí)驗(yàn)結(jié)論中轉(zhuǎn)發(fā)普通數(shù)據(jù)條數(shù)比收到的普通數(shù)據(jù)條數(shù)少了8條,這種情況是由于并發(fā)到達(dá)的中斷導(dǎo)致了高優(yōu)先級數(shù)據(jù)對普通數(shù)據(jù)的覆蓋,該現(xiàn)象可以通過增大郵箱的size來解決。通過實(shí)驗(yàn)結(jié)果證明了改進(jìn)式mailbox算法不僅具有較好的數(shù)據(jù)優(yōu)先級調(diào)度能力,同時(shí)該算法具有較小的處理開銷。
本系統(tǒng)采用了RT-thread操作系統(tǒng)在匯聚節(jié)點(diǎn)上完成數(shù)據(jù)接收、調(diào)度、轉(zhuǎn)發(fā)等工作,完成了與傳感節(jié)點(diǎn)的zigbee無線通信,完成了與監(jiān)控系統(tǒng)以太網(wǎng)方式通信,重點(diǎn)對傳統(tǒng)的mailbox算法進(jìn)行了改進(jìn),通過嚴(yán)格的仿真測試實(shí)驗(yàn)證明了改進(jìn)后的算法具有較好的實(shí)時(shí)處理能力和轉(zhuǎn)發(fā)性能,保證了高優(yōu)先級數(shù)據(jù)的完全優(yōu)先轉(zhuǎn)發(fā),證明了該系統(tǒng)具有很好的實(shí)時(shí)性和適用性,因此本系統(tǒng)具有很廣泛的應(yīng)用價(jià)值和理論研究價(jià)值。
[1] 曹成.嵌入式實(shí)時(shí)操作系統(tǒng)RT-Thread原理分析與應(yīng)用[D].青島:山東科技大學(xué),2011.
[2] 蘇憲利,鄭一麟.基于WEB的數(shù)控機(jī)床監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].組合機(jī)床與自動化加工技,2013(6):58-61.
[3] 鄭一麟,林滸,陶耀東,等.基于SOPC的數(shù)控系統(tǒng)EnDat2.2接口的設(shè)計(jì)與實(shí)現(xiàn)[J].小型微型計(jì)算機(jī)系統(tǒng),2012(6):1377-1380.
[4] 方瓊瓊.嵌入式串口聯(lián)網(wǎng)服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)[D].合肥:安徽大學(xué),2012.
[5] 尉志剛.基于RT-Thread的MODBUS從協(xié)議棧的設(shè)計(jì)與實(shí)現(xiàn)[D].合肥:安徽大學(xué),2012.
[6] 楊志新.基于RT-Thread系統(tǒng)的網(wǎng)絡(luò)時(shí)鐘同步的實(shí)現(xiàn)與研究[D].南京:南京郵電大學(xué),2013.
[7] 徐晨.物聯(lián)網(wǎng)與數(shù)控機(jī)床遠(yuǎn)程智能監(jiān)控系統(tǒng)[J].大連:組合機(jī)床與自動化加工技術(shù),2013(8):86-90.
[8] 魏亞鵬,韓衛(wèi)光.工業(yè)以太網(wǎng)EtherCAT的無線網(wǎng)關(guān)設(shè)計(jì)[J].組合機(jī)床與自動化加工技術(shù),2013(8):26-29.
[9] 王曉寅.基于實(shí)時(shí)系統(tǒng)的STM32網(wǎng)絡(luò)應(yīng)用[D].上海:華東師范大學(xué),2011.
(編輯 趙蓉)
Design and Implementation of Machine Things Network Based on RT-thread
SU Xian-li1,ZHENG Yi-lin2
(1. College of Information Science and Technology, Bohai University. Jinzhou Liaoning 121013,China;2.Shenyang Institute of Computing Technology, Chinese Academy of Sciences, Shenyang 110168,China)
The design and implementation of the machine tools internet of things system based on RT-Thread.To meet the demand of multi-urgency data scheduling and data communication stability, RT-Thread real-time operating system is used. The improvement of mailbox thread communication model satisfies the need of data scheduling priority, enhance the system’s ability to give a priority to urgent data. The use of Socket can meet the need of network heavy load communication. Employ ARM Cortex-M3 processing chip and w5100 network communication chip in hardware. The experiment result proved that the system can largely improve the real-time and Sheduling of machine tools data processing.
data scheduling; mailbox model; socket
1001-2265(2014)06-0069-04
10.13462/j.cnki.mmtamt.2014.06.019
2014-03-03;
2014-04-01
"高檔數(shù)控機(jī)床與基礎(chǔ)制造裝備"國家科技重大專項(xiàng)-開放式數(shù)控系統(tǒng)支撐技術(shù)創(chuàng)新平臺建設(shè)(2011ZX04016-071)
蘇憲利(1980—),男,遼寧錦州人,渤海大學(xué)講師,研究方向?yàn)閷?shí)時(shí)控制,( E-mail)xianlis@sina.com.cn。
TH166;TG506
A