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