摘 要: 針對目前高校測控實驗儀功能單一,對測控系統(tǒng)的可靠性,、實時性等不能很好地模擬等問題,,研究和設(shè)計了一套配電測控模擬實驗臺,由上下位機系統(tǒng)構(gòu)成,。下位機以工控機為核心,,配裝簡化的多任務(wù)實時操作系統(tǒng),,能夠?qū)?6路開關(guān)量、64路模擬量及多個鍵盤任務(wù)進(jìn)行實時檢測和控制,,并能夠和上位機進(jìn)行定時通信,,將收集數(shù)據(jù)及時傳送給上位機,進(jìn)行匯總,、分析和報表打印等,。重點分析了下位機的實時多任務(wù)之間的關(guān)系,調(diào)度過程原理及簡化的多任務(wù)實時操作系統(tǒng)的設(shè)計,。
關(guān)鍵詞: 配電測控實驗臺,; 下位機系統(tǒng); 多任務(wù)實時操作系統(tǒng)
目前,,配電網(wǎng)絡(luò)自動化和工業(yè)測控技術(shù)發(fā)展迅速,,對系統(tǒng)的實時性、可靠性和多功能性要求也越來越高,。而高校測控專業(yè)實驗設(shè)備模塊單一,、功能簡單,遠(yuǎn)遠(yuǎn)落后于現(xiàn)代控制技術(shù)的發(fā)展,。針對高校測控專業(yè)實際需求,,研究和設(shè)計了一套分布式IPC(Industrial Personal Computer)工業(yè)配電測控系統(tǒng),由1臺上位機和8臺下位機構(gòu)成,。各下位機能夠根據(jù)需要對多路模擬量(如電壓,、電流、功率因素,、有功功率,、無功功率等)、開關(guān)量(如各出線開關(guān)分合閘狀態(tài),、補償電容器的狀態(tài)等)進(jìn)行檢測和控制,。上位機可以發(fā)出指令和任何一臺與之相連的下位機進(jìn)行通信,收集各下位機傳送來的模擬量和開關(guān)量信息,,進(jìn)行相關(guān)的分析,、匯總、報表生成等處理,,并對各下位機子系統(tǒng)進(jìn)行監(jiān)控和宏觀調(diào)度[1],。多任務(wù)調(diào)度管理是系統(tǒng)設(shè)計的重點和難點,本文將重點敘述其調(diào)度管理過程[2],。
1 下位機系統(tǒng)功能概述
下位機主要模擬配電測控系統(tǒng)運行,,可實現(xiàn)多路模擬量、開關(guān)量的采集,、存儲,、顯示以及與上位機的通信,。同時,為了豐富以后實驗系統(tǒng)的教學(xué)和實驗內(nèi)容,,還特意增加了2個具有典型代表性的工業(yè)控制環(huán)節(jié):直流電動機子系統(tǒng)的控制和模擬的溫度測控子系統(tǒng)(即步進(jìn)電機控制系統(tǒng)),。因此,下位機是一個較為復(fù)雜的測控子系統(tǒng),,普通的單片機功能簡單,,很難勝任,為此選用了控制功能強大的研華IPC-610工業(yè)控制計算機,,配裝了2塊PC-6313多功能模入/模出板卡[3],。每塊PC-6313板卡有24路開入/開出、32路單端模擬量輸入/16路雙端輸入,、3個定時器/計數(shù)器,、2路模擬量輸出,結(jié)構(gòu)緊湊,、功能齊全,,性價比高,配接相應(yīng)的傳感器和執(zhí)行機構(gòu)即可完成所有的功能,,下位機系統(tǒng)框圖如圖1所示,。IPC-610底板可擴展性強,有近20個ISA插槽和PCI插槽,,可隨時方便系統(tǒng)的升級,。
工業(yè)測控系統(tǒng)最重要的是穩(wěn)定性,DOS系統(tǒng)比Windows系統(tǒng)穩(wěn)定性強且占用內(nèi)存小,非常適應(yīng)工業(yè)系統(tǒng)需要,。為此,,本系統(tǒng)采用DOS操作系統(tǒng),編程語言采用C語言,。下位機模擬的是配電測控系統(tǒng)運行,,有多道任務(wù)程序,同時要求運行速度快,、穩(wěn)定性強,是一個復(fù)雜的多任務(wù)實時系統(tǒng),。多任務(wù)實時調(diào)度過程的分析和設(shè)計是下位機系統(tǒng)運行的關(guān)鍵,。
2 下位機系統(tǒng)實時多任務(wù)調(diào)度過程分析和設(shè)計
2.1 任務(wù)及其占用資源的關(guān)系
下位機配電測控系統(tǒng),共有19個任務(wù)程序和1個簡化的、初級的多任務(wù)實時操作系統(tǒng)MROS,構(gòu)成了一個多任務(wù)實時測控系統(tǒng)[4],。各個任務(wù)程序的名稱及其功能如下:
task_0 ( ):0點制表任務(wù)程序,。
task_4 ( ):4點制表任務(wù)程序。
task_8 ( ):8點制表任務(wù)程序,。
task_12 ( ):12點制表任務(wù)程序,。
task_16 ( ):16點制表任務(wù)程序,。
task_20 ( ):20點制表任務(wù)程序。
getad ( ):每2 s采集模擬量任務(wù)程序,。
task_s ( ):每2 ms采集開關(guān)量任務(wù)程序,。
stepping( ):每500 ms采集溫度測控子系統(tǒng)的溫度值,根據(jù)溫度偏差,,控制步進(jìn)電動機正/反轉(zhuǎn),。
motor( ):每250 ms采集1次直流電動機的轉(zhuǎn)速,控制直流電動機按設(shè)定值運行,。
pmotor( ):根據(jù)直流電動機的轉(zhuǎn)速,,繪制直流電動機的動態(tài)運行曲線。
mnxs( ):在屏幕上排列顯示各個模擬量的當(dāng)前值,。
kgxs( ):在屏幕上排列顯示各個開關(guān)量的當(dāng)前值,。
Subdl( ):在屏幕上繪制工廠配電系統(tǒng)的電氣主接線圖。
Kg( ):把采集的開關(guān)量填入電站的電氣主接線圖中,,完成開關(guān)量在圖中的動態(tài)顯示,。
tad( ):把采集的模擬量填入電站的電氣主接線圖中,完成模擬量在圖中的動態(tài)顯示,。
Stepmotor( ):步進(jìn)電動機升降速全過程控制,,動態(tài)繪制升降速全過程。
Slaver( ):從機和主機的通信任務(wù),。將本機的64路模擬量和16路開關(guān)量以及溫度測控子系統(tǒng)的數(shù)據(jù)上傳給上位機進(jìn)行顯示,。
Subtime( ):北京時間動態(tài)顯示。屏幕上各個畫面正上方中均有北京時間,。
quit( ):退出運行處理,,返回C集成開發(fā)環(huán)境。
19個任務(wù)要求占用硬件資源的關(guān)系十分復(fù)雜,,表述如下:所有任務(wù)均要求占用CPU,,而CPU只有1個;不同的任務(wù)要求占用不同的外設(shè)資源(例如對板卡的占用),多個任務(wù)可能要求占用同一外設(shè)(例如對CRT,、打印機的占用);各任務(wù)之間存在橫向聯(lián)系;多個任務(wù)在宏觀上的并發(fā)操作;多任務(wù)實時操作系統(tǒng)MROS的主要功能就是協(xié)調(diào)以上各種關(guān)系,,有效地管理分配各種資源[4]。
可以把MROS形象地比喻成一條“軟件總線”,,各個任務(wù)程序“掛”在上面,,形成一個“管控一體化運行軟件”。
2.2 多任務(wù)實時操作系統(tǒng)的簡化
標(biāo)準(zhǔn)的MROS一般包括CPU管理,、外設(shè)管理,、中斷管理、存儲器管理和文件管理等[5],占用內(nèi)存空間較大,,CPU的運行速度較慢,。下位機測控系統(tǒng)具有如下特點:
(1)對各量的監(jiān)測和控制,實際上是周期性地重復(fù)執(zhí)行各任務(wù)程序,。
(2)人機聯(lián)系任務(wù)雖然是隨機的,,但任務(wù)的內(nèi)容是固定的,操作人員只是通過鍵盤調(diào)用一些編制就緒的程序而不修改程序本身,。
(3)監(jiān)測對象固定,,主機和外設(shè)規(guī)模也是固定不變的。
對于這樣一個系統(tǒng),,若采用標(biāo)準(zhǔn)的MROS,,將占用較多內(nèi)存空間和CPU的運行時間,降低系統(tǒng)資源的利用率和系統(tǒng)的實時性,。因此,本系統(tǒng)采用了一種與硬件資源和測控對象相適應(yīng)的簡化的,、初級的MROS,保留了標(biāo)準(zhǔn)MROS的核心功能,。即CPU管理,、外設(shè)管理和中斷管理,其主要工作如下:
(1)任務(wù)調(diào)度
任務(wù)調(diào)度的主要職能,,一是根據(jù)任務(wù)調(diào)度算法分配CPU,,即實現(xiàn)某個時間或事件驅(qū)動的任務(wù)切換;二是從任務(wù)收回CPU,。
按照任務(wù)的優(yōu)先級是否可以動態(tài)地改變,,調(diào)度算法可以分為:靜態(tài)調(diào)度和動態(tài)調(diào)度。
按照調(diào)度過程是否允許采用搶先方式,,調(diào)度算法可以分為:搶先調(diào)度方式和非搶先調(diào)度方式,。非搶先調(diào)度方式在滿足高優(yōu)先級別任務(wù)的時限方面比搶先調(diào)度方式要差一些,但是它實現(xiàn)起來簡單,,時間確定性好,,并且避免了因為資源共享而引起的互斥,實際應(yīng)用較廣,。
本系統(tǒng)設(shè)計時,,按照多任務(wù)實時操作的基本原則來編寫任務(wù)程序,通過硬件配合,,可使每個任務(wù)都在幾十個微秒內(nèi)完成,。因此,可采用靜態(tài)調(diào)度方式設(shè)計圖1所示的IPC系統(tǒng),。但某些任務(wù)的優(yōu)先級別可以局部改變,;若采用非搶先調(diào)度方式,可把1個功能分解為若干個可以在1 μs到幾十微秒內(nèi)完成的程序段,,以改善實時性,。
(2)進(jìn)程控制
為了描述和控制進(jìn)程的運行,系統(tǒng)為每個進(jìn)程定義了一個數(shù)據(jù)結(jié)構(gòu)——進(jìn)程控制塊(PCB),。PCB主要包括:進(jìn)程標(biāo)識符,、進(jìn)程當(dāng)前狀態(tài)、進(jìn)程隊列指針,、程序開始地址,、進(jìn)程優(yōu)先級、CPU現(xiàn)場保護區(qū),、通信信息,、家族聯(lián)系、占有資源清單等,。系統(tǒng)將根據(jù)PCB感知進(jìn)程的存在,,PCB是進(jìn)程存在的唯一標(biāo)志。
為了簡化問題,,本系統(tǒng)按一定的原則編制每一個任務(wù)程序,,使得每一個任務(wù)程序都在規(guī)定的時間內(nèi)(1 ?滋s到幾十微秒)執(zhí)行完畢,即每一個任務(wù)程序在執(zhí)行完后才交還CPU的使用權(quán),,因此,,在本系統(tǒng)所設(shè)計的MROS中,就只使用PCB中的“進(jìn)程當(dāng)前狀態(tài)”這一個概念,。
(3) “tick”信號
“tick”信號是MROS在運行過程中需要的基本的,、最小的定時單位。在圖1所示的系統(tǒng)中,,“tick”由PC-6313板卡的定時/計數(shù)器8253產(chǎn)生,。當(dāng)系統(tǒng)初始化時,使PC-6313 1#板卡8253的 T2 OUT2每1 ms輸出1個脈沖,,把這個脈沖信號作為中斷請求信號加在IRQ3上,,每1次中斷即產(chǎn)生1個“tick”,在IRQ3的中斷服務(wù)程序進(jìn)行與時間相關(guān)的操作,。
2.3 多任務(wù)實時調(diào)度系統(tǒng)的設(shè)計原則
在單CPU系統(tǒng)中,,不可能有真正意義上的并行操作,所有任務(wù)只能遵循調(diào)度策略,,串行地占用CPU,,即:宏觀上在同一時段內(nèi)多個程序的同時執(zhí)行,而微觀上則是多個任務(wù)的交替執(zhí)行,。整個測控系統(tǒng)必須遵循的設(shè)計原則如下[6]:
(1)快速的任務(wù)調(diào)度和切換,。調(diào)度程序本身必須是低開銷,本系統(tǒng)編寫的實時調(diào)度程序,占用CPU的執(zhí)行時間小于1μs,。調(diào)度所需的“tick”是通過定時器/計數(shù)器模板上的8253產(chǎn)生的,,可以根據(jù)需求確定調(diào)度精度,從幾百微秒到若干毫秒,。
(2)在設(shè)計測控電路和編制各個實時任務(wù)程序時,,應(yīng)注意任何任務(wù)都不能加重CPU的負(fù)擔(dān),它只能在接收控制信號和調(diào)節(jié)命令后,,就脫離CPU的“關(guān)注”而獨立運行,,直到新的控制信號和調(diào)節(jié)命令到來后又在新的條件下“獨立”運行。
2.4 多任務(wù)實時調(diào)度的過程分析
圖2是任務(wù)調(diào)度的過程示意圖,。
圖2任務(wù)調(diào)度說明如下:
(1) 實時時鐘在0點,、4點、8點,、12點,、16點和20點時,分別把task_0( ),、task_4( ),、task_8( )、task_12( ),、task_16( )和task_20( )推入就緒隊列,。
(2) 實時時鐘每隔5 ms、500 ms,、2 s,分別把task_s( ),、stepping( )、getad( )推入就緒隊列,。
(3) a鍵,、s鍵、b鍵,、q鍵,,分別把mnxs( )、kgxs( ),、stepmoter( ),、quit( )推入就緒隊列。
(4) m鍵把允許標(biāo)志pmotorf1置1,,在motor( )任務(wù)執(zhí)行過程中,,如果發(fā)現(xiàn)pmotorf1=1,就把pmotor( )推入隊列,。
(5) t鍵和d鍵均把subd1( )推入就緒隊列,。在subd1( )的執(zhí)行過程中,如果發(fā)現(xiàn)是t鍵,,則把kg( )推入就緒隊列,;如果發(fā)現(xiàn)是d鍵,則把tad( )推入就緒隊列,。
(6) kg( )、tad( ),、mnxs( ),、kgxs( )在各自運行過程中,又把自己推入就緒隊列,,CPU不斷對它們提供運行機會,,在沒有其他按鍵操作的情況下,pmotorf1總是等于1,,即一直允許繪制直流電動機運行曲線,,每250 ms運行motor( )時,pmotor( )都可以被設(shè)置為就緒狀態(tài),。pmotor( )每運行1次,,就在屏幕上顯示1次直流電動機的當(dāng)前速度值。
(7) 下位機串行口中斷一直處于開放狀態(tài),,若主機要求和該下位機通信,則把slaver( )推入就緒狀態(tài),。Slaver( )運行時,,將指定的數(shù)據(jù)傳送給上位機。由于采用智能通信模塊,,下位機只需把指定的數(shù)據(jù)傳送給智能通信模塊即可,其后,,由通信模塊將數(shù)據(jù)傳送給主機,。串行通信的速度很快,,可滿足系統(tǒng)實時性的要求。
3 下位機軟件系統(tǒng)設(shè)計流程
下位機軟件系統(tǒng)結(jié)構(gòu)示意圖如圖3所示,。軟件系統(tǒng)由三大塊子系統(tǒng)構(gòu)成:圖3(a)為初始化及任務(wù)調(diào)度,是系統(tǒng)的管理層負(fù)責(zé)任務(wù)調(diào)度,;圖3(b)為任務(wù)程序集合,,它們在管理層的調(diào)度下實現(xiàn)各種功能;圖3(c)為中斷服務(wù)程序,是簡化MROS的組成部分,。可以據(jù)此畫出更詳細(xì)的軟件系統(tǒng)流程圖并編寫相應(yīng)的程序,。
本文介紹了一種分布式IPC配電測控實驗系統(tǒng)的多任務(wù)實時調(diào)度系統(tǒng)的設(shè)計,說明了在單CPU系統(tǒng)中,,多任務(wù)實時調(diào)度系統(tǒng)的設(shè)計原則,并據(jù)此設(shè)計了一個簡化的MROS,,能夠完成標(biāo)準(zhǔn)MROS的核心功能,即CPU管理,、外設(shè)管理和中斷管理,。下位機系統(tǒng)在該簡化的MROS調(diào)度管理下,,可以很好地完成各項任務(wù),,系統(tǒng)運行穩(wěn)定,調(diào)度精度可達(dá)毫秒級,。實驗系統(tǒng)較好地模擬了配電測控系統(tǒng)的調(diào)度,、運行和管理過程,,融合了工控機,、總線、接口技術(shù),、通信技術(shù)、控制技術(shù)等多方面的知識,,可以讓學(xué)生更具體地了解工控系統(tǒng)的組成,更真實地觸摸工控系統(tǒng)的工作原理,。該系統(tǒng)配備相應(yīng)的測量儀表和傳感器即可構(gòu)成一個實時性很強的配電測控系統(tǒng),。因此具有一定的理論價值和應(yīng)用價值。
參考文獻(xiàn)
[1] 陳曾漢,,劉明白,趙志強,等. 工業(yè)PC及測控技術(shù)[M].北京:機械工業(yè)出版社,,2004:271-298.
[2] 謝輝,陳曾漢.分布式IPC工業(yè)測控系統(tǒng)[J].儀表技術(shù)與傳感器, 2008,1(1):35-37.
[3] 北京中泰研創(chuàng)科技有限公司[EB/OL].PC-6313多功能模入模出接口卡技術(shù)說明書.http://www.ztic.com.cn/
upload/shuoming/Pc6313.doc,2006-06-28.
[4] 周航慈,,吳光文.基于嵌入式實時操作系統(tǒng)的程序設(shè)計技術(shù)[M].北京:國防工業(yè)出版社,2006:55-61.
[5] TANENBAUM A S. 操作系統(tǒng)設(shè)計與實現(xiàn)[M].陳渝,,等譯. 北京:電子工業(yè)出版社,2007:167-174.
[6] 王立剛.開放式混合實時系統(tǒng)中的調(diào)度方法研究[D]. 中國科學(xué)技術(shù)大學(xué),,2006:85-87.