• <blockquote id="fficu"><optgroup id="fficu"></optgroup></blockquote>

    <table id="fficu"></table>

    <sup id="fficu"></sup>
    <output id="fficu"></output>
    1. ABB
      關(guān)注中國自動(dòng)化產(chǎn)業(yè)發(fā)展的先行者!
      CAIAC 2025
      2025工業(yè)安全大會(huì )
      OICT公益講堂
      當前位置:首頁(yè) >> 案例 >> 案例首頁(yè)

      案例頻道

      利用熟悉的計算模型進(jìn)行設計
      • 企業(yè):美國國家儀器(NI)有限公司     領(lǐng)域:儀器儀表     行業(yè):石油天然氣    
      • 點(diǎn)擊數:1133     發(fā)布時(shí)間:2009-09-03 16:12:29
      • 分享到:

          概覽

          本文將概括了在LabVIEW中可用的幾種計算模型,以及何時(shí)使用這些模型的指南。

          引言

        在可執行代碼中實(shí)現一個(gè)算法的最有效方式是什么?當新的項目增加了工程設計的復雜度,而這一復雜度與最終實(shí)現所需的工程工作量之間的鴻溝擴大時(shí),該問(wèn)題變得與工程人員更為相關(guān)。加州大學(xué)伯克利分校利用“計算模型(MoC)”概念解答了這一問(wèn)題。我們將探究NI LabVIEW平臺所提供的一些不同MoC,以及開(kāi)發(fā)人員如何在不同的執行目標平臺(包括臺式機PC、實(shí)時(shí)系統、嵌入式微處理器和現場(chǎng)可編程門(mén)陣列(FPGA)上使用這些模型。

          數據流

        LabVIEW或許因數據流MoC最為著(zhù)稱(chēng)。對于數據流,一項操作要求開(kāi)發(fā)人員在其執行前在所有的輸入中插入數據。必須滿(mǎn)足這一條件以執行代碼。

      圖1 數據流執行——在乘法操作前實(shí)現加法操作

        數據流編程本質(zhì)上是直觀(guān)的,因為它與人類(lèi)的思維相仿。其他的優(yōu)勢還包括能夠方便地實(shí)現和并行化代碼。該數據流MoC是該LabVIEW平臺的基礎,它不需要使用任何額外的模塊或工具集。

          數學(xué)文本公式

        在設計階段,描述一項算法的最佳工具經(jīng)常是高層次的數學(xué)函數。該數學(xué)模型的優(yōu)勢在于非常易于人們解讀,以及利用定義的復雜函數通過(guò)腳本來(lái)解釋執行的順序。

      圖2 采用數學(xué)文本公式實(shí)現巴特沃思濾波器

        開(kāi)發(fā)人員可以通過(guò)新推出的LabVIEW 2009數學(xué)腳本RT模塊(該模塊同時(shí)與Windows和實(shí)時(shí)目標平臺相兼容),在LabVIEW平臺內實(shí)現數學(xué)文本公式。

          ODE建模

        開(kāi)發(fā)人員在需要表達一組耦合的微分方程與代數方程時(shí),常常使用常微分方程(ODE)建模,也稱(chēng)為連續時(shí)間建模。為實(shí)現該MoC,開(kāi)發(fā)人員采用ODE解析算子數值求解微分方程?,F今,LabVIEW 2009控制設計與仿真模塊通過(guò)一種成為控制與仿真循環(huán)的結構增加了ODE技術(shù)。

      圖3 通過(guò)ODE構建組塊表示的彈簧-質(zhì)量阻尼系統

        狀態(tài)圖

        狀態(tài)圖將算法表示為一系列的狀態(tài),這使其在表示具有有限個(gè)不同工作狀態(tài)的軟件系統(如一個(gè)通信協(xié)議或控制系統)時(shí)尤為有用。狀態(tài)間的通信通過(guò)狀態(tài)轉移實(shí)現。這些狀態(tài)轉移具有控制每個(gè)狀態(tài)間執行的約束條件。

      圖4。LabVIEW狀態(tài)圖開(kāi)發(fā)環(huán)境

        狀態(tài)與狀態(tài)轉移為開(kāi)發(fā)人員實(shí)現了抽象的底層細節,從而為他們提供了一個(gè)用于創(chuàng )建自述文件與可擴展設計的系統層次視角。利用該LabVIEW狀態(tài)圖模塊,開(kāi)發(fā)人員可以構建基于UML規范的狀態(tài)圖,以運行于臺式機、FPGA和嵌入式目標平臺之上。

          中斷驅動(dòng)式編程

        在中斷驅動(dòng)式系統中,通過(guò)軟件設計,使得當接受到一個(gè)注冊事件(如一個(gè)定時(shí)器)時(shí),激發(fā)一個(gè)響應以響應該事件。任意一個(gè)中斷式系統都具有兩個(gè)要素:中斷與中斷處理程序。一個(gè)中斷是一種由硬件生成的信號,它表明一事件已發(fā)生并應當中止當前正在執行的程序。中斷處理程序(也稱(chēng)為中斷服務(wù)程序)是指通過(guò)向處理器注冊以便在某個(gè)中斷發(fā)生時(shí)被執行的一部分代碼。一旦該處理器察覺(jué)一個(gè)中斷,它掛起當前正在執行的進(jìn)程,執行上下文切換以保存該系統的狀態(tài),并執行中斷處理程序。一旦該中斷處理程序的代碼執行完成,該處理器將控制權交還先前在運行的程序。

        在中斷驅動(dòng)式編程模式下,開(kāi)發(fā)人員可以實(shí)現利用最少的處理器開(kāi)銷(xiāo)快速響應同步事件或異步事件的高效率代碼。

        利用LabVIEW,開(kāi)發(fā)人員可以編程實(shí)現基于其系統內所發(fā)生事件的響應和定時(shí)循環(huán)的執行。LabVIEW FPGA中斷可以通過(guò)響應該中斷的LabVIEW實(shí)時(shí)模塊進(jìn)行觸發(fā)。

        在LabVIEW中創(chuàng )建中斷的另一個(gè)方法便是通過(guò)面向ARM微控制器的NI LabVIEW嵌入式模塊使用中斷管理器。開(kāi)發(fā)人員可以利用VI和定時(shí)循環(huán),響應定時(shí)器和數字輸入等中斷。

      圖5 利用面向ARM微控制器的LabVIEW嵌入式模塊進(jìn)行中斷管理

        C 代碼

        C語(yǔ)言是一種程序式編程語(yǔ)言,這意味著(zhù)一項程序必須采取一組步驟序列才可以到達一個(gè)期望狀態(tài)。編程人員必須定義一定數量的步驟以達成一個(gè)設定目標。C語(yǔ)言還添加了調用子程序或函數的功能,這支持代碼復用、模塊性和可維護性。

        C代碼可以多種方式供使用,純文本或編譯后的二進(jìn)制文件。LabVIEW提供了多種將C代碼包含在LabVIEW應用中的方式:

        調用庫節點(diǎn)——節點(diǎn)可與一個(gè)C函數庫相連接,呈現其C接口以供與LabVIEW協(xié)同使用

        與LabVIEW FPGA的C接口——開(kāi)發(fā)人員可以利用C在臺式機、PXI和NI CompactRIO系統上實(shí)現與LabVIEW FPGA的通信

        聯(lián)機C節點(diǎn)——在A(yíng)RM和Blackfin處理器等LabVIEW微處理器目標平臺上,C代碼可以直接集成入LabVIEW,以便開(kāi)發(fā)人員可以采用已有的以C語(yǔ)言編寫(xiě)的IP。

      圖6 通過(guò)聯(lián)機C節點(diǎn)將C代碼集成入LabVIEW

          案例研究——帶刷直流電機控制

        MoC并不是互斥的,所以開(kāi)發(fā)人員可以將其組合以有效描述一個(gè)問(wèn)題或實(shí)現一個(gè)解決方案。例如,考慮下面的帶刷直流電機控制應用,其中,一個(gè)PWM信號控制該電機的旋轉速率。

        圖7展示了該系統的最終實(shí)現。C代碼與ODE建模的組合描述了該直流電機的動(dòng)態(tài)特性,而數據流則表示了驅動(dòng)該PWM電壓信號對該電機進(jìn)行控制的邏輯。然后,它們被利用ODE再次組合,以驗證控制性能并進(jìn)行必要的調節。

      圖7 組合多個(gè)MoC以表示帶刷直流電機控制


       

      熱點(diǎn)新聞

      推薦產(chǎn)品

      x
      • 在線(xiàn)反饋
      1.我有以下需求:



      2.詳細的需求:
      姓名:
      單位:
      電話(huà):
      郵件:
      欧美精品欧美人与动人物牲交_日韩乱码人妻无码中文_国产私拍大尺度在线视频_亚洲男人综合久久综合天

    2. <blockquote id="fficu"><optgroup id="fficu"></optgroup></blockquote>

      <table id="fficu"></table>

      <sup id="fficu"></sup>
      <output id="fficu"></output>