roboBASIC中文笔记Word下载.docx
《roboBASIC中文笔记Word下载.docx》由会员分享,可在线阅读,更多相关《roboBASIC中文笔记Word下载.docx(33页珍藏版)》请在冰点文库上搜索。
(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电机当前位置值
(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把一个陀螺仪分配给一个伺服电机
处理指令
ON...GOTO根据一个变量的值跳过
其他指令
RND生产一个随机数
REMARK建立一个文本的入口
指令
'
$DEVICE设置控制器由正在运行的程序操作
(3)'
$LIMIT限制伺服电机运行范围
第2章roboBasic语法概要
标识符集
roboBASIC标识符集由英语字母、数字和特殊符号组成。
这些在roboBASIC有特殊意义的符号如下表所示
符号描述
+加
-减
*乘
/除
%求余
.位指示
&
数字
?
?
文本
字符串
:
标志
=相等或替换
<
不相等
>
<
位左移
>
位右移
表达式和运算符
表达式由非变量,变量,数加上运算符计算得出的值组成.一个运算符对给值执行算术或逻辑运算.在roboBASIC中,运算符分类如下表所示.
分类功能
算术运算符执行算术运算
关系运算符比较数值大小
逻辑运算符比较组合条件或执行位操作
位运算符操作位或执行位运算
算术运算符
算术运算符是执行计算的标识符.和一般BASIC语言一样,+,-,*,/,%(或MOD)在roboBASIC中可以使用,但在roboBASIC和BASIC间有些不同的地方.
(1)运算符中没有优先级
在roboBASIC,不能使用圆括号()
例:
A=1,B=2,C=3
BASIC中:
A+B*C=1+2*3=1+6=7(在BASIC,如果要先执行+再执行*,需要使用圆括号())
roboBASIC:
中
A+B*C=1+2*3=3*3=9
(2)复杂的数学计算会产生意想不到的错误
所以,数学计算应该分解为2次或3次计算.
D=A*B+C(通过)
F=A*B/C*D+E(避免复杂算术计算)
(3)roboBASIC只支持byte类型和整数类型.输出的小数点将被忽略.
求余计算使用%或MOD,输出为余数.
关系运算符
关系运算符用来比较两个值.输出为TRUE或FALSE.输出用来在IF语句中控制程序流向.
运算符关系表达式
=等于X=Y
不等于X<
Y
小于X<
大于X>
=小于等于X<
=Y
=大于等于X>
当算术运算和逻辑运算组合到一个式子里时,算术运算符优先于逻辑运算符.
逻辑运算符
逻辑运算符用来比较组合条件.计算结果返回TRUE或FALSE.输出用来在IF语句中控制程序流向.
运算符含义
AND与
OR或
XOR异或
每个运算符的输出如下表所示.表中,“T”代表TRUE,“F”代表FALSE
--------------------------------------------
X,Y的值|输出
X|Y|XANDY|XORY|XXORY
-----|-----|-----------|----------|---------
T|T|T|T|F
T|F|F|T|T
F|T|F|T|T
F|F|F|F|F
位运算符
在机器人控制器使用一些变量中以简化通过输入输出端口进行位控制.位运算符就对这些变量执行计算.
对一位的计算有位或(OR),位与(AND),位异或.在roboBASIC中,运算符左移“<
”,右移“>
”和“.”用来移动一位到一个指定位置.
设A的值为33(二进制为00100001),B值为15(二进制为00001111),使用相应的运算符时得到以下结果.
运算符输出
AANDB1(00000001)
AORB47(00101111)
AXORB46(00101110)
A<
166(01000010)
A>
116(00010000)
A.01(A的第0位)
同一条指令使用多个运算符时,将以以下顺序计算
(1)算术运算/位运算
(2)关系运算
(3)逻辑运算
数据,变量/常量和其他语法解释
由于roboBASIC用来控制硬件,所以不支持在BASIC中使用的与串相关的变量和常量.
数据类型
有字节(byte)类型数据和整型(integer)数据.数据类型的范围如下表所示.
数据类型大小范围
BYTE1byte(8bit)0-255
INTEGER2byte(16bit)0-65535
roboBASIC不支持负数。
所以当“+”号或“-”号加在一个数前面时,运算会产生错误.
必须使用合适的数据类型声明变量.
真数
由于roboBASIC用来控制硬件,使用十六进制数或其他类型比使用十进制更方便.在roboBASIC中,可以使用二进制数(Bin),八进制数(Oct),十进制数(Dec),十六进制数(Hex).
真数声明可使用的数字例
Bin&
B0,1&
B111101
Oct&
O0,...,7&
O75
DecN/A0,...,961
Hex&
H0,...9,A,...,F&
H3D
常量和变量
常量在程序执行中值不改变.roboBASIC可定义byte类型和integer类型的常量.常量类型根据数的范围自动确定.一旦常量被定义,就不能被重定义.定义常量对程序大小没有影响.当一个数频繁使用时定义为常量能简化程序的修改.
例:
CONSTOFF=0
CONSTmotor_1=3
CONSTmotor_1speed=200
微机器人控制器的变量有限,因此变量声明应设计为在符合对象的情况下使变量占用内存最小。
DIMmotor_1_delayASINTEGER
DIMsensor_leftASBYTE
声明常量或变量时,遵守以下规则。
1、首字母用英语字母,“_”可用在变量名和常量名中。
2、常量名和变量名长度不可超过64.
3、相同常量名和变量名只能声明一次,大小写无区别
4、声明常量大于65536会出错
位操作
roboBasic中变量可按位操作。
按位操作变量使用位操作符“.”。
0~7(byte变量)或0~15(integer变量)。
只有数字和常量能使用。
例:
DIMAASINTEGER
CONSTBIT_2=2
A.1=1
A._BIT_2=0
A.3=IN
(1)‘从端口1读数并赋给整型变量A的第三位
OUT2,A.1‘将A的第一位的值传给端口2
解释说明
替换语句
替换语句用来替换变量的值。
使用“=”号,值在左边,变量、字母串、计算公式在右边。
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。
DIMAASINTEGER
START:
A=IN(0)
IFA=0THEN
GOTOSTART
ELSE
GOSUB10
END
10OUT1,0
DELAY100
OUT1,1
RETURN
第三章声明命令解释
DIM...ASDECLARE...AS
语句结构
1、单变量声明:
DIM[变量名]AS[变量类型]
2、多变量声明:
DIM[变量名]AS[变量类型],[变量名]AS[变量类型]…
命令解释
变量必须用DIM声明。
必须用AS声明类型。
变量名大小写无区别。
不能重复。
变量用来处理传感器的值或模拟信号转换的值。
因此要使用合适的变量,程序更有效率。
各机器人控制器可使用的变量数不同。
MR-C2000可使用变量大小为30字节,MR-C3000为256字节。
命令例子:
DIMIASINTEGER
DIMJASBYTE
CONST
CONST[常量名]=数字
给数字声明常量简化编程过程。
优点省略
命令例子
CONSTOFF=0
CONSTA=&
HB1001
第四章流控制命令解释
IF...THEN...
1、单条件
IF[条件]THEN
[条件为真时的语句]
2、多条件:
IF[条件1]THEN
[条件1为真时的语句]
ELSEIF[条件2]THEN
[条件2为真的语句]
ELSE
[条件1和2都为假的语句]
ENDIF
指令解释
略
FOR...NEXT
FOR[循环变量]=[START]TO[END]
[循环语句]
NEXT[循环变量]
数字、常量、变量可用来做START、END
END必须大于START.
可以从循环内跳到循环外,反之不行。
在循环变量、START、END中使用的变量在FOR...NEXT执行中不能被人为改变
GOTO
GOTO[行标志符]
GOSUB...RETURN
子程序内可以调用其他子程序,MR-C2000可嵌套4次,MR-3000为5次。
END
结束程序运行
STOP/RUN
程序停止后,用RUN将初始化程序。
WAIT
控制操作系统有最新的实时程序控制。
当一个程序执行时,下一条程序将同时执行,不会等待上一条程序停止。
用WAIT使当前程序完成后再执行下一条。
DELAY
DELAY[延迟时间]
MR-C2000延迟时间单位为10ms,MR-C3000为1ms。
BREAK
暂停程序执行转换到调试模式
暂停时,控制器内存传回到PC,确保两者相连,否则程序将停止并保持该状态。
在MR-C3000中无用。
可直接用软件调试模式
ACTIONno
ACTINO[No.]
根据动作号执行模板中描述的动作。
只适用于MR-C3024和robonova-1.
gotoAUTO
转移到模板程序
第五章数字信号输入输出
MR-C3000有40数字输入输出口。
各执行不同功能。
参考控制器解释。
]
IN()
IN([端口号])
输入数字信号保存为变量,值为0或1,用字节或整型,但只有最后一位有用。
OUT
输出数字信号到端口
OUT[端口号],[输出值]
输出0时,输出0V,输出1时,输出+5V信号。
BYTEIN()
BYTEIN([字节端口号])
输入输出一组端口信号
BYTEPORTPORT
1#0~#7
2#8~#15
3#16~#23
4#24~#31
BYTEOUT
BYTEOUT[字节端口号],[输出值]
INKEY
INKEY([端口号])
按下开关时,实际上在电气上和机械上被按了很多次。
会导致错误。
所以需要保护电路。
保护功能在软件中,用INKEY命令操作该软件。
把连在端口0的开关的状态保存在变量A
DIMAASBYTE
A=INKEY(0)
STATE()
STATE([端口号])
如果发送信号后需要得到输出端口的状态值,使用STATE,不要使用IN
PULSE
PULSE[端口号]
发送宽度为5us的脉冲信号到输出端口。
为外部设备提供信号。
端口号可使用数字,常量,变量。
TOGGLE
TOGGLE[端口号]
反转输出端口输入信号
KEYIN()
KEYIN([模拟端口号],[键值])
从AD转换端口(模拟端口)读取16个键的值。
0~7、常量、byte变量可用做模拟端口号。
1~16、常量、byte变量可用作键值。
键值范围为0~16.0表示没有按键。
第六章内存指令
PEEK()
PEEK([RAM域])
PEEK从内存中提取数据。
若不知内存的确切结构,不要使用。
MR-C3000
0~65536、常量、byte变量可用
POKE
POKE[RAM域],[数据]
写入到内存。
MR-C3000,0~65536、常量、byte变量可用为RAM域,数字、常量、整型变量可用为数据
ROMPEEK()
ROMPEEK([ROM域])
控制器用EEPROM保存程序和其他。
ROMPEEK和ROMPOKE对外存操作。
若区域已有数据,可能产生致命错误。
ROMPOKE
ROMPOKE[ROM域],[数据]
数据应为0~255
第七章LCD模块
第八章电机控制命令
控制器可控制伺服电机和直流电机。
若是直流电机,可控制速度,方向,用数字输入输出指令停止电机。
伺服电机运行范围为-90~+90。
在roboBasic控制伺服电机,度数为10~190,因控制器不能使用负数。
ZERO
MR-C3000:
ZERO[组指定],[电机1标准位置],...
各伺服电机零点由自身决定。
MR-C3000设置零点:
需说明分组。
ZEROG8B,80,120,115,80,117,88,95,120
设置组8B(8号到15号)
零点位置应在80~120
MOTOR
设置使用电机
MOTOR[电机号]/[分组]
32个伺服电机有32个端口。
每个电机用电机号分配。
MOTOR0‘使用0号电机
MOTORG6A‘使用6A(0~5)
MOTORG6C‘使用6C(12~17)
MOTORG8A‘使用8A(0~7)
用变量设置:
DIMJASBYTE
FORJ=0TO31‘使用0~31
MOTORJ
NEXTJ
MOTORG24‘使用伺服电机组24(0~23)
MOTORALLON‘使用全部伺服电机
MOTOROFF
关闭一个电机
MOTOROFF[电机号]/[分组]
MOVE
同时操作一些电机
MOV[分组],[电机n角度],...
在MR-C3000,伺服电机和PWM的端口不同。
所以move指令和PWM指令可同时用。
MOVEG6A,85,113,72,117,115,100
MOVEG6C,75,,96,123,,122
MOVEG8A,85,113,72,117,115,100,95,45
MOVEG24,85,113,72,117,115,100
=MOVE2485,113,72,117,115,100
SPEED
SPEED[电机速度]
SPEED设置伺服电机MOVE指令的速度。
MR-C3000用1~15和byte变量。
常用为3。
ACCEL
ACCEL[电机加速度]
加速度为0~15,常用3
DIR
设置电机转到方向
DIR[分组],[电机n方向],...
设置角度小于100,伺服电机会左转;
反之右转。
电机方向使用常量或数字0(左转)或1(右转)。
默认为0,
PTP
设置伺服电机同时控制开关
PTP[SETON/SETOFF/ALLON/ALLOFF]
多运动和运动不同角度时,伺服电机运动结束时间不同。
因此遇到可能不稳定。
MR-C控制器使用点到点控制方法,用PTP命令。
在MR-C3000中可使用多伺服电机。
PTP可调整控制所有伺服电机或组。
PTPSETON(PTPsetup):
按组设置PTP功能
PTPSETOFF(PTPcancel):
按组取消PTP功能
PTPALLON(PTPallsetup):
对所有servo设置PTP
PTPALLOFF(PTPallcancel):
对所有servo取消PTP
在MR-C3000使用对每个组WAIT,该组所有servo同时结束运动
SERVO
操作一个servo
SERVO[电机号],[电机角度]
设置指定电机的角度
SERVO1,130‘操作1号电机到130
DIMIASBYTE
FORI=10TO190
SERVO4,I
DELAY100
NEXTI
PWM
PWM[电机号],[脉冲宽度值]
MR-C3000控制器装有3个PWM端口,(频率为454Hz)
PWM0,120‘在PWM0号端口输出120占空比脉冲
HIGHSPEED
设置servo到告诉模式
HIGHSPEED[SETON/SETOFF]
设置或取消servo高速模式。
高速是普通速度的三倍快。
MOVEPOS移动位置
POS电机位置
MOVEPOS[行标志]
......
[行标志]:
POS[分组],[电机n角度],...
MOVPOSPOS01