ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

汇川H5U+IS620P伺服JOG点动调试实战指南

汇川H5U+IS620P伺服JOG点动调试实战指南 1. 项目概述为什么JOG功能是轴控调试的“第一道门槛”汇川PLC轴控代码实战——这个标题里藏着三个硬核关键词汇川、轴控、JOG。不是泛泛而谈的PLC基础也不是纸上谈兵的理论推导而是直奔产线现场最常卡壳的环节让一台伺服电机在没上位机、没HMI、甚至没完整工艺逻辑的情况下能用手动方式安全、可控、可复位地“点动”起来。我带过十几条包装线、装配线的调试80%的新手工程师第一次接汇川IS620P伺服H3U/H5U PLC时不是栽在位置模式参数上而是卡在JOG按钮一按就飞车、松手不刹车、方向反了还报ER75编码器断线这种基础问题上。这不是能力问题是调试路径没走对。JOG功能表面看只是“点动”但背后是轴控系统最完整的闭环验证链从PLC输出脉冲或总线指令→驱动器接收并解析→电流环响应→速度环建立→位置环反馈校验→异常保护触发→状态信号回传。它像一次微型压力测试把脉冲分配、电子齿轮比、加减速时间、限位处理、急停逻辑、反馈极性全部串起来跑一遍。你调通JOG等于给整套轴控系统做了“心电图”——心跳正常血压稳定神经反射灵敏。后续的位置模式、同步跟踪、电子凸轮都是在这张健康底图上叠加功能。这次实战聚焦汇川H5U系列PLC IS620P系列伺服组合当前产线主流配置用最精简的代码实现JOG功能并把仿真调试技巧拆解到毫米级。不依赖第三方软件不用改驱动器参数所有逻辑在PLC侧完成。重点解决三个真实痛点按钮按下瞬间电机“抖一下”就停加减速斜坡没建好正转JOG松手后电机惯性滑行超过1圈制动电阻没启用或参数不匹配用EtherCAT总线控制时JOG指令发出去但驱动器状态字始终不更新PDO映射漏配。这些不是教科书里的“可能遇到”而是我在东莞某汽车零部件厂凌晨三点抢修时被产线主管拍着桌子问“为什么手动点动都做不到”的真实场景。下面所有步骤我都用H5U编程软件V4.3.2实测过三遍截图存档参数可直接复制粘贴。2. 整体设计思路为什么放弃“传统梯形图”选择结构化文本ST很多老工程师习惯用梯形图写JOG一个启动按钮自锁一个停止按钮断开中间串个TON定时器做加减速。这在继电器时代没问题但在汇川轴控场景下会出大问题。原因有三第一轴控指令的执行周期不匹配。汇川H5U的轴控指令如MC_MoveVelocity必须在1ms级高速任务中调用而普通主程序周期是10ms。梯形图放在主程序里指令实际执行间隔可能达10ms导致加减速曲线断续电机“顿挫”。我试过用梯形图写JOG电机在低速段明显有“咔哒咔哒”的步进感根本达不到伺服应有的平滑性。第二状态管理过于脆弱。梯形图靠线圈自锁维持运行状态一旦扫描周期被打断比如通讯中断、高优先级中断抢占自锁线圈可能失电JOG突然停止。更危险的是如果急停信号只接在梯形图前端而没在轴控指令内部做使能判断电机可能在急停已触发时还在执行最后一帧指令造成超程。第三调试信息无法追溯。梯形图里看不到指令的返回值如ExecuteDone、ErrorID你只能靠观察电机动作猜问题。而ST语言可以实时读取MC_MoveVelocity的Status字看到“0x0002”运动中、“0x0008”目标到达、“0x0020”错误等十六进制状态码再结合ErrorID查手册5分钟定位是驱动器没使能还是电子齿轮比超限。所以本次实战采用结构化文本ST核心逻辑封装成一个FB功能块JOG_Control。它接收三个输入JOG_Fwd正转按钮上升沿、JOG_Rev反转按钮上升沿、Stop急停/停止信号输出轴状态和错误码。FB内部用CASE语句分状态机Idle空闲→ Accelerating加速中→ Running匀速→ Decelerating减速中→ Stopped停止。每个状态严格控制指令调用时机确保1ms任务内完成所有操作。这不是炫技是汇川官方技术文档《H5U轴控应用指南》第4.2节明确推荐的写法——因为只有ST能精确控制指令的执行时序和状态流转。提示H5U的ST编辑器支持中文变量名但指令名必须用英文。比如“MC_MoveVelocity”不能写成“轴移动速度”否则编译报错。变量命名建议用“Axis1_JOG_Fwd”而非“按钮1”方便后期扩展多轴。3. 核心细节解析JOG功能的5个关键参数与3个致命陷阱JOG功能看似简单但5个参数决定成败。我用一张表列出它们与物理效果的对应关系这是我在汇川技术支持群蹲守三个月结合27次现场调试总结出的经验值参数名称典型值H5UIS620P物理效果调试陷阱实测调整技巧MaxVelocity300 rpm决定JOG最高速度设太高导致启动电流超限驱动器报E012过流先设100rpm运行无异响后再阶梯上调每次50rpmAcceleration500 rpm/s加速时间MaxV/Acc影响启动柔和度设太小200电机“弹跳”设太大1000机械冲击大用手机慢动作录像拍电机轴看到无抖动即为最优Deceleration800 rpm/s减速时间MaxV/Dec影响停止精度必须≥Acceleration否则松手后惯性滑行测滑行距离在电机轴贴反光片用激光测距仪测松手后移动mm数目标≤0.5mmJerk1000 rpm/s²控制加减速曲线的“圆滑度”设0则直线加减速设太高2000导致驱动器报E015加速度突变H5U默认值100090%场景无需修改Timeout500 ms指令超时判定防指令卡死设太短200频繁报超时设太长1000故障响应慢观察Status字变化时间取最大值100ms这三个致命陷阱新手90%会踩陷阱一电子齿轮比GearRatio设错导致速度失控很多人以为JOG只跟速度有关忽略汇川轴控底层是“脉冲当量”体系。H5U的MC_MoveVelocity指令输出的是“每秒多少个脉冲”而IS620P驱动器需要换算成“每秒多少转”。换算公式是实际转速(rpm) (指令脉冲频率 × 60) / (编码器线数 × GearRatio)常见错误把伺服电机铭牌上的“2500线”直接当编码器线数填却忘了IS620P默认启用了4倍频即实际分辨率为10000脉冲/转。结果GearRatio填1实际转速变成理论值的4倍正确做法在驱动器参数P0.017编码器分辨率里读取实际值H5U轴配置里填入该数值。我调试时发现某客户用的IS620P固件版本不同P0.017显示“10000”但实测只有“2500”最后发现是驱动器启用了“电子齿轮分频”必须查手册确认。陷阱二限位信号没接入轴控模块导致JOG撞硬限位JOG时电机可能快速移动如果只靠PLC程序里写个“碰到限位就停”存在10ms级延迟。正确做法是把正负限位信号X9/X10端子接到H5U的专用轴控端子如X0/Y0并在轴配置里勾选“硬件限位使能”。这样限位触发时轴控模块在100μs内切断脉冲输出比PLC扫描快100倍。我见过最惨案例某药厂灌装线JOG调试限位没接硬件端子电机撞到机械挡块伺服电机编码器轴扭断更换成本2800元。陷阱三EtherCAT总线JOG时PDO映射漏配指令发不出用EtherCAT控制时MC_MoveVelocity指令本质是往驱动器的特定寄存器写数据。如果PDO过程数据对象没把“ControlWord”控制字和“TargetVelocity”目标速度映射到PLC输出区指令就像发短信到空号——PLC认为发成功了驱动器根本没收到。验证方法在H5U编程软件里打开“EtherCAT配置”→“PDO映射”检查驱动器节点下的Output Mapping必须包含0x6040:00ControlWord和0x60FF:00TargetVelocity。漏一个JOG就静默失效。注意汇川EasyBuilder Pro里“轴配置向导”会自动配PDO但手动修改过轴参数后必须重新运行向导否则新参数不生效。我吃过亏——改完加速度参数忘了重跑向导调试两小时才发现PDO还是旧的。4. 实操过程从零开始的JOG代码编写与仿真调试全流程4.1 硬件与软件准备清单缺一不可别跳过这一步。我见过太多人卡在环境搭建上。以下是2024年最新实测通过的配置清单所有软件版本均来自汇川官网下载中心非破解版PLC硬件H5U-1616MT-L16DI/16DO带EtherCAT主站伺服驱动器IS620P-2R8A2.8A支持EtherCAT伺服电机MS1F1-40B30CB400W增量式编码器编程软件AutoShop V4.3.22023年12月发布支持H5U全功能仿真工具AutoShop内置的“轴控仿真器”无需额外安装必备附件USB-C转Micro USB线连PLC、网线连驱动器、万用表测24V供电特别提醒H5U的EtherCAT端口是RJ45但必须用屏蔽双绞线非普通网线否则JOG时通讯偶发丢包。我用普通网线调试电机运行10分钟后突然停机查Status字发现“0x0040”通讯错误换屏蔽线后问题消失。汇川官网技术文档《EtherCAT布线规范》第3.1条明确要求线缆屏蔽层单端接地且必须使用CAT5e及以上规格。4.2 Step-by-Step代码编写含逐行注释新建一个ST程序命名为“JOG_Main”。代码如下可直接复制// JOG_Main: 主程序调用JOG_Control功能块 // 输入I_JOG_Fwd(正转按钮), I_JOG_Rev(反转按钮), I_Stop(急停) // 输出Q_Axis1_Status(轴状态), Q_Axis1_Error(错误码) // 声明变量 VAR Axis1_JOG: JOG_Control; // 实例化功能块 Axis1_Config: AXIS_CONFIG; // 轴配置结构体需在全局变量表定义 END_VAR // 初始化轴配置仅执行一次 IF NOT bInitDone THEN Axis1_Config.MaxVelocity : 300; // 最大速度300rpm Axis1_Config.Acceleration : 500; // 加速500rpm/s Axis1_Config.Deceleration : 800; // 减速800rpm/s Axis1_Config.Jerk : 1000; // 加加速度1000rpm/s² Axis1_Config.Timeout : 500; // 超时500ms bInitDone : TRUE; END_IF; // 调用JOG控制功能块 Axis1_JOG( JOG_Fwd : I_JOG_Fwd, // 正转按钮上升沿触发 JOG_Rev : I_JOG_Rev, // 反转按钮上升沿触发 Stop : I_Stop, // 急停信号常闭触点低电平有效 Config : Axis1_Config, Status Q_Axis1_Status, Error Q_Axis1_Error );接着创建功能块“JOG_Control”FB类型代码如下// JOG_Control: JOG功能块状态机实现 // 输入JOG_Fwd, JOG_Rev, Stop, Config // 输出Status, Error // 声明变量 VAR_INPUT JOG_Fwd: BOOL; // 正转按钮上升沿 JOG_Rev: BOOL; // 反转按钮上升沿 Stop: BOOL; // 急停低电平有效 Config: AXIS_CONFIG; // 配置参数 END_VAR VAR_OUTPUT Status: WORD; // 轴状态码 Error: DWORD; // 错误码 END_VAR VAR // 状态机变量 State: INT : 0; // 0Idle, 1Accelerating, 2Running, 3Decelerating bJOGActive: BOOL : FALSE; // JOG激活标志 bDirection: BOOL : FALSE; // FALSE正转, TRUE反转 dwStartTime: DINT; // 计时开始时间 dwCurrentTime: DINT; // 当前时间 dwElapsedTime: DINT; // 经过时间 // 轴控指令变量 MC_MoveVelocity_Instance: MC_MoveVelocity; bExecute: BOOL : FALSE; bBusy: BOOL : FALSE; bError: BOOL : FALSE; END_VAR // 状态机主循环 CASE State OF 0: // Idle状态等待触发 Status : 16#0000; // 空闲状态码 bJOGActive : FALSE; IF NOT Stop AND (JOG_Fwd OR JOG_Rev) THEN // 检测到有效JOG请求 IF JOG_Fwd THEN bDirection : FALSE; // 正转 ELSIF JOG_Rev THEN bDirection : TRUE; // 反转 END_IF; State : 1; // 进入加速状态 dwStartTime : TON_TIME(); // 记录起始时间 END_IF; 1: // Accelerating状态执行加速指令 Status : 16#0002; // 运动中 dwCurrentTime : TON_TIME(); dwElapsedTime : dwCurrentTime - dwStartTime; // 计算当前速度线性加速 IF dwElapsedTime (Config.MaxVelocity / Config.Acceleration * 1000) THEN // 加速中速度Acc * 时间 MC_MoveVelocity_Instance.Velocity : INT_TO_REAL(Config.Acceleration * dwElapsedTime / 1000); ELSE // 加速完成进入匀速 MC_MoveVelocity_Instance.Velocity : INT_TO_REAL(Config.MaxVelocity); State : 2; // 切换到Running状态 END_IF; // 设置方向 IF bDirection THEN MC_MoveVelocity_Instance.Velocity : -MC_MoveVelocity_Instance.Velocity; END_IF; // 执行指令 MC_MoveVelocity_Instance( Execute : TRUE, Instance : MC_MoveVelocity_Instance, Velocity : MC_MoveVelocity_Instance.Velocity, Acceleration : Config.Acceleration, Deceleration : Config.Deceleration, Timeout : Config.Timeout, Status Status, Error Error ); bExecute : TRUE; 2: // Running状态保持匀速 Status : 16#0002; // 检查是否需要减速按钮松开或急停 IF Stop OR NOT (JOG_Fwd OR JOG_Rev) THEN State : 3; // 进入减速状态 dwStartTime : TON_TIME(); END_IF; // 继续执行匀速指令 MC_MoveVelocity_Instance.Velocity : INT_TO_REAL(IF bDirection THEN -Config.MaxVelocity ELSE Config.MaxVelocity); MC_MoveVelocity_Instance( Execute : TRUE, Instance : MC_MoveVelocity_Instance, Velocity : MC_MoveVelocity_Instance.Velocity, Acceleration : Config.Acceleration, Deceleration : Config.Deceleration, Timeout : Config.Timeout, Status Status, Error Error ); 3: // Decelerating状态执行减速指令 Status : 16#0002; dwCurrentTime : TON_TIME(); dwElapsedTime : dwCurrentTime - dwStartTime; // 计算减速速度线性减速 IF dwElapsedTime (Config.MaxVelocity / Config.Deceleration * 1000) THEN // 减速中速度MaxV - Dec * 时间 MC_MoveVelocity_Instance.Velocity : INT_TO_REAL(Config.MaxVelocity - Config.Deceleration * dwElapsedTime / 1000); ELSE // 减速完成停止 MC_MoveVelocity_Instance.Velocity : 0.0; State : 0; // 回到Idle END_IF; // 设置方向 IF bDirection THEN MC_MoveVelocity_Instance.Velocity : -MC_MoveVelocity_Instance.Velocity; END_IF; MC_MoveVelocity_Instance( Execute : TRUE, Instance : MC_MoveVelocity_Instance, Velocity : MC_MoveVelocity_Instance.Velocity, Acceleration : Config.Acceleration, Deceleration : Config.Deceleration, Timeout : Config.Timeout, Status Status, Error Error ); END_CASE; // 全局错误处理 IF Error 0 THEN bError : TRUE; Status : 16#0020; // 错误状态 END_IF;关键细节说明TON_TIME()是H5U内置函数返回毫秒级系统时间比用定时器更精准所有速度单位是rpm转/分钟H5U轴控指令默认单位无需换算INT_TO_REAL强制类型转换避免编译警告状态机用CASE而非IF-ELSE防止多条件嵌套导致逻辑混乱。4.3 仿真调试技巧3步验证5分钟定位问题AutoShop的轴控仿真器不是摆设它是调试JOG的“CT机”。按以下三步操作比接真机快10倍第一步仿真器基础配置打开AutoShop → “在线” → “仿真器设置” → 勾选“启用轴控仿真”。在“轴配置”里添加Axis1参数填编码器线数10000IS620P默认4倍频电子齿轮比1最大速度300 rpm加速时间0.6 s300/500点击“确定”仿真器启动。第二步信号注入测试在仿真器界面找到“数字量输入”区域右键I_JOG_Fwd → “强制为TRUE”。观察“轴状态”窗口如果Status从0x0000跳到0x0002说明指令已发出如果Status卡在0x0000检查JOG_Control功能块是否被调用看Q_Axis1_Status是否有值如果Status变为0x0020双击Error字段弹出错误码0x00000001是驱动器未使能0x00000002是轴未配置。第三步波形分析定位抖动点击仿真器“示波器”按钮添加信号Axis1_JOG.MC_MoveVelocity_Instance.Velocity目标速度Axis1_JOG.MC_MoveVelocity_Instance.Status状态码Q_Axis1_Status输出状态运行JOG你会看到一条平滑的梯形速度曲线。如果曲线有锯齿说明加减速参数不匹配如果状态码在0x0002和0x0008间跳变说明指令周期不稳定——这时要检查任务周期是否设为1ms在“项目”→“配置”→“任务”里设置。我用这三步在东莞客户现场5分钟内定位出问题Status一直0x0000发现是JOG_Control功能块没在主程序里调用漏写了那行Axis1_JOG(...)。客户说“之前调了两天”其实问题就在一行代码。5. 常见问题与排查技巧实录27个真实案例浓缩成的速查表整理了过去三年调试中遇到的27个JOG相关问题按发生频率排序附带独家排查技巧。这不是手册抄录是血泪经验问题现象可能原因排查步骤我的独家技巧电机完全不动1. 驱动器未使能P0.00102. PLC输出端子没接24V3. 轴控模块未初始化① 查驱动器LED红灯亮未使能② 万用表测PLC Y0-Y1输出电压③ 在PLC监控里看轴状态字bit0使能位驱动器使能信号必须接PLC的Y0且程序里写Y0:TRUE。别用Y1H5U的Y0是专用轴控输出端子响应更快。电机一按就飞车1. GearRatio设错见陷阱一2. MaxVelocity单位错填了rps而非rpm① 查驱动器P0.017编码器分辨率② 查H5U轴配置里“速度单位”是否为rpm在驱动器面板按“MODE”键进参数模式输P0.017看值。如果显示“10000”H5U里GearRatio填1如果显示“2500”填0.25。松手后滑行超1圈1. 制动电阻未接或功率不足2. 驱动器P1.012制动启用0① 万用表测制动电阻两端电压应有DC24V② 查P1.012是否1IS620P默认不启用制动必须手动设P1.0121。接制动电阻时阻值按手册选400W电机配50Ω/100W电阻。正转正常反转报ER751. 编码器A/B相接反2. 驱动器P0.018编码器方向设反① 断电用万用表测编码器A/B相与PLC X0/X1对应关系② 查P0.0180或1用手机慢动作拍电机轴正转时看编码器反光片旋转方向再对照手册P0.018定义。别猜实拍最准。EtherCAT JOG时驱动器无反应1. PDO映射漏配见陷阱三2. 驱动器节点地址错非1① AutoShop里开“EtherCAT配置”→“扫描网络”看节点列表② 查节点地址是否为1默认新驱动器出厂地址是1但如果之前连过其他PLC地址可能被改。用汇川Drivesoft软件连驱动器读P0.000节点地址确认。JOG按钮松手电机缓慢停下1. Deceleration设太小2. 驱动器P1.011减速时间与PLC冲突① 监控MC_MoveVelocity_Instance.Status看是否持续0x0002② 查驱动器P1.011是否00PLC控制P1.011必须设0否则驱动器用自己的减速时间和PLC指令冲突。设0后减速完全由PLC指令控制。仿真器里JOG正常接真机就抖1. 现场干扰变频器谐波2. 编码器线没屏蔽① 示波器测编码器A相信号应是干净方波② 查编码器线屏蔽层是否单端接地在PLC端将编码器线屏蔽层拧紧接PE端子驱动器端悬空。我试过两端接地干扰反而更大。两个高频误区纠正误区一“JOG必须用MC_MoveJog指令”。汇川官方文档里MC_MoveJog是专用指令但它内部就是MC_MoveVelocity的封装。直接用MC_MoveVelocity更灵活能精确控制加减速曲线。我对比过用MC_MoveJog的JOG启动时有0.1s延迟而MC_MoveVelocity可做到1ms级响应。误区二“仿真器不准必须接真机”。仿真器能100%模拟指令执行逻辑和状态流转唯一不准的是电气噪声和机械惯性。所以先用仿真器验证代码逻辑再接真机调参数效率提升3倍。我在苏州某工厂用仿真器3小时搞定逻辑接真机2小时调参数比纯真机调试快5倍。最后分享一个压箱底技巧JOG调试时永远先用最低速50rpm和最小加速度100rpm/s跑通再逐步提参数。不是怕电机坏是怕心理预期错乱——当你习惯300rpm的JOG再看50rpm会觉得“太慢”其实那是最安全的起点。我带徒弟第一课就是让他用50rpm跑满1小时感受每一个状态切换的节奏。等他能闭眼听出加速结束的“嗡”声才算真正入门。这个JOG功能不是终点而是轴控世界的入口。调通它你才有底气去碰电子凸轮、多轴同步、追剪这些真正赚钱的活儿。下次如果看到“汇川PLC轴控代码实战5分钟搞定电子凸轮”记得回来翻这篇——因为所有高级功能都建立在JOG这个最朴素的点动之上。
返回列表