新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于μC/OS-II嵌入式操作系統的TCSC實驗控制器前置

        基于μC/OS-II嵌入式操作系統的TCSC實驗控制器前置

        作者: 時間:2016-10-08 來源:網絡 收藏

        晶閘管觸發電路

        觸發電路共3 組分別接A, B, C三相,如圖3 所示,兩個74LS04反向門用來增加驅動能力,輸入端接44B0X的通用IO 口GPE4-6引腳。脈沖變壓器N1 和N2一方面傳遞觸發脈沖,另一方面對強弱電之間起到很好的隔離作用。CPU 發出觸發脈沖信號之后,兩個反向可控硅的觸發端會同時有觸發信號,但由于某一時刻加在兩個可控硅上的電壓只有一個滿足導通條件,故只有一個可控硅會導通。

        軟件設計

        前置單元的軟件要完成和上位機通訊、AD 采樣和晶閘管觸發3項功能。 其中AD采樣速率很高、晶閘管觸發實時性很強,所以這兩項功能必須采用硬件定時器來保證其實時性,因此設計使用中斷服務程序( Interrup t Service Routine, ISR ) 來完成這兩項功能。USB驅動程序由開發板附帶,通訊的功能主要通過μC /OS-Ⅱ中的任務來完成(當然, USB 中斷處理也是必不可少的)。USB 任務和各ISR 之間的通訊通過μC /OS-Ⅱ的同步機制(信號量、消息隊列)和全局變量來完成。 所有軟件均是在ARM公司自己的開發環境ADS下實現的,ADS1。2有自己的C, C + +語言編譯器及庫文件,有GU I界面的調試器AXD和命令行界面的調試器armsd以及GU I界面的編輯器Code WarriorIDE,這為開發人員提供了極大的便利。 調試工具用的是JTAG仿真器, JTAG仿真器通過JTAG邊界掃描口與arm CPU核通信,屬于完全非插入式(即不使用片上資源)調試,它無需目標存儲器,不占用目標系統的任何端口,是目前采用最多的一種調試方式。

        嵌入式實時操作系統μC /OS-II介紹

        對于復雜的應用,直接在裸機上開發運行的前后臺系統開發、維護和擴展都很困難,嵌入式操作系統應運而生,其最大的特點就是處理多任務,而且在工控領域大多實時性要求較強,而μC /OS-II迎合了這些特點。μC /OS-II支持64個任務,每個任務的優先級必須是不同的,調度算法總是讓處于就緒狀態的最高優先級任務先執行, 并提供了信號量( Semaphore) 、郵箱(Mailbox)和消息隊列(Message Queue)等多種通訊同步原語。每個任務都處在以下5種狀態之一的狀態下,這5種狀態是休眠態(Dormant) ,就緒態(Ready) 、運行態(Running) 、掛起態(Waiting)和被中斷態( Interrup ted)。μC /OS-II中全部系統調用的執行時間是可確定,其系統調用的執行時間不依賴于應用任務的多少,這也是其實時性的表現。

        中斷服務程序( ISR)的設計

        AD采樣和晶閘管觸發這兩項功能由中斷服務程序( ISR)來完成。根據μC /OS-Ⅱ要求, ISR開始時需調用OSIntEnter ( )函數通知μC /OS-Ⅱ系統進入了ISR,ISR結束時需調用OSIntExit ( )函數通知μC /OS-Ⅱ進行進程調度。

        AD采樣模塊有3 個ISR,分別是: 定時器4 ISR(產生周期性的采樣保持信號) ,定時器5 ISR (產生16μs的延遲,以符合S3C44B0X的多路選擇器對切換時間的要求) ,AD ISR (讀取AD采樣結果,并進行相應的操作)。系統必須在兩次Timer4中斷之間完成6次AD采樣工作。晶閘管觸發模塊有3組、每組2個ISR。每組的2個ISR分別為一個過零檢測ISR和一個定時器ISR,共同控制一相的晶閘管觸發。

        μC /OS-II任務設計

        前置單元通過PD IUSBD12 的Endpoint1 ( PacketSize = 16 B )接受上位機的命令,返回命令的執行狀態,通過PD IUSBD12的Endpoint2 ( Packet Size = 64 B)返回AD 采樣的結果。 這通過兩個函數TaskUsbEp1RxDone和TaskUsbEp2SendData 可以實現, 同時通過TaskUsbSetupPacket函數來處理主機發來的請求。我們設置PD IUSBD12 的Endpoint1 ( Generic Endpoint) 工作在Interrup t 模式, Endpoint2 (Main Endpoint)工作在Bulk模式,則:

        1) TaskUsbEp1RxDone

        TaskUsbEp1RxDone為前置機接受上位機采樣或置觸發角的任務,其工作流程下所示。

        先用OSSemPend ( )等待上位機發送命令,若上位機發來的COMM_START_AD命令,則:

        若TOTAL _ SAMPLE _ TIMES! = 0, 則通過Endpoint1返回錯誤信息給上位機,否則置AD_BUFF_P =0, TOTAL _ SAMPLE _ TIMES =所需采樣的周期數×100,開啟Timer4 (采樣保持定時器) ,通過Endpoint1返回成功信息給上位機。

        若上位機發來的是COMM _SET_ANGLE命令則設置相應的X_ANGLE變量,能過Endpoint1返回成功信息給上位機。

        2) TaskUsbEp2SendData

        TaskUsbEp2SendData任務的工作次序為先等待AD ISR發送要求傳送數據的消息,消息發出后,在等待上次USB傳送結束,再通過Endpoint2發送緩沖區中的數據。

        3) TaskUsbSetupPacket

        TaskUsbSetupPacket任務工作次序為先等待SetupPacket事件,事件發生后再調用UsbControlHandler( )函數處理主機的請求。

        軟件整體結構

        整體軟件結構框圖如圖4所示(圖中矩形框代表中斷服務程序ISR,橢圓代表μC /OS-Ⅱ任務虛線框代表μC /OS-Ⅱ信號量或消息隊列)。

        結 論

        實驗結果表明,實際系統數據采集速度與設計時預期的結果基本一致,印證了現階段結合數據采集、AD轉換、數據傳輸及其它功能模塊如過零檢測、觸發可控硅等諸多任務于一體的復雜系統,必須有功能強大的硬件資源平臺做支撐;在多任務、實時性較強的場合,嵌入式實時操作系統是必不可少的;在數據傳輸方面,USB在速度方面的優勢比傳統的RS232更能滿足TCSC實時控制的要求。


        上一頁 1 2 下一頁

        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 苍溪县| 合肥市| 那坡县| 阿尔山市| 封开县| 淮滨县| 泰兴市| 托克逊县| 咸丰县| 安多县| 兴化市| 乐业县| 清镇市| 馆陶县| 平顺县| 平阳县| 兴化市| 常山县| 泰兴市| 额济纳旗| 文成县| 凌源市| 正宁县| 如皋市| 双城市| 山阴县| 东兴市| 舒城县| 曲麻莱县| 许昌市| 榆中县| 海宁市| 泾源县| 林甸县| 许昌县| 墨玉县| 海原县| 运城市| 南丰县| 阳东县| 彭州市|