1 引言
由PLC控制的某些系統(tǒng),經(jīng)常要測量各類模擬電壓信號,以往通常用電壓傳感器進行采樣,由PLC的模擬量擴展模塊進行運算處理。電壓傳感器輸出是模擬量,在電磁騷擾較強的環(huán)境中,容易出現(xiàn)較大的測量誤差;同時,由于占用模擬量擴展模塊寶貴的輸入點(模擬量擴展模塊價格接近中、小型PLC的價格,且輸入點極少),使系統(tǒng)的性價比降低。當(dāng)用電壓/頻率傳感器進行采樣,進而用PLC高速計數(shù)器計數(shù),能較好地解決上述問題,V/F傳感器輸出是脈沖信號,該信號在電磁騷擾下變化極??;另外,該信號是數(shù)字量,可直接接入PLC高速計數(shù)器的輸入點。下面以西門子SIMATCS7-00、CPU224和V/F傳感器為例介紹測量模擬電壓信號的方法。
2 高速計數(shù)器和V/F傳感測量模擬電壓信號的原理
CPU224有HSC0-HSC5共6個高速計數(shù)器,每個高速計數(shù)器都有多種工作模式以完成不同的功能,在使用一個高速計數(shù)器時,根據(jù)系統(tǒng)的控制需要,首先要給計數(shù)器選定一種工作模式,可用高速計數(shù)器定義指令HDEF來進行設(shè)置。只有定義了計數(shù)器和計數(shù)器模式,才能對計數(shù)器的動態(tài)參數(shù)進行編程。編程時,每個高速計數(shù)器只能使用一條HDEF指令。每個高速計數(shù)器都有一個控制字節(jié),包括允許或禁止計數(shù),計數(shù)方向的控制,要裝入的計數(shù)器當(dāng)前值和要裝入的預(yù)置值。
V/F傳感器把測量的模擬電壓信號按著固定的比率轉(zhuǎn)換成矩形脈沖信號,本例采用的電壓/頻率傳感器,它的比率為20Hz/V。
下面以一臺35kV級中、小容量變電所用直流電源為例,說明如何利用CPU224的高速計數(shù)器HSC1和V/F傳感器(輸入:DC0~500V電壓,輸出:0~10kHz脈沖)來測量控制母線電壓。首先,V/F傳感器將輸入電壓(控制母線電壓)轉(zhuǎn)換為矩形脈沖信號,再將此信號送入高速計數(shù)器HSC1的輸入端,并累計脈沖數(shù)。通過設(shè)置定時中斷0的間隔時間,來控制高速計數(shù)器累計脈沖的時間,當(dāng)預(yù)置的間隔時間到后,根據(jù)累計脈沖數(shù),計算出被測控制母線電壓值,測量原 理 圖 如 圖1所 示 。
圖1 高速計數(shù)器測量V/F傳感器脈沖電路
3 測量模擬電壓信號的方法
3.1 硬件要求
需要使用設(shè)備 CPU224 1臺
電壓/頻率傳感器 1臺
技術(shù)參數(shù) 供電電壓 DC 24V
輸 入 DC 0~500V
輸出 方波,GND~24V
測量范圍 0~500V→0~10kHz
比 率 20Hz/V
3.2 程序結(jié)構(gòu)
主程序在第一個掃描周期調(diào)用子程序SBR0
SBR0高速計數(shù)器和定時中斷的初始化
INT0對高速計數(shù)器求值的定時中斷程序
3.3 程序和注釋
主程序在第一個掃描周期調(diào)用初始化子程序SBR0,僅在第一個掃描周期標(biāo)志位SM0.1=1。由子程序SBR0實現(xiàn)初始化。
首先,把高速計數(shù)器HSC1的控制字節(jié)MB47置為16進制數(shù)FC,其含義是:正方向計數(shù),可更新預(yù)置值(PV),可更新當(dāng)前值(CV),激活HSC1。
然后,用定義指令HDEF把高速計數(shù)器HSC1設(shè)置成工作模式0,即沒有復(fù)位或啟動輸入,也沒有外部的方向選擇。當(dāng)前值SMD48復(fù)位為0,預(yù)置值SMD52置為FFFF(16進制)。定時中斷0間隔時間SMB34置為100ms,中斷程序0分配給定時中斷0,并允許中斷,用指令HSC1啟動高速計數(shù)器。
每100ms調(diào)用一次中斷程序0,讀出高速計數(shù)器的數(shù)值后,將其置零。通過HSC1計數(shù)值及變換關(guān)系來求被測的控制母線電壓值。本例中,采用參數(shù)為輸入0~500V、輸出0~10kHz的V/F傳動器,100ms時間累計脈沖最多為1kHz,在中斷程序中用乘法指令MUL將該計數(shù)值乘5,則100ms內(nèi)最多脈沖累計數(shù)為1k×5=5kHz,從而實現(xiàn)顯示值與10倍的真實電壓值相對應(yīng),假設(shè)經(jīng)乘法指令運算后計數(shù)值為2200Hz,則實際電壓值相應(yīng)為220V。然后將經(jīng)程序處理的計數(shù)值置入輸出字節(jié)QBO,以便通過LED來顯示被測的模擬電壓值。高速計數(shù)器和V/F傳感器測量模擬電壓信號的主程序、子程序和中斷程序如下所述。
主程序
LD SM0.1 //用初次掃描存儲器位(SM0.1)調(diào)用執(zhí)行初始化操作的子程序。由于采用這樣的子程序調(diào)用,后續(xù)掃描不會再調(diào)用這個子程序,從而減少了掃描時間,也提供了一個結(jié)構(gòu)優(yōu)化的程序。
CALL SBR_0 //調(diào)用初始化子程序SBR_0
子程序
SBR0 SM0.0 //啟動子程序0
LD SM0.0 //SM0.0總是1
MOVB 16#FC,SMB47 //設(shè)置高速計數(shù)器HSC1控制字節(jié):上升沿復(fù)位,上升沿啟動,1X計數(shù)速率,正向計數(shù),可改變方向,可更新PV(預(yù)置值),可CV(當(dāng)前值),激活HSC1。
HDEF 1,0 //定義高速計數(shù)器,選用HSC1工作于模式0
MOVO 0,SM048 //HSC1當(dāng)前值清0
MOVD 16#FFFF,SMD52 //將預(yù)置值裝入SMD52
MOVB 100,SMB34 //設(shè)置定時中斷0間隔時間為100ms
ATCH 0,10 //中斷連接指令,中斷程序為INT_0,事件號為10
EN 1 //允許所有中斷
HSC 1 //編程計數(shù)器SHC1,使設(shè)置生效
中斷程序0
INT 0 //啟動中斷程序
LD SM0.0 //SM00總是1
MOVD HSC1,AC0 //把HSC1的計數(shù)值存入累加器AC0
MOVD AC0,VD100 //把計數(shù)值存入VD100
MOVD 0,SM048 //HSC1當(dāng)前值清0
MOVB 16#C0,SMB47 //重新設(shè)置HSC1控制字節(jié):上升沿復(fù)位,上升沿啟動,4X計數(shù)速率;反向計數(shù),不改變計數(shù)方向,不更新PV,可更新CV,激活HSC1。
HSC 1 //啟動高速計數(shù)器HSC1
MUL 5,VD100 //把HSC1的計數(shù)值乘以5
MOVB VB103,QB0 //在輸出端Q00至Q0.7顯示10倍被測控母電壓值
4 結(jié)語
以上方法已用于GZS2智能型高頻開關(guān)直流電源等控制系統(tǒng)(變電站、發(fā)電廠用直流電源),實踐證明,該方法進行模擬電壓信號測量,具有精度高(最高可達5/1000V),抗騷擾性強,運行可靠等優(yōu)點,具有較大的實用價值和廣泛的應(yīng)用前景。