1、引言
由于變頻器具有優(yōu)良的控制特性以及其高效節(jié)能的特點,使得變頻器近幾年在各個領(lǐng)域被廣泛的采用。在某些場合,需要用一臺工控機靈活地控制多臺變頻器,以達到控制交流電機的目的。在油田輸油控制系統(tǒng)中,多臺變頻器的控制問題成為關(guān)鍵,按照以往的控制方法,需要使用PLC或者控制電路板來控制變頻器。然而使用這種方法造價高、系統(tǒng)復(fù)雜、布線量大、故障率高,因此亟需一種結(jié)構(gòu)簡單、造價低廉、可靠性高的系統(tǒng)來實現(xiàn)多臺變頻器的控制。
針對這一需要,一些公司(如日本三菱、德國西門子、日本東芝等)推出了帶有RS-485通信接口的變頻器,使用戶能方便靈活地選擇變頻器的強大功能,設(shè)計各自的工業(yè)控制系統(tǒng)。因此,我們可以充分利用廠商提供的工業(yè)總線接口,使控制系統(tǒng)布線簡潔,穩(wěn)定可靠。
目前,我們在利用工業(yè)總線接口開發(fā)用戶程序時,大部分都是基于DOS環(huán)境下的,隨著Windows操作系統(tǒng)的普及使得DOS單任務(wù)系統(tǒng)固有的缺陷顯得日益突出,人們越來越希望能在Windows的環(huán)境下進行工業(yè)控制。
在Windows 9X下開發(fā)工控軟件,不僅可以實現(xiàn)多任務(wù)操作,充分利用硬件資源,而且可以利用Windows 9X下豐富的開發(fā)工具,方便地生成各種菜單及友好的圖形界面,軟件產(chǎn)品質(zhì)量高且開發(fā)周期短。但在Windows 9X環(huán)境下,系統(tǒng)完全接管了各種硬件資源,不允許用戶直接對系統(tǒng)硬件進行控制。如何在Windows 9X/NT環(huán)境下開發(fā)微機的底層資源,已成為當今工控業(yè)的一個值得探討的課題。
本文以三菱FR-A500變頻器的串行通信為例,利用Visual Basic 6.0的ActiveX控件—Microsoft Communication控件,通過對變頻器串行通信協(xié)議的分析,解決了Windows 9X環(huán)境下與多個變頻器的串行通信, 成功地實現(xiàn)了用單臺工控PC機對多臺交流異步電機的靈活控制,從而在Windows9X環(huán)境下如何實現(xiàn)串行通信的問題上作了有益的嘗試。
2 、油田輸油控制系統(tǒng)的簡介
由于多臺變頻器的控制技術(shù)是油田輸油控制系統(tǒng)中的關(guān)鍵,所以有必要簡單介紹一下本控制系統(tǒng)的概況。
油田輸油控制系統(tǒng)主要有以下幾部分構(gòu)成,圖1所示:
1. 中央控制器,主要一臺工控計算機及其通信模塊構(gòu)成,它主要負責(zé)發(fā)送控制指令及控制參數(shù),并根據(jù)現(xiàn)場返回的工況數(shù)據(jù)調(diào)整控制參數(shù);
2. 監(jiān)控信號和管道反饋信號由RS—485總線連接到中央控制器;
3. 泵站1~n主要油泵、變頻器、通信適配器、管道傳感器等構(gòu)成;
控制系統(tǒng)的通信原理
根據(jù)油田輸油控制系統(tǒng)的要求,我們給出了通信原理框圖(圖2),這里只重點突出工控PC機與變頻器RS—485的接口部分。RS—485的驅(qū)動器可帶32個接收器,在波特率為100Kbit/s時,通信距離可達到1200m; 通信距離為15m時,波特率可達10Mbit/s。在工業(yè)現(xiàn)場,RS-485是應(yīng)用較多的一種通信方式。
圖2 中工控PC機通過RS-232C—RS-485轉(zhuǎn)換器與多個變頻器相連接,最多可達到32臺。每個變頻器被賦予各自的地址碼用以識別身份,這樣,上位機便能通過RS-485通信線,對掛在上面的所有變頻器進行控制操作。
變頻器的串行口通信協(xié)議分析
通過對油田輸油控制系統(tǒng)的結(jié)構(gòu)設(shè)計,以及對三菱FR-A500變頻器原理及通信方式的研究,我們發(fā)現(xiàn)三菱FR-A500變頻器的通信方式為異步半雙工RS—485協(xié)議;波特率19200bit/s,9600bit/s,4800bit/s 可選;ASCII 7或8位數(shù)據(jù)位可選;1位奇偶校驗可選;1或2位停止位可選。其通信協(xié)議的數(shù)據(jù)格式有十種,分別為: A,A’,B,C,D,E,E’,F(xiàn),G,H;
下面以格式A為例簡要說明一下變頻器通信協(xié)議:
格式A的功能是變頻器運行頻率、運行參數(shù)的寫入和復(fù)位變頻器,其結(jié)構(gòu)如下:
*1 ENQ——表示控制代碼,它有以下幾種:(括號內(nèi)為ASCII碼) STX (H02) 正文數(shù)據(jù)開始;ETX (H03) 正文數(shù)據(jù)結(jié)束;ENQ (H05) 通信請求; ACK (H06) 應(yīng)答無數(shù)據(jù)錯誤;LF (H0A) 換行;CR (H0D) 回車; NAK (H15) 應(yīng)答發(fā)現(xiàn)數(shù)據(jù)錯誤;
*2變頻器站號——可用十六進制數(shù)在H00和H1F(站號0 至31 )間設(shè)定;
*3指令代碼——由計算機發(fā)給變頻器,指明程序要求(如:監(jiān)視、運行等);
*4等待時間——規(guī)定變頻器收到從計算機來的數(shù)據(jù)和傳輸應(yīng)答數(shù)據(jù)之間的等待時間。根據(jù)計算機的響應(yīng)時間在0和150ms之間設(shè)定,最小設(shè)定單位10ms。
*5數(shù)據(jù)——表示計算機與變頻器之間傳輸?shù)臄?shù)據(jù),如:頻率、參數(shù)等;
*6總合校驗——由被校驗的ASCII碼數(shù)據(jù)的總和(二進制)的最低一個字節(jié)表示的2個ASCII數(shù)字(十六進制)。
*7表示CR(回車)、LF(換行)代碼。
與格式A相對應(yīng)的數(shù)據(jù)格式有C和D;若用戶程序通信請求以格式A發(fā)送到變頻器的數(shù)據(jù)被變頻器接受,則變頻器以格式C形式的數(shù)據(jù)返回給計算機;若變頻器發(fā)現(xiàn)計算機發(fā)送的數(shù)據(jù)有誤,則變頻器以格式D形式的數(shù)據(jù)返回給計算機。
數(shù)據(jù)格式C和D分別如下:
其他的數(shù)據(jù)格式的功能如下:格式A’ 用于運行指令的寫入,其對應(yīng)的應(yīng)答數(shù)據(jù)格式為格式C和格式D;格式 B用于監(jiān)視變頻器的運行參數(shù)(頻率、電壓、電流、轉(zhuǎn)速)及讀出變頻器的系統(tǒng)參數(shù),其對應(yīng)的應(yīng)答數(shù)據(jù)格式為E、E’、F、G、H。
一般情況下,變頻器通過操作面板(PU)來設(shè)置變頻器參數(shù),一旦參數(shù)設(shè)定好了,就不能改變,這樣很難通過現(xiàn)場信號進行實時的控制。通過以上對變頻器通信協(xié)議的分析,考慮用軟件來實現(xiàn)工控機與變頻器的串行通信,利用軟件可以靈活的實現(xiàn)系統(tǒng)所需的各種功能而不必改動現(xiàn)場的硬件電路,而且RS-485通信線最多能同時控制32臺變頻器,同時,各變頻器的運行狀態(tài)也能實時地回送給上位機。
5 控制系統(tǒng)通信控制軟件設(shè)計
5.1串口通信程序設(shè)計方法
基于對系統(tǒng)結(jié)構(gòu)和變頻器串口通信協(xié)議的分析,必須對工控計算機的串行口進行編程。在DOS的操作系統(tǒng)下,計算機所有的硬件對編程人員是透明的,因此比較容易進行內(nèi)存管理和硬件中斷管理,所以程序的響應(yīng)速度快。但是,DOS是單任務(wù)操作系統(tǒng),對硬件資源浪費嚴重,并且在進行圖形界面編程時其難度和任務(wù)量都遠遠超過了對硬件部分的編程。因此我們采用Windows 9X操作系統(tǒng)和基于此平臺的開發(fā)軟件來編寫控制系統(tǒng)軟件。
在Windows 9X環(huán)境下,操作系統(tǒng)完全接管了各種硬件資源, 不允許用戶程序直接讀寫硬件端口和進行中斷管理。所以早期的程序員只能通過數(shù)目眾多的API函數(shù)來控制端口,使用起來很不方便。
本系統(tǒng)利用VB6.0下提供了一個ActiveX控件(Microsoft Communication控件, 簡稱MSComm 控件)來實現(xiàn)串行口的通信設(shè)計。通過在應(yīng)用程序中嵌入MSComm控件的方式,進行計算機串口的通信管理,下面簡要介紹一下MSComm控件的功能:
MSComm 6.0控件可以實現(xiàn)數(shù)據(jù)緩沖區(qū)的管理,Input (從緩沖區(qū)讀取接收數(shù)據(jù))的數(shù)據(jù)類型為Variant,從緩沖區(qū)讀取數(shù)據(jù)的格式為字符串格式(Text)或二進制格式(Binary)。
MSComm控件提供的具體功能如表1:
其中串口號(CommPort)設(shè)置為1、2 … n等表示COM1、COM2 … COMn。參數(shù)設(shè)置(Settings)的格式為“BBBB,P,D,S”,BBBB表示波特率,P表示奇偶校驗(N:無校驗,E:偶校驗,O:奇校驗),D表示字節(jié)有效位數(shù),S表示停止位數(shù)。串口狀態(tài)(PortOpen)為BOOL變量,TRUE表示打開串口,F(xiàn)ALSE表示關(guān)閉串口。InputMode使程序能方便地選擇從緩沖區(qū)讀取數(shù)據(jù)的格式,設(shè)置為0時,為字符串格式(Text),設(shè)置為1時,為二進制格式(Binary)。InputLen設(shè)置或返回的是用Input從緩沖區(qū)讀字符串時每次讀出的字符個數(shù),這個性質(zhì)對于讀出數(shù)據(jù)塊中定長數(shù)據(jù)串非常有用。
InBufferCount和OutBufferCount用于串口的查詢方式。對于較復(fù)雜的通信任務(wù),可通過Com9Xvent處理串口的事件,當相應(yīng)事件或串口錯誤事件發(fā)生時,系統(tǒng)會激活OnComm事件,在OnComm中添加用戶的處理代碼,則可實現(xiàn)類似DOS中斷的串口處理程序。
5.2變頻器串口通信軟件結(jié)構(gòu)
為了用該控件控制一個串口進行通信操作,還必須在應(yīng)用程序中插入該控件。為此,將MSComm控件插入到程序的某個對話框,并為這個控件對象命名為MSComm1,則程序中對串口的各種操作都可通過對象MSComm1來實現(xiàn)。
下面是串口控制子程序的流程圖:
6 結(jié)束語
本文利用Win9X下的ActiveX控件和三菱變頻器RS-485的串行通信功能,成功實現(xiàn)了在Win9X環(huán)境下單臺IPC機對多臺三菱變頻器的控制,并能實時檢測各變頻器的運行狀態(tài)。整個控制系統(tǒng)靈活方便,具有很大的實用性。本文在Win9X下多臺變頻器控制的設(shè)計方案及軟件實現(xiàn)為此類問題的解決作了很好的嘗試與探索。與DOS方式的控制相比,具有開發(fā)周期短、充分利用硬件資源、軟件界面美觀等優(yōu)點。但由于Win9X是多任務(wù)分時操作系統(tǒng),所以該系統(tǒng)不能做到強實時控制,這是今后有待改進的地方。