4.10 BasScript 脚本程序类
概述
BasScript 用于在上位机以结构化方式构建机器人中的 BAS 指令序列,涵盖运动、逻辑、程序调用、通信、视觉和 Modbus 等多种指令类型。
核心功能
- 支持构建运动指令(MoveJoint、MoveLine、MoveCircle 等)
- 支持构建逻辑指令(If、While、Switch、Goto 等)
- 支持构建赋值、等待、暂停和中断指令
- 支持构建程序调用和管理指令
- 支持构建 Socket 通信指令
- 支持构建 Modbus 寄存器读写指令
- 支持构建视觉程序指令
- 支持设置额外参数(加速度、RTCP、帧偏移等)
- 支持快速运动指令(JUMP 系列)
使用场景
- 自动化生成复杂的机器人程序
- 编辑和修改机器人程序
- 复用常用程序模块和指令序列
- 实现上位机与机器人程序的无缝对接
- 构建定制化的机器人运动轨迹
- 集成视觉、通信和 Modbus 功能到机器人程序中
类构造函数
| 方法名 | BasScript(string name ) |
|---|---|
| 描述 | 构建用于机器人中的 BAS 指令序列类 |
| 请求参数 | name : string 脚本程序名称 |
| 兼容的机器人软件版本 | 协作 (Copper): v7.5.2.0+ 工业 (Bronze): 不支持 |
| 备注 | 本类下所有方法的兼容版本要求与本类一致 |
子类结构
BasScript 类包含以下子类,用于组织不同类型的指令:
- ExtraParam:额外参数类,用于构建复杂的机器人控制命令
- BasMotion:运动指令子类,包含所有机器人运动相关的方法
- BasLogical:逻辑指令子类,包含所有逻辑控制相关的方法
- BasStructure:结构指令子类,包含所有结构控制相关的方法
- BasSocket:Socket 通信子类,包含所有 Socket 通信相关的方法
- BasModbus:Modbus 通信子类,包含所有 Modbus 通信相关的方法
- BasVision:视觉指令子类,包含所有视觉相关的方法
4.10.1 ExtraParam 额外参数类
| 方法名 | ExtraParam() |
|---|---|
| 描述 | 额外参数类,用于构建复杂的机器人控制命令 |
| 请求参数 | 无 |
| 返回值 | ExtraParam 对象 |
4.10.1.1 设置加速度
| 方法名 | ExtraParam.Acceleration(double value ) |
|---|---|
| 描述 | 设置加速度,范围为 1~120% |
| 请求参数 | value : double 加速度值,单位:%(浮点数) |
| 返回值 | StatusCode: 参数设置执行结果 |
4.10.1.2 设置 RTCP 参数
| 方法名 | ExtraParam.RTCP() |
|---|---|
| 描述 | 设置 RTCP 参数,仅支持 MoveL 和 MoveC 指令 |
| 请求参数 | 无 |
| 返回值 | StatusCode: 参数设置执行结果 |
4.10.1.3 设置帧偏移
| 方法名 | ExtraParam.Offset(int index ) |
|---|---|
| 描述 | 设置帧偏移 |
| 请求参数 | index : int 偏移索引(整数) |
| 返回值 | StatusCode: 参数设置执行结果 |
4.10.1.4 设置时间基准运行或赋值
| 方法名 | ExtraParam.TB(double second , string type , string name ) |
|---|---|
| 描述 | 设置时间基准运行或赋值,范围为 0.01-30s,若输入小于 0.01 的数不会保存成功 |
| 请求参数 | second : double 秒数,单位:sec(浮点数) type : string 执行类型(字符串) name : string 名称(用于运行,字符串) |
| 返回值 | StatusCode: 参数设置执行结果 |
| 方法名 | ExtraParam.TB(double second , string type , int index , int status ) |
|---|---|
| 描述 | 设置时间基准运行或赋值,范围为 0.01-30s,若输入小于 0.01 的数不会保存成功 |
| 请求参数 | second : double 秒数,单位:sec(浮点数) type : string IO 类型(字符串) index : int 索引(用于赋值,整数) status : int 状态(用于赋值,整数) |
| 返回值 | StatusCode: 参数设置执行结果 |
4.10.1.5 设置跳转
| 方法名 | ExtraParam.SKIP(int index ) |
|---|---|
| 描述 | 设置跳转,当满足 SKIP CONDITION 指令设置的跳转条件时,从含有 SKIP 指令的当前行直接跳转到目标指令行或目标程序 |
| 请求参数 | index : int 目标标签的索引(整数) |
| 返回值 | StatusCode: 参数设置执行结果 |
4.10.1.6 设置出发距离和接近距离
| 方法名 | ExtraParam.Approach(double departureDist , double approachingDist ) |
|---|---|
| 描述 | 设置门型运动的出发距离和接近距离,仅用于 JUMP 指令 |
| 请求参数 | departureDist : double 出发距离,单位:mm(浮点数) approachingDist : double 接近距离,单位:mm(浮点数) |
| 返回值 | StatusCode: 参数设置执行结果 |
4.10.2 BasMotion 运动指令子类
BasMotion 子类包含所有机器人运动相关的方法,用于构建运动指令序列。
4.10.2.1 MoveJoint 运动到点指令
| 方法名 | BasScript.BasMotion.MoveJoint(MovePoseType poseType , int poseIndex , SpeedType speedType , double speedValue , SmoothType smoothType , double smoothDistance = 0, ExtraParam extraParam = null) |
|---|---|
| 描述 | 关节运动指令,以指定的移动速度和移动方法使机器人向作业空间内的指定位置移动,对应机器人程序编写中的 MoveJoint 指令 |
| 请求参数 | poseType : MovePoseType 位姿类型 poseIndex : int 位姿索引 speedType : SpeedType 速度类型 speedValue : double 速度值,单位:% smoothType : SmoothType 平滑类型 smoothDistance : double 平滑距离,单位:mm,取值范围:0~1000 extraParam : ExtraParam 附加参数 |
| 返回值 | StatusCode: 运动指令执行结果 |
4.10.2.2 MoveLine 直线运动到点指令
| 方法名 | BasScript.BasMotion.MoveLine(MovePoseType poseType , int poseIndex , SpeedType speedType , double speedValue , SmoothType smoothType , double smoothDistance = 0, ExtraParam extraParam = null) |
|---|---|
| 描述 | 直线运动指令,以指定的移动速度和移动方法使机器人向作业空间内的指定位置直线移动,对应机器人程序编写中的 MoveLine 指令 |
| 请求参数 | poseType : MovePoseType 位姿类型 poseIndex : int 位姿索引 speedType : SpeedType 速度类型 speedValue : double 速度值,单位:mm/s smoothType : SmoothType 平滑类型 smoothDistance : double 平滑距离,单位:mm,取值范围:0~1000 extraParam : ExtraParam 附加参数 |
| 返回值 | StatusCode: 运动指令执行结果 |
4.10.2.3 MoveCircle 弧线运动到点指令
| 方法名 | BasScript.BasMotion.MoveCircle(MovePoseType poseType1 , int poseIndex1 , MovePoseType poseType2 , int poseIndex2 , SpeedType speedType , double speedValue , SmoothType smoothType , double smoothDistance = 0, ExtraParam extraParam = null) |
|---|---|
| 描述 | 圆弧运动指令,以指定的移动速度和移动方法使机器人向作业空间内的指定位置圆弧移动,对应机器人程序编写中的 MoveCircle 指令 |
| 请求参数 | poseType1 : MovePoseType 第一个位姿类型 poseIndex1 : int 第一个位姿索引 poseType2 : MovePoseType 第二个位姿类型 poseIndex2 : int 第二个位姿索引 speedType : SpeedType 速度类型 speedValue : double 速度值,单位:mm/s smoothType : SmoothType 平滑类型 smoothDistance : double 平滑距离,单位:mm,取值范围:0~1000 extraParam : ExtraParam 附加参数 |
| 返回值 | StatusCode: 运动指令执行结果 |
4.10.2.4 Jump 点对点移动指令
| 方法名 | BasScript.BasMotion.Jump(MovePoseType poseType , int poseIndex , double speedValue , double speedRatio , SpeedType limZType , double limZValue , SmoothType smoothType , double smoothDistance = 0, ExtraParam extraParam = null) |
|---|---|
| 描述 | 门型运动指令,指定机器人做门型运动(首先垂直上升、然后水平移动,最后垂直下降),对应机器人程序编写中的 JUMP 指令 |
| 请求参数 | poseType : MovePoseType 目标位姿存储类型 poseIndex : int 目标位置的索引 speedValue : double 移动速度的值,单位:mm/s speedRatio : double 移动速度的比率,单位:% limZType : SpeedType Z 轴限制的类型 limZValue : double Z 轴限制的值 smoothType : SmoothType 平滑类型 smoothDistance : double 平滑距离,单位:mm,取值范围:0~1000 extraParam : ExtraParam 额外参数 |
| 返回值 | StatusCode: 运动指令执行结果 |
4.10.2.5 Jump3 三点跳跃指令
| 方法名 | BasScript.BasMotion.Jump3(MovePoseType poseType , int poseIndex , double speedValue , double speedRatio , SmoothType smoothType , double smoothDistance = 0, ExtraParam extraParam = null) |
|---|---|
| 描述 | 门型运动指令,指定机器人做门型运动,包含出发、接近和目标三个位置,对应机器人程序编写中的 JUMP3 指令 |
| 请求参数 | poseType : MovePoseType 目标位姿存储类型 poseIndex : int 3 个目标位置的索引 speedValue : double 移动速度的值,单位:mm/s speedRatio : double 移动速度的比率,单位:% smoothType : SmoothType 平滑类型 smoothDistance : double 平滑距离,单位:mm,取值范围:0~1000 extraParam : ExtraParam 额外参数 |
| 返回值 | StatusCode: 运动指令执行结果 |
4.10.2.6 Jump3CP 三点跳跃 CP 指令
| 方法名 | BasScript.BasMotion.Jump3CP(MovePoseType poseType , int poseIndex , double speedValue , SmoothType smoothType , double smoothDistance = 0, ExtraParam extraParam = null) |
|---|---|
| 描述 | 门型运动指令,指定机器人做门型运动,包含出发、接近和目标三个位置,对应机器人程序编写中的 JUMP3CP 指令 |
| 请求参数 | poseType : MovePoseType 目标位姿存储类型 poseIndex : int 3 个目标位置的索引 speedValue : double 移动速度的值,单位:mm/s smoothType : SmoothType 平滑类型 smoothDistance : double 平滑距离,单位:mm,取值范围:0~1000 extraParam : ExtraParam 额外参数 |
| 返回值 | StatusCode: 运动指令执行结果 |
4.10.3 BasLogical 逻辑指令子类
BasLogical 子类包含所有逻辑控制相关的方法,用于构建逻辑控制指令序列。
4.10.3.1 IF 条件指令
| 方法名 | BasScript.BasLogical.IF(param1, index, param2, value, operatorType) |
|---|---|
| 描述 | 添加一个逻辑 IF 语句到脚本中 |
| 请求参数 | param1 : 第一个参数,类型为 RegisterType 或 IOType index : 索引(整数) param2 : 第二个参数,类型为 RegisterType、IOType 或 OtherType value : 值,类型为索引、数值、字符串或 IOStatus operatorType : 布尔操作符,默认为等于 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.3.2 ELSE_IF 条件分支指令
| 方法名 | BasScript.BasLogical.ELSE_IF(param1, index, param2, value, operatorType) |
|---|---|
| 描述 | 添加一个逻辑 ELSE IF 语句到脚本中 |
| 请求参数 | param1 : 第一个参数,类型为 RegisterType 或 IOType index : 索引(整数) param2 : 第二个参数,类型为 RegisterType、IOType 或 OtherType value : 值,类型为索引、数值、字符串或 IOStatus operatorType : 布尔操作符,默认为等于 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.3.3 ELSE 否则指令
| 方法名 | BasScript.BasLogical.ELSE() |
|---|---|
| 描述 | 添加一个逻辑 ELSE 语句到脚本中 |
| 请求参数 | 无 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.3.4 END_IF 结束条件指令
| 方法名 | BasScript.BasLogical.END_IF() |
|---|---|
| 描述 | 结束逻辑 IF 语句 |
| 请求参数 | 无 |
| 返回值 | StatusCode: 函数执行结果 |
示例代码
cs
using Agilebot.IR;
using Agilebot.IR.Types;
using Agilebot.IR.BasScript;
public class Test
{
public static async Task Main()
{
string controllerIP = "10.27.1.254";
// 初始化捷勃特机器人
Arm controller = new Arm(controllerIP);
// 连接捷勃特机器人
StatusCode code = await controller.Connect();
Console.WriteLine(code != StatusCode.OK ? code.GetDescription() : "Successfully connected.");
// 生成脚本程序
BasScript script = new BasScript("test");
code = script.BasLogical.IF(RegisterType.R, 1, OtherType.VALUE, 1);
code = script.BasMotion.MoveJoint(MovePoseType.PR, 1, SpeedType.VALUE, 25, SmoothType.FINE);
code = script.BasLogical.ELSE_IF(RegisterType.R, 1, OtherType.VALUE, 2);
code = script.BasMotion.MoveJoint(MovePoseType.PR, 2, SpeedType.VALUE, 50, SmoothType.FINE);
code = script.BasLogical.ELSE();
code = script.BasMotion.MoveJoint(MovePoseType.PR, 3, SpeedType.VALUE, 50, SmoothType.FINE);
code = script.BasLogical.END_IF();
// 执行脚本程序
code = controller.Execution.ExecuteBasScript(script);
// 关闭连接
code = controller.Disconnect();
Console.WriteLine(code != StatusCode.OK ? code.GetDescription() : "Successfully disconnected.");
}
}4.10.3.5 WHILE 循环指令
| 方法名 | BasScript.BasLogical.WHILE(param1, index, param2, value, operatorType) |
|---|---|
| 描述 | 添加一个逻辑 WHILE 语句到脚本中 |
| 请求参数 | param1 : 第一个参数,类型为 RegisterType 或 IOType index : 索引(整数) param2 : 第二个参数,类型为 RegisterType、IOType 或 OtherType value : 值,类型为索引、数值、字符串或 IOStatus operatorType : 布尔操作符,默认为等于 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.3.6 END_WHILE 结束循环指令
| 方法名 | BasScript.BasLogical.END_WHILE() |
|---|---|
| 描述 | 结束逻辑 While 语句 |
| 请求参数 | 无 |
| 返回值 | StatusCode: 函数执行结果 |
示例代码
cs
using Agilebot.IR;
using Agilebot.IR.Types;
using Agilebot.IR.BasScript;
public class Test
{
public static async Task Main()
{
string controllerIP = "10.27.1.254";
// 初始化捷勃特机器人
Arm controller = new Arm(controllerIP);
// 连接捷勃特机器人
StatusCode code = await controller.Connect();
Console.WriteLine(code != StatusCode.OK ? code.GetDescription() : "Successfully connected.");
// 生成脚本程序
BasScript script = new BasScript("test");
code = script.BasLogical.WHILE(IOType.DO, 1, OtherType.IO_STATUS, IOStatus.ON);
code = script.BasMotion.MoveJoint(MovePoseType.PR, 1, SpeedType.VALUE, 25, SmoothType.FINE);
code = script.BasLogical.END_WHILE();
// 执行脚本程序
code = controller.Execution.ExecuteBasScript(script);
// 关闭连接
code = controller.Disconnect();
Console.WriteLine(code != StatusCode.OK ? code.GetDescription() : "Successfully disconnected.");
}
}4.10.3.7 SWITCH 多分支选择指令
| 方法名 | BasScript.BasLogical.SWITCH(param, index) |
|---|---|
| 描述 | 添加一个逻辑 SWITCH 语句到脚本中 |
| 请求参数 | param : 参数,类型为 RegisterType 或 IOType index : 参数的索引 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.3.8 CASE 分支指令
| 方法名 | BasScript.BasLogical.CASE(param, value) |
|---|---|
| 描述 | 添加一个逻辑 CASE 语句到脚本中 |
| 请求参数 | param : 参数,类型为 RegisterType、IOType 或 OtherType value : 值,类型为索引、数值、字符串 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.3.9 DEFAULT 默认分支指令
| 方法名 | BasScript.BasLogical.DEFAULT() |
|---|---|
| 描述 | 添加一个逻辑 DEFAULT 语句到脚本中 |
| 请求参数 | 无 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.3.10 END_SWITCH 结束多分支选择指令
| 方法名 | BasScript.BasLogical.END_SWITCH() |
|---|---|
| 描述 | 结束逻辑 SWITCH 语句 |
| 请求参数 | 无 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.3.11 SKIP_CONDITION 跳过条件指令
| 方法名 | BasScript.BasLogical.SKIP_CONDITION(param1, index, param2, value, operatorType) |
|---|---|
| 描述 | 添加一个逻辑 SKIP CONDITION 语句到脚本中 |
| 请求参数 | param1 : 第一个参数,类型为 RegisterType 或 IOType index : 参数一的索引 param2 : 第二个参数,类型为 RegisterType、IOType 或 OtherType value : 值,类型为索引、数值、字符串或 IOStatus operatorType : 布尔操作符,默认为等于 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.3.12 GOTO 跳转指令
| 方法名 | BasScript.BasLogical.GOTO(index) |
|---|---|
| 描述 | GOTO 跳转语句 |
| 请求参数 | index : 目标标签的索引 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.3.13 LABEL 标签指令
| 方法名 | BasScript.BasLogical.LABEL(index) |
|---|---|
| 描述 | LABEL 语句 |
| 请求参数 | index : 标签的索引 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.3.14 BREAK 跳出循环指令
| 方法名 | BasScript.BasLogical.BREAK() |
|---|---|
| 描述 | BREAK 语句 |
| 请求参数 | 无 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.3.15 CONTINUE 跳过循环指令
| 方法名 | BasScript.BasLogical.CONTINUE() |
|---|---|
| 描述 | CONTINUE 语句 |
| 请求参数 | 无 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.4 BasStructure 结构指令子类
BasStructure 子类包含所有结构控制相关的方法,用于构建结构控制指令序列。
4.10.4.1 WAIT 等待条件指令
| 方法名 | BasScript.BasStructure.WAIT(RegisterType param1 , int index , ValueType param2 , object value , BooleanOperator operatorType = BooleanOperator.EQ) |
|---|---|
| 描述 | 等待条件指令,执行 WAIT 指令只有当条件满足时,程序才能继续向下执行,否则一直等待直到条件满足为止,对应机器人程序编写中的 WAIT COND 等待条件语句 |
| 请求参数 | param1 : RegisterType 第一个参数(寄存器或 IO 信号) index : int 参数 1 的索引 param2 : ValueType 第二个参数(寄存器、IO 信号或其他类型) value : object 参数 2 的索引或值 operatorType : BooleanOperator 逻辑运算符,默认为等于 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.4.2 WAIT_TIME 等待时间指令
| 方法名 | BasScript.BasStructure.WAIT_TIME(ValueType param , double value ) |
|---|---|
| 描述 | 等待时间指令,执行 WAIT TIME 指令,机器人等待指定的时间后继续执行后续指令,对应机器人程序编写中的 WAIT TIME 等待时间语句 |
| 请求参数 | param : ValueType 参数类型(R 寄存器或数值) value : double 时间值,单位:sec |
| 返回值 | StatusCode: 函数执行结果 |
4.10.4.3 PAUSE 暂停指令
| 方法名 | BasScript.BasStructure.PAUSE() |
|---|---|
| 描述 | PAUSE 语句 |
| 请求参数 | 无 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.4.4 ABORT 中断指令
| 方法名 | BasScript.BasStructure.ABORT() |
|---|---|
| 描述 | ABORT 语句 |
| 请求参数 | 无 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.4.5 CALL 同步调用程序指令
| 方法名 | BasScript.BasStructure.CALL(name) |
|---|---|
| 描述 | CALL 同步调用程序 |
| 请求参数 | name : 程序名 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.4.6 RUN 异步调用程序指令
| 方法名 | BasScript.BasStructure.RUN(name) |
|---|---|
| 描述 | RUN 异步调用程序 |
| 请求参数 | name : 程序名 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.4.7 LOAD 加载程序指令
| 方法名 | BasScript.BasStructure.LOAD(param, value) |
|---|---|
| 描述 | LOAD 载入程序 |
| 请求参数 | param : 参数,R 寄存器、SR 寄存器、数值或字符串 value : 参数的值,数值或字符串 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.4.8 UNLOAD 卸载程序指令
| 方法名 | BasScript.BasStructure.UNLOAD(param, value) |
|---|---|
| 描述 | UNLOAD 卸载程序 |
| 请求参数 | param : 参数,R 寄存器、SR 寄存器、数值或字符串 value : 参数的值,数值或字符串 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.4.9 EXEC 执行程序指令
| 方法名 | BasScript.BasStructure.EXEC(param, value) |
|---|---|
| 描述 | EXEC 执行程序 |
| 请求参数 | param : 参数,R 寄存器、SR 寄存器、数值或字符串 value : 参数的值,数值或字符串 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.5 BasSocket Socket 通信子类
BasSocket 子类包含所有 Socket 通信相关的方法,用于构建 Socket 通信指令序列。
4.10.5.1 OPEN 打开 socket 连接指令
| 方法名 | BasScript.BasSocket.OPEN(int index ) |
|---|---|
| 描述 | 使用 Socket Open 指令创建一个 Server 并等待 Client 连接,对应机器人程序编写中的 SOCKET OPEN 打开 socket 连接 |
| 请求参数 | index : int SK 寄存器序号 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.5.2 CLOSE 关闭 socket 连接指令
| 方法名 | BasScript.BasSocket.CLOSE(int index ) |
|---|---|
| 描述 | 关闭指定的 socket 连接,对应机器人程序编写中的 SOCKET CLOSE 关闭 socket 连接 |
| 请求参数 | index : int SK 寄存器序号 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.5.3 CONNECT 连接 socket 指令
| 方法名 | BasScript.BasSocket.CONNECT(int index ) |
|---|---|
| 描述 | 使用 Socket Connect 指令连接到指定的 socket 服务器,对应机器人程序编写中的 SOCKET CONNECT 连接 socket |
| 请求参数 | index : int SK 寄存器序号 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.5.4 SEND 发送 socket 数据指令
| 方法名 | BasScript.BasSocket.SEND(int index , StrType msgType , object value ) |
|---|---|
| 描述 | 使用 Socket Send 指令向指定的 socket 连接发送数据,对应机器人程序编写中的 SOCKET SEND 发送数据 |
| 请求参数 | index : int SK 寄存器序号 msgType : StrType 消息类型 value : object 消息内容或序号 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.5.5 RECV 接收 socket 数据指令
| 方法名 | BasScript.BasSocket.RECV(int index , int msgLength , StrType msgType , object value ) |
|---|---|
| 描述 | 使用 Socket Recv 指令从指定的 socket 连接读取字符,可以指定最大长度,对应机器人程序编写中的 SOCKET RECV 接收数据 |
| 请求参数 | index : int SK 寄存器序号 msgLength : int 消息最大长度 msgType : StrType 消息类型 value : object 消息内容或序号 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.6 BasModbus Modbus 通信子类
BasModbus 子类包含所有 Modbus 通信相关的方法,用于构建 Modbus 寄存器读写指令序列。
4.10.6.1 READ_MH 读取 Modbus 保持寄存器指令
| 方法名 | BasScript.BasModbus.READ_MH(int index , int id , int address , int length , int rIndex ) |
|---|---|
| 描述 | 读取 Modbus 保持寄存器指令,对应机器人程序编写中的 READ_MH 读取 Modbus 保持寄存器 |
| 请求参数 | index : int 通道序号 id : int Modbus ID address : int 寄存器起始地址 length : int 寄存器长度,即要读取的寄存器数量 rIndex : int 写入结果的 R 寄存器起始序号 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.6.2 READ_MI 读取 Modbus 输入寄存器指令
| 方法名 | BasScript.BasModbus.READ_MI(int index , int id , int address , int length , int rIndex ) |
|---|---|
| 描述 | 读取 Modbus 输入寄存器指令,对应机器人程序编写中的 READ_MI 读取 Modbus 输入寄存器 |
| 请求参数 | index : int 通道序号 id : int Modbus ID address : int 寄存器起始地址 length : int 寄存器长度,即要读取的寄存器数量 rIndex : int 写入结果的 R 寄存器起始序号 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.6.3 WRITE_MH 写入 Modbus 保持寄存器指令
| 方法名 | BasScript.BasModbus.WRITE_MH(int index , int id , int address , int length , ValueType valueType , int value ) |
|---|---|
| 描述 | 写入 Modbus 保持寄存器指令,对应机器人程序编写中的 WRITE_MH 写入 Modbus 保持寄存器 |
| 请求参数 | index : int 通道序号 id : int Modbus ID address : int 寄存器起始地址 length : int 寄存器长度,即要写入的寄存器数量 valueType : ValueType 值类型 value : int 值或 R 寄存器起始索引 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.7 BasVision 视觉指令子类
BasVision 子类包含所有视觉相关的方法,用于构建视觉程序指令序列。
4.10.7.1 FIND 寻找视觉程序指令
| 方法名 | BasScript.BasVision.FIND(string name ) |
|---|---|
| 描述 | 执行视觉寻找程序,对应机器人程序编写中的 VISION FIND 寻找视觉程序 |
| 请求参数 | name : string 视觉程序名称 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.7.2 GET_OFFSET 获取视觉程序偏移量指令
| 方法名 | BasScript.BasVision.GET_OFFSET(string name , int index , int labelIndex ) |
|---|---|
| 描述 | 获取视觉程序执行后的偏移量,对应机器人程序编写中的 VISION GET OFFSET 获取视觉程序偏移量 |
| 请求参数 | name : string 视觉程序名称 index : int 视觉寄存器索引 labelIndex : int 标签索引 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.7.3 GET_QUANTITY 获取视觉程序结果指令
| 方法名 | BasScript.BasVision.GET_QUANTITY(string name , int index ) |
|---|---|
| 描述 | 获取视觉程序执行后的结果数量,对应机器人程序编写中的 VISION GET QUANTITY 获取视觉程序结果 |
| 请求参数 | name : string 视觉程序名称 index : int 结果存储的 R 寄存器索引 |
| 返回值 | StatusCode: 函数执行结果 |
4.10.8 AssignValue 赋值指令(完整参数)
| 方法名 | BasScript.AssignValue(AssignType param1 , int index , AssignType param2 , object value , int optIndex = 0, int optValue = 0) |
|---|---|
| 描述 | 赋值指令,用于给寄存器、IO 信号等赋值,对应机器人程序编写中的 ASSIGN 赋值语句 |
| 请求参数 | param1 : AssignType 第一个参数(寄存器或 IO 信号) index : int 参数 1 的索引 param2 : AssignType 第二个参数(寄存器、IO 信号或其他类型) value : object 参数 2 的索引或值 optIndex : int 参数 1 为 PR_ELEMENT 时的额外索引,默认 0 optValue : int 参数 2 为 PR_ELEMENT 时的额外索引或 value 为 IOStatus.PULSE 时的脉冲值,默认 0 |
| 返回值 | StatusCode: 赋值指令执行结果 |
4.10.9 AssignValue 赋值指令(简化参数)
| 方法名 | BasScript.AssignValue(AssignType param , int index , object value ) |
|---|---|
| 描述 | 赋值指令(简化参数),用于给寄存器、IO 信号等赋值,对应机器人程序编写中的 ASSIGN 赋值语句 |
| 请求参数 | param : AssignType 参数类型(寄存器或 IO 信号) index : int 参数索引 value : object 值(IOStatus、double 或 string) |
| 返回值 | StatusCode: 赋值操作执行结果 |
示例代码
cs
using Agilebot.IR;
using Agilebot.IR.Types;
using Agilebot.IR.BasScript;
public class Test
{
public static async Task Main()
{
string controllerIP = "10.27.1.254";
// 初始化捷勃特机器人
Arm controller = new Arm(controllerIP);
// 连接捷勃特机器人
StatusCode code = await controller.Connect();
Console.WriteLine(code != StatusCode.OK ? code.GetDescription() : "Successfully connected.");
// 生成脚本程序
BasScript script = new BasScript("test");
code = script.BasMotion.MoveJoint(MovePoseType.PR, 1, SpeedType.VALUE, 25, SmoothType.FINE);
BasScript.ExtraParam param = new();
param.Acceleration(80);
code = script.BasMotion.MoveJoint(MovePoseType.PR, 2, SpeedType.VALUE, 50, SmoothType.FINE, extraParam: param);
// 执行脚本程序
code = controller.Execution.ExecuteBasScript(script);
// 关闭连接
code = controller.Disconnect();
Console.WriteLine(code != StatusCode.OK ? code.GetDescription() : "Successfully disconnected.");
}
}4.10.10 SetParam 设置参数指令
| 方法名 | BasScript.SetParam(ParamType type , ValueType valueType , object value ) |
|---|---|
| 描述 | 设置参数指令,用于设置机器人的各种参数,对应机器人程序编写中的 SET PARAM 设置参数 |
| 请求参数 | type : ParamType 参数类型 valueType : ValueType 值类型 value : object 值 |
| 返回值 | StatusCode: 函数执行结果 |