roboBASIC中文笔记.docx
- 文档编号:12673666
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:33
- 大小:63.91KB
roboBASIC中文笔记.docx
《roboBASIC中文笔记.docx》由会员分享,可在线阅读,更多相关《roboBASIC中文笔记.docx(33页珍藏版)》请在冰豆网上搜索。
roboBASIC中文笔记
roboBASIC中文笔记
第一章roboBasic指令概要
指令摘要
(2)表示指令只能在MR-C2000系列控制器执行
(3)表示指令只能在MR-C3000系列控制器执行
与声明、定义相关的指令
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接受模拟键盘输入
内存指令
PEEK从控制器RAM读取数据
POKE写数据到控制器RAM
ROMPEEK从控制器外部EEPROMRAM读取数据
ROMPOKE写数据到控制器EEPROMRAM
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电机当前位置值
(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>Y <=小于等于X<=Y >=大于等于X>=Y 当算术运算和逻辑运算组合到一个式子里时,算术运算符优先于逻辑运算符. 逻辑运算符 逻辑运算符用来比较组合条件.计算结果返回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 GOTOSTART 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-C3024和robonova-1. 第五章数字信号输入输出 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[电机号]/[分组] MR-C3000: 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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- roboBASIC 中文 笔记