54
北京智能佳科技有限公司 www.bjrobot.com 北京智能佳科技有限公司 Tel010-82488500 SUPER-M 命令使用手册 V2.10 第一章 Super-M 指令概要 第二章 Super-M 语法概要 第三章 声明命令解释 第四章 流控制命令解释 第五章 数字信号输入输出 第六章 内存指令 第七章 LED 模块 第八章 电机控制命令 第九章 音乐控制命令 第十章 外部通讯命令 第十一章 模拟信号处理命令 第十二章 Super-M 过程命令和其他 第十三章 指令描述

SUPER-M 命令使用手册 V2‘½令使用手册.pdf · 当算术运算和逻辑运算组合到一个式子里时,算术运算符优先于逻辑运算符. 逻辑运算符 逻辑运算符用来比较组合条件.计算结果返回true或false

  • Upload
    others

  • View
    15

  • Download
    0

Embed Size (px)

Citation preview

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    SUPER-M 命令使用手册 V2.10

    目 录

    第一章 Super-M 指令概要

    第二章 Super-M 语法概要

    第三章 声明命令解释

    第四章 流控制命令解释

    第五章 数字信号输入输出

    第六章 内存指令

    第七章 LED 模块

    第八章 电机控制命令

    第九章 音乐控制命令

    第十章 外部通讯命令

    第十一章 模拟信号处理命令

    第十二章 Super-M 过程命令和其他

    第十三章 指令描述

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    第一章 Super-M指令概要

    指令摘要 Super-M是一款独特的编程语言,用于机器人控制操作。使用Super-M,必须通过事先添加的一

    般BASIC编程语言的命令来控制机器人。

    (2)表示指令只能在MR-C2000系列控制器执行

    (3)表示指令只能在MR-C3000系列和Super-M控制器执行

    与声明、定义相关的指令

    DIM 声明变量

    AS 在声明变量时分配存储空间

    CONST 声明常量

    BYTE 声明变量时定义为byte类型

    INTEGER 声明变量时定义为integer类型

    流程控制指令

    IF 条件语句开始

    THEN 条件语句为真时执行下一条语句

    ELSE 条件语句为假时执行下一条语句

    ELSEIF 另一条条件语句开始

    ENDIF 条件语句结束

    FOR 循环语句开始

    TO 指定一条循环语句的循环范围

    NEXT 循环语句结束

    GOTO 无条件转移(分离程序流程)

    GOSUB 调用子程序

    RETURN 从子程序返回

    END 结束程序执行

    STOP 停止程序执行

    RUN 连续执行程序

    WAIT 等待知道程序完成

    DELAY 延迟程序执行指定的时间

    (2)BREAK 暂停程序执行并转换到调试模式

    数字信号输入输出指令

    IN 从输入端口读取信号

    OUT 发送信号到输出端口

    BYTEIN 从输入端口读取比特信号

    BYTEOUT 发送比特信号到输出端口

    (2)INKEY 从输入端口输入的键

    STATE 输出端口状态

    PULSE 发送脉冲信号到输出端口

    TOGGLE 反转输出端口状态

    (3)KEYIN 接收模拟键盘输入

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    内存指令

    PEEK 从控制器RAM读取数据

    POKE 写数据到控制器RAM

    ROMPEEK 从控制器外部EEPROM RAM读取数据

    ROMPOKE 写数据到控制器EEPROM RAM

    LCD指令

    LCDINIT 初始化LCD模块

    CLS 清楚LCD模块所有字符

    LOCATE 在LCD模块布置字母(设置位置)

    PRINT 在LCD模块显示字母

    FORMAT 设置LCD模块显示格式

    CSON 在LCD模块中显示光标

    CSOFF 隐藏光标

    CONT 设置字母对比

    DEC 输出十进制数到LCD

    HEX 输出十六进制数到LCD

    (3)BIN 输出二进制数到LCD

    操作数相关操作

    AND 使用逻辑与条件表达式

    OR 使用逻辑或条件表达式

    MOD 求余

    XOR 使用逻辑异或条件表达式

    (3)NOT 求反所有位

    电机控制指令

    ZERO 设置伺服电机0点(自然角度)

    MOTOR 开启伺服电机输出端口

    MOTOROFF关闭伺服电机输出端口

    MOVE 同时操作多个伺服电机

    SPEED 设置伺服电机速度

    (2)ACCEL 设置伺服电机加速度

    DIR 设置伺服电机方向

    PTP 开启/关闭同时控制操作

    SERVO 控制伺服电机

    PWM 设置直流电机脉冲宽度控制

    (2)FASTSERVO 以最大速度操作伺服电机

    (3)HIGHSPEED 开启/关闭伺服电机的高速模式

    (3)MOVEPOS 根据声明的位置移动伺服电机组

    (3)POS 设置机器人特定姿势

    (3)FPWM 改变脉冲宽度和频率

    (3)MOVE24 同时操作所有24个伺服电机

    (3)INIT 设置初始移动姿态

    (3)MOTORIN 读取伺服电机当前位置值

    (3)AIMOTOR 设置使用AI电机

    (3)AIMOTOROFF 退出AI电机

    (3)AIMOTORIN 读取AI电机当前位置值

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    (3)SETON 设置使用setup功能

    (3)SETOFF 退出setup功能

    (3)ALLON 对所有伺服电机setup功能

    (3)ALLOFF 退出对所有伺服电机的setup功能

    (3)GETMOTORSET 读取伺服电机当前值并保持当前位置

    参数分配电机组

    (3)G6A 将0-5号电机分配给A组

    (3)G6B 将6-11号分配给B组

    (3)G6C 把12-17分配给C组

    (3)G6D 把18-23分配给D组

    (3)G6E 把24-29分配给E组

    (3)G8A 把0-7分配给A组

    (3)G8B 把8-15分配给B组

    (3)G8C 把16-23分配给C组

    (3)G8D 把24-31分配给D组

    (3)G12 分配0-11号伺服电机

    (3)G16 分配0-15号伺服电机

    (3)G24 分配0-23号伺服电机

    (3)G32 分配0-31号伺服电机

    声音控制指令

    (2)BEEP 用PIEZO发出警告声

    (2)SOUND 用PIEZO发出频率声

    (2)PLAY 用PIEZO播放歌曲

    (3)MUSIC 用PIEZO播放音乐

    (3)TEMPO 设置声音节奏

    外部通讯指令 (2)RX 通过RX端口接收RS232信号

    (2)TX 通过TX端口传输RS232信号

    (2)MINIIN 通过mini通讯端口接收mini总线信号

    (2)MINIOUT 通过mini通讯端口传输mini总线信号

    (3)ERX 通过RX端口接收RS232信号

    (2)ETX 通过TX端口传输RS232信号

    模拟信号处理指令

    (3)AD 从AD端口读取模拟信号

    (3)REMOCON 从红外线远程控制读取按键值

    (3)SONAR 从超声波端口读取距离

    (3)RCIN 从RC(遥控器)读取输入值

    (3)GYRODIR 设置陀螺仪(gyro)的方向

    (3)GYROSET 把一个陀螺仪分配给一个伺服电机

    处理指令

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    ON...GOTO 根据一个变量的值跳过

    其他指令

    RND 生产一个随机数

    REMARK 建立一个文本的入口

    指令

    '$DEVICE 设置控制器由正在运行的程序操作

    (3)'$LIMIT 限制伺服电机运行范围

    第二章 Super-M语法概要

    因为Super-M语法是基于基本的BASIC编程语言,所以大部分Super-M与BASIC语法是相似的或者

    相同的。在这章中,将会解释Super-M的基本语法。

    标识符集

    Super-M标识符集由英语字母、数字和特殊符号组成。这些在Super-M有特殊意义的符号如

    下表所示

    符号 描述

    + 加

    - 减

    * 乘

    / 除

    % 求余

    . 位指示

    & 数字

    ?? 文本

    ?? 字符串

    : 标志

    = 相等或替换

    < 不相等

    > 不相等

    > 位右移

    表达式和运算符 表达式由非变量,变量,数加上运算符计算得出的值组成.一个运算符对给值执行算术或逻

    辑运算.在Super-M中,运算符分类如下表所示.

    分类 功能

    算术运算符 执行算术运算

    关系运算符 比较数值大小

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    逻辑运算符 比较组合条件或执行位操作

    位运算符 操作位或执行位运算

    算术运算符

    算术运算符是执行计算的标识符.和一般BASIC语言一样,+,-,*,/,%(或MOD)在Super-M中可

    以使用,但在Super-M和BASIC间有些不同的地方.

    (1)运算符中没有优先级

    在Super-M,不能使用圆括号()

    例:A=1,B=2,C=3

    BASIC中:

    A+B*C=1+2*3=1+6=7(在BASIC,如果要先执行+再执行*,需要使用圆括号())

    Super-M:中

    A+B*C=1+2*3=3*3=9

    (2)复杂的数学计算会产生意想不到的错误

    所以,数学计算应该分解为2次或3次计算.

    例:

    D=A*B+C (通过)

    F=A*B/C*D+E (避免复杂算术计算)

    (3)Super-M只支持byte类型和整数类型.输出的小数点将被忽略.

    求余计算使用%或MOD,输出为余数.

    关系运算符

    关系运算符用来比较两个值.输出为TRUE或FALSE.输出用来在IF语句中控制程序流向.

    运算符 关系 表达式

    = 等于 X = Y

    不等于 X Y

    < 小于 X < Y

    > 大于 X > Y

    = Y

    当算术运算和逻辑运算组合到一个式子里时,算术运算符优先于逻辑运算符.

    逻辑运算符

    逻辑运算符用来比较组合条件.计算结果返回 TRUE或 FALSE. 输出用来在 IF语句中控制程

    序流向.

    运算符 含义

    AND 与

    OR 或

    XOR 异或

    每个运算符的输出如下表所示.表中,“T”代表 TRUE,“F”代表 FALSE

    --------------------------------------------

    X,Y的值 | 输出

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    --------------------------------------------

    X | Y | X AND Y | X OR Y | X XOR Y

    -----|-----|-----------|----------|---------

    T | T | T | T | F

    -----|-----|-----------|----------|---------

    T | F | F | T | T

    -----|-----|-----------|----------|---------

    F | T | F | T | T

    -----|-----|-----------|----------|---------

    F | F | F | F | F

    --------------------------------------------

    位运算符

    在机器人控制器使用一些变量中以简化通过输入输出端口进行位控制.位运算符就对这些

    变量执行计算.

    对一位的计算有位或(OR),位与(AND),位异或.在 Super-M中,运算符左移“”

    和“.”用来移动一位到一个指定位置.

    设 A 的值为 33(二进制为 00100001),B 值为 15(二进制为 00001111),使用相应的运算符时

    得到以下结果.

    运算符 输出

    A AND B 1(00000001)

    A OR B 47(00101111)

    A XOR B 46(00101110)

    A > 1 16(00010000)

    A.0 1(A 的第 0位)

    同一条指令使用多个运算符时,将以以下顺序计算

    (1) 算术运算/位运算

    (2) 关系运算

    (3) 逻辑运算

    数据,变量/常量和其他语法解释 由于 Super-M用来控制硬件,所以不支持在 BASIC中使用的与串相关的变量和常量.

    数据类型

    有字节(byte)类型数据和整型(integer)数据.数据类型的范围如下表所示.

    数据类型 大小 范围

    BYTE 1byte(8bit) 0-255

    INTEGER 2byte(16bit) 0-65535

    Super-M不支持负数。所以当“+”号或“-”号加在一个数前面时,运算会产生错误. 必须使用合适的数据类型声明变量.

    真数

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    由于 Super-M 用来控制硬件,使用十六进制数或其他类型比使用十进制更方便.在 Super-M

    中,可以使用二进制数(Bin),八进制数(Oct),十进制数(Dec),十六进制数(Hex).

    真数 声明 可使用的数字 例

    Bin &B 0,1 &B111101

    Oct &O 0,...,7 &O75

    Dec N/A 0,...,9 61

    Hex &H 0,...9,A,...,F &H3D

    常量和变量

    常量在程序执行中值不改变.Super-M可定义 byte类型和 integer类型的常量.常量类型根

    据数的范围自动确定.一旦常量被定义,就不能被重定义.定义常量对程序大小没有影响.当一个

    数频繁使用时定义为常量能简化程序的修改.

    例:

    CONST OFF = 0

    CONST motor_1 = 3

    CONST motor_1speed = 200

    微机器人控制器的变量有限,因此变量声明应设计为在符合对象的情况下使变量占用内存

    最小。

    DIM motor_1_delay AS INTEGER

    DIM sensor_left AS BYTE

    声明常量或变量时,遵守以下规则。

    1、 首字母用英语字母,“_”可用在变量名和常量名中。

    2、 常量名和变量名长度不可超过 64.

    3、 相同常量名和变量名只能声明一次,大小写无区别

    4、 声明常量大于 65536会出错

    位操作

    Super-M 中变量可按位操作。按位操作变量使用位操作符“.”。0~7(byte 变量)或 0~15

    (integer变量)。只有数字和常量能使用。

    例:

    DIM A AS INTEGER

    CONST BIT_2 = 2

    A.1 = 1

    A._BIT_2 = 0

    A.3 = IN(1) ‘从端口 1读数并赋给整型变量 A的第三位

    OUT 2,A.1 ‘将 A的第一位的值传给端口 2

    解释说明

    代码的解释应该被分散在程序,可以高效地管理和创建。为了插入一个解释说明,符号(‘)

    或“备注”命令是必须使用的。解释在程序里的位置不会影响程序的执行。

    替换语句(=)

    替换语句用来替换变量的值。使用“=”号,值在左边,变量、字母串、计算公式在右边。

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    例:

    A = B

    A.1 = 1

    A = ADIN(0)

    A = 3 * 2 – 1

    A = C + B – A

    A = “1”

    行标记

    行标记用来指示程序里的位置。可以用字母和数字。规则如下:

    1、标记不能超过 64个字符长,第一个字符必须为英语字母;

    2、标记符后跟“:”;

    3、0~65536的数字可用来做标记名字。不需“:”;

    4、标记符不能重复,大小写无区别。

    通常标记符用来控制程序流,如 GOTO和 GOSUB。

    例:

    DIM A AS INTEGER

    START:

    A = IN(0)

    IF A = 0 THEN

    GOTO START

    ELSE

    GOSUB 10

    END

    GOTO START

    10 OUT 1,0

    DELAY 100

    OUT 1,1

    RETURN

    第三章 声明命令解释

    DIM...AS DECLARE...AS

    命令格式:

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    1、单变量声明:

    DIM [变量名] AS [变量类型]

    2、多变量声明:

    DIM [变量名] AS [变量类型], [变量名] AS [变量类型]„

    命令解释:

    变量必须用 DIM 声明。必须用 AS声明类型。变量名大小写无区别。不能重复。

    变量用来处理传感器的值或模拟信号转换的值。因此要使用合适的变量,程序更有效率。

    各机器人控制器可使用的变量数不同。

    MR-C2000可使用变量大小为 30字节,MR-C3000和 Super-M为 256字节。

    命令示例:

    DIM I AS INTEGER

    DIM J AS BYTE

    CONST

    命令格式:

    -英文句子:CONST [常量名] = 数字

    命令解释:

    给数字声明常量简化编程过程。优点省略

    命令示例:

    CONST OFF = 0

    CONST A = &HB1001

    第四章 流控制命令解释

    IF...THEN...

    命令格式:

    1、单条件

    IF [条件] THEN

    [条件为真时的语句]

    2、多条件:

    IF [条件 1] THEN

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    [条件 1为真时的语句]

    ELSEIF [条件 2] THEN

    [条件 2为真的语句]

    ELSE

    [条件 1和 2都为假的语句]

    ENDIF

    命令解释:

    当执行 IF„Then 条件时,IF 条件将会被选择。如果条件为真时,THEN 解释将会被执行。

    如果条件为假时,将会被选择和执行每个顺序的 ELSEIF 条件,否则 ELSE 条件解释将会被

    执行。

    在这,ELSEIF能被包含或者必须的。

    在 Super-M中,IF„THEN句子是很重要的,作为一个变量,按照外部输入和保持外部值来

    操作。这个条件性语句根据变量值来判断,机器人根据这个值来移动。

    命令示例:

    执行的条件和语句是非常简单的,两者都可以包括在相同的行

    IF A>0 THEN B=5

    IF A<5 THEN B=0 ELSE B=1

    当使用一个关系运算符时,IF句子的条件公式可以使用 2种条件。

    IF A>0 AND A<5 THEN B=3

    IF A=7 OR A=9 THEN B=1

    IF复杂句示例

    IF A=1 THEN

    B=2

    C=3

    ELSEIF A=3 AND A=5 THEN

    B=1

    B=2

    ELSEIF A=8 THEN

    B=6

    C=0

    ELSE

    B=0

    C=0

    END IF

    FOR...NEXT

    命令格式:

    -英文句子:FOR [循环变量] = [START] TO [END]

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    [循环语句]

    NEXT [循环变量]

    数字、常量、变量可用来做 START、END

    END必须大于 START.

    可以从循环内跳到循环外,反之不行。

    在循环变量、START、END中使用的变量在 FOR...NEXT执行中不能被人为改变

    命令解释:

    [循环变量]计算循环数。[Start]是循环变量的初始值,[end]是循环变量的结束值。[Start]

    和[End]都可以使用图表,变量或常量。

    在 Super-M 中,[End]必须比[Start]大。Super-M 渐渐增加循环变量。这种规律使用了

    FOR„NEXT句式。

    一个 FOR„NEXT句子能够用到另一个 FOR„NEXT句中。

    FOR I=1 到 10

    FOR J=1 到 5

    „„

    NEXT J

    NEXT I

    当使用几个 FOR„NEXT句子时,NEXT循环变量的顺序不能更改。

    错误 正确

    FOR I=1 到 10 FOR I=1 到 10

    FOR J=1 到 5 FOR J=1 到 5

    „„„ „„„

    NEXT I NEXT J

    NEXT J NEXT I

    即使在以上错误例中循环变量的顺序已经改变,当生成目标代码时,也不会发生错误,

    但是一旦上传到机器人控制器上就会发生意想不到的错误。

    FOR„NEXT句子可以从内部退出,但却不可以从外部输入。

    循环变量使用变值,在执行 FOR„NEXT句子过程中,[Start]和[End]不

    能随意改变。

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    命令示例:

    连接 LED 和控制器端口#0,使其闪烁 5次。

    DIM A AS BYTE 声明变量用于重复句子 FOR A=1 到 5 重复五次 OUT 0,0 打开 LED与端口#0的连接 DELAY 100 拖延 100 OUT 0,1 关闭 LED与端口#0的连接 NEXT A

    GOTO

    命令格式:

    GOTO [行标志符]

    命令解释:

    GOTO 命令以跳到一个特定的行代码改变程序流,过度使用 GOTO 命令会使程序复杂化,所

    以不要频繁使用。

    命令示例:

    DIM I AS INTEGER

    DIM J AS BYTE

    I=7

    IF I=6 THEN GOTO L1

    „„„

    L1: J=1

    OUT I,J

    GOSUB...RETURN

    命令格式:

    GOSUB [行标志符] „„„

    [行标志符]:„„„

    „„„

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    返回

    命令解释:

    子程序内可以调用其他子程序,MR-C2000可嵌套 4次,MR-3000为 5 次,再多将会引起错误。

    命令示例:

    DIM LED_PORT AS INTEGER

    LED_PORT=1

    START:„„„

    „„„

    GOSUB LED_TOGGLE

    „„„

    GOTO START

    END

    LED_TOGGLE:

    TOGGLE LED_PORT

    RETURN

    END 结束程序运行

    命令格式: END 命令解释:

    打开机器人控制器 2 秒后,保存在 EEPROM 里的程序将会执行。如果在子程序结束时或者

    在程序执行句子时不使用 END命令,程序将会持续运行。所以为防止这种情况,在程及子

    程序中总是包含 END命令。

    命令示例:

    完成程序的执行

    DIM A AS BYTE

    START:A=IN(0)

    IF A=1 THEN END

    „„„

    GOTO START

    生成子程序结构

    DIM A AS BYTE

    A=BYTEIN (0)

    IF A=1 THEN

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    GOSUB L1

    ELSEIF A=3 THEN

    GOSUB L2

    ELSEIF A=4 THEN

    GOSUB L3

    ELSE

    GOSUB L4

    ENDIF

    „„„

    END

    L1:„„„„„

    RETURN

    L2:„„„„

    RETURN

    L3:„„„„„

    RETURN

    L4:„„„„„„

    RETURN

    STOP/RUN

    命令格式:STOP/RUN 命令解释:此命令将会使程序是停止或是持续运行。程序停止后,用 RUN将初始化程序。

    WAIT

    命令 格式: WAIT 命令解释:

    控制操作系统有最新的实时程序控制。

    当一个程序执行时,下一条程序将同时执行,不会等待上一条程序停止。用 WAIT 使当前

    程序完成后再执行下一条。

    命令示例:

    例 1: 移动 6个马达后,输出端口#7和#8

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    MOVE 120,100,140,90,70,150

    WAIT

    OUT 7,1

    OUT 8,1

    例 2: 操作 6个马达后输出端口#8但是同时输出#7

    MOVE 120,100,140,90,70,150

    OUT 7,1

    WAIT

    OUT 8,1

    DELAY

    命令格式:

    DELAY [延迟时间]

    命令解释:

    这个命令将会延迟程序的执行时间。MR-C2000延迟时间单位为 10ms,MR-C3000和 Super-M

    为 1ms。图表,常量或变量可以用来[延迟时间]。

    命令示例:

    MR-C2000 系列控制器:

    Delay 10 用于延迟 100ms(10ms*10=100ms=0.1sec)

    MR-C3000 系列和 Super-M控制:

    Delay 500 用于延迟 500ms(1ms*500=500ms=0.5sec)

    BREAK

    命令格式:BREAK

    命令解释:

    暂停程序执行转换到调试模式

    暂停时,控制器内存传回到 PC,确保两者相连,否则程序将停止并保持该状态。

    在 MR-C3000和 Super-M中无用,如果使用 MR-C3000和 Super-M,可直接用软件调试模式

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    命令示例:

    „„„

    BREAK 暂停程序执行 „„„„„

    ACTION no

    命令格式:ACTINO [No.]

    命令解释:根据动作号执行模板中描述的动作.最大 32个动作可用。

    命令示例:

    ACTION 3 执行动作 3 ACTION 5 执行动作 5 ACTION 23 执行动作 23

    注意:此命令只适用于 MR-C3024 和 robonova-1, Super-M.

    goto AUTO

    命令解释:转移到程序模块

    命令示例:

    Goto AUTO 移动到程序模块

    注意:此命令只适用于 MR-C3024 和 robonova-1, Super-M.

    第五章 Super-M数字信号输入输出说明

    在 MR-C2000 中,有 12 个数字输入输出端口,在 MR-C3000和 Super-M中有 40 数字输

    入输出口。这些端口各执行特定的不同功能。想获取数字 I/O 端口的更多信息,请参

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    考控制器解释部分。

    IN():从端口读取数字信号值

    命令格式:IN([端口号])

    命令解释:通过端口输入的数字信号值将被保存为一个变量,输入的值可以为 0 或 1,

    可以使用字节或整数类型的变值。此时,只有最后的第 0 位的值是有效的。

    最有效的方式是使用字节类型的变量。

    命令示例:

    DIM A AS BYTE

    A=IN(0)

    从 0号端口读信号(开关或传感器并保存为变量 A)

    OUT: 输出数字信号到端口

    命令格式:OUT [端口号],[输出值]

    命令解释:控制器通过一个端口发送信号。当发送一个 0(低)值,将输出 0V 信号。发

    送 1(高)值时,输出+5V信号。输出值可以是数字(0或 1)常量以及变量。

    命令示例:这个例子是用来演示测试输入/输出端口。一个按钮连接到端口 0 和一个 LED

    连接到端口 3

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    BYTEIN():从字节单元输入端口读信号

    命令格式:BYTEIN([字节端口号])

    命令解释:机器人控制器端口可以作为一个单位一个 IN/OUT 指令位输入/输出。在某

    些情况下,信号必须作为一个单元输入输出。在这里,一个字节单元端口

    有 8 个端口。

    MR-C2000系列控制器

    MR-C3000系列和 Super-M控制器

    使用 BYTEIN命令,是通过字节的输入端口,输入信号值保存为一个变量。必须 声明为一

    个字节或整型变量的类型。

    命令示例:

    A=BYTEIN(0) ‘将#0~#7端口信号存到变量 A中’

    BYTEOUT (): 输出一个字节单位信号到端口

    命令格式:BYTEOUT [字节端口号],[输出值]

    命令解释:通过字节单元端口输出信号值。[字节端口号]可以是数字,常量或变量。对于[输

    出值]可以常量,字节变量或者 0-255之间任意值。

    命令示例:

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    INKEY:从输入端口读取一个键值 2000

    命令格式:INKEY([端口号])

    命令解释:当开启一个动作,它实际会进行几百甚至几千次机械动作。这种现象被称为震

    荡(chattering)。震荡有可能会 引起一系列错误,因此一套保护电路来保证

    其正常运行是非常必要的。在机器人控制器中,这种保护功能是包含在软件中

    的,使用 INKEY来操作这个软件。

    命令示例:

    把连在端口 0的开关的状态保存在变量 A

    DIM A AS BYTE

    A = INKEY(0)

    STATE():读取输出端口当前值

    命令格式:STATE([端口号])

    命令解释:如果发送信号后需要得到输出端口的状态值,使用 STATE,不要使用 IN

    命令示例:下面的程序是测试端口 1的输出状态值

    PULSE:发送脉冲信号到一个输出端口

    命令格式:PULSE [端口号]

    命令解释:发送宽度为 5us的脉冲信号到输出端口,为外部设备提供信号。

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    端口号可使用数字,常量,变量。

    命令示例:

    PULSE 3 ‘发送脉冲信号到 3端口’

    TOGGLE:逆置输出端口的信号值(1变 0,0变 1)

    命令格式:TOGGLE [端口号]

    命令解释:反转输出端口输出信号。如果该端口的信号是 0(低)信号会逆转为 1(高)

    端口号可使用数字,常量,变量。

    命令示例:

    OUT 3,1 ‘发送信号 1到 3端口’

    TOGGLE 3 ‘逆置 3 端口的信号值’

    KEYIN(): 输入几个键(模拟键盘) 3000

    命令格式:KEYIN([模拟端口号],[键值])

    命令解释:从 AD转换端口(模拟端口)读取 16个键的值。

    0~7、常量、byte变量可用做模拟端口号。

    1~16、常量、byte变量可用作键值。

    键值范围为 0~16. 0表示没有按键,1-16表示按下

    命令示例:

    DIM K AS BYTE

    K=KEYIN(0,16) ‘输入键值 16,与 AD端口#0相连作为 K’

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    第六章 内存指令

    机器人控制器中有 CPU 和内存,因此它也算的上微机。在保存和计算程序过程中,内存起着至

    关重要的作用,机器人控制器的外部内存,是采用 EEPROM,用于保存用户程序,内存执行计算

    是在 CPU中进行的。

    内部内存也称为 RAM,由于机器人控制器 CPU 的特点,它同时也被称作寄存器。在一个程序创

    建的时候,内部内存和可用变量的数目息息相关。MR-C2000系列控制器有 30字节的变量空间,

    而 MR-C3000和 Super-M有 256字节的变量空间。其余内存作为机器人控制器内部使用,外部存

    储器与创建的程序大小是相关的。MR-C2000系列有 4KB,MR-C3000系列和 Super-M有 12K,32K,

    64K字节内存,这些主要取决于模型。

    PEEK():读取内部存储器的内容

    命令格式:PEEK([RAM域])

    命令解释:PEEK从内存中提取数据。若不知内存的确切结构,不要使用。

    MR-C3000和 Super-M可以用 0~65536、常量、byte变量

    MR-C2000可以用 0-255、常量或字节变量

    命令示例:

    DIM A AS BYTE

    A=PEEK(43) ‘输入 RAM区地址 43的值’

    POKE: 写数据到内部存储器

    命令格式:POKE [RAM域],[数据]

    命令解释:写入到内存。

    MR-C2000,0-255,常量或字节变量之间的数字可用

    MR-C3000和 Super-M,0~65536、常量、byte变量可用

    数字、常量、整型变量可用为[数据]

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    命令示例:

    POKE &h40,100 ‘在 RAM区地址 40写入 100’

    ROMPEEK(): 读取数据从外部存储器 EEPROM

    命令格式:ROMPEEK([ROM区域])

    命令解释:控制器用 EEPROM 保存程序和其他。ROMPEEK 和 ROMPOKE 功能控制外部存储器,

    可以用来保存数据。如果该区域已经包含数据,可能会出现一个致命的错误。

    [ROM 区域]可以是数字,变量或常量

    ROMPOKE:写数据到外部存储器 EEPROM

    命令格式:ROMPOKE [ROM区域],[数据]

    命令解释:控制器用 EEPROM保存程序和其他。ROMPEEK和 ROMPOKE功能控制外部存储

    器,可以用来保存数据。如果该区域已经包含数据,可能会出现一个致命

    的错误。

    [ROM区域]可以是数字,变量或常量

    [数据]应为 0~255,常数或字节变量

    第七章 LCD 模块

    与机器人控制器的配合使用而设计的液晶显示模块 MR-16202。液晶显示模块连接到 MR-C2000

    系列控制器的 6号端口,MR-C3000和 Super-M连接到指定的液晶端口。下面解释控制液晶显示

    模块的命令和显示字符串:

    LCDINIT: 初始化 LCD模块

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    命令格式:LCDINIT

    命令解释:液晶显示模块必须使用 LCDINIT 命令初始化,以防止出现不可预知的错误,当

    液晶显示模块的初始化成功后,所有字符将被擦除,光标将显示在左上角。

    命令示例:LCDINT ‘LED模块初始化’

    CLS:擦除字符液晶显示模块字符

    命令格式:CLS

    命令解释:使用 CLS命令删除所有字符显示在液晶显示模块,当 CLS 命令执行,将删除所

    有字符,光标将被显示在左上角。LCDINT和 CLS之间存在一定的差异,,在 CLS

    命令中,仅仅是字符被擦除,但在 LCDINT命令中,所有的信息,如内部变量,

    将全部被删除。

    命令示例:CLS ‘擦除 LCD模块上显示字符’

    LOCATE:指向液晶显示模块中一个字符的显示位置

    命令格式:LOCATE[x coordinate],[y coordinate]

    命令解释:locate命令用于在液晶显示模块的点 x和 y坐标,像下面的图片设置一个 16x2

    液晶显示模块的坐标。数字,常量和变量可以用 x和 y 坐标,但必须从 0开始。

    命令示例:

    PRINT:输出字符到 LCD模块

    命令格式:PRINT“[字符串]”,[numeral]/“[字符串]”,„„

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    命令解释:输出一个字符到光标当前所在位置,使用 PRINT 命令,字符串需要加

    “”来区分,[numberal]范围是 1-255(0 在此处不可用)。在 LCD

    模块,将显示字符对应的 ASCII码

    命令示例:

    以下是 16x2 液晶显示模块显示 ASCII 码的例子,字符代码

    依赖于正在使用的液晶显示模块的类型不同而不同。

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    FORMAT()

    DEC()

    HEX()

    BIN(): 指定的进制数字格式显示在液晶显示模块

    命令格式: FORMAT([变量],[输出类型],[位置点])

    命令解释: 当输出一个变量时,LCD 模块会按照一种特定的格式输出,必须紧跟 PRINT

    之后。

    命令示例:

    CSON()

    CSOFF():在 LCD 模块隐藏或者显示光标

    命令格式:COSN/CSOFF

    命令解释:在液晶显示模块中 CSON/CSOFF 命令用于显示或隐藏光标。一般情况下,液晶显示

    模块在初始化是隐藏光标。

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    命令示例:

    CONT:调整 LCD 对比度

    命令格式:CONT[contrast value]

    命令说明:液晶显示模块采用背光材质。字符以黑色显示。使用 cont命令,可以调

    整颜色的深浅。[对比度值]可以是数字,常量和变量。随着[contrast

    value]值得增加,字符将颜色将加重。初始值是默认是 7。

    命令示例:

    第八章 电机控制命令 机器人控制器可以控制伺服机和直流电动机。在直流电动机控制器可以控制速度,方向,此时

    无需点机输入输出命令。伺服电动机可旋转角度为-900 ~+ 90

    0 度。度在伺服电动机中应以 10~190

    来表示,因为在 Super-M 伺服电动机中不支持负数。

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    ZERO 设定伺服零点

    命令格式:

    MR-C2000 系列控制器: ZERO [motor 0 standard point],[motor 1 standard point],…,[motor 5 standard point]

    MR-C3000 系列和 Super-M控制器: ZERO [group pointing], [motor n standard point], …..

    命令解释:零点的取决于每一个伺服本身。由于产品自身缺陷。会导致一些零点可以达到 99

    或 98,其他零分能达到 101 或 102。此类错误可以通过 ZERO 命令来加以调整。一

    旦零点为每个伺服确定,它将标作为准角度的移动命令。零点的设置将被保存在

    EEPROM,以防止它被擦除在突然断电的情况下。

    在 MR-C2000 系列控制器中设置零点:

    1) 设定为所有伺服零点为 100 以便消除数据。

    2) 复位电动机方向。

    3) 先关闭然后打开。

    4) 使用联机功能移动电机到零(中心)点。

    5) 使用零点命令保存此刻位置为零点。

    例子 1:清除原有零点数据

    例子 2:重新置零点,保存零点。

    在 MR-C2000 系列控制器,设定程度的零点必须在 90~110

    0

    在 MR-C3000 系列和 Super-M控制器中设置零点:

    在 MR-C3000 和 Super-M控制器设置零点时、必须声明一组数据。

    ZERO G8B、80、120、115、80、117、88、95、120

    ˋ设置 8B(伺服电机端口#8~#15)的零点

    在 MR-C2000 系列控制器中,设置 2 点的度必须在 80~120 之间

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    MOTOR 设定伺服能够被使用

    命令格式:

    MR-C2000 系列控制器: MOTOR [motor number]

    MR-C3000 系列和 Super-M控制器: MOTOR [motor number]/[Specifying group]

    命令说明:

    在 MR-C2000 设定伺服系统:

    在 MR-C2000 系列控制器,有六端口(#0~5#)的伺服电机编号。可以被指定为 0~5。当想要使

    用所有伺服,只需将电机数字拨到 6。如果伺服器没有设置数字。那么它将不会工作。在[motor

    number]中,只有 0-6 之间数字可以使用。

    在 MR-C3000 和 Super-M设定伺服系统

    在 MR-C3000 系列和 Super-M 的控制器、32 个伺服机分配了 32 个端口。每个电机可指定[motor

    number]。

    [group pointing]用来分配给电机组。

    [motor number]可以取数字,常量或字节变量。

    命令举例:

    Ex1)MOTOR 0 ˋ使用伺服机 0 端口

    Ex2)MOTOR G6A ˋ使用伺服机 6A 组(端口 0~5).

    MOTOR G6C ˋ使用伺服机 6C 组(端口 12~17).

    Ex3)MOTOR G8A ˋ使用伺服机 8A 组(端口 0~7).

    Ex4)设置伺服机端口有效值 DIM I AS BYTE

    FOR I=0 TO 31 ˋ通过有效值 I,使用伺服机(端口 0~31) ˋ MOTOR I

    NEXT I

    Ex5)MOTOR G24 ˋˋ使用伺服机 24 组(端口 0~23)

    Ex6)MOTOR ALLON ˋˋ使用所有的伺服机端口.

    MOTOROFF 关闭一个伺服机

    命令格式:

    MR-C2000 系列控制器: MOTOROFF [motor number]

    MR-C3000 系列和 Super-M的控制器:

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    MOTOROFF [motor number]/[group pointin]

    命令说明:MOTOROFF 命令和 MOTOR 命令大致相同。可以参考 MOTOR 命令使用。

    MOVE 同时操作数个伺服机。

    命令格式:

    MR-C2000 系列控制器: MOVE[motor0angle],[motor1angle],….,[motor5angle]

    MR-C3000 系列和 Super-M控制器: MOVE[group pointing],[motor n angle],…

    命令说明:

    MR-C2000 系列控制器中的 MOVE 命令:

    移动命令将一个伺服机到一个特定的角度。当使用 MOVE 命令时,PWM 功能被禁用。

    [motor angle]饿取值范围是 10~190 之间。当要设置伺服#1、#3、#4 时候,可以像下面一样设置:

    MOVE 60、 、100、120

    当你仅仅是设置#2 时、命令如下。

    MOVE 、140

    这个过程可能是非常困难的,尤其是当 6 马达必须运行在同一时间内。如果采用“伺服实时控

    制”的方法,这个过程将变得简单。如果采用的是直流电机,100 意味着停止,190 意味着,方

    向逆转运行的最大速度,10 意味着正常旋转的最大速度。前一个操作之后,如果这台电机需要

    使用,可以用 WAIT 命令。

    命令举例:

    MOVE 100、50、140、120、80、40

    MOVE 120、、、160

    MOVE、70、100

    MOVE、、、、、100

    在 MR-C3000 series controller 和 Super-M中的 MOVE 命令:

    在 MR-C3000 系列和 Super-M控制器中,伺服机的端口和 PWM 的端口是不一样的。因此,MOVE

    命令和 PWM 命令可以同时使用。

    命令举例: Ex1)

    MOVE G6A、85、113、72、117、115、100

    MOVE G6C 、75、、96、123、 、122

    MOVE G8A、85、113、72、117、115、100、95、45 Ex2)

    MOVE G24、85、113、72、117、115、100

    等同于:

    MOVE 24 85、113、72、117、115、100

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    SPEED 设置伺服机的速度

    命令格式: SPEED [motor speed]

    命令说明:SPEED 命令的作用是设置运行 MOVE 命令后的伺服机的速度。在 MR-C2000 系列

    中,[motor speed]可以是 1~15 的数字或者常量。MR-C3000 和 Super-M中,可以使

    用字节变量。正常的设置是 3,太快速度与用户和机器人来说都将是非常危险的。

    命令举例:

    ACCEL

    命令格式: ACCEL[motor acceleration]

    命令说明:

    ACCEL 命令设置伺服机加速率从 0 到预设速度。[motor acceleration]使用 0~15 之间的数字或者

    常量。标准值是 3,当第一次操作伺服机的时候。伺服机迅速旋转至预设的 0 点。为了降低初

    始速度。最好使用 ACCEL 和 SPEED 命令。在 MR-C3000 和 Super-M中,ACCEL 命令不可用。

    命令举例:

    ACCEL 7 ˊ设置伺服机的加速率值为 7.

    DIR 设置电机的旋转方向

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    命令格式:

    MR-C2000控制器:

    DIR[motor 0 direction],[motor 1 direction],„,[motor 5 direction]

    MR-C3000和和 Super-M的控制器:

    DIR [分组],[电机 n方向],...

    命令解释:

    设置角度小于 100,伺服电机会左转;反之右转。

    在下面的图片中,伺服机向左旋转 10度

    电机方向使用常量或数字 0或 1,(0表示逆向旋转/左旋转,1表示顺时针)其默认值是 0。

    当有 4个伺服机在运转时,如果#3伺服机[motor direction]没有赋值,(如 DIR 0,1,0),

    它将按照默认的方向旋转(左旋转)。

    命令示例:

    MR-C2000系列:

    DIR 0,1,1,0,1,0

    DIR,,0

    MR-C3000系列和 Super-M:

    DIR G8A,0,1,0,0,1,0,0,0

    DIR G8B,1,0,1,1,0,1,1,1

    PTP 点对点 设置伺服电机同时控制开关

    命令格式:

    MR-C2000控制器

    PTP[set up value]

    MR-C3000和 Super-M的控制器

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    PTP [SETON/SETOFF/ALLON/ALLOFF]

    命令解释:

    在进行多步行走和按照不同角度进行移动情况下,每个伺服机的结束时间点互不相同,因

    此,在这种情况下,采用 ARM 控制的机器人和其他伺服机操纵的机器人可能会出现不稳定

    的状况。在机器人工程学上,有一种理论称作为点对点理论,它能计算出各个伺服机的时

    间结束点,并且能保证稳定的情况下,结束所有的动作。

    MR-C控制器使用点到点控制方法,用 PTP命令。

    PTP control in the MR-C2000

    当两个伺服机运行时,[set up value]用 0表示取消,用 1表示启动。如下:

    PTP 0

    MOVE 100,100

    MOVE 110,120

    说明:1 号电机移动 10 个角度,2 号电机移动 20 个角度。开始两个以同样的速度移动 10

    个 角度,然后,2号移动完剩余的 10个角度(此时 1号已经停止)

    Smooth motion by PTP function

    PTP 1

    MOVE 100, 100

    MOVE 110, 120

    说明:1号电机移动 10个角度,2号电机移动 20个角度,1号电机移动的速度是 2号电机

    的二分之一,两个伺服机同时启动和停止。

    下图为使用 PTP命令的对比,(绿色箭头为使用 PTP命令 ,蓝色为没有使用 PTP命令)

    注意:在正常的运动过程中,1 号和 2 号同时移动到 110 度角,但是在前面动作结束后 2

    号继续移动到 120度,然而使用 PTP命令,通过计算 1号需要移动的角度(10度)

    和 2号移动的角度(20),最终可以正常结束运行。

    在 MR-C3000和 Super-M中可使用多伺服电机。PTP可调整控制所有伺服电机或组。

    PTP SETON(PTP setup):按组设置 PTP 功能

    PTP SETOFF(PTP cancel):按组取消 PTP功能

    PTP ALLON(PTP all setup):对所有 servo设置 PTP

    PTP ALLOFF(PTP all cancel):对所有 servo取消 PTP

    在 MR-C3000和 Super-M使用对每个组 WAIT,该组所有 servo同时结束运动

    SERVO 操作一个 servo

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    命令格式:SERVO [电机号],[电机角度]

    命令解释:这个命令按照用户要求设置好运动角度,在 MR-C2000系列控制器 PWM功能被取

    消。[motor No.]为电机端口号,[motor Angle]可以使用在 10-190间的数字,

    常量或者字节变量。

    命令示例:

    Ex 1)

    SERVO 1,130 ‘操作 1号电机到 130

    Ex 2)

    DIM I AS BYTE

    FOR I = 10 TO 190

    SERVO 4,I

    DELAY 100

    NEXT I

    PWM 脉冲宽度控制

    命令格式:PWM [电机号],[脉冲宽度值]

    命令解释:在MR-C2000系列控制器中伺服机控制端口和PWM端口需要同时使用。所以[motor

    No.]是从 0-5 取值。如果 PWM 命令以一个脉冲宽度值输出,伺服机功能就失去

    作用。(注意:在程序中,SERVO或 MOVE命令不能和 PWM 命令同时使用)

    PWM 3,127 ‘PWM output of 50% duty rate at No.3 motor port’

    PWM在 MR-C3000 和 Super-M控制器装有 3个 PWM端口(0-3),(频率为 454Hz)

    PWM 0,120 ‘在 PWM0号端口输出 120占空比脉冲

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    FASTSERVO 以较快速度操作伺服机

    命令格式:FASTSERVO[motor No.],[motor Angle]

    命令解释:此命令能够按照指定的角度最大限度加速一个特定的伺服机。仅 MR-C2000支持

    此命令。[motor No.]是伺服机端口号,[motor Angle]是伺服机角度,可以 使

    用 10-190间的数字或常量。

    命令示例:

    FASTSERVO 2,190 ‘以 190°的角度最大限度的加速伺服机端口 2’

    HIGHSPEED 设置伺服机进入到高速模式

    命令格式:HIGHSPEED [SETON/SETOFF]

    命令解释:此命令针对 MR-C3000系列和 Super-M控制器,可开启或关闭一个伺服机的高速

    模式。此模式下的速度是正常速度 3倍

    HIGHSPEED SETON:开启高速模式

    HIGHSPEED SETOFF:取消高速模式(返回正常速度)

    命令示例:HIGHSPEED SETON ‘开启高速模式’

    MOVEPOS 移动位置

    POS 电机位置 设置移动和电机位置

    命令格式:MOVEPOS [行标志]

    ......

    [行标志]: POS [分组],[电机 n角度],...

    命令解释:当机器人位置(包含 MOVE命令)来自于 MR-C3000系列和 Super-M控制器其他

    命令,它使用 POS(电机位置)命令来处理,[行标志]使用 MOVEPOS命令。通

    过 MOVEPOS命令和 POS命令,可以很方便的修改和编写 Super-M程序

    命令示例:

    „„„„„.

    MOVPOS POS01 ‘move 命令 POS在 POS01标志位置

    „„„„„„

    POS01: POS G6A,10,32,15,120,78,93

    POS02: POS G6A,67,47,32,153,23,33

    POS03:POSG6A,34,37,122,162,84,28

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    FPWM 输出 PWM信号 频率可变

    命令格式:FPWM [端口],[频率],[占空比]

    命令解释:改变 PWM频率和脉冲输出。

    端口:0~2

    频率:1(低频)~5(高频)

    占空比:0~255

    命令示例:FPWM 0,1,127 输出 PWM信号

    MOVE24 移动所有 24个 servo

    命令格式:MOVE24 [电机 0角度],...,[电机 23角度]

    命令解释:在 MR-C3000系列和 Super-M控制器中,你可以通过 MOVE 命令来操作伺服机组。

    ‘MOVE24’和‘MOVE G24’命令用来同时操作 24个伺服机。此命令非常适合操作

    由 16-24个伺服机控制的机器人。

    命令示例:MOVE24 100,45,67,44,132,122,...76,81,90

    INIT 设置机器人初始化位置

    命令格式:INIT [分组],[电机 n的角度],...

    命令说明:如果一个机器人中已经安装了 MR-C3000系列和 Super-M 控制器,在开启电源后,

    所有的 POSITION被设置为 100,结果有可能会损坏机器人。

    为避免此类情况发生,POSITON 在初始化时可以设置不等于 100的数

    在模拟伺服机中,使用命令‘INIT’

    在数字机器人伺服机中,使用命令‘GETMOTORSET’

    命令示例:INIT G8A,100,45,67,44,132,122,76,81...

    MOTORIN() MOTOR INPUT() 读取当前电动机速率

    命令格式:MOTORIN([电机号])

    命令解释:通过此命令可以读取任何使用 MR-C3000系列和 Super-M控制器的机器人 servo

    当前位置值,并且控制他们

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    [电机号]为 0~31.

    连接时:电机角度为 10~190

    未连接时:角度为 0

    命令示例:

    DIM S0 AS BYTE

    MOTOR 0 ‘使用 0号 servo

    S0 = MOTORIN(0) ‘保存 0号 servo值到 S0

    AIMOTOR AI motor set up 使用 AI电机

    命令格式:AIMOTOR SETON/SETOFF/INIT/[电机号]/[分组]

    命令解释:AI 马达由韩国 Megarobotics 制造,它拥有一个微控制芯片,通过芯片可以借

    助 RS232与 MR-C 系列控制器通信,AI马达像通常的伺服机一样由 MR-C系列控

    制器控制。

    控制电机角度。

    通过 PDI控制转矩和显示当前电动机状态。

    所有电动机都可以接到端口 0-30上(共 31个端口) [motor No.]: 分配每个电动机

    [appoint Group]:按组分配电动机

    此命令过程类似‘MOTOR’命令,[motor No.]可以使用数字,常量,字节变量。

    使用电机时,声明‘use AI motor’是必要的,但是对其它伺服机并不是必须的

    AIMOTOR SETON:设置使用一个 AI电机

    AIMOTOR SETOFF:取消使用一个 AI电机

    AIMOTOR INIT:平滑移动 AI电机到初始位置

    命令示例:

    AIMOTOR INIT ‘初始化 AI电机

    AIMOTOR SETON ‘声明使用 AI电机

    AIMOTOR 0 ‘使用 0号 AI电机

    AIMOTOR G6B ‘使用组 6B的电机(6~11)

    AIMOTOR OFF Cancel AI motor 取消 AI电机

    命令格式:AIMOTOROFF [电机号]/[分组]

    命令解释:取消 AIMOTOR命令,与 MOTOROFFF命令相同

    命令示例:

    AIMOTOROFF 0 ‘取消 0号 AI电机

    AIMOTOROFF G6B ‘取消组 6B电机

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    AIMOTOR SETOFF ‘声明关闭 AI电机

    AIMOTORIN() 读取一个 AI电机当前值

    命令格式:AIMOTORIN([电机号])

    命令解释:通过此命令可以读取和 MR-C3000 系列和 Super-M 控制器相连的 AI 电动机当前

    POSITON 值并且控制它,[电机号]可以使用数字 0~30

    连到控制器时:电机角度为 10~190

    没有连接:此时为 0度角

    命令示例:

    DIM AI5 AS BYTE

    AIMOTOR INIT

    AIMOTOR SETON

    AIMOTOR 5 ‘设置使用 5号 AI电机

    AI5 = AIMOTORIN(5) ‘保存 5号电机值到 AI5

    GETMOTORSET Set motor input 读取一个 servo当前频率并保持状态

    命令格式:GETMOTORSET [分组],[指定电机 n输入],...

    命令解释:具有一个交互式通信系统,就能够读取和 MR-C3000系列和 Super-M控制器相连

    的数字机器人伺服机当前 POSITON 值。在机器人中安装 MR-C3000 和 Super-M

    控制器时,所有 servo 在开机时归位到初始位置 100,这可能对机器人造成伤

    害。

    为避免伤害,开机初始位置可设置为其他值。

    在开机初始化之前读取当前位置,再开始指定的动作,根据 move命令

    [指定电机 n 输入]的值为 0 或 1。在 1 的情况下,读取当前值并保持状态;0

    移动到初始值 100。

    命令示例:

    GETMOTORSET G8A,1,1,1,1,0,0,0,0

    ‘0~3号在开机时保持当前值

    ‘4~7号移动到初始值 100.

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    第九章 音乐控制命令

    MR-C 系列可以播放音乐,设置警告声 Beep 响铃次数。为了执行这个函数,需要单独的一个简

    单压电,其 PIN由一个(+)红色终端和一个白色信号终端组成。

    如果想要听到洪亮而清晰的声音,需要连接一个扬声器,准备一根驱动电路或者电源线。

    连接 MR-C2000 控制器:

    压电与 MR-C2000 控制器上的 8 号端口连接。压电的(+)终端连接 8 号端口的 VCC,(-)终端

    连接 8号端口的 SIG。

    连接 MR-C3000 和 Super-M控制器:

    压电与 MR-C3000和 Super-M控制器上的 28号端口连接。压电的(+)终端连接 28号端口的 VCC,

    (-)终端连接 28号端口的 SIG。

    注意:MC-C3024 和 Super-M控制器有一个内置压电。

    BEEP: 压电警告声 2000

    命令格式:BEEP

    命令解释:使用 BEEP命令使 MR-c2000控制器生成一个警告声,使用一个蜂鸣器警报只能

    通过连接正常输出端口,使用‘OUT’命令。MR-C3000 和 Super-M控制器使用‘OUT’命令的蜂鸣器。

    命令示例

    BEEP 输出警告声

    SOUND: 压电输出声音 2000

    命令句式:SOUND[音高],[音长],[音高],[音长],„„„

    命令解释:在 MR-C2000控制器中,信号的频率和延迟时间在压电端口可以设置。

    设置值:1-254

    参照以下图表:

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    命令示例

    SOUND 60,90,60,180,30,45

    生成一个 1赫兹频率为 1秒,2秒并产生 2赫兹频率为 0.5秒

    PLAY:压电播放音乐 2000

    命令格式:PLAY [播放音乐行]

    命令解释:Super-M 和 MR-C 系列控制器提供播放音乐函数。添加数据到[播放音乐行]

    可以播放音乐。参照以下图表:

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    T 指音乐节拍,基本节拍值为 7

    可在 1-10 间调整此值。1代表最快的节拍,0代表最慢节拍。

    MR-C2000 有 3个八度音阶,命名为低、中、高八度。

    使用 0-9 数值可以调节音律的长度。参照下表:

    如果不选择音律长度,将会默认播放最后的长度。

    “4CDEF8G”指播放音为 Do,Re,Mi和 Fa,Sol的四分音符作为八度音阶。

    ‘PLAY’命令的默认值是中八度,四分音符,Do,作为最后的调整,7个节拍

    是相同的八度音阶,相同的节拍值。

    音调长度需要添加,如[4Do,8Mi 6Fa]

    符号#或其它标志需要添加在音调前面,如[#Do $Mi +Fa –Sol 4#Do #4Do]

    命令示例

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    播放‘M4GGAA GGE GGEED’

    播放 “M4GGAA GGE GEDEC”

    MUSIC:压电播放音乐 3000

    命令格式: MUSIC‘[播放音乐行]’

    命令解释: Super-M和 MR-C系列控制器提供播放音乐函数。添加数据到[播放音乐行]可以播放音乐。参照以下图表

    MR-C3000 和 Super-M 带有 7 个八度音阶,使用 0-9 数字,调整音调长度。参

    照下表:

    至于附点音符,在[播放音乐行]写作数字或者‘.’

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    MR-C2000 必须使用‘PLAY’命令代替‘MUSIC’命令。

    MR-C3000和 Super-M可独立使用‘TEMPO’命令

    命令示例: MUSIC“O34GGAA GGE GGEED”

    MUSIC ‘O3GGA4.A GGE GEDEC’

    TEMPO: 设置音乐的节拍 3000

    命令语句: TEMPO [设定值]

    命令解释: MR-C3000 和 Super-M设定音乐节拍使用‘MUSIC’命令

    第十章 外部通讯命令

    MR-C2000 的外部通讯

    MR-C2000可以使用 2种外部通讯方式,一种是 RS232串口通讯,另一种是 miniBUS。

    在串口通讯中,带有个人电脑(兼容 RS232)的交互通讯,或者是其他的 MR-C控制器

    是可能的。除此之外,它可以通过数据线或者无线 RF模块通讯。RS232需要 3根线来

    完成通讯(发射 TX,接收 RX和地面探测 GND)

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    当与电脑连接时,将会使用电压转换线路(MAX232)

    使用 miniBUS,BUS信号和 GND是交互通讯

    miniBUS仅用一根线来完成交互通讯,须遵行特殊的规则。LCD模块是使用 miniBUS传

    输数据的一个例子,LCD内置控制器仅设置接收数据。

    MR-C3000 和 Super-M 外部通讯

    高速 RS232与外部设备通讯可以通过 MR-C3000 和 Super-M,而 miniBUS不能与 MR-C3000和

    Super-M实现通讯。两种控制器类型有最大 RS232的连接速度是 115200bps

    RX :RX端口接收 RS232信号 2000

    命令格式:RX [端口速度],[接收变量],[接收错误过程标记]

    命令解释:用 MR-C2000的 9号端口接收 RS232数据

    端口速度代表的是 1-4这些数字对应的特定速度及端口设置,参照下表:

    接收变量:用来存储接收数据的变量。只能为 byte类型。

    接收错误过程标记:数据未收到时的标记位置。

    RETRY:

    RX 4, A, RETRY

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    MR-C3000和 Super-M接收 RS232信号,必须使用 RX命令

    命令示例:在 ASCII代码示例中,&h80 是由 RS232从外部中断接收,打开在 0端口的

    LED,其他的都关闭。

    DIM A AS BYTE

    RETRY:RX 4, A, RETRY

    IF A=&h80 THEN

    OUT 0,0

    ElSE

    OUT 0,1

    ENDIF

    GOTO Retry

    TX : TX端口发送 RS232信号 2000

    命令格式:TX [端口速度],[数据]

    命令解释:使用 MR-C2000的 10号端口发送 RS232数据。

    端口速度代表的是 1-4这些数字对应的特定速度及端口设置,参照下表

    数据是指通过 TX 端口传输的数值。数字,变量和定量都会用到。就传输字

    面‘A’来说,与字母‘A’相关的 ASCII代码应该一起发送。

    参照下表:

    DIM I AS BYTE

    I = “A”

    TX 4, I

    如果字母列放置变量,字面的 ASCII值也要是变量。

    MR-C3000和 Super-M发送 RS232信号,必须使用 TX命令代替 RX命令 命令示例:以下例子说明字节端口‘0’的关键值通过 RS232持续向外部终端发送数据

    DIM A AS BYTE

    Main:

    A=BYTEIN(0)

    TX 4, A

    GOTO Main

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    MINIIN: 从 miniBUS 端口接收 miniBUS信号 2000

    命令格式: MINIIN

    命令解释: MR-C2000使用 6个端口中的一个接收 miniBUS数据,‘0’数据不能接收

    到。以下是编程结构:

    DIM A AS BYTE

    Retry:

    A=MINIIN

    IF A=0 THEN GOTO Retry

    MINIOUT: MiniBUS 端口传输 miniBUS信号 2000

    命令格式: MINIOUT[数据][数据]„„„

    命令解释: MR-C2000使用 miniBUS 6号端口传输 miniBUS数据。miniBUS通讯

    协议与 RS232 相似,数字,定量,变量可用于[数据],传输数据有限,

    ‘0’不能被传输。

    命令示例:MINIOUT 100,20,76,65

    ERX:ERX端口接收 RS232信号 3000

    命令格式: ERX[端口速度][接收变量][接收错误过程标记] 命令解释: MR-C3000和 Super-M使用 ERX端口接收数据,【端口速度】参数如下:

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    接收变量:用来存储接收数据的变量。只能为 byte类型。

    接收错误过程标记:数据未收到时的标记位置。

    Retry:

    ERX 9600, A, Retry

    MR-C2000接收 RS232信号,须使用 RX命令而不是 ERX命令。

    ETX:ETX端口传输 RS232信号 3000

    命令格式:ETX [端口速度][数据]

    命令解释:MR-C3000和 Super-M的 ETX端口传输数据,端口速度常量如下:

    数据是通过 ERX 端口传输的值。数字,变量和常量用于数据,参照以下

    DIM I AS BYTE

    I=‘A’

    ETX 9600, I

    如果传输字母‘A’,ASCII代码必须发送。一个字母放在一个变量中必须先发送

    ASCII。

    为了能够从 MR-C2000发送 RS232信号,须使用命令‘TX’

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    第十一章 模拟信号处理命令

    AD() 从 AD端口来的模拟信号转换为数字信号 3000

    命令格式:AD([AD端口])

    命令解释:有 8个 AD端口,编号 0~7,在 MR-C3000和 Super-M控制器是数字输入输出端口 32~39,

    转换从外部传感器或设备来的模拟信号为数字信号。AD端口用常量或 byte变量

    命令示例:

    下例中,从 AD1接收到模拟信号后输出一个值到 LCD模块,

    DIM A AS BYTE 声明字节变量‘a’

    LCDINIT 使用 LCD模块初始化

    CLS 所有的数据清晰显示在液晶显示屏上

    CSOFF 光标消失

    MAIN: 声明标签符为 Main

    A = AD(1) 输入 AD端口#1的值保存为变量‘a’

    LOCATE 5,0 光标位于 LCD上 5.0

    PRINT FORMAT(A,DEC,2) 输入值被输出到 LCD 模块,作为两个数字,使用十

    进制系统

    GOTO MAIN 到 MAIN

    REMOCON() 从 AD传输端口 7号读取红外遥控器的值 3000

    命令格式:REMOCON([REMOCON(#)])

    命令解释:端口 7用来红外遥控。[REMOCON(#)]为 1,但其他数字可以使用,根据 MR-C3000和

    Super-M 的型号。

    命令示例:

    DIM A AS BYTE 声明变量接收值

    MAIN: MAIN标经常接收遥控值

    A = REMOCON(0) 遥控值输入变量‘a’

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    ON A GOTO MAIN,KEY1,KEY2,KEY3,KEY4 ‘转到 MAIN除非收到数据

    GOTO MAIN 到 MAIN

    END

    KEY1:..... 当接收值为 1时编程

    GOTO MAIN

    KEY2:..... 当接收值为 2时编程

    GOTO MAIN

    ......

    KEY3:..... 当接收值为 3时编程

    GOTO MAIN

    ......

    KEY4:..... 当接收值为 4时编程

    GOTO MAIN

    ......

    SONAR() 从连接到超声波端口的超声波传感器读取计算出的距离 3000

    命令格式:SONAR([超声波端口])

    命令解释:MR-C3000 系列和 Super-M控制器的数字输入输出端口 0~23可作为超声波端口 0~11。

    MR-C3000和 Super-M控制器数字输入输出端口 超声波端口

    0号 0号超声波端口的输出

    1号 0号超声波端口的输入

    2号 1号超声波端口的输出

    3号 1号超声波端口的输入

    ... ...

    20 10号超声波端口的输出

    21 10号超声波端口的输入

    22 11号超声波端口的输出

    23 11号超声波端口的输入

    超声波端口的值必须为一个固定的数。函数 SONAR的返回值必须在 0~3000之内。若返回值为 0,则不能判断距离。

    ROBOT ELECTRONICS 公司生产的 SRF04模块可作为 MR-C3000系列和 Super-M控制器的超声波传

    感器。

    命令示例:

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    DIM A AS INTEGER 声明固定数变量 A

    A = SONAR(3) ‘使用超声波 3号端口(数字输入输出端口 6和 7号),将接

    收到的值保存到变量 A

    RCIN() 从遥控收发器输入脉冲值 3000

    命令格式:RCIN([遥控接收端口])

    命令解释:遥控接收器连接到 MR-C3000 和 Super-M 的 AD 输入端口。可以从这里读取接收到的

    发送值。

    AD端口号(数字输入输出端口号) RC接收端口

    0(32) 0~7

    如图:

    为防止电子干扰造成的误操作,最好使用 FM 接收。如果发送器有 high-end 功能,可识别

    更多的动作。

    命令示例:

    DIM A AS BYTE

    A = RCIN(0) ‘从 RC接收端口接收到的信号保存在变量 A

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    GYRODIR 设置有陀螺仪支持的 servo的方向 3000

    命令格式:GYRODIR [分组],[电机方向]„

    命令解释:当一个陀螺仪连接到一个 AD端口时,这个过程控制一组 servo的方向。最多可

    使用 4个陀螺仪。参照以下图表:

    AD端口号(数字输入输出端口号) 陀螺仪端口

    0(32) 1号输出口

    1(33) 2号输出口

    2(34) 3号输出口

    3(35) 4号输出口

    4(36) 1号输入口

    5(37) 2号输入口

    6(38) 3号输入口

    7(39) 4号输入口

    由于陀螺仪是可逆的,指定的方向由 servo 的当前值决定。[电机方向]为 0

    或 1。1使 servo位置值增加,0使其减少。

    命令示例:

    GYRODIR G6A,1,1,0,0,1,0

    GYROSET 指定某一陀螺仪控制一组 servo 3000

    命令格式:GYROSET [分组],[电机 n对应的陀螺仪]„

    命令解释:该指令决定[分组]中的 servo 由哪一个陀螺仪控制。[电机 n 对应的陀螺仪]是

    用于该组每个 servo的特定的陀螺仪端口。

    01,02,03,04: GWS PG03 11,12,13,14: KRG-1

    21,22,23,24:reserved 31,32,33,34:reserved

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    命令示例:

    GYROSET G6B,1,1,2,2,0,0

    6号 servo接收 1号陀螺仪并处理它

    7号 servo接收 1号陀螺仪并处理它

    8号 servo接收 2号陀螺仪并处理它

    9号 servo接收 2号陀螺仪并处理它

    10号和 11号不使用陀螺仪

    GYROSENSE 对一个陀螺仪设置 servo的灵敏度 3000

    命令格式:GYROSENSE [分组],[电机 n陀螺仪灵敏度]„

    命令解释:可连接 4个陀螺仪,GYROSENSE 对一个陀螺仪设置一个 servo的灵敏度。

    [电机 n陀螺仪灵敏度]使用 0~255的数字或常量控制一组中每个 servo的灵敏

    度。0不会改变灵敏度。值越大,servo对陀螺仪的反应增加。

    命令示例:

    GYROSENSE G6A,100,100,255,255,50,50

    0和 1号 servo设置灵敏度为 100...

    2和 3号 servo设置最大灵敏度为 255

    4和 5号 servo设置灵敏度为 50

    第十二章 Super-M过程命令和其他

    ON„GOTO 根据变量的值条件转移

    命令格式:ON [变量] GOTO [行表示符],[行标识符]„

    命令解释:当程序根据[变量]值处理偏离时,使用‘ON„GOTO’命令。使用 IF指令时仍可

    使用 ON„GOTO指令。使用 ON„GOTO使代码量更少。

    以下是 IF与 ON„GOTO比较:

    A = BYTEIN(0) | A = BYTEIN(0)

    |

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    IF A = 0 THEN | ON A GOTO 10,20,30

    GOTO 10 | IF A>2 THEN GOTO 40

    ELSEIF A = 1 THEN |

    GOTO 20 |

    ELSEIF A = 2 THEN |

    GOTO 30 |

    ELSE |

    GOTO 40 |

    ENDIF |

    接在 GOTO指令后面的是行标识符。当变量为真时,行标识符逐渐增大。数字和常量可作

    为变量。行标识符最大为 255。

    RND 随机数

    命令格式: RND

    命令解释: MR-C控制器创建一个随机编程,使用 RND命令。生成一个随机数 0~255。

    命令示例:

    DIM A AS BYTE

    A = RND

    BYTEOUT 0,A 随机数通过端口 0输出

    REMARK 在代码中进行说明

    命令格式: REMARK [描述]

    命令解释: 在代码中加入说明解释程序过程是好的编程习惯。使用’或 REMARK 均可。

    在该指令后面同一行内加入描述。REMARK对程序的运行没有影响。

    命令示例:

    REMARK 8 LEDs are turned on.

    BYTEOUT 0,0

  • 北京智能佳科技有限公司

    www.bjrobot.com 北京智能佳科技有限公司 Tel:010-82488500

    第十三章 Super-M指令描述

    $DEVICE 设置控制器由正在运行的程序操作

    命令格式: ‘$DEVICE [控制器]

    命令解释: 该指令设置已下载程序的控制器。如果已指派一个控制器,则会更改到指定

    的控制器。

    命令示例:

    ‘$DEVICE MRC2000 让程序使用 MR-C2000控制器

    ‘$LIMIT 限制伺服电机运行范围 3000

    命令格式: ‘$LIMIT [电机号],[最小值],[最大值]

    命令解释: 用来设置一个 servo整个旋转角度已避免过度驱动 servo带来的损害。

    [电机号]范围是 0~31。

    [最小值]和[最大值]范围是 10~190. servo默认角度是 10~190。

    命令示例:

    ‘$LIMIT 0,50,100 servo 的角度被限制在 50到 100。