呂佩(國家知識產(chǎn)權(quán)局專利局專利審查協(xié)作廣東中心,廣東廣州,510530)
?
基于優(yōu)先級排隊(duì)算法的改進(jìn)型串口服務(wù)器設(shè)計(jì)
呂佩
(國家知識產(chǎn)權(quán)局專利局專利審查協(xié)作廣東中心,廣東廣州,510530)
針對目前市場上的串口服務(wù)器都是單串口對單網(wǎng)口的結(jié)構(gòu),提出了一種多串口對單網(wǎng)口的接口服務(wù)器改進(jìn)方案。以嵌入式單片機(jī)S3C6410和以太網(wǎng)卡DM9000搭建硬件平臺,充分利用單片機(jī)的多個(gè)UART、嵌入式操作系統(tǒng)的多線程和多隊(duì)列緩沖將接收到的多個(gè)串口數(shù)據(jù)排隊(duì),最后利用優(yōu)先級排隊(duì)算法進(jìn)行數(shù)據(jù)處理。通過使用改進(jìn)型串口服務(wù)器進(jìn)行組網(wǎng)實(shí)驗(yàn),表明利用優(yōu)先級排隊(duì)算法的方案具有可行性,單個(gè)的改進(jìn)型串口服務(wù)器具備多個(gè)傳統(tǒng)串口服務(wù)器的組網(wǎng)能力。
改進(jìn)型串口服務(wù)器;UART;嵌入式系統(tǒng);優(yōu)先級排隊(duì)算法
在目前的工業(yè)自動化控制應(yīng)用中,越來越多的企業(yè)實(shí)現(xiàn)了生產(chǎn)過程的聯(lián)網(wǎng)監(jiān)控,信息化與工業(yè)化深度融合水平不斷提高。網(wǎng)絡(luò)上,設(shè)備之間數(shù)據(jù)通信基本上都是采用異步串行通信接口RS-232、RS-422、RS-485等,且通過相關(guān)通信協(xié)議將多個(gè)設(shè)備連接成底層傳輸與控制網(wǎng)絡(luò),但是網(wǎng)絡(luò)的覆蓋面積很?。?]。為使這些設(shè)備具備遠(yuǎn)程傳輸、擴(kuò)大底層網(wǎng)絡(luò)的覆蓋面積,需要應(yīng)用串口服務(wù)器(Serial Device Server,簡稱SDS)。串口服務(wù)器可以實(shí)現(xiàn)串行數(shù)據(jù)與以太網(wǎng)數(shù)據(jù)的相互轉(zhuǎn)換,從而將串行設(shè)備控制網(wǎng)絡(luò)與信息網(wǎng)絡(luò)連接起來。SDS可以把分散的串行設(shè)備、主機(jī)等通過網(wǎng)絡(luò)集中管理,可以很大程度地降低系統(tǒng)復(fù)雜性和提高系統(tǒng)的可擴(kuò)展性[2]。目前市場上現(xiàn)有的各種SDS都是單串口對單網(wǎng)口的構(gòu)造,如果要支持多總線,則必須使用多個(gè)單總線型SDS或者使用帶有多串口、多網(wǎng)口的多總線型SDS。這樣帶來的問題是:成本增加、系統(tǒng)設(shè)計(jì)復(fù)雜、設(shè)備資源利用率不高,故此本文提出一種基于優(yōu)先級排隊(duì)算法的改進(jìn)型串口服務(wù)器(Modified Serial Device Server,簡稱MSDS)。
串口服務(wù)器將分散的串口設(shè)備通過局域網(wǎng)或互聯(lián)網(wǎng)集中管理,增強(qiáng)了系統(tǒng)的可擴(kuò)展性和降低了系統(tǒng)的維護(hù)難度,只需每條總線連接到對應(yīng)的串口服務(wù)器,控制系統(tǒng)只需圍繞SPS進(jìn)行開發(fā),可以有效減少工作量。
本文設(shè)計(jì)的改進(jìn)型串口服務(wù)器采用嵌入式單片機(jī)S3C6410和以太網(wǎng)卡DM9000搭建硬件平臺,充分利用單片機(jī)的多個(gè)UART、嵌入式操作系統(tǒng)的多線程和多隊(duì)列緩沖將接收到的多個(gè)串口數(shù)據(jù)排隊(duì),使用優(yōu)先級排隊(duì)算法進(jìn)行數(shù)據(jù)處理。下面以實(shí)現(xiàn)RS232數(shù)據(jù)與以太網(wǎng)數(shù)據(jù)之間的轉(zhuǎn)換為例,三串口到單網(wǎng)口的MSDS的工作原理如圖1所示:RS232_1~RS232_3對應(yīng)MSDS的三個(gè)串口,UART_1~ UART_3對應(yīng)嵌入式單片機(jī)的三個(gè)異步收發(fā)器,TransverterThrea_1~TransverterThrea_3對應(yīng)MSDS的三個(gè)是串口數(shù)據(jù)與以太網(wǎng)數(shù)據(jù)的轉(zhuǎn)換線程,F(xiàn)IFO_Receive是串口端到以太網(wǎng)端的接收隊(duì)列,F(xiàn)IFO_Send是以太網(wǎng)端到串口端的發(fā)送隊(duì)列。Ethenet表示以太網(wǎng)單網(wǎng)口。如果嵌入單片機(jī)的UART支持RS485通訊方式,用該方案同樣可以實(shí)現(xiàn)RS485總線數(shù)據(jù)與以太網(wǎng)數(shù)據(jù)的轉(zhuǎn)換,區(qū)別在于串口端接口和設(shè)備驅(qū)動不同。
圖1 MSDS工作原理
M S D S軟件結(jié)構(gòu)如圖2所示,運(yùn)行協(xié)議轉(zhuǎn)換用戶程序后產(chǎn)生線程TransverterThread1~TransverterThread3,這三個(gè)線程根據(jù)數(shù)據(jù)流向通過系統(tǒng)調(diào)用接口分別調(diào)用對應(yīng)的設(shè)備驅(qū)動,如以太網(wǎng)轉(zhuǎn)串口驅(qū)動和串口轉(zhuǎn)以太網(wǎng)驅(qū)動,這兩個(gè)驅(qū)動編寫后可以直接編譯到內(nèi)核或通過命令安裝的方式添加到內(nèi)核。TransverterThread線程的產(chǎn)生的數(shù)量與MSDS設(shè)計(jì)的規(guī)模有關(guān),由于本文改進(jìn)方案使用三條串行總線,所以產(chǎn)生3條TransverterThread線程。
圖2 MSDS軟件結(jié)構(gòu)
由于MSDS是多串口對單網(wǎng)口的結(jié)構(gòu),存在共享資源,需通過合理的調(diào)度,才能使MSDS正常地接收和發(fā)送數(shù)據(jù)[3]??紤]使用串口服務(wù)器組網(wǎng)的底層設(shè)備大多用在工業(yè)生產(chǎn)、安防等的重要場合,而一些對于生產(chǎn)安全和主要指標(biāo)的參數(shù),必須優(yōu)先送達(dá)控制中心[5],從這個(gè)角度本文選擇基于優(yōu)先級排隊(duì)算法處理底層設(shè)備到以太網(wǎng)之間數(shù)據(jù)的流通。
優(yōu)先級排隊(duì)算法(簡稱PQ算法)是按照優(yōu)先規(guī)則為隊(duì)列服務(wù)的,規(guī)定從具有最高優(yōu)先級的非空隊(duì)列的頭部選擇包[6]。為了保證關(guān)鍵業(yè)務(wù)運(yùn)行,在擁塞發(fā)生時(shí),優(yōu)先處理關(guān)鍵業(yè)務(wù)。預(yù)先根據(jù)網(wǎng)絡(luò)協(xié)議、數(shù)據(jù)流入口、源地址/目的地址等制定好控制策略,PQ算法處理數(shù)據(jù)隊(duì)列的優(yōu)先順序就可以確定[7]。將隊(duì)列按優(yōu)先級高低分為四級,而在優(yōu)先級缺省的情況下數(shù)據(jù)流入正常隊(duì)列。
PQ算法的原理如圖3所示,其中:1高優(yōu)先級數(shù)據(jù),在調(diào)度分類時(shí)進(jìn)入了高優(yōu)先級隊(duì)列,依此類推,2、3、4號分組在調(diào)度時(shí)分別進(jìn)入為中優(yōu)先級隊(duì)列、正常優(yōu)先級隊(duì)列以及低優(yōu)先級隊(duì)列。遵循先進(jìn)先出(FIFO)原則,由高到低依次處理四個(gè)優(yōu)先級隊(duì)列的數(shù)據(jù)[8]。
圖3 PQ算法原理圖
為驗(yàn)證串口服務(wù)器改進(jìn)方案的可行性,使用現(xiàn)成的嵌入式開發(fā)板進(jìn)行二次開發(fā)的方式實(shí)現(xiàn)MSDS,而無須從頭到尾設(shè)計(jì)硬件電路。采用的嵌入式開發(fā)板是國嵌QK6410,其處理器是三星公司32位RISC處理器S3C6410,有4個(gè)UART和1個(gè)網(wǎng)口,所以該開發(fā)板可二次開發(fā)為3串口對單網(wǎng)口的MSDS,如圖4所示,只需使用QK6410核心板、DM9000以太網(wǎng)卡和三個(gè)串口就足以滿足MSDS的硬件需要。
圖4 使用QK6410核心板擴(kuò)展串口的MSDS
國嵌QK6410開發(fā)板支持ARM-Linux2.6操作系統(tǒng),Linux2.6內(nèi)核支持多線程和具有豐富的網(wǎng)絡(luò)協(xié)議棧。使用國嵌提供的Linux2.6內(nèi)核可直接燒寫到QK6410的Flash中,而且該內(nèi)核提供了串口驅(qū)動和DM9000以太網(wǎng)卡驅(qū)動。MSDS軟件的開發(fā)流程為:
(1)配置和編譯ARM_linux 2.6內(nèi)核,配置和編譯過程中,取消不需要的驅(qū)動;
(2)構(gòu)建應(yīng)用于ARM-linux的根文件系統(tǒng);
(3)將啟動引導(dǎo)程序Uboot移植到的MSDS板子上;
(4)在linux主機(jī)上開啟tftp和nfs服務(wù),利用tftp服務(wù)可將ARM-linux內(nèi)核映下載到MSDS板的內(nèi)存中,ARM-linux的根文件系統(tǒng)通過NFS服務(wù)掛載到linux主機(jī),使開發(fā)過程得到了簡化;
(5)編寫以太網(wǎng)轉(zhuǎn)RS232和RS232轉(zhuǎn)以太網(wǎng)的設(shè)備驅(qū)動程序,以加載的方式,把它們放到ARM-linux內(nèi)核中;
(6)編寫協(xié)議轉(zhuǎn)換應(yīng)用程序,通過系統(tǒng)調(diào)用接口調(diào)用驅(qū)動程序。
從以上的開發(fā)流程可以看出:編寫以太網(wǎng)轉(zhuǎn)RS232和RS232轉(zhuǎn)以太網(wǎng)驅(qū)動程序和協(xié)議轉(zhuǎn)換應(yīng)用程序是實(shí)現(xiàn)MSDS軟件功能的主要步驟。因?yàn)閲短峁┑腖inux2.6內(nèi)核已經(jīng)實(shí)現(xiàn)了串口驅(qū)動和DM9000以太網(wǎng)卡驅(qū)動,所以實(shí)現(xiàn)以太網(wǎng)轉(zhuǎn)RS232 和RS232轉(zhuǎn)以太網(wǎng)驅(qū)動程序相對簡單,定義設(shè)備操作時(shí)只需結(jié)合串口驅(qū)動和DM9000以太網(wǎng)卡驅(qū)動,如圖5所示。自定義Dev結(jié)構(gòu)體可作為串口數(shù)據(jù)與以太網(wǎng)數(shù)據(jù)轉(zhuǎn)換時(shí)過渡數(shù)據(jù),其結(jié)構(gòu)如表1所示。
圖5 接口轉(zhuǎn)換驅(qū)動
表1 Dev結(jié)構(gòu)體
對于用戶,直接接觸到的是協(xié)議轉(zhuǎn)換用戶程序,在該程序中,首先初始化MSDS的運(yùn)行參數(shù),然后建立線程TransverterThread1~TransverterThread3,在TransverterThread線程中主要通過調(diào)用接口轉(zhuǎn)換驅(qū)動實(shí)現(xiàn)了串口和網(wǎng)口數(shù)據(jù)首發(fā)的功能,其中收發(fā)的數(shù)據(jù)根據(jù)數(shù)據(jù)傳輸方向分別放入Dev結(jié)構(gòu)體隊(duì)列FIFO_Receive和FIFO_Send中。TransverterThread線程的工作原理如圖6所示。
圖6 TransverterThread線程的工作原理
S3C6410有4個(gè)UART,利用其中三個(gè)配置成MSDS的三個(gè)RS232通信接口,設(shè)計(jì)成三串口對單網(wǎng)口的MSDS。使用三塊51單片機(jī)開發(fā)板(設(shè)備A、B、C),作為下位機(jī)設(shè)備,實(shí)驗(yàn)組網(wǎng)如圖7所示。通過組網(wǎng)對比發(fā)現(xiàn),單MSDS模式的網(wǎng)絡(luò)連接明顯比多SDS模式要簡潔,系統(tǒng)的可維護(hù)加強(qiáng)。單MSDS模式,開發(fā)工作只需圍繞一個(gè)MSDS展開,極大地減小了設(shè)計(jì)的工作量;而多SDS模式,要同時(shí)設(shè)計(jì)多個(gè)SDS的收發(fā)過程。
每塊設(shè)備以9600的波特率分別經(jīng)3個(gè)SDS和1 個(gè)MSDS向上位機(jī)傳送1MB的數(shù)據(jù)。以輪尋的方式每次發(fā)送一個(gè)字節(jié),每個(gè)設(shè)備都輪尋1024次,所以上位機(jī)能接收到1024*3個(gè)字節(jié)。MSDS的組網(wǎng)性能可通過數(shù)據(jù)傳輸?shù)牧髁壳€進(jìn)行分析,兩種模式下數(shù)據(jù)傳輸流量的對比如圖8所示。
圖7 組網(wǎng)實(shí)驗(yàn)
圖7 組網(wǎng)流量對比
兩種模式下傳輸1024*3個(gè)字節(jié)的數(shù)據(jù),所用的時(shí)間相近,而且兩條曲線有非常高的擬合度,說明基于優(yōu)先級排隊(duì)算法在數(shù)據(jù)傳輸過程中發(fā)揮了作用。單MSDS模式在傳輸?shù)倪^程中,流量總會稍微落后于多SDS模式,這是要是受限于硬件和線程處理速度,但能在節(jié)約成本的前提下能滿足傳輸需求。
通過組網(wǎng)對比實(shí)驗(yàn)發(fā)現(xiàn)改進(jìn)型串口服務(wù)器處理傳輸數(shù)據(jù)的速率非常接近傳統(tǒng)的串口服務(wù)器的處理傳輸速率,單個(gè)的改進(jìn)型串口服務(wù)器的具有多個(gè)傳統(tǒng)的串口服務(wù)器的組網(wǎng)能力。在實(shí)驗(yàn)結(jié)果中還可以看出優(yōu)先級排隊(duì)算法在數(shù)據(jù)處理傳送環(huán)節(jié)發(fā)揮了作用,在軟件上彌補(bǔ)了硬件的不足。單MSDS模式設(shè)計(jì)的工作量顯著減小。以嵌入式單片機(jī)S3C6410和以太網(wǎng)卡DM9000搭建硬件平臺,充分利用單片機(jī)的多個(gè)UART、嵌入式操作系統(tǒng)的多線程和多隊(duì)列緩沖將接收到的多個(gè)串口數(shù)據(jù)排隊(duì),利用優(yōu)先級排隊(duì)算法進(jìn)行數(shù)據(jù)處理的串口服務(wù)器改進(jìn)方案,可以有效的降低成本、簡化系統(tǒng)設(shè)計(jì)、提高設(shè)備資源利用率。
[1]周超. 基于Cortex-M3的以太網(wǎng)串口服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)[D].武漢理工大學(xué), 2012.
[2]范永剛, 劉紹方, 董晶,等. 基于ARM的高性能串口服務(wù)器的研究與實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程與設(shè)計(jì), 2012, 33(4):1378-1384.
[3]李毅. 嵌入式串口服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)[D]. 北京交通大學(xué),2012.
[4]閭軍, 成愛國. 一種低成本串口服務(wù)器的設(shè)計(jì)[J]. 電子設(shè)計(jì)工程, 2014(14):190-192.
[5]王海勇. 基于ARM9的嵌入式多串口服務(wù)器設(shè)計(jì)[J]. 化工自動化及儀表, 2013, 40(3):372-376.
[6]羅寧, 劉峰. 基于優(yōu)先級隊(duì)列的多約束無線鏈路資源調(diào)度算法[J]. 指揮控制與仿真, 2012(6):55-59.
[7]范珊珊, 李石君. 基于優(yōu)先級隊(duì)列的分布式多主題爬蟲[J]. 計(jì)算機(jī)工程與設(shè)計(jì), 2015(6):1630-1636.
[8]蔣溢, 聶路雨. 基于動態(tài)權(quán)值優(yōu)先級隊(duì)列的移動消息推送策略[J]. 計(jì)算機(jī)工程與設(shè)計(jì), 2013, 34(10):3520-3524.
呂佩(1986-),女,湖北黃岡,工學(xué)碩士,實(shí)習(xí)研究員。
E-mail: zhangzhao281@126.com
Design of Modified Serial Device Server Based on the PQ Algorithm
Pei Lv
(Patent Examination Cooperation Center of the Patent Office, SIPO, GuangZhou, GuangDong, 510530, China)
The structure of the serial device server is a single-serial port to a single-network-port on the market at present, considering this point a improvement project of the serial device server is proposed in this paper which is a kind of multiple-serial port to a single-network-port. We use the embedded microcontroller S3C6410 and Ethernet card DM9000 building hardware platform, take full advantage of the multiple UART of microcontroller, the multithreading of embedded operating system and multiple queue buffer to line the received data of serial, and use priority queuing algorithm for data processing finally. By using modified serial device server for network experiments, it suggests that the project using the priority queue algorithm is feasible. A modified Serial device Server has the networking ability as same as multiple the traditional serial device server.
Modified Serial Device Server; UART; Embedded System; PQ Algorithm
TP303
A
2095-8412 (2016) 03-422-05
工業(yè)技術(shù)創(chuàng)新 URL: http//www.china-iti.com 10.14103/j.issn.2095-8412.2016.03.025