ARTICLE DETAIL

资讯详情

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

三菱PLC双工位自动锁螺丝机程序设计要点与协同逻辑

三菱PLC双工位自动锁螺丝机程序设计要点与协同逻辑 接到这套自动锁螺丝设备的程序开发任务时我第一反应不是急着开PLC编程软件而是先在车间把机械动作从头到尾捋了两遍。设备本身不算复杂两台打螺丝机两个工位既能各自独立跑又能协同联动夹治具用三菱伺服驱动PLC和人机界面全部自主开发。这类非标项目在3C、小家电、汽车零配件装配线里非常常见技术难度不在单机逻辑而在双工位之间的调度与互锁以及程序和界面的可维护性。这篇文章我就以这个实际项目为主线把方案选型、硬件配置、PLC程序架构、双工位协同逻辑、伺服定位、HMI设计、调试排错这几个环节完整拆开讲给正在做非标自动化或者想学PLC实战的朋友一份能直接借鉴的参考。1. 项目解析与整体设计思路1.1 设备需求与功能拆解先说说设备要干什么。自动锁螺丝机核心动作流程是把螺丝从供料器送到锁付头锁付头定位到工件螺孔上方下压伺服或电批带动批头旋转把螺丝拧进去到达设定扭力或者圈数后反转退出一个锁付循环结束。这套设备特殊在两台打螺丝机、两个工位独立协同运行。两台打螺丝机可以理解为一个工作站里有两套独立的锁付机械机构每套机构有自己的伺服驱动轴、锁付头、气缸和传感器。两个工位则是配套的夹具工装可以是两个独立的装夹位也可以是一个双工位转盘。它要解决的现实问题是产品有不同规格的螺丝分布或者左右件需要分别锁付如果只做一台单工位机节拍根本跟不上如果做成一台大联动机调试周期和故障排查难度又上去了。所以折中方案就是做成两套既独立又协同的单元。独立协同这四个字是关键。独立指的是每个工位有自己完整的自动循环1号工位在锁螺丝的时候2号工位可以同时在上料、下料或者做自己的动作互不等待。协同指的是两个工位并不是毫无关系它们共享一些公共资源比如总启动按钮、急停回路、气源压力检测、报警系统有时候还要共用一台供料器或者一个转盘。更复杂的协同还包括工位间的前后工序顺序约束、数据产量汇总、双工位同时动作时机械干涉的规避。程序上没有把这种逻辑想清楚现场要么是两套设备各干各的互不相干要么是互相等待导致节拍完全浪费两种情况都违背了这个项目的立项初衷。1.2 为什么选三菱PLC加三菱伺服设备电气选型最终定的是三菱系这个不是拍脑袋。做非标设备选控制器的逻辑首先要看客户现场的维护习惯很多工厂电气工程师上手就是三菱FX系列备件库里也常备三菱模块后续万一坏了换件和找人支持都方便。其次是三菱伺服在小型定位场合确实成熟稳定从脉冲型的MR-JE到总线型的MR-J4和自家PLC的匹配度非常高脉冲指令、原点回归、增益整定这套东西资料多、会的人也多。具体到程序方案这个项目用FX3U系列PLC就足够。两个工位的自动流程主要是开关量逻辑加伺服定位FX3U的定位指令DRVI、DRVA、DSZR可以支持最高3轴独立脉冲输出应对两套锁付机构的伺服控制绰绰有余。如果现场对节拍、同步性、诊断功能要求更高可以考虑Q系列加QD77MS2运动模块的方案那种写法走的是定位模块的缓冲区管理程序结构更规整但复杂度也大一个级别。我给这个项目的建议是能用PLC内置定位功能解决的不轻易上运动控制模块控制成本也降低调试门槛。三菱伺服也从MR-J4/ MR-JE下拉到适合负载的功率段。伺服在这里干什么用锁付头的Z轴升降定位和旋转扭力控制。Z轴升降用伺服动作快、位置准而且可以设定软限位防止压坏工件旋转轴用伺服可以直接做扭力闭环控制相比普通电批加扭力传感器的方案伺服更紧凑参数调整也更灵活。1.3 自动、手动与调试模式的整体规划程序框架里必须从一开始就把操作模式规划清楚。设备再简单也不能只做一套自动流程后面调试、换型、维修都离不开手动模式。我给这套设备设计了四种模式手动模式每个气缸、每个伺服轴、每个输出点都能通过HMI单点操作这是排查机械故障和调机的基础。单步模式自动流程按步骤一步一步跑每步之间需要人工确认主要用于程序调试和工艺验证。半自动模式操作员放上工件按启动设备自动完成一个循环后停止适合小批量试产和培训。全自动模式两个工位同时在上料检测后自动连续循环生产节拍最大化。这几种模式不是简单通过M继电器切换而是程序里用模式选择字做状态机分支。后面写程序的时候所有动作逻辑都要首先判断当前处于什么模式再决定是否执行这个架构一开始不铺好后面逻辑会乱成一团。2. 硬件配置与电气设计要点2.1 三菱PLC与伺服选型匹配这个项目的硬件我按以下典型配置展开说具体型号可以根据实际负载和I/O点数微调部件选型说明PLCFX3U-64MT/ES-A晶体管输出内置3轴脉冲定位64点I/O规模够用伺服1MR-JE-40B HG-KN43用于Z轴升降400W功率配2.51丝杆伺服2MR-JE-40B HG-KN43用于旋转锁付400W功率扭力模式触摸屏GOT GT2107或GS21077寸屏带RS232/RS485接口供料系统振动盘 直振 分料气缸标准件控制信号进PLC传感器欧姆龙/基恩士光电与接近开关工件到位、气缸到位、原点信号电源明纬24V开关电源5A以上给PLC、HMI、传感器供电选伺服功率时有个简单估算方法。以Z轴为例锁付头加机构的重量假设30kg丝杆导程10mm机械效率0.9需要的理论推力约300N如果最大移动速度要求0.2m/s电机转速约为1200rpm转矩大概在0.1N·m左右。这看起来400W伺服电机额定转矩1.3N·m余量已经是接近十倍但为什么还要选400W而不是更小的100W因为Z轴锁付时不是匀速运动是频繁启停加下压冲击动态响应和加减速阶段的瞬时扭矩远比稳态计算大再加上锁付瞬间螺丝和工件咬合时的冲击载荷伺服太小会频繁过载报警。做选型一定要按实际工况留2到3倍余量伺服参数里的转矩限制再配合实际锁付工艺慢慢收。扭矩模式锁螺丝的场合伺服选型更要看额定扭矩能不能覆盖最大锁付扭矩例如螺丝工艺要求最大锁付扭力1.2N·m那么伺服额定扭矩至少要在这个数值的1.5倍以上否则长期高负载运行电机温度会很快超标。2.2 I/O分配与传感布局硬件到位以后第一件事不是接线而是把I/O点表做出来。这个项目我建议把所有点位按规则分配PLC实际输入输出地址规划如下输入信号方面X0到X7统一给急停、启动、停止、模式选择、复位等公共控制信号X10到X17给1号工位的工件到位检测、夹具夹紧到位、Z轴原点、旋转轴原点等X20到X27对应2号工位。输出信号上Y0到Y3给1号工位的各电磁阀Y4到Y7给2号工位Y10到Y13给三色灯和蜂鸣器Y14往后留给供料器、振动盘控制。这样分配的好处是点位有规律后面写注释、做线号、查故障都非常顺。我见过太多项目因为点位乱分图纸和程序对不上查一个感应器信号要在PLC程序里翻半小时。传感器的布局也有一点讲究。每个气缸都要装磁性开关检测伸出缩回到位不是只装感应一端就完事两端都装才能在程序里实时判断气缸实际状态一旦动作超时立刻报警而不是带伤继续跑。伺服原点用接近开关加Z相或Z相信号来做机械上调整好挡片位置保证原点重复精度。工件到位检测用光电传感器要从侧面检测而不是上面直射防止螺丝或金属粉尘遮挡造成误触发。2.3 电源、接地与抗干扰处理非标设备调试最玄学的问题就是程序明明没问题设备偶尔抽风十有八九是电气抗干扰没做好。三菱PLC虽然皮实但也不能指望它硬扛所有干扰。这项目里我在电源和接地方面做了三个关键处理第一PLC和伺服驱动器的电源分开走。PLC、HMI、传感器用一路24V伺服控制信号用另外一路动力线和信号线在走线槽里分开放置间距大于20cm。第二PLC的COM端和24V电源的0V之间并联一个1mF左右的电解电容和一个104瓷片电容用来滤掉伺服启动时的电源尖峰。第三所有电磁阀线圈两端并联续流二极管型号选择1N4007以上耐压防止断电瞬间的反向电动势串进PLC输出点。这些小细节做图纸阶段就规划清楚现场调试会省掉大量时间。经常有人说三菱PLC输出点烧了大概率就是电磁阀没加续流二极管或者加了但接反了。3. PLC程序设计核心双工位独立协同的关键实现3.1 程序架构与状态机设计PLC程序最忌讳的就是把两个工位的逻辑写在一个大梯形图里前面一段1号工位后面一段2号工位中间再夹杂各种公共逻辑看起来像一团没有经纬的线。我采用的是每工位独立状态机加公共逻辑区的方式。所谓状态机就是每个工位的自动循环不是靠一堆M线圈串联硬凑顺序而是用一个状态寄存器配合解释执行。以1号工位为例我在程序里规划了这样一个状态流程S0空闲待机等待启动命令S10工件到位确认与夹具夹紧S20供料器出料等待螺丝到达锁付嘴S30Z轴下降定位伺服转过锁付位S40旋转轴锁付扭力/圈数判定S50Z轴上升完成信号输出计数器加一为什么用状态寄存器而不是传统的步进梯形图STL说实话STL也可以用但状态寄存器在处理多工位协同的互锁条件时更灵活。比如说2号工位正在使用公共转盘1号工位的S30下降动作就必须挂起直到公共资源释放。这个在STL里要用额外的M去控制跳转容易漏条件用状态寄存器加条件等待的方式程序的可读性和维护性都好得多。实际编写时我用M8000做基本条件每个状态段顶部加载进入该状态的条件这里条件包含前一步完成标志、模式选择、互锁信号然后用OUT指令输出该状态。3.2 双工位独立协同的调度逻辑前面说的独立协同在程序里是怎么落地的独立运行靠的是两个完全独立的状态机它们的扫描互不牵制。协同运行靠的是一套公共资源管理器。首先定义公共资源。这套设备里1号工位和2号工位的Z轴伺服是各自独立的不共享但供料器如果只有一个振动盘加分料装置那么两个工位不能同时请求出料这就是一个公共资源。另外两个工位如果安装在一个共用底板上它们的机械臂活动范围可能有交叉区域同时到位可能撞车这个区域需要一个互斥标志来保护。我用的调度关键点有三条第一公共启动与停止逻辑。总启动按钮按下以后不是直接触发两个工位同时跑而是先判断各工位是否满足准备条件比如工件是否到位、气压是否正常、伺服是否回原点。满足条件的工位立即进入自动循环不满足的则在面板上显示具体等待原因。这样实现了不齐步走能跑的先跑。第二资源互锁标志。以供料器为例程序中用一个M位表示供料器忙。1号工位需要使用供料器时先检查这个M位如果没被占用则把它置位然后执行出料动作出料完成后再复位释放。这里要注意一个编程技巧置位和复位动作必须放在同一条扫描路径中对称的位置防止出现信号竞争导致标志无法释放。2号工位同理。如果两个工位同时请求需要设定优先级规则一般按工位编号先来先服务或者按节拍要求固定高优先级。第三报警协同。任何一个工位触发报警公共报警输出要置位三色灯转红色蜂鸣器响起来。但另一个工位应该立即停止还是继续运行完当前循环这个要根据产品和设备结构权衡。在锁螺丝场景我建议在报警时立即暂停另一个工位的新循环但允许它把手头正在执行的一个步骤走完防止半途突然停机导致螺丝或工件卡在半路。实现方式是每个工位状态机在进入下一步之前都要检查公共急停和报警保持标志如果报警发生则跳转到暂停状态而不是继续下一步。3.3 三菱伺服定位控制与参数计算伺服控制部分是这个项目里和三菱关联最紧密的地方。如果用FX3U直接发脉冲程序上用的指令主要是三个原点回归DSZR或ZRN指令配合DOG输入实现快速找原点回零速度先用低速搜索找到接近开关后再切到低速找Z相重复精度可以达到一个编码器分辨率以内。相对定位DRVI指令格式是DRVI D0 D1 Y0意思是Y0轴以D1指定的速度移动D0指定的脉冲数。绝对定位DRVA指令格式是DRVA D0 D1 Y0。以Z轴为例丝杆导程10mm伺服电机加的是11的联轴器直连。MR-JE系列的编码器分辨率是131072脉冲/转那么每转移动10mm每个脉冲对应0.000076mm这个精度对锁螺丝机的Z轴定位绰绰有余。如果工艺要求以0.01mm为单位发指令可以先在程序里用浮点指令算好脉冲数再传给定位寄存器。这个项目的实际做法是在HMI上让操作员直接输入目标位置毫米数PLC里用浮点乘法把它换算成脉冲数这个换算公式在程序里做好备注避免下次换型时自己都忘了这个位置参数是怎么来的。如果采用Q系列加QD77MS2的方案定位控制就更规整不需要自己算脉冲。QD77MS2内部有伺服电机的每转指令脉冲数和负载侧每转移动量两个参数设置好以后直接以毫米为单位编程。但总线伺服对通信电缆屏蔽和终端电阻要求比较高调试门槛比脉冲方案高。在锁螺丝这种运动控制相对简单的设备里我个人还是会优先选脉冲方案省心稳定排查故障也直观。三菱伺服驱动器本身的调参也有几个核心项位置环增益、速度环增益和速度环积分时间常数。位置增益默认设为35左右如果定位后还有微小摆动就往下调速度环积分时间常数设小一些可以提升跟随性但太小了机械会振。现场调的时候用伺服调试软件看实时波形一边动一边听声音调到定位干脆利落、电机不发烫、没有高频啸叫就是合适状态。3.4 程序备注与维护性设计标题里特意写了有备注这个点在设备交付时客户非常看重。PLC程序没有备注半年以后厂家自己人都未必看得懂更不用说客户电工去维护。我是这样做的程序每个模块开头都有模块注释块注明功能、作者、日期、修改记录类似下面的格式*------------------------------------------------------------------* * 功能1号工位自动流程控制 * 作者XXX * 日期2025-XX-XX * 修改记录v1.1 2025-XX-XX 增加浮锁重试功能 *------------------------------------------------------------------*所有M、D、X、Y软元件都在PLC软元件注释表里登记。M100到M199专门表示1号工位各状态M200到M299表示2号工位各状态M300到M399是公共标志D500到D599是1号工位坐标系位置参数D600到D699是2号工位坐标系参数。操作员在HMI上修改了任何参数程序里都有数值上下限保护并且在触摸屏上做了修改记录存到D寄存器里方便追溯是谁在什么时间把参数改成了什么值。还有点要单独强调每个伺服轴的正负硬限位、软限位、原点回归方向这几个参数务必用注释标清楚设置错了会撞机这种标注在关键时刻能救命。4. 人机界面设计与参数交互4.1 HMI画面规划触摸屏选的是三菱GOT系列画面规划直接按操作流程来分不多做花哨的东西。主要分四层主画面显示设备整体状态两个工位分别显示运行/停止/报警当前完成数量、目标数量、生产节拍公共区放启动、停止、急停复位和报警指示灯。这个画面的核心是要让操作员一抬眼就知道设备现在是什么状态哪里出了问题。手动操作画面按工位分页每个工位一台伺服Z轴和旋转轴对应一组点动按钮和位置设定框。气缸部分列出每一个电磁阀的点动开关带状态反馈指示。手动画面的按钮在程序里做了安全限制模式选择在手动时才有效自动模式下这些按钮全部强制无效防止误触导致动作飞出。参数设定画面集中管理所有工艺参数Z轴升降速度、锁付转速、锁付距离、最大扭矩值、扭矩保持时间、螺丝供料超时时间、滑牙判定次数。每个参数设定框都带数值上下限防止操作员误输入一个离谱的数值。触摸屏数值显示使用浮点类型PLC通过FROM/TO或者D区读写。报警记录画面会自动记录报警发生时间、报警内容和消除时间配合PLC内部的报警保持寄存器做断电保持。没有这个画面现场排查偶发故障基本靠猜。4.2 PLC与HMI的数据交互设计PLC和触摸屏的数据交互本质就是一张软元件地址表。我习惯把D区和M区按语义分区彻底分隔D0到D99放HMI公共显示数据D100到D199放1号工位参数D200到D299放2号工位参数M0到M99是HMI按钮标志M100到M199是报警标志。这样在后面做触摸屏画面的时候直接照着地址表一个个填进去通讯配置都不用改最快一个下午能把一百条变量配完。GOT和三菱FX3U用RS422/RS232直连最稳定通讯参数保持一致站号设好以后就可以自动建变量。这台项目里还遇到过一个需求现场想再加一块触摸屏放在生产线另一端观看状态。三菱PLC支持连接多台触摸屏FX3U可以做成两路通讯配置主站触摸屏通过扩展通讯口再接第二台或者通过以太网模块把数据同时广播到多台屏。一块PLC带两块屏在技术上是完全可行的但要注意通讯负荷分配画面刷新太频繁会占用PLC扫描周期影响自动逻辑的实时性。我一般把远端屏做成纯显示模式只读数据不写入按钮通讯压力会小很多也避免两边按钮同时操作产生冲突。4.3 配方与产品换型锁螺丝设备经常要换产品型号不同产品的螺丝规格、孔位、扭力要求都不一样这就需要配方管理。GOT本身自带配方功能可以存多组配方每组配方包含几十个寄存器值。换型时操作员选择产品编号触摸屏把配方数据写入PLC对应D区PLC程序里在换型瞬间要先将工位暂停、停止伺服输出防止动作冲突。配方数据在PLC里一定要做校验。写入完成后PLC读取回这些D值检查范围是否合法不合法就禁止启动并弹出报警提示而不是静默使用错误参数。因为螺丝设备最怕的就是扭力参数被设错小了拧不紧导致产品流出大了直接把螺钉拧花甚至损坏工件这种问题在生产线上会造成批量不良配方管理再严格都不为过。5. 调试过程与常见问题排查实录5.1 从零到整机的调试流程程序写完以后上电调试我自己的标准动作是分五个阶段急不得。第一阶段是查线。根据电气图纸逐点核对输入输出用PLC的强制输出功能一个点一个点测试确保线没接错感应器信号和程序点位对得上。这个阶段要用掉半天到一天时间但值得省的后面联调时反复怀疑是接线问题还是程序问题。第二阶段是单动。在手动模式下把每个气缸、每个伺服轴都单独操作一遍检查动作方向、行程范围、限位是否有效。伺服先不走程序直接用HMI点动面板操作观察电机转向和速度确认机械组装没有干涉。第三阶段是空循环。不开料让两个工位按自动流程跑空循环检查每一步到位信号是否稳定、状态切换是否顺畅、有没有卡顿或超时。这个阶段重点观察双工位同时跑时有没有机械干涉如果有回程序修改互锁逻辑。第四阶段是带料试锁。用真正的产品和螺丝跑全自动逐步调整锁付扭力、速度、位置参数反复多次验证锁付良率。滑牙、浮锁、攻不进这些工艺问题都在这个阶段暴露。第五阶段是连续运行老化。让设备连续跑几个班次统计故障率观察伺服温度、气压波动、供料稳定性把所有偶发问题都过滤一遍。5.2 高频故障排查速查表调试过程中最常碰到的几个问题我整理成一个速查表都是做非标设备容易踩的坑现象排查思路常见解决方案伺服Z轴回原点位置漂检查接近开关安装位置与DOG信号是否抖动更换屏蔽线、DOG信号加RC滤波锁付过程中频繁过载报警扭矩参数设置与机械摩擦是否匹配调大转矩限制、检查丝杆润滑1号工位出料时2号工位报警公共供料器互锁标志未正常复位检查置位/复位扫描逻辑顺序气缸动作正常但无到位信号磁性开关位置偏移或感应面磨损重新调整开关位置自动模式启动后某个工位不跑工件到位信号未生效或模式标志被覆盖查看HMI指定状态的等待条件HMI操作偶尔失效通讯线缆松动或通讯参数被改重新紧固接头、校验通讯格式浮锁判定不准扭力监控窗口时间设置过窄放大扭矩保持时间或增加判定圈数双工位同时下降撞机机械互锁条件未加入状态机在两工位动作区增加独占标志每个产线的偶发问题都不一样排查原则就是先把机械和电气分开再用状态机里的显示状态定位卡在哪一步。PLC状态寄存器里每个状态都配了HMI显示操作员报警后一眼就能知道2号工位是卡在等待螺丝还是卡在Z轴下降中。没有这套状态提示每个偶发故障都要蹲在现场盯半天。5.3 一个典型排障案例调试后期遇到一个非常诡异的问题两台工位单独跑都是好的可一旦全自动同时跑过一段时间2号工位就会偶发停在等待工件到位状态但工件明明已经放上了。排查过程我印象很深。先看感应器光电信号正常强制触发没问题。再看程序发现2号工位等待工件到位的同时还检查了一个公共标志1号工位正在使用转盘这个标志在1号工位运行中一直为ON按逻辑不应该影响2号工位才对。最后查下来发现这个标志的写入位置在1号工位的状态机里而1号工位某个异常分支提前跳转导致标志没有复位2号工位就一直被锁住。这属于典型的标志复位条件覆盖不全问题。修复方式很简单把转盘占用标志改成不带保持的OUT指令输出由1号工位的状态和其他联动条件实时组合生成而不是用SET和RST去维护。这个案例提醒我一个非常重要的编程原则跨工位的互锁标志尽量用逻辑实时生成避免使用置位复位型标志除非你极其确定所有分支都能成对复位。6. 项目心得与后续扩展6.1 几个非标PLC项目的心得这套设备做下来我个人印象最深的几点第一写程序前必须先把机械动作吃透。我刚开始做非标的时候拿到机械图就开始写程序结果写到一半发现气缸动作顺序不对返工重写浪费大量时间。现在的做法是先列出设备所有动作的时序图标注每个动作的触发条件和完成信号确认机械和电气方案一致后再动PLC软件。第二报警和诊断功能一定要做全。报警不怕多做就怕漏做。气源压力低、伺服报警、气缸超时、供料超时、滑牙、浮锁、连续几次锁付失败这类情况每一个都要有明确的报警提示最好能直接告诉操作员怎么处理。这些诊断代码多花的时间在现场排查故障时能百倍省回来。第三程序备注是写给未来的自己看的。这个项目的PLC程序我全程加了详细备注从软元件表到每个状态块的用途到关键参数的换算过程。三个月后客户打电话来说换了个产品型号不知道怎么改参数我能通过远程看程序迅速给出答复而不是对着没有注释的梯形图从头开始猜。6.2 从单机到产线的数据延展设备交付稳定以后下一步必然会往数据采集和产线管理方向走。这台设备的PLC已经预留了通讯接口一方面可以把每个班次的产量、锁付不良数、设备报警时间上传到上位机系统另一方面可以通过标准的Modbus或OPC UA协议把PLC里的设备状态数据接到产线的数字化看板系统实现设备综合效率统计。这类需求现在越来越多非标设备不能只做孤岛控制程序从一开始就预留数据接口和软元件地址分区后面接上位系统会省很多事。回看这个项目技术难度其实不算高真正花心思的是把双工位的独立协同逻辑梳理清楚把每个细节都做规范、做备注、做诊断。做非标自动化设备比的从来不是谁会写多高深的算法而是谁能把一台设备调得稳定可靠、操作员用得顺手、维护工修起来不头疼。这套锁螺丝机PLC和人机程序自主开发的完整过程希望能给正在做同类项目的朋友提供一条清晰的思路。
返回列表