泰安宏盛自動化科技有限公司是專業(yè)從事代理國內(nèi)外知名品牌低壓電氣,氣動元件的集成銷售商,公司本著“優(yōu)質(zhì)高效、追求卓越”的宗旨,經(jīng)過多年的發(fā)展和積累,已構(gòu)建起了自己的銷售網(wǎng)為新老客戶提供了一條全新的購買途徑和自動化設(shè)備以及元件的解決方案。
字符串定義
字符串是一系列字符,每個字符作為一個字節(jié)存儲。
字符串由變量存儲時,字符串長度為0至254個字符,最長為255個字節(jié),其中第一個字符為長度字節(jié)。
常數(shù)字符串直接輸入程序編輯器或數(shù)據(jù)塊時,最長為126個字節(jié); 且常數(shù)字符串必須用雙引號字符起始和結(jié)束 (如:"ABCD", "1234" )
字符串轉(zhuǎn)換
將浮點數(shù)/雙整/整數(shù)轉(zhuǎn)換為字符串,分別為轉(zhuǎn)換指令中的R_S,S_DI,I_S。
將字符串轉(zhuǎn)換為浮點數(shù)/雙整/整數(shù)分別為轉(zhuǎn)換指令中的S_R,S_DI,S_I。只能轉(zhuǎn)換0-9的字符,其他字符均為無效字符。
具體轉(zhuǎn)換步驟建議選中指令塊,按"F1",查看幫助信息。
幾點注意事項:
1.無法識別科學計數(shù)法或指數(shù)形式,但不會設(shè)置溢出錯誤SM1.1;例:“1.234E6”-->"1.234"
2.當達到字符串結(jié)束時或當發(fā)現(xiàn)第一個無效字符時,轉(zhuǎn)換終止;例:“123A456”--->"123"
另,如“A123”,第一個字符即為無效字符,因此,設(shè)置溢出錯誤SM1.1。
3.S_I指令,當轉(zhuǎn)換產(chǎn)生一個大于32767或小于-32768的值時,則設(shè)置溢出錯誤(SM1.1)
字符串指令
字符串指令如下表所示:
LAD/FBD | 指令名稱 | 描述 |
---|---|---|
字符串長度 | IN:字符串變量地址; | |
復制字符串 | 將位于IN處的字符串復制到OUT處的新字符串地址 | |
從字符串復制子字符 | INDX:IN處字符串的有效字符地址 | |
字符串連接 | 將IN指定的字符串附加至OUT指定的字符串之后 | |
在字符串內(nèi)查找字符串 | 在字符串IN1中搜索首次出現(xiàn)的字符串IN2。搜索從OUT起始位置開始 | |
在字符串中查找第一個字符 | 在首次出現(xiàn)的字符串IN1中搜索字符串IN2中描述的字符集中的任何字符。搜索從起始位置OUT開始 |
指令例子如下:
字符串連接
字符串賦值字符串
字符串長度
從字符串復制子字符串
在字符串中查找字符串
在字符串中查找第一個字符
其中,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)電纜)
所實現(xiàn)的功能:
結(jié)合上述文檔所描述,
各字符串指令的使用,具體說明參考程序注釋
String
注意:本例程僅供參考,程序中的CPU版本、類型可能與用戶實際使用不同,用戶可能需要先對例子程序做修改和調(diào)整,才能將其用于測試。本例程的作者和擁有者對于該例程的功能性和兼容性不負任何責任,使用該例程的風險完全由用戶自行承擔。由于它是免費的,所以不提供任何擔保,錯誤糾正和熱線支持,用戶不必為此聯(lián)系西門子技術(shù)支持與服務(wù)部門。
常問問題
1.字符串中既含有數(shù)字又含有其他字符(字母,特殊字符),如何只轉(zhuǎn)換數(shù)字部分??
如數(shù)字字符在前,其他字符在后;則可直接轉(zhuǎn)換,轉(zhuǎn)換部分到第一個非數(shù)字字符前。
如數(shù)字字符在后,其他字符在前;則
1.其他字符長度已知并固定;
如字符串定義如下:
注意:此處INDX處為有效字符的位數(shù),不包含字符串第一位的長度字節(jié)
執(zhí)行程序后,VW100=98;VD200=98;VD300=98.6
2.字符串實際內(nèi)容未知或其他字符長度不定,則無法直接轉(zhuǎn)換,否則設(shè)置溢出錯誤SM1.1。轉(zhuǎn)換可參考如下程序:
注:CHR_FIND為在首次出現(xiàn)的字符串IN1中搜索字符串IN2中描述的字符集中的任何字符;找到的第一個相符字符的位置,被寫入到OUT管腳。
仍以如下字符串為例:
程序執(zhí)行后,AC0=7;VD100=98.6