SWRITE
SWRITE 具有與 CWRITE 類似的功能和語法。但是,與 CWRITE 不同的是,SWRITE 不會將數(shù)據(jù)寫入通道,而是寫入 CHAR 數(shù)組。
SWRITE 可以與 CWRITE 結(jié)合在程序中。好處:
lCWRITE 可以限制為將數(shù)據(jù)寫入通道。SWRITE 可以執(zhí)行更復雜的格式化任務(wù)。這使得程序更加靈活。
lCWRITE 最多可以處理 10 個變量。結(jié)合多個SWRITE語句,可以寫入10多個變量的數(shù)據(jù)。
SWRITE 觸發(fā)提前運行停止。
SWRITE (String, State, OFFSET , Format, Var1 <, var10="">)
String: Type: CHAR[]
Var 變量的格式化內(nèi)容被寫入字符串。
State:Type: STATE_T
自動返回到 WRITE 的狀態(tài)
OFFSET : Type: INT
SWRITE 在字符串中開始寫入的位置。如果要從頭開始寫入,則偏移量必須設(shè)置為 0。
例如:
OFFSET=0 : SWRITE 從第一個位置開始寫入。
OFFSET=2 : SWRITE 從第三個位置開始寫入。位置 1 和 2 被忽略。
偏移量在寫入期間遞增。如果在另一個 SWRITE 語句的情況下,要從第一個位置重新開始寫入,則必須在此語句之前將偏移量設(shè)置為 0。否則,將接受前一條語句的增量偏移量。
Format: Type: CHAR[]
在將 Var 變量寫入字符串之前轉(zhuǎn)換它們。必須為每個 Var 變量指定格式.
Var:
其數(shù)據(jù)寫入字符串的變量。每個語句最多可以有 10 個變量。
例如:
體現(xiàn)出報警信息:
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 的格式規(guī)范具有以下結(jié)構(gòu):“ %U”
格式化字符??蛇x的。多個格式字符可以應用于一個格式。
要輸出的最小位置數(shù)??蛇x的。
小數(shù)點被視為有助于彌補最小數(shù)字,前置符號則不然。為了達到最小數(shù)量,在末尾添加零字節(jié)(以小端格式)。必要時可以超過最小數(shù)量。
例子:
? VAR=1.56
"%+8.4d", VAR
結(jié)果: _ _ + 1 . 5 6 0 0
VAR=125.568
"%+8.4d", VAR
結(jié)果: + 1 2 5 . 5 6 8 0
如果寬度指定為 0x,這意味著要輸出的位置用零填充。
例子:
? VAR=1
"%+04d", VAR
Result: + 0 0 0 1
與不帶0的規(guī)格相比:
? "%+4d", VAR
Result: _ _ _ + 1
如果未指定寬度,則使用以下默認寬度:
INT, REAL, ENUM: 4 bytes
BOOL, CHAR: 1 byte
精度規(guī)格
r 在數(shù)組的情況下: 要表示的數(shù)組元素數(shù).
e, f:要表示的數(shù)組元素數(shù).
G: 有效數(shù)字位數(shù)
S: 表示的最大字符數(shù)
所有其他格式: 要表示的字符數(shù)。如果源值包含更多字符,則會被截斷或四舍五入。
轉(zhuǎn)換字符是格式變量的一個組成部分。
表中列出的轉(zhuǎn)換字符是允許的。它們對應于編程語言 C 中 fprintf() 函數(shù)的格式化字符。不支持 fprintf() 中的字符 o、p、n、u 和 [list]。
帶有轉(zhuǎn)換字符的大寫和小寫字母沒有區(qū)別。布爾值輸出為 0 或 1,ENUM 常量輸出為數(shù)字。
c 需要一個單字符參數(shù);然后將其作為 ASCII 字符處理。不能為帶有轉(zhuǎn)換字符 c 的格式指定寬度 W。
d 整數(shù)表示為小數(shù)。
e 指數(shù)符號。參數(shù)被轉(zhuǎn)換為格式 [-]m.nnnnnnxx 。format 中的第二個字符串指定小數(shù)點右側(cè)的位數(shù)。
f 小數(shù)點表示。參數(shù)以 [-]mm.nnnnnn 格式表示。format 中的第二個字符串指定小數(shù)點右側(cè)的位數(shù)。
g 使用 %e 或 %f 執(zhí)行格式化,具體取決于哪種格式允許更短的表示。
i 整數(shù)表示為小數(shù)。
r 將其變量的值不轉(zhuǎn)換為 ASCII,而是轉(zhuǎn)換為二進制表示法。使用 %r 格式,系統(tǒng)不會檢查變量或數(shù)組元素是否已初始化。
s 表示一個字符串。
x 十六進制表示法。表示以 16 為基數(shù)的參數(shù)。
對于大多數(shù)數(shù)據(jù)類型,有幾種允許的格式,例如 "%s" 和 "%1.r" 用于 CHAR 數(shù)組。需要選擇哪種格式取決于伙伴控制器發(fā)送或接收數(shù)據(jù)的方式。
在數(shù)組的情況下,規(guī)范“Z”可用于定義要考慮的數(shù)組元素的數(shù)量。如果沒有為“Z”指定值,則考慮所有數(shù)組元素。然而,該過程在第一個未初始化的值處中止。一個例外是格式 r。在這種情況下,該過程不會中止。相反,為尚未初始化的變量或數(shù)組元素輸出隨機值。
數(shù)據(jù)類型 BOOL
每個不等于零的值都轉(zhuǎn)換為 TRUE
數(shù)據(jù)類型枚舉
系統(tǒng)檢查該值是否為允許的 ENUM 值。如果不是,則中止讀取。第一個 ENUM 常量的值為 1。
數(shù)組的格式規(guī)范
如果沒有足夠的可用數(shù)據(jù)來滿足格式規(guī)范(例如“%2.5r”,但僅存在 7 個字節(jié)),則不會讀取此格式的任何內(nèi)容并中止 CREAD 語句。被忽略的數(shù)據(jù)仍然可供讀取。
格式 %r
只讀取變量所能容納的字節(jié)數(shù)。其余的仍然可以閱讀。如果數(shù)組足夠大但字節(jié)數(shù)不是數(shù)組元素大小的倍數(shù),則冗余字節(jié)仍可用于讀取(對于以下格式或下一個 CREAD 語句)。
轉(zhuǎn)換示例:
例子1
整數(shù)變量 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
整數(shù)變量 VI 的值以二進制表示法傳輸:
INT VI
VI=123
CWRITE(HANDLE,SW_T,MW_T,"%r",VI)
例子3
傳輸數(shù)組的所有數(shù)組元素:
REAL VR[10]
CWRITE(HANDLE,SW_T,MW_T,"%r",VR[])
使用“%r”格式時,系統(tǒng)不會檢查變量或數(shù)組元素是否已初始化。為尚未初始化的數(shù)組元素傳輸隨機值。
例子4
數(shù)組的前五個數(shù)組元素以二進制表示法傳輸:
REAL VR[10]
CWRITE(HANDLE,SW_T,MW_T,"%.5r",VR[])
20 個字節(jié)以二進制表示法傳輸。
例子5
傳輸直到第一個未初始化元素的所有數(shù)組元素:
CHAR VS[100]
CWRITE(HANDLE,SW_T,MW_T,"%s",VS[])
例子6
傳輸前 50 個數(shù)組元素:
CHAR VS[100]
CWRITE(HANDLE,SW_T,MW_T,"%s",VS[])
例子7
ENUM 常量的內(nèi)部值以 ASCII 符號傳輸。對應號碼轉(zhuǎn):
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)
傳輸以下數(shù)據(jù):
value1=+03.970
value2=-27.30
在大眾版本內(nèi)的設(shè)置事例
SWRITE(USER_MSG.MSG_TXT[],stat,offset,"EKI:DatensatzB X=%7.2f,Y=%7.2f,Z=%7.2f,A=%7.2f,B=%7.2f,C=%7.2f ",EKI_B.X,EKI_B.Y,EKI_B.Z,EKI_B.A,EKI_B.B,EKI_B.C)
將多個浮點數(shù)據(jù)寫入在USER_MSG.MSG_TXT[]字符串里.
SWRITE(USER_MSG.MSG_txt[],STATE, OFFSET, "TCP alt X=%.1F Y=%.1F Z=%.1F",TOOL_DATA[COR_TOOL_NO].x,TOOL_DATA[COR_TOOL_NO].y,TOOL_DATA[COR_TOOL_NO].z)
將TOOL_DATA的數(shù)據(jù)寫入到字符串USER_MSG.MSG_txt[]里,用來顯示TCP.
通過SWRITE的功能我們就可以實現(xiàn)了浮點數(shù)存入到字符串的功能.
SWRITE(USER_MSG.MSG_TXT[],STATE,OFFSET,"%s %s",sMeldFunction[],USER_MSG.MSG_TXT[])
將字符串寫入到USER_MSG.MSG_TXT[]字符串里
通過SWRITE功能我實現(xiàn)了歷史的突破!
審核編輯:郭婷
-
機器人
+關(guān)注
關(guān)注
213文章
30278瀏覽量
218100 -
編程語言
+關(guān)注
關(guān)注
10文章
1957瀏覽量
38492
原文標題:KUKA機器人高級編程SWRITE的用法
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
工業(yè)機器人的特點
盤點#機器人開發(fā)平臺
【「# ROS 2智能機器人開發(fā)實踐」閱讀體驗】視覺實現(xiàn)的基礎(chǔ)算法的應用
【「# ROS 2智能機器人開發(fā)實踐」閱讀體驗】機器人入門的引路書
庫卡KUKA機器人常見故障維修
名單公布!【書籍評測活動NO.58】ROS 2智能機器人開發(fā)實踐
使用 Thonny 對 XRP 機器人進行編程

【「具身智能機器人系統(tǒng)」閱讀體驗】2.具身智能機器人的基礎(chǔ)模塊
【「具身智能機器人系統(tǒng)」閱讀體驗】2.具身智能機器人大模型
《具身智能機器人系統(tǒng)》第1-6章閱讀心得之具身智能機器人系統(tǒng)背景知識與基礎(chǔ)模塊
鴻蒙機器人與鴻蒙開發(fā)板聯(lián)動演示
歐姆龍協(xié)作機器人TM25S可使用多種方法進行編程

評論