跳转至

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() 返回当前脚本所在任务号。
  • 每次运行都是全新环境:上一次运行的故障锁存、命令队列自动清空。

运动执行的两种方式

方式 指令 行为
前瞻规划 LinearCWCCW 连续轨迹,拐角处按 VelocityOn/VelocityOff 模式平滑过渡
独立指令(marker 类) 其余全部(MoveAbsRapidHomeDwell…) 逐条执行,前后速度归零,严格按顺序

前瞻深度由任务参数 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() 查询(见 状态与任务)。