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