基于VB的計算機與軟起動(dòng)器的通訊
4 通訊程序及監控界面的設計
vb是一種面向對象的編程語(yǔ)言,應用方便,功能強大,利用microsoft公司提供的activex控件mscomm.ocx就可以方便實(shí)現計算機與軟起動(dòng)器的串口通訊。
主機發(fā)送兩種形式的命令,一是周期性命令,一是非周期性命令。周期性命令即主機以輪詢(xún)的方式周期性讀取從機的狀態(tài)字,判斷從機運行狀況及通訊情況;非周期性命令即主機發(fā)出的控制命令,如起動(dòng)、停止、編輯參數報警查詢(xún)等。
以下是主要通訊程序:
首先要初始化串行通訊端口
private sub initcomport() ;初始化通訊端口子程序
comm.commport=1 ;使用串口com1
comm.setting=9600,m,8,1;波特率、奇偶校驗位、8位數據位、1位停止位
comm.inbuffersize=1024 ;緩沖區大小
comm.inputlen=0 ;清空接收緩沖區
comm.rtsenable=false ;無(wú)須硬件握手
comm.portopen=true ;打開(kāi)通訊口
end sub
值得注意的是,通訊協(xié)議中規定以奇偶校驗位作為地址選擇標志,下面一發(fā)送讀狀態(tài)指令為例。
讀軟起動(dòng)器狀態(tài)字
private sub readstatusword() ;讀狀態(tài)字子程序
mscomm1.output=command_s ;發(fā)送第一個(gè)字節(地址及快速指令讀狀態(tài))
mscomm1.settings=“9600,s,8,1” ;將奇偶校驗位設 ;為0,即接收響應狀態(tài)
mscomm1.output=outdatabyte_l;發(fā)送低8位
delay(10) ;延時(shí)10ms
call recieverespond(y) ;接收從機握手信 ;號(y為接收狀態(tài))
if y《》0 then call dealerror ;如果握手信號不 ;正確,調用故障處理子程序
mscomm1.output=outdatabyte_h;如果握手信號正 ;確,發(fā)送高8位
mscomm1.output= command_s+ outdatabyte_l+ outdatabyte_h+fh ;發(fā)送校驗碼
call recieverespond(y) ;接收從機握手信號
if y《》0 then call dealerror ;如果握手信號不正 ;確,調用故障處理子程序
callrecievedata ;如果正確,調用接收狀態(tài)字子程序
call verifys1 ;接收并驗證校驗和
end sub
收到的狀態(tài)字為二進(jìn)制雙字節(dl,dh),每一位含義如表5和表6所示。
上位機收到狀態(tài)字后,判斷該機的狀態(tài),進(jìn)而根據狀態(tài)字和工況要求,對該機進(jìn)行適當的遠程控制。
5 結束語(yǔ)
strc軟起動(dòng)器可靠性高,中文液晶顯示,容易操作,易于實(shí)現與計算機的聯(lián)網(wǎng),本文的程序是用vb6.0編寫(xiě)的簡(jiǎn)單的單機通訊程序,已調試成功,用于軟起動(dòng)器的上位機控制,在實(shí)踐中應用正常。在此基礎上,可以用vb、vc++等高級語(yǔ)言編程,將監控和管理報表與其溶為一體,做出更靈活,功能更強大的控制軟件,進(jìn)而實(shí)現對電機靈活而可靠的控制。
評論