手機(jī)訪問更快捷
更多流量 更易傳播
隨時掌握行業(yè)動態(tài)
網(wǎng)絡(luò)課堂 行業(yè)直播
一、前言
C++Builder是當(dāng)今世界上相當(dāng)優(yōu)秀的WINDOWS開發(fā)工具之一,其良好的圖形用戶接口(GUI)、面向?qū)ο蟮某绦蛟O(shè)汁和結(jié)構(gòu)化的事件與驅(qū)動編程模式,使得編程效率提高,現(xiàn)場應(yīng)用功能大大增強(qiáng)。加拿大C0MPU-WATT稱重系統(tǒng)公司的工藝流量計―智能型功率表是一種可編程的智能型電工儀表,具有稱重計量設(shè)備的全部功能,同時具有RS232和RS485通訊接口, 可實現(xiàn)遠(yuǎn)程聯(lián)網(wǎng)操作。本文介紹了在Windows98/NT操作系統(tǒng)下用C++Builder開發(fā)串行通信程序?qū)α髁坑嬤M(jìn)行監(jiān)控的編程方法。
二、C0MPU-WATT工藝流量計通訊協(xié)議簡介
1、該流量計的通訊設(shè)置如下:數(shù)據(jù)長度:8位;停止位:1位;奇偶校驗:無;波特率:1200或9600
2、通訊協(xié)議如下:
1)、命令幀格式:
第1個字符 | 第2個字符 | 第3個字符 | 第4、5個字符 | 第6個字符 |
$ | 設(shè)備地址 | 命令字符 | 校驗碼 | 回車符 |
設(shè)備地址為地址為流量計的編號,為字符1-9、A-Z中的一個。
命令字符的代號和含義如下:
S― 停止重量累計 K― 清除累計的重量數(shù)據(jù)C― 繼續(xù)重量累計 m― 指定設(shè)備工作模式,可取值1―6
z― 零校準(zhǔn) w― 傳送重量數(shù)據(jù)和滿載百分率R― 傳送瞬時流量和平均流量
校驗碼的計算方法為:第1、2、3字符的ASCII碼相加的和轉(zhuǎn)換為l6進(jìn)制。
2)、應(yīng)答幀格式:
a、如果命令幀的設(shè)備地址和命令字符都正確,則應(yīng)答幀的第1個字符是*,第2、3個字符與命令幀的第2、3個字符相同,第4、5、6個字符為校驗和與回車符。
于W命令 | |||||||||
第1個 字符 | 第2個 字符 | 第3個 字符 | 前4個 字符 | 第5個 字符 | 后7個 字符 | 第13個 字符 | 后4個 字符 | 第18、19個字符 | 第20個 字符 |
# | 設(shè)備地址 | 設(shè)備狀態(tài) | 設(shè)備模式 | ? | 流量數(shù)據(jù) | ? | 滿載百分率 | 校驗和 | 回車符 |
對于R命令 | |||||||||
第1個 字符 | 第2個 字符 | 第3個 字符 | 第4個 字符 | 第5個 字符 | 后6個 字符 | 第12個 字符 | 后6個 字符 | 第19、20個字符 | 第21個 字符 |
# | 設(shè)備地址 | 設(shè)備狀態(tài) | 設(shè)備模式 | ? | 瞬時流量 | ? | 平均流量 | 校驗和 | 回車符 |
b、如果命令幀的設(shè)備地址或命令字符中的任何一個不正確,則應(yīng)答幀的第1個字符是?,第2、3個字符與命令幀的第2、3個字符相同,第4、5、6個字符為校驗和與回車符。
c、如果命令幀的校驗碼不正確,則應(yīng)答幀的第1個字符是?,第2、3個字符是CE,第4、5、6個字符為校驗和與回車符。
d、當(dāng)命令字符是W或R時,則流量計會直接將請求的數(shù)據(jù)返回,而不會返回應(yīng)答幀。返回的數(shù)據(jù)格式如:
三、編程實現(xiàn)
1、首先利用C++Builder的可視化編程工具建立如下運行界面。
2、然后在C++/Builder中建立串口類,該類定義了操作串口的方法,綜述如下:
1)、打開串口: BOOLOpenCom(intnPort=1);
2)、關(guān)閉串口:BOOLClose(?void);
3)、取得串口通信配置:void GetComState(DCB*dcb);
4)、設(shè)置串口通信配置:void SetComState(DCB*dcb);
5)、讀串口:int ReadData(void*);
6)、寫串口:int SendData(const char*int);
7)、獲取緩沖區(qū)字符個數(shù):int GetCharNumber (void);
8)、判斷串口是否打開:BOOL IsOpened(void);
3、串口的打開、關(guān)閉和配置
利用串口類的打開串口、關(guān)閉串口和配置串口通信配置方法,對給定的串口進(jìn)行相關(guān)的操作。
4、命令的發(fā)送和數(shù)據(jù)的處理
為了連續(xù)進(jìn)行數(shù)據(jù)采集,在程序中設(shè)置了一個定時器,用于周期性的發(fā)送命令幀給流量計,同時讀取接收到的數(shù)據(jù)。下面以讀取重量數(shù)據(jù)為例,介紹發(fā)送命令和處理數(shù)據(jù)的方法。
第l步,建立發(fā)送的命令字符串“SlWACr”。
第2步,利用串口類的寫串口方法將上面建立的字符串寫入串口。
第3步,利用串口類的讀串口方法將從流量計返回的重量數(shù)據(jù)讀入監(jiān)控程序。
第4步,利用C++Builder的字符串函數(shù)處理接收的重量數(shù)據(jù),抽取其中的第6位到12位字符,然后將其顯示在重量數(shù)據(jù)文本框中。
對于瞬時流量的命令發(fā)送和數(shù)據(jù)處理,可以用與上面相同的方法進(jìn)行處理。
5、為了便于同上位機(jī)組態(tài)軟件交換數(shù)據(jù),本程序采用了DDE(動態(tài)數(shù)據(jù)交換)方式進(jìn)行設(shè)計。
四、結(jié)束語
利用以上方法,筆者成功地將其應(yīng)用于糧庫倉儲自動化監(jiān)控系統(tǒng)。同時筆者也成功的實現(xiàn)了對OMRON PLC的監(jiān)控。
參考文獻(xiàn)
1、《C++Builder3 編程指南》徐新華編著人民郵電出版社
2、MSDN技術(shù)文檔
3、加拿大COMPU-WATT智能型功率表技術(shù)文檔
相關(guān)產(chǎn)品
免責(zé)聲明
客服熱線: 15267989561
加盟熱線: 15267989561
媒體合作: 0571-87759945
投訴熱線: 0571-87759942
下載儀表站APP
Ybzhan手機(jī)版
Ybzhan公眾號
Ybzhan小程序