The value of Zmotion is to bring customers more success!
点击上方“正运动小助手”,随时关注新动态!
本文导读
上节课程给大家介绍了ZMC432CL-V2硬件接口(详情点击→步进的光栅尺全闭环EtherCAT运动控制器ZMC432CL-V2(一):硬件接口介绍),本节主要讲解如何通过RTSys开发软件调试ZMC432CL-V2的脉冲闭环功能。
一、ZMC432CL-V2产品简介
ZMC432CL-V2高性能多轴运动控制器是一款兼容EtherCAT总线和脉冲型的独立式运动控制器,具备高速实时反馈功能,支持脉冲全闭环控制,能够实现高精度、高响应速度的运动控制。高精度定位,有效消除机械传动误差,满足高精密加工场景应用要求。
1.ZMC432CL-V2硬件功能
ZMC432CL-V2产品介绍视频点击→步进控制的光栅尺全闭环解决方案:32轴EtherCAT总线运动控制器ZMC432CL-V2。
更多关于ZMC432CL-V2详情介绍点击→步进控制的光栅尺全闭环解决方案:32轴EtherCAT总线运动控制器ZMC432CL-V2。
二、RTSys调试ZMC432CL-V2的脉冲闭环功能
1.新建RTSys的项目文件
'/**************************************************************************** '任务编号:无 '函数功能:系统初始化 '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
5.Hmi人机界面的按钮如何调用Bas文件里面的函数
先在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)手动按钮功能的实现。
'/******************************************************************** '任务编号:无 '函数功能:寸动运动与测试 '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.下载程序测试代码逻辑
三、通过RTSys示波器对比开环控制和全闭环控制的情况
示波器的使用可以参考正运动小助手的历史推文《运动控制看的更清楚细致!RTSys示波器功能简介》。
相比较开环控制有较大的提升,当运动结束时光栅尺的反馈位置和指令规划位置也是相等的。
四、总结
'打开闭环功能 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编程调试。
完整代码获取地址
本次,正运动技术步进的光栅尺全闭环EtherCAT运动控制器ZMC432CL-V2(二):RTSys编程调试,就分享到这里。
更多精彩内容请关注“正运动小助手”公众号,需要相关开发环境与例程代码,请咨询正运动技术销售工程师:400-089-8936。
正运动技术专注于运动控制技术研究和通用运动控制软硬件产品的研发,是国家级高新技术企业。正运动技术汇集了来自华为、中兴等公司的优秀人才,在坚持自主创新的同时,积极联合各大高校协同运动控制基础技术的研究,是国内工控领域发展最快的企业之一,也是国内少有、完整掌握运动控制核心技术和实时工控软件平台技术的企业。主要业务有:运动控制卡_运动控制器_EtherCAT运动控制卡_EtherCAT控制器_运动控制系统_视觉控制器__运动控制PLC_运动控制_机器人控制器_视觉定位_XPCIe/XPCI系列运动控制卡等。