您好!欢迎光临工博士商城

KUKA供电模块经销商

产品:82    
联系我们
您当前的位置:首页 » 新闻中心 » KUKA机器人高级编程SWRITE的用法
产品分类
新闻中心
KUKA机器人高级编程SWRITE的用法
发布时间:2021-11-24        浏览次数:389        返回列表
   SWRITE
 
  SWRITE 具有与 CWRITE 类似的功能和语法。但是,与 CWRITE 不同的是,SWRITE 不会将数据写入通道,而是写入 CHAR 数组。
 
  SWRITE 可以与 CWRITE 结合在程序中。好处:
 
  lCWRITE 可以限制为将数据写入通道。SWRITE 可以执行更复杂的格式化任务。这使得程序更加灵活。
 
  lCWRITE ***多可以处理 10 个变量。结合多个SWRITE语句,可以写入10多个变量的数据。
 
  SWRITE 触发提前运行停止。
 
  SWRITE (String, State, OFFSET , Format, Var1 <, var10="">)
 
  String: Type: CHAR[]
 
  Var 变量的格式化内容被写入字符串。
 
  State:Type: STATE_T
 
  自动返回到 WRITE 的状态
 
  OFFSET : Type: INT
 
  SWRITE 在字符串中开始写入的位置。如果要从头开始写入,则偏移量必须设置为 0。
 
  例如:
 
  OFFSET=0 : SWRITE 从***个位置开始写入。
 
  OFFSET=2 : SWRITE 从第三个位置开始写入。位置 1 和 2 被忽略。
 
  偏移量在写入期间递增。如果在另一个 SWRITE 语句的情况下,要从***个位置重新开始写入,则必须在此语句之前将偏移量设置为 0。否则,将接受前一条语句的增量偏移量。
 
  Format: Type: CHAR[]
 
  在将 Var 变量写入字符串之前转换它们。必须为每个 Var 变量指定格式。
 
  Var:
 
  其数据写入字符串的变量。每个语句***多可以有 10 个变量。
 
  例如:
 
  体现出报警信息:
 
  OFFSET=0
 
  SWRITE(user_msg.msg_TXT[],ST_AUSG,OFFSET,"Totzeit Achse%d nach Testlauf= %d *12ms ",(EaxNum+6), TotzeitNeu)
 
  Format :CWRITE/SWRITE 的“格式”变量
 
  CWRITE 或 SWRITE 的格式规范具有以下结构:“ %U”
 
  格式化字符。可选的。
 
  多个格式字符可以应用于一个格式。
 
  要输出的***小位置数。可选的。
 
  小数点被视为有助于弥补***小数字,前置符号则不然。为了达到***小数量,在末尾添加零字节(以小端格式)。必要时可以超过***小数量。
 
  例子:
 
  VAR=1.56
 
  "%+8.4d", VAR
 
  结果: _ _ + 1 . 5 6 0 0
 
  VAR=125.568
 
  "%+8.4d", VAR
 
  结果: + 1 2 5 . 5 6 8 0
 
  如果宽度指定为 0x,这意味着要输出的位置用零填充。
 
  例子:
 
  VAR=1
 
  "%+04d", VAR
 
  Result: + 0 0 0 1
 
  与不带0的规格相比:
 
  "%+4d", VAR
 
  Result: _ _ _ + 1
 
  如果未指定宽度,则使用以下默认宽度:
 
  INT, REAL, ENUM: 4 bytes
 
  BOOL, CHAR: 1 byte
 
  精度规格
 
  r 在数组的情况下: 要表示的数组元素数。
 
  e, f:要表示的数组元素数。
 
  G: 有效数字位数
 
  S: 表示的***大字符数
 
  所有其他格式: 要表示的字符数。如果源值包含更多字符,则会被截断或四舍五入。
 
  对于大多数数据类型,有几种允许的格式,例如 "%s" 和 "%1.r" 用于 CHAR 数组。需要选择哪种格式取决于伙伴控制器发送或接收数据的方式。
 
  在数组的情况下,规范“Z”可用于定义要考虑的数组元素的数量。如果没有为“Z”指定值,则考虑所有数组元素。然而,该过程在***个未初始化的值处中止。一个例外是格式 r。在这种情况下,该过程不会中止。相反,为尚未初始化的变量或数组元素输出随机值。
 
  数据类型 BOOL
 
  每个不等于零的值都转换为 TRUE
 
  数据类型枚举
 
  系统检查该值是否为允许的 ENUM 值。如果不是,则中止读取。***个 ENUM 常量的值为 1。
 
  数组的格式规范
 
  如果没有足够的可用数据来满足格式规范(例如“%2.5r”,但仅存在 7 个字节),则不会读取此格式的任何内容并中止 CREAD 语句。被忽略的数据仍然可供读取。
 
  格式 %r
 
  只读取变量所能容纳的字节数。其余的仍然可以阅读。如果数组足够大但字节数不是数组元素大小的倍数,则冗余字节仍可用于读取(对于以下格式或下一个 CREAD 语句)。
 
  转换示例:
 
  例子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

更多了解
库卡机器人



 

联系热线:18720923801(微信同号)   联系人:邱擎阳 联系地址:上海市宝山区富联一路98弄6号

技术和报价服务:星期一至星期六8:00-22:00 KUKA供电模块经销商