Win9X平臺(tái)下通過RS485通信實(shí)現(xiàn)多臺(tái)三菱變頻器控制
數(shù)據(jù)格式C和D分別如下:
*1 ACK | *2變頻器站 | *7 |
*1 ACK | *2變頻器站 | *5錯(cuò)誤代碼 | *7 |
其他的數(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í)時(shí)的控制。通過以上對變頻器通信協(xié)議的分析,考慮用軟件來實(shí)現(xiàn)工控機(jī)與變頻器的串行通信,利用軟件可以靈活的實(shí)現(xiàn)系統(tǒng)所需的各種功能而不必改動(dòng)現(xiàn)場的硬件電路,而且RS-485通信線最多能同時(shí)控制32臺(tái)變頻器,同時(shí),各變頻器的運(yùn)行狀態(tài)也能實(shí)時(shí)地回送給上位機(jī)。
5 控制系統(tǒng)通信控制軟件設(shè)計(jì)
5.1串口通信程序設(shè)計(jì)方法
基于對系統(tǒng)結(jié)構(gòu)和變頻器串口通信協(xié)議的分析,必須對工控計(jì)算機(jī)的串行口進(jìn)行編程。在DOS的操作系統(tǒng)下,計(jì)算機(jī)所有的硬件對編程人員是透明的,因此比較容易進(jìn)行內(nèi)存管理和硬件中斷管理,所以程序的響應(yīng)速度快。但是,DOS是單任務(wù)操作系統(tǒng),對硬件資源浪費(fèi)嚴(yán)重,并且在進(jìn)行圖形界面編程時(shí)其難度和任務(wù)量都遠(yuǎn)遠(yuǎn)超過了對硬件部分的編程。因此我們采用Windows 9X操作系統(tǒng)和基于此平臺(tái)的開發(fā)軟件來編寫控制系統(tǒng)軟件。
在Windows 9X環(huán)境下,操作系統(tǒng)完全接管了各種硬件資源, 不允許用戶程序直接讀寫硬件端口和進(jìn)行中斷管理。所以早期的程序員只能通過數(shù)目眾多的API函數(shù)來控制端口,使用起來很不方便。
本系統(tǒng)利用VB6.0下提供了一個(gè)ActiveX控件(Microsoft Communication控件, 簡稱MSComm 控件)來實(shí)現(xiàn)串行口的通信設(shè)計(jì)。通過在應(yīng)用程序中嵌入MSComm控件的方式,進(jìn)行計(jì)算機(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è)置串口號 | Integer |
Settings | 設(shè)置串口通信參數(shù) | String |
PortOpen | 設(shè)置或返回通信口的狀態(tài) | BOOL |
InputMode | 設(shè)置從緩沖區(qū)讀取數(shù)據(jù)的格式 | Integer |
Input | 從接收緩沖區(qū)讀取數(shù)據(jù) | Variant |
Output | 向發(fā)送緩沖區(qū)寫入數(shù)據(jù) | Variant |
InBufferSize | 接收緩沖區(qū)的大小 | Integer |
InpbfferCount | 接收緩沖區(qū)的字節(jié)數(shù) | Integer |
OutbufferSize | 接收緩沖區(qū)的大小 | Integer |
InpbfferCount | 接收緩沖區(qū)的字節(jié)數(shù) | Integer |
inputLen | 設(shè)置或返回input每次讀出的字節(jié)數(shù) | Integer |
Commevent | 串口事件 | Integer |
其中串口號(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時(shí),為字符串格式(Text),設(shè)置為1時(shí),為二進(jìn)制格式(Binary)。InputLen設(shè)置或返回的是用Input從緩沖區(qū)讀字符串時(shí)每次讀出的字符個(gè)數(shù),這個(gè)性質(zhì)對于讀出數(shù)據(jù)塊中定長數(shù)據(jù)串非常有用。
InBufferCount和OutBufferCount用于串口的查詢方式。對于較復(fù)雜的通信任務(wù),可通過Com9Xvent處理串口的事件,當(dāng)相應(yīng)事件或串口錯(cuò)誤事件發(fā)生時(shí),系統(tǒng)會(huì)激活OnComm事件,在OnComm中添加用戶的處理代碼,則可實(shí)現(xiàn)類似DOS中斷的串口處理程序。
5.2變頻器串口通信軟件結(jié)構(gòu)
為了用該控件控制一個(gè)串口進(jìn)行通信操作,還必須在應(yīng)用程序中插入該控件。為此,將MSComm控件插入到程序的某個(gè)對話框,并為這個(gè)控件對象命名為MSComm1,則程序中對串口的各種操作都可通過對象MSComm1來實(shí)現(xiàn)。
下面是串口控制子程序的流程圖:
6 結(jié)束語
本文利用Win9X下的ActiveX控件和三菱變頻器RS-485的串行通信功能,成功實(shí)現(xiàn)了在Win9X環(huán)境下單臺(tái)IPC機(jī)對多臺(tái)三菱變頻器的控制,并能實(shí)時(shí)檢測各變頻器的運(yùn)行狀態(tài)。整個(gè)控制系統(tǒng)靈活方便,具有很大的實(shí)用性。本文在Win9X下多臺(tái)變頻器控制的設(shè)計(jì)方案及軟件實(shí)現(xiàn)為此類問題的解決作了很好的嘗試與探索。與DOS方式的控制相比,具有開發(fā)周期短、充分利用硬件資源、軟件界面美觀等優(yōu)點(diǎn)。但由于Win9X是多任務(wù)分時(shí)操作系統(tǒng),所以該系統(tǒng)不能做到強(qiáng)實(shí)時(shí)控制,這是今后有待改進(jìn)的地方。
評論