roboBASIC中文笔记.docx

上传人:b****8 文档编号:10969492 上传时间:2023-02-24 格式:DOCX 页数:33 大小:63.92KB
下载 相关 举报
roboBASIC中文笔记.docx_第1页
第1页 / 共33页
roboBASIC中文笔记.docx_第2页
第2页 / 共33页
roboBASIC中文笔记.docx_第3页
第3页 / 共33页
roboBASIC中文笔记.docx_第4页
第4页 / 共33页
roboBASIC中文笔记.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

roboBASIC中文笔记.docx

《roboBASIC中文笔记.docx》由会员分享,可在线阅读,更多相关《roboBASIC中文笔记.docx(33页珍藏版)》请在冰豆网上搜索。

roboBASIC中文笔记.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1