STEP7中如何用簡(jiǎn)潔的代碼獲取字符串的長(zhǎng)度
西門子的PLC編程軟件支持豐富的數(shù)據(jù)類型,多種編程語(yǔ)言,可以讓編程人員充分的發(fā)揮自己的聰明才智,簡(jiǎn)潔高效的完成設(shè)計(jì)。今天我們來(lái)聊聊STEP7中的字符串?dāng)?shù)據(jù)類型,并跟大家分享一個(gè)使用簡(jiǎn)潔的代碼獲取字符串長(zhǎng)度的小技巧。

我們先來(lái)看看字符串(STRING)的類型定義:
在STEP7中,字符串是N個(gè)字符(CHAR)的集合,N的范圍從0到254,字符串占用的存儲(chǔ)空間為N+2個(gè)字節(jié)。為什么N個(gè)字節(jié)長(zhǎng)度的字符串,要占用N+2個(gè)字節(jié)的存儲(chǔ)空間呢?這是因?yàn)镾TEP7規(guī)定字符串的第0個(gè)字節(jié)和第1個(gè)字節(jié)是用來(lái)表示該字符串的長(zhǎng)度的,從第2個(gè)字節(jié)開始,才用來(lái)存儲(chǔ)字符串的字符。規(guī)定如下:第0個(gè)字節(jié)(Byte0)表示該字符串的最大長(zhǎng)度;第1個(gè)字節(jié)(Byte1)表示該字符串的實(shí)際長(zhǎng)度。舉個(gè)例子來(lái)說(shuō):假設(shè)我們定義了一個(gè)字符串STRING[2]="AB",那么第0個(gè)字節(jié)(Byte0)的值為4;第1個(gè)字節(jié)(Byte1)的值為2;第2個(gè)字節(jié)(Byte2)的值為65("A"的ASCII碼);第3個(gè)字節(jié)(Byte3)的值為66("B"的ASCII碼),如下圖:

在實(shí)際的通信中,有時(shí)候我們需要把接收到的字符串(STRING)類型的數(shù)據(jù)轉(zhuǎn)換成整形數(shù)據(jù)來(lái)進(jìn)行一些運(yùn)算處理,完成之后又需要把整形數(shù)據(jù)轉(zhuǎn)換成字符串發(fā)送出去;對(duì)于這些需求,STEP7提供了兩個(gè)很有用的函數(shù)FC5和FC37;為了說(shuō)明怎么使用我們先來(lái)創(chuàng)建一個(gè)FB塊,它的輸入?yún)?shù)和靜態(tài)變量參數(shù)如下:

使用系統(tǒng)庫(kù)中的IEC函數(shù)FC5可以把雙整形變量(DINT)轉(zhuǎn)換成字符串(STRING);

轉(zhuǎn)換成字符串后,我們想知道字符的實(shí)際長(zhǎng)度是多少?可以有兩個(gè)方法:
第一種:可以調(diào)用IEC函數(shù)FC21,把轉(zhuǎn)換后的字符串作為參數(shù)輸入給"S"形參,則"RET_VAL"中便可獲得字符串的實(shí)際長(zhǎng)度;這是最常規(guī)的做法;
第二種方法是我想跟大家分享的一個(gè)小技巧,它基于我們對(duì)字符串(STRING)這種數(shù)據(jù)類型的理解,既然我們知道一個(gè)字符串的BYTE1里面的值存放的就是字符串的實(shí)際值,而字符串又是字符的集合(數(shù)組),那么是不是直接訪問(wèn)數(shù)組的第1位就能獲取字符串的實(shí)際長(zhǎng)度呢?如下圖:我們可以用兩句簡(jiǎn)單的代碼,就獲取到字符串變量"#STAT_STR_SEND"的實(shí)際長(zhǎng)度,省去了調(diào)用系統(tǒng)函數(shù)的繁瑣,是不是很簡(jiǎn)潔高效?

當(dāng)數(shù)據(jù)完成運(yùn)算后,可以調(diào)用IEC函數(shù)FC37把雙整形變量(DINT)轉(zhuǎn)換成字符串(STRING):

好了,獲取字符串長(zhǎng)度的小技巧就介紹到這里,實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn),有空試試吧?
長(zhǎng)按掃描下面的二維碼,關(guān)注“方正智芯”的原創(chuàng)文章,提供工業(yè)控制領(lǐng)域(PLC、單片機(jī)、通信)的技術(shù)和經(jīng)驗(yàn)的分享,持續(xù)關(guān)注,持續(xù)進(jìn)步。
-
Origin(Pro):學(xué)習(xí)版的窗口限制【數(shù)據(jù)繪圖】 2020-08-07
-
如何卸載Aspen Plus并再重新安裝,這篇文章告訴你! 2020-05-29
-
CAD視口的邊框線看不到也選不中是怎么回事,怎么解決? 2020-06-04
-
教程 | Origin從DSC計(jì)算焓和比熱容 2020-08-31
-
CAD外部參照無(wú)法綁定怎么辦? 2020-06-03
-
CAD中如何將布局連帶視口中的內(nèi)容復(fù)制到另一張圖中? 2020-07-03
