在PLC控制系統(tǒng)中,特殊功能模塊一般作為PLC的擴(kuò)展單元使用,模塊的控制與檢測(cè)需要通過(guò)PLC的程序進(jìn)行。
為了能夠方便地實(shí)現(xiàn)PLC對(duì)特殊功能模塊的控制,并減少應(yīng)用指令的條數(shù),統(tǒng)一應(yīng)用指令的格式,在三菱PLC的特殊功能模塊中設(shè)置了專門(mén)用于PLC與模塊間進(jìn)行信息交換的緩沖存儲(chǔ)器(Buffer Memory,簡(jiǎn)稱BFM)。緩沖存儲(chǔ)器數(shù)據(jù)中包括了模塊控制信號(hào)位、模塊參數(shù)等控制條件,以及模塊的工作狀態(tài)信息、運(yùn)算與處理結(jié)果、出錯(cuò)信息等內(nèi)容。
PLC對(duì)模塊的控制,只需要通過(guò)PLC的數(shù)據(jù)輸出(TO)指令在模塊緩沖存儲(chǔ)器的對(duì)應(yīng)控制數(shù)據(jù)位中寫(xiě)入控制信息即可。同樣PLC對(duì)模塊的狀態(tài)檢測(cè),也只需要通過(guò)PLC的數(shù)據(jù)閱讀(FROM)指令讀出對(duì)應(yīng)的模塊緩沖存儲(chǔ)器數(shù)據(jù)即可。
因此,對(duì)于所有的特殊功能模塊,PLC的編程事實(shí)上只是不斷利用PLC的TO與FROM指令對(duì)模塊緩沖存儲(chǔ)器進(jìn)行讀/寫(xiě)操作而已。為此,正確使用PLC的TO與FROM指令,是特殊功能模塊編程的前提條件。
一、特殊功能模塊的位置編號(hào)
當(dāng)多個(gè)特殊模塊與PLC相連時(shí),PLC對(duì)模塊進(jìn)行的讀/寫(xiě)操作必須正確區(qū)分是對(duì)哪一個(gè)模塊進(jìn)行操作。這就產(chǎn)生了區(qū)分不同模塊的位置編號(hào)。
當(dāng)多個(gè)模塊相連時(shí),PLC特殊模塊位置編號(hào)是這樣確定的:從基本單元最近的模塊算起,由近到遠(yuǎn)分別是0#,1#,2#,…,7#特殊模塊編號(hào),如下圖所示。
但當(dāng)其中如果含有擴(kuò)展單元時(shí),擴(kuò)展模塊不算入編號(hào),特殊模塊編號(hào)則跳過(guò)擴(kuò)展單元,仍由近到遠(yuǎn)從0#編起,如圖下所示。
一個(gè)PLC的基本單元最多能夠連接8個(gè)特殊單元模塊,編號(hào)從0#~7#。FX2N PLC的I/O點(diǎn)數(shù)最多是256點(diǎn),它包含了基本單元的I/O點(diǎn)數(shù)、擴(kuò)展單元的I/O點(diǎn)數(shù)和特殊模塊所占用的I/O點(diǎn)數(shù)。特殊模塊所占用的I/O點(diǎn)數(shù)可查詢手冊(cè)得到。FX2N的模擬量模塊一般占用8個(gè)I/O點(diǎn),計(jì)算在輸入點(diǎn)、輸出點(diǎn)均可。
二、緩沖存儲(chǔ)器緩沖存儲(chǔ)器BFM
每個(gè)特殊功能模塊里面有若干個(gè)16位存儲(chǔ)器,手冊(cè)上面稱緩沖存儲(chǔ)器BFM。緩沖存儲(chǔ)器BFM是PLC與外部模擬量進(jìn)行信息交換的中間單元。輸入時(shí),由模擬量輸入模塊將外部模擬量轉(zhuǎn)換成數(shù)字量后先暫存在BFM內(nèi),再由PLC進(jìn)行讀取,送入PLC的字軟元件進(jìn)行處理。輸出時(shí),PLC將數(shù)字量送入輸出模塊的BFM內(nèi),再由輸出模塊自動(dòng)轉(zhuǎn)換成模擬量送入外部控制器或執(zhí)行器中,這是模擬量模塊BFM的主要功能。除此之外,BFM還具有如下功能。
1)模塊應(yīng)用設(shè)置功能:模擬量模塊在具體應(yīng)用時(shí),要求對(duì)其進(jìn)行選擇性設(shè)置,如通道的選擇、轉(zhuǎn)換速度、采樣等,這些都是針對(duì)BFM不同單元的內(nèi)容設(shè)置來(lái)進(jìn)行的。
2)識(shí)別和差錯(cuò)功能:每個(gè)模擬量模塊都是一個(gè)識(shí)別碼,固化在某個(gè)BFM單元里,用于進(jìn)行模塊識(shí)別。當(dāng)模塊發(fā)生故障時(shí),BFM的某個(gè)單元會(huì)存在故障狀態(tài)信息。
3)標(biāo)定調(diào)整功能:當(dāng)模塊的標(biāo)定不能夠滿足實(shí)際生產(chǎn)需要時(shí),可以通過(guò)修改某些BFM單元數(shù)值建立新的標(biāo)定關(guān)系。
特殊模塊的BFM數(shù)量并不相同,但FX2N模擬量模塊大多為32個(gè)BFM緩沖存儲(chǔ)單元,他們的編號(hào)是BFM#0~BFM#31。每個(gè)BFM緩沖存儲(chǔ)單元都是一個(gè)16位的二進(jìn)制存儲(chǔ)器。在數(shù)字技術(shù)中,16位二進(jìn)制位數(shù)一個(gè)“字”,因此,每個(gè)BFM存儲(chǔ)單元都是一個(gè)“字”單元。在介紹模擬量的BFM功能時(shí),常常把某些BFM存儲(chǔ)單元的內(nèi)容稱為“XX”字,如通道字、狀態(tài)字等。
對(duì)特殊功能模塊的學(xué)習(xí)和應(yīng)用,除了選型、模擬量信號(hào)的輸入/輸出接線和它的位置編號(hào)外,對(duì)其BFM存儲(chǔ)單元的學(xué)習(xí)是個(gè)關(guān)鍵,是學(xué)習(xí)特殊功能模塊的難點(diǎn)和重點(diǎn)。實(shí)際上,學(xué)習(xí)這些模塊的應(yīng)用就是學(xué)習(xí)這些存儲(chǔ)器的內(nèi)容跟它的讀/寫(xiě)。推廣來(lái)說(shuō),不管學(xué)習(xí)哪種模塊,其核心都是BFM的內(nèi)容及其讀寫(xiě)。
PLC與特殊模塊的信息交換是通過(guò)讀指令FROM和寫(xiě)指令TO的程序編制來(lái)完成的。
一、FROM指令
PLC的FROM指令的作用是將特殊功能模塊緩沖存儲(chǔ)器(BFM)的內(nèi)容讀入到PLC中。指令的功能代碼為FNC78,指令格式如下:
指令中各元件、操作數(shù)代表的意義依次如下。
X0:指令執(zhí)行啟動(dòng)條件,當(dāng)X0為“1”時(shí),執(zhí)行本指令。啟動(dòng)觸點(diǎn)可以是輸入X、輸出Y、內(nèi)部繼電器M等。
FROM:指令代碼,其中FROM為基本指令代碼,代表特殊功能模塊緩沖存儲(chǔ)器(BFM)。
閱讀指令,帶“□”的前綴D與帶后綴P可以根據(jù)情況選擇使用,可有可無(wú),前綴D表示32位操作指令,后綴P代表觸點(diǎn)上升沿驅(qū)動(dòng)。各種組合所代表的意義如下。
-
FROM(無(wú)前綴D和后綴P):利用觸點(diǎn)X0.啟動(dòng)的16位數(shù)據(jù)閱讀指令。
-
DFROM(有前綴D,無(wú)后綴P):利用觸點(diǎn)X0啟動(dòng)的32位數(shù)據(jù)閱讀指令。
-
FROMP(無(wú)前綴D,有后綴P):利用觸點(diǎn)X0的上升沿啟動(dòng)的16位數(shù)據(jù)閱讀指令。
-
DFROMP(有前綴D,有后綴P):利用觸點(diǎn)X0的上升沿啟動(dòng)的32位數(shù)據(jù)閱讀指令。
K1:模塊地址常數(shù),用來(lái)選擇與指定特殊功能模塊。如在FX系列PLC中,從基本單元開(kāi)始,依次向右的第1、2、3…..個(gè)特殊功能模塊,對(duì)應(yīng)的模塊地址依次為K0、K1、K2、……,在指令的這一區(qū)域只能輸入常數(shù)。
K29:模塊緩沖存儲(chǔ)器的地址(數(shù)據(jù)源),K29代表模塊緩沖存儲(chǔ)器的地址為BFM#29。在指令這一區(qū)域只能輸出常數(shù),具體參數(shù)號(hào)取決于指令需要閱讀的內(nèi)容。
K40M0:指定從緩沖存儲(chǔ)器讀取到的數(shù)據(jù)在PLC中的存儲(chǔ)位置(目標(biāo)位置)。K4代表需要閱讀的二進(jìn)制位數(shù),以4位(bit)二進(jìn)制為單位,K4代表16位,允許輸入的值為K1~K8。M0代表數(shù)據(jù)在PLC中存儲(chǔ)區(qū)域的首地址,在16位數(shù)據(jù)閱讀時(shí),若輸入M0,代表讀入的數(shù)據(jù)存儲(chǔ)于PLC的內(nèi)部繼電器M0~M15中。存儲(chǔ)位置也可以是16位數(shù)據(jù)寄存器D(常用),這時(shí)不需要前綴K4。
K1:需要傳送的點(diǎn)數(shù),采用FROM、FROMP格式時(shí),以16位二進(jìn)制為單位,K1代表閱讀16點(diǎn),K2代表32點(diǎn)等。采用DFROM、DFROMP格式時(shí),以32位二進(jìn)制為單位,K1代表閱讀32點(diǎn),K2代表64點(diǎn)。允許輸入的值為K1~K32767。
FROM指令也可以32位應(yīng)用,這時(shí)傳送數(shù)據(jù)個(gè)數(shù)為2K1個(gè)。
下面通過(guò)具體例子來(lái)具體說(shuō)明指令功能。
【例子1】試說(shuō)明下列指令執(zhí)行功能含義。
1)FROM K1 K30 D0 K1
把1#模塊的BFM#30單元內(nèi)容復(fù)制到PLC的D0單元中。
2)FROM K0 K50 D100 K4
把0#模塊的(BFM#5~BFM#8)4個(gè)單元內(nèi)容復(fù)制到PLC的(D10~D13)單元中。其對(duì)應(yīng)關(guān)系是:(BFM#5)→(D10)、(BFM#6)→(D11)、(BFM#7)→(D12)、(BFM#8)→(D13)。
3)FROM K1 K29 K4M10 K1
用1#模塊BFM#29的位值控制PLC的M10~M25繼電器狀態(tài)。位值為0,M斷開(kāi);位值為1,M閉合。例如,BFM#29中的數(shù)值是1000 0000 0000 0111,那么它所對(duì)應(yīng)的繼電器M10、M11、M12和M25是閉合的,其余繼電器都是斷開(kāi)的。
4)DFROM K0 K5 D100 K1
這是FROM指令的32位應(yīng)用,注意這個(gè)K1表示傳送兩個(gè)數(shù)據(jù),指令執(zhí)行功能含義是把0#模塊(BFM#5)→(D100)、(BFM#6)→(D101)。
【例子2】說(shuō)明下圖程序各指令的意義
指令①的作用是:當(dāng)X0為“1”時(shí),將安裝于基本單元右側(cè)的第1個(gè)特殊功能模塊的緩沖存儲(chǔ)器的參數(shù)BFM#29讀入到PLCM0~M15的16點(diǎn)內(nèi)部及繼電器中。
指令②的作用是:在X0為“1”的瞬間,利用X0的上升沿,將安裝于基本單元右側(cè)的第1個(gè)特殊功能模塊的緩沖存儲(chǔ)器的參數(shù)BFM#29讀入到PLC的M0~M15的16點(diǎn)內(nèi)部繼電器中。
指令③的作用是:當(dāng)X0為“1”時(shí),將安裝于基本單元右側(cè)的第一個(gè)特殊功能模塊的緩沖存儲(chǔ)器的參數(shù)BFM#29、BFM#30讀入到PLC的16位數(shù)據(jù)存儲(chǔ)器D0中。
指令④的作用是:當(dāng)X0為“1”時(shí),將安裝于基本單元右側(cè)的第一個(gè)特殊功能模塊的緩沖存儲(chǔ)器的參數(shù)BFM#29、BFM#30讀入到PLC的16位數(shù)據(jù)存儲(chǔ)器D0、D1中(32位閱讀指令)。
指令⑤的作用是:當(dāng)X0為“1”時(shí),將安裝于基本單元右側(cè)第一個(gè)特殊功能模塊的緩沖存儲(chǔ)器的參數(shù)BFM#29、BFM#30讀入到PLC的16位數(shù)據(jù)寄存器D0、D1中(16位閱讀指令,但傳送點(diǎn)數(shù)為連續(xù)32點(diǎn))。
指令⑥指令作用是:當(dāng)X0為“1”時(shí),將安裝于基本單元右側(cè)第一個(gè)特殊功能模塊的緩沖存儲(chǔ)器的參數(shù)BFM#29、BFM#30、BFM#31、BFM#32讀入到PLC的16位數(shù)據(jù)存儲(chǔ)器D0、D1、D2、D3中(32位閱讀指令,傳送點(diǎn)數(shù)為連續(xù)64點(diǎn))。
二、TO指令
TO指令的作用是將PLC中指定的內(nèi)容寫(xiě)入特殊功能模塊的緩沖存儲(chǔ)器(BFM)中,指令的功能代號(hào)為FNC79,指令格式如下:
指令中各元件、操作代表的意義依次如下。
X0:指令執(zhí)行啟動(dòng)條件。
TO:指令代碼,其中TO為基本指令代碼,代表特殊功能代碼緩沖存儲(chǔ)器(BFM)寫(xiě)入指令,前綴D表示32位操作指令,后綴P表示觸點(diǎn)上升沿驅(qū)動(dòng)。
K1:模塊地址常數(shù),用來(lái)選擇和指定特殊功能模塊。
K29:模塊緩沖存儲(chǔ)器的數(shù)據(jù)地址常數(shù),在TO指令中目標(biāo)位置,K29代表模塊緩沖存儲(chǔ)器的參數(shù)BFM#29。
K4M0:源數(shù)據(jù)在PLC中的存儲(chǔ)位置指定。K4代表需要寫(xiě)入的二進(jìn)制位數(shù),以4位(bit)二進(jìn)制為單位,K4代表16位,允許輸入的值為K1~K8。M0代表源數(shù)據(jù)在PLC中存儲(chǔ)區(qū)域的首地址。源數(shù)據(jù)也可以是16位數(shù)據(jù)寄存器D(常用),這時(shí)不需要前綴K4。
K1:需要傳送的點(diǎn)數(shù),允許輸入的值為K1~K32767。TO指令也可32位應(yīng)用,這時(shí)傳送數(shù)據(jù)個(gè)數(shù)為2K1個(gè)。
指令中各操作數(shù)的含義和要求與FROM指令一致。
【例子3】試說(shuō)明指令執(zhí)行功能含義。
1)TOP K1 K0 H3300 K1
把十六進(jìn)制數(shù)H3300復(fù)制到1#模塊的BFM#0單元中。
2)TOP K0 K5 D10 K4
把PLC的(D10~D13)4個(gè)單元的內(nèi)容寫(xiě)入位置編號(hào)為0#模塊的(BFM#5~BFM#8)4個(gè)單元中。其對(duì)應(yīng)關(guān)系是(D10)→(BFM#5)、(D11)→(BFM#6)、(D12)→(BFM#7)、(D13)→(BFM#8)。
3)TOP K1 K4 K4M10 K1
把PLC的M10~M25繼電器的狀態(tài)所表示的16位數(shù)據(jù)的內(nèi)容寫(xiě)入位置編號(hào)為1#模塊BFM#4緩沖存儲(chǔ)器中。M斷開(kāi),位值為0;M閉合,位值為1。
4)DTOP K0 K5 D100 K1
這是TO指令的32位應(yīng)用,注意這個(gè)K1表示傳送兩個(gè)數(shù)據(jù),指令執(zhí)行功能含義是把PLC的(D100)、(D101)單元中的內(nèi)容復(fù)制到位置編號(hào)為0#模塊的(BFM#5)、(BFM#6)緩沖存儲(chǔ)器中。