☰
台达运动控制型PLC在椭圆印花机多色套印中的程序设计
2026/10/15 5:26:47 网站建设 项目流程

1. 先搞懂椭圆印花机在做什么:工艺流程与控制需求

接到这个项目的时候,我第一反应不是打开软件写程序,而是先去车间把整台设备的动作流程摸了一遍。说实话,椭圆印花机在服装印花行业里属于那种“看起来不复杂、实际联动关系非常多”的设备。如果你没弄明白工艺就开写代码,后面调试会痛不欲生。

所谓椭圆印花机,核心是一张椭圆形的跑台,上面均匀分布着若干个印刷工位,每个工位承载一种颜色的网框。承印物(通常是裁片或者整卷布料)被固定在台板(也叫印台)上,台板沿着椭圆轨道步进移动,每到一个工位停下来,该工位的网框下降压在布料上,刮刀来回刮浆完成一次印刷,然后台板继续前进到下一工位,叠加下一颜色。十几二十个工位走完一圈,一个完整的多色印花图案就出来了。

这里面的控制需求可以拆成四层:

  1. 定位控制:台板在轨道上必须精准停在每个网框正下方,偏差直接影响套色精度;
  2. 时序控制:台板停稳后,网框降、刮印、抬网、台板再运行,每一步的先后和互锁都要严格;
  3. 联动控制:刮刀速度、浆料厚度、网框升降速度之间的配合,会影响印品质量;
  4. 监控与管理:色序切换、产量计数、故障报警、停机记忆这些“软件层面”的需求。

所以我在项目最开始的规划文档里就写了一句:“这是一个以运动控制为骨架、以逻辑互锁为肌肉、以配方管理为大脑的项目。”后来整个开发过程也确实是沿着这条主线走的。如果你手上也拿到类似的设备项目,我建议先不要急着架构代码,先把机械动作列表画出来,哪怕用纸笔画都行。因为你后面所有程序结构,都是在为这份“动作清单”服务。

2. 台达控制方案的硬件选型:硬件架构决定了程序的上限

2.1 运动控制器选型逻辑

这个项目我选的是台达的运动控制型 PLC。为什么不用普通 PLC?因为普通 PLC 做定位时需要单独配定位模块,而且多轴联动时 CPU 负荷很大,椭圆机这种“一个主运动轴带几十个工位”的应用,最好是选原生支持多轴插补和电子凸轮的运动控制器。

台达这一系列控制器的特点就是 PLC 和运动控制在一个 CPU 里,程序里可以直接调用运动指令,不需要外部脉冲模块。我用下来的感觉是:对于这种点位运动为主、单轴为主(跑台轨道轴)加大量气缸辅助动作的场景,它的性价比是够用的。

选型时我重点对比了两款:一款是基础型,另一款是带 EtherCAT 总线的高性能型。最后选了带总线的版本,原因很简单——椭圆印花机工位多,如果全部用脉冲线,光布线就是一场灾难,而且差分脉冲信号在长距离传输时的抗干扰能力不如总线。总线方案的好处是:伺服驱动器串起来,一根网线搞定,调试时每个轴的监控数据直接传到 PLC,省时省力。

2.2 伺服驱动与电机配置

跑台主运动轴是整台设备的灵魂。我配了带绝对型编码器的伺服电机,理由很直接:设备断电再上电,不需要回原点就能知道当前在哪,这对生产节奏很关键——你不可能每次开机都让工人把台板重新摇回原点。

至于每个印刷工位的网框升降、刮刀往复,这些动作我用的不是伺服,而是普通气缸加磁性开关。为什么这里不用伺服?因为刮印动作的终点不需要高精度定位,气缸到位就行,采用电缸成本可能翻倍。不过这里有个细节:刮刀往复的行程两端加了可调缓冲,程序里只负责控制换向电磁阀的时序,真正决定压力的部分是机械缓冲和气压。

整套系统拓扑大概是这样:控制器作为主站,通过总线连接主运动轴伺服、若干辅助轴(如果有需要独立定位的跑台),各工位的气动阀岛通过远程 IO 模块接到总线末端。传感器包括工位原点接近开关、气缸到位磁簧开关、安全门开关、气压检测开关等。硬件接线我在电柜里全部做了端子供回线,每根线都套了线号管,因为这项目调试肯定要来回查线,前期整理清楚后期能救你一命。

2.3 从硬件接线反推程序结构

硬件定型之后,我会把每一个输入输出点做成一个 I/O 分配表,这张表就是程序的“物品清单”。比如:

地址区域用途说明
X0.0-X0.7原点/极限开关跑台轴原点、两端软极限
X1.0-X1.7台板在位检测各工位台板到位信号
X2.0-X2.7气缸到位反馈网框上/下、刮刀左/右
Y0.0-Y0.7气缸电磁阀各工位升降、刮印换向
Y1.0-Y1.7指示灯/蜂鸣器三色灯、报警输出
内部寄存器区配方数据/计数色序、延时、产量

这张表做完,其实程序里的地址空间就已经被“占位”好了,剩下的工作就是把逻辑填进去。很多新手上来就先写梯形图,写到一半发现 I/O 规划乱得要命,回头再改地址,越改越崩溃。按我习惯,第一步永远是模块化地址规划。

3. 程序架构设计:把“印一版”拆成可复用的状态机

3.1 主流程状态机

椭圆印花机整个运行过程可以抽象成一个循环状态机。我把它分为几个状态:待机、手动、单步、自动运行、报警暂停、急停复位。

自动运行状态内部又套了一层“跑台运动-工位动作”的节奏。台板在某一工位停下后,该工位要执行的动作序列是:网框下降→刮刀正向刮印→刮刀反向刮回→网框上升→允许台板走。每个工位同时执行这套序列,但彼此之间通过“台板停止”这个全局条件来保证同步。

我用台达的 ST 语言(结构化文本)来写这个状态机,梯形图只用来处理报警和互锁逻辑。这样做的理由是:动作流程有明确的先后顺序和条件分支,用 ST 写出来像伪代码一样清楚,维护起来比一片梯形图直观多了。代码结构大致如下:

// 自动运行主循环 CASE runState OF 0: // 待机 IF startButton THEN runState := 1; END_IF 1: // 检查所有工位就绪 IF checkAllReady() THEN runState := 2; END_IF 2: // 启动跑台运行到下一工位 moveToNextPallet(); runState := 3; 3: // 等待到位 IF axisInPosition THEN runState := 4; END_IF 4: // 触发各工位印刷动作 triggerPrintProcess(); runState := 5; 5: // 等待各工位完成 IF allCylindersDone THEN runState := 2; // 继续下一工位 END_IF END_CASE

这里我要特别强调一点:如果某一工位网框没有下降到位,禁止台板启动。这个互锁必须放在运动启动的条件里,而不能只靠操作员眼睛看。谁都不敢保证工人每次及时处理异常。

3.2 工位任务的分层设计

椭圆机最麻烦的不是跑台轴,而是几十个工位同时动作的“并发”管理。每个工位的逻辑几乎一样:等待触发、执行序列、返回完成。如果每个工位都单独写一份逻辑,程序会又臭又长。我把工位动作做成一个全局功能块,每个工位只是这个功能块的一个实例。

台达的 PLC 支持用户自定义功能块(FB),你可以把变量和逻辑封装在 FB 里,实例化几十份。每个工位的状态存到独立的背景数据块里,互不干扰。项目里我写了两个 FB:一个是缸动作控制(升降、刮刀换向、延时),另一个是工位主控(接收触发信号、管理内部状态)。这样做的好处是:新增一个工位不需要动程序,只需实例化一个 FB,把 I/O 地址填进去就行。

比如我给每个工位分配的数据结构大概是:

FUNCTION_BLOCK FB_Station VAR_INPUT trigger: BOOL; // 触发印刷 photoSensor: BOOL; // 台板到位检测 END_VAR VAR_OUTPUT frameDown: BOOL; // 网框下降输出 frameUp: BOOL; // 网框上升输出 squeegeeFwd: BOOL; // 刮刀正行 squeegeeRev: BOOL; // 刮刀反行 busy: BOOL; // 忙信号 END_VAR

3.3 轴同步与坐标系的建立

椭圆印花机虽然以点位运动为主,但台板在轨道上的运行速度曲线会影响停位精度。我用台达运动控制指令里的梯形曲线加减速来跑,加速度和时间参数在调试时花了整整两天去试。

这里有一个非常关键的数学概念:每个工位之间的“步距”在机械上并不是绝对均匀的。由于加工和装配误差,实际每个工位的间距会有细微差别。如果你的程序只用固定的脉冲数去移动台板,跑过几个工位之后偏差会累积,套色就越印越歪。

我的做法是:建立一张“工位坐标表”,把台板从某个原点走到每个工位的实际脉冲数都记录下来。跑台轴每走一步,从这张表里去取对应的目标位置,而不是用“当前位置+固定步距”的方式。这张坐标表其实就是电子凸轮/位置表的变体,可以让每站停得更准。

4. 从硬件到代码的典型实现:关键程序设计细节

4.1 运动控制轴参数设定与原点回归

在台达的编程工具里,轴参数填充是一个反复验证的过程。比较关键的几个参数:

  • 电子齿轮比:电机编码器分辨率除以机械减速比和皮带轮周长之后的值,单位是脉冲/毫米。这个系数必须和机械工程师对表,绝对不能靠猜。
  • 速度与加减速:我设定的跑台速度大约是 18米/分钟,加减速时间 0.3秒。这个组合既保证效率,又不会让台板上的布料因为急启急停而移位。
  • 软限位:在程序里对轴坐标设了上下限,防止限位开关失效后撞机。

原点回归方式,我选的是“减速+近点信号”方式:轴先快速回退,碰到近点传感器后减速,再低速爬行到 Z 相标记。因为绝对型编码器平时不需要回原点,但更换伺服或者电池掉电后必须执行一次原点回归。这个动作我做了个“自动校准”模式,操作员在触摸屏上按一个按钮就跑一遍,自动记录各工位位置偏差到配方区。

4.2 气缸动作时序与刮印压力控制

印刷工位的气缸动作,程序上看起来就是“输出 Y 点→延时→读 X 点确认到位”,但实际写起来坑不少。最典型的问题是:电磁阀换向瞬间,气缸动作有响应时间,如果程序不等待到位信号就直接进入下一步,会出现网框还没到位刮刀就往前跑,布料上直接拉出一条浆料痕迹。

我在每个工位的 FB 里强制加入了“双确认”机制:下降命令发出后,必须同时满足“下降到位开关为 ON”且“上升到位开关为 OFF”,才允许刮刀启动。这个逻辑保证了即使某个磁性开关坏掉,也不会带病工作。顺便提一句:现场调试时经常发现磁性开关位置没调好,导致到位信号时有时无,排查时先看信号灯,别急着改程序。

刮刀往复的次数、每趟的速度、头尾停留时间,这些我都放到了配方面page里,做成可调参数。为的是给工艺人员一个自由度——不同浆料、不同网目,参数肯定不一样。程序里用这些参数控制刮刀气缸的换向延时,实际上实现的是变频器多段速和电磁阀时序的组合效果,简单但有效。

4.3 套色对位与误差补偿

套色对位是这个项目里我花心思最多的地方。“对位”在机械上靠的是网框在工位上的装夹位置,在程序上靠的是跑台停位的一致性。停位出现偏差,颜色就重影。

除了前面说的工位坐标表,我还加了两层保险。第一层是周期性校准:每跑完一整圈(也就是所有台板走完一轮),程序自动用原点开关重新校准坐标系的零点,把这个周期的累积误差“清零”。第二层是微调偏移量:如果某个工位印出来总是偏一个方向,就在配方里给该工位加一个偏移值,也就是该工位的目标位置人为减/加若干脉冲数。这台设备交付后,工艺人员可以独立完成微调,不用每次修改都找程序员。

这里我还做了一个小工具:在触摸屏上进入“对位调试页面”,操作员选工位号,输入偏移量(单位脉冲),点“保存”,数据就写入配方区。这在客户现场调试时很受欢迎,因为机械上一点点偏差都是靠这种方式硬“吃”掉的。

4.4 配方管理与色序切换

椭圆印花机的色序切换是生产现场常用功能。产品换版时,可能从 12 色改成 6 色,工位使用数量变了,跑台的运转范围也要跟着变。

我把配方分成两层:机器参数和产品配方。机器参数是设备本身的,比如速度、加减速、原点位置,不同的产品通用;产品配方则是针对某个印花文件的,包括使用的工位号、各工位刮印次数、刮刀速度、微调偏移量等。这样切换产品时,操作员只需调取对应配方,程序自动重新计算跑台的工作范围和循环圈数。

配方数据我用的是台达的数据寄存器区,做了一套带校验的读写机制:保存配方时先写入数据,再读出来对比,一致才提示保存成功,防止写到一半断电导致配方损坏。内存卡备份我也做了一份,设备调试完成后把最终配方导出存到 U 盘,防止哪天奇葩问题把内部数据区洗掉。

5. 调试与排错:现场最容易翻车的四个地方

5.1 跑台停位漂移:动过的皮带比写过代码更难调

第一次上电调试时,跑台运行三五圈后停位越来越偏。我先怀疑程序里的累积误差处理有问题,把坐标表反复核对了三轮,发现计算逻辑本身没毛病。后来把伺服电机的负载率曲线拉出来看,发现高速段负载波动很大,皮带张力在跑台循环时不是恒定的。机械工程师把导轨润滑和皮带张紧重新调了一遍后,问题明显缓解。这件事给我一个教训:程序里的误差补偿能解决一部分问题,但如果机械侧的“硬伤”存在,代码再努力也是顶不住的。

5.2 网框升降不同步导致套色错位

有一阵客户反馈某个工位印出来的图案颜色偏淡而且边缘发虚。到现场一看,网框下降磁性开关位置偏了一点点,气缸实际还没完全到位开关就亮了。程序认为网框已经到位,提前启动了刮刀。这种问题程序上能做的只有一件事:把“到位判断”做成磁性开关和延时双重条件,延时设 200 毫秒,给气缸留足稳定时间。磁性开关的机械位置也要按标准标记好,这属于设备维护范畴,光谈代码解决不了。

5.3 程序扫描周期与气缸同时动作的冲突

项目早期版本出现过一个问题:几十个工位同时输出电磁阀动作的瞬间,总线通讯偶尔会闪断报警。排查后发现是总线上 IO 模块瞬时电流过大,电压跌落触发了通讯芯片的保护。后来我在电柜里给阀岛单独加了直流稳压电源,程序上也做了分流——每次最多同时触发 10 个工位的气缸,分两批完成整个动作序列。虽然没有降低设备节拍,但通讯稳定性明显提升。

5.4 报警体系要从操作员视角设计

最后说说报警。我见过很多设备的报警列表就一句话“某某轴报警”,操作员完全不知道怎么办。我的做法是:每个报警至少配三行信息——现象描述、可能原因、处理建议,直接在触摸屏上显示。比如“跑台轴伺服报警——可能原因:电机过载/皮带卡死/急停被按下——处理建议:检查急停按钮、盘动皮带是否顺畅,排除后复位”。设备投入使用后,操作员遇到小问题能自己处理,半夜不会动不动就打电话催你到现场。

另外一个经验:报警要分级。急停、安全门打开的报警必须立刻断输出,属于最高级;气缸不到位这种属于“暂停级”,让机器停下来等人工处理;而产量计数类、运行时长的提示属于“提醒级”,不影响生产,只记录日志。

6. 交付与维护阶段的几个实用心得

项目结尾时我整理了一套交付文档,除了电路图、I/O 表、程序备份之外,还专门写了一本“操作员手册”,用大白话讲清楚哪些参数能改、哪些不能改、分别在哪里改。交付前一个月,我回访了几次,最重要的收获是:哪怕程序写得再“完善”,也要留足人工介入的入口。生产现场的工况远比实验室复杂,布料卷边、浆料结皮、网框破损,这种机械和工艺上的问题程序员写不出代码来预防,但一个好的程序至少能做到——快速定位问题出在哪个环节,让操作员知道往哪个方向处理。

另外一点是我个人的执念:程序里面写注释,不只是给同事看的,更是给三个月后翻代码的自己看的。我的注释习惯是“动作目的优先,实现细节其次”,比如“// 等待布料吸附真空建立后再启动刮刀,防止布料移位”,而不是“// 延时 500ms”。延时只是表象,理解了目的才能正确调整参数。

最后分享一个调试阶段用得很顺的小技巧:在程序里加一个全局节拍计数器,每完成一次跑台循环就加一,在触摸屏上显示。设备跑得稳不稳定,不用看具体参数,节拍计数器会告诉你——如果连续运行几百个循环没有任何报警,说明机械和程序的磨合已经到位了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询