
做小型自动化设备这些年欧姆龙CP1H配四轴脉冲输出这套方案我一直在用也在不少现场看着别人用过。它确实不新但在点胶、装配、检测、上下料这类设备里的地位到今天依然很能打。脉冲控制最大的好处是兼容性极好不管后端接的是台达、汇川、松下、三菱还是西门子伺服或者干脆用几十块的步进套装只要驱动器有脉冲输入口就能和CP1H一起干活。这篇文章不是抄手册是我从接线到四轴联动跑通过的实战记录把CP1H的脉冲指令用法、脉冲当量计算、加减速设定、伺服和步进参数对接以及那些手册上根本不会写的坑一次说清楚。适合第一次用CP1H带多轴的电气工程师也适合想把手上的四轴设备调得再稳一点的老手。1. 先摸清CP1H的家底四路脉冲输出的能力上限与选型边界1.1 晶体管输出才是脉冲控制的入场券刚接触CP1H的人最容易犯的错是拿着一个继电器输出的型号就要做四轴定位。CP1H家族里CPU单元分继电器输出和晶体管输出两大类脉冲控制必须选晶体管输出。继电器输出不是不能折腾方波但那触点寿命、那响应频率完全不是干这个的料搞运动控制谁用谁后悔。买的时候直接看型号后缀CP1H-XA40DR-A是继电器输出CP1H-XA40DT-D是晶体管漏型输出NPNCP1H-XA40DT1-D是晶体管源型输出PNP。我做运动控制的方案绝大多数情况下选DT-D这种漏型输出因为市面上大多数步进驱动器和伺服驱动器的脉冲输入口都兼容NPN开集电极接法对口最顺。另外多说一句XA型号比X型号多了内置模拟量输入4路、输出2路。四轴设备经常需要一路模拟量去控制主轴转速、激光功率或者气缸压力所以实际项目中XA比X更常见。分辨率、运动相关的脉冲输出能力X和XA是一样的。1.2 100kHz只是上限实际能用多少要算整条链路CP1H晶体管输出型号提供4路脉冲输出每路最高100kHz。注意是最高支持100kHz不意味着你程序里写100000就跑得动。真正限制频率的是电机、驱动器、机械负载和接线方式。很多人问PLS2指令目标频率最高设多少我给的答案永远是上限是100000Hz但实际设多少要分两种情况看。步进轴的话拿常见的42闭环步进举例驱动器设16细分时电机转一圈要3200个脉冲100kHz对应的转速是31.25转/秒也就是1875r/min。42机座的步进电机在这个速度下扭矩早就掉光了能不能转起来都成问题。所以步进轴我一般把目标频率压在20到30kHz以内再高就容易出幺蛾子。伺服轴就看脉冲当量了。如果脉冲当量是0.01mm/脉冲100kHz就对应1000mm/s的进给速度这在大多数小型设备里已经是很快很快的速度了。我做四轴方案时哪怕机械刚性和伺服功率都够也很少把目标频率直接顶到100kHz一般留15%到30%的余量给加减速过程、给驱动器滤波、给机械响应都留点空间。还有一点容易被忽略CP1H的4路脉冲输出是各自独立的不存在四路共享频率池的说法。但CPU扫描周期、程序里同时对多个端口下发指令的先后顺序会影响四轴启动的一致性。这个问题后面专门有一节讲。1.3 什么设备适合CP1H做四轴什么设备别硬上CP1H做四轴脉冲最舒服的场景是点位运动为主、速度不追极限、轴和轴之间没有强插补关系的设备。比如小型装配机里的XYZ加旋转轴、点胶机的三轴加一旋转轴、检测设备里的移动平台加顶升轴这些都是CP1H的主场。反过来如果设备要求四轴直线插补走斜线、圆弧插补联动或者要求主轴和从轴做实时电子齿轮、电子凸轮同步那就别拿CP1H硬顶。不是完全做不到而是要在梯形图里自己做插补运算扫描周期摆在那插补精度和响应速度都很难看。这种需求直接上专门的运动控制器或者走总线型运动方案。选型这件事认清楚边界比追求高大上重要得多。2. 指令分工ORG、PULS、SPED、PLS2各管一摊2.1 ORG把回原点这件事做扎实四轴设备上电后干的第一件事基本都是回原点。ORG指令就是干这个的它支持近点信号加Z相的方式也支持单纯用近点信号的方式。在CX-Programmer里每个轴的原点搜索参数是在PLC设定里配置的包括搜索方向、接近速度快速找狗的速度、定位速度爬行速度、原点输入号、Z相是否参与等。我的习惯是但凡精度有点要求的轴都选近点信号Z相这种模式。近点传感器负责粗定位Z相负责给重复精度极高的精定位信号。Z相是电机转一圈才出一个的脉冲只要近点传感器能把轴停在这个Z相脉冲的有效范围内每次回原点的重复精度都能做到非常高。实际调试中最容易犯的错是近点传感器的安装位置和Z相触发点离得太近导致每次回完原点之后位置差一整圈或者半圈。这个坑我在第五部分专门展开讲这里先提醒一句近点传感器的挡块长度一定要保证在爬行速度下Z相有充足的有效区间能被捕捉到。2.2 PULSSPED简单工况下的发脉冲组合PULS的作用是给指定端口设定要输出的脉冲数SPED是启动该端口的定速输出。这俩配合起来适合那种不太在意加减速过程的简单动作比如低速搬运、调试时的手动点动、不带速度变化的连续运转。有人会把PULSSPED和PLS2搞混其实分工很清楚PULSSPED是定速输出发完设定的脉冲数就自动停但没有加减速过程频率是直接跳上去的。如果你要求先加速到某个速度再匀速跑就得用ACC指令配合SPED做加减速。我自己写程序的时候定位动作基本只用PLS2SPED只用来做手动点动和连续运转测试。原因很简单PLS2一条指令把加减速、目标频率、目标位置全管了梯形图里看着干净现场调起来也省心。2.3 PLS2四轴定位的绝对主力PLS2是带加减速的脉冲输出指令也是我写四轴定位程序的主力。它一条指令就把一次动作完整描述出来哪个端口输出、方向是CW还是CCW、目标频率是多少、加速怎么加、减速怎么减、总共走多少脉冲。操作数怎么记我给大家一个口诀C1管哪个口、往哪走——端口号和方向位C2管加速怎么加、减速怎么减——两个字的频率变化率S管跑多快——目标频率W管走多远——脉冲总数。关于目标频率CP1H手册写的是1到100000Hz也就是0.001kHz到100kHz。这里有个现象要注意如果你的脉冲总数比较小小于加速距离和减速距离之和PLS2会自动削峰把梯形加减速跑成三角形加减速。这不是指令坏了是它为了保证能够在指定位置停下来主动降低了实际能达到的最高频率。脉冲数的上限我印象里是16777215也就是2的24次方减1。写程序前最好拿总行程除以脉冲当量先算一下别等设备到了现场发现一个动作需要的脉冲数超了上限才手忙脚乱去改机械参数或者拆段。2.4 INI与PRV停下、读数与位置基准INI指令负责对脉冲输出做模式控制最常用的两个动作是减速停止和立即停止。设备出故障、按急停、撞限位第一反应都是让轴停下来。我习惯在中断程序里把四轴的停止条件做一个集中判断条件满足时立刻对对应端口执行INI减速停止这比在主程序中一层一层跳转来得可靠得多。PRV指令用来读取脉冲输出的当前值或当前频率。回完原点之后要把当前位置清零或者记录一个基准值后面所有位置都基于这个基准进行计算。很多新手不注意这个程序里到处写死绝对脉冲数结果改了一个机械参数比如换了个减速比全盘都要跟着改。正确做法是程序里只写目标位置的工程单位值在调用PLS2之前把工程单位换算成脉冲数这样后期调机械参数只动一个换算系数不用翻遍整个程序。3. 先算明白再写程序脉冲当量、电子齿轮比、加减速速率3.1 步进轴实例42闭环步进加丝杆以张大头那种42闭环步进为例。闭环步进的意思是电机加了编码器反馈驱动器内部能检测有没有丢步但PLC这一端看到的还是脉冲加方向和普通开环步进没有任何区别。这种42步进一般是1.8度步距角电机转一圈需要200个整步。驱动器如果设16细分那转一圈就是3200个脉冲。假设丝杆螺距是5mm那一个脉冲对应的位移就是5除以3200等于0.0015625mm约1.56微米。这就是脉冲当量。如果设备要求进给速度30mm/s那脉冲频率就是30除以5再乘3200等于19200Hz也就是19.2kHz。这个频率对CP1H来说是小菜一碟对42步进来说也是安全区。但如果想跑到100kHz上限对应转速就是31.25转/秒这个速度下42步进的扭矩已经掉光能不能转起来都成问题。所以步进轴调参的正确思路是先算机械能接受的最高转速再反推脉冲频率上限最后在PLC里把目标频率设在一个有余量的值上。3.2 伺服轴实例三菱JE-A带减速器和同步轮伺服和步进最大的区别在于电子齿轮比。步进是驱动器收到多少脉冲就转多少步伺服是驱动器收到脉冲后内部还要按电子齿轮比换算成位置指令再去控制电机。比如电机编码器分辨率是131072脉冲/转也就是17位编码器你希望PLC发500个脉冲电机就正好转一圈那电子齿轮比就是131072除以500约等于262.144驱动器里通常是设分子131072、分母500或者化简成32768比125。拿网上常有人问的三菱JE-A伺服带5比1减速器、带5M20同步轮、线速度0.8米每秒这个例子实际算一遍5M20同步轮节距5mm、20个齿周长是5乘20等于100mm也就是0.1m线速度0.8m/s同步轮转速等于0.8除以0.1等于8转/秒减速比5比1电机转速等于8乘5等于40转/秒也就是2400r/min这是JE-A这类小型伺服很舒服的转速区间如果脉冲当量定为0.05mm/脉冲那皮带每走1mm需要20个脉冲电机转一圈通过5比1减速器带动同步轮转五分之一圈也就是皮带走20mm所以电机转一圈需要20mm除以0.05mm/脉冲等于400个脉冲电子齿轮比就是131072除以400等于327.68驱动器里设分子131072、分母400或者化简成32768比125。注意0.8m/s的线速度听上去很快但算下来脉冲频率只有800mm/s除以0.05mm/脉冲等于16000Hz16kHz对CP1H来说完全轻松。这说明一个道理高线速度未必等于高脉冲频率关键是脉冲当量怎么选。如果你把脉冲当量选成0.01mm/脉冲同样0.8m/s频率就变成80kHz就快顶到CP1H的上限了。3.3 加减速速率怎么定PLS2会不会削峰加减速速率也是PLS2里必须认真算的参数。它的单位是Hz/s意思是每秒频率变化多少赫兹。举个实际例子目标频率50kHz加减速速率都设100000Hz/s那从0加速到50kHz需要0.5秒加速距离是二分之一乘以0.5秒再乘以50kHz等于12500个脉冲。减速也是12500个脉冲所以要想完整跑出一个梯形加减速总脉冲数至少要有25000个。如果总脉冲数只有10000个PLS2根本来不及加到50kHz就要开始减速实际最高频率会低于目标值形成三角形速度曲线。这不是故障但如果你对节拍有严格要求就要提前算清楚在程序里把加减速时间留够。现场调机时如果发现轴每次都到不了设定速度先别怀疑指令写错了用这个公式反推一下就知道原因了。加减速速率的设定还要跟负载匹配。伺服轴加减速太猛驱动器容易报过压、过流步进轴加减速太猛轻则丢步重则直接堵转。我习惯从0.3到0.5秒的加速时间起步先跑通再一点点往快调调到报警的临界点再退回来15%左右。4. 从脉冲信号到实轴转动接线与驱动器参数对接4.1 接线别让脉冲、方向、使能、抱闸留隐患CP1H的脉冲输出端子和普通输出端子共用输出区域。以XA40DT-D为例轴1的脉冲输出一般在0.00、方向输出在0.01轴2在0.02和0.03轴3在0.04和0.05轴4在0.06和0.07。不同点数的机型可能有差异接线前一定翻一下你手里那个机型的脉冲输出表格再下手。接线方式上CP1H晶体管输出是开集电极输出输出端导通时是拉到0V。伺服驱动器的脉冲输入口大多是光耦隔离结构怎么接要看驱动器手册的等效电路图。比较通用的NPN接法是这样的驱动器脉冲输入的正端接24VPLC脉冲输出端子接到驱动器脉冲输入负端方向信号同理。但不同品牌端子命名完全不同有的叫PULS和SIGN有的叫PP和NP有的叫PULSE和DIR千万别拿上一家的图纸硬套。我见过一个现场工程师照抄上一个项目的接线结果伺服驱动器是PNP输入PLC是NPN输出电平逻辑完全反了轴一动就往反方向飞。还有一个重要的细节是电流限流。有些伺服驱动器脉冲输入端内部已经配好了24V用的电阻直接用有些只支持5V输入直接接24V会烧光耦。这种情况需要在回路里串一个限流电阻具体阻值按驱动器手册的推荐值来。另外脉冲线超过三米或者现场变频器、电机动力线比较多的时候开集电极输出就有点勉强了最好用差分输出方式。CP1H本体没有差分脉冲输出需要外接差分转换模块这是长距离传输时值得花的钱。使能和抱闸也不要忘。伺服驱动器一般都有伺服使能端子、报警输出端子步进驱动器有使能端子。垂直轴还要考虑抱闸控制抱闸的打开和关闭必须和电机使能、停止的时序匹配否则断电瞬间轴会直接掉下来。4.2 伺服驱动器设置位置模式、脉冲类型、电子齿轮不同品牌伺服驱动器的参数编号千差万别但位置模式下的核心设置就那几件事。第一控制模式切到位置模式。台达B3、三菱JE-A、汇川SV660这些主流驱动器都有控制模式选择参数要么设成位置模式要么设成速度模式加外部脉冲输入实际等效就是位置模式。第二脉冲类型要和PLC输出模式匹配。CP1H脉冲输出可以设成脉冲加方向模式也可以设成CW/CCW双脉冲模式。我百分之九十的场合用脉冲加方向也就是一根线发脉冲另一根线定方向简单直观。驱动器那边也要对应选脉冲加方向有些驱动器叫正负逻辑脉冲参数对不上轴的动作就会乱。第三电子齿轮比。这一步就是把第三节算好的分子分母写进驱动器。注意有的驱动器是分子分母形式有的像三菱是CMX/CDV形式本质都是比例别填反了。第四脉冲输入滤波时间。驱动器脉冲输入口一般有滤波设置滤波太强会吃掉高频脉冲导致实际运行位置偏少滤波太弱又容易受干扰。高速场合把滤波时间调小现场干扰大就适当调大这是一个需要平衡的参数。第五伺服增益。如果驱动器有自动增益整定建议先跑一遍自动整定再针对大惯量负载做手动调整。增益太低轴会发软、响应慢增益太高会振动、啸叫现场调试急不得。4.3 步进驱动器细分、电流、方向模式步进驱动器相对简单但简单不等于不会错。细分拨码开关决定了电机转一圈需要多少脉冲这个值直接决定脉冲当量必须和程序里的换算系数对得上。我见过有人程序里按3200脉冲每转算驱动器却拨在2000结果位置全错查了半天才找到原因。细分设置完一定在驱动器铭牌或者说明书上标清楚。电流拨码也很关键要按电机铭牌额定电流来设别贪大。额定电流2A的电机硬拨到3A短时间跑确实有劲跑一会儿电机烫得能煎鸡蛋时间长了必烧。步进驱动器一般还有个半流或自动电流减小功能电机停止时自动降低保持电流这个功能一定要打开不然停机时电机和驱动器都在白白发热。方向模式也要看。步进驱动器通常支持脉冲加方向和CW/CCW两种模式拨码开关选择。PLC这边设成脉冲加方向驱动器也选脉冲加方向两边保持一致。方向逻辑反了没关系程序里取反或者驱动器方向参数反一下都可以但得知道怎么改。5. 四轴集成最容易翻车的几个现场5.1 原点总回不准近点传感器和Z相到底怎么对齐我在现场处理过很多次回原点偶尔偏一圈的故障现象很类似第一次回原点位置挺准再回一次就差了一圈第三次又对了神出鬼没。原因基本都出在近点传感器和Z相的配合上。近点传感器给出信号后轴开始以爬行速度慢慢走等待Z相脉冲。如果传感器触发位置离Z相脉冲太近爬行速度下可能刚好卡在Z相脉冲的边缘噪声或者机械抖一下Z相就丢了一个于是位置差一整圈。解决办法是调整近点传感器的安装位置让传感器触发后在爬行速度下还能走过至少两三个Z相脉冲确保一定能捕获到。挡块长度也要够长一般要求爬行速度下通电时间不低于几十毫秒。还有一种情况是Z相根本没参与。有些工程师图省事把原点搜索模式设成只用近点信号近点传感器本身的重复精度又一般结果每次回原点差个几毫米。对精度有要求的设备一定要用近点加Z相的模式不要省这一步。5.2 加减速和负载不匹配丢步、过流、过压的处理顺序四轴设备调试时最常见的报警就是伺服驱动器报过压、过流或者位置偏差过大步进驱动器那边则是丢步甚至堵转。我处理这类问题的顺序是固定的先看加减速时间再看目标速度最后检查机械。加减速时间太短负载惯量又大伺服电机在制动时会把能量回馈给驱动器母线电压飙升报过压。步进电机则是加速跟不上指令出现丢步。这时候先把加减速时间调到0.5秒甚至1秒确认问题消失再慢慢往下压。目标速度太高同理先把速度降到额定范围再往上提。如果加减速时间和速度都调得很保守了还是报警那就要检查机械了导轨有没有卡滞、丝杆有没有弯、减速器间隙是不是过大、电机功率选得够不够。机械问题用参数是调不出来的硬调只会让报警来得更快。5.3 脉冲线一长就误差干扰与接地的排查链路脉冲控制最怕干扰。症状很典型轴动起来偶尔多走或少走几个脉冲伺服驱动器偶尔报一个莫名其妙的脉冲异常报警位置漂移不定。排查链路我建议按顺序走第一步查布线。脉冲线和方向线必须是双绞线最好带屏蔽。绝对不能和电机动力线、变频器输出线走同一个线槽尤其不能长时间平行走线。我见过一个设备脉冲线从变频器旁边绕了半圈电机一转就丢脉冲把脉冲线挪开之后问题直接消失。第二步查接地。屏蔽层要在PLC这一端单端接地不要两端都接也不要悬空。PLC、伺服驱动器、步进驱动器的工作地要接好24V电源的0V也要共地。很多丢脉冲问题其实是24V电源地没接好脉冲信号参考电位飘来飘去驱动器收到的就不是一个干净的高低电平了。第三步查电源。脉冲输出的负载是驱动器光耦如果和电磁阀、继电器共用一个开关电源电磁阀动作瞬间的压降可能把脉冲信号拉掉几个。把脉冲控制回路单独用一个电源或者加滤波能解决很多莫名其妙的丢脉冲。第四步查驱动器滤波设置。如果前面这些都做了还是偶尔丢把驱动器脉冲输入滤波时间适当调大能滤掉一部分高频毛刺但代价是能响应的最高脉冲频率会下降所以得在速度和可靠性之间找平衡。5.4 四轴同时出发其实差了半拍CP1H的4路脉冲输出各自独立指令也是非阻塞的也就是PLS2指令一执行端口就开始发脉冲CPU继续往下扫描。但四轴动作如果是在梯形图里顺序写的比如先执行轴1的PLS2、再执行轴2的PLS2由于扫描周期的影响轴2的实际启动时间会比轴1晚一个扫描周期左右。扫描周期几毫秒大多数点位动作根本感觉不出来但如果你对四轴同步启动有要求就要考虑这一点。如果对同步要求不高只是在同一屏上看到四个轴差不多同时动起来那直接顺序触发就行了。如果要求真正的同步启动CP1H做起来就比较吃力你可能需要把四个轴的启动动作放到同一个中断任务里或者干脆换总线伺服方案。总之一句话CP1H做四轴点位控制很稳但别把它当成同步运动控制器来要求。6. 我现在的调试顺序和几个固定习惯6.1 从裸机到四轴联动的五步调试法每次做新的四轴设备我都按固定顺序来能省掉很多来回折腾的时间。第一步核对硬件。PLC型号是不是晶体管输出、驱动器是不是位置模式、脉冲线和方向线有没有接反、屏蔽层接没接地用万用表把每个轴从PLC端子到驱动器端子全部对一遍。第二步设驱动器和PLC的基础参数。驱动器设好位置模式、电子齿轮比、脉冲类型PLC设好四轴的点动和原点搜索参数先不写正线流程。第三步单轴手动测试。用SPED低速点动确认每个轴的方向对不对、动起来有没有异响。然后设一个很保守的PLS2动作比如目标频率1kHz、脉冲数1000确认轴能动到正确位置。这一步走通了硬件链路就基本没问题。第四步单轴回原点测试。把近点传感器、Z相处调好重复回十次原点确认重复精度稳定。第五步四轴联动加节拍测试。按实际工艺写完流程每个轴的动作都加上限位保护、报警联动、急停处理然后按正常节拍连续跑几个小时观察有没有偶发的丢脉冲和位置漂移。6.2 写在程序里的后悔药程序结构上我有几个一直坚持的习惯这些习惯在出问题的时候能救我半条命。所有轴的目标位置都用工程单位计算。程序里不写死脉冲数而是先定义脉冲当量和机械换算系数再通过一段集中换算程序把工程单位转成脉冲数。以后改减速比、改丝杆螺距只动一个地方。位置基准统一管理。每个轴回完原点之后把当前位置清零之后所有运动都基于这个零点计算。程序里要把当前值当成全局变量管理方便PRV回读和显示。报警状态集中到一个字里。每个轴的伺服报警、步进报警、限位、急停、原点信号都映射到一个状态字里程序开头统一判断一旦有报警先停止所有轴再显示报警码。这样现场出问题不用一个一个去猜。四轴的脉冲输出完成标志一定要用指令自带的完成标志位不要自己用位置计数器去猜。我把这些标志统一放在一个完成字里流程控制里直接看这个字判断下一步该执行哪个轴的动作。以上这套方法和习惯是我在好几个四轴设备项目里反复打磨出来的。每个设备刚上电的时候都是一堆问题但按这个顺序走下来大部分坑都能在调试阶段排掉而不是留到客户产线上炸。CP1H确实不算新但在四轴脉冲控制这个领域里它皮实、直接、上手快把它的脾气摸透之后你会觉得它其实挺好用。