做非标自动化的人,几乎没有谁没碰过工位旋转工作台。四工位转盘,上料、加工、检测、下料各占一角,PLC 负责转位顺序和所有气缸动作,看起来简单,但如果你想把同一套程序既用在还在产线上跑的西门子 S7-200 设备上,又用在新采购的 S7-200 SMART 上,这就不是简单抄一遍梯形图的事。这份小系统虽然只有二十几个 I/O 点,却能完整覆盖“工艺分析、硬件搭接、程序结构、跨型号移植、现场调试”的全过程,非常适合刚入手做单机设备的朋友当样板来参考。
我先把话说明白:这篇内容围绕一个非常典型的四工位旋转工作台控制需求展开,完整交付物一般包含 I/O 分配表、电气原理图、PLC 梯形图、触摸屏画面和调试记录。下面我不是给你贴一份现成程序了事,而是把“为什么这么设计”讲透。你把这套思路拿过去,换一个品牌、换一个工位数,照样能搭出自己的系统。
1. 旋转工作台到底在干什么:工艺需求与控制边界
1.1 四工位布局和节拍怎么定
先别急着写梯形图,第一件事是把工艺动作列清楚。我这里以一个常见的四工位布局举例,你照着改就行:
- 工位 1:人工上料。操作员把工件放入定位治具。
- 工位 2:自动压装。气缸带动压头下行,把衬套压入工件。
- 工位 3:检测。用传感器检测压装高度是否合格,不合格时报警。
- 工位 4:人工下料,同时清空工位 1 等待下次上料。
这样的布局,核心矛盾在“转盘什么时候能转、什么时候必须停”。如果工位 2 的压装气缸还没退回,转盘一旦旋转,压头就会撞上治具和工件,这就是全系统最需要防住的事。
节拍计算也别上来就算,先把每个动作的时间列出来,再用一条流水线思维去凑。比如我常用的一个版本:
| 动作 | 时间 | 说明 |
|---|---|---|
| 工位2压装下行至退回 | 3s | 按气缸速度实际测 |
| 工位3检测判断 | 1.5s | 传感器稳定输出时间 |
| 转盘转过一个工位 | 1s | 凸轮分割器输入轴转一圈 |
| 转位后定位稳定 | 0.5s | 机械锁紧,信号稳定 |
这样一算,整机节拍大约在 6 秒左右。真正调的时候我会再留 10%~15% 的余量,等于把节拍目标定在 7 秒。节拍从来不是写进程序里的固定数字,它是现场用秒表掐出来的。
1.2 凸轮分割器与定位信号的关系
旋转工作台最常见的机械形式,是电机驱动凸轮分割器,也就是“凸轮分度机构”。凸轮分割器的特点是:输入轴连续旋转一圈,输出轴带动转盘转过一个固定角度,比如 4 工位就是 90 度,然后机械凸轮把输出轴锁死在定位位置。
这就带来一个极其重要的控制结论:转盘本身的最终定位精度,不靠 PLC,也不靠电机停车,而是靠凸轮分割器机械锁死。PLC 要做的事情是“让电机在有电的情况下转一圈,然后及时断电”,但哪怕电机断电稍晚一点,机械结构也不会让转盘跑偏。这个特性决定了程序里对“转位到位”的判断逻辑可以写得比较粗,但不能没有。
实际安装时,接近开关一般装在凸轮分割器的输入轴旁边,输入轴每转一圈,感应块经过一次,PLC 收到一个脉冲信号,就认为“转盘完成了一次分度”。这是我比较推荐的做法,因为它直观、便宜、故障点少。你如果设备上已经有旋转编码器,也可以换用计脉冲的方式,但对这种小系统而言没必要,一个 NPN 常开接近开关足够了。
2. 硬件方案怎么选:型号兼容性背后是一整套 I/O 规划
2.1 PLC 选型与“程序通用”的定位
西门子 S7-200 系列已经停产多年,但存量设备依然非常多,很多车间里还在用的老设备都是 CPU226 这类控制器。S7-200 SMART 是面向中国市场的主力替代型号,接口变成了以太网为主,编程软件也换成了 Micro/WIN SMART。标题里说的“S7-200 和 SMART 程序通用”,我想强调的并不是文件格式上能直接互相打开,而是“用一套公共的指令集和编程习惯,把代码同时保持在两个平台上都可运行”。
我的做法是:默认以 S7-200 SMART 作为新设备的主选型号,但在写程序时主动回避两个型号之间差异较大的指令,尽量只使用位逻辑、定时器、计数器、比较指令、传送指令、整数运算这类最基础的指令。这样,将来如果客户有老 S7-200 设备需要修改,同一个逻辑块可以直接照搬过去改一下点位地址就能用。
具体选什么 CPU,还要看点数。我这套系统 16 个输入、8 个输出,选一台 CPU SR20(或老型号 CPU224)就够了,不需要扩展模块。但如果你未来要加触摸屏、要接变频器走 Modbus 通信,建议直接选 SR30 或 CPU226,程序存储空间和数据区都宽松一些,省得以后升级时发现站号、寄存器区域不够用。
2.2 电机、气缸、传感器和面板元件的搭配
转盘驱动电机,我用的是 0.37kW 三相异步电机加电磁制动器。为什么加制动器?因为凸轮分割器虽然能在最终位置锁死,但电机断电后如果惯性大,输入轴还会拖着分割器继续走,导致感应块越过接近开关一段距离,严重时会影响下一次启动的相位。加装制动器后,断电即抱闸,输入轴被快速刹停,接近开关的检测点就能稳定对准。
气缸方面,工位 2 压装用一个缸径 32mm、行程 50mm 的薄型气缸,工位 3 检测只需要一个小型顶升气缸,把检测治具推到位即可。气缸的磁性开关我选两线制 NPN 型,直接接入 PLC 输入,不需要继电器中转。
传感器这里点名一个容易踩的坑:接近开关型号要区分 NPN 常开和 PNP 常开,西门子 S7-200 系列输入端子内部是源型输入,也就是低电平有效,所以必须选 NPN 型传感器。如果你买了 PNP 型,接上去电平逻辑完全相反,输入点会一直亮或者完全不亮,非常耽误事。
面板元件更简单,一排按钮加一个三位选择开关:
- 启动按钮(绿色)
- 停止按钮(红色,常闭)
- 急停按钮(红色,带自锁)
- 手动/自动选择开关
- 单步/连续选择开关
2.3 I/O 分配表(完整版)
这是我搭建这套系统时的 I/O 分配方案,你接线和写程序时直接照着套就行。
| 地址 | 符号 | 类型 | 功能 | 安装位置 |
|---|---|---|---|---|
| I0.0 | SB1 | 输入 | 启动按钮 | 面板 |
| I0.1 | SB2 | 输入 | 停止按钮(常闭) | 面板 |
| I0.2 | SB3 | 输入 | 急停按钮(常闭) | 面板 |
| I0.3 | SA1 | 输入 | 手动/自动选择 | 面板 |
| I0.4 | SA2 | 输入 | 单步/连续选择 | 面板 |
| I0.5 | SB4 | 输入 | 手动转位按钮 | 面板 |
| I0.6 | SQ1 | 输入 | 转台分度到位检测 | 分割器输入轴 |
| I0.7 | SQ2 | 输入 | 工位1有工件检测 | 工位1治具下方 |
| I1.0 | B1 | 输入 | 压装气缸下行到位 | 工位2气缸 |
| I1.1 | B2 | 输入 | 压装气缸退回到位 | 工位2气缸 |
| I1.2 | B3 | 输入 | 检测气缸顶出到位 | 工位3气缸 |
| I1.3 | B4 | 输入 | 检测气缸退回到位 | 工位3气缸 |
| I1.4 | SQ3 | 输入 | 压装高度合格信号 | 工位3检测治具 |
| I1.5 | KH1 | 输入 | 转盘电机过载保护 | 电控柜 |
| Q0.0 | KM1 | 输出 | 转盘电机运行 | 电控柜接触器 |
| Q0.1 | KM2 | 输出 | 转盘电机抱闸释放 | 电控柜接触器 |
| Q0.2 | YV1 | 输出 | 压装气缸电磁阀 | 工位2气阀 |
| Q0.3 | YV2 | 输出 | 检测气缸电磁阀 | 工位3气阀 |
| Q0.4 | HL1 | 输出 | 绿色运行指示灯 | 面板 |
| Q0.5 | HL2 | 输出 | 红色故障指示灯 | 面板 |
| Q0.6 | HA1 | 输出 | 蜂鸣器报警 | 面板 |
这个表里面有几个细节值得说:停止按钮和急停按钮我都接成常闭触点,原因是常闭触点在线断、急停按下、PLC 输入故障时都会变成断开,程序里设成“非故障才允许运行”,这样安全逻辑更可靠。转位电机用了两个输出,一个控制接触器通断、一个控制抱闸释放,这两个点分开写能让抱闸时序按程序精确控制,比靠接触器辅助触头硬凑更稳妥。
3. 梯形图程序的主干结构:手动、自动、联锁三板斧
3.1 手动调试程序和“防误动”习惯
这台设备的程序我会分成三个子程序:手动模式、自动模式、报警处理,主程序里按选择开关跳转。很多人图省事只写自动模式,一旦现场调试就后悔,因为调气缸、调传感器、检查机械结构时,根本没办法单独让某个动作动一下。手动模式不是给客户用的,是给你的售后服务团队和调试人员留的后门。
手动模式我写得比较“抠门”:转位动作必须按住按钮,松开立即停止。为什么这样设计?因为手动模式下操作员很可能站在转盘旁边,如果按一下按钮就把一整圈转完,转盘转到人面前时还在继续走,容易出危险。手按住才动、手松就停,虽然原始,但对调试场景来说最安全。
气缸的手动操作也遵循同样的逻辑。每个气缸配一个“点动按钮”,按下输出电磁阀得电,松手即断电。同时我在程序里加了条件限制:手动模式下转盘电机输出与压装气缸输出互锁,转盘转的时候气缸不允许动,气缸动的时候转盘不允许启动。这两个动作虽然在机械上不会直接干涉,但调试时分开动作更安全,也更容易判断问题出在电气端还是机械端。
3.2 自动循环采用状态步进式的写法
自动模式的写法,我推荐“步进式状态机”,不要写成一坨乱麻。简单说,就是把整个循环拆成若干个步骤,每一步用一个中间位(M 区)来表示当前走到哪一步。程序每次扫描只执行当前步的动作,同时判断是否满足进入下一步的条件。
套用到这台转台上,自动循环可以拆成这样:
- 步骤 0(M10.0):等待启动按钮。按下后进入步骤 1。
- 步骤 1(M10.1):执行工位动作。给压装气缸电磁阀 Q0.2 输出,并同时启动一个 5 秒的定时器做超时保护。
- 步骤 2(M10.2):等待工位动作完成。条件是压装气缸退回到位信号 I1.1、检测气缸退回到位信号 I1.3 都满足,然后才能允许转盘动作。
- 步骤 3(M10.3):转盘转位。输出电机 Q0.0 和抱闸释放 Q0.1,等待转台分度到位信号 I0.6。
- 步骤 4(M10.4):转位完成处理。到位信号来之后,切断电机输出,等待 0.5 秒稳定,再回到步骤 1,继续下一轮循环。
这种写法最大的好处是,现场出问题时你一眼就能从监控界面看到 M10.x 停在哪一步。比如转到步骤 3 一直不进步骤 4,那就是转盘没转到位;停在步骤 2 不动作,那就是有气缸没退回去。排查效率能提升非常多。
步骤之间我用边沿切换,也就是前一步的完成条件“刚刚满足”的那一瞬间,把当前步步位复位、下一步步位置位。这个习惯可以让每一步的执行时间非常确定,不会因为程序扫描周期的不同而出现同一步重复触发的现象。
3.3 联锁条件:哪些情况坚决不允许转盘动
转盘能启动的条件我会集中写在程序的一个“公共联锁”段里,凡是条件不满足,不管手动、自动一律不允许 Q0.0 输出。至少包含这些:
- 急停按钮 I0.2 没有按下(常闭点为 1)
- 停止按钮 I0.1 没有按下(常闭点为 1)
- 转盘电机没有过载,I1.5 为 1
- 工位 2 压装气缸处于退回状态,I1.1 为 1
- 工位 3 检测气缸处于退回状态,I1.3 为 1
为什么要专门列出气缸退回状态?因为当压装气缸没有退回时,压头还处于工位中央,转盘一转动,工件或治具就会撞到压头。这是转台类设备最典型的机械事故,而且撞一次可能就是几千块的维修费。我在程序里把 I1.1 和 I1.3 串进电机启动回路,宁可动作慢半拍,也不能让事故有发生的机会。
另外,工位 3 检测如果输出“不合格”信号,也就是 I1.4 为 0,自动循环照样可以继续跑,但我会让不合格信号置位一个报警中间位,把红色指示灯点亮,蜂鸣器响 5 秒。这里的思路是:检测出废品不要紧急停机,否则整条流水线停下来损失更大,但要通过灯和蜂鸣器提醒操作员在工位 4 把这个工件挑走。
提示:报警中间位必须用“置位”指令,不要用普通输出线圈,否则报警条件一消失,报警输出就自动灭了,操作员很容易漏看。
4. S7-200 程序往 SMART 移植,最容易踩的差异点
4.1 软件与程序文件的兼容性边界
先把话说死:S7-200 用的是 Micro/WIN 编程软件,工程文件后缀是 .mwp;S7-200 SMART 用的是 Micro/WIN SMART,工程文件是 .smart。这两个软件不能直接互相打开对方工程。所谓“程序通用”,指的是“逻辑通用”,不是“文件通用”。
实际操作中我一般有两种路线。第一种,在 Micro/WIN SMART 里新建工程,对照老工程的梯形图手工重建一遍,效率不高但逻辑检查最仔细。第二种,用软件自带的转换向导去导入老工程,能省不少时间,但导入之后必须逐个检查地址、定时器号、中断子程序是否存在错误。我建议工程比较大的时候走第二种路线,导入后统一核对一遍,小系统两种都行,看个人习惯。
有一点需要注意:Micro/WIN SMART 的工程模板本身就区分 S7-200 SMART 和 S7-200,你新建工程时如果选错了 CPU 型号,有些指令会被判定为非法。如果打算让程序在两个平台上通用,选型号时选“S7-200”模板,这样写出的程序在 SMART 上也一定能跑;反过来先按 SMART 写,再往老平台倒腾,就很容易踩到指令不支持的地雷。
4.2 存储区和常用指令的冷差别
S7-200 和 SMART 在基础指令上重合度非常高,位逻辑、定时器、计数器、传送、比较、加减乘除都能直接平移。真正容易出问题的是存储区容量和个别特殊继电器位。
V 存储区(变量存储区)是平时用得最多的一片区域,但不同型号容量差距很大。老型号 CPU222 的 V 区只有 2KB,CPU226 有 10KB 左右;SMART 系列从 SR20 的 8KB 到 SR60 的 24KB 不等。如果你在老设备上用 VB5000 之后的地址存了一堆数据,直接搬到 SMART 低端机型可能没问题,但反向迁移时就得先确认老设备的剩余 V 区是否足够。
M 区也就是中间继电器区,两个平台都支持 M0.0 到 M31.7,习惯上足够用了。特殊标志位 SM0.0、SM0.1、SM0.5 这些也一样,但个别为扩展功能预留的 SM 位含义会有差异。稳妥的做法是尽量只使用 SM0.0(常 ON)、SM0.1(首次扫描)、SM0.5(1 秒脉冲)这三个,它们在两个平台上都一样,不需要花时间研究差异。
定时器寻址在两个平台也基本相同,都是 T37~T255 这一类。不过请注意,如果你在老程序里用了断电保持型定时器 TONR,SMART 上同样有对应功能,但断电保持的具体行为受 CPU 内置超级电容或电池影响,不能完全等同。
4.3 下载方式和调试器体验的不一样
S7-200 老设备下载程序,一般用 PC/PPI 电缆接 CPU 的 RS485 口,软件里要设置通信波特率、站号。这个环节很磨人,经常遇到“无法建立连接”,十有八九是波特率没对上。SMART 则方便得多,直接用网线连接 CPU 和电脑,自动搜索设备,填一下 IP 地址就能连上,速度快很多。
千万别忽视这种体验差异带来的习惯变化。很多工程师习惯了 SMART 的以太网下载,回过头再去调老 S7-200,半天连不上设备,容易误判成 PLC 损坏。我自己的做法是备一根 USB-PPI 电缆放在工具箱里,顺便把老设备的波特率写在一张标签纸上贴在电控柜内壁上,省得以后再从 9.6k 到 187.5k 挨个试。
还有一个容易忽略的细节:SMART 支持在软件里直接“监控”梯形图上的位和寄存器状态,也就是在线监控画面非常直观。老 S7-200 同样有状态表监控,但梯形图上的实时“绿线”效果和 SMART 相比体验差不少。移植程序后调试时,我通常会优先开着状态表监控 M10.0~M10.4 这五个步骤位,比盯着一屏幕梯形图更直接。
5. 现场调试,从第一次通电到稳定收尾
5.1 电源和接线核查
新设备第一次通电,我给自己定了一条规矩:先不插 PLC 的输入输出端子,单独给 PLC 通电,确认程序能正常下载和运行,再去接线。原因很简单,如果接线有短路,输出板或输入板可能会烧坏,而 S7-200 和 SMART 的集成输入输出板一旦烧坏,基本上只能换 CPU,成本高还耽误工期。
通电后先量一遍各传感器的供电电压是否在 24V 左右,再检查输入点是否有信号但无信号。S7-200 系列输入点带 LED 指示,用手动感应一下传感器,看对应 LED 亮不亮,能快速判断传感器接线极性有没有接反。
对于转盘电机回路,我还会做一个“输出点先接触器后量电机端子”的步骤:只给 PLC 输出,让接触器吸合,不接电机主电源,用万用表确认接触器下口三相电压正常,再接电机。这一步能筛掉接触器辅助触头接错、相序不对、缺相等等一堆问题,非常管用。
5.2 手动空跑与自动空跑
接线全部确认后,先切手动模式,把气缸和转盘分别试一遍。手动试气缸时要观察两个方向是否都动作、磁性开关是否在对应位置稳定亮起。磁性开关离气缸端盖太近或太远都会导致信号不稳定,这个没法靠程序解决,只能靠动手微调。
转盘手动环节尤其要看“电机断电后转盘是否停在正确位置”。具体方法是:按住手动转位按钮,让转盘转过一个工位,然后看分割器输入轴上的感应块是否和接近开关中心对齐。如果偏差很大,多半是电机抱闸时序太晚,导致转盘冲过了停车位。这个问题我在很多设备上都见过,解决办法不是改机械,而是改程序:让电机接触器断开后,延时 80~100ms 再断开抱闸释放信号,让电机先靠机械反作用力减速一下,再由抱闸彻底刹停。
手动都通了,再切自动模式空跑。所谓空跑,就是不装工件、不开加工,让气缸和转盘按自动节拍走。这一步主要看步骤衔接是否顺畅,有没有出现步骤卡死或传感器误触发的现象。空跑时我会连续跑 20 个循环以上,中间不做任何干预,观察有没有偶发的乱序动作。
5.3 转盘不到位和气缸不同步的根因
空跑时最常见的问题是“转盘到位信号偶尔检测不到”。接近开关接头松动首先排除;其次是感应块和接近开关的距离,我一般调整到感应块正好处在开关检测面中心、间隙保持在 2~3mm 左右,这个距离在 NPN 接近开关稳定检测范围内,又能留出机械振动的余量。
如果出现“气缸退回信号和气缸实际位置不一致”,先别急着怀疑磁开关。气缸运动速度太快时,磁开关可能因为磁性活塞通过得太快,输出宽度不够,PLC 扫描周期稍微慢一点就漏采了。解决办法是给气缸排气口装节流阀,把气缸速度调到不至于冲击又能让磁开关稳定输出的程度。对于 PLC 扫描周期,我建议把主程序扫描时间控制住,别让太多无用指令拖慢速度,这一点在移植老程序后尤其要检查一遍。
5.4 带负载后的节拍参数微调
空跑没问题,就开始带负载。带负载后最直观的变化就是节拍变长。压装气缸带负载后速度会下降,转盘电机负载增加后停车时间也会变长。我会拿秒表实掐,把每个步骤的时间记下来,再回程序里调整超时定时器,避免“动作明明正常,却因为超时保护设得太短而报警停机”。
我还有一个习惯:把每个气缸动作到位后的延时统一加到 0.2 秒左右。别小看这 0.2 秒,它能有效缓冲气路中残压波动带来的信号抖动,让传感器输出先稳定,再进入下一步判断。自动线的节拍虽然会因此慢一点点,但对于可靠性要求高的单机设备来说,这点代价非常值得。
调试的最后一步,是让设备连续跑 2 小时以上,观察是否有偶发故障。如果中途出现报警,先看故障指示灯和对应当前步骤位,确认是机械问题、传感器问题还是逻辑问题,再针对性处理。这里我特别提醒:现场改了气路、传感器位置或机械结构后,一定要把程序里的联锁条件重新过一遍,机械状态变了,程序里保护逻辑的边界条件也随之改变,这是最容易留下的隐患。
整套系统从需求梳理、硬件选型、I/O 规划、程序编写到现场调试,走完一遍大概需要一到两周。核心并不在于那几百行梯形图,而在于把工艺动作掰开揉碎,把联锁做扎实,把调试路径留清楚。这套旋转工作台的设计思路,我在不同设备上重复用过多次,每次根据实际工艺微调都能很快落地。如果你也在做同类设备,可以按这个框架先画出工艺流程图和 I/O 表,再动手写程序,思路会清晰很多。