SWRITE
SWRITE具有與CWRITE類似的功能和語法。但是,與CWRITE不同的是,SWRITE不會將數據寫入通道,而是寫入CHAR數組。
SWRITE可以與CWRITE結合在程序中。好處:
lCWRITE可以限制為將數據寫入通道。SWRITE可以執行更復雜的格式化任務。這使得程序更加靈活。
lCWRITE最多可以處理10個變量。結合多個SWRITE語句,可以寫入10多個變量的數據。
SWRITE觸發提前運行停止。
SWRITE(String,State,OFFSET,Format,Var1)
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__TXT[],ST_AUSG,OFFSET,"TotzeitAchse%dnachTestlauf=%d*12ms",(EaxNum+6),TotzeitNeu)
Format:CWRITE/SWRITE的“格式”變量
CWRITE或SWRITE的格式規范具有以下結構:“%U”
格式化字符。可選的。
多個格式字符可以應用于一個格式。
格式化字符描述+轉換后的值總是以符號開頭:正值帶+,負值帶-。如果不使用此格式化字符,則正值不帶符號表示,負值用-表示。-轉換后的值左對齊。#在格式x中,每個不等于0的值都以0開頭。在格式e、f和g中,總是插入小數點。0轉換后的值前面加上零以構成最小寬度W。[Space]在格式d、e、f、g或i中,轉換后的參數前面有一個空格。*格式c和r并不總是正確解釋數據字符串中的空格。為避免誤解,可以對空格使用帶星號(*)的特殊格式規范。因此,以該字符開頭的格式不再對應于Var變量之一,而是對應于數據字符串中的空格。要輸出的最小位置數。可選的。
小數點被視為有助于彌補最小數字,前置符號則不然。為了達到最小數量,在末尾添加零字節。必要時可以超過最小數量。
分揀機器人的軌跡規劃例子:
?VAR=1.56
"%+8.4d",VAR
結果:__+1.5600
VAR=125.568
"%+8.4d",VAR
結果:+125.5680
如果寬度指定為0x,這意味著要輸出的位置用零填充。
例子:
?VAR=1
"%+04d",VAR
Result:+0001
與不帶0的規格相比:
?"%+4d",VAR
Result:___+1
如果未指定寬度,則使用以下默認寬度:
INT,REAL,ENUM:4bytes
BOOL,CHAR:1byte
精度規格
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。
INTVI
VI=123
CWRITE(HANDLE,SW_T,MW_T,"%d",VI)
CWRITE(HANDLE,SW_T,MW_T,"%x",VI)
例子2
整數變量VI的值以二進制表示法傳輸:
INTVI
VI=123
CWRITE(HANDLE,SW_T,MW_T,"%r",VI)
例子3
傳輸數組的所有數組元素:
REALVR[10]
CWRITE(HANDLE,SW_T,MW_T,"%r",VR[])
使用“%r”格式時,系統不會檢查變量或數組元素是否已初始化。為尚未初始化的數組元素傳輸隨機值。
例子4
數組的前五個數組元素以二進制表示法傳輸:
REALVR[10]
CWRITE(HANDLE,SW_T,MW_T,"%.5r",VR[])
20個字節以二進制表示法傳輸。
例子5
傳輸直到第一個未初始化元素的所有數組元素:
CHARVS[100]
CWRITE(HANDLE,SW_T,MW_T,"%s",VS[])
例子6
傳輸前50個數組元素:
CHARVS[100]
CWRITE(HANDLE,SW_T,MW_T,"%s",VS[])
例子7
ENUM常量的內部值以ASCII符號傳輸。對應號碼轉:
DECLENUM_TYPE
CWRITE(HANDLE,SW_T,MW_T,"%d",E)
例子8
兩個REAL值與附加文本一起傳輸:
REALV1,V2
V1=3.97
V2=-27.3
CWRITE(...,...,...,"value1=%+#07.3fvalue2=+#06.2f",V1,V2)
傳輸以下數據:
value1=+03.970
value2=-27.30
審核
京東小黃人分揀機器人價格全自動分揀機器人視頻神木abb分揀機器人