本文導讀
上節課程給大家介紹了ZMC432CL-V2硬件接口(詳情點擊→步進的光柵尺全閉環EtherCAT運動控製器ZMC432CL-V2(一):硬件接口介紹) ,本節主要講解如何通過RTSys開發軟件調試ZMC432CL-V2的脈衝閉環功能。
一、ZMC432CL-V2產品簡介
ZMC432CL-V2高性能多軸運動控製器是一款兼容EtherCAT總線和脈衝型的獨立式運動控製器,具備高速實時反饋功能,支持脈衝全閉環控製,能夠實現高精度、高響應速度的運動控製。高精度定位,有效消除機械傳動誤差,滿足高精密加工場景應用要求。
1.ZMC432CL-V2硬件功能
(1)豐富的運動控製功能:支持直線、圓弧、空間圓弧、螺旋插補等。
(2)硬件接口豐富:支持脈衝軸(帶編碼器反饋)和EtherCAT總線軸,具備24路輸入和12路輸出的通用IO,部分為高速IO,2路模擬量輸出(DA)。
(3)EtherCAT刷新周期最快達250us,滿足高速通信需求。
(4)支持4通道硬件比較輸出、硬件定時器、運動中精準輸出,適用於多通道視覺飛拍等場合。
(5)支持掉電檢測、掉電存儲,多種程序加密方式,能夠有效防止係統故障,保護項目工程文件數據,並提高係統的可靠性。
(6)通過純國產IDE開發環境RTSys進行項目開發,可實時仿真、在線跟蹤以及診斷與調試,簡便易用,支持多種高級上位機語言聯合編程進行二次開發。
ZMC432CL-V2產品介紹視頻點擊→步進控製的光柵尺全閉環解決方案:32軸EtherCAT總線運動控製器ZMC432CL-V2 。
更多關於ZMC432CL-V2詳情介紹點擊→步進控製的光柵尺全閉環解決方案:32軸EtherCAT總線運動控製器ZMC432CL-V2。
二、RTSys調試ZMC432CL-V2的脈衝閉環功能
1. 新建RTSys的項目文件
點擊【文件】→【新建工程】→【輸入文件名】→【保存】。
2.新建RTBasic文件和RTHmi文件
點擊【新建】→【選擇Basic/Hmi】→【確定】,完成Basic和Hmi文件的創建,其中Basic文件用於運動邏輯的編寫,Hmi文件用於人機交互界麵的設計。
右擊【工程視圖】下的HMI文件名稱,在彈出的選項框中選擇【設置任務號】,並將其設置為0,表示控製器啟動後將一任務0去執行Hmi文件程序。
3.在BasicMain.bas文件裏麵編寫係統初始化函數和周期掃描函數
'/****************************************************************************
'任務編號:無
'函數功能:係統初始化
'Input:無
'Output:無
'返回值:無
'備注:無
'******************************************************************************/
GLOBAL SUB SysInit()
'測試固件信息
?"測試固件信息:ver 24.8.28 : "version_build, "SERVO_PERIOD: "SERVO_PERIOD
'軸分配
GLOBAL CONST TestAxisId=0
'線程分配
GLOBAL CONST IntCycleTask=1
GLOBAL CONST OtherTask=2
'其他變量
GLOBAL gvCLStstus,gv_HandMode
GLOBAL gv_P,gv_I,gv_D
GLOBAL gv_VF,gv_AF,gv_OV
'軸初始化參數
GLOBAL gv_Speed,gv_Accel,gv_Decel
GLOBAL gv_Sramp,gv_Inch
GLOBAL gv_Units
GLOBAL gv_mpos,gv_input
GLOBAL VpMode
'*********************軸參數初始化*********************
gv_Units=2000
gv_mpos =4000
gv_input=-20043
gvCLStstus=0
gv_Speed=2
gv_Accel=100
gv_Decel=100
gv_Sramp=0
gv_Inch=1
gv_HandMode=0
VpMode=0
'**********************係統初始化**********************
RAPIDSTOP(2) '停止所有軸
WAIT IDLE
DELAY(100)
DATUM(0) '清除軸報警
WAIT IDLE
'**********************軸參數初始化*********************
BASE(TestAxisId)
'關閉閉環功能
SERVO=OFF
ENCODER_SERVO=OFF
'關閉閉環功能後要遠程ATYPE從0到4的切換
ATYPE = 0
DELAY(100)
ATYPE = 4
'軸坐標清零
DPOS=0
MPOS=0
'更新軸參數
UpDataAxisPara()
'更新PID參數
UpDatePid(0)
ENDSUB
'/*****************************************************************************
'任務編號:無
'函數功能:Hmi掃描函數
'Input:無
'Output:無
'返回值:無
'備注:無
'******************************************************************************/
GLOBAL SUB SysScan()
'更新閉環狀態
IF SERVO(TestAxisId) = ON AND ENCODER_SERVO(TestAxisId)=ON THEN
gvCLStstus=1
ELSE
gvCLStstus=0
ENDIF
ENDSUB
4.組態人機界麵Hmi文件的編輯
先點擊【工程視圖】裏麵的Hmi.hmi文件,在彈出來的【屬性】窗口裏麵輸入【初始化函數】和【周期函數】的函數名。
Hmi.hmi文件運行後會先執行一次【初始化函數】一般完成係統的初始化操作,【初始化函數】運行完後Hmi.hmi文件會周期性的執行【周期函數】和周期性的掃描Hmi界麵上的按鈕等控件的操作情況。
點擊【控件箱】,可把控件箱裏麵的【控件】拖拽到Hmi窗口上進行人機界麵的設計。
5.Hmi人機界麵的按鈕如何調用Bas文件裏麵的函數
(1)點擊【全閉環開關】按鈕實現脈衝全閉環功能的開啟與關閉。
先在BasicMain.bas文件中新建函數來完成全閉環功能開關的邏輯程序。
'/*************************************************************************
'任務編號:無
'函數功能:全閉環功能切換
'Input:Mode: 0 開關閉環功能 1:更新閉環Pid參數
'Output:無
'返回值:無
'備注:無
'**************************************************************************/
GLOBAL SUB ClosedLoop(Mode)
IF Mode=0 THEN
IF gvCLStstus= 0 THEN
'配置脈衝軸TestAxisId為全閉環的功能
'配置PID參數
BASE(TestAxisId)
P_Gain = gv_P 'P:比例增益
I_GAIN = gv_I 'I:積分增益
D_GAIN = gv_D 'D:微分增益
VFF_GAIN = gv_VF '速度反饋的前饋增益
AFF_GAIN = gv_AF '加速度反饋的前饋增益
OV_GAIN = gv_OV '速度增益
'打開閉環功能
AXIS_ENABLE = ON '單軸使能打開情況下,全閉環才有效果
ENCODER_SERVO = ON '0-不開啟(缺省). 1-開啟閉環功能
'重要,打開servo之前打開encoder_servo後
'要完成一次atype由0變為4的切換,否則會報axis:0 config not support Servo.
'無法打開閉環控製,原因未知
ATYPE = 0
DELAY(20)
ATYPE = 4 '脈衝輸出+正交編碼反饋
SERVO = ON '0-不開啟(缺省). 1-開啟閉環功能
DELAY(20)
IF SERVO = ON THEN
?"閉環參數配置完成,閉環控製已打開"
ELSE
?"閉環參數配置完成,閉環控製打開失敗,請檢查軸配置。"
ENDIF
ELSE
BASE(TestAxisId)
SERVO = OFF
ENCODER_SERVO = OFF
'關閉ENCODER_SERVO後需要完成一次 ATYPE從0到4的切換,保證閉環功能完全關閉
ATYPE = 0
DELAY(100)
ATYPE = 4
?"已關閉閉環控製開關(switch),使用開環移動"
ENDIF
ELSEIF gvCLStstus=1 THEN
'配置脈衝軸TestAxisId為全閉環的功能
BASE(TestAxisId)
P_Gain = gv_P 'P:比例增益
I_GAIN = gv_I 'I:積分增益
D_GAIN = gv_D 'D:微分增益
VFF_GAIN = gv_VF '速度反饋的前饋增益
AFF_GAIN = gv_AF '加速度反饋的前饋增益
OV_GAIN = gv_OV '速度增益
?"PID參數已更新 "
ENDIF
ENDSUB
點擊【全閉環開關】按鈕控件,在屬性界麵的【點擊調用函數欄】輸入要調用的函數名即可,並且同時進行函數形參的傳遞。
(2)手動按鈕功能的實現。
先在BasicMain.bas文件中新建函數來完成手動按鈕的邏輯程序。
'/********************************************************************
'任務編號:無
'函數功能:寸動運動與測試
'Input:Mode:1表示寸動運動,0表示手動運動
'Input:Dir:運動方向 1正向運動 -1負向運動 0停止運動
'Output:無
'返回值:無
'備注:無
'*********************************************************************/
GLOBAL SUB InchAndSub(Mode,Dir)
BASE(TestAxisId)
SPEED = gv_Speed
ACCEL = gv_Accel
DECEL = gv_DEcel
SRAMP = gv_Sramp
IF Mode=1 THEN
'寸動運動
MOVE(gv_Inch*Dir) AXIS(TestAxisId)
?"寸動運動"
ELSE
IF Dir=1 THEN
'手動運動 正方向
MOVEABS(FS_LIMIT(TestAxisId))
ELSEIF Dir=-1 THEN
'手動運動 負方向
MOVEABS(RS_LIMIT(TestAxisId))
ELSE
'手動運動按鈕鬆開的時候停止軸運動
CANCEL(2)
ENDIF
ENDIF
ENDSUB
點擊【手動按鈕】相關控件,在屬性界麵點擊【動作欄】選擇按下和鬆開的調用函數,在【動作函數名】和【鬆開調用函數】欄分別輸入按鈕按下和鬆開想要調用的函數,並輸入對應函數的形參(函數形參可以是立即數也可以是全局變量或者寄存器)。
6.下載程序測試代碼邏輯
點擊【連接】通過網口IP連接上控製器後,點擊【下載到RAM】(程序掉電不保存)或者【下載到ROM】(程序掉電保存)即可完成程序的下載。
點擊【工具】→【插件】→【Xplc Screen】即可在電腦上顯示人機界麵,進行相關功能的測試。
三、通過RTSys示波器對比開環控製和全閉環控製的情況
示波器的使用可以參考正運動小助手的曆史推文《運動控製看的更清楚細致!RTSys示波器功能簡介 》。
1.開環控製情況分析
測試發現步進驅動器的開環控製,運動過程中隨動誤差(規劃位置和光柵尺反饋位置的差值)一直維持在0.02個用戶單位左右(這裏一個用戶單位即一個UNITS設置的是1mm)。
當運動結束時光柵尺的反饋位置和指令規劃位置也不相等,大概差了0.0025個用戶單位,折算為脈衝數是0.0025*用戶單位=5個脈衝。
2.閉環控製情況分析
測試發現步進驅動器的閉環控製,運動過程中隨動誤差(規劃位置和光柵尺反饋位置的差值)除了啟動和停止以外大部分保持在0個脈衝當量左右。
相比較開環控製有較大的提升,當運動結束時光柵尺的反饋位置和指令規劃位置也是相等的。
四、總結
1.啟用控製器閉環的時候要注意: 在打開ENCODER_SERVO後,打開servo之前要完成一次ATYPE從0到4的切換,這樣才可以正常打開控製器閉環的功能。
2.啟用控製器閉環同時還需要: 打開單軸使能axis_enable,這樣才能保證控製器閉環的正常啟用。
'打開閉環功能
BASE(TestAxisId)
AXIS_ENABLE = ON '單軸使能打開情況下,全閉環才有效果
ENCODER_SERVO = ON '0-不開啟(缺省). 1-開啟閉環功能
'重要,打開servo之前打開encoder_servo後
'要完成一次atype由0變為4的切換,否則會報axis:0 config not support Servo.
ATYPE = 0
DELAY(20)
ATYPE=4 '脈衝輸出+正交編碼反饋
SERVO = ON '0-不開啟(缺省). 1-開啟閉環功能
DELAY (20)
IF SERVO = ON THEN
?"閉環參數配置完成,閉環控製已打開,使用move指令移動,並在示波器中監測運動參數。"
ELSE
?"閉環參數配置完成,閉環控製打開失敗,請檢查軸配置。"
ENDIF
3.為保證控製器閉環功能的完全關閉: 在關閉ENCODER_SERVO後需要完成一次ATYPE從0到4的切換,這樣才能保證控製器閉環功能完全關閉。
BASE(TestAxisId)
SERVO = OFF
ENCODER_SERVO =OFF
'關閉ENCODER_SERV0後需要完成一次ATYPE從0到4的切換,保證閉環功能完全關閉
ATYPE =0
DELAY(100)
ATYPE =4
?"已關閉閉環控製開關(switch),使用開環移動"
完整代碼獲取地址
▼
本次,正運動技術步進的光柵尺全閉環EtherCAT運動控製器ZMC432CL-V2(二):RTSys編程調試,就分享到這裏。
更多精彩內容請關注“正運動小助手”公眾號,需要相關開發環境與例程代碼,請谘詢正運動技術銷售工程師:400-089-8936。
本ben文wen由you正zheng運yun動dong技ji術shu原yuan創chuang,歡huan迎ying大da家jia轉zhuan載zai,共gong同tong學xue習xi,一yi起qi提ti高gao中zhong國guo智zhi能neng製zhi造zao水shui平ping。文wen章zhang版ban權quan歸gui正zheng運yun動dong技ji術shu所suo有you,如ru有you轉zhuan載zai請qing注zhu明ming文wen章zhang來lai源yuan。
正運動技術專注於運動控製技術研究和通用運動控製軟硬件產品的研發,是國家級高新技術企業。正運動技術彙集了來自華為、中zhong興xing等deng公gong司si的de優you秀xiu人ren才cai,在zai堅jian持chi自zi主zhu創chuang新xin的de同tong時shi,積ji極ji聯lian合he各ge大da高gao校xiao協xie同tong運yun動dong控kong製zhi基ji礎chu技ji術shu的de研yan究jiu,是shi國guo內nei工gong控kong領ling域yu發fa展zhan最zui快kuai的de企qi業ye之zhi一yi,也ye是shi國guo內nei少shao有you、完整掌握運動控製核心技術和實時工控軟件平台技術的企業。主要業務有: 運動控製卡_運動控製器_EtherCAT運動控製卡_EtherCAT控製器_運動控製係統_視覺控製器__運動控製PLC_運動控製_機器人控製器_視覺定位_XPCIe/XPCI係列運動控製卡等。