三菱FX3U控制台达B2伺服三轴搬运项目PLC程序设计解析
2026/9/9 9:43:16 网站建设 项目流程

接到三菱FX3U配合台达B2伺服做三轴搬运的项目,客户点名要求程序结构清晰、注释齐全,触摸屏用信捷。这配置放在中小型自动化设备里非常典型——三个轴、两个机械位、一个气动夹爪,跑一个"取料→搬运→放料"的循环。项目本身不复杂,但要把程序写到"别人接手也看得懂、后面改机型也不窝火"的程度,还是有一套方法论可以聊的。这篇文章我就从硬件选型逻辑、程序框架、伺服参数、触摸屏联动到现场调试,一条线拆开讲,基本按照实际项目推进顺序来,适合正在做类似搬运机、装配机、上下料设备的电气工程师参考。

1. 三轴搬运项目的前期规划:硬件选型不是"选贵的"而是"选顺手的"

1.1 工艺需求先行:先搞清楚这台设备到底要干什么

这台设备做的是最简单的三轴搬运,典型动作流程如下:

  1. 设备上电,三个轴回原点(X轴水平左移、Y轴水平前移、Z轴垂直上升为原点位置)
  2. 自动循环启动后,X/Y轴联动走到取料位上方
  3. Z轴下降,气动夹爪闭合抓料
  4. Z轴上升,X/Y轴联动移动到放料位
  5. Z轴下降到放料高度,夹爪松开,工件放下
  6. Z轴上升,X/Y轴回到原点或直接进入下一循环

从工艺上看,这套流程对精度的要求不算苛刻,常见场景是5mm到20mm的定位误差范围,负载一般也在几公斤以内。真正考验程序的地方不在定位精度,而在动作的时序配合和安全互锁。X轴没回原位,Z轴能不能降?夹爪没闭合到位,X轴能不能跑?这些逻辑做扎实了,设备才能稳定跑夜班。

1.2 三菱FX3U在这里的定位:小型PLC里性价比最均衡的选择

选三菱FX3U,核心就一句话:市场保有量大,工程师熟,后续维护成本低。在3轴脉冲控制的场景下,FX3U的晶体管输出型本体自带3路100kHz高速脉冲输出,Y0、Y1、Y2刚好对应X、Y、Z三轴,不需要额外加定位模块,这是它在这个项目里能站住脚的最大理由。

对比一下几类方案:

方案优势劣势适用场景
FX3U + 台达B2伺服成本低、调试资料多、脉冲方式直观高速高精场景不够用中小型搬运、装配、点胶设备
FX5U + 台达B2伺服程序容量大、支持Ethernet、结构化编程价格偏高,换代学习成本中大型设备、多轴联动、数据追溯
独立运动控制器 + 伺服多轴插补、轨迹规划强开发周期长、编程门槛高复杂轨迹、高速高精设备
总线伺服方案(EtherCAT等)接线少、诊断强成本高、对经验要求高几十轴的大型设备

对三轴搬运这种"点位运动+顺序控制"的设备,用PLC发脉冲控制伺服完全富裕。如果你选总线方案,反而把简单问题搞复杂了——每个伺服要配总线通信卡,PLC要加总线主站模块,触摸屏联动也绕一圈,调试的时候一旦通信掉站,现场排查时间直线上升。所以我一直跟同行讲:脉冲方案不是落后,是合适。

1.3 台达B2伺服和信捷触摸屏为什么匹配这套系统

台达B2伺服在国产小型伺服里的地位,和FX3U在PLC里的地位很像——保有量大、资料全、技术支持方便。B2系列电机标配17-bit编码器,分辨率160000脉冲/转,做搬运定位绰绰有余。关键是它的驱动器面板操作很直观,电子齿轮比设起来方便,调试员好上手。

信捷触摸屏则是"实用主义"的代表,组态软件免费,控件丰富,支持三菱FX系列PLC的通信协议,连接设置简单。触摸屏这边我选的是TG系列,10寸屏,带RS485和以太网口。实际使用中,我倾向于用RS485连接FX3U-485BD扩展板,这种方式比直接用编程口(圆头8针RS422)更方便布线,而且485的通信距离和抗干扰在常规车间环境下足够。

整套系统硬件配置单大致如下:

类别型号数量说明
PLC三菱FX3U-48MT/ES1晶体管输出,24输入/24输出
扩展通信板FX3U-485BD1连接信捷触摸屏
伺服驱动器台达ASD-B2-0421-B3400W,配ECMA-C20401电机
触摸屏信捷TG765S-XT17寸,带以太网口(实际只用RS485)
输入元件接近开关/行程开关若干原点、正负限位、到位检测

2. 程序结构怎么搭:让PLC程序"看得懂"不是靠运气,是靠框架

2.1 地址规划先行:一段寄存器不能又当坐标又当计时器

很多工程师写程序,地址是随手用的,写到哪用到哪,最后整个程序像一锅粥。结构清晰的程序,一定是从地址规划开始的。我这套程序里用的地址分配规则如下:

类别地址范围用途
输入X0~X17限位、原点、急停、手自动切换等开关信号
输出Y0~Y17三轴脉冲方向、夹爪电磁阀、三色灯、报警器
中间继电器M100~M499运行状态、流程状态、报警标志
状态继电器M500~M999自动运行各步骤的状态位
数据寄存器D100~D199X轴坐标、速度、延时等参数
数据寄存器D200~D299Y轴参数
数据寄存器D300~D399Z轴参数
数据寄存器D500~D599运行计数、节拍统计等

这套规则的价值在于:看地址就知道这个数据属于哪个轴、属于什么功能。调试的时候触摸屏上要改个参数,你知道去D100段找X轴坐标;程序里看到M300就知道是报警标志。规范的地址规划是程序可维护性的地基,如果地基打歪了,楼层再漂亮也白搭。

2.2 主程序三段式:初始化、手动、自动,三个世界互相隔离

我写FX3U程序习惯用三段式结构:

  1. 初始化段:上电第一扫描周期执行,复位所有状态位、读取触摸屏下发的参数、清零位置计数器。
  2. 手动段:处理点动、回原点、夹爪单动等操作,供调试和维修使用。
  3. 自动段:核心的搬运流程状态机,只能在"自动模式+启动按钮"条件下运行。

三段的执行逻辑用M变量做软互锁。比如自动模式下,手动点动按钮全部失效;手动模式下,启动按钮无效。这样写的好处是调试时不会出现"明明在自动运行,误触了一个手动按钮,轴突然动了"的惊魂时刻。

这里分享一个我踩过的坑:早期我做搬运程序,不区分手动自动段,所有点动逻辑直接输出到Y,结果现场调试时师傅在手动模式下调完Z轴位置,忘了切回自动,直接按了循环启动,Z轴以点动速度往下走,还好当时夹爪区域没有工件,否则就是一次安全事故。从那以后,我所有程序都加上模式互锁,手动段的输出前面必须串一个M100(手动模式标志),自动段前面必须串M101(自动模式标志)和M102(启动脉冲)。

2.3 自动流程状态机:用"置位+转移"代替"长输出+继电器堆"

搬运程序最忌讳的做法是把整个循环写成一个超长梯形图,每一步都靠自锁互锁往上堆,最后变成一团乱麻。我推荐用状态机思路,每个工序分配一个状态位M,用SET/RST指令控制状态切换。

拿这台三轴搬运设备举例,自动流程可以拆成11个状态:

状态位工序转移条件
M500待机状态按下启动按钮且无报警
M501X/Y轴移动到取料位三轴均到达取料坐标
M502Z轴下降下降到取料高度,由伺服到位信号或接近开关确认
M503夹爪闭合取料夹爪夹紧到位反馈
M504Z轴上升上升到位
M505X/Y轴移动到放料位三轴均到达放料坐标
M506Z轴下降下降到放料高度
M507夹爪松开放料夹爪松开到位反馈
M508Z轴上升上升到位
M509X/Y轴返回原点或取料位回位完成
M510计数+1,返回待机单循环完成

状态切换在梯形图里写很直观:

// 状态M500(待机)中: LD M500 // 待机状态 AND M102 // 启动上升沿 ANI M300 // 无报警 SET M501 // 进入X/Y轴移动取料位状态 RST M500 // 状态M501(X/Y轴移动到取料位)中: LD M501 AND X10 // X轴到位信号 AND X11 // Y轴到位信号 SET M502 // 进入Z轴下降状态 RST M501

这种写法的好处一眼就能看出来:看程序的时候,你只需要关注"当前状态"和"转移条件",不用在一堆自锁触点里翻找逻辑。新人接手,半小时就能理清整台设备的动作流程。

2.4 注释怎么写到"让接手的同事感动"的程度

客户特别强调"注释齐全",这个要求不过分,但怎么注释是门学问。我的注释习惯分三层:

  1. 程序块头注释:每个子程序、每个功能块开头注释清楚"这是什么、干什么用的、谁负责维护",方便快速定位。
  2. 段注释:每一段逻辑前面注明功能,相当于给这一小段逻辑起个名字。
  3. 行注释:关键输出、关键转移条件后面加注释,说明这个触点是干嘛的、这个输出控制什么。

举几个实际写法:

//=========== X轴控制子程序 =========== // 功能:X轴点动、回原点、定位控制 // 维护:张工,内线8012 //==================================== // X轴正方向点动(仅在手动模式有效) LD M100 // 手动模式 AND M200 // 点动按钮(触摸屏软按钮) OR X14 // 也可用面板物理按钮 ANI X0 // 正限位未触发 ANI M301 // X轴伺服无报警 SET Y10 // 方向信号正方向 OUT Y0 // 脉冲输出

这种注释写下来,程序的可读性和技术文档差不多。调试时你不用再翻图纸回忆每个点是干嘛用的,程序本身就是图纸。

3. 台达B2伺服的参数设置和脉冲定位:原理通了,指令只是工具

3.1 电子齿轮比的计算:一个例子讲透

台达B2伺服的分辨率是160000脉冲/转(17-bit编码器),意思就是电机转一圈,编码器反馈160000个脉冲。但PLC发给伺服驱动器的脉冲数,和电机实际转的圈数之间,靠电子齿轮比来换算。

设电子齿轮比为P1-44/P1-45(分子/分母),三者关系是:

电机实际转动圈数 = PLC发出的脉冲数 × (P1-44 / P1-45) / 160000

那实际应用中反过来算。假设这台设备的X轴丝杆导程为10mm,要求定位精度0.01mm(即PLC每发一个脉冲,工作台移动0.01mm):

  • 工作台移动10mm,电机转1圈,需要1000个脉冲(10 / 0.01 = 1000)
  • 电子齿轮比 = 160000 / 1000 = 160
  • 设置:P1-44 = 160,P1-45 = 1

再验证一下:PLC发1000个脉冲,经过160/1的电子齿轮比后,驱动器等效收到160000脉冲,对应电机转一圈,工作台移动10mm,精度正好0.01mm/脉冲。

如果机械传动比不是1:1,比如电机通过减速机带丝杆,减速比3:1,那电子齿轮比要乘上减速比。例如减速比3:1,丝杆导程10mm,要求0.01mm精度:

  • 电机转3圈,工作台才移动10mm
  • 电机需要3 × 160000 = 480000个脉冲对应10mm
  • 每0.01mm需要480000/1000 = 480脉冲
  • 电子齿轮比 = 160000/480 = 1000/3,取整后P1-44 = 1000,P1-45 = 3

3.2 伺服驱动器关键参数:别让伺服"带病上岗"

台达B2伺服上电后,有几个参数必须核对,不然轻则跑不准,重则报警甚至撞限位。

参数设定值说明
P1-010位置控制模式
P1-000脉冲输入形式:脉冲+方向
P1-44160电子齿轮比分子
P1-451电子齿轮比分母
P2-101ALM报警输出常闭
P1-460脉冲指令平滑时间,0表示不平滑
P2-0035位置控制增益(按机械刚性调整)

特别说下P1-46平滑时间,如果现场出现机械振动,可以在P1-46设一个小值(比如100ms),让脉冲指令变得"滑"一些。但这会影响响应速度,搬运设备上我一般不设,优先通过降低增益来解决振动。

伺服驱动器面板上还有一个重要操作:保存参数。台达B2修改参数后,必须按MODE键到"保存"界面,按ENTER保存,否则断电后参数恢复。这个细节看着小,但现场丢过的参数比想象中多得多。

3.3 FX3U定位指令实战:DZRN回原点、DDRVI相对定位、DDRVA绝对定位

FX3U三路脉冲输出的定位指令中,我实际项目里用到三组:DZRN(原点回归)、DDRVI(相对位置定位)、DDRVA(绝对位置定位)。

DZRN原点回归是最重要的,因为搬运程序后面的绝对定位全都依赖原点坐标。指令格式大致是:

DZRN D0 D1 X3 Y0
  • D0:爬行速度(接近原点后的低速)
  • D1:原点回归方向(0为负方向,1为正方向)
  • X3:近点信号(DOG)
  • Y0:脉冲输出口

DZRN执行过程是:先以设定的速度朝指定方向找近点信号,碰到DOG后减速到爬行速度,然后脱离DOG或者找到Z相脉冲的瞬间停止。实际接线时,DOG信号一定要接在PLC输入端,不能直接接伺服驱动器的原点输入,否则PLC不知道伺服当前回原点的状态。

DDRVI相对定位用起来很简单,适合那种不确定当前位置、只需要相对移动一段距离的场景。比如手动调试时,我常用DDRVI让某个轴"再走5mm试试"。

DDRVI D10 D20 Y0 // 按D10设定的脉冲数(有符号),频率D20,从Y0输出

DDRVA绝对定位是搬运程序的主力,因为从取料位到放料位的坐标都是基于原点算出来的绝对位置。

DDRVA D100 D110 Y0 // 移动到D100中设定的绝对位置,速度D110

用绝对定位的好处是程序写起来直观:D100是取料位X坐标,D200是放料位X坐标,程序里要改位置,直接改触摸屏参数就行,不用关心现在轴在哪个状态。

关于脉冲频率和移动速度的换算,再做一个简单推导:X轴丝杆导程10mm,电子齿轮比160:1,PLC每发1个脉冲移动0.01mm。如果要求移动速度120mm/s,那么PLC输出频率为120 / 0.01 = 12000Hz,即12kHz。FX3U的Y0/Y1/Y2输出能力是100kHz,12kHz只有1/8的余量,跑得很稳。

4. 信捷触摸屏跟PLC怎么配合:界面设计决定设备好不好用

4.1 通信连接:FX3U-485BD和信捷屏的配置

我用的连接方式是FX3U-485BD扩展板 + 信捷触摸屏RS485口。连接参数两边都要设置一致:

项目参数
协议三菱FX系列编程口协议
波特率9600
数据位8
停止位1
校验位
PLC站号0(默认)

485通信的线材建议使用屏蔽双绞线,A接A、B接B,屏蔽层单端接地。现场布线上,通信线跟伺服动力线必须分开走线槽,我见过因为动力线和通信线捆在一起导致触摸屏频繁掉线的案例,查了一上午最后发现是干扰,把线分开后问题消失。

4.2 触摸屏画面框架:四个画面搞定大部分操作需求

这台设备我做了四个触摸屏画面,功能划分如下:

  1. 主画面:设备状态、运行模式显示、自动启动/停止按钮、节拍计数显示。这是操作工每天面对的画面,信息要精简,一键启动。
  2. 手动画面:三轴正反点动按钮、回原点按钮、夹爪开合按钮、当前坐标显示。这是调试人员用的画面,按钮要紧凑,坐标显示要实时。
  3. 参数画面:取料位坐标(3轴)、放料位坐标(3轴)、各轴速度、各位置延时、循环次数等。这个画面配上公司密码,防止操作工误改参数导致撞机。
  4. 报警画面:当前报警、报警历史、报警复位按钮。报警内容要具体到"X轴伺服报警""Z轴下降超时"这种级别,不能只显示一个笼统的"故障"。

触摸屏地址映射非常直接:屏上设置一个数值显示控件,地址填D100,数据格式设成32位,读写权限按需设置,它读写的是PLC的D100寄存器。位按钮同理,地址M100对应PLC的M100。

4.3 参数下发与掉电保持:一个容易忽略的细节

触摸屏上修改参数后,数据是存在PLC的D寄存器里的。但FX3U的D寄存器默认掉电不保持,也就是说断电重启后,D100里的取料位坐标会清零。解决方式有两种:

  1. 在PLC参数里设置掉电保持区域:将D100~D399设为锁存区域,DX掉电后数据不丢失(需要电池,FX3U本体自带电池座)。
  2. 在PLC程序初始化段加"数据有效性检查":上电时判断D100的值是否在一个合理范围内,比如X轴坐标规定在0~500mm内,如果超出范围就使用默认值覆盖。

我一般两种都用。一方面把坐标参数区设成掉电保持,另一方面在初始化段做范围检查,防止触摸屏误发了一个超大值导致PLC带着轴往错误方向跑。

4.4 界面上的互锁怎么同步到PLC

触摸屏上设计的"启动""回原点"这些按钮,最终都是写到PLC的M或D寄存器,由PLC逻辑来做最终裁决。比如触摸屏上的"自动启动"按钮写到M102,但PLC梯形图里M102的输出条件里必须串上M300(各轴伺服正常)、M301(无急停)、M302(气压正常)这些硬条件。

这是PLC编程的一条铁律:触摸屏只是操作界面,真正的安全逻辑必须100%放在PLC里实现。不要依赖触摸屏的宏或脚本来做安全互锁,因为触摸屏死机、通信断开、屏幕误触都不会影响PLC内部逻辑的安全性。

5. 现场调试实录:三个真遇到的坑和排查思路

5.1 坑一:回原点方向跑反,差点撞了机械限位

第一次调试Y轴时,按下回原点按钮,电机没有朝设定方向找原点,而是直接往反方向冲。第一时间怀疑PLC程序,检查DZRN指令参数、方向信号输出,程序都没问题。再看伺服参数,发现P1-00(脉冲输入形式)被设成了1,不是0。

这里科普一下:台达B2的P1-00参数控制脉冲输入差分形式。设成0是"脉冲+方向",设成1含义不同,导致方向信号的有效电平逻辑反了。程序让电机往负方向走,但伺服把它解释成正方向,结果就是反向全速跑。好在限位开关和PLC程序里的正负限位判断及时切断了脉冲输出,不然机械硬限位就是最后一道防线了。

排查思路建议:遇到轴往反方向跑,不要第一反应改程序,先看伺服参数P1-00,再查方向信号线,最后才怀疑程序。我在现场的习惯是"先电后程再机械",因为改参数最快,查线次之,改程序最费劲。

5.2 坑二:自动流程卡在"Z轴下降"这一步,怎么按都不走

设备试跑时,自动流程走到M502状态(Z轴下降)就卡住了。触摸屏上显示Z轴当前位置确实到了取料位坐标,但状态就是不往下跳。

后来排查发现,转移条件里用了X10(到位信号),而X10接的是伺服驱动器的DO1输出。但是台达B2伺服默认DO1输出的是"伺服准备完成"信号,不是"定位完成"信号。Z轴到了位置,伺服驱动器并不输出"到位"信号给PLC,导致转移条件永远无法满足。

解决方法是把伺服驱动器的参数P2-10~P2-16(数字输出定义)改成"定位完成DO"输出,或者在PLC程序里改用定位指令的完成标志,而不依赖伺服驱动器的DO信号。

稳妥起见,我在程序里把状态转移条件改成"定位指令执行完,且当前位置偏差在允许范围",这样就算伺服DO信号接错了也不影响流程。这个改动省了现场很多事。

5.3 坑三:触摸屏偶尔连不上,通信时断时续

设备运行两天后,操作工反馈触摸屏偶尔显示"通信失败"。到现场看,485通信指示灯忽闪忽闪的。我排查了三个点:

  1. 通信线接线:端子确认拧紧了,没有松动。
  2. 干扰源:发现触摸屏的485线跟伺服驱动器的主回路电源线走在了同一个线槽里,而且没有用屏蔽双绞线。
  3. 接地:PLC和伺服驱动器没有很好的单点接地。

处理方式:换了一段屏蔽双绞线,重新规划走线路径,让485线远离动力线,所有设备外壳统一接车间接地排。处理完以后,连续跑了一周没有再犯。

5.4 从调试中总结出来的三条现场经验

第一,搬运设备的程序,一定要写"单步运行"功能。触摸屏上加一个"单步模式"开关,自动流程每走一步停下来,按一次启动走一步。这个功能在调试、试产、故障排查时极其好用,能快速定位是哪一步卡住,不用返工跑完整循环。

第二,PLC程序里每个轴要加"超时报警"。比如Z轴从下降到上升,正常需要3秒,如果超过5秒还没走到位,立即报警停止。搬运设备最怕"轴卡住但程序不知道",等操作工发现,工件可能已经顶坏了。超时报警是成本最低的机械保护手段。

第三,伺服报警一定要做"联动停机"。三个伺服的ALM信号全部串到PLC一个输入点,任何一个伺服报警,PLC立即切断三轴脉冲输出,同时报警灯亮起,触摸屏报警画面弹出具体故障信息。不要等伺服报了警,PLC还在发脉冲,那是最危险的时刻。

6. 收尾:程序结构的维护,靠的是"每次多花十分钟"

项目交付时,客户对我的程序评价是"结构清晰,注释齐全,一看就懂"。说实话,做到这个并不难,核心就是每次写程序时多花十分钟做地址规划、做注释、做状态机拆分,而不是等程序写完再去补。等程序跑起来后再补注释,一是懒得补,二是当时的逻辑细节已经忘了一半。

还有一个小习惯:每次项目调试完,我会把触摸屏上的最终参数导出一份,附在程序压缩包里一起交付给客户,同时在程序注释里标注"参数默认值参考触摸屏导出文件"。这样客户后续换PLC、换屏,或者设备搬迁重新调试,都有据可查。

三轴搬运项目本质上是"顺序控制 + 点位定位"的经典组合,把硬件选型匹配好、程序框架搭清楚、伺服参数算明白、触摸屏交互做顺手,再加上充足的安全逻辑,一台稳定好用的搬运设备就出来了。希望这篇分享对正在做类似项目的同行有帮助。

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

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

立即咨询