1.1 Karel 程序的创建和编译
FANUC 机器人系统的 KAREL 系统由机器人,控制器和系统软件组成。它使用用 KAREL 编程语言编写的程序来完成工业任务。 KAREL 可以操作数据,控制和与相关设备进行通信并与操作员进行交互。
这些 KAREL 功能包括:
• 简单和结构化的数据类型
• 算术,关系和布尔运算符
• 控制循环和选择的结构
• 条件处理程序
• 程序和功能例程
• 输入和输出操作
• 多编程支持
注意为了加载 KAREL 程序,必须在机器人控制器上安装 KAREL 选件。
1.2Karel编程语言概述
KAREL程序由存储在源代码文件中的声明和可执行语句组成。 与程序关联的变量数据值存储在变量文件中。使用 OLPC PRO 或其他编辑器(如Word Pad)创建和编辑 KAREL程序。
KAREL 语言编译器将源代码转换为称为p代码的内部格式并生成p代码文件。编译器提供OLPC PRO。编译完成后,可以使用 KAREL 命令语言(KCL)或FILE菜单将产生的p代码程序加载到控制器上。
在加载期间,系统将创建任何不在RAM中的所需变量并将其设置为未初始化。当你运行程序时,KAREL 解释器执行加载的p代码指令。
KAREL 程序由程序逻辑和程序数据组成。程序逻辑定义了执行特定任务所需执行的一系列步骤。程序数据是程序逻辑使用的任务相关信息。在KAREL中,程序逻辑与程序数据是分开的。程序逻辑由 KAREL 程序中BEGIN和END语句之间的 KAREL 可执行语句定义。程序数据包括通过RAM中的名称,数据类型和存储区域在 KAREL 程序的VAR声明部分中标识的变量。
程序数据的值可以通过示教器点动机器人,通过程序计算,从数据文件读取,从CRT / KB内设置或者教导式菜单结构,或者在执行过程中作为输入接受。数据值可以从一次执行改变到下一次,但是使用相同的程序逻辑来操纵数据。
由于以下原因,程序逻辑和程序数据在 KAREL 程序中是分开的:
• 允许在同一个程序中的多个地方引用数据
• 允许多个程序引用或共享相同的数据
• 允许程序使用替代数据
• 促进离线计算机辅助设计(CAD)系统建立数据文件
这个就是安装ROBOTGUIDE的时候一并安装的东西,不过一般和直接打开ROBOTGUIDE没啥区别
1.3创建一个程序
离线编辑器(如OLPC PRO)或任何文本编辑器(如vscode)创建 KAREL 程序。 生成的文件称为源文件或源代码。
1.3.1.选择Karel的选件
前面正常创建仿真程序在这里一定勾上Karel(R632)
1.3.2 创建.kl文件
这里就是我们编写程序的地方
• 程序数量限制为2704或可用RAM。
• 每个程序的变量数量限制为2704或可用RAM。
1.3.2 创建第一个程序
程序编写完成后点击编译后会生成TP示教可执行的.pc程序
1.3.3 程序运行
1.将光标打到.pc文件
2.按下示教器的ENTER按钮
3.按下SHIFT和FWD按钮
1.3.4 运行结果
1.3.5 可能出现的问题
1.程序列表中没有Karel文件
解决方法将$KAREL_ENB设置为1
1.3.6 程序介绍
一个karel的程序构成
PROGRAM prog_name
Translator Directives
CONST, TYPE, and/or VAR Declarations --变量声明
ROUTINE Declarations --函数声明
BEGIN
Executable Statements --程序段
END prog_name
ROUTINE Declarations
可对照参考我们自己写的程序
PROGRAM HellowWorld --程序名
BEGIN --程序开始
FORCE_SPMENU(TP_PANEL,SPI_TPUSER,1) --打开用户1界面
WRITE(CHR(128),CHR(137)) --清屏
WRITE('HellowWorld',CR) --打印HellowWorld
END HellowWorld --结束程序
保留字或者说关键字
在KAREL结构中,用大写字母表示的词语是具有专用意义的KAREL保留字。PROGRAM,CONST,TYPE,VAR和ROUTINE表示程序的声明部分。 BEGIN和END标记可执行部分。确定程序的PROGRAM语句必须是任何KAREL程序中的第一条语句。 PROGRAM语句由保留字PROGRAM和用户创建的标识符(KAREL程序结构中的prog_name)组成。
Karel手册中指令中介绍
**FORCE_SPMENU 内置程序**
用途:强制显示指定的菜单
语法 : FORCE_SPMENU(device_code, spmenu_id, screen_no)
Input/Output 参数 :
[in] device_code :INTEGER
[in] spmenu_id :INTEGER
[in] screen_no :INTEGER
%ENVIRONMENT Group :pbcore
细节 :
• device_code 指定设备,并且应该是以下预定义常量之一:
tp_panel 示教器设备
crt_panel CRT设备
• spmenu_id 和 screen_no 指定要强制的菜单。 以SPI_开头的预定义常量定义
spmenu_id,以SCR_开头的预定义常量定义 screen_no。 如果未列出SCR_,请使
用1。
**WRITE 语句**
用途:将数据写入串行设备或文件
语法 : WRITE <file_var> (data_item { ,data_item }) where:
file_var : 一个 FILE 变量
data_item : 一个表达式及其可选的格式说明符或保留字CR
细节 :
• 如果在 WRITE 语句中未指定 file_var,则使用默认的 TPDISPLAY。 %CRTDEVICE 指令
会将默认值更改为 OUTPUT。
• 如果指定了 file_var,它必须是其中一个输出设备或与其中一个相等的变量。
• 如果使用UF选项设置 file_var 属性,则会以二进制形式将数据传输到指定的文件或设备。
否则,数据以 ASCII文本形式传输。
• data_item 可以是任何有效的 KAREL 表达式。
• 如果 data_item 是 ARRAY类型,则必须提供下标。
• 如果 data_item 是 PATH类型,则可以指定读取整个路径,读取特定节点[n]或读取[n ..
m]节点范围。
• 可选的格式说明符可用于控制为每个 data_item 写入的数据量。
• 可以用作数据项的保留字CR指定要写入 file_var 的下一个数据项将从下一行开始。
• 使用 IO_STATUS Built-In 来确定写入操作是否成功。