资讯动态

汇川H3U多轴混控模板设计:3步进3伺服CANlink总线与触摸屏配方实战

发布时间:2026/10/21 17:39:26 来源:尧图企业网站定制
很多同行看到“汇川H3U 三个步进 三个伺服伺服还走CANlink”这种组合第一反应就是程序会不会很乱步进要发脉冲伺服要写总线触摸屏还要来回切画面一套下来光地址规划就够头疼的。这套配置我前后做过两条线一条贴标一条锁螺丝设备结构几乎一模一样后来我干脆把程序抽出来做成了模板——所有轴控逻辑都抽象成同一套块换设备只改配方和参数。这篇就围绕这套“3步进3伺服”的PLC和触摸屏模板把框架、关键程序节点、配置流程和现场踩过的坑一次讲透打算拿这块模板做底子去套新项目的工程师可以直接参考。1. 3步进3伺服混搭模板总体架构与设计思路1.1 六个轴为什么这样分三台步进加三台伺服听起来像是把设备强行拼起来实际上这是中小型自动化设备里非常常见的配置。拿贴标机举例送标、覆标、压标这几个动作对位置精度和响应速度要求高必须用伺服才能保证每次标签位置稳定而上料输送、分料、下料搬运这类动作纯粹是“把东西从A点送到B点”没有闭环反馈也不影响产品质量用步进就够成本能省下不小一块。所以模板第一步不是先写程序而是先定好一个原则伺服干高精度的活步进干搬运的活。这样你在复用模板的时候才有判断依据——某个轴要不要换成伺服不是看心情而是看这个工位是否有闭环定位需求、有没有编码器反馈位置的必要。从控制方式上看三个伺服走CANlink总线三个步进用高速脉冲口两条链路在H3U里其实是“混跑”的。CANlink负责伺服的目标值下发和状态读取脉冲口负责步进的频率和方向控制。模板要做的事就是把这六根轴在程序里统一成同一种“轴对象”不管它后面接的是伺服还是步进程序里都只看到一个目标位置、一个当前速度、一个使能信号、一个报警状态。1.2 模板的核心思想抽公共、留接口所谓的程序模板不是把一套设备程序拷贝出来改改地址就完事而是把所有设备里“不会变的那部分”抽出来把“一定会变的那部分”做成接口。不会变的是什么是轴控的基础逻辑轴的启动、停止、点动、回原点动作流程轴状态的切换空闲、运行中、完成、报警手动和自动模式的权限切换报警上报和复位机制触摸屏上显示的位置、速度、状态变量的刷新会变的是什么是工艺参数和机构参数每个轴的脉冲当量、电子齿轮比目标位置、运行速度、加减速时间原点信号类型、回原速度设备动作顺序、工位延时模板把“不会变”的部分做成固定的程序段把“会变”的部分集中在几个指定的D区地址和触摸屏配方里。这样新项目来了不需要重新写PLC逻辑只要在触摸屏上换个配方、对着机构标定一下参数程序就活了。我在第一次做这套模板时最大的教训就是不要把工艺动作写死在主程序里。第一版模板把贴标的三步动作直接按顺序编程换到锁螺丝机时整个动作顺序全对不上后来改成“先定义工序表动作按工序表执行”的框架设备之间的切换才真正轻松起来。1.3 为什么伺服选CANlink而不是直接发脉冲有人会问伺服反正就三个直接像步进一样用脉冲控制不行吗如果伺服自带脉冲接口从原理上说确实可以但在实际项目里我不建议这么干。首先是H3U的高速脉冲输出点有限。三个步进已经占掉了三个脉冲口如果再塞三个伺服要么换更大点的PLC要么加扩展模块成本瞬间就上去了。其次是接线量六个电机全用脉冲方式每台伺服至少是脉冲方向两根信号线加上编码器反馈线、使能线电柜里的线多到怀疑人生。而伺服走CANlink之后整个伺服回路就是一根通讯线串下来手拉手菊花链机柜清爽很多排查断线也容易。第三是参数下发和监控能力。步进系统只有脉冲驱动器上有什么报警、电机实际负载多少、当前位置反馈是多少PLC统统不知道。伺服走CANlink之后PLC可以直接读写伺服对象字典里的目标位置、实际位置、控制字、状态字甚至在程序里下发速度、读取扭矩和报警代码。这些数据对调试、维护、远程诊断都很有价值。所以模板里伺服走CANlink不是“为了显得先进”而是从成本、接线、可维护性三个角度综合选出来的方案。步进保持脉冲是因为步进驱动器本身对总线支持很弱而且脉冲控制完全够用没必要硬套总线。2. PLC程序模板轴地址规划、状态机与总线映射2.1 软元件地址规划是一门基本功程序模板能不能复用一半取决于你的地址规划是否“有规律”。很多设备程序乱不是因为逻辑写得多差而是今天用D100明天用D101后天又跳到D500新来的人一看头都是大的。这一套模板里我采用的是“一个轴一段地址”的方式。六个轴每轴固定占用一段D区段内再按固定偏移定义参数。规划方式如下地址段轴号用途D1000~D1019轴1步进1D1020~D1039轴2步进2D1040~D1059轴3步进3D1060~D1079轴4伺服1CANlink站点1D1080~D1099轴5伺服2CANlink站点2D1100~D1119轴6伺服3CANlink站点3每段里再细分偏移例如偏移含义数据类型OB00目标位置DINTOB04当前实际位置DINTOB08运行速度DINTOB12加速时间DINTOB14减速时间DINTOB16回原速度DINTOB18状态字INTOB19报警字INT地址段之间的间隔取20个D是因为32位数据占两个D留出余量给后续扩展。比如以后要给轴加个“当前位置补偿值”可以直接塞在空白偏移里不用把整段地址重新编号。M区也按同样思路划分M100~M199是六个轴的公共控制位M200~M299是六个轴的动作标志位M300以上留给报警和模式切换。只要地址规律立住了程序、触摸屏变量、调试监控三边都能高效对上。2.2 轴控制状态机的实现思路轴控程序最忌讳把逻辑写成“散装梯形图”。我这套模板的做法是给每个轴建一个状态机用“状态”来驱动执行流程。每个轴的定义状态如下状态0空闲轴停在当前位置等待指令状态1运行中正在按目标位置和速度运动状态2完成动作执行完毕等待下一轮指令状态3回原点中正在执行回原动作状态9报警识别到驱动报警或超时等待复位写出来示意大致是这个样子CASE eAxisState OF 0: (* 空闲 *) IF bRun THEN eAxisState : 1; END_IF; IF bHome THEN eAxisState : 3; END_IF; 1: (* 运行中 *) IF bMoveDone THEN eAxisState : 2; END_IF; IF bAlarm THEN eAxisState : 9; END_IF; 2: (* 完成 *) IF NOT bRun THEN eAxisState : 0; END_IF; 3: (* 回原点 *) IF bHomeReady THEN eAxisState : 2; (* 回原完成后按完成处理 *) END_IF; 9: (* 报警 *) IF bReset THEN eAxisState : 0; END_IF; END_CASE;这段逻辑的价值在于不管是点动、定位、回原点还是报警复位最终都收敛到同一个状态机里处理。触摸屏上的状态显示、PLC里的联锁判断、报警复位按钮全都可以基于这个状态字去写不用每个按钮都单独写一套分支。写梯形图的时候同样按状态机思路去组织。动作的触发条件统一整理成“满足条件才给脉冲”比如轴要运行前提必须是模式在自动、轴在空闲、急停未触发、伺服使能已就绪、原点已完成。把这些前提条件集中放到起保停电路前面逻辑就非常干净。2.3 伺服CANlink与步进脉冲的差异处理虽然程序里把六个轴统一成“轴对象”但电机层面的控制指令差别还是很大模板里必须单独做两层驱动。步进这边是纯脉冲输出。程序里主要就是定位指令和速度指令两条路定位控制用相对定位指令DDRVI指定脉冲数和速度脉冲输出点与方向点按轴规划。点动/速度控制用PLSY连续脉冲输出触摸屏按下点动按钮时输出松开停止。对于步进我把加减速斜坡直接放在PLC侧处理也就是说每次定位都给足够长的加减速时间而不是让一瞬间的高频脉冲把电机逼到丢步。伺服走CANlink则是另一套写法。H3U做主站时每个伺服站点在配置界面里会映射出一组D区地址PLC直接读写这些地址就像读写伺服内部寄存器。模板里控制的几个关键量是控制字伺服使能、报警复位、伺服回原点触发目标位置PLC下发的位置目标值目标速度速度模式下使用点动时可持续刷新状态字读取伺服当前状态、是否就绪、是否报警实际位置回读电机编码器反馈值用于触摸屏显示对于伺服点动和步进用脉冲频率调节不同CANlink伺服点动是通过不断刷新目标速度寄存器实现的。实际操作中要留意速度值发送到伺服的周期一定要稳定否则会出现电机一顿一顿的现象。建议在PLC里做一个固定20ms周期的点动刷新任务只在点动按钮按下时往速度寄存器写速度松开就写0。2.4 原点回归逻辑的两种走法六个轴都要回原点但回原方式因为电机类型不同被拆成两条路。步进的回原用PLC的ZRN指令找近点信号。近点信号一般接在PLC的X输入点上接近开关或者光电开关都行。ZRN指令需要设置高速找原速度和爬行速度关键点在于第二段速度一定要放慢否则每次停下来的位置都会有偏差。模板里的参数页专门留了“回原速度”和“爬行速度”两个参数现场调试时根据机械惯性调直到连续回十次原点、位置偏差都在允许范围内为止。伺服的回原则更简单可靠直接利用伺服驱动器内部回原功能。通过CANlink下发回原触发控制字伺服自己去找原点开关和Z相信号回原完成后会向PLC上报状态字PLC再读取伺服实际位置并把它当作零点基准。这种做法的好处是伺服回原精度由编码器Z相保证不受PLC扫描周期影响比用脉冲形式回原稳得多。模板里有个容易被忽略的点回原点完成后步进的当前坐标和伺服的当前坐标怎么清零如果是步进PLC在做完ZRN之后直接把当前坐标寄存器清零即可。伺服则会在回原完成后由驱动器内部令位置计数器归零PLC回读到的实际位置自然就是0。两种机制不一样但最终都能得到统一零点后续定位指令都以这个零点为基准。3. 触摸屏程序模板画面框架、手动自动页与配方3.1 页面框架先定哪几页是必须的触摸屏程序模板容易犯的毛病是一页一页堆画面最后几十页连自己都找不到变量在哪。我建议不管设备多复杂先守住几页固定框架首页设备总体状态、当前工作模式、计数、节拍手动页六个轴各自的点动、回原点、清零操作区自动页启动、暂停、停止、复位工序状态指示参数页各轴位置、速度、加减速、回原速度的设定区配方页多个产品参数的切换与下发报警页当前报警列表和报警历史这套模板用的是汇川IT系列触摸屏和配套组态软件。页面之间的切换按钮统一放在右上角状态栏固定显示当前模式、急停状态、伺服报警状态。这样操作工和调试人员上手速度都很快画面再多也不会迷路。3.2 手动页面的操作细节与互锁手动页是整个模板里最需要花心思的页面。六个轴放在同一页上如果布局不清晰操作工很容易按错按钮。我采用每轴一个操作小组的方式左侧是轴的名称和当前位置、当前速度显示中间是正向点动和反向点动两个按钮右侧是回原点和位置清零按钮。每个按钮对应PLC里的一个M地址触摸屏上按钮类型选择“置位/复位”按下时M点置位松开时复位PLC实时响应。点动按钮必须做互锁。正转点动按下时反转点动不能同时有效否则两条指令打架PLC扫描到哪个算哪个现场操作非常危险。互锁我放在PLC侧做只有轴状态在空闲或手动模式下点动输出才允许动作一旦检测到反向点动信号正向点动输出立即切断。回原点按钮同样要做条件限制如果轴正在运行中回原点指令不执行如果急停没复位所有轴的回原和点动全部禁止。这些限制条件全部写在PLC程序里触摸屏只负责下发请求不能依赖触摸屏的逻辑来处理安全互锁。3.3 自动画面与生产数据自动画面是操作工每天看得最多的页面重点不是花哨而是把核心信息放到一眼能看到的位置。我固定放了这些元素启动、暂停、继续、停止、复位五个常用按钮当前工序名称和完成度指示生产计数完成数、目标数、不良数当前节拍时间六个轴是否完成动作的状态灯自动流程的触发是这样的操作工按下启动PLC判断所有轴原点已就绪、伺服使能正常、急停未触发然后开始执行工序表。每完成一个工序计数加一工序号切换到下一步。暂停按钮只是暂停当前工序的动作等再次按下继续时接着做。状态灯的变量来源就是PLC里轴结构的状态字和报警字。这一步我在模板里做得比较死六个轴的状态字固定映射到六个指定的D区地址触摸屏画面直接读这些地址新增设备复制画面时不用改任何变量只改数量。3.4 配方参数页背后的变量映射配方功能是模板复用的真正命脉。所谓换设备只改配方靠的就是这一页。配方参数通常包含每个轴的目标位置、运行速度、加减速时间、回原速度以及各工序之间的延时时间。整套参数在触摸屏配方组件里按“产品号”存储切换产品时一条指令把所有参数写进PLC的轴地址区。实现时要注意变量映射的一致性。比如轴1的目标位置在PLC里是D1000和D1001触摸屏配方字典里的变量就必须精确对应到这个地址不能靠画面按钮去转发。用变量直接关联的好处是配方一次下发几十个数据PLC不用逐条接收直接在同一帧里更新完毕动作切换时不会出现“前半段参数是新产品、后半段参数还是老产品”的错位情况。在配方页上我额外加了一个“参数核对”显示区。下发配方后触摸屏把PLC里最新的实际参数读回来显示在屏幕上。操作工可以肉眼比对一下下发值和实际值是否一致。这个功能在初期调试时帮我抓出过好几次变量对应错位的低级问题。4. 从配置到联调CANlink伺服、步进驱动与HMI完整实操流程4.1 PLC侧项目搭建与CANlink主站参数新建工程时PLC型号选H3U别选错成H1U之类的老平台。工程建好后先干三件事。第一件事是规划高速脉冲输出口。三个步进占用三个脉冲口和三个方向口例如Y0、Y1、Y2做脉冲Y3、Y4、Y5做方向。程序里所有步进定位指令都固定指向这些口换设备也不要改程序最多改机械脉冲当量。第二件事是设置以太网IP。H3U默认带网口触摸屏和PLC通过以太网通信时需要保证两个设备在同一网段。建议给PLC固定一个IP比如192.168.0.10触摸屏设为192.168.0.20调试时用网线直连现场走交换机。IP地址必须在项目启动第一天就定下来后期再改会累死一堆变量。第三件事是配置CANlink主站。在编程软件的CANlink配置界面里使能主站功能波特率选1Mbps然后把三个伺服站点加进去分别定义站点号。站点号必须和伺服驱动器上实际设置的站号一致这个环节最容易出错。我的经验是每次上电前先看一圈伺服数码管显示的站号确认1号、2号、3号都在线再动PLC程序。4.2 伺服与步进驱动器的参数准备伺服驱动器上电后第一件事是把运行模式切到CANlink总线控制模式。不同批次驱动器的参数位置略有区别但核心要确认几个点站号、波特率、电机方向、电子齿轮比。电子齿轮比的计算要结合机械结构来定。假设电机轴连的是丝杆导程是10毫米电机每转一圈工作需要10000个编码器脉冲那么PLC下发10000个单位电机走10毫米。这个换算关系直接影响定位精度一定要按实际机械传动比算清楚不要想当然用默认值。查电子齿轮比的方法很简单让伺服点动走一小段用百分表或卷尺量出实际移动距离然后和PLC下发的理论距离对比做一次除法换算。模板里把伺服“每单位对应多少脉冲”做成参数项就是方便现场直接标定。步进驱动器这边相对直接些主要是设好细分和脉冲模式。细分决定每圈需要多少个脉冲细分越高低速转动越平顺但PLC输出频率的上限会被更快耗尽。比如电机200步一圈驱动器细分设置后可能变成每圈1600或3200个脉冲。脉冲当量的计算公式是“导程除以每圈脉冲数”以导程10毫米、1600脉冲每圈为例每个脉冲对应0.00625毫米这个数值填进PLC的脉冲当量参数里触摸屏就能直接显示毫米位置。4.3 触摸屏组态工程与连接设置触摸屏工程和PLC工程是两个独立项目但变量表必须对齐。组态时的操作顺序我建议是这样先建通信连接设备类型选H3U以太网填入PLC的IP地址通信测试通过后再建立变量字典。变量字典里的每一个变量都要对应到PLC的软元件地址。手动页面用到的按钮、显示框直接绑定M和D地址不要写中间变量去转圈否则后期排查问题要多查一层。IT7000组态软件里有变量导入功能可以利用PLC里定义的标签直接导入到触摸屏工程里。这个功能强烈建议用起来原因很简单手工维护几百个变量非常容易拼错自动导入可以保证地址完全一致。画面做完别急着上机先在组态软件里做离线模拟把配方切换、按钮置位这些基本动作验证一遍能提前筛掉一批变量绑定错误。4.4 联调顺序先单机后联动设备通电后的联调顺序我坚持“先单轴再单系统最后整机联动”三步走。第一步单轴点动。六个轴挨个在手动页面点动确认每一轴的运动方向正确。方向反了的轴不要去PLC程序里改符号而应该先回驱动器调整方向参数。程序层面强行反向会导致触摸屏显示和实际位置经常对不上后面调试会非常痛苦。第二步单轴回原点。每个轴单独回原点连续执行五次以上观察回原后的位置重复精度。如果步进出现回原位置漂移就把爬行速度调低如果伺服回原位置不稳定优先查原点开关信号和伺服回原参数。第三步整机自动联动。把六个轴按工序表串起来跑空循环重点观察两个点一是工序切换的节拍是否稳定二是多轴同时动作时有没有程序扫描顺序造成的动作冲突。发现相邻工序之间存在“抢时间”问题不要急着调程序先看是不是某轴动作完成信号报得慢了把完成信号的判断条件调准往往比加延时更实用。5. 调试踩坑实录掉站、丢步与原点漂移排查5.1 CANlink从站上不了线伺服CANlink从站上不了线是这套模板里最容易踩的坑而且现象很有迷惑性面板上报警灯闪烁操作屏上这个轴的位置数字完全不动看起来像PLC没发指令实际上是总线根本没建立通信。排查顺序我固定这样走先看伺服数码管站号是否和PLC配置一致再看通讯波特率是否匹配所有站点必须同为1M或500K最后检查终端电阻CANlink总线的两端如果没有接120欧终端电阻长距离或者多站点时经常出现随机掉站。有一个小习惯帮我省了很多事在每个伺服站点的总线端子旁边贴上站号和波特率标签。现场维护人员不一定都懂参数但只要看标签就知道该调哪里。上电后如果还有个别从站掉线不要带电插拔总线接头直接断电把这一段线路重新压一遍很多“总线不稳”其实是网线压接端子松了。5.2 步进运行中丢步步进丢步的经典现象是定位执行完了触摸屏显示位置已经到了但产品实际位置肉眼可见偏了而且越跑越偏。丢步的原因七成出在加减速和负载上。电机从静止突然被要求高速转起来或者到位时瞬间刹停中间的惯性力矩就会让电机跟不上脉冲指令每丢一拍就是一个角度差累积起来位置自然就偏了。模板里把加减速时间常设为200到300毫秒现场再根据负载调整目的就是让电机平稳起步和停止。另外要注意脉冲线的抗干扰问题。步进信号线最好用双绞屏蔽线而且屏蔽层要单端接地。我在一条设备上遇到过莫名丢步换了减速参数没用最后发现是脉冲线贴着伺服动力线走了一长段拉开距离并换了屏蔽线之后问题才消失。走线问题要留到项目初期解决等设备立起来再改线要浪费半天时间。5.3 回原点位置不稳定回原点位置不稳定最常发生在步进轴上。现象是每次开机回原后第一个产品的加工位置都不一样偏差可能几毫米。排除机械松动之后优先怀疑近点信号的处理方式。如果PLC直接采集未滤波的开关信号开关抖动会让ZRN指令在不同的抖动沿停下来。对策是把回原分成两段第一段用较快速度找到近点开关的上升沿然后稍微后退一点第二段用很慢的爬行速度再次找同一个开关沿。两次找的沿一致停点就稳定了。伺服轴回原漂移多数是原点信号接到伺服DI之后没有正确设置成回原输入。检查伺服回原参数确认近点信号源选的是DI还是软件设定Z相是否参与最终锁存。伺服内部回原通常能到编码器单脉冲精度如果现场做不到重点查信号接线和屏蔽。5.4 触摸屏与PLC通讯掉线触摸屏上某一页数据集体变成“#####”或者按钮按下去没反应基本就是通讯链路断了。先用笔记本通过网线连PLCPing一下PLC的IP地址能通就是网线或交换机硬件问题不通就查PLC网口配置和触摸屏网口配置。最常见原因是触摸屏的IP地址和PLC不在同一网段或者被哪个现场设备占用了相同IP这种用扫描工具查一圈就明白。如果Ping正常但触摸屏还是掉线可以检查组态软件里的刷新周期设置。刷新周期设置过短通信报文太多PLC扫描周期被挤占反而出现数据卡死。把不需要实时刷新的页面数据放到慢速刷新组里只保留位置、状态这些关键量实时刷新通讯稳定性会立竿见影。5.5 多轴同时动作时的程序冲突六个轴同时跑偶尔会出现某个轴“该动没动”的情况查逻辑每个条件都满足但就是没输出。这种多数不是硬件问题而是程序扫描层面的资源竞争。H3U的高速脉冲输出口虽然可以同时输出多路但定位指令的执行标志位在扫描周期里是独占的。如果两条定位指令写在同一个扫描周期且触发条件都成立后者会把前者的执行状态覆盖。模板里的对策是给每个轴组加执行许可标志同一时刻最多让三个轴组动作其他轴的动作请求先在状态机里排队。另一个排查方向是CANlink的刷新时间。总线伺服的目标位置通过CANlink周期性刷新如果站数增加后刷新周期变长从PLC写入目标值到伺服实际执行之间会有一个延迟。这个延迟在单台设备上不明显整机联动时就会表现为动作先后顺序错乱。通过在状态机里等待“伺服执行中”状态字确认而不是发了指令就认为已经执行能有效避免这种假冲突。最后说点实在话做这套“3步进3伺服”模板我最深的一点体会是程序模板的作用不是让你少写代码而是帮你把已经踩过的坑提前围起来。轴地址有没有规律、状态机结构清不清晰、触摸屏配方对得上对不上这些事在第一台设备上没做好后面每个项目都要重复踩一遍代价远比想象中大。按照我个人现在的习惯模板交付前还会花半天时间把脉冲当量、电子齿轮比、原点类型这些参数全部做成表格贴在电柜门内侧。调试新设备时先对着表格逐个确认参数再往模板里填数据大部分“同一套程序为什么别人能用我这边就出错”的问题其实都出在参数没有真正核对清楚上。如果你也在弄类似的结构建议就从地址规划和配方映射做起一步一步把模板滚起来后面会越用越顺手。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑