CWRITE
CWRITE 将数据写入打开的串行接口或加载的 LD_EXT_OBJ 类型的外部模块。在加载的 LD_EXT_FCT 类型的外部模块中,CWRITE 调用一个函数。
CWRITE 将命令写入命令通道。
CWRITE 触发提前运行停止。
CWRITE ( Handle or $CMD, State, Mode, Format, Var1 <, ..., Var10>)
Handle/$CMD
类型:INT
句柄:由 COPEN 传输到 WRITE 的变量,用于标识通道
$CMD:用于写入命令通道的预定义变量
State:Type: STATE_T
自动返回到 WRITE 的状态
Mode : Type: INT
类型:MODUS_T
写入模式, 必须初始化模式。
Format: Type: CHAR[]
在将 Var 变量写入字符串之前转换它们。必须为每个 Var 变量指定格式.
Var:
其数据写入字符串的变量。每个语句最多可以有 10 个变量。
写模式Mode
写入模式由 MODUS_T 类型的变量确定。MODUS_T 是一个预定义的枚举类型:
ENUM MODUS_T SYNC, ASYNC, ABS, COND, SEQ 对于 CWRITE,只有 SYNC 和 ASYNC 相关:
SYNC同步
一旦伙伴控制器从接收缓冲区中取出传输的数据,则认为该语句已执行。
ASYNC异步
写入 LD_EXT_FCT 类型的外部模块时,不允许 ASYNC 模式!
以下适用于所有其他通道:一旦数据到达伙伴控制器的接收缓冲区,则认为该语句已执行。
-
优于 SYNC:程序执行速度更快。
-
与 SYNC 相比的缺点:可能会丢失数据。
其他价值
如果模式具有 SYNC 或 ASYNC 以外的值,则默认在 SYNC 模式下执行写入。
例如:
CWRITE($CMD,STAT,MODE,"RUN /R1/CELL ()")程序执行CELL程序
$CMD
通过命令通道$ CMD进行通信
CWRITE可以通过命令通道将语句传输到程序解释器。示例:通过RUN启动程序并使用STOP将其停止。
与命令通道$ CMD通信
命令通道:启动、停止和取消选择程序
程序 A6.SRC 将通过命令通道启动、停止和取消选择。这是通过 SUB 文件中的以下程序行来完成的。
DECL STATE_T STAT
DECL MODUS_T MODE
MODE=#SYNC
...
;select program A6()
;to start the program the START-button or
;an external start-signal is needed
IF $FLAG[1]==TRUE THEN
CWRITE($CMD,STAT,MODE,"RUN/R1/A6()")运行程序
$FLAG[1]=FALSE
ENDIF
;stop program A6()
IF $FLAG[2]==TRUE THEN
CWRITE($CMD,STAT,MODE,"STOP 1")程序停止
$FLAG[2]=FALSE
ENDIF
;cancel program A6()
IF $FLAG[3]==TRUE THEN
CWRITE($CMD,STAT,MODE,"CANCEL 1") 退出程序
$FLAG[3]=FALSE
ENDIF
转换示例:
例子1
整数变量 VI 的值以十进制和十六进制 ASCII 表示法传输。第一个 CWRITE 语句传输字符 123。第二个 CWRITE 语句传输字符 7B。
INT VI
VI=123
CWRITE(HANDLE,SW_T,MW_T,"%d",VI)
CWRITE(HANDLE,SW_T,MW_T,"%x",VI)
例子2
整数变量 VI 的值以二进制表示法传输:
INT VI
VI=123
CWRITE(HANDLE,SW_T,MW_T,"%r",VI)
例子3
传输数组的所有数组元素:
REAL VR[10]
CWRITE(HANDLE,SW_T,MW_T,"%r",VR[])
使用“%r”格式时,系统不会检查变量或数组元素是否已初始化。为尚未初始化的数组元素传输随机值。
例子4
数组的前五个数组元素以二进制表示法传输:
REAL VR[10]
CWRITE(HANDLE,SW_T,MW_T,"%.5r",VR[])
20 个字节以二进制表示法传输。
例子5
传输直到第一个未初始化元素的所有数组元素:
CHAR VS[100]
CWRITE(HANDLE,SW_T,MW_T,"%s",VS[])
例子6
传输前 50 个数组元素:
CHAR VS[100]
CWRITE(HANDLE,SW_T,MW_T,"%s",VS[])
例子7
ENUM 常量的内部值以 ASCII 符号传输。对应号码转:
DECL ENUM_TYP E
CWRITE(HANDLE,SW_T,MW_T,"%d",E)
例子8
两个 REAL 值与附加文本一起传输:
REAL V1,V2
V1=3.97
V2=-27.3
CWRITE(...,...,...,"value1=%+#07.3f value2=+#06.2f",V1,V2)
传输以下数据:
value1=+03.970
value2=-27.30
CWRITE和命令界面
CELL.SRC可通过CWRITE语句和RUN从SPS.SUB程序中选择。呼叫仅在冷启动时生效。
CWRITE可以通过命令通道$CMD将语句传输到解释器。除了机器人口译员和系统提交外,扩展提交也可在多提交模式下用于此目的。
与单一提交模式相比,以下命令的含义发生了变化:
-
RUN[口译员ID]
-
STOP[口译员ID]
-
重置[口译员ID]
-
取消[口译员ID]
口译员ID:
0:所有提交口译员
1:机器人翻译
2:系统提交解释器
3:扩展提交解释器1
4:扩展提交解释器2
…
9:扩展提交解释器7
此外,RUN还扩展了可选元素[>口译员ID]。 CWRITE ($CMD, STAT, MODE, "RUN/R1/CELL()") 单次提交模式下的行为: 启动程序CELL()。由于CELL()是一个SRC程序,因此它在机器人解释器中启动。 多提交模式下的行为: 与单次提交模式相同。该程序行可用于系统提交或扩展提交。 CWRITE ($CMD, STAT, MODE, "RUN/R1/SPS()") 单次提交模式下的行为: 启动程序SPS()。由于SPS()是一个SUB程序,它在系统提交解释器中启动(=仅在单次提交模式下提交解释器)。 多提交模式下的行为: 启动程序SPS()。由于SPS()是SUB程序,它在系统提交解释器中启动。
CWRITE ($CMD, STAT, MODE, "STOP 0")
这个程序行只在机器人程序中有意义。 单次提交模式下的行为: 停止系统提交解释器。 多提交模式下的行为: 停止所有正在运行的提交解释器。
CWRITE ($CMD, STAT, MODE, "CANCEL 0")
单次提交模式下的行为: 取消选择系统提交解释器。 多提交模式下的行为: 取消选择所有提交的口译员。 CWRITE ($CMD, STAT, MODE, "RUN/R1/MySubProg() > 5")在单次提交模式下不允许使用此语句。
多提交模式下的行为: 如果MySubProg()是SUB程序,它将从扩展的submit 3开始。 该程序行可用于其他提交解释器或机器人程序。
审核编辑 :李倩
-
机器人
+关注
关注
210文章
28212浏览量
206550 -
编程
+关注
关注
88文章
3595浏览量
93600 -
KUKA机器人
+关注
关注
4文章
143浏览量
9054
原文标题:KUKA机器人高级编程CWRITE的用法V3.1
文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论