历史上的今天
返回首页

历史上的今天

今天是:2026年01月29日(星期四)

正在发生

2023年01月29日 | KUKA:简单数据和数组的使用V1.24

2023-01-29 来源:机器人及PLC自动化应用

KRL中数据的保存

•使用KRL以变量工作

使用KRL对进行时,在程序中使用的数据会有相应的类型来处理这些数据,变量就是用来保存这些数据的容器,每个变量都属于一个专门的数据类型,在使用前必须声明数据类型。在KRL中变量有局部变量和全局变量之分。

局部:局部变量可以分为程序文件(.src)中的局部变量或局部数据列表(*.dat)中的局部变量。如果变量是在.src文件中定义的,则该变量仅在程序运行时存在。我们将此称为“运行时间变量”。如果变量是在.dat文件中被定义为局部变量,并且仅在相关程序文件中已知,则其值在关闭程序后保持不变。

全局:如果变量为全局变量,则随时都可以显示。在这种情况下,变量必须保存在系统文件或者局部数据列表中作为全局变量。

•变量的命名规范

在选择变量名称时,务必遵守以下规定:

1)KRL中的名称最多允许24个字符

2)KRL中的名称允许含有字母(A-Z)、数字(0-9)以及特殊字符“_”和“$”

3)KRL中的名称不允许为关键词

4)KRL中的名称不允许以数字开头

5)大小写无关紧要

•KRL中的数据类型

1)预定义的标准数据类型

2)数组/Array

3)枚举类型

4)负荷数据类型/结构

•变量的有效性和生存期

KRL中变量的生存期

1)生存期是为变量预留存储位置的时间

2)运行时间变量在退出程序或功能时将其存储位置重又空出

3)而数据列表中的变量将当前(上一个)值永久性保存在其存储位置中

KRL中变量的有效性

1)局部声明的变量仅在其被声明的程序中可用并可见

2)而全局变量则建立在一个中央(全局)数据列表中

3)全局变量也可建立在一个局部数据列表中,声明时冠以关键词global(全局)

涉及到简单数据类型的工作

使用简单的数据类型有以下几种:

1)整数(INT):用于计数循环或件数计数器的经典计数变量

2)实数(REAL):为了避免四舍五入出错的运算结果

3)布尔数(BOOL):经典式“是”/“否”结果

4)单个字符(CHAR):仅是一个字符,字符串或者文本只能作为CHAR数组来实现

•变量的声明

变量在使用前必须先总是进行声明,每一个变量均划归一种数据类型,声明的关键词为DECL。

变量的声明以不同的形式进行:

1)在SRC文件中声明

2)在局部DAT文件中声明

3)在$CONFIG.DAT中声明

4)在局部DAT文件中配上关键词“全局”声明,因为从中得出相应变量的生存期和有效性

创建常量,要用关键词CONST建立,只允许在数据列表中建立

•变量声明的原理

SRC文件中的程序结构,在声明部分必须声明变量,初始化部分从第一个赋值开始,通常从“INI”行开始,在指令部分会赋值或更改值。

为了在使用某些模块时于INI行前进入声明部分,必须更改为专家模式使DEF行显示。

计划变量声明,要规定生存期,对于SRC文件程序运行结束时,运行时间变量“死亡”,对于DAT文件在程序运行结束后变量还保持着,也要规定有效性/可用性,变量仅在局部DEF和END行之间可用。

•声明简单数据类型变量时的操作步骤

1.在SRC文件中创建变量

进入专家用户组模式

使DEF行显示出来

在编辑器中打开SRC文件

声明变量,如下图所示。

关闭并保存程序

2. 在DAT文件中创建变量

①进入专家用户组模式

②在编辑器中打开DAT文件

③声明变量,如下图所示

④关闭并保存数据列表

3. 在$CONFIG.DAT中创建变量

进入专家用户组模式

在编辑器中打开SYSTEM(系统)文件夹中的$CONFIG.DAT,出现下图所示的界面

选择Fold“USERCLOBALS”,然后用软键“打开/关闭Fold”将其打开

声明变量,如下图所示

关闭并保存数据列表

4. 在DAT文件中创建全局变量

①进入专家用户组模式

②在编辑器中打开DAT文件

③通过关键词PULIC扩展程序头中的数据列表,如图所示。

④声明变量,如图所示。

⑤关闭并保存数据列表

•简单数据类型变量的初始化

在声明后变量都只预留了一个存储位置,其值总是无效值。在SRC文件中声明和初始化始终在两个独立的行中进行。在DAT文件中声明和初始化始终在一行中进行。常量仅可以在数据列表中声明并且必须当时立即初始化,初始化部分以第一次赋值开始。

•整数的初始化方法

1)初始化为十进制数,如下图所示

2)初始化为二进制数,如下图所示

3)初始化为十六进制数,如下图所示

•使用KRL初始化时的操作步骤

1.在SRC文件中声明和初始化

①在编辑器中打开SRC文件

②已声明完毕

③执行初始化,如下图所示

④关闭并保存程序

2. 在DAT文件中声明和初始化

①在编辑器中打开DAT文件

②已声明完毕

③执行初始化,如下图所示

④关闭并保存数据列表

3. 在DAT文件中声明和在SRC文件中初始化

①在编辑器中打开DAT文件

②进行声明,如下图所示

③关闭并保存数据列表

④在编辑器中打开SRC文件

⑤执行初始化,如下图所示

⑥关闭并保存程序

KRLArrays/数组

数组即Arrays,可为具有相同数据类型并借助下标区分的多个变量提供存储位置,数组的存储位置是有限的,即最大数组的大小取决于数据类型所需的存储空间大小。

声明时,数组大小金额数据类型必须已知,KRL中的起始下标始终从1开始,初始化始终可以逐个进行,在SRC文件中的初始化也可以采用循环方式进行。

数组的维数有1维数组,2维数组,3维数组,但KRL不支持4维及4维以上的数组。

•使用数组时的关联

1.数组变量的生存期和有效性与使用简单数据类型的变量时相同。

2.数组的声明和初始化可以通过以下几种方式进行:

①在SRC文件中建立数组声明,如下图所示

②在数据列表(即$CONFIG.DAT)中建立数组声明,如下图所示。

③在SRC文件中对数组进行声明并初始化,通过调用索引单独对每个数组进行声明和初始化,如下图所示。

另外,也可以用合适的循环,如下图所示。

④在数据列表中初始化数组,在每一个数组的数据列表中通过调用索引单独进行,接着将值显示在数据列表中,如下图所示。

但在数据列表中不允许进行如下图所示的声明和初始化  

⑤在数据列表中对数组进行声明并在SRC文件中进行初始化,夹入数组是如此建立在数据列表中,则不能在数据列表中查看当前值,只能通过变量显示检查当前值,如下图所示。

并且,我们要借助循环初始化组,如下图所示,进行1维数组、2维数组和3维数组的初始化。 假如数组是如此建立在数据列表中的,则不能在数据列表中查看当前值只能通过变量显示检查当前值。 DEFDAT MY_PROG EXRNAL DECLARAONS DECL BOOL error[10] DEF MY_PROG ( ) INI   error[1]=FALSE   error[2]=FALSE   error[3]=FALSE ... error[10]=FALSE 或 DEF MY_PROG ( ) INI FOR x = 1 TO 10   error[x]=FALSE ENDFOR 借助于循环进行初始化

1 维数组

DECL INT parts[15]

DECL INT x

FOR x = 1 TO 15

parts[x]= 4 ENDFOR 2 维数组 DECL INT parts_table[10,5] DECL INT x, y FOR x = 1 TO 10     FOR y = 1 TO 5        parts_table[x, y]= 6     ENDFOR ENDFOR  3 维数组 DECL INT parts_palette[5,4,3] DECL INT x, y, z FOR x = 1 TO 5     FOR y = 1 TO 4         FOR z = 1 TO 3             parts_palette[x, y, z]= 12         ENDFOR     ENDFOR ENDFOR   •使用Arrays时的操作步骤 ①确定数组的数据类型 ②确定数组的有效性和生存期 ③进行数组声明 ④初始化数组元素 ⑤在程序运行中,即始终在SRC文件中对数组进行操作 ⑥关闭并保存SRC文件,程序举例如下图所示。 DEF MY_PROG ( ) DECL REAL palette_size[10] DECL INT counter INI ;初始化 FOR counter = 1 TO 10    palette_size[counter] = counter * 1.5 ENDFOR ... ;单个更改值 palette_size[8] = 13 ... ;值比较 IF palette_size[3] > 4.2 THEN ...   枚举数据类型 枚举数据类型由一定量的常量(例如红、黄或蓝)组成。常量是可自由选择的名称,由编程员自己确定。一种枚举数据类型必须首先经过定义,然后才能继续使用。 •枚举数据类型的应用 枚举数据类型只能使用已知常量,并可任意扩展多次及任意使用,如下图所示。也可嵌入结构中。

 

枚举数据类型的有效性和生存期规定为,创建的局部枚举类型在到达END行便无效,在多个程序中使用的枚举类型必须在$CONFIG.DAT中进行声明。为了便于辨认,自定义的枚举类型应以TYPE结尾   •生成枚举数据类型 ①枚举变量和常量的定义,如下图所示。 ②工作变量的声明,如下图所示。 ③工作变量的初始化,如下图所示。 ④工作变量的值比较,如下图所示。

   

编辑:黄飞

 

推荐阅读

史海拾趣

Heatron LED Integration公司的发展小趣事

Heatron LED Integration深知品质对于产品的重要性,因此从原材料采购到生产制造,每一环节都严格把关。公司建立了完善的质量管理体系,确保每一款LED产品都能达到国际最高标准。同时,公司还注重产品的性能优化,通过不断的研发和技术升级,提升产品的发光效率和使用寿命。这种对品质和性能的双重追求,使得Heatron LED Integration的产品在市场上享有极高的声誉。

Cincon公司的发展小趣事

1991年,Cincon公司在台湾成立,标志着其在电子行业的起步。公司创立之初,便在台北设立了销售办事处,同时在彰化建立了工厂,专注于电源产品的设计与生产。创立的第二年,Cincon便开始设计和制造DC/DC转换器和电池充电器,这为其在电源行业奠定了坚实的基础。随着市场需求的不断增长,公司于1997年开始涉足交流/直流开关电源的设计与制造,进一步扩大了产品线。

Akahane Electronics Ind Corp公司的发展小趣事

面对日益严重的环境问题,Akahane敏锐地捕捉到绿色电子产品的市场潜力。公司投入大量研发资源,开发出低能耗、环保的电子产品,并积极推广绿色生产和循环经济理念。这一举措不仅赢得了消费者的青睐,还为公司赢得了良好的社会声誉。同时,Akahane还积极参与国际环保组织的活动,推动电子行业的绿色化发展。

ELECTRONIC ASSEMBLY公司的发展小趣事

在电子组装行业,品质是企业的生命线。一家名为“品质电子组装”的公司,从创立之初就坚持以品质为核心竞争力。公司引进了国际先进的生产设备和管理体系,建立了严格的质量控制体系,确保每一件产品都符合高标准、严要求。正是凭借着对品质的坚守和追求,品质电子组装赢得了客户的广泛赞誉和信赖,逐渐在行业中树立了良好的口碑。

福斯特半导体(Foster)公司的发展小趣事

在环保日益受到重视的今天,一家名为“绿源电子组装”的公司积极响应国家号召,致力于推动绿色环保的产业发展。公司引进了一系列环保设备和材料,采用了低碳、节能的生产工艺和管理方式,实现了生产过程中的减排降耗。同时,绿源电子组装还积极参与社会公益活动,倡导绿色消费理念,为行业的可持续发展贡献了自己的力量。

GSG公司的发展小趣事
通过无线通信技术,可以实现对压力测量点的远程监控和数据传输。

问答坊 | AI 解惑

PB.50编译出错,寻求高手指点

Failed to find a range for data of size 86246 Error: Ran out of space in ROM for SHELLRES.DLL size 86246 Fatal error hit, exiting... makeimg: FATAL ERROR: Command returned non-zero exit code 1 (dec). makeimg: FATAL ERROR: Com ...…

查看全部问答>

vxworks+minigui task异常,重新启动

在开发过程中,做如下一些类似修改: 比如将   strncat (conv_strings, &pstr[0], ftop); 修改成strncat (conv_strings, &pstr[0], ftop < 255 - strlen(conv_strings) ? ftop : 255 - strlen(conv_strings)); 数组conv_strings的大小 ...…

查看全部问答>

请教关于sizeof的一个问题

向各位大侠请教一个问题。 我在a.c里定义了一个数组 char cUnitTab[]={...},由赋值确定数组长度, 在a.h中有下列内容 extern  char cUnitTab[]; #define UNITLEN sizeof(cUnitTab) b.c包含a.h,使用UNITLEN 这个UNITLEN 宏的时候提示 ...…

查看全部问答>

需要STM32电机控制开发套件的客户可以向ST的代理订购

STM32电机控制开发套件向设计工程师提供了一个学习和评估STM32电机驱动特性的平台,该平台提供了基于矢量控制的算法控制三相无刷电机和交流感应电机的例子,您可使用此平台开发相关的应用。STM32电机控制开发套件包括:- 演示软件和STM32 ...…

查看全部问答>

FLASH为何只能烧写到)X80000???

本帖最后由 dontium 于 2015-1-23 13:26 编辑 FLASH烧写只能到0X80000????? 我司做了块DSP块用MX29LV320B,DM642应该可以访问到1M的空间,但我用FlashBoot来烧写的话总只能烧到OX8000(512K)的空间,且烧写后读出来的数据0X8000与0X0地址的数据一样, ...…

查看全部问答>

CONV_INTEGER ,CONV_STD_LOGIC_VECTOR使用详解

std_logic_arithThis is the library that defines some types and basic arithmetic operations for representing integers in standard ways. This is a Synopsys extention. The source code is in std_logic_arith.vhd and is freely redis ...…

查看全部问答>

430f47187头文件上哪去弄

请教各位大侠,430f47187头文件上哪去弄啊,…

查看全部问答>

blackfin系列ADSP512没有flash,怎么烧写程序?望高手指导

blackfin系列ADSP512没有flash,怎么烧写程序?望高手指导…

查看全部问答>

ADI有奖下载活动之4 压力变送器解决方案(已颁奖)

>>【颁奖礼】ADI有奖下载活动之4 压力变送器解决方案 新的活动来了,下载解决方案,轻松获奖!小伙伴们还在等什么,加入我们的队伍吧!!! 活动详情:>>ADI有奖下载活动之4  压力变送器解决方案 下载ADI压力变送器解决方案。将有20 ...…

查看全部问答>

通信程序基本问题:我们怎么处理完整数据帧的接收问题

本帖最后由 辛昕 于 2014-8-11 08:27 编辑 我本来已经睡下了,虽然脑子里乱七八糟想着事情,但还是打算忍着不爬起来,以免又拖到很晚才睡着。 然而某刻我突然想起什么,拿着手机简单登陆了一下论坛。 无意看到曹世鹏的一篇博客,发现对于 串口 ...…

查看全部问答>