《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 設(shè)計應(yīng)用 > 使用高級函數(shù)模塊API進行運動輪廓開發(fā)
使用高級函數(shù)模塊API進行運動輪廓開發(fā)
NI
摘要: 有了來自Nation Instruments的LabVIEW NI SoftMotion模塊,,您可以使用LabVIEW項目對您的運動軸設(shè)置進行配置和測試,,調(diào)節(jié)您的伺服電機。它提供了使用基于PLCOpen IEC 1131-3規(guī)范的高級函數(shù)模塊API的運動輪廓編程的易用性,。除了對全新NI C系列驅(qū)動器接口的本地支持之外,,NI SoftMotion技術(shù)還提供了軸界面節(jié)點,可以用來添加專用I/O,、定制控制算法或是與第三方驅(qū)動器的附加通信接口,。此外,在結(jié)合SolidWorks Premium 3D CAD設(shè)計應(yīng)用程序時,,這個技術(shù)為運動控制應(yīng)用程序和機械設(shè)計提供了數(shù)字原型開發(fā)功能,。使用用于SolidWorks的NI SoftMotion,您可以在花費成本構(gòu)建物理原型系統(tǒng)之前,,對在SolidWorks中創(chuàng)建的系統(tǒng)用NI SoftMotion函數(shù)模塊開發(fā)的實際運動輪廓進行仿真,。
關(guān)鍵詞: 運動伺服 SoftMotion NI
Abstract:
Key words :

有了來自Nation Instruments的LabVIEW NI SoftMotion模塊,您可以使用LabVIEW項目對您的運動軸設(shè)置進行配置和測試,,調(diào)節(jié)您的伺服電機,。它提供了使用基于PLCOpen IEC 1131-3規(guī)范的高級函數(shù)模塊API的運動輪廓編程的易用性。除了對全新NI C系列驅(qū)動器接口的本地支持之外,,NI SoftMotion技術(shù)還提供了軸界面節(jié)點,,可以用來添加專用I/O、定制控制算法或是與第三方驅(qū)動器的附加通信接口,。此外,,在結(jié)合SolidWorks Premium 3D CAD設(shè)計應(yīng)用程序時,這個技術(shù)為運動控制應(yīng)用程序和機械設(shè)計提供了數(shù)字原型開發(fā)功能,。使用用于SolidWorks的NI SoftMotion,,您可以在花費成本構(gòu)建物理原型系統(tǒng)之前,,對在SolidWorks中創(chuàng)建的系統(tǒng)用NI SoftMotion函數(shù)模塊開發(fā)的實際運動輪廓進行仿真。

 

使用帶有NI掃描引擎的NI SoftMotion

結(jié)合您的硬件使用NI SoftMotion函數(shù)模塊或軸界面節(jié)點,,您必須在LabVIEW項目中創(chuàng)建軸,、坐標系和表格。這些項與運動I/O資源相關(guān),,在使用NI SoftMotion函數(shù)模塊或軸界面節(jié)點創(chuàng)建運動控制應(yīng)用程序時使用,。使用軸管理器對話框?qū)⒛挠布cNI SoftMotion軸關(guān)聯(lián)在一起。軸包含軌跡生成器,、比例積分微分(PID)控制循環(huán)或步進輸出以及監(jiān)督控制,。您可以將NI SoftMotion軸與仿真硬件或?qū)嶋H硬件關(guān)聯(lián)在一起。伺服軸需要編碼器反饋資源,。開環(huán)步進軸不需要操作反饋,。

您可以根據(jù)與NI SoftMotion軸進行關(guān)聯(lián)的硬件,創(chuàng)建以下類型的軸:

  • NI 951x軸(掃描界面模式)
  • 仿真軸
  • 固態(tài)工作軸
  • 無限制軸

圖1:NI SoftMotion軸管理器對話框

使用配置坐標空間對話框?qū)⑤S在坐標系中進行組織,。坐標系是軸的邏輯組合,,用來作為可以使用坐標系資源的NI SoftMotion函數(shù)模塊的輸入,。使用坐標系,,您可以指定多個軸運動,確保所有的軸在相同的時間開始和結(jié)束,。這與在同一時刻開始并非坐標系組成部分的獨立軸不同——軸開始運動是同步的,,但停止運動卻不是同步的。

圖2:NI SoftMotion配置坐標系空間對話框

圖3:含有完成配置的運動軸與坐標系空間的LabVIEW項目

所有運動控制I/O和執(zhí)行信息都被加入全局掃描引擎內(nèi)存映射,,并在每個掃描周期進行更新,。在同一個掃描周期中執(zhí)行的函數(shù)模塊在相同的掃描周期進行同步,其中包括線性,、停止,、調(diào)速和凸輪系統(tǒng)。這意味著您可以在同一個掃描周期中開始軸,、坐標系,、調(diào)速操作或是凸輪系統(tǒng)操作。然而,,以同步方式開始的軸并不同步地結(jié)束,。為了同步結(jié)束這些運動,您必須在同一時間計算結(jié)束所有軸運動的約束條件,,或是配置坐標系從而能夠自動計算這些數(shù)值,。

由于函數(shù)模塊執(zhí)行是在掃描引擎周期內(nèi)的,因此可能在響應(yīng)外部事件時或是同步不同軸類型時等,,會有較小的延遲,。表1定義了最小延遲與最大延遲,。

                                                                                                                                                                                   

 

功能

Delay in Scan Periods

限制與回復開關(guān)激活 1 ≤ 延遲 < 2
使用主編碼器調(diào)速與凸輪系統(tǒng)操作 從輸出導致主輸出延遲兩個掃描周期
位置錯誤 對于含有位置錯誤的軸為1個掃描周期,對于減速坐標系中的其他軸為2個掃描周期
NI 951x與自定義軸 對于與NI 951x軸相關(guān)的自定義軸為1個掃描周期

表1:函數(shù)模塊執(zhí)行延遲

使用NI SoftMotion函數(shù)模塊

LabVIEW NI SoftMotion模塊提供了函數(shù)模塊,,用于構(gòu)建使用函數(shù)模塊編程模型的確定性運動控制應(yīng)用程序,。

LabVIEW具有基于IEC 61131-3工業(yè)控制系統(tǒng)編程國際標準的函數(shù)模塊。這些函數(shù)模塊為實時應(yīng)用而設(shè)計,,能夠?qū)⑵鋮?shù)作為共享變量,,用于人機界面(HMI)編程和狀態(tài)監(jiān)視中。您可以利用這些熟悉的工業(yè)函數(shù)模塊和LabVIEW中的所有VI與函數(shù),,開發(fā)簡單和復雜的工業(yè)測量與控制應(yīng)用程序,。

在Windows平臺下安裝了LabVIEW和LabVIEW實時模塊后,您可以使用LabVIEW函數(shù)模塊,,它們與LabVIEW實時模塊一起進行安裝,。LabVIEW NI SoftMotion安裝附加的函數(shù)模塊,提供運動控制函數(shù),,并且讓您使用LabVIEW項目來配置并測試您的運動軸設(shè)置,,調(diào)節(jié)伺服電機。LabVIEW NI SoftMotion包含在LabVIEW的平臺DVD中,。您可以安裝模塊的30天試用版或使用限制功能的免費版模塊,。

函數(shù)模塊使用LabVIEW編寫,設(shè)計用于非阻塞確定性執(zhí)行的實時應(yīng)用中,,使得它們適用于對時間確定性要求非常嚴格的代碼中,。函數(shù)模塊的每個實例都有唯一的名稱和可重入執(zhí)行的內(nèi)存空間。因此,,您可以在應(yīng)用程序中獨立使用這些函數(shù)模塊,。舉例而言,您可以使用PID函數(shù)模塊的每個實例控制一個獨立的系統(tǒng),。

在應(yīng)用中使用的函數(shù)模塊在LabVIEW項目中可見,,并且能夠遠程訪問每個終端中的共享變量。您可以在函數(shù)模塊的屬性頁面中配置這些終端和變量,。

在默認設(shè)置下,,終端變量被配置為單線程實時FIFO的共享變量,因此您可以在實時應(yīng)用中使用,,從而避免訪問變量值時的抖動,。您可以配置每個終端,從程序框圖的終端中接收數(shù)值,,或是從對應(yīng)的共享變量或是常量中遠程接收數(shù)值,。

您可以將終端變量配置為網(wǎng)絡(luò)發(fā)布共享變量,為HMI編程和遠程監(jiān)視提供遠程參數(shù)數(shù)值訪問,。對于HMI編程,,您可以在臺式機或工業(yè)觸摸屏計算機的LabVIEW應(yīng)用程序中使用共享變量,。NI分布式系統(tǒng)管理器可以用于監(jiān)視在網(wǎng)絡(luò)上的系統(tǒng)和管理發(fā)布數(shù)據(jù)。對于系統(tǒng)管理員,,您無需LabVIEW開發(fā)環(huán)境就可以查看函數(shù)模塊參數(shù)數(shù)值,。通過配置函數(shù)模塊終端接收變量數(shù)值,您還可以通過系統(tǒng)管理器寫入?yún)?shù)數(shù)值,,舉例而言,,您可以遠程調(diào)節(jié)PID函數(shù)模塊。

NI SoftMotion函數(shù)模塊還包含其他用于監(jiān)視和維護每個函數(shù)模塊狀態(tài)的附加參數(shù),。用于NI SoftMotion函數(shù)模塊的API是非阻塞,、異步的API,您可以用來與您的運動控制硬件進行通信,。

下表提供了運動控制函數(shù)模塊的概述,。

 

選板對象

選板符號

描述

直線

 http:/zone.ni.com/cms/images/devzone/tut/SL.JPG

使用軸或坐標系資源完成直線運動。直線運動使用一條或多條軸連接兩點,。運動行為隨著直線運動模式的設(shè)置而變化,。
弧線

 http:/zone.ni.com/cms/images/devzone/tut/am.JPG

完成圓形、圓弧或螺旋線運動,?;【€運動使用您所指定的半徑生成圓形運動?;【€運動的類型隨著圓弧運動模式的設(shè)置而變化,。
曲線

 http:/zone.ni.com/cms/images/devzone/tut/CM.JPG

使用軸或坐標系資源完成曲線運動。曲線運動由軟件插值得到光滑曲線時所使用的一系列位置來描述,。這些位置存儲在表格中。 運動中的每個點以絕對位置進行表示,,使用運動的開始點作為暫時的“零點”位置,。曲線運動的類型根據(jù)曲線模式的設(shè)置而變化。
參考

 http:/zone.ni.com/cms/images/devzone/tut/FR.JPG

完成參考運動,,例如在軸資源上定位初始點或極限位置,。參考移動用來初始化運動控制系統(tǒng),建立可重復的參考位置,。移動根據(jù)參考移動模式的設(shè)置而變化,。
捕捉

 http:/zone.ni.com/cms/images/devzone/tut/Capture_20090705145138.JPG

根據(jù)例如傳感器狀態(tài)等外部輸入記錄編碼器位置。您可以使用采集得到的位置來完成相對于采集位置的運動,,或是僅僅是在采集事件發(fā)生的時候記錄編碼器位置,。
比較

 http:/zone.ni.com/cms/images/devzone/tut/Comp.JPG

將電機與外部活動和指定的編碼器位置進行同步。當達到指定位置時,,能夠得到用戶可配置的脈沖,。位置比較操作根據(jù)比較模式的設(shè)置而變化,。
調(diào)速

 http:/zone.ni.com/cms/images/devzone/tut/gear.JPG

配置指定軸進行調(diào)速操作。調(diào)速將從軸的運動與主軸的運動進行同步,,主軸運動可以是編碼器或是另一個軸的軌跡,。從軸運動可以相對于主軸以更高或更低的轉(zhuǎn)速比進行。例如,,主軸每轉(zhuǎn)一次,,從軸可能轉(zhuǎn)動兩次。調(diào)速操作根據(jù)調(diào)速模式設(shè)置的變化而變化,。
凸輪

 http:/zone.ni.com/cms/images/devzone/tut/cam.JPG

為指定軸配置凸輪操作,。這些比例由NI SoftMotion自動進行管理,從而能夠?qū)φ{(diào)速比例進行精確切換,。凸輪用于從軸速度與主軸速度比不是線性關(guān)系的應(yīng)用中,。這個類型的凸輪操作根據(jù)凸輪模式設(shè)置而變化。
讀取

 http:/zone.ni.com/cms/images/devzone/tut/Read_20090705145135.JPG

從軸,、坐標系,、反饋和其他資源中讀取狀態(tài)和數(shù)據(jù)信息。使用可用的讀取方法獲取不同資源的信息,。
寫入

 http:/zone.ni.com/cms/images/devzone/tut/write.JPG

向軸,、坐標系或反饋資源寫入狀態(tài)和數(shù)據(jù)信息。使用可用的寫入方法向不同資源寫入信息,。
重置位置

 http:/zone.ni.com/cms/images/devzone/tut/reset.JPG

在指定軸或坐標系上重置位置,。
停止

 http:/zone.ni.com/cms/images/devzone/tut/stop_20090705145136.JPG

在軸或坐標系上停止當前運動。移動行為根據(jù)停止模式的設(shè)置而變化,。
電源

http:/zone.ni.com/cms/images/devzone/tut/clear.JPG

在指定軸或坐標系資源上開啟或關(guān)閉軸和驅(qū)動器,。
清除默認值

http:/zone.ni.com/cms/images/devzone/tut/clear.JPG

清除NI SoftMotion默認值。

 

以下技巧可能會在您使用LabVIEW中的NI SoftMotion函數(shù)模塊進行編程時起到幫助:

  • 使用函數(shù)模塊的VI必須存在于LabVIEW項目中,。
  • 函數(shù)模塊必須在循環(huán)中運行,。根據(jù)您應(yīng)用需求的不同,您可以選擇使用等待下一個整數(shù)倍毫秒函數(shù)進行定時的while循環(huán),,或是如果您的應(yīng)用需要函數(shù)模塊以一定掃描周期執(zhí)行,,也可以使用與NI掃描引擎同步的定時循環(huán)。
  • 使用函數(shù)模塊狀態(tài)輸出判斷函數(shù)模塊執(zhí)行的順序,,這并不是標準的LabVIEW編程方法,。舉例而言,不要將函數(shù)模塊放在條件分支中,。
  • 您必須在應(yīng)用循環(huán)外初始化所有的矩陣輸出,,以便讓函數(shù)模塊不進行內(nèi)存分配。這可以減少系統(tǒng)的漂移和抖動。

為了確定函數(shù)模塊執(zhí)行的順序,,運動控制函數(shù)模塊提供了狀態(tài)參數(shù),。下表提供了函數(shù)模塊狀態(tài)參數(shù)行為的簡介。

執(zhí)行,、錯誤輸出,、完成、中止,、忙碌活動參數(shù)根據(jù)以下內(nèi)容執(zhí)行:

 

輸出狀態(tài) 完成和中止輸出在執(zhí)行的下降沿重置,。但是,執(zhí)行的下降沿并不停止或影響實際函數(shù)模塊的執(zhí)行,。必須確保在每個循環(huán)中對對應(yīng)的輸出進行配置,,如果這些狀態(tài)中的一個會發(fā)生——即便執(zhí)行在函數(shù)模塊完成之前被重置。如果函數(shù)模塊實例在完成之前收到新的執(zhí)行(作為同一實例下的一系列指令),,函數(shù)模塊不會為函數(shù)模塊的前一執(zhí)行,,返回例如完成或中止等任何狀態(tài)輸出。
輸入?yún)?shù) 函數(shù)模塊的輸入?yún)?shù)與執(zhí)行輸入的上升沿一起使用,。要修改任何參數(shù),,必須修改輸入?yún)?shù)并且重新執(zhí)行函數(shù)模塊。
未連接的輸入?yún)?shù) 如果函數(shù)模塊有未連接的輸入,,將使用這個函數(shù)模塊上一次執(zhí)行時的參數(shù)值,。在函數(shù)模塊的首次執(zhí)行時,使用默認值,。
符號規(guī)則 加速,、減速、加加速度,、減加速度輸入總是正值,。目標位置和距離可以為正數(shù)也可以為負數(shù)。除了使用速度方法完成直線運動之外,,速度在所有情況下為正數(shù),。
錯誤處理行為

所有函數(shù)模塊都包含錯誤輸出簇,對執(zhí)行函數(shù)模塊中可能發(fā)生的錯誤進行處理,。這些輸出描述如下:

  • 在函數(shù)模塊執(zhí)行中發(fā)生錯誤時,狀態(tài)變?yōu)檎?。在錯誤發(fā)生之后,,狀態(tài)輸出僅在第一個循環(huán)執(zhí)行中保持真。如果您希望將錯誤狀態(tài)保持為真,,必須使用移位寄存器將錯誤信息傳遞到之后的循環(huán)執(zhí)行中,。
  • 代碼是錯誤代碼或警告代碼。如果狀態(tài)為真,代碼是非零錯誤代碼,。如果狀態(tài)為假,,代碼為0或警告代碼。
  • 源描述了錯誤或警告的來源,,在大多數(shù)情況下,,是產(chǎn)生錯誤或警告的函數(shù)模塊名稱。

如果在函數(shù)模塊中發(fā)生了錯誤,,執(zhí)行時間可能會增加,。

完成輸出行為 完成輸出在指令行為完成的時候被置位。如果有多個函數(shù)模塊順序?qū)ν粋€資源進行操作,,在一個資源上的運動被同一資源上的另一個運動中斷而沒有達到終點時,,第一個函數(shù)模塊的完成并不會被置位。
中止輸出行為

在一個指令被另一個指令中斷時,,中止被置位,。中止行為與完成行為相似。在中止發(fā)生時,,其他輸出信號被重置,。

在您使用另一個在不同資源上的另一個函數(shù)來中斷執(zhí)行時,中止并不返回真,。舉例而言,,執(zhí)行坐標系中一條軸上的直線運動并不會中止運行中的坐標系運動。實際上,,弧線運動被設(shè)置為真,,并且停止執(zhí)行。

輸入超過應(yīng)用程序限制 如果一個函數(shù)模塊的輸入?yún)?shù)違反應(yīng)用程序限制,,這個函數(shù)模塊實例將會產(chǎn)生一個錯誤,。
忙碌輸出行為 每個函數(shù)模塊都含有忙碌輸出,表明函數(shù)模塊執(zhí)行還沒有完成,。忙碌在執(zhí)行的上升沿被置位,,在完成、中止或錯誤輸出被設(shè)置的時候重置,。建議不要在忙碌輸出為真的時候停止應(yīng)用程序,,否則軟件可能會處于未定義的狀態(tài)中。
輸出活動 在函數(shù)模塊得到指定資源控制權(quán),、所有屬性被設(shè)置并且函數(shù)模塊開始執(zhí)行時,,活動輸出被設(shè)置為真。一旦活動輸出為真,,函數(shù)模塊在下一個掃描周期生效,。
此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。