字符串最大長度占用長度為256個字符長度,其中
第一個字符定義為字符串的最大長度數值
第二個字符定義為字符串的有效長度數值
從第三個字符開始為實際有效的字符,最大可設置254個字符長度,每個字符的數據類型是:Char。字符是以ASCII的方式存儲。
ASCII碼與16進制和10進制轉換關系如下圖所示:
表1 ASCII碼表
1. STEP7庫功能
STEP7庫中提供了如下幾個轉換塊:(庫文件路徑:庫libraries---Standard Libray---IEC Function Blocks)
(FC94,95路徑:庫libraries---Standard Libray---TI-S7 Converting Blocks)
FC編號 |
功能名稱 |
描述 |
FC5 |
DI_STRING |
雙整數轉字符串 |
FC16 |
I_STRING |
整數轉字符串 |
FC30 |
R_STRING |
實數轉字符串 |
FC37 |
STRING_DI |
字符串轉雙整數 |
FC38 |
STRING_I |
字符串轉整數 |
FC39 |
STRING_R |
字符串轉實數 |
FC94 |
ATH |
ASCII轉換為十六進制 |
FC95 |
HTA |
十六進制轉換為ASCII |
表2. 字符串轉換
2 .整數(雙整數)轉字符串
以FC5為例,雙整數為有符號整數,因此如圖第三個有效字符為符號位,顯示“+”。
注意: 此處字符串定義最大長度為254個字符,圖二中第一位最大長度為-2為有符號數值。
圖1. FC5及數據塊定義
圖2. 變量表監看
3 .實數轉字符串
實數轉換為字符串,顯示格式為科學計數法。如圖3所示:
圖3. 科學計數法顯示
其有效數據最多顯示7位。同時轉換后的字符串固定占用14個有效字符長度。
注意,建立字符串最大長度時務必要大于14個字符長度,否則FC30不執行,無輸出。
圖4. FC30實例
4 .字符串轉16進制
FC94功能實際為將連續的字符轉換為連續的16進制。
因此,使用時注意:
1. 輸入"IN"為有效字符的起始地址,即字符串的前兩個固定占用字符需要跳過
2. 轉換個數與字符串本身定義的有效字符長度數值無關,只與輸入"N"有關
3. 字符占8位,16進制占16位;因此轉換后占位方式如圖6
圖5. FC94
圖6. FC94監看
如何將Date 或 Date_and_Time數據類型轉換為字符串?
參看"數據類型轉換的工具集
如何將字符串轉換為實數(非科學計數法形式)?
請參考:哪些標準 STEP 7函數可用來對字符串變量和ASCII 字符進行轉換和比較?
1. STEP7庫功能
STEP7庫中提供了如下幾個比較塊:(庫功能路徑:庫libraries---Standard Libray---IEC Function Blocks)
FC編號 |
功能名稱 |
描述 |
FC10 |
EQ_STRING |
S1=S2 |
FC13 |
GE_STRING |
S1≥S2 |
FC15 |
GT_STRING |
S1>S2 |
FC19 |
LE_STRING |
S1≤S2 |
FC24 |
LT_STRING |
S1 |
FC29 |
NE_STRING |
S1≠S2 |
表3. 字符串比較
注意:
1. 比較功能,比較的是兩個字符串的有效數據長度部分。即字符串定義的最大長度與比較結果無關。見圖7
2. 比較大小時,字符從上至下依次比較。見圖8
3. 比較大小時,字符轉換為16或10進制比較。即非數字字符,是轉換為16或10進制進行比較。見圖9
圖7. FC10比較大小
圖8. FC13比較大小
圖9. FC13比較大小
為何比較帶"+-"的字符串,"-"的字符串反而大于"+"字符串?
如圖9,由于"+"對應十進制43,"-"對應十進制45;因此對于+-號比較,"-"的字符串反而大于"+"的字符串。
1. STEP7庫功能
STEP7庫中提供了如下幾個功能塊:(庫功能路徑:庫libraries---Standard Libray---IEC Function Blocks)
FC編號 |
功能名稱 |
描述 |
FC2 |
CONCAT |
合并字符串 |
FC4 |
DELETE |
刪除字符串內字符 |
FC11 |
FIND |
字符串查找 |
FC17 |
INSERT |
字符串插入 |
FC20 |
LEFT |
讀取左側字符串 |
FC21 |
LEN |
字符串內有效字符長度 |
FC31 |
REPLACE |
字符串替換 |
FC32 |
RIGHT |
讀取右側字符串 |
表4. 字符串功能
注意:以上功能塊均以字符串的有效長度為基礎。
電話:13818569113 15721373211
郵箱:fushidianji@139.com
網址:http://morethanzerosum.com
地址:上海青浦區北青公路7171號111-112室