說明
數據類型為 STRING 的操作數在一個字符串中存儲多個字符,最多可包括 254 個字符。在一個字符串中,可使用系統所創建代碼頁的所有字符。字符在單引號中指定。
字符串中還可包含特殊字符。轉義字符 $ 可用于標識控制字符、美元符號和單引號。
說明 不同代碼頁 請注意,在 Windows 系統中,特殊字符使用當前設置的代碼頁進行編碼。即,由于各操作系統使用的代碼頁不同,因此包含有特殊字符的字符串的顯示也將不同。 正是因為代碼頁對所在系統的依賴性,用戶程序的國際通用性變得極為困難。目前,僅 7 位 ASCII 編碼中的字符才具有國際通用性。 |
下表列出了 STRING 變量的屬性:
長度(字節) | 格式 | 值范圍 | 輸入值示例 |
---|---|---|---|
n + 2 1) | ASCII 字符串,包括特殊字符 | 0 到 254 個字符 |
'Name' STRING#'NAME' STRING#'Na...(該字符串的實際長度超出了屏幕空間。) STRING#'' (該字符串為空。) |
1) 數據類型為 STRING 的操作數在內存中占用的字節數比指定的最大長度要多 2 個字節。 |
下表給出了特殊字符表示法示例:
字符 | 十六進制 | 含義 | 示例 |
---|---|---|---|
$L 或 $l | 0A | 換行 | '$LText', '$0AText' |
$N | 0A 和 0D |
斷行 斷行在字符串中占用 2 個字符,在編輯器的顯示畫面中將轉換為 $R$L。 |
'$NText', '$0A$0DText' |
$P 或 $p | 0C | 分頁 | '$PText', '$0CText' |
$R 或 $r | 0D | 回車 (CR) | '$RText','$0DText' |
$T 或 $t | 09 | 切換 | '$TText', '$09Text' |
$$ | 24 | 美元符號 | '100$$', '100$24' |
$' | 27 | 單引號 | '$'Text$'','$27Text$27' |
如果轉義字符 $ 后面跟有該表格中的某個字母,則表格中指定該字符將包含在字符串中。如果轉義字符 $ 后面跟隨的字母不在該表格中,則該字母將包含在該字符串中。如果轉義字符 $ 后跟隨兩個或一個十六進制數字,該代碼將包含在字符串中。
監控表中的應用
以下示例適用于 S7-300/400 系列 CPU:監視一個數據類型為 STRING 的變量時,將僅顯示前 30 個字符。如果實際長度大于 30 個字符,則將顯示一個省略號 (…) 而非閉合撇號 (')。當 STRING 的值超過 30 個字符時,無法進行更改。
字符串的最大長度
在操作數的聲明過程中,可在關鍵字 STRING 后使用方括號指定字符串的最大長度(如,STRING[4])。也可以使用局部或全局常量聲明字符串的最大長度(如,STRING[#loc_const] 或 STRING["glob_const"])。如果未指定最大長度,則相應的操作數長度設置為標準的 254 個字符。
如果指定字符串的實際長度小于所聲明的最大長度,則字符將以左對齊方式寫入字符串,并將剩余的字符空間保持為未定義。在值處理和各種顯示過程中,僅涉及可確定字符串實際長度的所有字符空間量。
說明 對于 S7-300/400 CPU,請注意:如果定義了 STRING 數據類型的臨時變量,則在用戶程序中使用變量之前必須使用指定的長度定義 BYTE“字符串最大長度”。 |
傳遞 STRING 或 WSTRING 數據類型的變量 |
說明
可以將 STRING 或 WSTRING 數據類型的變量作為參數進行傳遞下表列出了不同 CPU 系列中 (W)STRING 的傳遞規則:
CPU 系列 | 數據類型 | 塊調用中的傳遞規則 |
---|---|---|
S7-300/400 | STRING | 聲明的形參和實參長度必須相同。 |
S7-1200/1500 |
STRING WSTRING |
聲明的形參和實參長度可以不同。在運行過程中,如果目標參數的聲明長度小于接收的 (W)STRING 參數長度,則截斷 (W)STRING 參數并將使能輸出 ENO 設置為 FALSE。 在程序編輯器中,參數處的灰色矩形表示 (W)STRING 在運行過程中可能被截斷。 例外: 調用 STL 塊時,形參和實參的聲明長度必須始終相同。 |
下圖顯示了一個塊調用中,聲明的形參和實參長度不同。由于聲明的長度不同,在運行過程中,“Input_String_20”和“Output_String_10”可能會截斷。
聲明 STRING 和 WSTRING 數據類型的變量 要聲明 STRING 或 WSTRING 數據類型的變量,請按以下步驟操作:
選擇接口中的相應聲明區域。 在“名稱”(Name) 列中輸入一個變量名稱。 在“數據類型”(Data type) 列中輸入“STRING”或“WSTRING”。輸入時系統將提供自動完成功能。 可選:在關鍵字 STRING 或 WSTRING 后面,使用方括號指定字符串的最大長度。如果未指定最大長度,則字符串的默認長度為 254 個字符。 最大長度為 4 的 WSTRING 示例: WSTRING[4] 使用局部常量定義字符串最大長度的示例: STRING[#My_local_const1] 使用全局常量定義字符串最大長度的示例: STRING["My_global_const1"] |
CHAR 隱式轉換
隱式轉換選項
下表列出了 CHAR 數據類型的隱式轉換選項:
源 | 目標 |
進行 IEC 檢查 |
不進行 IEC 檢查 |
說明 |
---|---|---|---|---|
CHAR | BOOL | - | - | 不能進行隱式轉換 |
BYTE | - | X | 源值的位模式以右對齊方式原樣傳遞到目標數據類型。其余位從左邊開始填充 0。 | |
WORD | - | X | ||
DWORD | - | X | ||
SINT | - | X | ||
USINT | - | X | ||
INT | - | X | ||
UINT | - | X | ||
DINT | - | X | ||
UDINT | - | X | ||
REAL | - | - | 不能進行隱式轉換 | |
LREAL | - | - | ||
TIME | - | - | ||
DTL | - | - | ||
TOD | - | - | ||
DATE | - | - | ||
WCHAR | - | - | ||
STRING | X | X | 該 STRING 長度變短為 1 并包含該字符。 | |
WSTRING | - | - | 不能進行隱式轉換 | |
x:可以轉換 -: 不可轉換 |
顯式轉換選項 下表列出了 CHAR 數據類型的顯式轉換選項和指令:
源 | 目標 | 轉換 | 說明 | 指令助記符 |
---|---|---|---|---|
CHAR | BOOL | - | 不能進行顯式轉換 | - |
BYTE1) | X | 源值的位模式以右對齊方式原樣傳遞到目標數據類型。 | CHAR_TO_BYTE | |
WORD1) | X | CHAR_TO_WORD | ||
DWORD1) | X | CHAR_TO_DWORD | ||
SINT | X | CHAR_TO_SINT | ||
USINT | X | CHAR_TO_USINT | ||
INT | X | CHAR_TO_INT | ||
UINT | X | CHAR_TO_UINT | ||
DINT | X | CHAR_TO_DINT | ||
UDINT | X | CHAR_TO_UDINT | ||
REAL | - | 不能進行顯式轉換 | - | |
LREAL | - | - | ||
TIME | - | - | ||
DTL | - | - | ||
TOD | - | - | ||
DATE | - | - | ||
STRING | X | 值將轉換為字符串 (STRING) 的第一個字符。若未定義字符串的長度,則轉換后長度設置為“1”。如果已定義字符串的長度,則它在轉換后保持不變。 | CHAR_TO_STRING | |
WSTRING | - | 不能進行顯式轉換 | - | |
WCHAR | X | CHAR_TO_WCHAR | ||
x:可以轉換 - : 不可轉換 1) 位串 (BYTE、WORD、DWORD) 和數據類型 CHAR 一開始就擴展成所需的寬度,然后再復制這些位。源類型決定了解釋方法。 |
移動和轉換字符串
1. 移動和轉換字符串指令的調用,如圖1所示。
圖1. 移動和轉換字符串指令
2. 移動和轉換字符串指令的使用。
(1)移動字符串指令S_MOVE。
S_MOVE指令可以將參數IN中的字符串寫入到參數OUT中的指定數據區域。
在全局DB中創建兩個String類型變量,用來保存數據,如圖2所示:
圖2. 在全局DB中創建變量
在OB1中調用S_MOVE指令,并連接參數,如圖3所示:
圖3. 在OB1中調用S_MOVE指令
將需要復制的字符串("StringInput")通過輸出參數OUT("StringOutput")輸出,如圖4所示:
圖4. S_MOVE指令執行結果
(2)轉換字符串指令S_CONV。
S_CONV指令可以將參數IN中的數值轉換為OUT輸出中指定的數據格式,下面列出了可能進行數值轉換的數據類型:
1)將字符串轉換為數字值
參數IN中的數值數據類型為STRING,WSTRING;參數OUT中數值的數據類型為CHAR,WCHAR,USINT,UINT,UDINT,SINT,INT,DINT,REAL,LREAL。
2)將字符串轉換為字符串
參數IN中的數值數據類型為STRING,WSTRING;參數OUT中數值的數據類型為STRING,WSTRING。
3)將數字值或字符轉換為字符串
參數IN中的數值數據類型為CHAR,WCHAR,USINT,UINT,UDINT,SINT,INT,DINT,REAL,LREAL;參數OUT中數值的數據類型為STRING,WSTRING。
4)將字符轉換為字符
參數IN中的數值數據類型為CHAR,WCHAR;參數OUT中數值的數據類型為CHAR,WCHAR。
在全局DB中創建四個變量,用來保存數據,如圖5所示:
圖5. 在全局DB中創建變量
在OB1中調用S_CONV指令,并連接參數,選擇數據類型。在第一個選項中選擇待轉換的數據類型("ValueInput"),本例中為Int類型;在第二個選項中選擇待生成字符串的數據類型("StringOutput"),本例中為String類型,如圖6所示:
圖6. 在OB1中調用S_CONV指令
將需要轉換的數值("ValueInput")轉換為輸出格式,在字符串開頭處的空白區域寫入空格,轉換結果以字符串形式通過輸出參數OUT("StringOutput")輸出,如圖7所示:
圖7. S_CONV指令執行結果(LAD語言)
注:如果使用SCL語言調用S_CONV指令,當數字值轉換為字符串時,字符串的第一個字符不會使用空格進行填充,如圖8所示:
圖8. S_CONV指令執行結果(SCL語言)
審核編輯:劉清
-
STL
+關注
關注
0文章
85瀏覽量
18300 -
S7-300
+關注
關注
8文章
225瀏覽量
34249 -
ASCII碼
+關注
關注
0文章
51瀏覽量
17298
原文標題:西門子博途: STRING的使用
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論