摘 要:本文介紹了一種記錄發(fā)電機(jī)故障數(shù)據(jù)并用波形顯示出來(lái)的方法。它利用了PLC及其配套的模擬量擴(kuò)展模塊進(jìn)行數(shù)據(jù)采集和轉(zhuǎn)換,將故障前后的數(shù)據(jù)保存在PLC中。在VB環(huán)境下實(shí)現(xiàn)計(jì)算機(jī)與PLC的串行通訊,讀取PLC中保存的故障數(shù)據(jù)并用圖形顯示出來(lái)。實(shí)踐證明,該系統(tǒng)圖形界面友好,可靠性高,操作方便,應(yīng)用效果好。
關(guān)鍵詞:故障錄波;可編程控制器;串行通訊
Abstract: This paper introduces a kind of method by which we can record fault data of generator and display in figure. It makes use of PLC and its analogue expansion module to collect and convert the fault data and store them in a PLC. Through the serial communication with PLC in VB, the computer read the fault data stored in the PLC and display in figure. It proved that the system has characteristics such as friendly interface, high reliability, easy operation and good application effect etc.
Keywords: Fault record ; PLC ; Serial communication
1. 引言
發(fā)電機(jī)是電力系統(tǒng)的重要組成部分,它的可靠運(yùn)行對(duì)于保證電力系統(tǒng)的穩(wěn)定具有重要意義。發(fā)電機(jī)故障錄波裝置所記錄的數(shù)據(jù)為工作人員正確分析發(fā)電機(jī)故障原因,研究事故對(duì)策,及時(shí)處理事故提供了可靠的依據(jù),同時(shí),根據(jù)故障錄波數(shù)據(jù)還可以分析系統(tǒng)的故障參數(shù)、各電氣量的變化規(guī)律,進(jìn)行故障定位等,這些對(duì)于保證電力系統(tǒng)的安全可靠運(yùn)行起著十分重要的作用。可編程控制器(Programmable Logic Controller,簡(jiǎn)稱(chēng)PLC)作為工業(yè)控制專(zhuān)用的計(jì)算機(jī),由于其結(jié)構(gòu)簡(jiǎn)單、性能優(yōu)良,抗干擾性能好,可靠性高,在機(jī)械、化工、橡膠、電力等行業(yè)工業(yè)控制現(xiàn)場(chǎng)已日趨廣泛地得到應(yīng)用,成為工控現(xiàn)場(chǎng)進(jìn)行實(shí)時(shí)控制的最主要的控制裝置。本文介紹一種利用可編程控制器和擴(kuò)展模擬量模塊實(shí)現(xiàn)發(fā)電機(jī)故障錄波的方法。
2. 系統(tǒng)的組成和工作原理
系統(tǒng)的組成框圖如圖1所示,由上位計(jì)算機(jī)和1套PLC測(cè)控系統(tǒng)組成。PLC通過(guò)外部變送器、互感器與發(fā)電機(jī)組相連,發(fā)電機(jī)機(jī)端電壓U、定子電流I為三相交流電,分別經(jīng)電壓互感器(PT)和電流互感器(CT)轉(zhuǎn)換成三相100V、5A的二次信號(hào),發(fā)電機(jī)轉(zhuǎn)子勵(lì)磁電流經(jīng)過(guò)分流器RS轉(zhuǎn)換成75mV信號(hào),再經(jīng)過(guò)三相功率(含有功、無(wú)功)變送器、三相電壓變送器、直流電流變送器轉(zhuǎn)換成與其成比例的0~10V電壓信號(hào)后輸入到PLC的模擬量模塊。模擬量經(jīng)過(guò) A/D轉(zhuǎn)換,然后根據(jù)互感器、變送器的變換比例計(jì)算出機(jī)端電壓U、轉(zhuǎn)子電流If、有功功率P和無(wú)功功率Q的等機(jī)組運(yùn)行量。PLC每隔20毫秒采樣一次,每 40毫秒將采樣的數(shù)據(jù)保存到故障數(shù)據(jù)區(qū)中。當(dāng)發(fā)生故障后,PLC記錄下故障發(fā)生以后的13秒數(shù)據(jù),故障數(shù)據(jù)記錄過(guò)程結(jié)束。當(dāng)PLC接收到上位機(jī)發(fā)送來(lái)的傳送命令時(shí),PLC將記錄的故障數(shù)據(jù)通過(guò)串口通訊傳送給上位機(jī)。上位機(jī)將數(shù)據(jù)完整的接收下來(lái),經(jīng)過(guò)數(shù)據(jù)處理顯示出機(jī)組運(yùn)行量U、If、P、Q、Ug(電壓給定)在故障前7秒、后13秒的波形曲線,這樣就可以對(duì)發(fā)電機(jī)故障進(jìn)行分析了。在本系統(tǒng)中,PLC選用SIMATIC S7-226;模擬量模塊選用與 S7-226配套的產(chǎn)品EM235;PLC與計(jì)算機(jī)之間通過(guò)PC/PPI電纜連接以串行方式進(jìn)行通訊。
圖1 發(fā)電機(jī)故障錄波系統(tǒng)框圖
3. 下位機(jī)程序設(shè)計(jì)
PLC屬于下位機(jī),其程序共分為3個(gè)模塊,它們是初始化子程序、錄波子程序和通信子程序。以下將分別說(shuō)明各模塊的設(shè)計(jì)思想。
3.1 初始化子程序
初始化子程序包括初始化自由口通信參數(shù),設(shè)置接收命令RCV啟動(dòng)和結(jié)束條件,數(shù)據(jù)指針賦初值,連接20ms采樣、接收和發(fā)送中斷。
3.2 錄波子程序
錄波子程序在20ms采樣中斷中調(diào)用,負(fù)責(zé)記錄機(jī)組運(yùn)行量U、If、P、Q、Ug在故障前7秒、后13秒的數(shù)據(jù)。
在PLC中定義一個(gè)連續(xù)的數(shù)據(jù)區(qū)VW4000~VW8998,用來(lái)保存故障數(shù)據(jù)。每個(gè)運(yùn)行量的數(shù)據(jù)占用1000字節(jié)的數(shù)據(jù)塊,地址分配如下,U:VW4000~VW4998 If:VW5000~VW5998 P:VW6000~VW6998 Q:VW7000~VW7998 Ug:VW8000~VW8998。
錄波子程序每隔40毫秒將采樣的數(shù)據(jù)送到各自的數(shù)據(jù)塊中。為每個(gè)數(shù)據(jù)塊定義一個(gè)數(shù)據(jù)指針,其初始值分別指向各數(shù)據(jù)塊的首地址。每傳送一次數(shù)據(jù),各指針向下移動(dòng)2字節(jié)。故障前7秒數(shù)據(jù)(350字節(jié))是循環(huán)記錄的,即如果在故障到來(lái)之前數(shù)據(jù)已存滿,各數(shù)據(jù)指針將重新指向數(shù)據(jù)塊的首地址。定義指針index 用來(lái)記錄20秒故障數(shù)據(jù)開(kāi)始的位置。當(dāng)故障到來(lái)時(shí),數(shù)據(jù)指針指向故障后13秒數(shù)據(jù)(后650字節(jié)),此時(shí)指針index將前7秒數(shù)據(jù)分為前后兩部分,正確的順序是將前后兩部分交換過(guò)來(lái)。當(dāng)后13秒數(shù)據(jù)記錄完后,錄波子程序結(jié)束。程序流程圖如圖2所示。
3.3 通信子程序
通信子程序負(fù)責(zé)與上位機(jī)通信,將存儲(chǔ)在數(shù)據(jù)區(qū)的故障數(shù)據(jù)通過(guò)串口分批傳送給上位機(jī)。上位機(jī)每發(fā)送一次傳送命令(用整數(shù)255表示),PLC在接收中斷程序中判斷收到的字符是否為傳送命令,如果是則將傳送命令標(biāo)志M6.0置位并且在主程序中調(diào)用通信子程序。
定義指針tran_pointer用來(lái)指向待傳送數(shù)據(jù)的首地址,其初值為&VW4000,即指向數(shù)據(jù)區(qū)首地址。定義變量count用來(lái)記錄傳送的次數(shù)。在通信子程序中,首先停止自由口的接收,然后將以指針tran_pointer為首地址,大小200字節(jié)的數(shù)據(jù)傳送到發(fā)送緩沖區(qū)中,接著用發(fā)送命令通過(guò)串口發(fā)送出去。每發(fā)送一次數(shù)據(jù),將指針tran_pointer向下移動(dòng)200字節(jié),變量count值加1, M6.0復(fù)位。當(dāng)上位機(jī)發(fā)送完第 26次傳送命令時(shí),PLC中數(shù)據(jù)區(qū)VW4000~VW8998的5000個(gè)字節(jié)已發(fā)送完畢,再將額定電壓、額定電流、額定有功功率、額定無(wú)功功率和指針 index發(fā)送出去, count值清零,指針tran_pointer重新初始化,M6.0復(fù)位。至此,一次完整的故障數(shù)據(jù)傳送過(guò)程結(jié)束。
圖2. 錄波子程序流程圖
4. 上位機(jī)程序設(shè)計(jì)
上位機(jī)程序設(shè)計(jì)是以Visual Basic 6.0 為平臺(tái),利用MS Comm控件,以事件驅(qū)動(dòng)方式實(shí)現(xiàn)計(jì)算機(jī)與PLC之間串行通訊,完成數(shù)據(jù)間的交換。上位機(jī)程序包括用戶界面設(shè)計(jì)、通訊和數(shù)據(jù)處理程序、顯示程序等。
4.1 用戶界面設(shè)計(jì)
本系統(tǒng)中,設(shè)計(jì)了兩個(gè)窗體(Form1和Form2)。其中Form1為主界面,F(xiàn)orm2為波形顯示界面。在Form1中設(shè)計(jì)了一個(gè)MSComm控件、一個(gè)定時(shí)器控件(Timer1)和兩個(gè)按鈕控件(Command1和Command2)。其中Command1是開(kāi)始按鈕,即按下時(shí)開(kāi)始和PLC通訊,讀取其中的數(shù)據(jù)。Command2是顯示按鈕,即按下時(shí)調(diào)用窗體Form2,顯示每個(gè)運(yùn)行量的波形曲線。在Form2中設(shè)計(jì)了一個(gè)圖片框控件(Picture1),用來(lái)顯示圖形。
4.2 通訊和數(shù)據(jù)處理程序設(shè)計(jì)
設(shè)置Timer1 的Interval屬性等于500,MSComm的InputMode屬性為二進(jìn)制方式,RThreshold屬性等于5010。定時(shí)器每隔500毫秒發(fā)送一次傳送命令,當(dāng)發(fā)送到第26次時(shí),關(guān)閉定時(shí)器,這時(shí)接收緩沖區(qū)將收到5010個(gè)字節(jié)的數(shù)據(jù)并觸發(fā)MSComm的OnComm事件。在OnComm事件子程序中,將接收緩沖區(qū)中的數(shù)據(jù)依次分配到全局?jǐn)?shù)組U_data、If_data、P_data、Q_data和Ug_data 中,再根據(jù)各運(yùn)行量的額定值計(jì)算出百分比值。各個(gè)數(shù)組的前350字節(jié)需要根據(jù)指針I(yè)ndex進(jìn)行調(diào)整,具體方法是將數(shù)組下標(biāo)范圍Index~349的數(shù)據(jù)移到前面,下標(biāo)范圍1~I(xiàn)ndex-1的數(shù)據(jù)移到后面。
4.3 顯示程序設(shè)計(jì)
在窗體Form2的裝載事件Form_Load中編寫(xiě)圖形顯示程序。首先在圖片框控件Picture1中設(shè)置自定義坐標(biāo)系。設(shè)置ScaleMode屬性值等于3,即以象素為度量單位。然后在該坐標(biāo)系下畫(huà)出坐標(biāo)軸。X軸以秒為單位,曲線上兩點(diǎn)間的時(shí)間間隔是40毫秒,換算成象素等于1.47。Y軸以百分比為單位,每個(gè)單位刻度換算成象素等于2.1。最后根據(jù)數(shù)組U_data、If_data、P_data、Q_data和Ug_data分別畫(huà)出相應(yīng)運(yùn)行量的波形圖。以機(jī)端電壓波形為例,給出編寫(xiě)的程序如下:
Picture1.DrawWidth = 1 ‘線寬為1
Picture1.CurrentX = 0 ‘指定當(dāng)前坐標(biāo)的位置
Picture1.CurrentY = U_data(0) * 2.1
For i= 1 To 499 ‘畫(huà)出曲線
Picture1.Line -(1.47 * i, U_data(i) * 2.1), vbBlue
Next i
5. 系統(tǒng)的運(yùn)行與實(shí)驗(yàn)結(jié)果
在系統(tǒng)運(yùn)行前,要對(duì)PLC的通訊參數(shù)進(jìn)行設(shè)置,包括波特率、校驗(yàn)方式、數(shù)據(jù)位位數(shù)和停止位位數(shù)等,此設(shè)置要和上位機(jī)一致。在S7-226中使用自由口模式和上位機(jī)進(jìn)行串口通信時(shí),可以通過(guò)特殊寄存器SMB30(端口0)或SMB130(端口1)來(lái)設(shè)定。下面以發(fā)電機(jī)空載停機(jī)實(shí)驗(yàn)為例說(shuō)明系統(tǒng)的運(yùn)行過(guò)程。
當(dāng)發(fā)電機(jī)在正??蛰d下停機(jī)時(shí),PLC檢測(cè)到停機(jī)信號(hào),將故障標(biāo)志置位,然后記錄下停機(jī)后13秒的數(shù)據(jù)。運(yùn)行上位機(jī)程序,在主界面上按下“傳送”按鈕后,上位機(jī)開(kāi)始讀取PLC中數(shù)據(jù)。等到程序提示“數(shù)據(jù)傳送完畢”后,按下“顯示”按鈕,將彈出“波形顯示”窗口如圖3所示。從圖中可以看出,該曲線較好的反映了發(fā)電機(jī)停機(jī)前后機(jī)端電壓、勵(lì)磁電流的變化。
圖3 波形顯示窗口
6. 結(jié)束語(yǔ)
此系統(tǒng)已經(jīng)成功應(yīng)用于中、小型同步發(fā)電機(jī)勵(lì)磁系統(tǒng)中,通過(guò)發(fā)電機(jī)的動(dòng)態(tài)模擬實(shí)驗(yàn)和實(shí)際中的應(yīng)用來(lái)看,該系統(tǒng)性能可靠、操作方便、界面友好,能夠較好地滿足電力系統(tǒng)對(duì)于故障記錄、故障分析的需要。
一般情況下,采用微機(jī)控制或以微處理器為內(nèi)核的工業(yè)嵌入式發(fā)電機(jī)勵(lì)磁調(diào)節(jié)器較容易實(shí)現(xiàn)發(fā)電機(jī)運(yùn)行參量的故障錄波,采用PLC作為發(fā)電機(jī)勵(lì)磁調(diào)節(jié)器的硬件平臺(tái),具有應(yīng)用成本低、運(yùn)行可靠性高但程序設(shè)計(jì)難度大的特點(diǎn),其內(nèi)部成功地嵌入發(fā)電機(jī)重要運(yùn)行參量的故障錄波具有較大的實(shí)用價(jià)值,尤其適用于目前大量開(kāi)發(fā)的中小型水力發(fā)電站的水輪發(fā)電機(jī)組,對(duì)于保證發(fā)電機(jī)組的安全、穩(wěn)定、可靠運(yùn)行具有重要的意義。
參考文獻(xiàn):
[1] 西門(mén)子自動(dòng)化與驅(qū)動(dòng)集團(tuán) 《S7-200中文系統(tǒng)手冊(cè)》2002
[2] 西門(mén)子自動(dòng)化與驅(qū)動(dòng)集團(tuán) 《深入淺出西門(mén)子 S7-200 PLC》北京:北京航空航天大學(xué)出版社 2003.12
[3] 錢(qián)雪忠主編《新編Visual Basic程序設(shè)計(jì)實(shí)用教程》北京:機(jī)械工業(yè)出版社 2004.8
[4] 范逸之,陳立元《Visual Basic與RS-232串行通信控制》 北京:中國(guó)青年出版社 2002.1