導讀:
這篇文章為大家介紹200SMART的部分轉換指令,主要是字符串及字符與其它數據類型相互轉換的指令,這些指令理解起來有些難度的,雖不常用,但有時在通信交換數據時也會用到,很多初學者不知如何利用這些指令來編程,因此,本文就此介紹一下其含義和用法。注意此處說的字符串為ASCII碼字符串。
西門子200SMART編程軟件V2.7版,200SMART ST30 CPU一臺,通信網線一條。
1.整數、雙整數轉換為字符串
因這兩個指令的用法是類似的,因此放在一起介紹。指令的形式及在指令列表中的位置如下圖1所示:
圖1
實際生產中配方的數據已經定好,由圖1可知,改指令有兩個輸入管腳和一個輸出管腳,其中IN為要轉換的整數字(有符號整數),可填常數或變量,如12345或VW10;OUT為輸出字符串緩沖區的首字節,如VB100;FMT管腳初學者很多都不知其意,故加以詳細說明。FMT即為英文單詞formatd的縮寫,翻譯成中文是“格式”的意思,此處可理解為規定字符串轉換后的格式。FMT需填寫一個字節型變量或常數,如VB0或常數5,下面以圖示的方式介紹其含義,如下圖2:
圖2
因FMT為以字節型變量,所以由8個二進制位組成,即0位到7位,LSB代表地位,MSB代表高位。指令規定,高四位(4-7位)必須為0,C位指定是用逗號還是小數點來作為轉換后整數部分和小數部分的分隔符:當C=1時,使用逗號;當C=0時,使用小數點。右邊三位nnn的有效數據為0到5,代表小數點后面字符的個數。nnn=000時,轉換后的值無小數點;nnn=5時,小數點右面有5個字符,如輸入的數據不在0到5的范圍內,則得不到正確的輸出結果。還需注意的該指令的下列幾條規定:
1)、轉換值為正寫入輸出緩沖區不帶時不帶符號,為負則需帶符號(—);
2)、輸出字符串的值為右對齊;
3)、輸出字符串的長度為8位,即8個字節,加上首字節(自動填寫字符串長度“8”),以共9個字節,需注意該區域地址不要重復使用。
下面用實際的案例及監控加以說明,案例1(輸入管腳用常數)如圖3所示:
圖3
圖3上圖的轉換值以ASCII碼的格式顯示,首字節VB10內的數據為字符8,代表輸出字符串的長度為8為,VB16為以點標志的小數點位,因FMT為2,所以小數點后面為2位,而輸出字符串規定為右對齊,所以轉換后的值為字符串56.28,其余的字節為空格;下圖示意16進制顯示的格式,大家可以對照ASCII表,查看是否與上圖的數據一致。
案例2(輸入管腳用變量)如下圖4所示:
圖4
圖4上圖轉換的整數VW20為32767,VB30為2#0000_1011,高四位為0,3位1,表示小數點以逗號表示,如圖4上圖的VB105的當前值,后三位為011,表示小數點后面有3位數,所以轉換后的值為32.767;中圖中將VB30改為2#0000_1000,表示小數點后沒有數據,因此監控圖顯示轉換后的值為32767;下圖VB30為2#0000_0111,后三位超出0-5的范圍,因此指令報錯。
雙整數轉換為字符串指令與單整數轉換指令類似,唯一不同的是輸出字符串的長度為12位,加上首字節一共是13個字節,比如VB0到VB12。這里不再贅述,大家可以舉一反三進行練習。
浮點數數轉換為字符串的指令會將實數值 IN 轉換為 ASCII 字符串。格式 (FMT) 分配小數點右側的轉換精度、小數點顯示為逗號還是句點以及輸出字符串的長度。轉換結果放置在以 OUT 開頭的字符串中。結果字符串的長度在格式中指定,可以是 3 到 15 個字符。FMT圖示如下圖5所示:
圖5
總結:由圖5可見,“R_S”與“I_S”、“DI_S”的FMT管腳的區別是高四位有效,字段SSSS的取值范圍是3-15,表示輸出字符串的長度,超出此范圍指令會報錯。低四位代表的含義與“I_S”、“DI_S”的FMT相同。需要注意的是,CPU 使用的實數格式Zui多支持 7 位有效數字,嘗試顯示 7 位以上有效數字會產生舍入錯誤。請看下面的例子及監控畫面,如圖6所示:
圖6
FMT管腳的VB130的值為16#A4,這就是說轉換值的格式是10個字符,小數點后有4位,所以VD120的值456.888轉化后為字符串兩個空格加456.8880,共10個字節。這個指令需謹慎使用,很容易出錯。比如輸入是456.888,VB130輸入16#74,認為能得到結果為456.8880,但指令會報錯,他因為456.8880一共占8個字節,而FMT的值為16#74,只輸出7個字節,因此得不到正確結果,將16#74改為16#84后,輸出結果正確,如下圖7所示。
圖7
因篇幅所限,本文先介紹這三個指令,希望能對大家理解和使用有所幫助。
- 老師傅教你,西門子S7-1200 PLC如何實現組態王通訊 2024-11-25
- 利用西門子S7-1200計數器指令,實現設備運行時間統計 2024-11-25
- 1200PLC之間TCP通信,一篇文章教會你! 2024-11-25
- 如何將西門子S7-1200PLC恢復出廠設置? 2024-11-25
- 如何讀取西門子S7-1200 CPU的序列號? 2024-11-25
- 西門子S7-1200 PLC控制電動葫蘆案例 2024-11-25
- 西門子S7-1200 PLC與V20變頻器Modbus RTU通信案例 2024-11-25
- 西門子S7-1200與掃碼槍自由口通訊應用案例,很實用 2024-11-25
- 西門子的S7通信你不會還不知道怎么用吧 2024-11-25
- 西門子1200PLC通信連接資源詳解,可以連接多少個設備呢? 2024-11-25
- 西門子1200PLC支持的通信協議 2024-11-25
- 西門子S7-1200PLC模擬量控制變頻器 2024-11-25
- 老電工講解S7-1200恒壓供水項目的基本操作 2024-11-25
- 西門子電機運行時間排序案例分享,趕緊收藏學習 2024-11-25
- 西門子S7-1500+多觸摸屏方案+V90+產量統計 2024-11-25
聯系方式
- 電 話:13510737515
- 聯系人:董海波
- 手 機:13185520415
- 微 信:13185520415