西門子S7-200SMART PLC轉(zhuǎn)換指令使用方法詳解
王曾
發(fā)布于2023-04-10 10:18
129
3
標(biāo)簽:西門子PLC
導(dǎo)讀:
這篇文章為大家介紹200SMART的部分轉(zhuǎn)換指令,主要是字符串及字符與其它數(shù)據(jù)類型相互轉(zhuǎn)換的指令,這些指令理解起來有些難度的,雖不常用,但有時在通信交換數(shù)據(jù)時也會用到,很多初學(xué)者不知如何利用這些指令來編程,因此,本文就此介紹一下其含義和用法。注意此處說的字符串為ASCII碼字符串。
一、 所需軟件及硬件
西門子200SMART編程軟件V2.7版,200SMART ST30 CPU一臺,通信網(wǎng)線一條。
二、 轉(zhuǎn)換指令含義及用法
1. 整數(shù)、雙整數(shù)轉(zhuǎn)換為字符串
因這兩個指令的用法是類似的,因此放在一起介紹。指令的形式及在指令列表中的位置如下圖1所示:
圖1
實際生產(chǎn)中配方的數(shù)據(jù)已經(jīng)定好,由圖1可知,改指令有兩個輸入管腳和一個輸出管腳,其中IN為要轉(zhuǎn)換的整數(shù)字(有符號整數(shù)),可填常數(shù)或變量,如12345或VW10;OUT為輸出字符串緩沖區(qū)的首字節(jié),如VB100;FMT管腳初學(xué)者很多都不知其意,故加以詳細說明。FMT即為英文單詞formatd的縮寫,翻譯成中文是“格式”的意思,此處可理解為規(guī)定字符串轉(zhuǎn)換后的格式。FMT需填寫一個字節(jié)型變量或常數(shù),如VB0或常數(shù)5,下面以圖示的方式介紹其含義,如下圖2:

圖2
因FMT為以字節(jié)型變量,所以由8個二進制位組成,即0位到7位,LSB代表地位,MSB代表高位。指令規(guī)定,高四位(4-7位)必須為0,C位指定是用逗號還是小數(shù)點來作為轉(zhuǎn)換后整數(shù)部分和小數(shù)部分的分隔符:當(dāng)C=1時,使用逗號;當(dāng)C=0時,使用小數(shù)點。右邊三位nnn的有效數(shù)據(jù)為0到5,代表小數(shù)點后面字符的個數(shù)。nnn=000時,轉(zhuǎn)換后的值無小數(shù)點;nnn=5時,小數(shù)點右面有5個字符,如輸入的數(shù)據(jù)不在0到5的范圍內(nèi),則得不到正確的輸出結(jié)果。還需注意的該指令的下列幾條規(guī)定:
1)、轉(zhuǎn)換值為正寫入輸出緩沖區(qū)不帶時不帶符號,為負則需帶符號(—);
2)、輸出字符串的值為右對齊;
3)、輸出字符串的長度為8位,即8個字節(jié),加上首字節(jié)(自動填寫字符串長度“8”),以共9個字節(jié),需注意該區(qū)域地址不要重復(fù)使用。
下面用實際的案例及監(jiān)控加以說明,案例1(輸入管腳用常數(shù))如圖3所示:

圖3
圖3上圖的轉(zhuǎn)換值以ASCII碼的格式顯示,首字節(jié)VB10內(nèi)的數(shù)據(jù)為字符8,代表輸出字符串的長度為8為,VB16為以點標(biāo)志的小數(shù)點位,因FMT為2,所以小數(shù)點后面為2位,而輸出字符串規(guī)定為右對齊,所以轉(zhuǎn)換后的值為字符串56.28,其余的字節(jié)為空格;下圖示意16進制顯示的格式,大家可以對照ASCII表,查看是否與上圖的數(shù)據(jù)一致。
案例2(輸入管腳用變量)如下圖4所示:

圖4
圖4上圖轉(zhuǎn)換的整數(shù)VW20為32767,VB30為2#0000_1011,高四位為0,3位1,表示小數(shù)點以逗號表示,如圖4上圖的VB105的當(dāng)前值,后三位為011,表示小數(shù)點后面有3位數(shù),所以轉(zhuǎn)換后的值為32.767;中圖中將VB30改為2#0000_1000,表示小數(shù)點后沒有數(shù)據(jù),因此監(jiān)控圖顯示轉(zhuǎn)換
后的值為32767;下圖VB30為2#0000_0111,后三位超出0-5的范圍,因此指令報錯。
雙整數(shù)轉(zhuǎn)換為字符串指令與單整數(shù)轉(zhuǎn)換指令類似,唯一不同的是輸出字符串的長度為12位,加上首字節(jié)一共是13個字節(jié),比如VB0到VB12。這里不再贅述,大家可以舉一反三進行練習(xí)。
2. 浮點數(shù)轉(zhuǎn)換為字符串指令
浮點數(shù)數(shù)轉(zhuǎn)換為字符串的指令會將實數(shù)值 IN 轉(zhuǎn)換為 ASCII 字符串。格式 (FMT) 分配小數(shù)點右側(cè)的轉(zhuǎn)換精度、小數(shù)點顯示為逗號還是句點以及輸出字符串的長度。轉(zhuǎn)換結(jié)果放置在以 OUT 開頭的字符串中。結(jié)果字符串的長度在格式中指定,可以是 3 到 15 個字符。FMT圖示如下圖5所示:
圖5
總結(jié):由圖5可見,“R_S”與“I_S”、“DI_S”的FMT管腳的區(qū)別是高四位有效,字段SSSS的取值范圍是3-15,表示輸出字符串的長度,超出此范圍指令會報錯。低四位代表的含義與“I_S”、“DI_S”的FMT相同。需要注意的是,CPU 使用的實數(shù)格式最多支持 7 位有效數(shù)字,嘗試顯示 7 位以上有效數(shù)字會產(chǎn)生舍入錯誤。請看下面的例子及監(jiān)控畫面,如圖6所示:
圖6
FMT管腳的VB130的值為16#A4,這就是說轉(zhuǎn)換值的格式是10個字符,小數(shù)點后有4位,所以VD120的值456.888轉(zhuǎn)化后為字符串兩個空格加456.8880,共10個字節(jié)。這個指令需謹慎使用,很容易出錯。比如輸入是456.888,VB130輸入16#74,認為能得到結(jié)果為456.8880,但指令會報錯,他因為456.8880一共占8個字節(jié),而FMT的值為16#74,只輸出7個字節(jié),因此得不到正確結(jié)果,將16#74改為16#84后,輸出結(jié)果正確,如下圖7所示。


圖7
點擊免費試學(xué)更多PLC精品教程