尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

三菱FX3U绕线机排线控制PLC程序开发与调试全解析

三菱FX3U绕线机排线控制PLC程序开发与调试全解析 简介面向三菱PLC绕线机开发场景这份可运行源码包提供了从程序框架到调试细节的完整实战方案涵盖1-6段位置可调、每段圈数设定、自动回原点、手动正反转及暂停互锁等核心功能适合有梯形图基础的工业自动化开发者参考。压缩包共8个文件以HTML说明文档为主辅以Markdown笔记与源码配置总大小约21KB结构轻量、便于查阅。目前已有33人学习。内容基于FX系列PLC程序划分自动、手动、回原点、HMI通信及参数管理五大模块采用FOR循环配合变址寄存器实现六段顺序遍历P10子程序集成正反转与加减速控制手动与自动通过M10与M0双重互锁回原点使用ZRN并预设滤波与加减速参数。HMI兼容威纶通与中达优控屏输入框与D寄存器绑定且带上下限按钮用PLS防重复触发CMP指令实现动态参数切换这些寄存器分配与调试经验可直接迁移到类似卷绕设备项目中。 前些天接了个老客户的电话厂里那台手动绕线机要改造绕制速度一快工人就得盯着计数器稍微愣神整盘线就废了。我过去看了设备就是一台主轴电机加一个丝杠排线机构没有自动控制属于最典型的单机自动化改造需求。用三菱PLC重新写一套绕线机程序从选型、IO规划、运动换算到现场调试整个过程我完整记录下来也算给同行一个能直接参考的底稿。这篇围绕三菱PLC程序开发、绕线机自动排线控制、可运行源码的思路与关键段展开以三菱FX3U为例。FX3U在小型绕线设备里非常常见支持高速脉冲输出和高速计数成本低程序也容易维护。如果你正在做设备改造的工程师或者刚学三菱PLC想接触点实际项目这篇内容能提供一些实用参考。核心不是把程序拷走就能用而是把这个项目的推理链条讲清楚——为什么这样分配点位为什么这样算速度为什么排线换向处要停顿——把这些弄明白换任何机型你都能自己写出绕线机程序。1. 从绕线工艺说起这台设备到底在控制什么1.1 自动绕线机的工作流程与控制功能拆分绕线机的工作原理其实很直白主轴电机带动骨架旋转把漆包线缠上去排线机构带着线材在骨架的轴向方向往复运动让线一圈挨着一圈整齐排列。整个设备最核心的要求就一句话——主轴每转一圈排线机构必须刚好移动一个线距。线距是什么单层绕线时线距就等于漆包线的直径带绝缘层的外径因为相邻两圈线必须紧紧挨着如果是要留间隙的多层绕线线距就是设定的节距。这个参数是整个程序的灵魂后面所有速度计算都围绕它展开。把这个工艺需求拆开绕线机控制系统要完成的功能模块有主轴启停控制通常是变频器驱动三相异步电机PLC给启动信号。排线往复控制步进电机通过丝杠或同步带带动排线头PLC控制方向和速度。匝数计数主轴每转一圈输出一个脉冲PLC累计真实匝数到设定值立即停机。断线检测线断或张力异常时能停车报警避免废线。上电回原点每次开机排线头先回到一端保证起点一致。手动点动调试和穿线时需要单独控制排线左右移动。这些功能看起来多但用到PLC上的资源并不多一个三菱FX3U-32MT就能全部覆盖剩余点位还能留作扩展。1.2 IO点位规划与硬件选型的三个关键决定IO分配是整个项目的骨架接错了后面程序写得再漂亮也没用。我这次的实际点位如下点位用途说明X0主轴转速脉冲输入接编码器A相或接近开关用于SPD测速X1匝数计数脉冲输入主轴每转1个脉冲由C236高速计数器累加X2排线左限位排线头碰到左端向右换向X3排线右限位排线头碰到右端向左换向X4断线检测断线或张力异常时触发X5启动按钮启动绕线运行X6停止按钮手动停止也用于故障复位Y0排线步进脉冲输出晶体管输出直接接步进驱动器脉冲口Y1排线方向控制ON向左OFF向右Y2主轴变频器启动控制主轴电机运行Y3报警指示灯断线、匝数到达等状态指示硬件选型有三个决定我在这个项目里踩过坑建议你先记住第一CPU必须选晶体管输出的MT型。因为Y0要输出高速脉冲给步进驱动器继电器输出的MR型是机械触点根本无法响应几千赫兹的脉冲信号。这个选错程序写得再好也白搭。第二主轴转速检测尽量用旋转编码器不要用单个接近开关。后面会讲到单个接近开关每转只有1个脉冲短周期的测速分辨率完全不够。第三步进驱动器的细分数和丝杠导程必须在写程序前确认好。因为它们直接决定脉冲当量——每毫米需要多少个脉冲这个数值只要差一点排线线距就会完全不对。2. 排线速度从哪来主轴转速与排线频率的换算2.1 排线频率计算公式与一个完整算例绕线机排线控制的本质是让步进电机的脉冲频率和主轴转速保持严格的比例关系。先定义几个变量n主轴转速单位r/min。P线距单位mm。单层绕线时等于线径。K脉冲当量即排线机构每移动1mm需要的脉冲数单位脉冲/mm。fPLC输出给步进驱动器的脉冲频率单位Hz。主轴每秒转n/60圈每圈排线要移动P毫米所以排线速度为n×P/60mm/s。再乘以脉冲当量K就得到脉冲频率f n × P × K / 60举个例子。主轴转速300r/min线径0.2mm丝杠导程5mm步进电机步距角1.8°驱动器细分数设为8。步进电机每转需要200×81600个脉冲丝杠转一圈排线移动5mm所以K1600/5320脉冲/mm。代入公式f 300 × 0.2 × 320 / 60 320Hz也就是说只要让Y0输出320Hz的脉冲排线速度就和主轴转速完全匹配。主轴转速变了脉冲频率要跟着变线径变了频率也要重算。2.2 用SPD指令实时测速时要注意的分辨率问题主轴转速如果是变频器给定额定频率理论上可以不做实时测速直接用设定值算排线频率。但实际运行中带负载后电机转速会有滑差变频器输出频率和真实转速并不完全一致绕出来的线距就会有偏差。所以我倾向用编码器测真实转速实时换算。三菱FX3U里最直接的测速指令是SPD。格式为SPD S1 S2 DS1是输入端子S2是测量周期毫秒D是结果寄存器。以SPD X0 K100 D10为例意思是每100ms统计一次X0输入的脉冲数结果存到D10。这里有一个很关键的分辨率问题。如果主轴每转只输出1个脉冲接接近开关100ms内能统计到几个脉冲主轴300r/min换算成每秒5转100ms只有0.5个脉冲D10的结果会在0和1之间跳变测速精度极差。所以我建议主轴后端装一个每转输出100个或更多脉冲的旋转编码器。同样100ms统计周期300r/min时D10稳定在50左右分辨率足够。转速计算公式为n D10 × 600 / NN是编码器每转输出的脉冲数。D1050N100时n50×600/100300r/min与实际转速吻合。2.3 把公式写进PLC整数运算的精度处理写程序时有个容易忽视的点PLC里的寄存器和运算都是整数线距0.2mm这种小数不能直接存必须用缩放。我把线距D2设定为实际值的100倍0.20mm就存20脉冲当量D6存整数320。将前面的公式合并f D10 × D2 × D6 / (N × 100) × 600 / 60也就是f D10 × D2 × D6 / (N × 10)以D1050、D220、D6320、N100为例f 50 × 20 × 320 / (100 × 10) 320Hz但这里有个16位溢出的问题。50×20×320320000已经远远超过三菱16位寄存器的最大范围32767。所以中间运算必须用32位指令不能用16位乘法硬算。我实际的程序是这样分的MUL D10 D2 D20 ; D10*D232位结果存D20-D21 MUL D20 D6 D22 ; 再乘D632位结果存D22-D23 DIV D22 D8 D24 ; 除以编码器每转脉冲数N存D24-D25 DIV D24 K10 D20 ; 再除以10得到最终排线频率这里最后一步除以10是因为线距扩大了100倍后公式里要消掉两个零。写成这种长链运算每一步的中间值都放进了32位寄存器现场调机时再也不会因为溢出导致频率算错。3. 可运行的FX3U程序框架分模块讲解与源码3.1 程序整体结构初始化、运行、停止三态整个程序我按三个状态来组织待机、运行、故障。这样结构清晰排查问题容易。待机状态下排线可以手动点动便于穿线和调整骨架启动按钮按下后进入运行态主轴启动排线开始往复故障发生时立即停机并锁住只有故障复位后才能再次启动。上电初始化部分用M8002PLC上电瞬间ON的特殊继电器把关键参数写入寄存器。正常生产中这些参数应该从触摸屏写入我这里直接给初值方便在没有触摸屏的调试阶段跑通程序LD M8002 MOV K0 D0 ; 设定匝数调试默认0表示不使用匝数停机 MOV K20 D2 ; 线距单位0.01mm即0.20mm MOV K320 D6 ; 脉冲当量320脉冲/mm MOV K100 D8 ; 编码器每转脉冲数N SET M2 ; 上电进入回原点模式回原点逻辑很简单上电后排线头以低速向一端移动碰到限位就停下作为绕线起点。这里我复用了左限位X2作为回原点的到位信号省一个输入点。3.2 匝数计数与到位停机高速计数器的启用细节匝数计数用的是三菱FX3U内置高速计数器C236计数输入固定为X1。它的特点是只要程序里写了OUT C236X1就自动成为高速计数通道不需要额外配置。LD M0 ; 运行状态 OUT C236 D0 ; 使能计数目标值为D0 LD C236 ; 计数达到D0时C236触点接通 SET M5 ; 匝数到达标志注意OUT C236 D0这个写法D0是目标值。当计数器的当前值达到D0时C236的常开触点会导通。用M5做标志在后面的停机逻辑里统一处理。停机复位时要把计数器清零。我用的是M8000常ON加RST指令LD M8000 RST C236 ; 待机状态下清零计数器这里有个经验点C236当前值计数到位后不会自动停止它会继续计数。所以匝数到达后必须在程序里切断C236的使能条件也就是让M0变OFF计数器停止工作。这也是为什么我把M0串在OUT C236的前面。3.3 排线往复换向限位信号驱动的方向切换逻辑排线往复是整个程序里最体现PLC编程经验的部分。核心逻辑是到达一端限位后先暂停脉冲输出切换方向再恢复输出。直接用Y0发脉冲所以方向切换必须配合脉冲暂停否则步进电机在高速运行状态突然反转会丢步甚至堵转。换向逻辑我这样处理LD X3 ; 到达右限位 AND M0 ; 运行中 SET M30 ; 置换向中标志 SET Y1 ; 方向设为向左 LD X2 ; 到达左限位 AND M0 SET M30 ; 置换向中标志 RST Y1 ; 方向设为向右Y1作为方向信号ON表示向左OFF表示向右。M30是换向暂停标志它在脉冲输出逻辑里作为禁止条件。脉冲输出的核心部分是这样的LD M0 ; 运行中 ANI M30 ; 不在换向暂停中 AND M10 ; 回原点完成 PLSY D20 K0 Y0 ; 以D20频率连续输出脉冲到Y0PLSY是连续脉冲输出指令D20是频率K0表示无限输出。M30为ON时这条指令不执行Y0停止输出。同时用定时器控制换向暂停时间LD M30 OUT T0 K200 ; 换向暂停200ms LD T0 RST M30 ; 暂停结束恢复脉冲输出200ms可能看起来不长在300r/min的主轴转速下主轴会多转1圈。如果觉得换向停顿导致线距偏大可以缩短到100ms。这个数值现场调一下就有感觉了。暂停期间主轴不停转排线不动所以换向位置会有一小段线是斜的这是所有限位换向绕线机的固有特点不属于故障。3.4 断线检测与报警延时防抖的两种写法断线检测可以接瓷眼附近的微动开关或张力摆杆上的接近开关。机械结构带来的问题是运行中会有振动断线开关可能瞬间误触发所以必须有防抖延时。我用定时器做延时断线信号持续一定时间才判定真断线LD X4 ; 断线开关信号 ANI M0 ; 运行中才检测 OUT T1 K500 ; 500ms防抖 LD T1 SET M1 ; 故障标志T1延时500ms是我现场调出来的值太短会在启动瞬间误报太长真断线了反应慢容易废线。如果你的机械振动不大200ms也行。故障后的处理方法我统一放在一个地方不散落在各个子程序里LD M1 ; 故障标志 OR M5 ; 匝数到达标志 RST M0 ; 停止运行状态 OUT Y3 ; 报警指示M0一复位主轴变频器启动信号、排线脉冲输出、C236计数使能全部切断。这种集中式停机逻辑比在每一处都写停止指令要简洁维护起来也方便。3.5 步进电机启动防丢步启动频率的分段处理步进电机有一个特性启动瞬间不能直接给高频脉冲否则会丢失脉冲也就是丢步。排线头一旦丢步位置就偏了后面绕出来的线全是乱的。我用的不是伺服没有自带加减速曲线所以必须在程序层面做处理。最简单可靠的分段加速思路是启动时先按目标频率的1/3输出100ms再切到2/3输出100ms最后达到目标频率。绕线机启动过程本身就有升速排线在启动阶段稍微慢一点不影响成品质量。我在程序里用一个计数器实现分段切换LD M0 ; 运行中 ANI M30 ; 非换向暂停 OUT T2 K100 ; 100ms计时 LD T2 INC D30 ; 计时次数累加然后根据D30的值切换输出频率。这里只是提供一个思路实际项目如果要求更平滑的加减速可以改用DDRVI定位指令或者干脆加一个带加减速功能的步进驱动器成本增加不多程序能简化不少。4. 现场调试实录五个高频问题的排查与解决4.1 测速和计数抢同一个输入点程序为什么跑不起来这是我第一次给绕线机做程序时犯过的错。当时想用一个主轴接近开关既做测速又做匝数计数觉得一个信号源方便。测速用SPD X0计数也用X0对应的高速计数器C235结果程序一写入指示M8001常开触点直接报警高速计数器和SPD同时占用一个输入端子冲突了。FX3U的高速输入端子是复用的同一个X点在同一时刻只能被一种功能占用。要么SPD测速要么高速计数器计数不能两个都要。解决办法就是我前面IO表里写的X0给SPD测速X1给C236做匝数计数。主轴编码器的A相接X0另外用一个霍尔接近开关或者编码器的B相接X1。如果只有一个信号源那就别用SPD了用高速计数器在固定时间窗口内读取差值来算转速但程序复杂度会上去我建议还是加一个传感器更省事。4.2 变频器一启动计数脉冲就乱跳这个坑几乎每个做变频器项目的都会遇到。第一次调机时主轴变频器一启动匝数计数器的数值就开始不受控制地增加有时一次跳几十个数。排线步进也跟着乱动Y0脉冲频率完全乱了。原因很典型变频器和PLC的电源、信号线在同一个线槽里走变频器输出的PWM波通过空间耦合和地线耦合干扰了PLC的输入信号。尤其是X0和X1接的是编码器长线线缆没有屏蔽就成了天线。排查思路先用万用表量编码器电源是否稳定再把变频器输出端到电机的线用示波器看有没有明显的尖峰干扰。确认是干扰后处理方案是编码器信号线全部换用屏蔽双绞线屏蔽层在PLC侧单端接地。变频器与PLC的电源分开PLC用独立的开关电源供电。动力线和信号线不要同槽布线必须交叉时走90度交叉。编码器信号线长度超过5米时在PLC输入侧并一个1kΩ上拉电阻提高抗干扰能力。做完这四步计数乱跳的问题基本消失。这个排查过程花了我大半天但做完本文还有配套的精品资源点击获取
返回列表