呂佩(國(guó)家知識(shí)產(chǎn)權(quán)局專利局專利審查協(xié)作廣東中心,廣東廣州,510530)
?
基于優(yōu)先級(jí)排隊(duì)算法的改進(jìn)型串口服務(wù)器設(shè)計(jì)
呂佩
(國(guó)家知識(shí)產(chǎn)權(quán)局專利局專利審查協(xié)作廣東中心,廣東廣州,510530)
針對(duì)目前市場(chǎng)上的串口服務(wù)器都是單串口對(duì)單網(wǎng)口的結(jié)構(gòu),提出了一種多串口對(duì)單網(wǎng)口的接口服務(wù)器改進(jìn)方案。以嵌入式單片機(jī)S3C6410和以太網(wǎng)卡DM9000搭建硬件平臺(tái),充分利用單片機(jī)的多個(gè)UART、嵌入式操作系統(tǒng)的多線程和多隊(duì)列緩沖將接收到的多個(gè)串口數(shù)據(jù)排隊(duì),最后利用優(yōu)先級(jí)排隊(duì)算法進(jìn)行數(shù)據(jù)處理。通過(guò)使用改進(jìn)型串口服務(wù)器進(jìn)行組網(wǎng)實(shí)驗(yàn),表明利用優(yōu)先級(jí)排隊(duì)算法的方案具有可行性,單個(gè)的改進(jìn)型串口服務(wù)器具備多個(gè)傳統(tǒng)串口服務(wù)器的組網(wǎng)能力。
改進(jìn)型串口服務(wù)器;UART;嵌入式系統(tǒng);優(yōu)先級(jí)排隊(duì)算法
在目前的工業(yè)自動(dòng)化控制應(yīng)用中,越來(lái)越多的企業(yè)實(shí)現(xiàn)了生產(chǎn)過(guò)程的聯(lián)網(wǎng)監(jiān)控,信息化與工業(yè)化深度融合水平不斷提高。網(wǎng)絡(luò)上,設(shè)備之間數(shù)據(jù)通信基本上都是采用異步串行通信接口RS-232、RS-422、RS-485等,且通過(guò)相關(guān)通信協(xié)議將多個(gè)設(shè)備連接成底層傳輸與控制網(wǎng)絡(luò),但是網(wǎng)絡(luò)的覆蓋面積很?。?]。為使這些設(shè)備具備遠(yuǎn)程傳輸、擴(kuò)大底層網(wǎng)絡(luò)的覆蓋面積,需要應(yīng)用串口服務(wù)器(Serial Device Server,簡(jiǎn)稱SDS)。串口服務(wù)器可以實(shí)現(xiàn)串行數(shù)據(jù)與以太網(wǎng)數(shù)據(jù)的相互轉(zhuǎn)換,從而將串行設(shè)備控制網(wǎng)絡(luò)與信息網(wǎng)絡(luò)連接起來(lái)。SDS可以把分散的串行設(shè)備、主機(jī)等通過(guò)網(wǎng)絡(luò)集中管理,可以很大程度地降低系統(tǒng)復(fù)雜性和提高系統(tǒng)的可擴(kuò)展性[2]。目前市場(chǎng)上現(xiàn)有的各種SDS都是單串口對(duì)單網(wǎng)口的構(gòu)造,如果要支持多總線,則必須使用多個(gè)單總線型SDS或者使用帶有多串口、多網(wǎng)口的多總線型SDS。這樣帶來(lái)的問(wèn)題是:成本增加、系統(tǒng)設(shè)計(jì)復(fù)雜、設(shè)備資源利用率不高,故此本文提出一種基于優(yōu)先級(jí)排隊(duì)算法的改進(jìn)型串口服務(wù)器(Modified Serial Device Server,簡(jiǎn)稱MSDS)。
串口服務(wù)器將分散的串口設(shè)備通過(guò)局域網(wǎng)或互聯(lián)網(wǎng)集中管理,增強(qiáng)了系統(tǒng)的可擴(kuò)展性和降低了系統(tǒng)的維護(hù)難度,只需每條總線連接到對(duì)應(yīng)的串口服務(wù)器,控制系統(tǒng)只需圍繞SPS進(jìn)行開(kāi)發(fā),可以有效減少工作量。
本文設(shè)計(jì)的改進(jìn)型串口服務(wù)器采用嵌入式單片機(jī)S3C6410和以太網(wǎng)卡DM9000搭建硬件平臺(tái),充分利用單片機(jī)的多個(gè)UART、嵌入式操作系統(tǒng)的多線程和多隊(duì)列緩沖將接收到的多個(gè)串口數(shù)據(jù)排隊(duì),使用優(yōu)先級(jí)排隊(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對(duì)應(yīng)MSDS的三個(gè)串口,UART_1~ UART_3對(duì)應(yīng)嵌入式單片機(jī)的三個(gè)異步收發(fā)器,TransverterThrea_1~TransverterThrea_3對(duì)應(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ū)動(dòng)不同。
圖1 MSDS工作原理
M S D S軟件結(jié)構(gòu)如圖2所示,運(yùn)行協(xié)議轉(zhuǎn)換用戶程序后產(chǎn)生線程TransverterThread1~TransverterThread3,這三個(gè)線程根據(jù)數(shù)據(jù)流向通過(guò)系統(tǒng)調(diào)用接口分別調(diào)用對(duì)應(yīng)的設(shè)備驅(qū)動(dòng),如以太網(wǎng)轉(zhuǎn)串口驅(qū)動(dòng)和串口轉(zhuǎn)以太網(wǎng)驅(qū)動(dòng),這兩個(gè)驅(qū)動(dòng)編寫(xiě)后可以直接編譯到內(nèi)核或通過(guò)命令安裝的方式添加到內(nèi)核。TransverterThread線程的產(chǎn)生的數(shù)量與MSDS設(shè)計(jì)的規(guī)模有關(guān),由于本文改進(jìn)方案使用三條串行總線,所以產(chǎn)生3條TransverterThread線程。
圖2 MSDS軟件結(jié)構(gòu)
由于MSDS是多串口對(duì)單網(wǎng)口的結(jié)構(gòu),存在共享資源,需通過(guò)合理的調(diào)度,才能使MSDS正常地接收和發(fā)送數(shù)據(jù)[3]??紤]使用串口服務(wù)器組網(wǎng)的底層設(shè)備大多用在工業(yè)生產(chǎn)、安防等的重要場(chǎng)合,而一些對(duì)于生產(chǎn)安全和主要指標(biāo)的參數(shù),必須優(yōu)先送達(dá)控制中心[5],從這個(gè)角度本文選擇基于優(yōu)先級(jí)排隊(duì)算法處理底層設(shè)備到以太網(wǎng)之間數(shù)據(jù)的流通。
優(yōu)先級(jí)排隊(duì)算法(簡(jiǎn)稱PQ算法)是按照優(yōu)先規(guī)則為隊(duì)列服務(wù)的,規(guī)定從具有最高優(yōu)先級(jí)的非空隊(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)先級(jí)高低分為四級(jí),而在優(yōu)先級(jí)缺省的情況下數(shù)據(jù)流入正常隊(duì)列。
PQ算法的原理如圖3所示,其中:1高優(yōu)先級(jí)數(shù)據(jù),在調(diào)度分類時(shí)進(jìn)入了高優(yōu)先級(jí)隊(duì)列,依此類推,2、3、4號(hào)分組在調(diào)度時(shí)分別進(jìn)入為中優(yōu)先級(jí)隊(duì)列、正常優(yōu)先級(jí)隊(duì)列以及低優(yōu)先級(jí)隊(duì)列。遵循先進(jìn)先出(FIFO)原則,由高到低依次處理四個(gè)優(yōu)先級(jí)隊(duì)列的數(shù)據(jù)[8]。
圖3 PQ算法原理圖
為驗(yàn)證串口服務(wù)器改進(jìn)方案的可行性,使用現(xiàn)成的嵌入式開(kāi)發(fā)板進(jìn)行二次開(kāi)發(fā)的方式實(shí)現(xiàn)MSDS,而無(wú)須從頭到尾設(shè)計(jì)硬件電路。采用的嵌入式開(kāi)發(fā)板是國(guó)嵌QK6410,其處理器是三星公司32位RISC處理器S3C6410,有4個(gè)UART和1個(gè)網(wǎng)口,所以該開(kāi)發(fā)板可二次開(kāi)發(fā)為3串口對(duì)單網(wǎng)口的MSDS,如圖4所示,只需使用QK6410核心板、DM9000以太網(wǎng)卡和三個(gè)串口就足以滿足MSDS的硬件需要。
圖4 使用QK6410核心板擴(kuò)展串口的MSDS
國(guó)嵌QK6410開(kāi)發(fā)板支持ARM-Linux2.6操作系統(tǒng),Linux2.6內(nèi)核支持多線程和具有豐富的網(wǎng)絡(luò)協(xié)議棧。使用國(guó)嵌提供的Linux2.6內(nèi)核可直接燒寫(xiě)到QK6410的Flash中,而且該內(nèi)核提供了串口驅(qū)動(dòng)和DM9000以太網(wǎng)卡驅(qū)動(dòng)。MSDS軟件的開(kāi)發(fā)流程為:
(1)配置和編譯ARM_linux 2.6內(nèi)核,配置和編譯過(guò)程中,取消不需要的驅(qū)動(dòng);
(2)構(gòu)建應(yīng)用于ARM-linux的根文件系統(tǒng);
(3)將啟動(dòng)引導(dǎo)程序Uboot移植到的MSDS板子上;
(4)在linux主機(jī)上開(kāi)啟tftp和nfs服務(wù),利用tftp服務(wù)可將ARM-linux內(nèi)核映下載到MSDS板的內(nèi)存中,ARM-linux的根文件系統(tǒng)通過(guò)NFS服務(wù)掛載到linux主機(jī),使開(kāi)發(fā)過(guò)程得到了簡(jiǎn)化;
(5)編寫(xiě)以太網(wǎng)轉(zhuǎn)RS232和RS232轉(zhuǎn)以太網(wǎng)的設(shè)備驅(qū)動(dòng)程序,以加載的方式,把它們放到ARM-linux內(nèi)核中;
(6)編寫(xiě)協(xié)議轉(zhuǎn)換應(yīng)用程序,通過(guò)系統(tǒng)調(diào)用接口調(diào)用驅(qū)動(dòng)程序。
從以上的開(kāi)發(fā)流程可以看出:編寫(xiě)以太網(wǎng)轉(zhuǎn)RS232和RS232轉(zhuǎn)以太網(wǎng)驅(qū)動(dòng)程序和協(xié)議轉(zhuǎn)換應(yīng)用程序是實(shí)現(xiàn)MSDS軟件功能的主要步驟。因?yàn)閲?guó)嵌提供的Linux2.6內(nèi)核已經(jīng)實(shí)現(xiàn)了串口驅(qū)動(dòng)和DM9000以太網(wǎng)卡驅(qū)動(dòng),所以實(shí)現(xiàn)以太網(wǎng)轉(zhuǎn)RS232 和RS232轉(zhuǎn)以太網(wǎng)驅(qū)動(dòng)程序相對(duì)簡(jiǎn)單,定義設(shè)備操作時(shí)只需結(jié)合串口驅(qū)動(dòng)和DM9000以太網(wǎng)卡驅(qū)動(dòng),如圖5所示。自定義Dev結(jié)構(gòu)體可作為串口數(shù)據(jù)與以太網(wǎng)數(shù)據(jù)轉(zhuǎn)換時(shí)過(guò)渡數(shù)據(jù),其結(jié)構(gòu)如表1所示。
圖5 接口轉(zhuǎn)換驅(qū)動(dòng)
表1 Dev結(jié)構(gòu)體
對(duì)于用戶,直接接觸到的是協(xié)議轉(zhuǎn)換用戶程序,在該程序中,首先初始化MSDS的運(yùn)行參數(shù),然后建立線程TransverterThread1~TransverterThread3,在TransverterThread線程中主要通過(guò)調(diào)用接口轉(zhuǎn)換驅(qū)動(dòng)實(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ì)成三串口對(duì)單網(wǎng)口的MSDS。使用三塊51單片機(jī)開(kāi)發(fā)板(設(shè)備A、B、C),作為下位機(jī)設(shè)備,實(shí)驗(yàn)組網(wǎng)如圖7所示。通過(guò)組網(wǎng)對(duì)比發(fā)現(xiàn),單MSDS模式的網(wǎng)絡(luò)連接明顯比多SDS模式要簡(jiǎn)潔,系統(tǒng)的可維護(hù)加強(qiáng)。單MSDS模式,開(kāi)發(fā)工作只需圍繞一個(gè)MSDS展開(kāi),極大地減小了設(shè)計(jì)的工作量;而多SDS模式,要同時(shí)設(shè)計(jì)多個(gè)SDS的收發(fā)過(guò)程。
每塊設(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)性能可通過(guò)數(shù)據(jù)傳輸?shù)牧髁壳€進(jìn)行分析,兩種模式下數(shù)據(jù)傳輸流量的對(duì)比如圖8所示。
圖7 組網(wǎng)實(shí)驗(yàn)
圖7 組網(wǎng)流量對(duì)比
兩種模式下傳輸1024*3個(gè)字節(jié)的數(shù)據(jù),所用的時(shí)間相近,而且兩條曲線有非常高的擬合度,說(shuō)明基于優(yōu)先級(jí)排隊(duì)算法在數(shù)據(jù)傳輸過(guò)程中發(fā)揮了作用。單MSDS模式在傳輸?shù)倪^(guò)程中,流量總會(huì)稍微落后于多SDS模式,這是要是受限于硬件和線程處理速度,但能在節(jié)約成本的前提下能滿足傳輸需求。
通過(guò)組網(wǎng)對(duì)比實(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)先級(jí)排隊(duì)算法在數(shù)據(jù)處理傳送環(huán)節(jié)發(fā)揮了作用,在軟件上彌補(bǔ)了硬件的不足。單MSDS模式設(shè)計(jì)的工作量顯著減小。以嵌入式單片機(jī)S3C6410和以太網(wǎng)卡DM9000搭建硬件平臺(tái),充分利用單片機(jī)的多個(gè)UART、嵌入式操作系統(tǒng)的多線程和多隊(duì)列緩沖將接收到的多個(gè)串口數(shù)據(jù)排隊(duì),利用優(yōu)先級(jí)排隊(duì)算法進(jìn)行數(shù)據(jù)處理的串口服務(wù)器改進(jìn)方案,可以有效的降低成本、簡(jiǎ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]閭軍, 成愛(ài)國(guó). 一種低成本串口服務(wù)器的設(shè)計(jì)[J]. 電子設(shè)計(jì)工程, 2014(14):190-192.
[5]王海勇. 基于ARM9的嵌入式多串口服務(wù)器設(shè)計(jì)[J]. 化工自動(dòng)化及儀表, 2013, 40(3):372-376.
[6]羅寧, 劉峰. 基于優(yōu)先級(jí)隊(duì)列的多約束無(wú)線鏈路資源調(diào)度算法[J]. 指揮控制與仿真, 2012(6):55-59.
[7]范珊珊, 李石君. 基于優(yōu)先級(jí)隊(duì)列的分布式多主題爬蟲(chóng)[J]. 計(jì)算機(jī)工程與設(shè)計(jì), 2015(6):1630-1636.
[8]蔣溢, 聶路雨. 基于動(dòng)態(tài)權(quán)值優(yōu)先級(jí)隊(duì)列的移動(dòng)消息推送策略[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