西門子 S7-200SMARTPLC數(shù)據(jù)轉(zhuǎn)換指令詳細(xì)介紹
轉(zhuǎn)換指令是對(duì)操作數(shù)的類型進(jìn)行轉(zhuǎn)換,并輸出到的目標(biāo)地址中去。西門子 S7-200SMARTPLC的轉(zhuǎn)換指令包括數(shù)據(jù)類型轉(zhuǎn)換、數(shù)據(jù)的編碼和譯碼、ASCII碼轉(zhuǎn)換等指令。
數(shù)據(jù)類型轉(zhuǎn)換指令
在S7-200SMARTPLC中的數(shù)據(jù)類型主要有字節(jié)型、整數(shù)型、雙整數(shù)型和實(shí)數(shù)型,使用了 BCD碼、ASCII碼、十進(jìn)制數(shù)和十六進(jìn)制數(shù)。不同功能的指令對(duì)操作數(shù)類型要求不同,因此,許多指令執(zhí)行前需對(duì)操作數(shù)進(jìn)行類型的轉(zhuǎn)換。
數(shù)據(jù)類型轉(zhuǎn)換主要有 BCD碼與整數(shù)之間的轉(zhuǎn)換、字節(jié)與整數(shù)之間的轉(zhuǎn)換、整數(shù)與雙字整數(shù)之間的轉(zhuǎn)換和雙字整數(shù)與實(shí)數(shù)的轉(zhuǎn)換等。
(1)BCD碼與整數(shù)之間的轉(zhuǎn)換
在一些數(shù)字系統(tǒng),如計(jì)算機(jī)和數(shù)字式儀器中,如數(shù)碼開(kāi)關(guān)設(shè)置數(shù)據(jù),往往采用二進(jìn)制碼表示十進(jìn)制數(shù)。通常,把用一組四位二進(jìn)制碼來(lái)表示一位十進(jìn)制數(shù)的編碼方法稱為 BCD碼。
4位二進(jìn)制碼共有16種組合,可從中選取10種組合來(lái)表示0~9這10個(gè)數(shù),根據(jù)不同的選取方法,可以編制出多種 BCD碼,其中8421BCD碼*常用。十進(jìn)制數(shù)與8421BCD碼的對(duì)應(yīng)關(guān)系如表5-10所示。如:十進(jìn)制數(shù)1234化成8421BCD碼為0001001000110100。
表5-10 十進(jìn)制數(shù)與8421BCD碼對(duì)應(yīng)表
BCD碼與整數(shù)之間的轉(zhuǎn)換是對(duì)無(wú)符號(hào)操作數(shù)進(jìn)行的,其轉(zhuǎn)換指令如表5-11所示。輸入IN 和輸出 OUT 的類型為字。
使用 BCDI指令可將IN 端輸入的 BCD 碼轉(zhuǎn)換成整數(shù),產(chǎn)生結(jié)果送入 OUT 的變量中。IN 輸入的 BCD碼范圍為0~9999。
使用IBCD指令可將IN 端輸入的整數(shù)轉(zhuǎn)換成 BCD 碼,產(chǎn)生結(jié)果送入 OUT 的變量中。IN 輸入的整數(shù)范圍為0~9999。
表5-11 BCD碼與整數(shù)之間的轉(zhuǎn)換指令
若為無(wú)效BCD碼時(shí),特殊標(biāo)志位SM1.6被置1。輸入IN 和輸出 OUT 操作數(shù)地址*相同,若不相同時(shí),需使用指令:
MOV IN,OUT
BCDI OUT
例5-6 使用BCD碼與整數(shù)之間的轉(zhuǎn)換指令,將 VW100中的BCD碼轉(zhuǎn)換成整數(shù),并存放到 AC0中;將 VW200中的整數(shù)轉(zhuǎn)換成BCD碼,并存放到 AC1中。其程序如表5-12所示。假設(shè) VW100中 的 BCD 為 1001001000110101,執(zhí) 行 BCDI指 令 后,轉(zhuǎn) 換 的 整 數(shù) 為 9235;假 設(shè)VW200中的整數(shù)為5421,執(zhí)行IBCD指令后,轉(zhuǎn)換的BCD碼為0101010000100001。
表5-12 BCD碼與整數(shù)之間的轉(zhuǎn)換指令程序
(2)字節(jié)與整數(shù)之間的轉(zhuǎn)換
字節(jié)與整數(shù)之間的轉(zhuǎn)換是對(duì)無(wú)符號(hào)操作數(shù)進(jìn)行的,其轉(zhuǎn)換指令如表5-13所示。
表5-13 字節(jié)與整數(shù)之間的轉(zhuǎn)換指令
使用 BTI指令可將IN 端輸入的字節(jié)型數(shù)據(jù)轉(zhuǎn)換成整數(shù)型數(shù)據(jù),產(chǎn)生結(jié)果送入 OUT 的單元中。使用ITB指令可將IN 端輸入的整數(shù)型數(shù)據(jù)轉(zhuǎn)換成字節(jié)型數(shù)據(jù),產(chǎn)生結(jié)果送入OUT 的變量中。被轉(zhuǎn)換的值應(yīng)為有效的整數(shù),否則溢出位SM1.1被置1。
(3)整數(shù)與雙字整數(shù)之間的轉(zhuǎn)換
整數(shù)與雙字整數(shù)之間的轉(zhuǎn)換指令如表5-14所示。
表5-14 整數(shù)與雙字整數(shù)之間的轉(zhuǎn)換指令
ITD指令是將輸入IN 的整數(shù)型數(shù)據(jù)轉(zhuǎn)換成雙整數(shù)型數(shù)據(jù),產(chǎn)生的結(jié)果送入 OUT 存儲(chǔ)單元,輸入為整數(shù)型數(shù)據(jù),輸出為雙整數(shù)型數(shù)據(jù),要進(jìn)行符號(hào)擴(kuò)展。
DTI指令是將輸入IN 的雙整數(shù)型數(shù)據(jù)轉(zhuǎn)換成整數(shù)型數(shù)據(jù),產(chǎn)生的結(jié)果置入 OUT 存儲(chǔ)單元,輸入為雙整數(shù)型數(shù)據(jù),輸出為整數(shù)型數(shù)據(jù)。被轉(zhuǎn)換的輸入IN 值應(yīng)為有效雙整數(shù),否則SM1.1被置1。
(4)雙字整數(shù)與實(shí)數(shù)的轉(zhuǎn)換
雙字整數(shù)與實(shí)數(shù)的轉(zhuǎn)換指令如表5-15所示。
表5-15 雙字整數(shù)與實(shí)數(shù)的轉(zhuǎn)換指令
DTR指令是將輸入IN 的雙字整數(shù)型數(shù)據(jù)轉(zhuǎn)換為實(shí)數(shù)型數(shù)據(jù),產(chǎn)生的結(jié)果送入 OUT 的存儲(chǔ)單元,IN 輸入的為有符號(hào)的32位雙字整數(shù)型數(shù)據(jù)。
四舍五入和舍去小數(shù)指令都是實(shí)數(shù)轉(zhuǎn)換為雙字整數(shù)的取整指令。執(zhí)行 ROUND 指令時(shí),實(shí)數(shù)的小數(shù)部分四舍五入;執(zhí)行 TRUNC 指令時(shí),實(shí)數(shù)的小數(shù)部分舍去。若輸入的實(shí)數(shù)值太大,無(wú)法用雙字整數(shù)表示時(shí),SM1.1被置1。
例5-7 用實(shí)數(shù)運(yùn)算求直徑為32mm 的圓面積,將結(jié)果轉(zhuǎn)換為整數(shù)。
分析:圓的面積=圓半徑的平方×π,圓半徑的平方可使用 EXP (2×LN (32/2)),編寫的 PLC程序如表5-16所示。
例5-8 1英寸等于2.54cm,假設(shè)英尺數(shù)由數(shù)碼開(kāi)關(guān)通過(guò)IW0輸入 (BCD 碼),則長(zhǎng)度由英寸轉(zhuǎn)換成厘米,且厘米數(shù)由 QW0用 BCD碼輸出時(shí),其程序編寫如表5-17所示。
表5-16 求圓面積的程序
表5-17 英寸與厘米的轉(zhuǎn)換程序
ASCII 字符數(shù)組轉(zhuǎn)換指令
ASCII碼 (AmericanStandardCodeforInformationInterchange)為美國(guó)標(biāo)準(zhǔn)信息交換碼,在計(jì)算機(jī)系統(tǒng)中使用泛。西門子S7-200SMARTPLC的 ASCII字符數(shù)組轉(zhuǎn)換指令包括整數(shù)轉(zhuǎn)換為 ASCII碼指令、雙整數(shù)轉(zhuǎn)換為 ASCII碼指令、實(shí)數(shù)轉(zhuǎn)換為 ASCII碼指令、十六進(jìn)制整數(shù)與 ASCII碼相互轉(zhuǎn)換指令,指令如表5-18所示。
表5-18 ASCII字符數(shù)組轉(zhuǎn)換指令
(1)整數(shù)轉(zhuǎn)換為 ASCII碼指令ITA
整數(shù)轉(zhuǎn)換為 ASCII碼指令ITA (IntegertoASCII)把輸入端IN 的有符號(hào)整數(shù)轉(zhuǎn)換成ASCII字符串,其轉(zhuǎn)換結(jié)果存入以 OUT 為起始字節(jié)地址的8個(gè)連續(xù)字節(jié)的緩沖區(qū)中,FMT小數(shù)點(diǎn)右側(cè)的轉(zhuǎn)換精度和小數(shù)點(diǎn)是使用逗號(hào)還是點(diǎn)號(hào)。整數(shù)轉(zhuǎn) ASCII碼指令的格式操作數(shù)如圖5-2所示,輸出緩沖區(qū)的大小始終是8個(gè)字節(jié),nnn表示輸出緩沖區(qū)中小數(shù)點(diǎn)右側(cè)的數(shù)字位數(shù),nnn的有效范圍為0~5,若 nnn=0,小數(shù)右側(cè)的位數(shù)為0,轉(zhuǎn)換時(shí)數(shù)值沒(méi)有小數(shù)點(diǎn);若nnn>5時(shí),輸出緩沖區(qū)會(huì)被空格鍵的 ASCII碼填充,此時(shí)無(wú)法輸出。C整數(shù)和小數(shù)點(diǎn)的分隔符,當(dāng) C=1時(shí),分隔符為 “,”;當(dāng) C=0時(shí),分隔符為 “.”,FMT的高4位必須為0。
在圖5-2中給出了一個(gè)數(shù)值的例子,其格式為使用點(diǎn)號(hào) (C=0),小數(shù)點(diǎn)右側(cè)有3位小
圖5-2 整數(shù)轉(zhuǎn) ASCII碼指令的 FMT操作數(shù)
數(shù) (nnn=011),輸出緩沖區(qū)格式符合以下規(guī)則:
① 正數(shù)值寫入輸出緩沖區(qū)沒(méi)有符號(hào)位;
② 負(fù)數(shù)值寫入輸出緩沖區(qū)時(shí)以負(fù)號(hào) (-)開(kāi)頭;
③ 小數(shù)點(diǎn)左側(cè)開(kāi)頭的0 (除去靠近小數(shù)點(diǎn)的那個(gè)之外)被隱藏;
④ 數(shù)值在輸出緩沖區(qū) OUT 中是右對(duì)齊的。
例5-9 整數(shù)轉(zhuǎn) ASCII碼指令的使用。將 VW10中的整數(shù)轉(zhuǎn)換為從 VB100開(kāi)始的8個(gè)ASCII碼字符,使用 16#0B 的 格 式,用 逗 號(hào) 作 小 數(shù) 點(diǎn),保 留 3 位 小 數(shù),程 序 如 表 5-19所示。
表5-19 整數(shù)轉(zhuǎn) ASCII碼指令程序
(2)雙整數(shù)轉(zhuǎn)換為 ASCII碼指令 DTA
雙整數(shù)轉(zhuǎn)換為 ASCII碼指令 DTA (Double Integer to ASCII )把輸入端IN的有符號(hào)雙字整數(shù)轉(zhuǎn)換成 ASCII字符串,其轉(zhuǎn)換結(jié)果存入以 OUT 為起始字節(jié)地址的12個(gè)連續(xù)字節(jié)的緩沖區(qū)中。除輸入IN 為雙整數(shù)、輸出為12字節(jié)外,其它方面與整數(shù)轉(zhuǎn) ASCII碼指令相同。雙整數(shù)轉(zhuǎn)換為 ASCII碼指令的格式操作數(shù)如圖5-3所示。
圖5-3 雙整數(shù)轉(zhuǎn) ASCII碼指令的 FMT操作數(shù)
(3)實(shí)數(shù)轉(zhuǎn)換為 ASCII碼指令 RTA
實(shí)數(shù)轉(zhuǎn)換為 ASCII碼指令 RTA (RealtoASCII)是將輸入端IN 的實(shí)數(shù)轉(zhuǎn)換成 ASCII字符串,其轉(zhuǎn)換結(jié)果存入以 OUT 為起始字節(jié)地址的3~15個(gè)連續(xù)字節(jié)的緩沖區(qū)中。實(shí)數(shù)轉(zhuǎn)換為 ASCII碼指令的格式操作數(shù)如圖5-4所示。
西門子S7-200SMARTPLC的實(shí)數(shù)格式最多支持7位小數(shù),若顯示7位以上的小數(shù)會(huì)
圖5-4 實(shí)數(shù)轉(zhuǎn) ASCII碼指令的 FMT操作數(shù)
產(chǎn)生一個(gè)四舍五入的錯(cuò)誤。圖5-4中,SSSS表示輸出緩沖區(qū) OUT 的大小,它的范圍為3~15個(gè)字節(jié)。輸出緩沖區(qū)的大小應(yīng)大于輸入實(shí)數(shù)小數(shù)點(diǎn)右邊的位數(shù),如實(shí)數(shù)-3.89546,小數(shù)點(diǎn)右邊有5位,SSS應(yīng)大于5,至少為6。與整數(shù)轉(zhuǎn) ASCII碼指令相比,實(shí)數(shù)轉(zhuǎn) ASCII碼的輸出緩沖區(qū)的格式還具有以下規(guī)則:
① 小數(shù)點(diǎn)右側(cè)的數(shù)值按照的小數(shù)點(diǎn)右側(cè)的數(shù)字位數(shù)被四舍五入;
②輸出緩沖區(qū)的大小應(yīng)至少比小數(shù)點(diǎn)右側(cè)的數(shù)字位多3個(gè)字節(jié)。
例5-10 實(shí)數(shù)轉(zhuǎn)ASCII碼指令的使用。將VD10中的實(shí)數(shù)轉(zhuǎn)換成從VB100開(kāi)始的10個(gè)ASCII碼字符,使用16#A3的格式,用點(diǎn)號(hào)作小數(shù)點(diǎn),后面跟3位小數(shù),程序如表5-20所示。
表5-20 實(shí)數(shù)轉(zhuǎn) ASCII碼指令程序
(4)十六進(jìn)制整數(shù)與 ASCII碼相互轉(zhuǎn)換指令
ASCII碼30~39和41~46與十六進(jìn)制數(shù)為0~9和 A~F相對(duì)應(yīng),使用 HTA 指令可將十六進(jìn)制整數(shù)轉(zhuǎn)換為 ASCII碼字符串;使用 ATH 指令可將 ASCII碼字符串轉(zhuǎn)換為相應(yīng)的十六進(jìn)制整數(shù)。
ATH 指令將一個(gè)長(zhǎng)度為 LEN 從IN 開(kāi)始的 ASCII碼字符串轉(zhuǎn)換成從 OUT 開(kāi)始的十六進(jìn)制整數(shù);HTA 指令將從輸入字節(jié)IN 開(kāi)始的長(zhǎng)度為 LEN 的十六進(jìn)制整數(shù)轉(zhuǎn)換成從 OUT開(kāi)始的 ASCII碼字符串。ASCII碼和十六進(jìn)制數(shù)的有效范圍為0~255。
例5-11 ASCII碼轉(zhuǎn)換成十六進(jìn)制整數(shù)指令的使用。將 VB100~VB102中存放的3個(gè)ASCII碼34、42、38轉(zhuǎn)換成十六進(jìn)制數(shù)。程序及運(yùn)行結(jié)果如表5-21所示。表中 “x”為半字節(jié),表示 VB11的低4位值未改變。
表5-21 ASCII碼轉(zhuǎn)換成十六進(jìn)制整數(shù)指令程序
編碼與譯碼指令
編碼指令 ENCO (Encode)是將輸入的字型數(shù)據(jù)IN 中為1的有效位的位數(shù)寫入輸出字節(jié) OUT 的4位,即用半字節(jié)對(duì)一個(gè)字型數(shù)據(jù)16位中的 “1”位有效位進(jìn)行編碼。它的輸入IN 為字型數(shù)據(jù),輸出 OUT 為字節(jié)型數(shù)據(jù),其指令如表5-22所示。
表5-22 編碼指令
譯碼指令 DECO (Decode)是 將 輸 入 的 字 節(jié) 型 數(shù) 據(jù)IN 的 低 4 位 表 示 的 位 號(hào) 輸 出 到OUT 所的單元對(duì)應(yīng)位置1,而其它位清0。即對(duì)半字節(jié)的編碼進(jìn)行譯碼,以選擇一個(gè)字型數(shù)據(jù)16位中的 “1”位。它的輸入IN 為字節(jié)型數(shù)據(jù),輸出 OUT 為字型數(shù)據(jù),其指令如表5-23所示。
表5-23 譯碼指令
例5-12 編碼和譯碼指令的舉例,其程序如表5-24所示。若I0.1常開(kāi)觸點(diǎn)為 OFF 而I0.0觸點(diǎn)為 ON,執(zhí)行 ENCO 指令進(jìn)行編碼操作后,VB100中的值為0;執(zhí)行 DECO 指令進(jìn)行譯碼操作后,VW10中的值也為16#00。若I0.1常開(kāi)觸點(diǎn)為 ON,I0.0觸點(diǎn)也為 ON時(shí),執(zhí)行 ENCO 指令進(jìn)行編碼操作后,VB100中的值為3;執(zhí)行 DECO 指令進(jìn)行譯碼操作后,VW10中的值為16#0008,即二進(jìn)制數(shù)0000000000001000。
表5-24 編碼和譯碼指令程序
七段顯示譯碼指令
S7-200SMARTPLC七段顯示譯碼指令SEG (Segment)是根據(jù)輸入字節(jié)IN 低4位定的十六進(jìn)制 數(shù) (16#0~16#F) 產(chǎn) 生 點(diǎn) 亮 七 段 顯 示 器 各 段 的代碼,并 送 到 輸 出 字節(jié)OUT。七段顯示器的abcdefg (D0~D6)段分別對(duì)應(yīng)于輸出字節(jié)的第0~6位,若輸出字節(jié)的某位為1時(shí),其對(duì)應(yīng)的段顯示;輸出字節(jié)的某位為0時(shí),其對(duì)應(yīng)的段不亮。字符顯示與各段的關(guān)系如表5-25所示。例如要顯示數(shù)字 “2”時(shí),D0、D1、D3、D4、D6為1,其余為0。
表5-25 字符顯示與各段關(guān)系
七段顯示譯碼指令如表5-26所示。
表5-26 七段顯示譯碼指令
例5-13 若PLC的I0.0外接按鈕SB0,QB0外接1位LED共陰極數(shù)碼管,要求每按1次按鈕時(shí),共陰極數(shù)碼管顯示的數(shù)字加1,其顯示數(shù)字為0~9。
分析:可以使用 C0增計(jì)數(shù)器對(duì)按鈕次數(shù)進(jìn)行統(tǒng)計(jì),再將 C0中的整數(shù)轉(zhuǎn)換為相應(yīng) BCD碼后送入 MB0,最后將 MB0中的數(shù)值轉(zhuǎn)換為相應(yīng)的段碼即可。編寫的程序如表5-27所示。
表5-27 七段顯示譯碼程序
相關(guān)產(chǎn)品
免責(zé)聲明
- 凡本網(wǎng)注明“來(lái)源:化工儀器網(wǎng)”的所有作品,均為浙江興旺寶明通網(wǎng)絡(luò)有限公司-化工儀器網(wǎng)合法擁有版權(quán)或有權(quán)使用的作品,未經(jīng)本網(wǎng)授權(quán)不得轉(zhuǎn)載、摘編或利用其它方式使用上述作品。已經(jīng)本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使用,并注明“來(lái)源:化工儀器網(wǎng)”。違反上述聲明者,本網(wǎng)將追究其相關(guān)法律責(zé)任。
- 本網(wǎng)轉(zhuǎn)載并注明自其他來(lái)源(非化工儀器網(wǎng))的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé),不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品第一來(lái)源,并自負(fù)版權(quán)等法律責(zé)任。
- 如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。