• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > EMC2的硬件抽象層原理與實現(xiàn)

    EMC2的硬件抽象層原理與實現(xiàn)

    作者: 時間:2009-12-28 來源:網(wǎng)絡(luò) 收藏

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

    本文引用地址:http://www.czjhyjcfj.com/article/152181.htm


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


    7 HAL在ClassicLadder中的調(diào)用
    以從DAC輸出5 V為例,將classicladder的一個名為“classicladder.0.s320ut-00”的有符號32位整型Pin賦值為5。該值經(jīng)過HAL中的一個類型轉(zhuǎn)換Component“s32tofloat”變?yōu)楦↑c(diǎn)數(shù),再連接到hal_CNC中的DAC單元的引腳“CNC.DAC.0.value”,便在實際電路板的DAC輸出端輸出5 V的電壓。引腳連接如表1所列。

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

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


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

    linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

    上一頁 1 2 3 下一頁

    評論


    相關(guān)推薦

    技術(shù)專區(qū)

    關(guān)閉
    主站蜘蛛池模板: 涞水县| 安义县| 铜梁县| 武鸣县| 仪征市| 香港| 安岳县| 乌拉特后旗| 阿拉善右旗| 万年县| 沙湾县| 金平| 饶阳县| 吴堡县| 阿拉尔市| 定西市| 连平县| 聊城市| 铁岭市| 嘉鱼县| 长治县| 循化| 泰来县| 道孚县| 遂宁市| 甘德县| 高青县| 宣汉县| 黄陵县| 大关县| 荔浦县| 肇庆市| 诸城市| 河北省| 堆龙德庆县| 简阳市| 涪陵区| 长宁区| 平江县| 五河县| 罗山县|