字符串定義
字符串是一系列字符,每個(gè)字符作為一個(gè)字節(jié)存儲(chǔ)。
字符串由變量存儲(chǔ)時(shí),字符串長(zhǎng)度為0至254個(gè)字符,較長(zhǎng)為255個(gè)字節(jié),其中**個(gè)字符為長(zhǎng)度字節(jié)。
常數(shù)字符串直接輸入程序編輯器或數(shù)據(jù)塊時(shí),較長(zhǎng)為126個(gè)字節(jié); 且常數(shù)字符串必須用雙引號(hào)字符起始和結(jié)束 (如:"ABCD", "1234" )
字符串轉(zhuǎn)換
將浮點(diǎn)數(shù)/雙整/整數(shù)轉(zhuǎn)換為字符串,分別為轉(zhuǎn)換指令中的R_S,S_DI,I_S。
將字符串轉(zhuǎn)換為浮點(diǎn)數(shù)/雙整/整數(shù)分別為轉(zhuǎn)換指令中的S_R,S_DI,S_I。只能轉(zhuǎn)換0-9的字符,其他字符均為無效字符。
具體轉(zhuǎn)換步驟建議選中指令塊,按"F1",查看幫助信息。
幾點(diǎn)注意事項(xiàng):
1.無法識(shí)別科學(xué)計(jì)數(shù)法或指數(shù)形式,但不會(huì)設(shè)置溢出錯(cuò)誤SM1.1;例:“1.234E6”-->"1.234"
2.當(dāng)達(dá)到字符串結(jié)束時(shí)或當(dāng)發(fā)現(xiàn)**個(gè)無效字符時(shí),轉(zhuǎn)換終止;例:“123A456”--->"123"
另,如“A123”,**個(gè)字符即為無效字符,因此,設(shè)置溢出錯(cuò)誤SM1.1。
3.S_I指令,當(dāng)轉(zhuǎn)換產(chǎn)生一個(gè)大于32767或小于-32768的值時(shí),則設(shè)置溢出錯(cuò)誤(SM1.1)
字符串指令
字符串指令如下表所示:
指令例子如下:
字符串連接
字符串賦值字符串
字符串長(zhǎng)度
從字符串復(fù)制子字符串
在字符串中查找字符串
其中,VB0初始狀態(tài)通過數(shù)據(jù)塊定義,如下。
依次執(zhí)行程序后,監(jiān)控VB0、VB100、VB1000、VB20、VB1100、VB1200的狀態(tài),如下所示。
例程所需條件:
1、軟件版本:STEP 7-Micro/WIN SMART V2.3
2、SMART CPU固件版本:V1.0及以上
3、通訊硬件:TP電纜(以太網(wǎng)電纜)
所實(shí)現(xiàn)的功能:
結(jié)合上述文檔所描述,
各字符串指令的使用,具體說明參考程序注釋
String
注意:本例程僅供參考,程序中的CPU版本、類型可能與用戶實(shí)際使用不同,用戶可能需要先對(duì)例子程序做修改和調(diào)整,才能將其用于測(cè)試。本例程的作者和擁有者對(duì)于該例程的功能性和兼容性不負(fù)任何責(zé)任,使用該例程的風(fēng)險(xiǎn)完全由用戶自行承擔(dān)。由于它是免費(fèi)的,所以不提供任何擔(dān)保,錯(cuò)誤糾正和熱線支持,用戶不必為此聯(lián)系西門子技術(shù)支持與服務(wù)部門。
常問問題
1.字符串中既含有數(shù)字又含有其他字符(字母,特殊字符),如何只轉(zhuǎn)換數(shù)字部分??
如數(shù)字字符在前,其他字符在后;則可直接轉(zhuǎn)換,轉(zhuǎn)換部分到**個(gè)非數(shù)字字符前。
如數(shù)字字符在后,其他字符在前;則
1.其他字符長(zhǎng)度已知并固定;
如字符串定義如下:
注意:此處INDX處為有效字符的位數(shù),不包含字符串**位的長(zhǎng)度字節(jié)
執(zhí)行程序后,VW100=98;VD200=98;VD300=98.6
2.字符串實(shí)際內(nèi)容未知或其他字符長(zhǎng)度不定,則無法直接轉(zhuǎn)換,否則設(shè)置溢出錯(cuò)誤SM1.1。轉(zhuǎn)換可參考如下程序:
注:CHR_FIND為在**出現(xiàn)的字符串IN1中搜索字符串IN2中描述的字符集中的任何字符;找到的**個(gè)相符字符的位置,被寫入到OUT管腳。
仍以如下字符串為例:
程序執(zhí)行后,AC0=7;VD100=98.6