说到CAST命令,估计大部分使用KUKA机器人的技术人员都会比较陌生。该命令包括 和 命令,主要在CREAD/手册中提到。今天我们就来熟悉一下这两条指令:
1.:
该指令将多个变量组合在一起并显示为字符串缓冲区。简而言之,我们可以使用该指令将多个变量(最多 10 个)一起写入字符串缓冲区。
语法: (, , Var1 )
元素
描述
1.类型:CHAR数组(字符串)
2. 字符串缓存写入变量 Var1…Var10
1.类型:INT
2. 指变量在字符串缓存中开始写入的起始字节位置。其值从0开始。例如:
-=0:变量写入从第一个字节开始;
-=2:变量写入从第3个字节开始,字节1/2的位置将被忽略;
变量1
..
..
变量10
1、要写入字符串缓存的变量,最多可以写入10个变量到字符串缓存;
2、要写入字符串缓存的变量必须在使用指令之前初始化并赋值;
3、写入字符串缓存的变量所占用的字节数取决于其本身的数据类型,如:
定义
阐明
INT 变量1
Var1写入缓存,占用4个字节;
布尔变量2
var2写入缓存,占用1字节;
真实变量3
Var3写入缓存,占用4字节;
总结笔记:
(1).该指令的作用是将多个变量值写入到一个字符串变量中;
(2)。指令中变量的变换:变量值->二进制->Hex-ASCII->高低位交换->Hex-ASCII->写入
案例描述:将$/10/3.14/TRUE/”F”写入[ ]
<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre class="code-snippet__js" data-lang="properties"><code><span class="code-snippet_outer"><span class="code-snippet__attr">DEF</span> <span class="code-snippet__string">CAST_TO_EXAMPLE()</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">DECLCHAR</span> <span class="code-snippet__string">Buffer[4096]</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">DECLINT</span> <span class="code-snippet__string">Offset</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">Offset</span>=<span class="code-snippet__string">0</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">CAST_TO(Buffer[],Offset,$Axis_Act,10,3.14,TRUE,”F”)</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">HALT</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">END</span></span></code></pre></p>
2.:
该指令将字符串缓存数据分解为多个单个变量。简而言之,就是根据数据类型从字符串变量中获取各个变量的值;
语法:(,, Var1)
元素
描述
1.类型:CHAR数组(字符串)
2. 字符串缓存存储为变量 Var1…Var10 数据
1.类型:INT
2. 指字符串缓存中开始读取变量的起始字节位置。其值从0开始。例如:
-=0:变量从第一个字节开始读取;
-=2:变量从第3个字节开始读取,第1/2字节的位置将被忽略;
变量1
..
..
变量10
1.对于从字符串缓存中读取的变量,最多可以从字符串缓存中读取10个变量值;
2、使用指令前必须对要读取的字符串缓存进行初始化和赋值;
3、从字符串缓存中读取的变量所占用的字节数取决于其本身的数据类型,如:
定义
阐明
INT 变量1
Var1写入缓存,占用4字节;
布尔变量2
var2写入缓存,占用1字节;
真实变量3
Var3写入缓存,占用4个字节;
案例描述:
<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre class="code-snippet__js" data-lang="properties"><code><span class="code-snippet_outer"><span class="code-snippet__attr">DEF</span> <span class="code-snippet__string">CAST_TO_FROM_EXAMPLE()</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">DECLCHAR</span> <span class="code-snippet__string">Buffer[4096]</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">DECLINT</span> <span class="code-snippet__string">Offset</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">DECLE6AXIS</span> <span class="code-snippet__string">Var1</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">DECLINT</span> <span class="code-snippet__string">Var2</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">DECLREAL</span> <span class="code-snippet__string">Var3</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">DECLBOOL</span> <span class="code-snippet__string">Var4</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">DECLCHAR</span> <span class="code-snippet__string">Var5</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">Offset</span>=<span class="code-snippet__string">0</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">CAST_TO(Buffer[],Offset,$Axis_Act,10,3.14,TRUE,”F”)</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">HALT</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">Offset</span>=<span class="code-snippet__string">0</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">CAST_FROM(Buffer[],Offset,Var1)</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">HALT</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">Offset</span>=<span class="code-snippet__string">48</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">CAST_FROM(Buffer[],Offset,Var2)</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">HALT</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">Offset</span>=<span class="code-snippet__string">52</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">CAST_FROM(Buffer[],Offset,Var3)</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">HALT</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">Offset</span>=<span class="code-snippet__string">56</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">CAST_FROM(Buffer[],Offset,Var4)</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">HALT</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">Offset</span>=<span class="code-snippet__string">57</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">CAST_FROM(Buffer[],Offset,Var4)</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">HALT</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">END</span></span></code></pre></p>
总结笔记:
(1).该指令的作用是从字符串变量中读取各个变量的值;
(2)。指令中变量的变换:字符串->Hex-ASCII->高低位交换->Hex-ASCII->二进制->分配各个变量;
3. CAST指令允许的数据类型和占位符:
序列号
数据类型
占位符
INT
4字节
真实的
4字节
布尔值
1字节
字符
1字节
枚举
4字节
1字节
框架
6*REAL=24 字节
销售点
6*REAL+2*INT=32 字节
轴
6*REAL=24 字节
10
电子收银机
6*REAL+2*INT+3*REAL=44 字节
11
6*REAL +3*REAL=36 字节
12
电子收银机
6*REAL+2*INT+6*REAL=56 字节
13
6*REAL +6*REAL=48 字节
总结笔记:
(1)CAST指令可以处理简单数据类型(INT/REAL/BOOL/CHAR/ENUM)的数组;
(2)CAST指令不检查数组中的元素是否已初始化,未初始化的元素会写入随机值;
(3)。 CAST指令中只能使用上表中序号为7-13的结构体变量;对于其他结构体变量,如果需要使用CAST指令,则必须一次处理一个元素;
(4)./主要用于做数据转换时:数据高低字节转换(大小端问题)、字符串处理等。 |