OneScript 概述
OneScript 是 One 控制器的板载脚本语言(基于 Lua 5.5 语法),程序文件扩展名 .pgm。脚本直接运行在控制器实时任务上,可以做运动、读写全局变量、控制 PCO(位置比较输出),无需上位机逐条下发指令。
第一个程序
-- 使能 X 轴并走一个往复
Enable(X)
MoveAbs(X, 10, F, 100) -- X 到 10,速度 100
WaitMotion(X) -- 等运动完成
MoveAbs(X, 0, F, 100)
WaitMotion(X)
Print("done")
运行方式
| 方式 | 说明 |
|---|---|
| MotionCoder | 编写、下载、运行、调试(断点/单步)OneScript 程序 |
| SDK(C#) | Controller.Tasks[TaskId.T01].OneScript.Load(path) + Run() |
| SDK(C/C++) | DLLOneScriptLoad + DLLOneScriptRun |
控制器另接受一组 Terminal 指令(ExecuteCommand 字符串集),可不编程直接下发;OneScript 指令与 C# 强类型 API 一一对应,见各指令页的「C# 对应」。
任务模型
- 每个任务(Task)同时运行一个脚本,共 32 个任务(Task 1 ~ Task 31 用于程序,Task 0 为库任务)。
- 脚本内所有运动指令都提交给本任务的运动通道,按顺序执行;多任务并行运行互不阻塞。
GetTaskId()返回当前脚本所在任务号。- 每次运行都是全新环境:上一次运行的故障锁存、命令队列自动清空。
运动执行的两种方式
| 方式 | 指令 | 行为 |
|---|---|---|
| 前瞻规划 | Linear、CW、CCW |
连续轨迹,拐角处按 VelocityOn/VelocityOff 模式平滑过渡 |
| 独立指令(marker 类) | 其余全部(MoveAbs、Rapid、Home、Dwell…) |
逐条执行,前后速度归零,严格按顺序 |
前瞻深度由任务参数 MaxLookaheadMoves 决定(默认 110,上限 128)。
限制一览
| 项目 | 限制 |
|---|---|
| 轴数 | 32(轴名即全局变量,如 X=0) |
| 任务数 | 32 |
| 全局变量 $global | 1000 个 double |
| 使能/禁用超时 | 5 s |
| PCO 指令超时 | 2 s |
| Oscillate 频率上限 | 500 Hz |
| SCurve | 0~100 % |
| RampType | 0~2 |
| 断点数 | 100 |
错误与停止
- 脚本运行出错(语法、运行时、运动指令失败):任务进入 Error 状态,错误信息和行号可在 MotionCoder 中查看。
- 上位机停止脚本:脚本在下一行停止,运动通道清空;参数 TaskStopAbortAxes 指定的轴会被自动 Abort。
- 脚本内用标准 Lua
pcall捕获运行时错误;运动指令失败可用GetLastError()查询(见 状态与任务)。