news 2026/10/3 8:02:41

基于三菱FX3U与昆仑通态的三轴示教器低成本实施方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于三菱FX3U与昆仑通态的三轴示教器低成本实施方案

一提“机器人示教器”,大多数人脑子里马上浮现的是发那科、安川那种带摇杆和数字键盘的专用手持盒,浑身散发着“贵”的气息。但如果你只是做一台三轴点胶机、锁螺丝机,或者小型搬运工作台,预算有限又要求快速交付,完全可以自己拼一套低成本示教器——核心就两块:三菱FX3U PLC负责脉冲输出和运动逻辑,昆仑通态触摸屏负责示教界面、点位管理和自动调度。这个组合在国内中小型自动化项目里出现频率极高,我前后做过几台三轴设备,都是这套路子。

本文就把这套“FX3U+昆仑通态”三轴联动的示教器方案完整拆一遍,从机械参数计算、PLC定位程序设计,到昆仑通态脚本怎么组织点位数据、怎么实现示教和自动运行,最后附上我实际调试中踩过的坑。不管你是刚接触这个组合,还是已经在用只是想找点关键细节,都能从里面拿走点能直接用的东西。

1. 先想清楚:这套示教器方案到底在做什么

1.1 什么场景需要“PLC+触摸屏”示教器

先别急着写代码、画画面,要把需求搞清楚。我遇到的典型场景是这类设备:

  • 三轴点胶机:人工拿着一根针管移动,记录几个点,然后让设备自己按点走轨迹
  • 三轴锁螺丝机:螺丝孔位分布在几个固定位置,需要快速示教孔位坐标
  • 小型搬运台:把物料从A点搬到B点,中间可能还有中转位

这类设备的共同点是:动作模式就是“走到某个坐标,执行一个动作,再去下一个坐标”,对轨迹曲线没有太高要求,不要求走圆弧,也不要求多轴实时插补,只需要“点位准、过程可控、改点方便”。

这时候整套设备的核心就变成两件事:一是能让操作工把机械臂/工作台移动到目标位置并记录下来,二是能把记录下来的位置批量下发给PLC去自动执行。专用机器人示教器当然能做,但成本可能比整台设备还高,而PLC加触摸屏的组合既便宜又贴近现有电气体系,维护也简单。

1.2 为什么是三菱FX3U加昆仑通态,而不是专用控制系统

我在实际项目里选这个组合,不是因为它有多炫,而是因为三个现实理由:

成本可控。一台二手/小功率的三菱FX3U-32MT加一块10寸昆仑通态屏,整套控制系统的成本大概是专用机器人控制柜的零头。对于产线上十几台同类设备,这一项就能省出一大笔预算。

维护门槛低。现场电工普遍会三菱PLC,昆仑通态屏也是国内工控人最熟悉的组态软件之一。设备出问题,甲方自己的工程师能上手查程序,不用每次等原厂售后。这对设备交付后的口碑非常重要。

集成方便。FX3U有内置三路独立高速脉冲输出(Y0、Y1、Y2),正好对应三轴,不需要额外买定位模块。昆仑通态屏自带三菱FX系列编程口协议,一根通讯线就能搭起来,不用搞复杂的网关转换。

当然也要说它的边界:FX3U本身没有插补功能,做不了真正的空间直线/圆弧插补。所以方案里说的“三轴联动”,更多是“三轴同时动作、同步到达目标点”,而不是CNC那种严格意义上的联动。后面会专门讲这个。

1.3 方案里的“3轴联动”能做到什么程度

这一点必须提前给甲方和合作方讲清楚,免得后期扯皮。FX3U的Y0、Y1、Y2三路脉冲输出可以同时工作,但三条轴各自的运动是独立控制的,PLC没有内置直线插补算法。所以“三轴联动”在这个方案里的实际含义是:

  • 三个轴可以同时启动,一起运动
  • 通过在触摸屏/PLC里按位移比例分配各轴速度,让它们大约同时到达目标点
  • 最终定位精度依然由每轴独立闭环保证

如果设备需要走斜线、圆弧、螺旋轨迹,这套方案做不了,得换FX5U或者加专用运动控制模块。但如果只是“点到点同步移动”,用这套组合完全够用,而且很稳。

2. 系统硬件架构与关键参数计算

2.1 硬件清单与各自职责

以我做过的三轴龙门式工作台为例,硬件配置大概这样:

组件选型示例职责
PLC三菱FX3U-32MT/ES脉冲输出、逻辑控制、限位处理
触摸屏昆仑通态TPC1062Ti(10寸)示教界面、点位管理、自动调度
伺服驱动三菱MR-JE系列或国产步进伺服位置闭环,接收脉冲+方向
机械本体X/Y/Z三轴模组丝杆导轨传动
传感器原点开关、正/负限位回零、软硬限位保护

这里有个容易忽略的点:PLC必须选晶体管输出(MT)型号,继电器输出(MR)发不了高速脉冲。FX3U-32MT最多支持Y0、Y1、Y2三路100kHz脉冲,刚好适配三轴。

驱动器选三菱MR-JE还是国产步进伺服,主要看预算和精度要求。我自己的习惯是:定位精度要求±0.05mm以上、带负载变化较大的场合用伺服;只是轻负载点胶、锁螺丝,国产步进伺服也能胜任,成本能再降一截。无论哪种,驱动器的控制模式都要设成位置模式(脉冲+方向),这是和FX3U对接的前提。

2.2 脉冲当量与电子齿轮比的计算方法

这是整套方案的第一个关键计算,很多设备定位不准、速度显示不对,源头就是脉冲当量没算明白。

以X轴为例,假设机械部分是这样的:

  • 丝杆导程:10mm(电机转一圈,工作台走10mm)
  • 电机与丝杆之间减速比:1:1(直连)
  • 伺服编码器分辨率:131072脉冲/转(MR-JE系列常见值)

我希望控制精度是:每1个脉冲,工作台走0.01mm。那么电机转一圈需要的脉冲数就是:

一圈移动量 / 每脉冲移动量 = 10mm / 0.01mm = 1000脉冲/转

但电机编码器反馈是131072脉冲/转,所以需要设置电子齿轮比:

电子齿轮比CMX/CDV = 131072 / 1000 = 131.072

实际设置时不能带小数,要取整数比。131.072可以写成分数:

131.072 = 16384 / 125

也就是说,驱动器参数里设CMX=16384、CDV=125,位置指令端就等效为“1个外部脉冲对应0.01mm移动量”。

设好这个比例之后,触摸屏上显示坐标就非常直观:PLC里的脉冲数除以100,就是毫米数。比如D寄存器里是12345,显示就是123.45mm。Z轴行程短,如果希望分辨率更高,可以把精度设为0.001mm/脉冲,电子齿轮比例相应调整到131072/10000,反正方法一样。

2.3 最大速度和加减速的预判

脉冲当量定了,速度上限也基本定了。FX3U的高速脉冲输出Y0/Y1/Y2最高支持100kHz(具体以手册为准),换算成移动速度:

速度mm/s = 脉冲频率Hz × 每脉冲移动量mm = 100000 × 0.01 = 1000mm/s

也就是X轴最高能到1米/秒,对大多数小型三轴设备来说足够了。实际工程里我不会顶着上限用,一般把运行速度设在300~500mm/s,留出加速余量,避免丢脉冲。

加减速的处理上,FX3U定位指令本身有加减速时间设定。如果设备对启停抖动比较敏感,建议在驱动器侧也做一定滤波和加减速,两边配合,不要只靠一边硬抗。

2.4 电气接线与输入输出规划

硬件接线这块,我按最小系统说:

  • PLC输出端Y0/Y1/Y2接三个轴的脉冲端子(注意脉冲逻辑,一般是差分输入,如果驱动器是集电极开路输入,Y0/Y1/Y2输出规格要匹配)
  • 方向信号分别接:X轴方向接Y10、Y轴方向接Y11、Z轴方向接Y12
  • 伺服驱动器的使能信号(SON)接PLC输出,由PLC统一控制,急停时能切断使能
  • 原点开关、正/负限位接PLC输入端,X轴原点X0、正限位X1、负限位X2,Y轴原点X3、正限位X4、负限位X5,Z轴同理
  • PLC与触摸屏之间用RS-422或RS-485通讯(FX3U编程口能直接对接昆仑通态的三菱FX系列驱动)

我在接线时有一个习惯:每个轴的脉冲线、方向线、原点、限位必须做独立标签,特别是调试初期经常要查线,没标签会浪费大量时间。

3. 三菱FX3U定位程序的设计与实现

3.1 点位数据在PLC里的寄存器布局

程序动手前,先把寄存器分配表写清楚。我做这类型设备时习惯这样规划:

PLC寄存器含义数据类型
D0 / D1X轴目标位置32位(D0低位、D1高位)
D2 / D3Y轴目标位置32位
D4 / D5Z轴目标位置32位
D10 / D11X轴运行速度(Hz)32位
D12 / D13Y轴运行速度(Hz)32位
D14 / D15Z轴运行速度(Hz)32位
D50当前运行点号16位
M10自动启动标志位
M20X轴正转JOG位
M21X轴反转JOG位
M30全部回原点启动位
M501单点完成反馈位

有两点要强调:一是三菱FX3U的32位寄存器是低位在前,D0和D1组成X轴位置,触摸屏变量关联时要注意数据格式,别搞反高低字;二是FX3U默认只有部分D区有掉电保持功能,点位表如果放在D区,必须把对应区域设成保持范围,否则断电就丢。

点位表存PLC的D区还是存触摸屏本地,我后面在触摸屏章节再系统对比,这里先知道PLC侧需要一个“当前目标位置”的缓冲区和“当前运行状态”的标志区就可以了。

3.2 手动JOG点动逻辑实现

示教模式的核心就是手动能把轴动起来。我的实现方式是触摸屏按钮按下时置位M20,松开时复位M20,PLC侧检测这个标志来控制脉冲输出。

PLC里的JOG逻辑大致是这样:

[ M20 ON ] → Y10 = OFF(正向),PLSY 输出脉冲到Y0,频率取D20 [ M21 ON ] → Y10 = ON (反向),PLSY 输出脉冲到Y0,频率取D20

这里用的是PLSY连续输出指令,脉冲数设为K0表示连续发。当M20断开,PLSY执行条件消失,输出自动停止。方向信号Y10的ON/OFF对应正转还是反转,取决于驱动器设置,实际调试时先用最低速度试一下方向,不对就取反。

JOG频率D20我在触摸屏上做了分档按钮:快速500Hz、中速200Hz、微调50Hz。示教定位时用微调挡慢慢挪,空跑对位用快速挡,这个分档很实用。

JOG逻辑里必须加软限位保护:正限位X1接通时强制断开M20,负限位X2接通时强制断开M21,同时触发报警画面。硬限位不能省,但软限位能减少硬限位被撞坏的次数。

3.3 回原点(ZRN)与坐标系建立

自动运行前必须先回原点,否则PLC里的绝对坐标是乱的。三轴各自独立回零,我采用串行方式:先回X轴,完成后再回Y轴,最后回Z轴,避免三轴同时在原点附近扎堆,程序逻辑也清晰。

FX3U回原点用ZRN指令,格式大致是:

ZRN K50000 K1000 X3 Y000

参数含义是:回原点高速50000Hz,爬行速度1000Hz,DOG输入接X3,脉冲输出Y0。机械结构先撞到原点开关,开关接通后减速,再到脱开位置停止,PLC把当前坐标清零。

实际调试时,回原点最容易出两个问题:一是爬行速度太快导致过冲,原点开关信号宽度不够,经常冲过头;二是原点开关装得太靠近限位,回零稍微过冲就撞限位。建议爬行速度先设500Hz,确认稳定后再往上提。

3.4 自动模式下的三轴联动定位逻辑

自动模式是我在三菱程序中花心思最多的地方。FX3U要同时执行三条定位指令,逻辑上要注意“不能在一个梯形图行里并联三个定位线圈”,得让三个轴各自用独立的驱动条件启动。

我的程序流程是这样设计的:

M10(自动启动)被触摸屏置位 → 将D0/X轴目标、D2/Y轴目标、D4/Z轴目标写入定位缓冲 → 三个轴分别启动DRVA绝对定位 X轴:DRVA D0 Y000 Y010 Y轴:DRVA D2 Y001 Y011 Z轴:DRVA D4 Y002 Y012 → 等待三轴都到位 → 置位M501(本点完成) → 触摸屏检测到M501后,下发下一点目标

为什么用DRVA绝对定位而不是DRVI相对定位?因为点位表里存的是绝对坐标,回零后坐标原点固定,DRVA每次以同一个坐标系工作,不会累积误差,也方便人工核对点位数值。

关于“三轴同时启动”有个细节:三条DRVA在同一个扫描周期里被依次扫描到时,FX3U内部的三路脉冲通道会同时开始发脉冲。我最早担心扫描顺序会导致三个轴启动时间有微小偏差,实测下来这个时间差在毫秒级,对点胶、搬运这类应用几乎没影响。

三轴是否全部到位的判断,我不用M8029这个公共完成标志,因为三路通道共用M8029,先完成的轴会先触发它,容易造成误判。我的做法是监视FX3U定位用的当前值寄存器,比较目标值和当前值是否相等:

[ D8140 = D0 ] AND [ D8142 = D2 ] AND [ D8144 = D4 ] → 三个轴全部到位,SET M501

D8140/D8142/D8144分别是Y0、Y1、Y2通道的当前脉冲值寄存器(32位,低位),用比较指令判断完全到位再进入下一步,这样稳定性好很多。

3.5 多轴联动时的速度分配策略

既然叫联动,就不能只傻傻地各轴各走各的,最好让三轴同时到终点,减少不必要的单轴等待。做法是按下发点到目标点的位移比例分配各轴速度。

举个例子:

  • X轴要移动100mm,Y轴要移动50mm,Z轴要移动20mm
  • 设定基准速度F_base = 500mm/s给移动量最大的轴(X轴)
  • Y轴速度 = 500 × 50/100 = 250mm/s
  • Z轴速度 = 500 × 20/100 = 100mm/s

这样三轴启动时间一致,又能基本同时到达终点。这个比例计算我在PLC里用乘除法指令做,把D0-D4的目标值和D8140-D8144的当前值取差,得到各轴位移量,再找出最大位移,然后按比例算出各轴频率。

计算频率时要注意单位统一。PLC里位置是脉冲数,速度是Hz(脉冲/秒),先算各轴位移脉冲量,再按最大轴为基准换算。公式:

X轴频率 = 基准频率 × X轴位移 / 最大轴位移

如果Z轴位移很小,算出来频率可能低于驱动器最低进给速度,这时要在下限位置做个保护,不要让频率过低。

4. 昆仑通态触摸屏的示教界面与脚本实现

4.1 画面结构与功能分区

触摸屏是整个示教器的人机入口,画面组织直接决定操作工上手难度。我做这套方案时把画面分成四个主窗口:

画面名称主要功能
主操作画面显示三轴当前位置、运行状态、回零/启动/停止按钮
手动示教画面JOG点动按钮、速度分档、示教点位列表
点位编辑画面点位坐标修改、插入、删除、保存
参数设置画面运行速度百分比、回原速度、急停逻辑

主操作画面放的东西最少,只有当前坐标读数、当前点号、启动/暂停/急停三个大按钮。真正复杂的功能在手动示教画面,那里有点位表格控件、JOG十字按钮组、速度倍率选择。

点位表格我用昆仑通态的数据表格控件,列依次是:点号、X坐标(mm)、Y坐标(mm)、Z坐标(mm)、动作码。动作码用来扩展,比如0代表只走位,1代表到位后输出一个IO信号,2代表到位后延时200ms再继续。这个字段在做成点胶机、锁螺丝机时非常有用。

4.2 通讯设置与变量规划

昆仑通态与FX3U的通讯是这套方案能不能跑顺的前提。触摸屏上选择“通用串口父设备”下的“三菱FX系列编程口”驱动,通讯参数按FX3U默认设置:9600波特率、8位数据、偶校验、1位停止。PLC侧的通讯格式用D8120设置成一致,否则通讯灯闪个不停就是连不上。

变量规划上,昆仑通态的变量不是直接读PLC寄存器地址,而是通过“通道”关联。我在数据词典里建立一批变量,比如:

触摸屏变量关联PLC地址数据类型
XCurrentD814032位无符号
YCurrentD814232位无符号
ZCurrentD814432位无符号
TargetXD032位无符号
AutoStartM10开关型
HomeStartM30开关型
PointDoneM501开关型

注意PLC地址和触摸屏地址的映射关系,昆仑通态的D地址是直接填寄存器号,M地址也是直接填软元件号,不用偏移量,这点比某些组态软件省事。I/O类型选“读写”,32位数据要选对数据格式,否则读出来的数值会错位。

4.3 脚本的触发机制和基础写法

昆仑通态(MCGS嵌入版)的脚本语言是类Basic,触发方式主要有三种:

  • 按钮/开关的事件脚本:按下、松开时执行
  • 窗口的循环脚本:窗口打开期间周期性执行
  • 运行策略中的循环策略:全工程级周期执行,不依赖窗口

我在这套方案里是这样分工的:手动示教按钮用按钮事件脚本,点位保存/删除也写在按钮事件里;自动调度的核心逻辑放在运行策略的循环脚本里,周期100ms,这样不管操作工切到哪个画面,后台调度都在跑。

MCGS脚本里读写PLC变量有个特点:如果在数据词典里建了变量并关联通道,脚本里直接用变量名访问就行,不需要调用API函数。比如XCurrent这个变量每通讯周期都会自动刷新,脚本里写CurX = XCurrent就能拿到当前值。

我写脚本时习惯先画逻辑再写代码,避免把变量搞得满天飞。脚本中禁止写死点位号,全部用变量下标去访问数组,这样点位扩展时不用改脚本。

4.4 手动示教与点位保存的脚本逻辑

示教一个点的完整动作是:操作工用手动JOG把设备移动到目标位置,然后按下“保存点位”按钮,触摸屏把当前坐标记录下来,PLC侧坐标系自动进入下一个待示教点。

“保存点位”按钮的事件脚本,我简化成下面这种结构:

' 读取三轴当前实际位置 CurX = XCurrent CurY = YCurrent CurZ = ZCurrent ' 写入点位数组,PointIndex是当前正在示教的点号 PointData[PointIndex, 0] = CurX PointData[PointIndex, 1] = CurY PointData[PointIndex, 2] = CurZ ' 刷新点位数显示 PointCount = PointCount + 1 PointIndex = PointIndex + 1

这里PointData是二维数组变量,我在昆仑通态数据词典里定义成一个用户数组,行号是点位序号,列号0/1/2分别对应X/Y/Z坐标。存储的单位是脉冲数,这样和PLC侧数据无缝对接。如果操作工习惯看毫米,脚本里除一下100再显示即可。

示教过程中经常遇到“保存错了要改”的情况,我在点位编辑画面做了两个额外按钮:

  • 修改当前点:用输入框把PointData[选择行, 0]等坐标值改掉
  • 插入空点:把后面的点位数据整体后移一位,腾出一个空点给当前示教位置

插入空点的脚本有点绕,要倒着循环从最后一个点开始逐个后移,顺序错了会把数据覆盖掉,我吃过这个亏。

4.5 自动运行的调度脚本

自动运行的灵魂在调度脚本。PLC只负责“执行单点定位并返回完成标志”,触摸屏脚本负责“按顺序把点位数据下发到PLC”。这样分工让两边逻辑都简单。

调度脚本放在运行策略的循环策略里,周期100ms,逻辑大概是这样:

' 自动运行状态检测 IF AutoRunFlag = 1 THEN ' 当前点执行完成且未到最后一点 IF PointDone = 1 AND PointIndex < PointCount THEN ' 清除单点完成标志 PointDone = 0 ' 进入下一点 PointIndex = PointIndex + 1 ' 下发目标坐标到PLC TargetX = PointData[PointIndex, 0] TargetY = PointData[PointIndex, 1] TargetZ = PointData[PointIndex, 2] ' 计算并下发各轴速度 Call CalcSpeed() ' 触发PLC自动启动 AutoStart = 1 ENDIF ' 全部点位跑完,复位自动运行 IF PointIndex >= PointCount THEN AutoRunFlag = 0 ENDIF ENDIF

这个脚本看起来简单,实际有几个坑要注意。

第一,PointDone要在下一点启动前清零,否则脚本会疯狂连续下发,PLC那边还没到位又被拉去跑下一点。清零的时机必须放在“确认PLC已经完成本次定位”之后,也就是PointDone=1这一拍立即清零。

第二,AutoStart是上升沿触发有效,不能一直为1。脚本里设置AutoStart=1后,最好在后续周期复位一次。实际操作中我在PLC程序里加了一个“启动脉冲生成”逻辑,M10在触摸屏变量变ON后,PLC内部用上升沿把它转成单扫描周期脉冲,这样就不怕触摸屏脚本因为通讯周期导致标志位重复置位。

第三,点位的速度计算不能每条轴都一样。我用一个CalcSpeed子过程,读取当前点和前一个点的坐标差,算出位移量,再按3.5节的公式生成三轴频率,下发到D10/D12/D14。实际设备跑起来后,三轴启动停止非常整齐,这步计算值得做。

4.6 点位表存触摸屏还是PLC:我的选择和建议

做示教器方案一定会面临点位数据的存放位置问题。我做过两种方式,对比一下:

存储位置优点缺点
PLC D区逻辑简单,触摸屏直接读写D区数量有限、断电保持依赖电池
触摸屏本地数组容量大、便于导出U盘备份触摸屏选型要高配,脚本逻辑稍复杂
触摸屏配方/数据库规范、支持大量点位配置步骤多,示教频繁操作不如数组直观

我现在的习惯是:点位表放在触摸屏本地数组里,原因有三。

一是点位数据是甲方的工艺资产,换PLC、PLC电池没电都不影响,触摸屏侧随时能导出CSV或U盘备份。

二是触摸屏本地数组容量远大于FX3U的D区。FX3U一个32位数据占两个D,点位一多,D区根本不够用,也很容易和程序内部变量互相干扰。

三是脚本操作数组非常顺手,点位插入、删除、批量修改都自由。PLC侧的D0/D2/D4只作为“当前运行点位”的临时缓冲,任务一到就让位,结构清爽。

当然,如果甲方要求“断电后直接用原PLC继续跑,不依赖触摸屏”,那就只能把点位表放到PLC保持区,这时务必在PLC参数里把存放点位表的D区设为保持,并定期让触摸屏把点位表回传备份。

5. 完整运行流程:从示教到自动运行的实操步骤

5.1 首次上电调试的前置检查

新装机第一次上电,我建议按这个顺序做,能省掉大量返工:

  1. 断驱动使能,先用万用表量PLC输出端的脉冲线有没有短路/接反
  2. 伺服驱动器上电,确认位置控制模式、电子齿轮参数设置正确
  3. PLC下载程序,触摸屏做通讯测试,确认数据词典里XCurrent能实时变化
  4. 用手转各轴丝杆,看触摸屏当前值是否随机械位置变化,方向是否正确
  5. 手动JOG微调,以最低频率点动,确认方向、限位逻辑对不对
  6. 全部确认后再进行回原点操作

我遇到过最尴尬的情况是JOG方向反了,操作工按“X+”设备往负方向冲,幸好限位起作用,否则就撞了。所以方向测试一定要用最低速度、手指不离急停。

5.2 一次完整的示教操作流程

设备回零后,操作工的示教流程是这样的:

  • 进入手动示教画面,选择速度挡位“中速”或“微调”
  • 按下X+按钮,工作台向X正方向移动,到位后松开
  • 依次调整Y、Z轴,让机构对准第一个工艺位置
  • 按下“保存点位”按钮,触摸屏把当前坐标写入点位表第一行
  • 移动机构到第二个位置,再保存
  • 核对点位表里的坐标数值,用“修改当前点”功能微调

示教过程中我最关注的是“操作手感”。JOG按钮在触摸屏上有个特点:按钮事件里按下置位会存在一定通讯延迟,操作工如果快速点按,PLC可能漏掉启动信号。我的解决方法是触摸屏按钮的按下和松开事件各写一个脚本,按下置位M20,松开复位M20,同时在PLC里加一个“按钮粘连检测”,如果M20持续ON超过设定时间就报警,防止触摸屏卡死导致设备一直跑。

5.3 点位保存后如何验证

保存完点位不要急着跑自动,先做单步验证。我在主操作画面做了一个“单步运行”按钮,逻辑是:从当前点号开始执行一次DRVA定位,操作工确认位置正确后再进下一个点。

单步验证时重点看三件事:

  • 实际停靠位置和示教时机构停的位置是否一致,偏差是否在工艺允许范围内
  • 各轴运行速度是否协调,有没有某个轴明显先到/后到
  • 到位后动作码(如吹气、锁螺丝、点胶)是否正确触发

如果单步都不准,先别怀疑程序,回头查脉冲当量、电子齿轮、机械间隙。大多数定位不准的问题都出在“命令位置和实际位置不是一回事”上。

5.4 联机跑一次完整自动循环

单步验证通过后,就可以跑完整循环了。自动运行的完整链路我梳理一下:

触摸屏按下“自动运行”按钮 → AutoRunFlag=1,AutoStart=1 → PLC M10收到启动信号,执行点1 DRVA三轴定位 → 三轴到位,PLC置位M501 → 触摸屏循环脚本检测到PointDone=1 → 下发点2目标坐标,AutoStart=1 → PLC执行点2 → ......重复到最后一个点 → AutoRunFlag=0,屏幕上显示“运行完成”

这里面最容易出错的是“自动运行结束”的判断。我原来只在触摸屏脚本里判断PointIndex是否到末尾,后来发现PLC侧会残留一个PointDone标志,下次启动时直接跳过一个点。现在我在触摸屏脚本里先清PointDone,再启动第一次AutoStart,保证每次运行从头开始。

6. 常见问题与排查技巧实录

6.1 定位不准、丢脉冲怎么查

三轴设备最常见的故障就是定位不准。我的排查顺序很固定:先看机械、再看参数、最后查电气干扰。

机械上,丝杆间隙、联轴器松动、导轨磨损都会导致位置偏差,这种偏差有方向性,正转和反转回同一位置可能差好几个毫米。参数上,电子齿轮比不是整数比,会导致理论位置和实际位置有微小偏差,长时间运行累积后很可观。电气上,脉冲线没屏蔽、伺服驱动器电源和PLC共地干扰,会造成随机丢脉冲,位置偏差没有规律。

排查技巧:在触摸屏上写一个小程序,让X轴正转1000脉冲再反转1000脉冲,看回到原点的读数偏差。偏差是固定的,查机械/参数;偏差随机跳动,查接线和干扰。

6.2 回原点跑飞或找不到原点

回零失败的原因不外乎几个:DOG开关信号没进PLC、爬行速度过快过冲、ZRN指令的参数接错输入点。实际调试时我遇到过一种情况:原点开关和回零开关用的是同一个传感器,但传感器输出接的是PLC的高数计数器输入,而ZRN需要的是普通输入点,导致PLC永远收不到DOG信号,轴直接冲限位。

排查方式很简单:触摸屏上单独做一页IO监控,把所有输入点的实时状态显示出来,手动去碰DOG开关,看对应输入点有没有翻转。没有翻转,查接线;翻转了但回零还是冲,查程序参数。

6.3 触摸屏通讯中断或数值错乱

昆仑通态和FX3U通讯掉线,常见原因有几个:通讯距离太长、没有用屏蔽双绞线、PLC通讯格式D8120设置不对、触摸屏串口参数和PLC不一致。

数值错乱则多半是32位数据高低字顺序不对。我在数据词典里定义32位变量时,昆仑通态有“低字在前/高字在前”的选项,必须和PLC的低位在前一致。如果读出来坐标变成几百万或者负数,先查这个。

还有通讯周期不要太快。我见过有人把触摸屏刷新周期设成10ms,结果PLC通讯占用过高,脉冲输出反而受影响。实际项目里100ms刷新足够,显示效果也流畅。

6.4 脚本不执行或数组越界

MCGS脚本不执行,八成是触发方式不对。比如按钮脚本在“按下”写了一批逻辑,但按钮本身设置了“禁止操作”,脚本就不会触发。我在调试时一般先加一个测试变量,把变量显示在画面上,看脚本执行后有没有变化,快速锁定是没触发还是逻辑写错。

数组越界是示教点位脚本的另一个重灾区。操作工连续按保存按钮,PointIndex超过了数组定义的最大行数,脚本直接跑飞。我在脚本里加了保护判断,PointIndex超过上限时弹出提示并拒绝写入。

6.5 三轴联动明显不同步

联动不同步,我遇到过两种原因。

第一种是速度比例算错。D10/D12/D14三个速度值如果单位不是Hz而是某种百分比,三轴的脉冲频率比例就和位移比例对不上,快慢轴一起动,到达时间差得离谱。这个用示波器或者观察各轴当前值寄存器变化率就能看出来。

第二种是三轴机械导程不一样。X轴是10mm导程、Y轴是5mm导程,即使速度频率完全相同,实际移动速度也差一倍。所以速度分配计算必须基于“位移量比例”而不是“电机转速比例”,脉冲当量不同时更要先统一到mm/s再算。

6.6 现场问题速查表

现象可能原因处理对策
单轴定位越走越偏电子齿轮取整误差、丝杆背隙改用伺服全闭环、校准电子齿轮比、补偿反向间隙
轴突然停住并报警驱动器过载、脉冲线接触不良查机械卡滞、复紧端子、屏蔽线接地
触摸屏显示坐标不动通讯中断、变量地址错误检查通讯参数、核对D8140等地址
回零后坐标清零但位置不对DOG点没找对手动触发DOG看IO状态,确认ZRN各参数
自动跑完一遍后点位偏移PointDone残留、起始点号不对启动前清标志、检查PointIndex初始化
三轴同时到不了位速度比例错误、导程不一致按位移比例重新计算、统一脉冲当量
运行速度高就丢脉冲PLC输出频率超限、驱动器滤波降速、改用差分输出、驱动器输入滤波调高

7. 从项目落地角度再说几句

这套“三菱FX3U+昆仑通态”的三轴示教器方案,说到底不是去和专用机器人控制系统比功能,而是用最低的成本、最短的调试周期,解决中小型设备“点位多、改点勤、操作工要能自己上手”的真实需求。我做了几台之后最大的体会是:方案本身不复杂,真正决定项目成败的是细节——脉冲当量算没算对、点位存储选没选对、联动速度分配合不合理、脚本的防呆逻辑做没做全。

最后分享一个我自己的习惯:示教器项目收尾时,我一定会在触摸屏上留一个“一键备份点位”按钮,把点位表和设备参数导出到U盘。设备交付半年后,甲方想改几个点位或者换一台PLC,这个备份能省掉很多麻烦。另外,如果后续设备要升级到四轴、五轴,FX3U的硬件就得换成FX5U,但触摸屏这边的界面和调度脚本基本可以复用,算是一条性价比很高的升级路径。这套组合,值得每个做小型自动化设备的朋友在库里备一份。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/3 8:02:40

DRV8818PWPR+STM32G071RB双极步进电机驱动设计实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/3 8:02:21

DRV8818+MKV42F256工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/3 8:01:56

智慧产业园区方案拆解:从三平台一中心到需求落地

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/3 8:01:35

Oracle数据库设计规范:从字段类型到命名规则的落地指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/3 8:01:33

毕业论文答辩PPT模板:从选模板到控场,避开五个翻车现场

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华