天天看點

非标自動化之運動控制卡程式設計及應用

目 錄

一、運動控制簡介

二、運動控制系統組成

三、運動控制卡特性

四、運動控制卡選型

五、運動控制卡在進階程式設計語言中的使用

六、淩華AMP-204C程式設計流程

一、運動控制簡介

簡單地說,運動控制就是對機械運動部件的位置、速度等進行實時的控制管理,使其按照規劃的運動軌迹和規定的運動參數進行運動。

運動控制卡是基于PCI總線的高內建度、高可靠度的脈沖式運動控制卡。

常用的運動控制卡品牌有研華運動控制卡,淩華運動控制卡,雷賽運動控制卡等

二、運動控制系統組成

非标自動化之運動控制卡程式設計及應用

運動控制卡:速度曲線規劃、路徑規劃、位置脈沖輸出

驅動器: 把普通電能轉化為電機所需要的電能

電 機: 産生推動負載的扭矩

位置傳感器: 提供機械移動部件實時的位置和速度

2.1 死循環控制系統

非标自動化之運動控制卡程式設計及應用

特點:

Ø運動控制卡送出速度控制指令,驅動電機運動

Ø在運動控制卡上做PID增益調節,定位精度高

2.2 半死循環控制系統

非标自動化之運動控制卡程式設計及應用

特點:

Ø運動控制卡送出位置與速度指令

Ø在運動控制卡上做PID增益調節,定位精度比死循環差

2.3 開環控制系統

非标自動化之運動控制卡程式設計及應用

特點:

Ø運動控制卡送出位置與速度指令

Ø 定位精度最差

三、運動控制卡特性

非标自動化之運動控制卡程式設計及應用

3.1 點對點運動

•點對點運動是指在預定的速度規劃下控制某一軸由 A 位置移動到 B 位置。

非标自動化之運動控制卡程式設計及應用

3.2 直線插補

、•運動軌迹是直線。為了完成多元直線運動,需要任意2軸, 3軸或甚至6軸都需要進行線性插補。

非标自動化之運動控制卡程式設計及應用

3.3 圓弧插補

•運動軌迹是圓弧。為了完成多元圓弧運動,需要任意2軸或3軸進行圓弧插補。

非标自動化之運動控制卡程式設計及應用

3.4 點表運動

運動控制卡開辟一個N位元組的緩存區存放大量的位置資訊,使用者通過相關的函數來達成多線段的連續運動。點表運動包含了一系列的直線插補和圓弧插補指令。

非标自動化之運動控制卡程式設計及應用

3.5 多軸同步運動

多軸同步運動指使用者可以設定某一軸 ( 從軸) 和另一軸( 主軸) 的同步運動關系,這個關系類似機械上的齒輪結構。

非标自動化之運動控制卡程式設計及應用

3.6 位置比較觸發

•使用者先确定一個電機運動位置表,運動控制卡會把目前電機運動位置與這個位置表進行比較,一旦位置符合,運動控制器就會發出一個或者一串觸發脈沖。

非标自動化之運動控制卡程式設計及應用

四、運動控制卡選型

4.1 運動控制卡接口選擇

運動控制卡一般有PCI、RS232、RS485、網口、USB等幾種接口。

如果運算量比較大、功能複雜,選擇PCI和工控機比較好,工控機具備PCI卡槽,運動控制卡一般都支援多種進階程式設計語言,利于程式開發。

如果選擇HMI(人機界面)配合運動控制卡進行運動控制,則RS232、RS485 和網口是比較好的選擇,因為HMI一般都帶有這樣的接口;另外需要運動控制卡具有标準的通信協定。

如果用單片機/DSP/FPGA做主要進行控制,則RS232是比較好的選擇,因為 一般的這樣的主要都具有RS232接口,實體上非常友善連接配接。

4.2 運動控制卡功能選擇

運動控制卡一般能實作的功能是比較相似的,一般都包括歸零、定速、點位 、直線插補、多軸關聯插補和圓弧插補等功能。使用者要根據自己的需要進行選擇,功能的要求一般是符合自己用就可以,沒必要多而全,從軟體工程的角度來說,功能越多,可靠性越低,不需要的功能反而是累贅。一般的情況下,功能越多,價格也越高。是以功能的選擇上,一般以夠用為标準,可以适當考慮未來的擴充。

4.3 運動控制卡性能選擇

運動控制卡的性能一般包括通信速度、響應速度和控制速度(脈沖速度)。使用者需要根據自己的應用的最高要求,計算自己需要的性能指針,然後預留 20%左右的餘量,一般都可以滿足未來的要求,沒有必要進行個别名額的強 烈追求,需要綜合進行考慮,否則會付出不必要的成本。比如步進控制器的 一般接收脈沖的能力是80KHz左右,你選1MHz的脈沖速度,是沒有任何意義 的。如果根據整機設計計算出需要達到的精度需要500KHz,那一定要選擇滿 足這個要求的運動控制卡。

4.4 運動控制卡可靠性選擇

使用者使用運動控制卡,一定非常關心運動控制卡的穩定性。一個控制系統的 穩定性,是由幾個部分組成的,包括電機和驅動的可靠性(比如驅動器)、 整機電子學的可靠性(比如電源)、運動控制卡硬體的可靠性、運動控制卡 嵌入式軟體的可靠性、主要軟體的可靠性(比如HMI的組态軟體,PC軟體異 常情況處理等)。一般的能經過市場檢驗的運動控制卡,在隔離設計(比如 電源隔離、光耦隔離等)、濾波和保護(限位保護、接口保護)等都是有考 慮的,能力上不會有多大的差别。

4.5 運動控制卡價格選擇

選擇成本效益高的運動控制卡

4.6 運動控制卡易用性選擇

易用性包括硬體的易用性和軟體的易用性。硬體的易用性需要聯機友善實用 ,從使用者友善實用的角度考慮,比如一個接插件螺絲空位上需要插入十幾根電線再擰螺絲是很難的,也不可靠的。軟體的易用性包括文檔案的品質、例程的品質和軟體入手的難度上,重要的是能快速有效的完成自己需要的功能,而不是很複雜很難用。

五、運動控制卡在進階程式設計語言中的使用

5.1.在VS2010中建立程式

5.1.1.啟動Visual Studio 2010,選擇“檔案”→“建立” →“項目”→“Windows窗體應用程式”

名稱可自主選擇如“Motion”;

5.1.2.點選方案資料總管,點選引用,滑鼠右鍵點選選擇添加引用,加入需要添加的引用,如研華1245AE加入的引用為“AdvMotAPI.dll”;

非标自動化之運動控制卡程式設計及應用

5.1.3.至此程式已建立完成可以開始後續的程式設計工作

5.2. 程式接口規劃

5.2.1.界面規劃如下圖所示

非标自動化之運動控制卡程式設計及應用

5.3. 程式編寫架構

非标自動化之運動控制卡程式設計及應用

六、運淩華AMP-204C程式設計流程

6.1 系統&初始化

n I32 APS_initial(I32 *BoardID_InBits, I32 Mode)

- 闆卡初始化

nI32 APS_load_parameter_from_flash( I32 Board_ID )

- 從闆卡Flash載入參數

nI32 APS_load_param_from_file( const char *pXMLFile )

- 從XML格式檔案中載入參數

注意:推薦使用從闆卡Flash載入參數

6.2 IO狀态擷取

n I32 APS_motion_io_status( I32 Axis_ID )

- IO狀态擷取

非标自動化之運動控制卡程式設計及應用

注意:

1、在正式操作機構前,必須确認相關IO的狀态,比如EL、ALM、ORG、EZ、INP等的狀态,因為後面的回零、精确定位等需要用到上述IO。

2、推薦使用多線程來實時監視IO狀态變化

6.3 參數設定

n I32 APS_set_axis_param( I32 Axis_ID, I32 AXS_Param_No, I32 AXS_Param )

-按指定的軸參數類型設定軸參數(僅用于I32參數類型)

n I32 APS_set_axis_param_f( I32 Axis_ID, I32 AXS_Param_No, F64 AXS_Param )

- 按指定的軸參數類型設定軸參數(僅用于F64參數類型)

注意:使用函數時,要注意使用和參數值類型對應的函數

6.4 參數儲存

n I32 APS_save_parameter_to_flash( I32 Board_ID )

- 儲存參數到卡片Flash

n I32 APS_save_param_to_file( I32 Board_ID, const char *pXMLFile )

- 将參數儲存到XML檔案中

6.5 電機激磁

n I32 APS_set_servo_on( I32 Axis_ID, I32 Servo_on )

- 電機激磁/消磁

注意:SVON信号如果不為ON,則卡片無法發送運動指令

6.6.1 回零參數設定

n I32 APS_set_axis_param( I32 Axis_ID, I32 AXS_Param_No, I32 AXS_Param )

-按指定的軸參數類型設定軸參數(僅用于I32參數類型)

n I32 APS_set_axis_param_f( I32 Axis_ID, I32 AXS_Param_No, F64 AXS_Param )

- 按指定的軸參數類型設定軸參數(僅用于F64參數類型)

注意:使用函數時,要注意使用和參數值類型對應的函數

6.6.2 回零參數儲存

n I32 APS_save_parameter_to_flash( I32 Board_ID )

- 儲存參數到卡片Flash

n I32 APS_save_param_to_file( I32 Board_ID, const char *pXMLFile )

- 将參數儲存到XML檔案中

6.6.3 回零運動

n I32 APS_home_move( I32 Axis_ID )

- 開始回零運動

6.6.4 停止運動

n I32 APS_stop_move(I32 Axis_ID)

- 減速停止

n I32 APS_emg_stop(I32 Axis_ID);

- 立刻停止

6.7.1 運動狀态監視

n I32 APS_motion_status( I32 Axis_ID )

-運動狀态監視

注意:

1、建議在正式運動前開啟運動狀态監視,以便于在運動之後能夠實時監視運動狀态變化。

6.7.2 位置&速度監視

n I32 APS_get_command( I32 Axis_ID, I32 *Command )

-指令位置監視

n I32 APS_get_position( I32 Axis_ID, I32 *Position );

-回報位置監視

n I32 APS_get_error_position( I32 Axis_ID, I32 *Err_Pos )

-偏差位置監視

n I32 APS_get_command_velocity(I32 Axis_ID, I32 *Velocity )

-指令速度監視

n I32 APS_get_feedback_velocity(I32 Axis_ID, I32 *Velocity);

-回報速度監視

注意:

1、建議在正式運動前開啟位置及速度監視,以便于在運動之後能夠實時監視位置及速度變化

6.7.3 位置&速度監視

n I32 APS_get_command( I32 Axis_ID, I32 *Command )

-指令位置監視(僅用于I32參數類型)

n I32 APS_get_position( I32 Axis_ID, I32 *Position )

-回報位置監視(僅用于I32參數類型)

n I32 APS_get_error_position( I32 Axis_ID, I32 *Err_Pos )

-偏差位置監視(僅用于I32參數類型)

n I32 APS_get_command_velocity(I32 Axis_ID, I32 *Velocity )

-指令速度監視(僅用于I32參數類型)

n I32 APS_get_feedback_velocity(I32 Axis_ID, I32 *Velocity)

-回報速度監視(僅用于I32參數類型)

注意:

1、建議在正式運動前開啟位置及速度監視,以便于在運動之後能夠實時監視位置及速度變化

6.8 位置重置

n I32 APS_set_command(I32 Axis_ID, I32 Command)

-指令位置重置(僅用于I32參數類型)

n I32 APS_set_position(I32 Axis_ID, I32 Position)

-回報位置重置(僅用于I32參數類型)

注意:

1、在回零完成後,可以立刻使用位置重置函數。之後,則請謹慎使用位置重置函數。它将改變裝置的參考零點位置。

6.9.1 PTP運動

n I32 APS_relative_move( I32 Axis_ID, I32 Distance, I32 Max_Speed )

-相對運動

n I32 APS_absolute_move( I32 Axis_ID, I32 Position, I32 Max_Speed )

-絕對運動

注意:

1、該2條函數可以實作線上變速/變位

6.9.2 JOG運動

n I32 APS_jog_start( I32 Axis_ID, I32 STA_On );

-JOG運動

非标自動化之運動控制卡程式設計及應用

6.9.3 插補運動

n I32 APS_absolute_linear_move( I32 Dimension, I32 *Axis_ID_Array, I32 *Position_Array, I32 Max_Linear_Speed )

-絕對線性運動

n I32 APS_relative_linear_move( I32 Dimension, I32 *Axis_ID_Array, I32 *Distance_Array, I32 Max_Linear_Speed )

-相對線性運動

n I32 APS_absolute_arc_move( I32 Dimension, I32 *Axis_ID_Array, I32 *Center_Pos_Array, I32 Max_Arc_Speed, I32 Angle )

-絕對圓弧運動

n I32 APS_relative_arc_move( I32 Dimension, I32 *Axis_ID_Array, I32 *Center_Offset_Array, I32 Max_Arc_Speed, I32 Angle )

-相對圓弧運動

6.10 關閉卡片

n I32 APS_close()

-關閉卡片

繼續閱讀