目 錄
一、運動控制簡介
二、運動控制系統組成
三、運動控制卡特性
四、運動控制卡選型
五、運動控制卡在進階程式設計語言中的使用
六、淩華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()
-關閉卡片