步进控制的光栅尺全闭环EtherCAT运动控制器ZMC432CL-V2快速入门:二维螺距补偿(上)
今天正运动小助手给大家分享一下步进控制的光栅尺全闭环EtherCAT运动控制器ZMC432CL-V2的二维螺距补偿的功能的验证。01产品简介ZMC432CL-V2高性能多轴运动控制器是一款兼容EtherCAT总线和脉冲型的独立式运动控制器具备高速实时反馈功能支持脉冲全闭环控制能够实现高精度、高响应速度的运动控制。高精度定位有效消除机械传动误差满足高精密加工场景应用要求。ZMC432CL-V2硬件功能丰富的运动控制功能支持直线、圆弧、空间圆弧、螺旋插补等。硬件接口丰富支持脉冲轴带编码器反馈和EtherCAT总线轴具备24路输入和12路输出的通用IO部分为高速IO2路模拟量输出(DA)。EtherCAT刷新周期最快达250us满足高速通信需求。支持4通道硬件比较输出、硬件定时器、运动中精准输出适用于多通道视觉飞拍等场合。支持掉电检测、掉电存储多种程序加密方式能够有效防止系统故障保护项目工程文件数据并提高系统的可靠性。通过纯国产IDE开发环境RTSys进行项目开发可实时仿真、在线跟踪以及诊断与调试简便易用支持多种高级上位机语言联合编程进行二次开发。02硬件接口03硬件接线1.数字量输入口IN接线图1 输入口通用接线图图2 输入口单端编码器接线图2.数字量输出口接线图3 输出口通用接线图图4 输出口单端脉冲轴接线图04控制器开发1.PC开发支持以下语言进行开发我们所有的开发语言和所有控制器提供的都是同一套API接口。2.脱机开发使用自主自研的IDE RTSys进行开发支持Basic、梯形图开发。05二维螺距补偿应用场景06二维螺距补偿指令说明正运动二维螺距补偿指令使用的注意点1.必须先设置ATYPE然后设置补偿修改ATYPE时必须先关闭补偿2.设置补偿时轴要位于IDLE的停止状态3.开始补偿点的坐标填写的是轴的MPOS坐标4.带编码器反馈的轴类型不同位置补多少个脉冲是根据编码器位置确定脉冲补偿的个数的所以一定要保证编码器的反馈是正确的5.机台断使能前需先关掉二维螺距补偿功能否则如果断使能的情况下机台有移动会造成dpos跟mpos的数据对不上。6.如下图假设开始补偿点是坐标系的原点补偿间距分别是【DisX,DisY】补偿的点是【4*4】的话螺距补偿表存储的点位数据就是以下【点1】到【点16】的位置下的补偿数据。07二维螺距算法通过Basic编程快速验证效果假设工况1X轴和Y轴的丝杆螺距正常但X轴和Y轴安装不垂直假设安装夹角是135度。步骤一规划开始补偿点补偿间距补偿的行数和列数。初始化二维螺距补偿的相关参数TableId 1000 补偿数据的Table起始点StartMposX 0 X轴开始补偿的位置StartMposY 0 Y轴开始补偿的位置DisX 0.5 X轴方向补偿的间距DisY 0.5 Y轴方向补偿的间距ColNumX 50 X轴方向补偿的点数RowlNumY 50 Y轴方向补偿的点数步骤二根据该工况的测试环境计算各个补偿点的X方向和Y方向的改补偿的脉冲数并更新到TABLE。开始2D螺距补偿 WAIT IDLE PITCH2SET(1,StartMposX ,StartMposY,,DisX,DisY,ColNumX,RowlNumY,TableId)步骤三调用二维螺距补偿指令启用二维螺距补偿功能。开始2D螺距补偿 WAIT IDLE PITCH2SET(1,StartMposX ,StartMposY,,DisX,DisY,ColNumX,RowlNumY,TableId)步骤四发送运动指令根据实际的编码器反馈来验证控制器实际上发的脉冲数是否正确。开始运动 MoveTest(1,1.1,RunMode) MoveTest(2,1.1,RunMode) MoveTest(2,2.1,RunMode)步骤五验证效果。PSx轴和Y轴的脉冲当量均设置的是100000根据以上数据启用二维螺距补偿功能后我们可以计算出运动到点【1,1,1】时X轴和Y轴理论上补偿的脉冲数分别是109999.9999个脉冲和45563.49186个脉冲根据实际编码器的反馈值发现X轴和Y轴实际补偿的脉冲数分别是109999个脉冲和45563个脉冲因为脉冲个数是整数所以二维螺距补偿功能正常。假设工况2XY轴的螺距均有异常需要补偿但X轴和Y轴安装是垂直的。初始化二维螺距补偿的相关参数 TableId 1000 补偿数据的Table起始点 StartMposX 0 X轴开始补偿的位置 StartMposY 0 Y轴开始补偿的位置 DisX 0.5 X轴方向补偿的间距 DisY 0.5 Y轴方向补偿的间距 ColNumX 50 X轴方向补偿的点数 RowlNumY 50 Y轴方向补偿的点数步骤一规划起始补偿点补偿间距补偿的行数和列数。初始化二维螺距补偿的相关参数 TableId 1000 补偿数据的Table起始点 StartMposX 0 X轴开始补偿的位置 StartMposY 0 Y轴开始补偿的位置 DisX 0.5 X轴方向补偿的间距 DisY 0.5 Y轴方向补偿的间距 ColNumX 50 X轴方向补偿的点数 RowlNumY 50 Y轴方向补偿的点数步骤二根据该工况的测试环境计算各个补偿点的X方向和Y方向的改补偿的脉冲数并更新到TABLE。假设X轴的激光干涉仪数据如下 运动到1mm处激光干涉仪实际是0.9mm处所以需要补偿的脉冲 0.1*units 运动到2mm处激光干涉仪实际是1.8mm处所以需要补偿的脉冲 0.2*units 运动到3mm处激光干涉仪实际是2.7mm处所以需要补偿的脉冲 0.3*units Y轴丝杆工况和X轴丝杆工况类似 更新该工况下二维补偿表的TABLE数据 FOR i0 to RowlNumY-1 先按行填写该行的每一列的数据 FOR j0 to ColNumX-1 【实际测试发现运动到1mm处补偿的脉冲数不是0.1*units,是因为算法发现发0.1*units实际跑到不是0.1mm,发0.1111*units才跑0.1mm】 Table(TableId2*(i*ColNumXj)) DisX*(j1)*0.1*UNITS(AxisX) Table(TableId2*(i*ColNumXj)1) DisY*(i1)*0.1*UNITS(AxisY) NEXT NEXT步骤三调用二维螺距补偿指令启用二维螺距补偿功能。开始运动 MoveTest(1,1,RunMode) MoveTest(2,1,RunMode) MoveTest(2,2,RunMode)步骤四发送运动指令根据实际的编码器反馈来验证控制器实际上发的脉冲数是否正确。开始运动 MoveTest(1,1,RunMode) MoveTest(2,1,RunMode) MoveTest(2,2,RunMode)步骤五验证效果。PSx轴和Y轴的脉冲当量均设置的是100000根据以上数据启用二维螺距补偿功能后我们可以计算出运动到点【1,1】时X轴和Y轴理论上补偿的脉冲数分别是11111.11108个脉冲和11111.11108个脉冲根据实际编码器的反馈值发现X轴和Y轴实际补偿的脉冲数分别是11110个脉冲和11110个脉冲这里理论补偿值和实际补偿值误差在1个脉冲我们认为二维螺距补偿功能是正常的。假设工况3X轴和Y轴的丝杆螺距均有异常需要补偿且X轴和Y轴的安装夹角是135度。假设X轴的激光干涉仪数据如下运动到1mm处激光干涉仪打出来实际是0.9mm处所以需要补偿的脉冲 0.1*units运动到2mm处激光干涉仪打出来实际是1.8mm处所以需要补偿的脉冲 0.2*units运动到3mm处激光干涉仪打出来实际是2.7mm处所以需要补偿的脉冲 0.3*unitsY轴丝杆工况和X轴丝杆工况类似步骤一规划起始补偿点补偿间距补偿的行数和列数。初始化二维螺距补偿的相关参数 TableId 1000 补偿数据的Table起始点 StartMposX 0 X轴开始补偿的位置 StartMposY 0 Y轴开始补偿的位置 DisX 0.5 X轴方向补偿的间距 DisY 0.5 Y轴方向补偿的间距 ColNumX 50 X轴方向补偿的点数 RowlNumY 50 Y轴方向补偿的点数步骤二根据该工况的测试环境计算各个补偿点的X方向和Y方向的改补偿的脉冲数并更新到TABLE。假设X轴的激光干涉仪数据如下 运动到1mm处激光干涉仪实际是0.9mm处所以需要补偿的脉冲 0.1*units 运动到2mm处激光干涉仪实际是1.8mm处所以需要补偿的脉冲 0.2*units运动到3mm处激光干涉仪实际是2.7mm处所以需要补偿的脉冲 0.3*units Y轴工况和X轴工况类似 更新该工况下二维补偿表的TABLE数据 FOR i0 to RowlNumY-1 先按行填写该行的每一列的数据 FOR j0 to ColNumX-1 【工况三XY轴螺距异常XY的夹角是135度】 X轴螺距有问题实际是10000个脉冲跑0.5mm Y轴螺距也有问题实际是10000个脉冲跑0.9mm IF i0 and j0 THEN Angle135XY轴的安装夹角 ENDIF LOCAL ActPosX,ActPosY 实际位置 X轴补偿数据 ActPosX 0.5*(j1) (i1)*0.9*(COS(Angle*PI/180)) Table(TableId2*(i*ColNumXj)) DisX*((1j)-ActPosX)*UNITS(AxisX) Y轴补偿数据 ActPosY 0.9*(SIN(Angle*PI/180)) Table(TableId2*(i*ColNumXj)1) DisY*(1i)*(1- ActPosY)*UNITS(AxisY) NEXT NEXT步骤三调用二维螺距补偿指令启用二维螺距补偿功能。开始2D螺距补偿 WAIT IDLE PITCH2SET(1,StartMposX ,StartMposY,DisX,DisY,ColNumX,RowlNumY,TableId)步骤四发送运动指令根据实际的编码器反馈来验证控制器实际上发的脉冲数是否正确。开始运动 MoveTest(1,1,RunMode) MoveTest(2,1,RunMode) MoveTest(2,2,RunMode)步骤五验证效果。PSx轴和Y轴的脉冲当量均设置的是100000根据以上数据启用二维螺距补偿功能后运动到点【1,1】时根据实际发的脉冲数推算出实际运动的位置是【0.99999,0.99999】和【1,1】的脉冲误差也是在一个脉冲以内所以二维螺距补偿功能正常。MoveTest函数的实现GLOBAL SUB MoveTest(Pos1,Pos2,RunMode) MOVEABS(Pos1,Pos2) DELAY(1500) ?运动前编码器数据,TempVarX,TempVarY ?运动后坐标【TOSTR(Pos1,4,1),TOSTR(Pos2,4,1)】当前XY轴的ENCODER:,ENCODER(AxisX),ENCODER(AxisY) ?X轴实际补偿值,ENCODER(AxisX)-TempVarX-DPOS(AxisX)*UNITS(AxisX) ?Y轴实际补偿值,ENCODER(AxisY)-TempVarY-DPOS(AxisY)*UNITS(AxisY) IF RunMode0 THEN 工况1 ?X轴理论补偿值,-POS2*(COS(Angle*pi/180)/SIN(Angle*pi/180))*UNITS(AxisX),和实际有差值可能是脉冲当量的问题 ?Y轴理论补偿值,POS2*(1/(SIN(Angle*pi/180)) -1)*UNITS(AxisY),和实际有差值可能是脉冲当量的问题 ELSEIF RunMode1 THEN 工况2 ?X轴理论补偿值,POS1*0.1/0.9*UNITS(AxisX),和实际有差值可能是脉冲当量的问题 ?Y轴理论补偿值,POS2*0.1/0.9*UNITS(AxisY),和实际有差值可能是脉冲当量的问题 ELSEIF RunMode2 THEN 工况3 ?X轴理论停止位,((ENCODER(AxisX)-TempVarX)*0.5 (ENCODER(AxisY)-TempVarY)*0.9*COS(Angle*pi/180))/UNITS(AxisX) ?Y轴理论停止位,((ENCODER(AxisY)-TempVarY)*0.9*SIN(Angle*pi/180))/UNITS(AxisX) ENDIF ENDSUB08二维螺距补偿功能现场实战客户有一个激光切割机的机台需要使用二维螺距补偿指令来解决机台在不同位置受力不同机台形变不同导致的精度丢失问题。步骤一以轴的MPOS坐标【0,0】作为二维补偿的开始补偿的位置。步骤二以轴的MPOS坐标【40,40】作为第一个圆的圆心然后以阵列的方式通过激光在板子是画出4行4列的16个圆阵列X轴方向间距为40mmY轴方向间距为40mm。步骤三通过视觉找出这16个圆的圆心并把坐标填入到TABLE寄存器待处理。startposx0 开始补偿点X坐标 startposy0 开始补偿点Y坐标 disonex40 X轴的补偿点间距 disoney40 Y轴的补偿点间距 maxpointx4 X轴方向补偿点列数 maxpointy4 Y轴方向补偿点行数 tableindex1000 存储补偿点数据的TABLE起始地址步骤四通过视觉找出这16个圆的圆心并把坐标填入到TABLE寄存器待处理。步骤五计算各个补偿点的X和Y方向的脉冲补偿值(理论位置-实际位置)*Units。DIM i,j 更新二维螺距补偿表 For i0 to maxpointy-1 For j0 to maxpointx-1 TABLE(tableindex2*(ji*maxpointx)) UNITS(0)*((4040*j) - TABLE(tableindex2*(ji*maxpointx))) TABLE(tableindex2*(ji*maxpointx)1) UNITS(1)*((4040*i) - TABLE(tableindex2*(ji*maxpointx)1)) NEXT NEXT步骤六调用二维螺距补偿指令启用二维螺距补偿功能。DIM i,j 更新二维螺距补偿表 For i0 to maxpointy-1 For j0 to maxpointx-1 TABLE(tableindex2*(ji*maxpointx)) UNITS(0)*((4040*j) - TABLE(tableindex2*(ji*maxpointx))) TABLE(tableindex2*(ji*maxpointx)1) UNITS(1)*((4040*i) - TABLE(tableindex2*(ji*maxpointx)1)) NEXT NEXT步骤七发送运动指令读取编码器的原始值验证二维螺距补偿是否正常。DIM i,j 更新二维螺距补偿表 For i0 to maxpointy-1 For j0 to maxpointx-1 TABLE(tableindex2*(ji*maxpointx)) UNITS(0)*((4040*j) - TABLE(tableindex2*(ji*maxpointx))) TABLE(tableindex2*(ji*maxpointx)1) UNITS(1)*((4040*i) - TABLE(tableindex2*(ji*maxpointx)1)) NEXT NEXT步骤八测试的实际效果。完整代码获取地址▼本次正运动技术步进控制的光栅尺全闭环EtherCAT运动控制器ZMC432CL-V2快速入门二维螺距补偿(上)就分享到这里。正运动技术专注于运动控制技术研究和通用运动控制软硬件产品的研发是国家级高新技术企业。正运动技术汇集了来自华为、中兴等公司的优秀人才在坚持自主创新的同时积极联合各大高校协同运动控制基础技术的研究是国内工控领域发展最快的企业之一也是国内少有、完整掌握运动控制核心技术和实时工控软件平台技术的企业。主要业务有运动控制卡_运动控制器_EtherCAT运动控制卡_EtherCAT控制器_运动控制系统_视觉控制器__运动控制PLC_运动控制_机器人控制器_视觉定位_XPCIe/XPCI系列运动控制卡等等。

相关新闻

Edge SCDN是如何实现智能 WAF 防护的?

Edge SCDN是如何实现智能 WAF 防护的?

Edge SCDN 的智能 WAF 防护机制 Edge SCDN 通过结合机器学习、规则引擎和实时威胁情报,实现智能 WAF(Web 应用防火墙)防护。其核心能力包括动态规则更新、行为分析和自动化响应。 动态规则与机器学习结合 Edge SCDN 的 WAF 采用混合防护策…

2026/5/17 0:39:03 阅读更多 →
无人机视角智慧河道巡检河道违建河道违规建筑检测数据集VOC+YOLO格式1034张1类别

无人机视角智慧河道巡检河道违建河道违规建筑检测数据集VOC+YOLO格式1034张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数):1034标注数量(xml文件个数):1034标注数量(txt文件个数):1034标注类别…

2026/5/17 0:39:03 阅读更多 →
【收藏级干货】大模型技术演进全景图:从GPT-4到智能体的技术变革与未来趋势

【收藏级干货】大模型技术演进全景图:从GPT-4到智能体的技术变革与未来趋势

本文剖析了2023-2025年大模型从规模竞争向效率、推理与智能体三大技术支柱的战略转型。MoE架构和新型注意力机制解决效率瓶颈,thinking预算和强化学习提升推理能力,智能体功能实现工具交互。这一转变使LLM从文本预测器进化为通用问题解决系统&#xff0c…

2026/5/17 0:39:02 阅读更多 →

最新新闻

ICM-42688-P与PIC18F4680在工业自动化中的高效组合

ICM-42688-P与PIC18F4680在工业自动化中的高效组合

1. ICM-42688-P与PIC18F4680的黄金组合解析在工业自动化和机器人控制领域,传感器与微控制器的选型往往决定着整个系统的性能上限。ICM-42688-P作为TDK InvenSense推出的6轴MEMS运动传感器,其核心价值在于0.4A的低功耗模式下仍能保持4000dps的陀螺仪量程和…

2026/7/3 14:51:14 阅读更多 →
晋城酿造食品厂净化板如何选才能解决墙面难题

晋城酿造食品厂净化板如何选才能解决墙面难题

晋城本地特色食品以粮食醋发酵、杂粮深加工、小型卤味加工为主,大量酿造车间会长期挥发酸性气体,食品净化车间、无尘厂房改造经常遇到墙面腐蚀掉皮的困扰,和普通车间工况有明显区别,照搬通用板材很容易短期报废。 本地多家醋业厂房…

2026/7/3 14:45:10 阅读更多 →
HASL喷锡适配焊盘、孔径、板材、布局标准化设计规范

HASL喷锡适配焊盘、孔径、板材、布局标准化设计规范

HASL 批量生产出现堵孔、锡桥、露铜、焊盘共面度差、板材起泡翘曲等缺陷,七成根源并非制程管控问题,而是前期 PCB 布局、焊盘、孔径、板材选型未匹配喷锡工艺特性,设计先天存在 DFM 缺陷。本文从板材选型、焊盘结构、通孔孔径、大面积铜设计、…

2026/7/3 14:43:09 阅读更多 →
Kiran-Screensaver源代码架构分析:理解Qt屏保实现原理

Kiran-Screensaver源代码架构分析:理解Qt屏保实现原理

Kiran-Screensaver源代码架构分析:理解Qt屏保实现原理 【免费下载链接】kiran-screensaver This program provides screensaver backend. 项目地址: https://gitcode.com/openeuler/kiran-screensaver 前往项目官网免费下载:https://ar.openeuler…

2026/7/3 14:41:08 阅读更多 →
lboot单元测试实践:使用lboot-test-runner验证功能正确性

lboot单元测试实践:使用lboot-test-runner验证功能正确性

lboot单元测试实践:使用lboot-test-runner验证功能正确性 【免费下载链接】lboot a lightweight bootloader implemented by the Rust language 项目地址: https://gitcode.com/openeuler/lboot 前往项目官网免费下载:https://ar.openeuler.org/a…

2026/7/3 14:41:08 阅读更多 →
嵌入式开发笔记:CANopen相关移位运算与通信协议术语详解

嵌入式开发笔记:CANopen相关移位运算与通信协议术语详解

目录一、移位相关问题1.1 类型提升规则1.2 移位运算注意事项1.3 N位编码满量程值二、简称和符号含义2.1 通信协议相关**FDCAN****HSE****PLL****PCLK**2.2 CANopen 相关术语**PDO****SDO****PDO vs SDO 对比表****cob_id****CoE****BRS**2.3 数学符号三、交流与反馈欢迎大家有问…

2026/7/3 14:39:04 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻