基于μC/OS-II嵌入式操作系統(tǒng)的TCSC實(shí)驗(yàn)控制器前置
晶閘管觸發(fā)電路
觸發(fā)電路共3 組分別接A, B, C三相,如圖3 所示,兩個(gè)74LS04反向門用來增加驅(qū)動(dòng)能力,輸入端接44B0X的通用IO 口GPE4-6引腳。脈沖變壓器N1 和N2一方面?zhèn)鬟f觸發(fā)脈沖,另一方面對強(qiáng)弱電之間起到很好的隔離作用。CPU 發(fā)出觸發(fā)脈沖信號之后,兩個(gè)反向可控硅的觸發(fā)端會同時(shí)有觸發(fā)信號,但由于某一時(shí)刻加在兩個(gè)可控硅上的電壓只有一個(gè)滿足導(dǎo)通條件,故只有一個(gè)可控硅會導(dǎo)通。
軟件設(shè)計(jì)
前置單元的軟件要完成和上位機(jī)通訊、AD 采樣和晶閘管觸發(fā)3項(xiàng)功能。 其中AD采樣速率很高、晶閘管觸發(fā)實(shí)時(shí)性很強(qiáng),所以這兩項(xiàng)功能必須采用硬件定時(shí)器來保證其實(shí)時(shí)性,因此設(shè)計(jì)使用中斷服務(wù)程序( Interrup t Service Routine, ISR ) 來完成這兩項(xiàng)功能。USB驅(qū)動(dòng)程序由開發(fā)板附帶,通訊的功能主要通過μC /OS-Ⅱ中的任務(wù)來完成(當(dāng)然, USB 中斷處理也是必不可少的)。USB 任務(wù)和各ISR 之間的通訊通過μC /OS-Ⅱ的同步機(jī)制(信號量、消息隊(duì)列)和全局變量來完成。 所有軟件均是在ARM公司自己的開發(fā)環(huán)境ADS下實(shí)現(xiàn)的,ADS1。2有自己的C, C + +語言編譯器及庫文件,有GU I界面的調(diào)試器AXD和命令行界面的調(diào)試器armsd以及GU I界面的編輯器Code WarriorIDE,這為開發(fā)人員提供了極大的便利。 調(diào)試工具用的是JTAG仿真器, JTAG仿真器通過JTAG邊界掃描口與arm CPU核通信,屬于完全非插入式(即不使用片上資源)調(diào)試,它無需目標(biāo)存儲器,不占用目標(biāo)系統(tǒng)的任何端口,是目前采用最多的一種調(diào)試方式。
嵌入式實(shí)時(shí)操作系統(tǒng)μC /OS-II介紹
對于復(fù)雜的應(yīng)用,直接在裸機(jī)上開發(fā)運(yùn)行的前后臺系統(tǒng)開發(fā)、維護(hù)和擴(kuò)展都很困難,嵌入式操作系統(tǒng)應(yīng)運(yùn)而生,其最大的特點(diǎn)就是處理多任務(wù),而且在工控領(lǐng)域大多實(shí)時(shí)性要求較強(qiáng),而μC /OS-II迎合了這些特點(diǎn)。μC /OS-II支持64個(gè)任務(wù),每個(gè)任務(wù)的優(yōu)先級必須是不同的,調(diào)度算法總是讓處于就緒狀態(tài)的最高優(yōu)先級任務(wù)先執(zhí)行, 并提供了信號量( Semaphore) 、郵箱(Mailbox)和消息隊(duì)列(Message Queue)等多種通訊同步原語。每個(gè)任務(wù)都處在以下5種狀態(tài)之一的狀態(tài)下,這5種狀態(tài)是休眠態(tài)(Dormant) ,就緒態(tài)(Ready) 、運(yùn)行態(tài)(Running) 、掛起態(tài)(Waiting)和被中斷態(tài)( Interrup ted)。μC /OS-II中全部系統(tǒng)調(diào)用的執(zhí)行時(shí)間是可確定,其系統(tǒng)調(diào)用的執(zhí)行時(shí)間不依賴于應(yīng)用任務(wù)的多少,這也是其實(shí)時(shí)性的表現(xiàn)。
中斷服務(wù)程序( ISR)的設(shè)計(jì)
AD采樣和晶閘管觸發(fā)這兩項(xiàng)功能由中斷服務(wù)程序( ISR)來完成。根據(jù)μC /OS-Ⅱ要求, ISR開始時(shí)需調(diào)用OSIntEnter ( )函數(shù)通知μC /OS-Ⅱ系統(tǒng)進(jìn)入了ISR,ISR結(jié)束時(shí)需調(diào)用OSIntExit ( )函數(shù)通知μC /OS-Ⅱ進(jìn)行進(jìn)程調(diào)度。
AD采樣模塊有3 個(gè)ISR,分別是: 定時(shí)器4 ISR(產(chǎn)生周期性的采樣保持信號) ,定時(shí)器5 ISR (產(chǎn)生16μs的延遲,以符合S3C44B0X的多路選擇器對切換時(shí)間的要求) ,AD ISR (讀取AD采樣結(jié)果,并進(jìn)行相應(yīng)的操作)。系統(tǒng)必須在兩次Timer4中斷之間完成6次AD采樣工作。晶閘管觸發(fā)模塊有3組、每組2個(gè)ISR。每組的2個(gè)ISR分別為一個(gè)過零檢測ISR和一個(gè)定時(shí)器ISR,共同控制一相的晶閘管觸發(fā)。
μC /OS-II任務(wù)設(shè)計(jì)
前置單元通過PD IUSBD12 的Endpoint1 ( PacketSize = 16 B )接受上位機(jī)的命令,返回命令的執(zhí)行狀態(tài),通過PD IUSBD12的Endpoint2 ( Packet Size = 64 B)返回AD 采樣的結(jié)果。 這通過兩個(gè)函數(shù)TaskUsbEp1RxDone和TaskUsbEp2SendData 可以實(shí)現(xiàn), 同時(shí)通過TaskUsbSetupPacket函數(shù)來處理主機(jī)發(fā)來的請求。我們設(shè)置PD IUSBD12 的Endpoint1 ( Generic Endpoint) 工作在Interrup t 模式, Endpoint2 (Main Endpoint)工作在Bulk模式,則:
1) TaskUsbEp1RxDone
TaskUsbEp1RxDone為前置機(jī)接受上位機(jī)采樣或置觸發(fā)角的任務(wù),其工作流程下所示。
先用OSSemPend ( )等待上位機(jī)發(fā)送命令,若上位機(jī)發(fā)來的COMM_START_AD命令,則:
若TOTAL _ SAMPLE _ TIMES! = 0, 則通過Endpoint1返回錯(cuò)誤信息給上位機(jī),否則置AD_BUFF_P =0, TOTAL _ SAMPLE _ TIMES =所需采樣的周期數(shù)×100,開啟Timer4 (采樣保持定時(shí)器) ,通過Endpoint1返回成功信息給上位機(jī)。
若上位機(jī)發(fā)來的是COMM _SET_ANGLE命令則設(shè)置相應(yīng)的X_ANGLE變量,能過Endpoint1返回成功信息給上位機(jī)。
2) TaskUsbEp2SendData
TaskUsbEp2SendData任務(wù)的工作次序?yàn)橄鹊却鼳D ISR發(fā)送要求傳送數(shù)據(jù)的消息,消息發(fā)出后,在等待上次USB傳送結(jié)束,再通過Endpoint2發(fā)送緩沖區(qū)中的數(shù)據(jù)。
3) TaskUsbSetupPacket
TaskUsbSetupPacket任務(wù)工作次序?yàn)橄鹊却齋etupPacket事件,事件發(fā)生后再調(diào)用UsbControlHandler( )函數(shù)處理主機(jī)的請求。
軟件整體結(jié)構(gòu)
整體軟件結(jié)構(gòu)框圖如圖4所示(圖中矩形框代表中斷服務(wù)程序ISR,橢圓代表μC /OS-Ⅱ任務(wù)虛線框代表μC /OS-Ⅱ信號量或消息隊(duì)列)。
結(jié) 論
實(shí)驗(yàn)結(jié)果表明,實(shí)際系統(tǒng)數(shù)據(jù)采集速度與設(shè)計(jì)時(shí)預(yù)期的結(jié)果基本一致,印證了現(xiàn)階段結(jié)合數(shù)據(jù)采集、AD轉(zhuǎn)換、數(shù)據(jù)傳輸及其它功能模塊如過零檢測、觸發(fā)可控硅等諸多任務(wù)于一體的復(fù)雜系統(tǒng),必須有功能強(qiáng)大的硬件資源平臺做支撐;在多任務(wù)、實(shí)時(shí)性較強(qiáng)的場合,嵌入式實(shí)時(shí)操作系統(tǒng)是必不可少的;在數(shù)據(jù)傳輸方面,USB在速度方面的優(yōu)勢比傳統(tǒng)的RS232更能滿足TCSC實(shí)時(shí)控制的要求。
評論