运动指令
运动指令分两族:轨迹指令(Linear/CW/CCW,进入前瞻规划,连续平滑)与独立指令(其余全部,逐条执行、前后速度归零)。轴参数一律用轴名(X、Y…)。点击指令名查看独立介绍页。
点位运动
| 指令 |
签名 |
说明 |
MoveAbs |
MoveAbs(轴, 目标位置 [, F, 速度]) |
绝对点位运动。仅单轴(多轴参数只有第一轴生效) |
MoveInc |
MoveInc(轴, 距离 [, F, 速度]) |
增量点位运动。同样仅单轴 |
Rapid |
Rapid(轴1, 距离1 [, 轴2, 距离2 …]) |
快速点位,各轴按自身参数限速(MaxSpeedClamp) |
MoveAbs(X, 100, F, 500) -- X 到 100,速度 500
MoveInc(Y, -5, F, 100) -- Y 反向走 5
点位运动语义
- 异步受理:命令在运动被控制器受理后即返回,不等运动到位。完成判定用
WaitMotion 或查询轴状态。
- 速度必须带
F:省略 F, 速度 时按 0 速度处理,命令立即"完成"但轴不会动。
- 同任务串行:同一任务上一条点位运动还在执行时提交下一条(包括不同轴)会报
MotionError (53)。同轴顺序用 WaitMotion 分隔;两轴同时协调运动用 Linear;互不干扰的并行运动请拆分到不同任务。
- 模态无关:
MoveAbs 恒为绝对、MoveInc 恒为增量,不受 Abs/Inc 影响;模态只影响 Linear/CW/CCW/Rapid 的端点解释(上电默认增量)。
连续轨迹(前瞻规划)
| 指令 |
签名 |
说明 |
Linear |
Linear(轴1, 终点1 [, 轴2, 终点2 …] [, F, 速度]) |
多轴协调直线;F 为合成进给速度 |
CW |
CW(轴1, 终点1, 轴2, 终点2, I, i, J, j [, F, 速度]) |
顺时针圆弧。圆心 = 起点 + (I, J) 相对偏移 |
CCW |
同上 |
逆时针圆弧 |
圆弧要点:只支持 IJ 圆心法(R 法不支持);圆心不受 Abs/Inc 影响,终点跟随当前模式;过弯速度受 √(CoordinatedCircularAccelLimit × R) 向心限制。
Linear(X, 100, Y, 50, F, 200) -- 直线到 (100, 50)
CW(X, 100, Y, 0, I, -20, J, 0, F, 100) -- 顺时针半圆,圆心在起点左侧 20
轴状态控制
| 指令 |
说明 |
Enable |
使能(CiA402),阻塞至完成,超时 5 s 报 EnableTimeout;轴有故障时立即报错 |
Disable |
禁用,超时 5 s |
Home |
回零(阻塞式,完成后才执行下一行);需先 Enable |
HomeConditional |
条件回零:仅对尚未回零的轴执行回零,已回零的轴直接跳过(阻塞式同 Home) |
FaultAck |
无参数 = 清除全部轴故障;FaultAck(X) 清指定轴 |
Abort |
中止运动。注意:会中止所有任务上的运动 |
Dwell |
等待指定毫秒(占用本任务流,后续指令顺延) |
WaitMotion |
阻塞等待运动完成:无参 = 等本任务全部运动停止;带轴 = 等该轴停止 |
速度模式与特殊运动
| 指令 |
签名 |
说明 |
FreeRun |
FreeRun(轴, 速度) |
持续速度输出(点动),速度符号决定方向,受 MaxSpeedClamp 钳制 |
FreeRunStop |
FreeRunStop(轴…) |
停止 FreeRun |
Oscillate |
Oscillate(轴, 幅值, 频率, 次数 [, 占空比]) |
往复摆动。注意:内核内部把幅值减半(传入的是峰-峰值);频率 ≤ 500 Hz |
Brake |
Brake(轴, 1/0) |
抱闸吸合/释放(详见 IO 指令) |
常见写法
Enable(X, Y)
HomeConditional(X, Y) -- 已回零则跳过,未回零才执行
WaitMotion(X)
-- 矩形扫描
VelocityOn()
for i = 1, 5 do
Linear(X, 100, F, 200)
Linear(Y, 50, F, 200)
Linear(X, 0, F, 200)
Linear(Y, 0, F, 200)
end
VelocityOff()