新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 實現EMC2的硬件抽象層

        實現EMC2的硬件抽象層

        作者: 時間:2011-11-21 來源:網絡 收藏
        依照上述做法將所有功能模塊全部導出到HAL后,在rtapi_app_main()的最后調用hal_ready(comp_id),表明該Component已經初始化完畢,可以開始使用了。
        在關閉Component退出時,系統會自動調用hal_CNC.C中編寫的rtapi_app_exit()。其如下:
        void rtapi_app_exit(void){hal_exit(comp_id);)
        hal_exit()關閉并釋放HAL及RTAPI使用到的系統資源,使這些資源可被重新使用。
        自帶的工具comp對源文件hal_CNC.c和hal_CNC.h進行編譯,即可得到名為hal_CNC的Compo-nent。該組件自動放入的模塊庫中,隨時可被其他軟件模塊調用。

        本文引用地址:http://www.104case.com/article/150042.htm


        6 HAL的使用
        以DAC為例,在Linux下的命令行輸入“halrun”進入的HAL運行界面,輸入:
        loadrt threads namel=thread periodl=1000000
        創建名為“thread”的線程,該線程執行周期為1 ms。
        執行:
        loadrt hal_CNC
        將所編寫的系統組件調入,執行:
        addf CNC.DAC.write thread
        將DAC的寫函數加入到前面創建的線程thread,使之以與thread相同的執行周期被調用。然后使可通過控制DAC的引腳來輸出相應的電壓。如:
        setp CNC.DAC.0.value 1
        該語句將使電路板上的DAC輸出端子輸出1 V的電壓。
        用類似的方法將其他軟件模塊通過與HAL的引腳連接,便了其他軟件對HAL的調用。


        7 HAL在ClassicLadder中的調用
        以從DAC輸出5 V為例,將classicladder的一個名為“classicladder.0.s320ut-00”的有符號32位整型Pin賦值為5。該值經過HAL中的一個類型轉換Component“s32tofloat”變為浮點數,再連接到hal_CNC中的DAC單元的引腳“CNC.DAC.0.value”,便在實際電路板的DAC輸出端輸出5 V的電壓。引腳連接如表1所列。

        其中“→”和“←”表示引腳之間的連接,用HAL中的Sig-nal
        在軟PLC中設置變量W10的值為5,則在DA輸出端子引腳上用萬用表測到5 V的電壓。軟PLC中的操作輸出如圖3所示。

        其中4個窗口表示DAC的4個通道,分別令DAC輸出5 V、2 V、3 V、4 V的電壓。


        8 結 論
        實踐證明,HAL的引入可極大提高嵌入式軟件實現的硬件無關性。從軟件的角度來看,其面向的硬件具有同質的接口,對硬件的操作具有相似的方法與架構,極大地簡化了軟件對硬件的控制,方便了同類軟件在不同硬件平臺間的移植。這就為軟硬件同步設計、分工協作奠定了良好的基礎。該架構已成功應用在文中所述的鋰電池卷繞恒張力控制器中,取得了良好效果。


        上一頁 1 2 3 下一頁

        關鍵詞: 抽象 硬件 EMC2 實現

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 枞阳县| 姚安县| 连平县| 高尔夫| 银川市| 合山市| 通州区| 宜丰县| 吴堡县| 河北省| 乌兰浩特市| 吉水县| 崇阳县| 吉木乃县| 富阳市| 长垣县| 莒南县| 虞城县| 衡阳市| 新民市| 杭锦旗| 门源| 城固县| 象州县| 磐石市| 遂宁市| 靖江市| 云林县| 巴南区| 柳林县| 陕西省| 平顶山市| 吉木萨尔县| 宜州市| 江源县| 庆元县| 文成县| 荆州市| 龙南县| 内黄县| 临清市|