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