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。