歡迎光臨
每天分享高質量文章

西門子S7-1200擴展指令(5)——字串和字符


點擊 《福利來了!PLC的資料(免費),你要嗎?

點擊第二波福利來了!PLC的資料(免費),你要嗎?

String 資料概述

字串資料型別

  • String 資料被儲存成 2 個位元組的標頭後跟最多 254 個 ASCII 碼字符組成的字符位元組。

  • String 標頭包含兩個長度。

  • 第一個位元組是初始化字串時方括號中給出的最大長度,預設值為 254。

  • 第二個標頭位元組是當前長度,即字串中的有效字符數。

  • 當前長度必須小於或等於最大長度。 String 格式占用的儲存位元組數比最大長度大 2個位元組。

初始化 String 資料
在執行任何字串指令之前,必須將 String輸入和輸出資料初始化為儲存器中的有效字串。
有效 String 資料
有效字串的最大長度必須大於 0 但小於 255。當前長度必須小於等於最大長度。字串無法分配給 I 或 Q 儲存區。

S_MOVE(移動字串)指令

字串移動指令:

引數的資料型別:

如果輸入 IN 中字串的實際長度超過輸出 OUT 儲存的字串最大長度,則會複製 OUT字串能容納的部分 IN 字串。

字串轉換指令

1、S_CONV、STRG_VAL 和 VAL_STRG(在字串與數值之間轉換)指令

可以使用以下指令將數字字串轉換為數值或將數值轉換為數字字串:
● S_CONV 用於將數字字串轉換成數值或將數值轉換成數字字串
● STRG_VAL 使用格式選項將數字字串轉換成數值
● VAL_STRG 使用格式選項將數值轉換成數字字串

S_CONV(轉換字串):

字串引數 IN的轉換從首個字符開始,並一直進行到字串的結尾,或者一直進行到遇到第一個不是“0”到“9”、“+”、“-”或“.”的字符為止。 結果值將在引數OUT 中指定的位置提供。
如果輸出數值不在 OUT 資料型別的範圍內,則引數 OUT 設置為 0,並且 ENO設置為FALSE。 否則,引數 OUT 將包含有效的結果,並且 ENO 設置為TRUE。
輸入 String 格式規則:
● 如果在 IN 字串中使用小數點,則必須使用“.”字符。
● 允許使用逗點字符“,”作為小數點左側的千位分隔符,並且逗點字符會被忽略。
● 忽略前導空格。

S_CONV(值到字串的轉換)

整數值、無符號整數值或浮點值 IN 在 OUT 中被轉換為相應的字串。
在執行轉換前,引數 OUT 必須取用有效字串。
有效字串由第一個位元組中的最大字串長度、第二個位元組中的當前字串長度以及後面位元組中的當前字串字符組成。 轉換後的字串將從第一個字符開始替換 OUT字串中的字符,並調整 OUT 字串的當前長度位元組。 OUT字串的最大長度位元組不變。
被替換的字符數取決於引數 IN 的資料型別和數值。 被替換的字符數必須在引數OUT的字串長度範圍內。 OUT字串的最大字串長度(第一個位元組)應大於或等於被轉換字符的最大預期數目。
下串列顯示了 S_CONV 值到字串的轉換示例。
輸出 String 格式規則:
● 寫入到引數 OUT 的值不使用前導“+”號。
● 使用定點表示法(不可使用指數表示法)。
● 引數 IN 為 Real 資料型別時,使用句點字符“.”表示小數點。
● 輸出字串中的值為右對齊並且值的前面有填有空字符位置的空格字符。

STRG_VAL(將字串轉換為數值)

轉換從字串 IN 中的字符偏移量 P位置開始,並一直進行到字串的結尾,或者一直進行到遇到第一個不是“+”、“-”、“.”、“,”、“e”、“E”或“0”到“9”的字符為止。 結果放置在引數 OUT 中指定的位置。
必須在執行前將 String 資料初始化為儲存器中的有效字串。
以下定義了 STRG_VAL 指令的 FORMAT 引數。 未使用的位位置必須設置為零。

STRG_VAL 指令的格式:

FORMAT 引數的值:

STRG_VAL 轉換的規則:
● 如果使用句點字符“.”作為小數點,則小數點左側的逗點“,”將被解釋為千位分隔符字符。 允許使用逗點字符並且會將其忽略。
● 如果使用逗點字符“,”作為小數點,則小數點左側的句點“.”將被解釋為千位分隔符字符。 允許使用句點字符並且會將其忽略。
● 忽略前導空格。

VAL_STRG(將數值轉換為字串)

VAL_STRG 指令的資料型別

此指令用於將引數 IN 表示的值轉換為引數 OUT 所取用的字串。 在執行轉換前,引數OUT 必須為有效字串。
轉換後的字串從字符偏移量計數 P 位置開始替換 OUT 字串中的字符,一直到引數SIZE 指定的字符數。 SIZE 中的字符數必須在 OUT 字串長度範圍內(從字符位置 P開始計數)。 如果 SIZE 引數為零,則字符將改寫字串OUT 中 P位置的字符,且沒有任何限制。 該指令對於將數字字符嵌入到文本字串中很有用。
例如,可以將數字“120”放入字串“Pump pressure = 120 psi”中。
引數 PREC 用於指定字串中小數部分的精度或位數。 如果引數 IN 的值為整數,則PREC 指定小數點的位置。 例如,如果資料值為 123 且 PREC = 1,則結果為“12.3”。
對於 Real 資料型別,支持的最大精度為 7 位。

如果引數 P 大於 OUT 字串的當前大小,則會添加空格,一直到位置P,並將該結果附加到字串末尾。 如果達到了最大 OUT 字串長度,則轉換結束。以下定義了 VAL_STRG 指令的 FORMAT 引數。 未使用的位位置必須設置為零。

VAL_STRG 指令的格式:

FORMAT 引數的值:

引數 OUT 字串的格式規則如下:
● 如果轉換後的字串小於指定的大小,則會在字串的最左側添加前導空格字符。
● 如果 FORMAT 引數的符號位為FALSE,則會將無符號和有符號整型值寫入輸出緩衝區,且不帶前導“+”號。必要時會使用“-”號。’.’● 如果符號位為TRUE,則會將無符號和有符號整型值寫入輸出緩衝區,且總是帶前導符號字符。’.’● 如果 FORMAT 被設置為指數表示法,則會按以下方式將 Real資料型別的值寫入輸出緩衝區: ‘.’ ‘E’
● 如果 FORMAT被設置為定點表示法,則會按以下方式將整型、無符號整型和實型值寫入輸出緩衝區:’.’● 小數點左側的前導零會被隱藏,但與小數點相鄰的數字除外。
● 小數點右側的值被舍入為 PREC 引數所指定的小數點右側的位數。
● 輸出字串的大小必須比小數點右側的位數多至少三個位元組。
● 輸出字串中的值為右對齊。

ENO 報告的條件:

當轉換操作遇到錯誤,指令傳回下列結果:
● ENO 設置為 0。
● OUT 設置為 0,或者如字串到值的轉換示例中所示。
● OUT 不變,或者如 OUT 為字串時的示例中所示。

S_CONV 字串到值的轉換示例:

S_CONV 值到字串的轉換示例:

示例: STRG_VAL 轉換:

示例: VAL_STRG 轉換:


尋找同路人

做自動化工業變革的踐行者


可通過選單查找自己喜歡的文章彙總:

現場儀錶DCS部分PLC部分SIS部分通訊標準數字化問題解答】此處列出部分鏈接,更多文章通過選單獲取。



赞(0)

分享創造快樂