简介:柔性制造系统(FMS)把信息控制系统、物料储运系统与数字控制加工设备集于一体,能适应加工对象变换,代表了机械制造自动化的重要发展方向。这份PDF文档围绕各单元控制系统设计展开,先从总体构成及工艺流程讲起,再逐个分析上料、冲压、落料等单元的功能原理、结构组成、接线端子、主令部件、PLC地址分配与运行程序;技术方案涵盖气动控制、机械传动、传感器检测、步进电机位置控制、变频调速,以及各PLC通过RS485串行通讯构成的分布式控制网络。内容从供料到分拣的完整流程出发,展示了各单元如何协调配合,有助于读者建立从传感器信号到执行动作的整体控制思路。文中穿插接线说明、地址分配表和梯形图程序,实用性较强,适合机电一体化、机械制造及自动化专业学生完成课程设计或毕业设计,也适合从事自动线维护与调试的工程技术人员参考。压缩包内仅含1个PDF文档,大小2.99MB,篇幅精炼重点突出;已有158人学习/浏览,具有一定参考热度。
1. 从单机到产线:柔性制造系统单元控制的真正难点
一条模拟生产线上,供料站把料仓里的毛坯推到料台,机械手抓走之后进入冲压工位,压完再落料,最后由分拣站按材质分开。设备本身不算贵重,真正难的是控制系统的拆分方式:每个工作单元各有一台PLC,单元之间依靠RS485串行通讯互连,谁先动作、谁等待谁,全部要靠共享数据区里的位信号来对齐。柔性制造系统(FMS)的本质,就是把一条可变的加工链拆成若干自治单元,再通过通信把它们捏合成一个整体。做电气设计时,既要保证每个单元在单机模式下能独立调试,又要保证联机后节拍不乱。这篇文章基于三菱PLC平台,把上料、冲压、落料几个单元的控制时序、地址分配和组网调试完整拆开讲,适合第一次接触FMS产线的人入门,也给做过单机PLC项目、被丢到流水线联调的人做参照。
2. 上料单元的PLC控制:料仓推料与托盘传送的信号链
2.1 上料单元在FMS里的职责边界
上料单元是整个FMS的起点,任务是把料仓中待加工工件自动推出到物料台,等输送单元机械手抓取。从控制角度看,它管两类对象:一个供料气缸(电磁阀YV1,输出Q1.1)负责把料仓最底部的工件推到料台;两台电机分别驱动送料机构和托盘传送带(输出Q1.0和Q1.2)。传感器有四个,I0.4的SEN1检测料仓有无工件,I0.5的SEN2检测料台工件是否到位,I0.6和I0.7的SEN3、SEN4则分别检测托盘传送带输入端和输出端有没有托盘。
信号数量不多,难点在互锁关系:料仓没料不能推,料台上有工件不能推,气缸伸出后如果SEN2在设定时间内没有动作,还要能报警而不是闷在那里一直推。这种逻辑和交通灯控制系统的设计思路完全一致——本质上都是一个带时间约束的状态机,只是这里的"灯"变成了气缸和电机。
2.2 面板接线规则与I/O表的读法
这套实训平台的面板接线有几个固定的颜色约定:24V电源用红线,GND用黑线,PLC输入点(I)用黄线,输出点(Q)用绿线。接线时,按钮和指示灯模块并不直接接PLC,而是通过面板上的接线区转接。以启动按钮SB1为例,SB1-1接到PLC输入I0.0,SB1-2接到电源模块GND区;对应的启动指示灯HL1-1接到PLC输出Q0.4,HL1-2接到GND。这样做的目的是把强电和弱电隔开,也方便维修人员用万用表逐点排查。
上料单元的I/O分配如下表,这张表在后续写程序和改程序时会被反复对照。
| 类型 | 地址 | 信号 | 作用 |
|---|---|---|---|
| 输入 | I0.0 | START | 启动按钮 |
| 输入 | I0.1 | STOP | 停止按钮 |
| 输入 | I0.2 | RESET | 复位按钮 |
| 输入 | I0.3 | CEMG | 紧急停止开关 |
| 输入 | I0.4 | SEN1 | 料仓有料检测(对射) |
| 输入 | I0.5 | SEN2 | 料台工件检测(对射) |
| 输入 | I0.6 | SEN3 | 托盘输入端接近开关 |
| 输入 | I0.7 | SEN4 | 托盘输出端接近开关 |
| 输入 | I1.0 | M/A | 单机/联机选择 |
| 输出 | Q0.4-Q0.7 | 指示灯 | 启动、停止、复位、报警 |
| 输出 | Q1.0 | M1 | 送料电机启动 |
| 输出 | Q1.1 | YV1 | 供料气缸电磁阀 |
| 输出 | Q1.2 | M2 | 托盘电机启动 |
这里有两点值得注意。第一,输入点的排列顺序暗含工艺顺序:先面板主令(START、STOP、RESET、CEMG),再传感器(SEN1到SEN4),最后才是模式开关M/A。第二,输出点把指示灯排在前面(Q0.4到Q0.7),执行机构排后面(Q1.0到Q1.2),这是实训平台的惯例,便于观察程序状态,现场项目里则一般会把电机和阀放在靠前的地址,方便查线。
2.3 推料过程的指令表实现
推料气缸不能一直伸出,必须等SEN2确认工件上料台后再缩回。我一般用运行标志M0加缩回标志M1来控制,避免出现同一个线圈多处输出的双线圈冲突。下面是核心指令段:
// 运行标志:START置位,STOP或急停复位 LD X000 OR M0 ANI X001 ANI X003 OUT M0 // 推料气缸:运行中、料仓有料、料台无工件、未缩回 LD M0 ANI X004 ANI X005 OR Y001 ANI M1 OUT Y001 // SEN2到位后延时1秒,置缩回标志并复位气缸 LD X005 OUT T0 K10 LD T0 SET M1 RST Y001 // 复位按钮清除缩回标志 LD X002 RST M1逻辑说明:第一段是标准的起保停电路,STOP和CEMG都采用常闭触点接入,急停时整条产线都必须在硬件回路上断电,不能只靠程序。第二段里OR Y001让气缸伸出后自保持,防止扫描周期抖动导致输出闪断;ANI M1保证缩回指令生效后不再重复伸出。第三段用T0定时器做了1秒的到位确认,SEN2持续为ON的时间超过1秒才认为推料成功,短促的有效信号不触发缩回,否则工件可能只推了一半就缩回去了。RESET按钮用于清除缩回标志,让气缸具备再次推出的条件。
2.4 报警分支与缺料处理
如果料仓缺料(SEN1为OFF)而产线在运行,程序应该报缺料而不是继续推空料。常见做法是加一条报警分支:M0运行中、X004缺料、且没有急停时,经过3秒延时置位Q0.7报警指示灯。报警状态用置位指令锁存,现场人员处理完缺料后按RESET才能复位。这里不要用OUT直接驱动Q0.7,否则报警原因消失后灯会自己灭,不利于事后追溯。
3. 冲压单元的液压动作时序与传感器选型
3.1 从托盘进给到冲压完成的六拍流程
冲压单元是整条线里动作最重的一个站:它要完成托盘进给、工件夹紧、液压冲压、上升、松开、托盘送出。整个流程被拆成六个步骤,每一步的进入条件和退出条件都依赖传感器信号。
| 步骤 | 动作 | 进入条件 | 退出条件 |
|---|---|---|---|
| 1 | 托盘进给 | SEN2检测到输入端有托盘 | SEN1检测加工位有工件 |
| 2 | 夹紧工件 | SEN1 ON | 夹紧到位延时 |
| 3 | 冲头下降 | 夹紧完成 | 保压时间到 |
| 4 | 冲头上升 | 保压时间到 | 上升到位延时 |
| 5 | 松开夹具 | 上升完成 | 松开延时 |
| 6 | 托盘送出 | SEN1 OFF | SEN3 ON |
这个时序里最容易出问题的是第1步和第6步:托盘电机启动后,如果SEN1或SEN3一直不动作,传送带会一直转。实际项目中必须在电机启动的同时启动一个看门狗定时器,比如5秒内没到位就停电机并报警。原因是接近开关的检测距离是毫米级的,托盘在高速移动时可能越过传感器的有效区,直接看输出点会觉得"传感器坏了",其实是检测窗口太小。
3.2 对射开关与反射开关的分工
冲压单元的三个传感器选型是有讲究的。SEN2用对射开关做输入端检测,发射器和接收器分装在传送带两侧,托盘进入时遮断光束,输出一个可靠的电平跳变,这种形式不受工件表面颜色影响,适合检测"有没有东西经过"这类大范围事件。SEN1和SEN3用反射式接近开关做加工位和输出端检测,安装在支架上的固定位置,靠工件表面反射光触发,适合检测"目标是否停在指定位置"这种近距离判断。
反射式开关有一个常见坑:深色工件吸光,检测距离会明显缩短;工件表面有油膜或冲压毛刺时会产生误触发。所以现场调这类开关,不要只看指示灯亮没亮,要看PLC输入映像里的地址位是否稳定。另外,液压冲压回路频繁换向时,如果管路刚度和阀的响应不匹配,机构会出现负阻尼特性,表现为冲头在行程终点附近反复爬行,传感器信号跟着抖动,这时候改程序没用,要去查蓄能器和节流阀。
3.3 用ST写状态机冲压逻辑
在GX Works里,冲压单元用结构化文本(ST)写状态机比梯形图更清楚,尤其是六拍流程。状态变量step从0开始,每个状态里只做两件事:判断进入下一状态的条件、控制当前状态的输出。
CASE step OF 0: // 等待托盘进入 IF sen2 THEN tray_motor := TRUE; step := 10; END_IF; 10: // 托盘进给中,到位停 IF sen1 THEN tray_motor := FALSE; step := 20; END_IF; 20: // 夹紧工件 clamp_valve := TRUE; IF timer_done THEN step := 30; END_IF; 30: // 冲头下降 press_down := TRUE; IF timer_done THEN step := 40; END_IF; 40: // 冲头上升 press_down := FALSE; press_up := TRUE; IF timer_done THEN step := 50; END_IF; 50: // 松开夹具并送出 clamp_valve := FALSE; press_up := FALSE; tray_motor := TRUE; IF sen3 THEN tray_motor := FALSE; step := 0; END_IF; END_CASE;参数说明:sen1、sen2、sen3是布尔型变量,对应I0.4、I0.5、I0.6三个输入;clamp_valve对应夹紧气缸电磁阀YV1,press_down和press_up分别对应冲压缸下降和上升电磁阀;timer_done是各步延时的完成标志,STEP进入对应分支后启动定时器,定时器用TON实例或者三菱的T号定时器都可以。这段ST的关键点在于状态号只用10、20、30这样的间隔,中间留出余量,后续要插入"下料确认"或"液压泵压力检测"这类步骤时,不需要重新排号。实际调试时,把step变量加到GX Works的软元件监控里,整条线的动作走到哪一步一目了然。
3.4 液压泵电机的启动顺序
冲压单元还有一台液压泵电机,它的启动逻辑和冲压流程有先后关系:液压泵必须先启动并建立压力,才允许执行夹紧和冲压动作;急停后液压泵要立即停下,但冲头要保持在当前状态,防止工件飞出。实现上我习惯在ST开头加一段:
IF start AND NOT estop THEN pump_motor := TRUE; END_IF; IF NOT estop_safe THEN pump_motor := FALSE; clamp_valve := FALSE; END_IF; py := pump_motor AND NOT estop;这里pump_motor是液压泵接触器的输出,py是压力建立标志,在后续冲压步骤中作为附加使能条件。简单的写法会把pump_motor直接接到冲压使能上,但那样急停复位后液压泵会立刻带载启动,对电机和油泵都不友好。
4. 落料单元设计与RS485分布式组网的参数整定
4.1 落料单元的工艺位置与控制对象
落料单元在整条线上的位置在冲压单元之后,负责把完成冲压的工件从加工位接下,通过落料气缸把工件推入分拣滑道,同时要确认工件已经离开托盘。这个单元的I/O规模比上料更小,一般只需要两个传感器加一组气缸:输入端反射开关检测工件是否到达落料位,输出端接近开关确认工件已经滑出,落料气缸电磁阀负责推料。
这里有一个容易忽略的细节:落料气缸的推出动作必须和上游托盘送出动作互锁。常见做法是,托盘到位且落料工位无工件时,才允许落料气缸伸出;工件滑出后,传感器信号消失再缩回。和上料单元的推料逻辑相比,只是把"料台空"的判断换成了"落料位空",本质还是同一个时序状态机。很多初学者在这一站直接复制上料单元的程序改地址,结果在联机时出现两端气缸同时动作把工件顶飞的故障,原因就是忽略了握手信号。
4.2 为什么单元之间选RS485而不是直接并联I/O
五个单元各用一台PLC,如果采用硬接线把上一站的"完成信号"直接接到下一站的输入点,接线会非常杂乱,而且每个信号都要占用一个输入点,扩展性差。选择RS485串行通讯,是因为它抗干扰能力强、传输距离可达千米级、一条总线能挂32个站,完全覆盖一条产线的规模。三菱FX系列PLC在RS485基础上实现了N:N网络,物理层就是RS485,应用层由PLC固件自动完成数据刷新,不需要写串口通讯指令。
N:N网络的参数集中在五个特殊数据寄存器里,上电初始化时必须写入:
| 寄存器 | 功能 | 典型值 |
|---|---|---|
| D8176 | 本站站号(0-7) | 0号站、1号站…… |
| D8177 | 从站总数(0-7) | 3(四台PLC加主站) |
| D8178 | 刷新范围模式(0/1/2) | 1 |
| D8179 | 通讯重试次数 | 3 |
| D8180 | 通讯超时常数(10ms单位) | 50 |
D8178的取值决定了共享数据区的大小,模式0是每站32点位加4个字,模式1是64点位加8个字,模式2是128点位加32个字。实际项目中我一般用模式1,因为每个站需要交换的状态量(运行标志、完成标志、故障标志、急停状态)四五十个点足够用,数据量小则刷新周期短,整条线的响应更快。
上电初始化时用MOV指令写入即可:
// 0号站(上料单元)初始化 MOV K0 D8176 MOV K3 D8177 MOV K1 D8178 MOV K3 D8179 MOV K50 D8180参数说明:D8176设0代表0号站,各站必须唯一,两个站设成同一站号会导致总线冲突;D8177设3表示除本站外还有3台从站,这个值在一条总线上各站必须一致;D8179重试次数设3相对折中,太小会因一次干扰就误报通信故障,太大会让从站掉线后长时间不被发现;D8180按10ms为单位,50对应500ms,超过这个时间没有收到刷新数据就判定通讯异常。
4.3 共享数据区的握手信号设计
N:N网络的共享数据区是自动刷新的,0号站写入M1024的数据,其他站能直接读到。以模式1为例,地址分配如下:
| 站号 | 位共享区 | 字共享区 |
|---|---|---|
| 0号站(上料) | M1024-M1087 | D1024-D1031 |
| 1号站(冲压) | M1088-M1151 | D1032-D1039 |
| 2号站(落料) | M1152-M1215 | D1040-D1047 |
| 3号站(分拣) | M1216-M1279 | D1048-D1055 |
做握手信号时,我一般固定每个站的第一个位是本单元运行就绪,第二个位是本站完成,第三个位是本站故障,用一套统一的位定义,这样联调时不用翻每台PLC的程序就能判断总线上谁卡住了。
// 0号站把"本单元运行就绪"写入共享位 LD M0 OUT M1024 // 1号站读取0号站的就绪信号接到本地 LD M1024 OUT M100逻辑说明:M1024是0号站共享区里的第一位,M0是该站内部运行标志,当上料单元正常启动后,M1024被置ON并在网络上广播。1号站的程序读取M1024作为M100的输入,M100即可作为冲压单元联机启动的使能条件。这样设计的好处是:单机调试时M100由本站面板启动信号控制,联机时M100由网络共享位控制,M/A开关切换两者,程序结构完全独立。
4.4 通讯故障时的现场判断
如果联机后某个站不动作,先看PLC面板上的通讯指示灯是否正常闪烁,再查D8176-D8180五个参数是否一致。比较隐蔽的一个问题是接线端子松动导致间歇性通讯失败,重试次数设大了之后,故障会被重试机制掩盖,表现是产线偶尔停一两秒又自己恢复。遇到这种情况,把D8179临时设为1,故障就会立刻暴露,方便定位是哪一段线路的问题。
5. 从地址分配表到梯形图:I/O规划的落地对照
5.1 地址表是工艺顺序的镜像
上料单元和冲压单元的地址分配表看起来只是罗列输入输出,实际上它把工艺顺序固化了一遍。以冲压单元为例,I0.4是加工位检测、I0.5是输入端检测、I0.6是输出端检测,这个顺序和工件实际走过的路径完全一致。写程序前先画一张地址表,再沿着地址表走一遍工艺流程,很多隐藏问题会提前暴露出来:如果输入端和加工位的地址装反了,程序里SEN1和SEN2的引用会全部错位,改起来非常痛苦。
我见过很多现场反馈"PLC输出正常但气缸不动"的案例,最后查出来是接线时把阀的线接到了另一组输出端子上。地址表的作用是给接线电工和调试工程师对图的,不是写论文用的。所以每一版程序改动,地址表必须同步更新,否则几个月后没人能说清某个输出点到底接了什么。
5.2 单机/联机切换的两种程序结构
M/A开关在地址表里占了整整一个输入点(比如上料单元的I1.0),这一点容易被初学者忽略。它在程序里的角色是切换两套逻辑的控制权。单机模式下,面板START按钮直接作为运行标志的置位条件;联机模式下,面板按钮失效,改由本站收到的网络共享位(比如M1024)来触发。
程序里常见的写法有两种:第一种是用两个中间继电器分别代表"单机启动"和"联机启动",通过M/A触点选通;第二种是直接在启动条件的每一条支路上串联M/A的状态。第一种更好维护,因为它把选通逻辑集中在一个网络里。切换时必须注意,M/A拨到联机之前,各站要在单机模式下把工件都停在上料位置,否则联机后第一个握手信号到达时,各站动作状态不一致。
5.3 电磁阀输出和指示灯输出的处理差异
地址表里看不到的一个信息是输出类型。指示灯(Q0.4到Q0.7)是电平型输出,跟随状态即可;电机输出(Q1.0、Q1.2)接触器,需要自锁和互锁;电磁阀输出(Q1.1)分保持型和脉冲型,三菱PLC里控制气缸一般用SET和RST,不要用PLS上升沿直接驱动。如果抱着"反正输出点都一样"的想法,用PLS去点电磁阀,气缸可能会因为脉宽太窄而动作不到位,或者因为上升沿只维持一个扫描周期而完全不动。
这和PLC停车场车位控制系统的地感线圈、道闸互锁是同一个套路:检测信号先到,输出动作要有保持和互锁,离开具体元件谈I/O规划没有意义。写梯形图的时候,每个输出点心里要清楚它后面接的是灯、接触器还是阀,对应的驱动方式完全不同。
6. N:N联调与报警锁存的几个现场技巧
6.1 单机先跑通,联机再握手
切到联机模式之前,先把所有站拨到单机,分别跑一遍完整动作。上料站单机验证推料后SEN2能稳定变ON,冲压站单机验证六拍流程能完整走完,落料站验证工件能推出且传感器复位。有一台站单机跑不完,联机就不可能跑通,这一点没有例外。联机后不要直接跑全自动,先手动触发上一站的完成信号,观察下一站是否能正确响应,逐级打通握手链路。
6.2 急停的硬回路与软互锁
急停按钮的常闭触点必须串在硬件电源回路里,不能只进PLC输入。程序里再用ANI X003作为每个输出的前置条件,双保险。复位操作要分步做:先解除急停,再按RESET清报警标志,最后按START重新启动,这样能避免急停恢复后设备瞬间带电动作。报警指示灯Q0.7的锁存建议单独做一个网络,故障原因复位后再由RESET清除。
6.3 共享区监控定位卡站
用GX Works打开软元件批量监控,同时看M1024、M1088、M1152这几个共享区首位。如果上一站启动后对应共享位不变ON,说明通讯参数或接线有问题;如果共享位已经ON而下一站不动,说明下一站的接收逻辑有未复位状态。顺着这条线,十分钟能定位一台站卡住的原因。变频器和伺服驱动器的坑集中在脉冲当量换算和端子启动方式上,这类软硬件混合的产线,始终要记住:先看输入是否到位,再看输出是否动作,最后才怀疑程序。
本文还有配套的精品资源,点击获取