1. 项目概述与整体设计思路
1.1 立项背景与核心需求拆解
我最早接触三轴搬运这个项目,是很多年前在车间做设备改造的时候。老实说,三轴搬运在工业现场属于最典型的“入门级自动化应用”——三台步进电机、一个PLC、一个触摸屏,就能完成从A点抓料、运到B点放下的整套动作。但是越基础的设备,越考验程序结构。很多新手写三轴搬运程序,喜欢把所有逻辑堆在一起,看起来“跑得通”,一旦遇到原点丢失、掉电重启、手动自动切换这些现场老问题,就手忙脚乱。
这套基于三菱FX3U系列PLC与信捷触摸屏的三轴搬运程序,核心目标就一句话:结构清晰、注释齐全、拿来能改、改完能跑。我把它拆成了几个层次来说明——第一层是电气部分,从CAD图纸就能看到每个传感器、每个驱动器的接线去向;第二层是PLC程序,按“手动—回原点—自动”三大模式划分,互不干扰;第三层是触摸屏画面,操作工只需按“启动”“停止”“急停”就行,参数调整都在“手动画面”里完成。
这套程序适合谁?如果你是刚入行的电气工程师、调试工程师,或者正在做毕业设计的自动化专业学生,拿这套程序作为蓝本是非常省力的一条路。它不追求花哨指令,绝大部分逻辑用基础指令就能实现,但每一个线圈、每一个触点后有中文注释,你顺着梯形图就能读完整台设备的“动作周期”。哪怕是没写过三菱PLC程序的朋友,只要能够看懂继电器回路,结合注释也能把搬运时序推出来。
1.2 为什么选三菱FX3U与信捷触摸屏这套组合
先说说PLC选型。三菱FX3U在小型控制领域里属于“常青树”,它最核心的优势是高速脉冲输出稳定、指令生态成熟、学习资料极多。三轴搬运对PLC的要求其实不高,但有一个硬指标——至少三路独立脉冲输出,分别控制X轴、Y轴、Z轴。FX3U-32MT/MT001晶体管输出型的Y0、Y1、Y2正好对应三路脉冲,控制步进驱动器完全够用。
有人可能会问,伺服行不行?当然行。FX3U同样支持脉冲+方向信号控制伺服驱动器,只需在图纸上把脉冲信号接到伺服驱动器的Pulse端子,方向信号接到Sign端子,程序部分几乎不用改。这就是用“脉冲方向信号”做轴控的好处,无论步进还是伺服,只要驱动器的信号接口是“脉冲+方向”,这套程序就能平移。
再说触摸屏。信捷触摸屏在中小型设备里的性价比确实香,而且它对三菱FX协议的支持做得相当省心——不用写复杂的通讯脚本,新建工程时选好PLC品牌、通讯协议、波特率,元件地址直接填三菱的D、M、X、Y就行。硬件上,FX3U的编程口(圆头8针)通过一条RS232电缆,或者走FX3U-485-BD扩展板的RS485口,都能和信捷触摸屏通讯。我这次用的是RS485方式,通讯距离长、抗干扰好一点,适合电柜和触摸屏面板分离的安装方式。
1.3 程序结构设计的整体思路
写三轴搬运程序,我给自己定的“规矩”是三层分离:手动模式、回原点模式、自动模式。三个模式用三个主状态位区分,互锁之后才能互切,防止误操作引发撞机。自动模式内部,用“步进号”的方式推进,每完成一步就加一步,到哪一步、当前在干什么、条件是否满足,触摸屏上全部能监控。
搬运动作本身很单调,但恰恰因为单调,更要考虑“会不会卡住”“会不会撞到”。我的处理方式是:每个轴动作之前,必须有“到位条件”和“安全条件”双重检查。比如Z轴要下降抓料,先确认X轴、Y轴已经停在取料位上方,再确认Z轴正处于上位传感器信号内,然后才允许下降。这种写出来看似“啰嗦”的连锁,现场避免的撞机事故是实打实的。
2. 硬件选型与电气图纸解析
2.1 控制系统总体硬件配置
在动手画CAD图纸之前,先把这张硬件清单理清楚。我这次项目的具体配置如下:
- PLC:三菱FX3U-32MT/001,晶体管输出,220V供电
- 触摸屏:信捷TG465-UT,7英寸,RS485通讯
- X轴:57步进电机+DM542驱动器,行程400mm
- Y轴:57步进电机+DM542驱动器,行程600mm
- Z轴:42步进电机+TB6600驱动器,行程100mm,带动真空吸盘
- 传感器:X轴、Y轴各2个接近开关(原点、极限),Z轴2个接近开关(上、下极限),另加2个光电开关做料仓检测
- 执行元件:真空发生器+吸盘、两位五通电磁阀、蜂鸣器、三色灯
为什么步进电机用57和42搭配?这取决于负载。X、Y轴行程长,要拖动整个横梁,57机座扭矩更足;Z轴只带吸盘组件上下移动,重量轻,42机座就够了。你如果做更重的搬运负载,Z轴同样可以换成57或者带刹车的步进电机,刹车的作用是断电时不让Z轴掉下来。
2.2 I/O分配与接线要点
三菱FX3U的输入输出地址是八进制,X0到X7、X10到X17这样排,输出同理。很多新手容易在这个细节上翻车,画图的时候地址写成十进制,结果接线和程序对不上。我这套程序的I/O分配表如下,照着这张表接线,再照着表写程序,基本不会乱:
| PLC地址 | 信号名称 | 功能说明 | 元件类型 |
|---|---|---|---|
| X0 | X轴原点 | X轴回零近点信号 | NPN常开接近开关 |
| X1 | X轴正限位 | 防止X轴往正方向超程 | NPN常闭接近开关 |
| X2 | X轴负限位 | 防止X轴往负方向超程 | NPN常闭接近开关 |
| X3 | Y轴原点 | Y轴回零近点信号 | NPN常开接近开关 |
| X4 | Y轴正限位 | 防止Y轴往正方向超程 | NPN常闭接近开关 |
| X5 | Y轴负限位 | 防止Y轴往负方向超程 | NPN常闭接近开关 |
| X6 | Z轴上极限 | Z轴上升到位 | NPN常开接近开关 |
| X7 | Z轴下极限 | Z轴下降到位 | NPN常开接近开关 |
| X10 | 取料位光电 | 取料仓有料检测 | NPN光电开关 |
| X11 | 放料位光电 | 放料仓有料检测 | NPN光电开关 |
| X12 | 启动按钮 | 自动启动 | 常开按钮 |
| X13 | 停止按钮 | 自动停止/暂停 | 常闭按钮 |
| X14 | 急停回路 | 硬急停,接常闭点 | 急停旋钮 |
| Y0 | X轴脉冲 | 输出脉冲到X轴驱动器 | 驱动器PUL+ |
| Y1 | Y轴脉冲 | 输出脉冲到Y轴驱动器 | 驱动器PUL+ |
| Y2 | Z轴脉冲 | 输出脉冲到Z轴驱动器 | 驱动器PUL+ |
| Y3 | X轴方向 | 控制X轴方向,ON为正 | 驱动器DIR+ |
| Y4 | Y轴方向 | 控制Y轴方向,ON为正 | 驱动器DIR+ |
| Y5 | Z轴方向 | 控制Z轴方向,ON为正 | 驱动器DIR+ |
| Y6 | 真空吸盘电磁阀 | ON时吸料 | 电磁阀线圈 |
| Y7 | 蜂鸣器 | 故障报警发声 | 蜂鸣器 |
| Y10 | 三色灯红 | 故障指示 | 灯组 |
| Y11 | 三色灯绿 | 运行指示 | 灯组 |
接线时有两个关键点你必须盯住。第一,所有NPN传感器,棕色接24V正,蓝色接0V,黑色接PLC输入端子;第二,步进驱动器的PUL+和DIR+接PLC输出的24V信号,PUL-和DIR-接对应的Y端子,这种接法叫“共阳极”,是三菱晶体管输出和步进驱动器的标准配合方式。注意驱动器侧需要把拨码开关的“信号模式”设为共阳模式,否则信号可能不触发。
2.3 电气CAD图纸的看懂与复用
这套图纸我没有做成那种“一套图一个版本”的僵尸图,而是按功能拆成了独立页面——主回路图、PLC接线图、按钮指示灯图、传感器图、步进驱动器接线图。这样维护的时候,改哪里就只翻哪一页,新手拿到手也能按图排查。
主回路图相对简单,就是一路AC220V进线,经过空气开关、开关电源(24V/5A)、急停继电器触点,分别供给PLC、触摸屏、传感器、驱动器的控制电。很多设备出问题就出在“电源混接”上,比如步进驱动器的供电和传感器共用一路24V,驱动器启停瞬间电流波动大,传感器就误动作。我的建议是:开关电源出来分两路,一路给PLC和传感器(同时给触摸屏),另一路单独给驱动器控制信号,这样抗干扰好得多。
PLC接线图要注意每个输入端的公共端子COM,FX3U的输入COM是S/S端子,接24V+(漏型接法,即“源极输入”)。网上很多案例用源型接法,即S/S接0V,此时NPN传感器要接PLC输入点,负极信号作为输入触发。整套图纸中“传感器—PLC输入—内部梯形图”是一条完整链路,千万别搞混。
关于CAD图纸的复用,我的经验是把这份图纸当模板存起来。以后不管做两轴、四轴,只需要复制一份,改地址标注、改线号,再改掉设备命名就行。图纸上手写的注释越多,现场排查越省力,你甚至可以把“这根线的作用”直接写在CAD的文本说明栏里,打印出来给电工接线时当提示卡用。
2.4 安全回路设计:除了急停,还要考虑“断电保持”
三轴搬运设备运行中最大的风险是掉电后Z轴掉落砸工件,以及恢复供电后各轴位置错乱。我在这套系统里做了两个处理。一是硬件层面,Z轴电机建议用带刹车步进电机——刹车线圈和Z轴驱动器控制信号并联,驱动器一断电,刹车立刻抱死。二是程序层面,掉电再上电后,系统强制进入“回原点”状态,所有自动模式操作全部封锁,必须手动把三个轴依次回零,才能再次启动。
另外,急停按钮必须接硬回路,不要依赖PLC内部软锁。急停按下后,直接切断步进驱动器的使能信号和电磁阀电源,这样即使程序卡死,设备也能立即停下来。图纸上这部分要用“常闭触点串联回急停继电器”,指示灯跨接在继电器线圈上,按下急停灯亮,是个非常直观的排查信号。
3. 程序框架与核心逻辑实现
3.1 程序架构:主程序、回零、手动、自动四段式
我把程序在GX Works2里按“子程序方式”组织,主程序通过CALL指令调用不同功能块,整体看起来像这样:
- 主程序段(步0开始):开机初始化、模式互锁、总报警处理
- 回原点子程序(P0):三个轴按“Z先、X再、Y最后”的顺序依次回零
- 手动子程序(P1):点动X/Y/Z三轴,吸盘吸料/放料
- 自动子程序(P2):按步进号执行的整段搬运动作
为什么回原点顺序要“Z先”?因为Z轴是垂直轴,如果X、Y轴先移动,Z轴却还在下方,很可能撞到周边物体。先把Z轴升到上极限,等于先把“最危险的一轴”收起来,之后X、Y轴随便跑都不会刮碰。这个顺序看着简单,但现场要是搞反了,轻则撞坏吸盘,重则损坏机械结构,务必记牢。
3.2 高速脉冲输出与定位指令的选择
三菱FX3U有三个高速脉冲输出口Y0、Y1、Y2,正好对应三轴。定位指令我强烈建议用“带相对定位符号的DRVI配合绝对定位DDRVA”组合,而不要用单个绝对定位走天下。原因在于,起始/相对位置的第一段走绝对定位,便于让各轴精确停在工件抓取点,之后的运动用相对定位,更直观地按“再往前往后移多少”来编程,逻辑更清晰。
举个例子,假设取料点在X轴坐标300mm、Y轴坐标200mm处,每1mm对应1000个脉冲,则X轴绝对位置参数是D300000,Y轴绝对位置参数是D200000。DRVA指令写法是:
DDRVA K300000 K50000 Y0 Y3 ; X轴绝对定位到300mm位置,速度50kHz DDRVA K200000 K50000 Y1 Y4 ; Y轴绝对定位到200mm位置,速度50kHz等等,三菱的DRVA指令格式,DDRVA指的是双字32位绝对定位,第一个操作数是目标位置,第二个操作数是速度,第三个操作数是脉冲输出端口,第四个是方向输出端口。对于地形,需要确认指令的具体写法,但整个思路是对的。速度上,50kHz对应步进电机每秒50mm(在1mm=1000脉冲的分辨率下),X轴400mm行程跑完全程只要8秒,效率是完全够的。
需要注意的是,DDRVA是32位指令,操作数用的是D寄存器,而且必须连续占用两组16位寄存器,比如D300、D301这种组合,转换成32位数值时“高位在后”,这个细节容易搞混。条件允许的话,用标签编程或填写32位常数,避免寄存器组合问题。
3.3 自动流程的步进号设计
自动模式内部,我采用M10开始的步进号来驱动。每走完一步动作,执行条件满足后,就把步进号加1。梯形图里典型的推进写法是:
LD M10 ; 当前在取料位等待 ANI X10 ; 取料位光电检测到有料 SET M11 ; 跳到下一步:X轴Y轴就位、Z轴下降 RST M10这样一个一个往下推,程序阅读性极强,后续加动作也不必大改,只要在中间插入步进号即可。整段自动流程是这样的:
- M10:等待启动信号,取料位有料才继续
- M11:X/Y轴定位到取料坐标上方
- M12:Z轴下降,碰到下极限后停止
- M13:吸盘电磁阀得电吸料,延时0.5秒
- M14:Z轴上升,到上极限后停止
- M15:X/Y轴定位到放料坐标上方
- M16:Z轴下降
- M17:吸盘电磁阀失电放料,延时0.2秒
- M18:Z轴上升
- M19:如果连续运转信号保持,则跳回M10循环,否则停在结束状态
每一步的“完成确认”除了靠传感器信号,还需要加上“超时报警”保护。也就是说,某一步执行超过设定时间还没到位,PLC判定为异常,停止运行并蜂鸣报警。这个超时判断用定时器T做个“看门狗”就好——除每一步启动时清零重启,超过5秒未完成就报警,非常实用。
3.4 触摸屏画面规划与变量绑定
信捷触摸屏工程,我在TouchWin里搭了四个画面:主画面、手动画面、参数画面、报警画面。
主画面用来显示当前状态——运行中/停止/报警,三个大指示灯分别绑到M50(运行中)、M51(停止)、M52(报警),再加启动和停止两个按钮,绑M0和M1。操作工日常基本只用这一个画面。安全考虑,启动按钮我设了“按钮按下持续0.5秒才有效”的属性,防止误触碰。
手动画面是我调试时最常用的一屏。每个轴设一个点动按钮加一个方向选择开关,点动按钮绑到M30(X轴正向点动)、M31(X轴负向点动)等。由于手动是调试阶段用的,没做权限限制,生产模式下隐藏这个画面。参数画面则是显示三个轴的目标位置值、当前位置值,方便对坐标。
报警画面把各种报警码做成文本列表,比如“Z轴下降超时”“吸盘真空不足”“Y轴正限位触发”,对应的触发条件用PLC的D寄存器写入报警码,触摸屏按报警码显示文本。这样出现故障时,操作工抬头看屏就知道什么原因,不用爬到电柜里看指示灯。
4. 实战调试、常见问题与避坑心得
4.1 空跑调试与参数整定步骤
设备装好后,我习惯按照“不通电源先查线,通完电源先查信号”的节奏来调试。送电之前,用万用表蜂鸣档从开关电源出线到每个传感器端子逐个量通断,确保没短路、没接错。送电后,先手动按每个传感器,看PLC输入指示灯是否亮,再逐个强制Y输出,看驱动器动作是否正确。
第二步是设步进驱动器的细分。DM542把细分拨到“2000脉冲/转”,也就是转一圈2000个脉冲,导程5mm,这样每1mm对应400个脉冲,精度在0.005mm以内。分辨率对搬运设备来说绰绰有余,同时步进电机在低细分下力矩更均匀,不容易丢步。
第三步才轮到空跑程序。在不装吸盘、不装工件的前提下,手动模式点动每个轴,确认运动方向正确。方向错了就在程序里改方向输出的逻辑,而不是把驱动器方向端子反过来接——因为后续加第二台设备时,波形正确性依赖程序的一致性。点动没问题后,运行回原点,再单步执行自动流程,每一步看一眼动作和传感器状态是否匹配。
4.2 常见问题速查表
调试和运行阶段,我遇到的高频问题基本就那么几个,下面列成表格,每条都是实战换来的经验,照着排查能省不少事。
| 故障现象 | 可能原因 | 排查思路与解决 |
|---|---|---|
| 某个轴不动作 | 脉冲信号未到驱动器 | 用万用表测Y0端子和驱动器PUL之间电压,PLC输出端口是否有电压跳变 |
| 轴只能往一个方向动 | 方向信号异常 | 重点查Y3/Y4/Y5到驱动器DIR的接线,是否共阳极接法正确 |
| 回原点找不到信号 | 近点信号和原点信号顺序问题 | 三菱ZRN指令要求先遇近点信号,再遇原点信号才停止,检查两传感器间距 |
| 步进电机高速振动丢步 | 驱动器细分低或速度过高 | 降速度到20kHz以内,或把细分翻倍,算好机械行程对应的脉冲数 |
| 触摸屏通讯不上 | 协议/波特率/站号不一致 | 检查触摸屏的PLC类型选择、波特率是否和FX3U的编程口一致(通常9600/8/E/1) |
| 运行时偶发误报警 | 24V电源干扰 | 驱动器供电和控制信号供电分开,或加开关电源滤波电容 |
| 自动流程停在某一步 | 该步完成信号没满足 | 进入强制监视,逐一查看该步条件传感器是否亮,超时定时器是否误触发 |
| Z轴下降后吸盘不吸 | 真空发生器气路/电磁阀问题 | 检查电磁阀得电输出Y6、气源压力、吸盘是否破损漏气 |
4.3 避坑经验:细节决定调试效率
最后分享几个容易踩但很少人写出来的细节。
第一个是原点回归指令的选择。三菱FX3U的ZRN指令,在执行时是“先以快速趋近,然后减速碰到近点信号后停止”。但我习惯不用ZRN自带的近点信号处理,而是自己写“先慢速找原点开关,再高速离开,再慢速找一次”这种双沿回零逻辑。原因在于,ZRN在新旧设备上机械惯性差异大,原厂指令可能出现“越过原点”的现象,自写逻辑虽然多几行梯形图,但可靠性提升非常明显。
第二个是程序注释。电气工程师在GX Works2里写注释,常见问题是注释写得太“个性”,什么“前面那个感应器”“料放好再走”,自己看得懂,别人接手就是天书。我这里所有注释都统一成“动作+条件+目的”的三段式,例如“X轴正方向点动——按下手动画面+X按钮时——用于调试对位”。这套注释写下来,程序通用性和可维护性直接上一个台阶。
第三个是触摸屏上的坐标参数最好做成掉电保持。FX3U断电后普通D寄存器会清零,下次开机还要重新输坐标,非常影响生产。解决办法是用三菱的锁存保持型寄存器——比如D512以后,或者在初始化时把参数从M到F写到保持区。另外,触摸屏工程里把坐标参数的地址直接指向保持寄存器,这样修完一次坐标,以后每次开机都还记得。
第四个经验是关于“手动—自动切换瞬间”。设备在手动状态下移动到了极限位置,这时候切到自动模式,自动流程会默认当前坐标为起点,一启动就可能撞限位。所以我在模式切换处加了“当前位置合法性校验”,如果当前坐标超出自动流程允许的范围,切换时触摸屏弹出提示,必须先把轴点动移回安全区,自动才能启动。这个细节救过我很多次,工人误操作再也不是“一启动就撞机”。
调完了整套程序,我心里最踏实的一点是:这套“三轴搬运”的逻辑框架,几乎是所有通用搬运设备的“模板”。你按这个思路做两轴、四轴、带夹爪或带视觉引导的版本,核心就是改轴数、改坐标、改动作顺序。程序、图纸、触摸屏工程的注释和结构,基本可以原样迁移。我后来做过的几个设备改造,都是在这个蓝本上花了很少的时间就完成了,实际验证下来“结构清晰”这四个字,才是程序真正值钱的地方。