三菱伺服使用脉冲方向控制时,伺服驱动器只负责接收和执行脉冲。
真正决定:
走多少
往哪边走
速度多快
什么时候启动
什么时候停止
什么时候回原点
什么时候进入下一步
通常是 PLC。
在很多普通自动化设备中,经常会看到这样的组合:
FX3U 加 MR-JE-A
FX3U 加 MR-J4-A
FX5U 加 MR-JE-A
FX5U 加 MR-J4-A
FX5U 加 MR-J5-A
这些组合最常见的控制方式就是:
PLC 高速脉冲输出接三菱伺服 PULSE。
PLC 方向输出接三菱伺服 SIGN。
PLC 通过定位指令控制输出脉冲数量和频率。
伺服驱动器按照电子齿轮比控制电机转动。
但 FX3U 和 FX5U 虽然都能做脉冲定位,软件、参数配置和指令操作方式并不完全相同。
所以这一篇要把两者分开讲。
在脉冲位置控制系统中,PLC 和伺服驱动器是分工合作的。
PLC 负责:
计算目标距离。
计算需要发送的脉冲数。
设置脉冲频率。
输出运动方向。
控制伺服使能。
执行相对定位和绝对定位。
处理原点、限位、报警和步序。
判断定位指令是否执行完成。
伺服驱动器负责:
接收 PLC 脉冲。
按照电子齿轮比换算目标位置。
控制电机转动。
读取编码器反馈。
修正位置偏差。
输出报警、准备好和定位完成信号。
可以简单理解为:
PLC 说要走多少,伺服负责准确地走过去。
如果 PLC 没有发脉冲,伺服不会知道要走多远。
如果伺服没有使能,PLC 发再多脉冲,电机也不会正常执行。
FX3U 和 FX5U 都有内置脉冲定位功能,但使用方式有明显区别。
FX3U 是比较经典的一代 PLC,常用 GX Works2 或 GX Developer 编程。
使用主机内置晶体管输出时,可以通过DRVI/DDRVI、DRVA/DDRVA等指令执行单速定位。三菱 FX3 定位手册规定,主机晶体管输出的定位脉冲频率通常应控制在 100kHz 以内;使用相应的高速输出适配器时,部分应用可提高到 200kHz。具体可用轴数和输出点要根据 CPU 型号、输出类型及扩展适配器确认。
FX3U 的典型指令形式是:
DDRVI 目标相对脉冲数 速度 脉冲输出点 方向输出点
例如概念上可以写成:
DDRVI D100 D102 Y0 Y4
其中:
D100、D101 存放32位目标脉冲数。
D102、D103 存放32位速度。
Y0 输出脉冲。
Y4 输出方向。
实际可用输出点必须根据 FX3U 型号和接线手册确认,不能把这个例子直接套到所有主机。
FX5U 一般使用 GX Works3。
FX5U/FX5UC CPU 内置定位功能最多可使用4轴脉冲输出,CPU 模块的 Y0~Y3可以作为相应轴的脉冲输出;脉冲加方向还是 CW/CCW,以及方向输出点的分配,要在 GX Works3 的高速 I/O 参数中设置。
在三菱官方的轴1接线示例中,PULSE/SIGN 模式可以采用:
Y0 输出脉冲。
Y4 输出方向。
但这只是典型示例,实际还要匹配:
FX5U 是漏型还是源型晶体管输出。
伺服驱动器输入电路。
GX Works3 的轴参数。
脉冲输出模式。
输出公共端接法。
FX5U 可以使用 FX5 原生操作数格式,也可以在部分 CPU 内置定位场合使用 FX3 兼容操作数。新项目更建议按照 GX Works3 的高速 I/O 参数和 FX5 原生轴控制方式编写。
普通继电器输出不能用于高速脉冲定位。
继电器输出的动作速度慢、机械触点寿命有限,无法稳定输出几十千赫兹、几百千赫兹的定位脉冲。
因此使用 FX3U 或 FX5U 主机内置脉冲定位时,通常要选择相应的晶体管输出型 CPU,或者使用专用定位模块、脉冲输出模块。
选 PLC 时要看完整型号后缀,不能只看“FX3U”或“FX5U”。
例如同一个系列里,可能同时有:
继电器输出型
漏型晶体管输出型
源型晶体管输出型
接三菱伺服前必须确认:
PLC 输出类型。
伺服脉冲输入类型。
公共端接法。
最高脉冲频率。
电压和限流要求。
无论 FX3U 还是 FX5U,位置控制都绕不开三个量。
假设电子齿轮比和机械结构设置成:
1000个脉冲等于1mm。
那么:
1000脉冲,轴走1mm。
10000脉冲,轴走10mm。
100000脉冲,轴走100mm。
PLC 定位指令中的距离,最终都要换算成脉冲数。
假设:
1000脉冲等于1mm。
PLC 输出100000脉冲/秒。
那么机械速度就是:
100000 ÷ 1000 = 100mm/s。
所以:
机械速度 = 脉冲频率 ÷ 每毫米脉冲数
反过来:
所需脉冲频率 = 机械速度 × 每毫米脉冲数
例如希望运行速度为300mm/s,每毫米需要1000脉冲:
300 × 1000 = 300000脉冲/秒
也就是300kHz。
如果使用 FX3U 主机内置100kHz脉冲输出,就达不到这个速度;需要降低每毫米脉冲数、降低速度,或者采用高速输出适配器、定位模块或总线控制。
在 PULSE/SIGN 模式下:
PULSE 输出连续脉冲。
SIGN 输出方向电平。
对于 FX3U 的DRVI/DDRVI,相对定位脉冲数的正负可以决定运动方向,PLC自动改变指定方向输出点的状态。三菱手册示例中,正脉冲数和负脉冲数分别对应正反方向,方向输出点在指令执行期间由定位功能控制。
所以使用定位指令时,不要再用普通程序同时控制那个方向输出点。
DRVI是相对定位指令,也可以理解为增量定位。
它的含义是:
从当前位置开始,再走多少。
例如当前位置是80mm:
执行相对定位 +20mm,最终到100mm。
再次执行相对定位 +20mm,最终到120mm。
执行相对定位 -30mm,最终回到90mm。
所以相对定位关心的是:
从现在开始,再走多少距离。
三菱 FX3 和 FX5 定位手册都把DRVI/DDRVI定义为相对地址定位;正负位置量分别代表不同运动方向。
DRVI使用较小的数据范围。
DDRVI使用32位数据范围。
在 FX5U 的原生操作数中:
DRVI的目标位置范围较小。
DDRVI可使用约正负21亿的32位位置范围。
现场定位距离和脉冲数通常比较大,所以实际项目中更常采用:
DDRVI
例如:
1000脉冲等于1mm。
设备最大行程1000mm。
最大脉冲数就是:
1000 × 1000 = 1000000脉冲
这个数已经超过16位有符号数据范围,所以使用32位指令更稳妥。
DRVA是绝对定位指令。
它的含义是:
不管当前在哪里,都运动到指定坐标。
例如轴当前在80mm:
执行绝对定位20mm,轴会回到20mm。
执行绝对定位100mm,轴会运动到100mm。
执行绝对定位300mm,轴会运动到300mm。
三菱手册把DRVA/DDRVA定义为按绝对地址执行单速定位,目标值表示从原点到目标位置的坐标,而不是本次要走的距离。
所以相对定位和绝对定位的区别是:
DRVI:从当前位置再走多少 DRVA:直接去哪个坐标
当前位置为100mm。
执行:
相对定位 +50mm
最终位置是150mm。
执行:
绝对定位 50mm
最终位置是50mm。
虽然两条指令里都有“50mm”,结果完全不同。
绝对定位依赖当前坐标。
如果 PLC 当前坐标不可信,绝对定位就可能跑错位置。
例如实际滑台停在300mm,但 PLC 上电后认为当前位置是0:
PLC执行绝对定位100mm。
PLC认为只需要正向走100mm。
实际机械可能从300mm走到400mm。
因此使用DRVA/DDRVA前,一般要先完成:
机械回原点。
当前位置清零。
原点完成标志置位。
PLC坐标与实际机械位置统一。
三菱定位手册对相对地址和绝对地址作了明确区分:相对定位以当前位置为起点,绝对定位则以原点坐标为基准。
如果设备没有回原点,自动程序最好禁止执行绝对定位。
FX3U 的经典格式可以理解为:
DDRVI S1 S2 D1 D2
其中:
S1:相对定位脉冲数。
S2:脉冲输出频率。
D1:脉冲输出点。
D2:方向输出点。
例如概念程序:
DDRVI D100 D102 Y0 Y4
假设:
D100、D101 = 50000
D102、D103 = 20000
Y0 = 脉冲输出
Y4 = 方向输出
那么它可以理解为:
从当前位置开始,按照20000pps的指令速度,运动50000个脉冲。
如果电子齿轮设置为:
1000脉冲/mm
那么运动距离就是:
50000 ÷ 1000 = 50mm。
如果 D100、D101 中存放的是 -50000,那么轴会向相反方向运动50mm,方向输出点的状态由定位指令自动处理。
FX3U 绝对定位的经典格式可以理解为:
DDRVA S1 S2 D1 D2
其中:
S1:目标绝对坐标。
S2:脉冲输出频率。
D1:脉冲输出点。
D2:方向输出点。
例如:
DDRVA D110 D112 Y0 Y4
假设:
D110、D111 = 100000
D112、D113 = 20000
1000脉冲/mm
那么目标绝对位置是:
100000 ÷ 1000 = 100mm。
轴当前在20mm,就正向去100mm。
轴当前在150mm,就反向回100mm。
方向不需要程序员单独判断,PLC会比较当前地址和目标地址,自动控制方向输出。
FX5U 在 GX Works3 中可以使用更接近“轴控制”的原生操作数。
三菱 FX5 定位手册的官方示例使用了类似下面的格式:
DDRVI D300 K10000 K1 M1
这个示例可以理解为:
D300开始的32位数据:相对定位地址。
K10000:指令速度。
K1:选择轴1。
M1:正常完成标志。
M2:紧接着作为异常完成标志。
FX5U 的脉冲输出点和方向输出点,不一定直接写在指令里,而是在 GX Works3 的高速 I/O 参数中分配。官方示例还专门设置了定位启动、正常完成、异常完成、停止、减速停止和正反限位等逻辑。
这就是 FX5U 和 FX3U 编程体验上的明显区别:
FX3U 更像直接指定:
脉冲输出Y点 + 方向输出Y点
FX5U 原生方式更像指定:
第几轴 + 完成状态
具体脉冲和方向输出由参数管理。
使用 FX5U 内置脉冲定位前,不能只写一条DDRVI指令。
还要在 GX Works3 中设置高速 I/O 参数。
通常要确认:
使用第几轴。
脉冲输出模式是 PULSE/SIGN 还是 CW/CCW。
脉冲输出点。
方向输出点。
输出逻辑。
正限位输入。
负限位输入。
停止和减速停止信号。
最大速度。
偏置速度。
加速时间。
减速时间。
原点回归相关参数。
FX5U/FX5UC 的 Y0~Y3可对应轴1~轴4的脉冲输出,但方向输出和其它辅助信号要根据高速 I/O 参数分配。
如果参数中把轴1设置为 CW/CCW,程序和接线却按 PULSE/SIGN 做,伺服就不会按预期动作。
初学者经常会问:
既然PLSY也能发脉冲,为什么还要用DRVI?
可以简单理解:
PLSY更接近单纯输出指定数量和频率的脉冲。
DRVI/DRVA更适合完整定位控制。
定位指令通常会结合:
当前位置。
目标地址。
正反方向。
加速时间。
减速时间。
最大速度。
限位。
忙碌状态。
正常或异常完成状态。
三菱 FX5 手册给出的DRVI/DDRVI运行曲线包含偏置速度、加速、匀速、减速和到达目标位置后的停止过程。
所以普通送料和滑台定位,通常优先使用:
DDRVI相对定位。
DDRVA绝对定位。
而不是把所有运动都写成最基础的固定脉冲输出。
这是定位程序里非常容易犯的错误。
有些人把启动按钮的上升沿直接接到DDRVI指令:
按钮按一下。
条件只成立一个扫描周期。
下一扫描周期条件断开。
但三菱 FX3 定位手册明确说明,如果定位指令的启动条件在执行过程中断开,运动会减速停止,而且正常执行完成标志不会按完整定位方式产生。
所以更稳妥的程序结构是:
启动按钮产生一个请求。
请求置位内部保持位。
保持位驱动定位指令。
定位正常完成或异常结束后,再复位保持位。
概念逻辑如下:
启动按钮上升沿 → SET M100定位请求 M100 且伺服准备好 且无报警 且已回原点 且轴不忙 → 执行DDRVI或DDRVA 正常完成 → RST M100 异常完成 → RST M100,并置位故障
不要让人工按钮直接长期驱动定位指令,也不要让指令只执行一个扫描周期。
定位程序至少要区分三个状态。
表示定位指令正在执行。
FX3U 通过对应脉冲输出轴的特殊继电器监控忙碌状态。三菱手册要求,当同一输出的脉冲输出监控标志仍为 ON 时,不应再次启动占用该输出的定位指令。
FX5U 则可以通过轴激活状态和指令执行状态判断。
表示 PLC 已经把计划中的脉冲全部发完。
但这不一定表示机械已经完全稳定。
三菱伺服的 INP 信号通常在指令位置和反馈位置之间的偏差进入设定的到位范围后输出。到位范围设置太宽,低速运动过程中也可能提前出现 INP。
所以实际步序最好使用:
PLC定位指令正常完成 并且伺服INP到位
两个条件都满足以后,再启动气缸、夹爪、相机、切刀或下一轴。
一条可靠的定位指令,启动前至少要检查:
伺服无报警。
伺服 RD 准备好。
SON 已使能。
急停已释放。
强制停止已解除。
正负限位正常。
轴当前不忙。
参数数据有效。
目标位置没有超出软件行程。
需要绝对定位时,原点已经完成。
例如:
定位允许 = 伺服准备好 AND 无报警 AND 伺服已使能 AND 急停正常 AND 轴未忙 AND 目标位置合法 AND 已回原点
不能只要启动按钮一按,就无条件执行定位指令。
亲,实际项目可以按下面的结构组织。
触摸屏或自动步序给出:
目标位置
运行速度
启动请求
检查:
伺服状态
限位
急停
原点
轴忙碌
目标范围
在定位启动前,把目标脉冲数和速度复制到专用数据寄存器。
这样运动开始后,即使触摸屏数值变化,也不会突然影响本次运动。
用内部保持位驱动DDRVI或DDRVA。
监控:
轴忙碌
PLC正常完成
PLC异常完成
伺服报警
限位
超时
PLC脉冲完成以后,再等待伺服 INP。
复位定位请求。
置位动作完成。
允许进入下一步。
出现报警、限位、超时或异常完成时:
停止定位。
清除请求。
记录错误原因。
禁止自动继续运行。
假设:
Y0 输出脉冲。
Y4 输出方向。
1000脉冲等于1mm。
D100/D101 存放目标相对脉冲数。
D102/D103 存放速度。
M100 是定位请求。
要向正方向运动50mm:
D100/D101 = 50000 D102/D103 = 20000
执行概念指令:
DDRVI D100 D102 Y0 Y4
表示:
输出50000个脉冲。
脉冲频率20000pps。
方向为正方向。
理论运行时间不考虑加减速时约为:
50000 ÷ 20000 = 2.5秒
实际时间还要加上加速和减速过程。
要反向运动50mm,则把目标脉冲数设为:
-50000
方向输出由指令自动处理。
假设:
GX Works3 已把轴1设置为 PULSE/SIGN。
轴1脉冲输出和方向输出已经正确分配。
D300/D301 存放相对脉冲数。
目标速度为10000pps。
M1为正常完成标志。
M2为异常完成标志。
可以参考官方示例的思路:
DDRVI D300 K10000 K1 M1
其中:
K1 表示轴1。
M1 正常结束。
M2 异常结束。
程序不应只看指令有没有执行,还要处理:
轴1当前是否已被占用。
M1是否正常完成。
M2是否异常完成。
正负限位是否动作。
脉冲停止或减速停止命令。
伺服 INP 是否到位。
具体操作数格式会受到软件版本、CPU固件和采用 FX5 原生还是 FX3 兼容操作数的影响,编程时应以当前 GX Works3 指令帮助和对应版本手册为准。
相对定位适合:
每次送料固定长度。
每次转动一个工位。
每次向前移动固定距离。
手动点动一段距离。
切断机按长度送料。
贴标机每次送一张标签。
包装膜每次前进固定长度。
例如:
每次送料100mm。
不关心当前绝对坐标。
每次收到信号就再走100mm。
这种场合用DDRVI比较直观。
但连续多次相对定位时,要注意累计误差、机械打滑以及当前坐标是否被正确维护。
绝对定位适合:
滑台去固定工位。
机械手去取料位、放料位。
检测平台去不同坐标。
点胶机运动到不同产品位置。
转盘去指定角度。
多工位设备按坐标运行。
例如设备有:
待机位 20mm
取料位 100mm
检测位 250mm
放料位 400mm
程序可以分别执行:
DDRVA 20mm对应脉冲 DDRVA 100mm对应脉冲 DDRVA 250mm对应脉冲 DDRVA 400mm对应脉冲
无论轴当前在哪里,都直接去目标坐标。
但前提是原点和当前位置必须可信。
假设 PLC 已经发完100000个脉冲。
PLC 会认为本次定位指令已经结束。
但伺服电机和机械负载可能还处于:
减速尾段
位置修正
机械轻微振动
位置偏差尚未进入到位范围
如果此时马上让气缸下压、相机拍照或夹爪动作,工艺位置可能不稳定。
所以建议程序判断:
PLC指令正常完成 AND 伺服INP = ON AND 无报警
再进入下一步。
对于精密设备,还可以增加一个短暂稳定时间,例如 INP 连续保持一定时间后才确认到位。
定位指令启动以后,不建议随意修改目标脉冲数、速度或轴号。
FX3U 手册指出,指令执行期间即使修改操作数,本次运动也可能不会采用新值,而是在下一次启动时才使用。
因此更规范的做法是:
定位启动前锁存参数。
定位执行期间禁止触摸屏改写本次运动数据。
本次动作结束后,再允许更新下一次目标。
这样可以避免操作员在运动途中修改数值,却误以为设备会立即按新目标执行。
定位停止一般要区分:
正常减速停止
立即停止
急停或安全停止
适合普通停止按钮或工艺取消。
PLC向定位功能发出减速停止命令,轴按照减速时间停止。
适合程序异常、限位或需要快速终止定位的情况。
FX3 系列为不同脉冲输出轴配置了对应的脉冲输出停止命令特殊继电器;FX5U也有轴停止和减速停止相关控制。
急停不能只依赖普通 PLC 程序。
正式设备还应通过安全回路、安全继电器、STO或相应强制停止设计,实现符合设备风险要求的停机。
如果定位指令的驱动条件在运动中断开,三菱系统通常会按相应规则停止输出,而不是继续完成原目标。
FX3U 手册说明,定位执行期间启动条件断开时,启用加减速的情况下会减速停止,并且正常完成标志不会按完整到位方式置位。
因此程序必须区分:
正常定位完成。
人为取消。
限位停止。
伺服报警停止。
急停停止。
定位异常结束。
不能看到轴停了,就一律认为动作完成。
按下面顺序检查:
第一,PLC 是不是晶体管输出型。
第二,高速脉冲输出点是否正确。
第三,FX5U 高速 I/O 参数是否配置。
第四,伺服是否处于位置控制模式。
第五,SON 是否真正使能。
第六,LSP/LSN 是否允许。
第七,脉冲模式是否都是 PULSE/SIGN。
第八,PLC 输出公共端是否接对。
第九,伺服指令脉冲累计值是否增加。
第十,抱闸是否释放。
如果伺服指令脉冲计数没有变化,重点查 PLC 输出、接线和脉冲形式。
如果指令脉冲增加,但电机不动,重点查使能、抱闸、机械和伺服状态。
方向反了时,不要调换电机 U/V/W。
可以检查:
PLC输出脉冲数的正负。
SIGN方向逻辑。
伺服方向参数。
机械正方向定义。
正负限位接线。
回原点方向。
方向修改后必须重新测试:
正向点动。
负向点动。
正限位。
负限位。
回原点。
绝对定位坐标。
典型原因包括:
电子齿轮比错误。
PLC每毫米脉冲数错误。
丝杆导程看错。
减速比漏算。
触摸屏单位和PLC单位不一致。
使用16位数据发生溢出。
换驱动器后没有恢复参数。
排查时写出完整关系:
PLC发出多少脉冲 ÷ 每转一圈脉冲数 = 电机转数 电机转数 × 电机一圈实际机械位移 = 实际距离
如果每次都按固定倍数偏差,优先查换算关系,不要先怀疑机械精度。
常见原因:
上一次定位忙碌状态没有结束。
定位启动保持位没有复位。
完成标志没有清除。
仍在使用同一脉冲输出轴。
程序每一扫描反复启动指令。
异常完成后没有复位请求。
伺服 INP 一直没有出现,步序卡住。
FX3 手册明确要求,同一输出的 BUSY 状态没有结束前,不能再次启动占用该输出的定位指令。
所以每次定位都要有完整的状态循环:
空闲 → 启动 → 忙碌 → 正常/异常结束 → 清除请求 → 空闲
重点检查:
PLC最高脉冲频率。
电子齿轮比是否设得太细。
脉冲输出方式。
脉冲线长度和屏蔽。
脉冲线是否靠近动力线。
加减速是否太短。
伺服位置偏差是否过大。
机械是否打滑。
例如 FX3U 主机内置输出上限为100kHz,而程序要求300kHz,设备当然无法达到目标速度。
高速问题不能只靠调高伺服增益解决,要先计算脉冲频率。
已有旧设备、程序使用 GX Works2、轴数少、速度要求不高,可以继续维护 FX3U 系统。
新设备更适合使用 FX5U,原因包括:
GX Works3 参数化配置更完整。
内置多轴脉冲输出能力更强。
轴状态和正常/异常完成管理更清楚。
后续扩展定位模块、网络和运动控制更方便。
不过无论 FX3U 还是 FX5U,都要先确认:
速度够不够。
轴数够不够。
脉冲频率够不够。
定位精度和同步要求高不高。
如果设备需要高速多轴插补、电子凸轮、多轴同步或复杂轨迹,就不应只依靠普通 PLC 内置脉冲输出,而应考虑定位模块、简单运动模块、SSCNET、CC-Link IE TSN或相应运动控制系统。
三菱伺服和 FX3U/FX5U 第一次联调,可以按这个顺序:
第一步,确认 PLC 是晶体管输出型。
第二步,确认脉冲和方向接线。
第三步,确认 PLC 和伺服公共端。
第四步,确认伺服控制模式。
第五步,确认 PULSE/SIGN 模式一致。
第六步,确认 SON、ALM、RD、INP。
第七步,JOG 确认机械能正常运动。
第八步,PLC发少量相对脉冲。
第九步,确认方向。
第十步,确认限位。
第十一步,确认电子齿轮比。
第十二步,测试10mm、100mm等不同距离。
第十三步,调试原点回归。
第十四步,回原点后测试绝对定位。
第十五步,逐步提高速度和加速度。
第十六步,带实际负载测试。
第十七步,保存 PLC 程序和伺服参数。
亲,可以给初学者记住这几句话:
相对定位看距离,绝对定位看坐标;脉冲数量管距离,脉冲频率管速度;启动条件要保持,轴忙不能再启动;PLC完成看指令,伺服到位看INP;绝对定位先回零,方向修改重测限位。
这几句话基本把 FX3U、FX5U 控制三菱伺服的核心讲清楚了。
三菱 FX3U、FX5U 通过脉冲方向控制三菱伺服时,PLC负责产生定位指令,伺服负责执行和闭环控制。
相对定位使用:
DRVI / DDRVI
它表示从当前位置再走多少。
绝对定位使用:
DRVA / DDRVA
它表示运动到指定绝对坐标。
FX3U 的经典形式通常直接指定:
目标脉冲数
脉冲频率
脉冲输出点
方向输出点
FX5U 原生定位方式通常先在 GX Works3 中配置轴、脉冲输出模式和输出点,指令中再指定目标位置、速度、轴号及正常/异常完成标志。
编程时最重要的是:
使用晶体管高速输出。
确认 PULSE/SIGN 接线和参数一致。
优先使用32位定位指令。
绝对定位前完成原点回归。
启动条件在定位期间保持有效。
轴忙碌时不要重复启动。
PLC脉冲完成后,还要确认伺服 INP。
程序必须处理报警、限位、停止、超时和异常完成。
高速运行前先计算所需脉冲频率。