在自动化圈子里摸爬滚打这些年,我越来越觉得:越是看着简单的设备,程序越能见功底。螺丝机就是个典型——机械结构无非是XY平台加电批、真空吸嘴、供料机,但真正跑起来,漏锁、滑牙、空吸、误报、换型调半天,各种问题全来了。能把这些问题都收拾利索的欧姆龙PLC螺丝机程序配合威纶触摸屏程序,才是设备真正值钱的部分。这篇就把我做过的螺丝机项目完整拆一遍,从控制需求、IO规划、状态机设计、电批判定,到触摸屏画面、配方换型、现场调试踩坑,一步步讲清楚。适合正在做同类设备的电气工程师、售后调试人员和想入行自动化的朋友。
1. 先弄清螺丝机在控制什么:工艺需求决定程序架构
1.1 螺丝机的工艺闭环:供料、取料、锁付、判定
螺丝机不是“把螺丝拧进去”这么简单。一台典型的自动锁螺丝机,至少包含四个环节:螺丝供料、吸嘴取料、移动到锁付位、电批锁付并判定结果。供料环节常见两种方式,一种是振动盘加直振、分料器,把螺丝一颗颗分出来;另一种是吹气式供料,螺丝通过气管直接吹到接料口。取料环节多数用真空吸嘴,靠负压把螺丝吸住。锁付环节由电批完成,电批控制器会给出OK或NG信号。机械设计决定了设备能不能动作,但PLC程序决定了它跑得稳不稳、快不快、出了异常能不能自己兜住。
以我做过的项目为例,产品是一块电路板上有6颗螺丝,节拍要求做到35秒以内。看起来不难,但实际流程拆开是这样:产品到位→扫码确认型号→XY轴移动到取料位→吸嘴取螺丝→真空确认→移动到第一个孔位→Z轴下压→电批启动锁付→等待OK/NG→Z轴抬起→继续下一个孔位→6颗全部锁完→记录产量和不良→产品放行。这中间任何一个环节出问题,比如螺丝没吸到、孔位偏移、电批误判,都会直接影响节拍和良率。
正因如此,我在写程序前习惯先把整个工艺闭环画一遍,明确每个动作的触发条件、完成条件和超时条件。这一步不做扎实,后面写梯形图就是空中楼阁。
1.2 控制部件选型:欧姆龙CP1H与威纶通屏的搭配逻辑
PLC方面,我这次用的是欧姆龙CP1H系列。选择它不是因为“欧姆龙”三个字,而是螺丝机这个场景,CP1H的配置刚好踩在性价比的甜点上。它自带高速计数和脉冲输出,XY两轴伺服完全可以直连,不需要额外加定位模块。以CP1H-XA40DT这种晶体管输出来看,24点输入、16点输出,内部还有扩展能力,常规螺丝机的IO数量绰绰有余。如果你做的是多轴联动、凸轮曲线、多工位同步那种高速复杂运动,那才需要考虑NJ系列或者NX系列;普通螺丝机用CP1H,稳定、便宜、好维护。
触摸屏选威纶通MT系列,理由也实在。一是客户指定兼容性好,很多设备厂和终端用户都用威纶;二是EasyBuilder Pro组态软件在配方、数据采样、报警记录这些功能上做得顺手,尤其配方切换和数据追溯,比很多原厂屏更灵活。实际选型时要注意选带网口的型号,方便和CP1H走以太网通讯,也方便后期接上位机或者MES。如果预算有限,串口版本也能用HostLink协议通讯,但我会尽量选网口版,调试时电脑连进去看程序方便得多。
很多初学者会问,为什么不直接用欧姆龙原装触摸屏?我的看法是,原装屏和自家PLC配合确实稳定,但在配方管理和数据导出方面,威纶的工程开发效率更高,而且很多客户现场已经习惯了威纶的操作逻辑。技术选型从来不是“越贵越好”,而是“够用、好用、有人会维护”。
1.3 写程序前先画流程:状态图比梯形图更重要
我在带新人时反复强调一句话:梯形图是最后一步,不是第一步。先画状态图,把所有动作按步骤编号,把每一步的“进入条件、执行动作、完成条件、超时跳转”写清楚,再动手写代码,效率至少翻一倍。螺丝机这种循环动作设备,最忌讳一上来就对着触点一通自锁互锁,写到后面自己都绕不清楚。
我习惯把整个自动运行流程分成若干步,用一个步号寄存器来记录当前状态。比如步号0表示待机,步号10表示等待启动条件,步号20表示供料取料,步号30表示移动锁付……每一步对应一段相对独立的逻辑。这样做有三大好处:第一,现场调试时改某一步不会牵连其他步骤;第二,触摸屏上可以直接把当前步号显示出来,操作员看到步号就知道设备卡在哪个环节;第三,报警触发时,步号能瞬间定位问题位置,不用翻着梯形图逐行找。
这个项目的状态图我至少改了三版,原因都是现场暴露的新问题:比如取料时真空信号来得慢,需要加延时不误判;电批OK信号太短,输入滤波要单独处理;换型后回原点精度会漂,归零逻辑要重做。这些都是流程图阶段就能预判一半的,提前写进去,后面少踩一半坑。
2. PLC程序的核心骨架:IO规划、状态机与电批联动
2.1 IO点位表:先把地址定好,后面才不会乱
IO规划是PLC程序的骨架。我见过太多设备,程序写了大半才发现输入点不够,或者地址分配乱七八糟,现场接线和程序对不上,调试时拿着图纸逐个猜。这次我先把完整的点位表定下来,才动手写程序。展示一份简化版的规划,供参考:
| PLC地址 | 信号名称 | 方向 | 说明 |
|---|---|---|---|
| CIO 0.00 | 伺服X轴原点 | 输入 | 近点信号 |
| CIO 0.01 | 伺服X轴报警 | 输入 | 驱动器报警 |
| CIO 0.02 | 伺服Y轴原点 | 输入 | 近点信号 |
| CIO 0.03 | 伺服Y轴报警 | 输入 | 驱动器报警 |
| CIO 0.04 | 电批OK信号 | 输入 | 锁付合格 |
| CIO 0.05 | 电批NG信号 | 输入 | 锁付不良 |
| CIO 0.06 | 真空检测 | 输入 | 负压建立 |
| CIO 0.07 | 气源压力检测 | 输入 | 气压正常 |
| CIO 0.08 | 启动按钮 | 输入 | 自动启动 |
| CIO 0.09 | 急停按钮 | 输入 | 常闭输入 |
| CIO 1.00 | 螺丝到位检测 | 输入 | 分料器反馈 |
| CIO 1.01 | 产品到位检测 | 输入 | 定位气缸到位 |
| CIO 1.02 | 安全门开关 | 输入 | 门闭合信号 |
| CIO 1.03 | Z轴下压到位 | 输入 | 气缸磁性开关 |
| CIO 100.00 | 电批正转 | 输出 | 锁付方向 |
| CIO 100.01 | 电批反转 | 输出 | 退钉方向 |
| CIO 100.02 | 电批启动 | 输出 | 运转使能 |
| CIO 100.03 | X轴脉冲输出 | 输出 | 100kHz |
| CIO 100.04 | X轴方向 | 输出 | 脉冲方向 |
| CIO 100.05 | Y轴脉冲输出 | 输出 | 100kHz |
| CIO 100.06 | Y轴方向 | 输出 | 脉冲方向 |
| CIO 100.07 | 吸嘴电磁阀 | 输出 | 真空通断 |
| CIO 101.00 | 分料请求 | 输出 | 通知供料机 |
| CIO 101.01 | 三色灯绿 | 输出 | 正常运行 |
| CIO 101.02 | 三色灯红 | 输出 | 报警 |
录入地址时有两个细节特别注意。一是NPN和PNP的匹配,CP1H内置输入是漏型接法,现场传感器如果是PNP输出,要么转换继电器,要么加扩展输入模块,别到接线时才发现不兼容。二是输入滤波默认值不要乱改,这一点我在后面调试章节会单独展开。
2.2 主流程状态机:用“步号法”替代一层套一层的自锁互锁
自动流程我用步号法实现,核心思路就是用一个寄存器保存当前步号,然后每一段逻辑都判断“当前是否在该步号”来决定是否执行。以CP1H为例,梯形图里我会把步号放在D0,每步的入口用比较指令判断D0的数值,出口则更新D0。下面是用文本方式描述的状态跳转逻辑:
步号10: 自动待机 条件: 启动按钮按下 AND 气压正常 AND 安全门关闭 AND 无报警 动作: 三色灯绿,显示“就绪” 跳转: 如果条件满足 -> 步号20 步号20: 供料与取料 条件: 已在步号10且启动满足 动作: 输出分料请求,等待螺丝到位信号 完成: 螺丝到位 OR 3秒超时 跳转: 螺丝到位 -> 步号30 超时 -> 步号900(报警) 步号30: XY轴移动至取料位 条件: 已到步号20且螺丝到位 动作: 启动X/Y轴定位,等待定位完成 完成: 定位完成信号 跳转: -> 步号40 步号40: 真空取料 条件: 已到步号30且定位完成 动作: 打开真空电磁阀,Z轴下压 完成: 真空检测信号建立,或等待固定时间 跳转: -> 步号50这种写法的好处,第一个是排错容易。现场卡在哪一步,触摸屏上直接显示步号,翻代码时直接定位“步号30的入口”。第二个是互锁逻辑清晰。每一步的完成条件都集中处理,不会出现“这个输出在被三个地方同时置位和复位”的混乱局面。第三个是扩展性。后期增加拍照定位、增加孔位,只需要在状态机里插入新的步号,原步骤逻辑不用大改。
2.3 电批锁付的关键:OK/NG判定与重试策略
电批是整个螺丝机控制最核心的执行部件。常规电批控制器对外接口一般有四路关键信号:正转指令、反转指令、运转信号,以及OK/NG结果输出。程序里我单独做了一个“锁付判定”逻辑块,它不仅负责启动电批,还要处理OK信号的确认、NG信号的复位,以及超时兜底。
电批锁付的时序是这样的:Z轴下压到位后,先给电批正转指令,同时给启动信号,开始拧螺丝。正常情况下几百毫秒后电批控制器会输出一个OK信号,说明扭矩达到设定值并完成锁付。这时程序要做的不是立刻判定“这颗OK”,而是对OK信号做一个持续时间确认——通常要求OK信号稳定持续20毫秒以上才当真。为什么?因为电批在拧紧瞬间会有机械反弹,OK信号可能抖一下马上消失,如果只凭一个上升沿就判定OK,极易把“临界未锁紧”误判成“已锁付”。
如果收到NG信号,程序不急着报警,而是先执行“原地退钉再重打一次”的策略。具体逻辑是:电批反转0.3秒退出,Z轴保持下压,然后再次正转锁付。多数滑牙、对位不准的NG,重试一次就能恢复正常。重试后仍然NG,才置位报警位并停机,等待人工处理。这样既保证不良品不会混过去,又不会因为一次抖动就频繁打断生产节拍。
另外,如果电批控制器支持通信接口,比如RS485 Modbus协议,我会把实时扭矩值和拧紧圈数读到PLC里,存入D区供触摸屏显示和追溯。注意第一次调试时要核对好数据格式,有些电批用有符号整数表示扭矩,有些直接是16位无符号数,数值倍率也不一样,读出来要经过换算再存,否则后期分析扭矩曲线时全是错数据。
2.4 供料与真空检测:防空吸、防漏锁的细节
供料和真空取料这块,看着小,其实是最容易出批量问题的地方。真空检测的核心逻辑是:吸嘴接触螺丝并打开真空后,压力开关应该检测到负压。但现场真正跑起来你会发现,真空信号可能“来得很慢”,也可能“一直不消失”。来得很慢的原因,往往是气管太长、吸嘴磨损、真空发生器响应迟;一直不消失的原因,多半是吸嘴堵了或者气管破了。
我的程序里做了一个“真空建立延时确认”:从打开真空电磁阀开始计时,延时80到150毫秒后再去采样真空检测信号。这个延时要根据现场气管长度和真空发生器特性实际调整,调太短会误报“没吸到螺丝”,调太长又影响节拍。真空信号死后,再做一个“真空消失延时确认”,防止吸嘴在搬运过程中因为抖动导致负压瞬时丢失。这两个延时配合,空吸误报率能降一个量级。
更稳妥的做法是加吸嘴重试机制。取料后如果真空判定失败,我的程序不会立刻报警,而是把当前螺丝扔掉(吹气清料),重新走一遍“分料、取料、真空检测”流程。重试3次仍失败才报警,并在触摸屏上提示“请检查吸嘴是否堵塞”。这个策略在实际生产中非常重要——偶尔一颗螺丝在供料轨道里卡了一下,重试一次就恢复了,没必要因此停线喊人。但连续3次失败说明机械上确实出问题了,必须人工介入,避免带病生产造成批量漏锁。
3. 威纶触摸屏画面设计:把数据变成操作员看得懂的界面
3.1 画面布局:主画面、手动、参数、报警、统计
触摸屏不是把PLC的数据罗列出来就行,而是要让不同角色的人在30秒内看懂设备状态。我的画面结构一般分成五块:主操作画面、手动调试画面、参数设置画面、报警记录画面、产量统计画面。主操作画面给操作员用,显示启动/停止按钮、当前步号、运行/待机/报警状态、当前计数和报警按钮。手动画面给调试和维修人员用,XY轴伺服的点动、各电磁阀的手动开关、电批的正反转测试都放在这里,现场排查问题时不需要打开电柜去捅继电器。
参数画面放配方、速度、延时、扭矩阈值等所有可调参数,但必须做权限控制。我的习惯是分三级:操作员只能看,不能改;技术员可以改部分生产参数;工程师才能改配方和伺服参数。威纶的“用户等级”功能配合本地LW寄存器可以实现这个需求,不用额外写PLC逻辑。报警画面要能显示当前报警、历史报警、报警触发时间和恢复时间。产量统计画面把良品数、不良数、节拍时间、稼动率算出来,换型或交接班时一目了然。画面之间用“切换按钮”互跳,把触摸屏当成设备的“仪表盘”。
3.2 地址映射与通信设置:CP1H的数据怎么进触摸屏
CP1H和威纶触摸屏的连接并不复杂,我常见的有两种方式:串口走HostLink协议,网口走FINS/TCP或Ethernet方式。用EB Pro新建工程时,设备选“OMRON CP1H Ethernet”或“OMRON Host Link”,填上IP地址和端口号就能建立连接。地址映射的规则比较直接:PLC的CIO区在触摸屏上写作“CI0.00”,W区写作“W0.00”,H区写作“H0.00”,D区写作“D100”。例如步号存在D0,触摸屏上新建一个数值显示元件,地址填“D0”即可直接显示当前程序步号。
这里有个经验:不要把触摸屏上所有要显示的数据都直接拖原地址,那样数据量大且刷新慢。我通常在威纶触摸屏里用LB(本地位)和LW(本地字)做中间变量。比如主画面上的“设备状态”用一个LW值,由宏指令根据PLC里多个位状态组合而来;按钮的联动逻辑也可以写在LB上再映射到PLC。这样既减少PLC的程序负担,也让触摸屏这边逻辑更灵活。至于通讯超时,建议设150到300毫秒,重试次数2到3次,太低容易误报掉线,太高画面响应迟钝。
3.3 配方与换型:让换线操作员十分钟完成切换
螺丝机经常要换产品,换型如果靠技术人员拿着电脑改程序,效率太低。我用威纶的配方功能,在触摸屏上建立了一套“产品配方库”,PLC程序里只保留一个“当前配方号”和一组D区参数。配方切换的流程是:操作员在配方画面上选择产品名称,点击“下载配方”,触摸屏把该配方对应的所有数据一次性写入PLC的D区,PLC同时校验配方号和校验值,正确才允许自动运行。
配方里存什么,我用表格列一下:
| 参数 | 地址示例 | 说明 |
|---|---|---|
| 配方编号 | D200 | 1~20号配方 |
| 产品名称 | 触摸屏文本 | 显示用 |
| 孔位数量 | D201 | 2~12颗 |
| 孔位1 X坐标 | D202 | 相对原点 |
| 孔位1 Y坐标 | D203 | 相对原点 |
| 孔位1 锁付延时 | D204 | 毫秒 |
| 孔位2 X坐标 | D205 | 以此类推 |
| 真空建立延时 | D260 | 毫秒 |
| Z轴下压深度 | D261 | 相对高度 |
配方切换后,PLC的第一个动作是校验D200的配方编号和D201的孔位数是否在合理范围内,防止操作员换型时误选配方导致机械碰撞。很多设备出事故,不是因为程序写的复杂,而是换型参数没做好校验。
我还加了一个“坐标教导”功能:手动画面里把XY平台移动到实际孔位,点“记录坐标”,就把当前伺服位置写入当前配方的对应坐标区。这个功能设计调试时省了大量时间——不用拿卡尺去测量孔位坐标,然后用电脑改程序,现场手动走一遍就自动录入。
3.4 数据采样与报警记录:扭矩曲线和追溯
品质追溯越来越重要,光有OK/NG还不够,客户会要扭矩曲线。威纶触摸屏的“数据取样”功能在这里很有用。如果电批控制器支持实时扭矩输出,PLC把扭矩值放到D区,触摸屏以固定时间间隔(比如20毫秒)采样一次,就能画出一条扭矩随时间变化的曲线。锁付结束时,采样数据可以自动保存到触摸屏的历史数据,也可以导入到U盘导出CSV文件。注意采样笔数和时间间隔要匹配,采太密会大量占用触摸屏存储,采太稀看不出扭矩峰值。
报警记录我用威纶的“事件登录”功能。PLC里为每条报警分配一个位地址,比如报警1对应W10.00,报警2对应W10.01。触摸屏事件登录里配置触发地址,自动记录触发时间、恢复时间、当前值。这里建议不要把报警条件直接写在触摸屏上,而是全部在PLC里处理——这样即使触摸屏没开,PLC照样能锁存报警状态,恢复供电后报警记录不会丢。
数据采样和报警记录都要注意PLC扫描周期的影响。CP1H默认扫描周期很短,但如果你在程序里用了大量浮点运算或通信指令,扫描时间会被拉长,触摸屏采样出来的扭矩曲线可能出现“毛刺”——那不是电批的问题,是采样时间间隔不均匀。解决方法是把扭矩采样值放在刷新频率较高的中断程序里处理,或者适当放宽采样间隔。
4. 现场调试踩过的坑:误判、抖动、掉线、回原点
4.1 伺服回原点:限位还是Z相,换型精度差的根源
第一个让我印象深刻的坑,是伺服回原点精度。项目调试初期,X轴用的是限位开关回原点,机械上装了一个近接开关,程序碰到开关就定原点。结果生产不到两天,现场反馈“换型后第一颗螺丝位置偏了0.5毫米”,后续又正常了。我起初以为是机械松动,把XY平台重新锁了一遍还是没用。
后来排查发现,设备断电重启后伺服需要重新回原点,而限位开关的安装支架存在轻微变形,每次触发位置不一样,原点每次差一点,导致后面的孔位跟着偏。解决办法是把回原点方式改掉:先快速找限位开关,触发后反方向退出,再慢速找伺服驱动器Z相脉冲,以Z相作为最终原点。这样每次开机回原点的重复精度在丝杆导程范围内可以控制在很高的水准。回原点流程变化后,换型精度问题就消失了,再也没有出现过“开机第一颗螺丝偏”的情况。
这个经验提醒我:凡是带伺服的螺丝机,回原点逻辑一定要在调试阶段反复断电验证,别只看当次定位准不准,还要看断电重启后还能不能保持同样精度。
4.2 电批OK信号抖动:输入滤波不是越小越好
第二个坑很典型——电批OK信号偶尔丢失。现象是设备运行中,程序偶尔会把一颗明明锁好的螺丝判定成NG,甚至停了机。我最初怀疑是电批控制器本身的问题,换了一个新控制器还是偶发。后来用在线监控盯着IO表看,发现OK信号持续的时间极短,大约只有几毫秒,而CP1H默认的输入滤波时间把它拦截掉了。于是我把该输入通道的滤波时间从默认的10毫秒改成0.1毫秒,问题立刻变了样:OK信号能捕捉到了,但现场电磁阀动作时产生的干扰脉冲也被当成OK信号,频繁误触发。
折腾到最后,我的处理方案是两个动作同时做:第一,把电批OK信号对应的输入通道滤波设为1毫秒,避开大部分电磁阀干扰;第二,在PLC程序里对OK信号增加了20毫秒的“持续确认”,只有OK信号连续保持20毫秒才算锁付成功。这样短的干扰脉冲进不来,真实的OK信号又不会被丢掉。从那以后,我再也不建议别人把输入滤波全线改成0.1毫秒——不是所有信号都需要极速响应,慢信号就该老老实实滤波。
4.3 真空传感器误报:吸嘴堵料和管路泄漏
真空误报这个问题,在连续生产时尤其折磨人。有一次客户反馈设备每天下午都会报警“真空不良”,频率不高,但每次都要停机检查。我到现场看报警记录,发现一个规律:报警都集中在连续生产两三个小时之后,而且往往出现在某一根吸嘴头上。拆开看,吸嘴孔里卡了一小片螺丝表面的脱落的防锈油膜,真空负压值变得不稳定,压力开关在临界值附近反复跳变,程序判定了一次“没吸到螺丝”。
这种情况靠延长延时只能缓解,不能根治。我在程序里把“真空建立延时”提高了一点,但更关键的是增加了“取料后Z轴移动前再次确认真空”的二次检测,同时触摸屏报警信息里明确提示“请检查吸嘴是否堵塞或气管是否泄漏”。另一方面,在手动画面里加了一个“吸嘴吹气清洁”按钮,操作员每隔一段时间点一下,高压气体反吹吸嘴,把微小杂物清理掉。加了这些措施之后,真空误报基本消除。
管路泄漏的问题也得注意。真空传感器和吸嘴之间的气管如果过长或接头密封不好,吸嘴没接触螺丝时负压也可能勉强达到阈值,导致设备误以为吸到螺丝。我后来把真空传感器尽量靠近吸嘴安装,并定期检查气管接头,程序里还加了一个“无料真空测试”功能,换型时手动验证一次,确保传感器状态正常。
4.4 触摸屏偶发掉线:通讯参数与扫描周期的相互影响
第三个坑是触摸屏偶发弹出“PLC no response”,但设备本身运行正常。现场维修人员排查了网线、交换机、IP地址,都没发现问题。我远程连进去看程序,发现了一个容易被忽略的问题:触摸屏上有几个画面元件组引用了D区一个非常大的连续地址块,并且画面默认“定期刷新”,导致触摸屏以很高的频率向PLC发起大块数据读取请求。而CP1H的通信带宽有限,当PLC扫描周期稍长时,请求响应来不及,就把设备判断成“掉线”。
解决办法是把触摸屏上连续大块地址的读取方式改掉:不再让画面每秒钟刷新整段D区,而是改成分页读取或只在换型时读取。具体来说,配方参数那部分我只在“打开配方画面”和“点击读取配方”时才去刷新一次,主画面只显示当前配方号、当前步号、产量这几个小地址。同时把通讯超时时间适当放宽到200毫秒,重试次数增加到3次。改完之后,设备跑了一个多月再没出现过通讯掉线提示。
这个坑背后的通用原则是:触摸屏和PLC之间要“按需通信”,不是所有数据都需要实时刷新。越是大批量数据,越要控制刷新频率和触发时机。
5. 程序的可维护性与换型扩展:写给三个月后的自己和同事
5.1 程序组织与注释习惯:三个月后自己还看得懂
设备交付后,最怕的就是三个月后现场打电话来问“当年这个程序为什么这样写”。所以我从一开始就定了规则:程序必须按功能分区。CP1H的梯形图程序我习惯分成几个区块:主流程区、伺服控制区、电批控制区、真空供料区、报警处理区、产量统计区。每个区块开头用注释块写清楚“这段是干什么的、输入条件是什么、输出是什么”。符号表里所有地址都用有意义的变量名,而不是光秃秃的“CIO 0.00”。
变量命名我也有偏好:输入信号用“传感器名称_功能”,比如真空检测、气压正常、产品到位;输出信号用“执行元件名称_动作”,比如电批正转、吸嘴电磁阀、分料请求。这样在梯形图里看到符号名,不用查点位表就知道它控制什么。此外,我在程序末尾专门留了一个“修改记录”注释区,每条改动都记录日期、改动内容、改动人。项目移交时,这份注释就是给后来维护人员最好的交接文档。
5.2 配方参数的集中管理:坐标、节拍、校验一次配齐
配方参数管理这块,我的经验是“宁可多存,不要漏存”。很多设备换型调半天,不是因为程序复杂,而是因为换型参数分散在好几个画面里,操作员改漏了一个参数就出问题。我把所有和产品相关的参数都集中到一个配方里,包括孔位数、每个孔的X/Y坐标、Z轴下压深度、真空建立延时、电批锁付延时、OK确认时间、NG重试次数、节拍记录值等。这样换型时一次性切换,不用到不同画面里去翻。
配方里我还额外存了“标准节拍”和“标准不良率”两个参考值,生产时触摸屏上会自动对比实际节拍和标准节拍,如果实际节拍明显变慢,说明可能有螺丝卡料或者电批老化,提前预警。配方切换后的校验也非常重要。我在PLC端写了一个小逻辑:配方号合法、孔位数量在允许范围、孔位坐标不超过机械行程,三项全部通过才允许进入自动模式;任何一项异常,触摸屏弹窗“配方参数异常,请检查配方设置”。
5.3 给上位机和第二台设备预留接口
设备不是孤岛。我现在做螺丝机,一定会预留和上位机通信的接口。最简单的方式,是用CP1H的HostLink协议开放一组公共D区地址——比如D500到D520是产量数据区,D521到D530是状态区,D531到D540是故障代码区。这样后期上位机、MES或者数据采集系统不需要改动PLC程序,直接按照约定好的地址读取即可。如果现场有扫码枪,可以把扫码枪接到触摸屏的串口上,用威纶的宏指令把扫码结果写入PLC,与配方号绑定,实现“扫产品码→自动调出对应螺丝锁付参数”。
如果以后要复制第二台设备,这套程序也能直接平移。我习惯把节拍相关的所有延时参数都做成D区可调,而不是写在程序里,这样后续设备机械结构稍有差异时,现场只需要调参数,不需要改程序。另外,如果未来要加视觉引导,我预留了“视觉补偿坐标”的D区,视觉系统把XY偏移量写入后,PLC在移动到目标孔位前自动叠加补偿。这些预留接口在初期看起来“多余”,但设备一量产,基本上都会用上。
做螺丝机项目这些年,我最深的体会是:程序写得清楚,不是为了给谁看,是为了以后不给自己添堵。电气程序这种东西,越是能在现场扛住各种极端情况,越需要一开始就把工艺和异常都想透。如果你正在弄类似的欧姆龙PLC螺丝机程序或者威纶触摸屏程序,我的建议是——把IO表和步号表打印出来贴在电柜门上,报警该做的一步都不要省,换型参数做好校验,调试时多留时间做重复测试。这行业最终看的是客户产线上那颗螺丝有没有锁好,程序漂亮不漂亮,跑个十万颗再回头看才见真章。