ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

台达PLC编程经典实例教程之四:从点位控制到多轴联动的实战拆解

台达PLC编程经典实例教程之四:从点位控制到多轴联动的实战拆解 1. 台达PLC编程经典实例教程之四从点位控制到多轴联动的实战拆解搞工控的朋友对台达DVP系列PLC肯定不陌生尤其是做设备改造和产线升级的兄弟手头多多少少都碰过几台。这个“经典实例教程”系列我一直在追前三篇聊了基本指令、定时器计数器和一些简单的逻辑控制到了第四篇难度明显上了一个台阶——开始涉及点位控制、脉冲输出、多轴联动这些真正在项目里能扛活的内容。如果你已经能熟练写个自锁互锁、跑个流水灯但一遇到伺服定位、步进电机调速就心里没底那这篇东西就是给你准备的。我会把台达DVP系列PLC在运动控制上的几个典型实例拆开揉碎从指令选型、参数计算到程序框架全部过一遍顺便把调试过程中容易踩的坑也一并说了。全文基于DVP-ES2/EX2和SS2系列的实际项目经验ISPSoft和WPLSoft都适用你可以直接抄作业。2. 为什么运动控制实例值得单独拿出来讲2.1 从“逻辑控制”到“运动控制”的思维转变很多刚入行的兄弟写PLC程序习惯性地把所有问题都当成逻辑问题来处理。按钮按下就置位传感器亮了就复位这套思路在纯逻辑控制里没问题但一旦涉及到轴的运动光靠X和Y的开关量就不够用了。运动控制的核心是脉冲输出和位置反馈PLC需要在高频脉冲下精确控制输出点数同时还要处理编码器返回的高速计数信号。台达DVP系列在这方面做得比较接地气它把运动控制指令集成在固件里不需要额外买运动控制模块用本体自带的晶体管输出点就能跑脉冲。但这也带来一个问题普通输出点和高速脉冲输出点在硬件上是复用的如果你没注意Y0和Y1的分配程序写完了发现脉冲发不出去那就尴尬了。我见过不少新手在选型阶段就栽跟头买了个继电器输出的DVP-ES2结果发现根本发不了高速脉冲。这里必须强调一下只有晶体管输出T型的PLC才能发脉冲继电器输出R型的响应速度跟不上强行用只会烧触点。所以在动手写程序之前先确认你手头的PLC型号DVP-ES2-C、DVP-SS2、DVP-SV2这些带T后缀的才是运动控制的正主。2.2 台达DVP系列在运动控制上的硬件底子台达DVP系列能跑运动控制靠的是本体集成的高速脉冲输出功能。以DVP-ES2为例它支持2轴独立脉冲输出Y0和Y1最高频率可以到100kHz这个速度对于大多数步进电机和中小功率伺服来说完全够用。如果是DVP-SV2系列轴数更多频率也能拉到200kHz适合多轴联动的场景。脉冲输出模式支持脉冲方向和正转/反转脉冲两种具体用哪种取决于你的驱动器接受什么信号。大部分国产步进驱动器和日系伺服都支持脉冲方向模式接线简单程序也好写。这里有个细节值得注意台达的脉冲输出指令是PLSY和PLSR前者是定频脉冲输出后者是带加减速的脉冲输出。PLSY适合简单的定位比如走固定距离然后停PLSR则适合需要平滑启停的场合比如皮带输送线的调速。很多教程只讲PLSY但实际项目里PLSR用得更多因为电机突然启停会产生冲击机械结构受不了。我在一个包装机上就吃过这个亏用PLSY直接发脉冲结果同步带跳齿后来换成PLSR加了加减速时间问题才解决。3. 点位控制实例单轴定长送料程序拆解3.1 实例需求与硬件配置假设我们要做一个定长送料的动作按下启动按钮步进电机驱动送料辊转动把料送出500mm后自动停止再按一次启动再送500mm。这个需求在包装、印刷、切割设备里非常常见。硬件配置如下PLC用DVP-ES2-C步进驱动器用DM542步进电机是57系列两相步进电机丝杠导程5mm驱动器细分设为1600脉冲/转。计算一下电机转一圈走5mm需要1600个脉冲那么走500mm需要的脉冲数就是500÷5×1600160000个脉冲。这个数字在PLC的32位寄存器范围内没问题。接线方面Y0接驱动器的PULY1接DIR驱动器的PUL-和DIR-共阴极接0V。这里要注意台达PLC的脉冲输出是NPN型也就是输出低电平有效所以驱动器的公共端要接24V脉冲信号线接到PLC的Y0上这样PLC输出低电平时驱动器光耦导通收到一个脉冲。如果接反了电机要么不动要么乱转。3.2 关键指令PLSY的参数计算与程序框架PLSY指令的格式是PLSY S1 S2 D其中S1是脉冲频率HzS2是脉冲个数D是输出口Y0或Y1。频率决定了电机转速脉冲个数决定了行走距离。以刚才的例子如果我想让送料速度是100mm/s那么电机转速就是100÷520转/s脉冲频率就是20×160032000Hz。这个频率在DVP-ES2的100kHz范围内没问题。脉冲个数就是160000。程序框架可以这样写用M0作为启动标志当X0按下时置位M0然后调用PLSY指令。PLSY指令有个特点它是连续执行的只要驱动条件成立它就一直在发脉冲。所以我们需要在脉冲发完后自动复位M0。怎么判断脉冲发完了台达PLC有个特殊辅助继电器M1029当Y0脉冲输出完成时M1029会置位。我们可以用M1029的上升沿来复位M0同时复位M1029本身。LD X0 SET M0 LD M0 PLSY K32000 K160000 Y0 LD M1029 RST M0 RST M1029这段程序看起来简单但有几个坑要注意。第一PLSY指令在M0断开后不会立即停止脉冲输出它会等当前脉冲发完才停。如果你在送料过程中按了急停需要立即停止脉冲那就得用PLSY的脉冲停止功能或者直接断开Y0的公共端。第二M1029是Y0专用的如果你用Y1发脉冲对应的完成标志是M1030别搞混了。第三PLSY的频率参数不能低于一定值太低的话电机可能会抖动一般建议不低于100Hz。3.3 调试过程中容易踩的坑调试这个程序的时候我遇到过几个典型问题。第一个是电机方向反了。这个好办把Y1的输出逻辑反过来就行或者直接在驱动器上拨方向开关。第二个是脉冲数不对明明算了160000个脉冲结果实际走了480mm或者520mm。这种情况一般是细分设置和程序里的计算不一致。比如驱动器细分实际是800你按1600算那肯定走不准。所以调试前一定要确认驱动器的拨码开关状态最好用示波器或者PLC的高速计数器测一下实际脉冲数。第三个坑比较隐蔽PLSY指令在发脉冲期间如果修改S1或S2的值不会立即生效。台达的PLSY是“一次性加载”的也就是说指令执行时会把S1和S2的值读进去然后按这个值发完脉冲。如果你想在运行中改变速度得用PLSR或者用中断来重新触发PLSY。我在一个项目里想让送料速度分两段前段快后段慢结果用PLSY怎么改频率都没用后来换成PLSR加多段速才搞定。4. 多轴联动实例XY平台插补程序框架4.1 两轴联动的核心难点单轴定位搞定了接下来就是两轴联动。XY平台是最典型的多轴应用比如点胶机、雕刻机、贴片机都需要X轴和Y轴配合走轨迹。台达DVP系列本身不支持硬件插补也就是说它不能像运动控制器那样直接走直线或圆弧。但我们可以用软件插补的方式通过分别控制两个轴的脉冲频率和脉冲数让两个轴同时到达目标点走出一条近似直线的轨迹。软件插补的核心思路是把直线段分解成很多小段每一小段里两个轴各走一步然后循环执行。比如从(0,0)走到(100,200)我们可以把这段直线分成200个小段每段X轴走0.5Y轴走1。但PLC的脉冲是整数不能走0.5个脉冲所以实际做法是用Bresenham算法或者简单的比例分配让X轴每走1个脉冲Y轴走2个脉冲这样走出来的轨迹就是一条斜线。4.2 用PLSY定时器实现简易插补在台达DVP上实现两轴插补最土但最有效的方法是用两个PLSY指令同时发脉冲用定时器控制脉冲频率的比例。具体做法是先算出X轴和Y轴需要走的脉冲数然后根据速度要求算出各自的频率。比如X轴走10000个脉冲Y轴走20000个脉冲要求1秒走完那么X轴频率就是10000HzY轴频率就是20000Hz。两个PLSY指令同时触发各自发各自的脉冲发完为止。但这里有个问题两个PLSY指令同时执行时PLC的扫描周期会影响脉冲输出的同步性。台达的PLSY是硬件脉冲输出一旦触发就不占用CPU资源所以两个轴可以真正同时发脉冲。但如果你在程序里先写X轴的PLSY再写Y轴的PLSY由于扫描顺序的原因两个轴会有微小的启动时间差。这个时间差在低速时看不出来但在高速时会导致轨迹偏差。解决办法是用同一个触发条件同时驱动两个PLSY指令并且把这两个指令放在相邻的步序里减少扫描周期带来的延迟。LD M10 PLSY K10000 K10000 Y0 PLSY K20000 K20000 Y1这段程序看起来简单但实际调试时你会发现两个轴的停止时间可能不一致。因为PLSY的完成标志M1029和M1030是独立的如果X轴先发完Y轴还在发那轨迹的末端就会拐弯。要解决这个问题可以在两个轴都发完后再用一个定时器延时一小段时间确保机械结构稳定后再执行下一步。4.3 插补精度的影响因素与优化软件插补的精度受几个因素影响。第一是脉冲当量也就是一个脉冲对应多少毫米。脉冲当量越小插补精度越高但需要的脉冲数也越多对PLC的频率上限要求就越高。比如丝杠导程5mm细分1600脉冲当量就是5÷16000.003125mm这个精度对于大多数应用足够了。第二是两轴的速度匹配如果X轴和Y轴的频率比例不对走出来的就不是直线而是折线。第三是机械间隙丝杠的反向间隙、联轴器的松动都会影响插补精度这个只能靠机械调整来解决软件补偿效果有限。我在一个点胶机上做过测试用软件插补走一个100mm×100mm的正方形四个角的偏差大概在0.05mm左右对于点胶来说完全够用。但如果要做高精度的雕刻这个方案就不行了得换带硬件插补的运动控制器。所以选方案之前先看精度要求别盲目追求高端配置。5. 脉冲输出与高速计数的配合使用5.1 用高速计数器做位置闭环开环的脉冲输出有个致命问题丢步。电机走没走到位PLC不知道。如果负载突然变大或者电机速度太高步进电机就会丢步走出来的位置就不准了。要解决这个问题就得用编码器高速计数器做闭环。台达DVP系列本体自带高速计数器比如C251、C252这些可以接编码器的A/B相实时读取电机的位置。具体做法是把编码器装在电机轴上A相接X0B相接X1然后用高速计数器指令DHSCS或者DHSCR来读取计数值。PLC发脉冲的同时高速计数器在计数如果发完脉冲后计数值和理论值对不上就说明丢步了可以报警或者补偿。这个方案在成本上比伺服系统低很多但精度和响应速度不如伺服适合对成本敏感、精度要求不极端的场合。5.2 高速计数器的参数设置与注意事项台达DVP-ES2的高速计数器有几个关键参数计数模式1相1计数、1相2计数、2相2计数、计数方向、复位方式。编码器一般用2相2计数模式这样可以判断方向也能四倍频提高分辨率。设置的时候要注意高速计数器的输入点是有固定分配的比如C251只能用X0和X1C252只能用X2和X3不能随便改。如果你把编码器接到了X4上那高速计数器就用不了只能当普通输入点用。还有一个坑高速计数器的计数频率上限。DVP-ES2的C251最高计数频率是100kHz和脉冲输出频率一样。如果你的编码器分辨率很高电机转速又快那计数频率可能会超过上限导致计数不准。比如编码器是2500线四倍频后是10000脉冲/转电机转速3000rpm那计数频率就是10000×3000÷60500kHz远超100kHz的上限。这种情况下要么换低分辨率编码器要么换更高端的PLC。6. 常见问题与排查技巧实录6.1 脉冲输出相关故障速查表故障现象可能原因排查方法解决方案电机不转脉冲输出点选错检查Y0/Y1是否对应PLSY指令确认PLC型号支持脉冲输出电机抖动不转脉冲频率太低用示波器测Y0输出频率提高PLSY频率参数至100Hz以上电机方向反方向信号逻辑反检查Y1输出与DIR接线修改程序逻辑或驱动器拨码走不准细分设置与程序不符核对驱动器拨码与脉冲计算统一细分设置重新计算脉冲数高速时丢步电机扭矩不足降低速度或更换大扭矩电机增加加减速时间或换伺服脉冲发完不停PLSY未复位检查M1029是否触发用M1029上升沿复位驱动条件6.2 程序调试的独家避坑经验调试运动控制程序我总结了几条经验都是踩坑踩出来的。第一条先手动后自动。别一上来就跑自动程序先用手动模式点动一下确认电机方向、速度、脉冲数都对再跑自动。第二条分段调试。比如走500mm先走50mm看看再走100mm逐步加长别一上来就走全程撞机了哭都来不及。第三条留余量。机械限位要比程序限位远一点程序里设的软限位要留出减速距离不然高速撞限位机械结构直接报废。还有一条特别重要PLC的扫描周期会影响脉冲输出的响应速度。如果你在程序里用了大量的定时器、计数器、浮点运算扫描周期会变长PLSY指令的触发就会延迟。我见过一个项目程序里写了2000步扫描周期到了20ms结果PLSY的启动信号延迟了20ms才响应导致两个轴的同步性极差。后来把程序优化到500步以内扫描周期降到5ms问题才解决。所以运动控制的程序要尽量精简别把无关的逻辑都塞进去。6.3 关于台达PLC解密与程序保护的说明网上有不少人搜“台达DVP全系列PLC解密”想破解别人写的程序。这里我不教怎么解密但可以聊聊程序保护的思路。台达的PLC支持密码保护和程序读保护在ISPSoft里可以设置。如果你辛辛苦苦写的程序不想被别人抄走可以在下载的时候设置密码这样别人上载的时候就需要密码。但要注意密码忘了自己也解不开只能清空PLC重新写。所以密码要记好最好写在项目文档里。另外台达的PLC程序可以编译成加密文件用ISPSoft的“编译”功能生成一个不可读的文件别人只能下载不能查看源码。这个功能对于交付给客户的程序很有用既能让客户使用又保护了自己的知识产权。不过话说回来工控这行靠的是经验和方案光靠保护程序源码意义不大真正的核心竞争力在于对工艺的理解和调试的经验。7. 从实例到项目如何把教程里的东西用起来7.1 建立自己的程序模板库学完这些实例最重要的是把它们变成自己的东西。我的做法是建一个程序模板库把常用的功能块封装起来。比如单轴定位、两轴插补、高速计数、报警处理每个功能写成一个子程序用的时候直接调用。台达的ISPSoft支持函数块FB可以把这些功能做成FB输入输出参数化用起来非常方便。比如做一个“轴控FB”输入是脉冲数、频率、方向输出是完成标志、当前位置这样不管项目里有多少个轴直接调用FB就行不用重复写代码。模板库的好处是减少重复劳动降低出错概率。我现在的项目里80%的代码都是直接从模板库拖出来的只需要改改参数和逻辑就行。剩下的20%是工艺相关的特殊逻辑这部分才是真正需要动脑筋的地方。所以新手兄弟别急着写大程序先把基础功能块写熟后面做项目就是搭积木。7.2 从单轴到多轴的项目升级路径如果你已经能熟练跑单轴定位下一步就是多轴协调。多轴协调的难点不在编程而在时序控制。比如一个上下料机械手X轴走到位后Z轴才能下降Z轴下降到位后夹爪才能动作夹爪动作完成后Z轴才能上升这一连串动作的时序不能乱。我的做法是用**步进梯形图SFC**来写把每个动作写成一个步步与步之间用转移条件连接这样逻辑清晰调试也方便。台达的ISPSoft支持SFC编程比纯梯形图直观得多。再往上就是多轴插补和轨迹规划这个就需要更高级的算法了。台达的DVP系列做不了太复杂的插补但简单的直线和圆弧还是可以凑合的。如果项目要求高建议直接上台达AS系列或者运动控制器那些支持硬件插补编程也更简单。不过话说回来工具是次要的思路是主要的。你把单轴和多轴协调的逻辑搞清楚了换什么PLC都能快速上手。7.3 持续学习的资源与方向工控这行技术更新不快但应用场景变化很快。今天做包装机明天可能做锂电设备后天可能做光伏产线。每个行业的工艺要求都不一样所以学习能力比技术本身更重要。我的建议是第一多看别人的程序尤其是成熟设备的程序看看别人怎么处理报警、怎么规划时序、怎么做安全逻辑。第二多动手调试看一百遍不如自己调一遍调试中遇到的问题才是真正学到的东西。第三关注行业动态比如现在锂电和光伏很火相关的运动控制需求也很多提前学点相关知识机会来了就能抓住。台达的PLC在国产品牌里算是比较稳的资料也多适合入门和中小型项目。但如果你要做高端设备可能还得学学西门子、三菱、欧姆龙这些品牌或者直接上CODESYS平台。不过底层逻辑都是相通的脉冲、编码器、插补、时序这些东西搞明白了换平台就是熟悉一下指令和软件的事。我个人在实际项目中的体会是运动控制的核心不是编程而是对机械和工艺的理解。你得知道电机的扭矩够不够、丝杠的精度行不行、负载的变化大不大这些因素比程序写得好不好重要得多。程序写得再漂亮机械不行照样跑不起来。所以做运动控制多下车间多摸设备多和机械工程师聊天比坐在电脑前写代码有用得多。
返回列表