18616728999

上海市嘉定区南翔镇众仁路399号B座20楼

侧边悬浮
主页 > 技术服务 > 常见问题

KUKA 机器人CAST_TO-CAST_FROM如何设置呢?

2021-05-10 15:18:03

下面是KUKA机器人中-TCP通讯里的纯理论的东西.

CAST_TO

CAST_TO使得使用单个CWRITE语句处理多达4 KB的数据成为可能。CAST_TO将单个变量分组为一个缓冲区。然后,CWRITE将此缓冲区写入通道。

*大缓冲区大小:4 KB(= 4,096字节)。如果数据量太大,以致*大缓冲区大小不足,则必须使用几个连续的CWRITE语句。

CAST_TO不会触发提前运行停止,但是,如果处理的变量确实触发了提前运行stop,则间接触发提前运行停止。

如果使用CWRITE传输使用CAST_TO生成的缓冲区,则CWRITE语句中仅允许以下转换字符:

r(=原始数据格式)

s(=字符串格式)

与s相比,r具有以下优点:

如果传输了字符0,则将其整数表示为字符串的结尾。r不会发生此问题。

偏移量以字节为单位。如果CREAD用r即二进制读取数据,则可以使用偏移量轻松计算已传输的值的数量。

CAST_TO (Buffer, OFFSET, Var1 < , … , Var10 > )

Buffer:

类型:CHAR数组,将变量Var1…Var10写入的缓冲区.

OFFSET:

类型:INT 缓冲区内的位置(以字节为单位),之后将数据写入缓冲区。偏移量从0开始。

Var1 … Var10

写入缓冲区的变量。每个语句*多可以有10个变量。

对于未初始化的变量或数组元素,会将随机值写入缓冲区。由于随机值可能会导致缓冲区接收器出现问题,因此建议初始化所有变量和数组元素。

CAST_FROM

CAST_FROM使得使用单个CREAD语句处理多达4 KB的数据成为可能。如果CREAD已从通道读取缓冲区,则CAST_FROM可以将缓冲区分解为各个变量。

*大缓冲区大小:4 KB(= 4,096字节)。如果数据量太大以至于*大缓冲区大小不足,则必须使用几个连续的CREAD语句。

CAST_FROM不会触发提前运行停止,但是,如果处理的变量确实触发了提前停止,则间接触发提前运行停止。

CAST_FROM ( Buffer , OFFSET, Var1 < , … , Var10 > )

例如在EthernetKRL( )程序中设定的EKI_GetFrame:

EKI_GetFrame从存储器读取 FRAME 类型的数值

示例 RET = EKI_GetFrame("Channel_1", "Root/TCP", MyFrame)

程序分析:

GLOBAL DEFFCT EKI_STATUS

EKI_GetFrame(strChannelName[]:IN,strPlace[]:IN,value:OUT)

声明变量:

DECL CHAR strChannelName[] 字符串

DECL CHAR strPlace[] 字符串

DECL FRAME value FRAME坐标类型变量

DECL CHAR Buff[24] 24长度的字符串

DECL STATE_T Stat 状态变量

DECL MODUS_T Mode

DECL EKI_STATUS Ret EthernetKRL通讯专用变量

DECL INT Offset

设置模式:

Mode = #SYNC 设置同步模式

Ret = EKI_NULL_STATUS

ret.buff=1

Offset = 0

Cast_To(Buff[], Offset,value) 将坐标变量写入缓冲区

CONTINUE

CWRITE($FCT_CALL,Stat,Mode,"EFC_eki_Get",strChannelName[],strPlace[],Buff[],Ret.Buff, Ret.Read, TYPEFRAME,Ret.Connected)

使用”EFC_eki_Get”将Buff[] 里字符串坐标FRAME值通过EthernetKRL软件发出开通的通道,给PC上位机软件使用

Offset=0

Cast_From(Buff[], Offset,value)将缓存区里的值再发给变量

Ret.Msg_No = Stat.Msg_No

RETURN Ret 发出反馈值

ENDFCT