官方服务微信:dat818 购买与出租对接

深入解析库卡机器人CAST_TO和CAST_FROM指令:技术员必备指南

2万

主题

2

回帖

8万

积分

管理员

积分
86692
发表于 2025-1-22 13:19:13 | 显示全部楼层 |阅读模式
    说到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)。指令中变量的变换:字符串-&gt;Hex-ASCII-&gt;高低位交换-&gt;Hex-ASCII-&gt;二进制-&gt;分配各个变量;

    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)./主要用于做数据转换时:数据高低字节转换(大小端问题)、字符串处理等。

更多帖子推荐

您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|小黑屋|关于我们

Copyright © 2001-2025, Tencent Cloud.    Powered by Discuz! X3.5    京ICP备20013102号-30

违法和不良信息举报电话:86-13718795856 举报邮箱:hwtx2020@163.com

GMT+8, 2025-4-23 08:57 , Processed in 0.060815 second(s), 18 queries .