目錄
模擬量控制簡介
技術指標&輸入特性
接線方式
通用程序
From/To指令
緩沖存儲器分配
程序設計
結果折算
參考:
《三菱FX系列PLC編程速成全圖解》 韓相爭 化學工業出版社
FX2N-2AD中文手冊說明書
三菱FROM、TO指令解釋
模擬量控制簡介
模擬量處理過程如圖7-1所示。
——
模擬量I/O模塊包括模擬量輸入模塊、模擬量輸出模塊和模擬量輸入輸出模塊。
FX2N-2AD型模擬輸入模塊用于將2點模擬輸入(電壓輸入或電流輸入)轉換成12位的數字值,并將該值輸入到PLC的BFM中。該模塊無需外部電源,其電源由基本單元提供,通過專用的扁平電纜與CPU通信。
兩個頻道的模擬輸入值可以接受0-10V DC(點),0-5V DC,或者4-20mA之間。
技術指標&輸入特性
模擬量轉換的精度除了取決與A/D轉換的分辨率,還受到轉換芯片的外圍電路的影響。在實際應用中,輸入的模擬量信號會有波動、噪聲和干擾,內部模擬電路也會產生噪聲、漂移,這些都會對轉換的最后精度造成影響。這些因素造成的誤差要大于A/D芯片的轉換誤差。
接線方式
注意電壓輸入和電流輸入接線方式不同:電流輸入時,VIN與IIN需要短接再接入;電壓輸入時,可直接接入VIN。
信號輸入設備與模塊之間最好用屏蔽雙絞線連接,為了減少外界干擾可在VIN與COM端間并聯1個0.1~0.47uf的電容。
一般電壓信號比電流信號容易受干擾,應優先選用電流信號。
電流輸入通道對地有一250歐姆電阻,當電流輸入時,通過電阻轉換為電壓,接入電壓輸入通道,因此模塊的輸入端實際上就是電壓輸入。模塊的輸入放大器的增益時可調的,因此量程是可調的,量程在5-10V間可調,出場時量程為10V,如果被測信號的最大值小于10V,可通過調節增益電位器來調節量程。
例:如果被測信號為0-5V,將模塊輸入端接入5V直流電壓,調節增益調節電位器,同時讀取AD轉換值,當讀取轉換值為4000時即可。
注意
- 由于所有通道都采用同樣的偏移值和增益值,因此兩個通道的模擬輸入必須統一(即輸入相同類型的信號),不能一個作為模擬電壓的輸入,一個作為電流的輸入;
- 輸入信號只能是單極性的;
- 模塊轉換數字量對應2^12-1=4095,實際應用中簡化為4000;
通用程序
From/To指令除了硬件連接,還需要編寫相關程序用于設置模塊的工作參數和讀取轉換得到的數字量以及模塊的操作狀態。
FX2N-2AD模塊的使用不是很方便,要使用FROM/TO指令。
FROM指令
用FROM指令讀取特殊功能模塊的BFM中的數據,將A/D轉換結果讀入PLC,指令格式如下:
符號 | 含義 |
---|---|
Cc | 指令執行的啟動條件 |
FROM | 助記符 |
—>功能號 | FNC78 |
Kn1 | 擴展模塊編號,常用K表示 |
Kn2 | 緩沖存儲器BFM的地址;此地址只和模塊本身有關,和模塊編號無關,常用K表示 |
Kn3Mn4 | 讀取的數據在PLC CPU中的存儲地址,具體含義見下 |
—>Kn3 | 從BFM讀取的二進制的位數,常用K表示,以4bit為單位,n3允許值為1~8,例:K4代表16位 |
—>Mn4 | 數據在PLC儲存區域的首地址,M表示讀取的數據儲存于中間繼電器。注意:儲存位置可以是數據繼電器,此時無需前綴Kn3 |
Kn5 | 需要傳送的點數,常用K表示。FROM、FROMP格式時,以16位二進制為單位,例:K1代表16位;采用DFROM、DFROMP格式時,以32位二進制為單位,例:K1代表32位 |
—>表示該行從屬于上方最近一行沒有—>的行。
TO指令
使用TO指令用于PLC基本單元將數據寫入特殊功能模塊的BFM中,啟動A/D轉換;
符號 | 含義 |
---|---|
Cc | 指令執行的啟動條件 |
TO | 助記符 |
—>功能號 | FNC79 |
Kn1 | 擴展模塊編號,常用K表示 |
Kn2 | 緩沖存儲器BFM的地址;此地址只和模塊本身有關,和模塊編號無關,常用K表示 |
Kn3Mn4 | 寫入的數據在PLC CPU中的存儲地址,具體含義見下 |
—>Kn3 | 寫入BFM的二進制的位數,常用K表示,以4bit為單位,n3允許值為1~8,例:K4代表16位 |
—>Mn4 | 數據在PLC儲存區域的首地址,M表示寫入的數據儲存于中間繼電器。注意:儲存位置可以是數據繼電器,此時無需前綴Kn3 |
Kn5 | 需要傳送的點數,常用K表示。FROM、FROMP格式時,以16位二進制為單位,例:K1代表16位;采用DFROM、DFROMP格式時,以32位二進制為單位,例:K1代表32位 |
轉換結果數據在模塊緩沖存儲器(BFM)中的存儲地址如下,BFM是16位的:
程序設計表中:
A/D通道選擇:b0=0,選擇CH1通道;b0=1,選擇CH2通道
A/D轉換啟動:b1由0變1時,轉換開始
使用前還需確定模塊的編號,FX系列可以連接多達8個特殊功能模塊,其編號從最靠近基本單元的那一個開始順次編為0-7號,注意數字量I/0擴展模塊不占編號。
單通道
下面展示一段非常經典的AD模塊程序,采用了通道1進行轉換,幾乎在每本教材中都會出現:
下面對該梯形圖程序進行逐行解釋:
- CPU在第一個特殊模塊(K0)的BFM17(K17)中,向bit0(H0=0B)寫入0,意思是選擇模塊的CH1通道;
- CPU在第一個特殊模塊(K0)的BFM17(K17)中,向bit1(H2=10B)寫入1,即啟動CH1通道 的AD轉換功能;
兩行代碼沒法合成一行。
- K2M100,該操作將第一個模塊的BFM#0 的低八位(b0-b7)讀到CPU的M100-M107,BFM#1的低八位(包含有效數據b0-b3)讀到CPU的M108-M115,即讀取CH1通道的12位數字值;
這個問題我想了有一段時間了,BFM#0和BFM#1中共有16+16位數據(包括保留位),所以轉移的點數位K2(K1代表16位,因此K2代表32位),然而儲存,目的地址為K2M100(K2代表8位)而非K4M100(K4代表16位)。之所以采用K2M100而非K4M100,可能是因為后者會使12位數字值不連續,高位和低位數據分散需要額外編寫傳送指令;前者剛好使低八位和高四位連續。
- K4M100,該操作將M100-M115的數據內容轉移到數據儲存器D0中(通道1的高端4位移動到下面的8位位置上,并存儲到D0);
雙通道
如果要同時使用兩個通道,可采用如下程序:
實際上在BFM#17中同一時間只能設置1個通道工作,因此圖中X0和X1在同一時間只能有一個置位,這也是為什么兩個通道都將臨時數據存儲到K2M100卻不會造成數據沖突;若二者同時置位,會導致程序不能正常運行。
注意
從X0/X1打開至模擬到數字轉換值存儲到主單元的數據寄存器之間的時間為2.5ms,因此兩通道的切換時間不得小于該處理時間。
為了將模擬量模塊內部數字量與實際物理量對應,需要找出二者的數據比例關系。
設X為數字量(0-10V),M為模擬量(0-4000),可得:
M=X/400
如果直接寫入DIV D0 K400 D2,由于除法指令無法除小數的特性,其結果總是為整數,小數會被省略,因而數據精度遭到折損。
可以將X從0-10V的范圍轉換到0-10000mV,這樣算式為:
M=1000X/400
=10X/4
即將小數擴大為整數來保留值。
修改后的程序為:
用了兩個指令,先乘后除。
乘法MUL指令和除法DIV指令占取兩個寄存器,如果只保留一個會造成數據錯誤。
平均值濾波
(摘自FX3U手冊,不清楚FX2N有沒有這個功能)模擬量輸入模塊可能采集到緩慢變化的模擬量信號中的干擾噪聲,這些噪聲通常以窄脈沖的方式出現,為了減輕噪聲信號的影響,模塊提供連續若干次采樣值的平均值,可以設置求平均值的采樣周期數。但是,取平均值會降低PLC對外部輸入信號的響應速度。