三菱FX PLC學(xué)習(xí)之通信指令(下)
吳翠萍
發(fā)布于2020-11-23 11:26
16
2
標(biāo)簽:三菱PLC,三菱FX PLC,PLC編程入門
【點(diǎn)擊領(lǐng)取】三菱案例 | 西門子案例 | 電工手冊(cè) | 工具箱 軟件
【點(diǎn)擊獲取】三菱PLC例程117個(gè)|西門子PLC例程777個(gè)
【點(diǎn)擊下載】2020最新電工仿真軟件
繼上篇文章所分享的RS數(shù)據(jù)傳送指令和CCD校驗(yàn)碼指令,這次我們接著分享同樣受數(shù)據(jù)處理模式標(biāo)志繼電器M8161控制的ASCI指令和HEX指令。
ASCI指令和HEX指令是一對(duì)互逆的指令,基于十六進(jìn)制字符與ASCII碼之間的轉(zhuǎn)換。ASCII碼,我在之前的文章就有簡單的介紹過,在這里再簡單提一下。
ASCII碼也就是美國信息交換標(biāo)準(zhǔn)代碼,它是一組7位(或8位)二進(jìn)制代碼,分別表示0~9的十個(gè)代碼、大小寫字母的52個(gè)代碼、32個(gè)表示各種符號(hào)的代碼以及34個(gè)控制碼。而什么字符對(duì)應(yīng)什么ASCII碼,我們可以通過查它的編碼表得知。例如字符“3”對(duì)應(yīng)的ASCII碼為H33,字符“A”對(duì)應(yīng)的ASCII碼為H41,這里的3、A是一個(gè)字符,而不僅僅是一個(gè)數(shù)。這就像運(yùn)動(dòng)員背后貼的號(hào)碼布,上面的號(hào)碼代表的不是數(shù)值的大小,而是表示運(yùn)動(dòng)員的編號(hào)。
另外,十六進(jìn)制字符(HEX)我就不再解釋,相信大家對(duì)它也是相當(dāng)熟悉了。在知道了什么是HEX和ASCII后,我們開始指令的學(xué)習(xí)分享吧。
01HEX→ASCII轉(zhuǎn)換指令A(yù)SCI
圖15-1
ASCI指令的作用是將十六進(jìn)制字符轉(zhuǎn)換為ASCII碼。但為什么要將HEX字符轉(zhuǎn)換為ASCII碼呢?這其實(shí)是通信的內(nèi)容,ASCII通信模式是MODBUS通信協(xié)議的通信模式之一,簡單來說,是指在數(shù)據(jù)傳輸過程中所傳送的字符用ASCII碼表示。至于什么是MODBUS通信協(xié)議,咳咳,這通信吧,我上篇文章已經(jīng)說過了,這是我永遠(yuǎn)滴痛。
所以,ASCI指令和HEX指令都是用于ASCII通信模式的。即PLC通過ASCI指令將需發(fā)送的十六進(jìn)制數(shù)據(jù)轉(zhuǎn)換為ASCII碼,通過HEX指令將接收到的ASCII碼轉(zhuǎn)換為十六進(jìn)制字符。
ASCI指令的編程手冊(cè)截圖如上圖15-1所示,和RS指令與CCD指令一樣不可用于32位,有連續(xù)執(zhí)行型和脈沖執(zhí)行型兩種。
圖15-2
其梯形圖形式如上圖15-2所示,和CCD指令非常相似,也有3個(gè)操作數(shù),源址S為HEX字符或存儲(chǔ)字元件首址;終址D為ASCII碼存儲(chǔ)字元件首地址;n為需轉(zhuǎn)換的HEX字符的個(gè)數(shù),取值范圍為1~256。當(dāng)驅(qū)動(dòng)條件成立時(shí),將源址S的n個(gè)十六進(jìn)制字符轉(zhuǎn)換為ASCII碼并存放到首址為D的寄存器中。
結(jié)合上篇文章,特殊繼電器M8161的狀態(tài)可以將ASCI指令分為16位數(shù)據(jù)處理模式和8位數(shù)據(jù)處理模式。
(1)16位數(shù)據(jù)處理模式
特殊繼電器M8161=OFF,ASCI指令為16位數(shù)據(jù)處理模式。當(dāng)驅(qū)動(dòng)條件成立,將以S為首址的寄存器的n個(gè)十六進(jìn)制字符轉(zhuǎn)換為ASCII碼,并分別存放到以D為首址的寄存器的高8位和低8位。
1個(gè)16位(二進(jìn)制位)的寄存器含有4個(gè)十六進(jìn)制字符,如下圖15-3所示,每1個(gè)十六進(jìn)制字符轉(zhuǎn)為ASCII碼后需占有2個(gè)十六進(jìn)制位(8個(gè)二進(jìn)制位),如D0中低4位組成一個(gè)十六進(jìn)制位H1,將字符“1”轉(zhuǎn)換為ASCII后變成H31,即1→31。
圖15-3
也就是說,執(zhí)行指令A(yù)SCI D0 D100 K1,已知(D0)=H4321,指令執(zhí)行完后(D100)=H0031,如下圖15-4所示。
圖15-4
在16位數(shù)據(jù)處理模式下,終址D對(duì)應(yīng)的寄存器,其高8位也被利用,換句話說,一個(gè)D可以存放2個(gè)ASCII碼。由每個(gè)S有4位HEX數(shù)據(jù),全部轉(zhuǎn)換為ASCII碼就需要2個(gè)D。 如下圖15-5所示,執(zhí)行指令A(yù)SCI D0 D100 K4,已知(D0)=H4321,指令執(zhí)行完后(D101)=H3132,(D100)=H3334,其中D100中的“34”為D0中“4”的ASCII碼,依次類推。
圖15-5
這里要注意的是,HEX數(shù)據(jù)在轉(zhuǎn)換的過程中,最后被轉(zhuǎn)換的會(huì)存放在終址D的最低位,例如上例中的十六進(jìn)制字符“4”對(duì)應(yīng)的ASCII碼存放到D100的低8位,這如同一個(gè)壓棧的過程。而在實(shí)際應(yīng)用中,常采用的是8位數(shù)據(jù)處理模式。
(2)8位數(shù)據(jù)處理模式
特殊繼電器M8161=ON,ASCI指令為8位數(shù)據(jù)處理模式。當(dāng)驅(qū)動(dòng)條件成立,將以S為首址的寄存器的n個(gè)十六進(jìn)制字符轉(zhuǎn)換為ASCII碼,并分別存放到以D為首址的寄存器的低8位,高8位忽略不用。
此時(shí)一個(gè)S的4位HEX數(shù)據(jù),全部轉(zhuǎn)換為ASCII碼就需要4個(gè)D寄存器,如下圖15-6所示。執(zhí)行指令A(yù)SCI D0 D100 K4,M8161=ON,已知(D0)=H4321,指令執(zhí)行完后(D100)=H0034,其中D100中的“34”為D0中“4”的ASCII碼,高8位作置零處理,依次類推。
圖15-6
在低8位數(shù)據(jù)處理模式下,因?yàn)?位HEX數(shù)據(jù)轉(zhuǎn)換為ASCII碼就要占用1個(gè)寄存器,所以要轉(zhuǎn)換n個(gè)字符,就要用到n個(gè)占D寄存器,其最高地址為D n-1。如下圖15-7所示,執(zhí)行指令A(yù)SCI D0 D100 K10,n=10,終址D的最高地址為D109(100 10-1),且存放的是最先轉(zhuǎn)換的字符“A”,其ASCII碼為H41。
圖15-7
十六進(jìn)制字符0~9,A~F對(duì)應(yīng)的ASCII碼分別為H30~H39,H41~H46,這個(gè)是可以通過查表得知,不過也比較好記。知道了ASCI指令是怎么回事后,再來看HEX指令就顯得很簡單。
02ASCII→HEX轉(zhuǎn)換指令HEX
HEX指令的作用是將外圍設(shè)備向PLC回傳的ASCII碼轉(zhuǎn)換為HEX數(shù)據(jù)。其編程手冊(cè)截圖和梯形圖形式如下圖15-8所示。和ASCI指令一樣,HEX指令也有3個(gè)操作數(shù),源址S為ASCII碼存儲(chǔ)字元件首址;終址D為HEX數(shù)據(jù)存儲(chǔ)字元件首地址;n依然是需轉(zhuǎn)換的HEX字符的個(gè)數(shù),取值范圍為1~256。
圖15-8
當(dāng)驅(qū)動(dòng)條件成立時(shí),將源址S的ASCII碼轉(zhuǎn)換為n個(gè)十六進(jìn)制字符并存放到首址為D的寄存器中,分為16位和8位數(shù)據(jù)處理模式。其對(duì)數(shù)據(jù)的處理過程恰好為ASCI指令的逆過程,如下圖15-9所示,執(zhí)行指令HEX D0 D100 K1,(D0)=H0041,ASCII碼“H41”對(duì)應(yīng)字符“A”,所以指令執(zhí)行完畢后,(D100)=H000A。
圖15-9
可以發(fā)現(xiàn),1個(gè)S最多能存2個(gè)ASCII碼,全部轉(zhuǎn)換為HEX數(shù)據(jù)只占用D的低8位。換句話說,也就是1個(gè)D可以存放2個(gè)S的共4個(gè)ASCII碼?;贏SCI指令講解的比較詳細(xì),HEX指令的16位數(shù)據(jù)處理模式就不再展開講解,它是將S的高8位和低8位均作為ASCII碼進(jìn)行轉(zhuǎn)換。
HEX指令的8位數(shù)據(jù)處理模式,是指把S為首址的寄存器的低8位數(shù)據(jù)對(duì)于的ASCII碼轉(zhuǎn)換為HEX數(shù)據(jù)并存放到D位首址的寄存器中,此時(shí)每轉(zhuǎn)換4個(gè)S占用1個(gè)D。如下圖15-10所示,執(zhí)行指令HEX D0 D10 K8,M8161=ON,8位數(shù)據(jù)處理模式,D0~D7的高8位數(shù)據(jù)均忽略不作處理,僅對(duì)其低8位數(shù)據(jù)進(jìn)行轉(zhuǎn)換。如D0的低8位為H38,該ASCII碼對(duì)應(yīng)的字符為“8”,所以終址D11的高4位就為H8,最先轉(zhuǎn)換的存放在最高位。
圖15-10
這里要注意的是,S中的數(shù)據(jù)一定要符合ASCII碼的標(biāo)準(zhǔn)才能被轉(zhuǎn)換,如果不是ASCII碼,則運(yùn)算錯(cuò)誤。
ASCI指令和HEX指令還是比較常用的,大家很有必要去理解它們,這次的學(xué)習(xí)分享雖然沒有結(jié)合實(shí)際的梯形圖案例,但還算詳細(xì),希望大家在閱讀后能有所收獲喲。那么,這次的學(xué)習(xí)分享就到這里。
注:本文章內(nèi)容都是基于三菱FX PLC 2N所寫
選自《三菱FX系列PLC功能指令詳解》第七章第70~73課時(shí)
(技成培訓(xùn)原創(chuàng),作者:楊思慧,未經(jīng)授權(quán)不得轉(zhuǎn)載,違者必究)

技成培訓(xùn)
微信公眾號(hào):jcpeixun
|

技成電工課堂
微信公眾號(hào):jcdgkt
|

技成PLC課堂
微信公眾號(hào):jc-plc
|