產(chǎn)品類(lèi)別
新聞分類(lèi)導航
聯(lián)系我們
廠(chǎng)家傳真:022-83719059
企業(yè)郵箱:hjzhu0518@21cn.com 工廠(chǎng)所在地址: 天津市南開(kāi)區華苑產(chǎn)業(yè)區鑫茂科技園D2座一層A單元
新聞詳情
超聲波明渠流量計監控系統通信軟件的開(kāi)發(fā)
城市污水處理地域跨度大,測控點(diǎn)分散,各測控點(diǎn)往往處于無(wú)人值守狀態(tài)。區域內、區域與區域之間,需要傳輸、匯總和分析的數據量很大。因此,區域內和跨區域的網(wǎng)絡(luò )化通信成為現代城市污水處理廠(chǎng)監控系統的重要標志。
1 LMC型超聲波明渠流量計通信網(wǎng)絡(luò )
LMC型超聲波明渠流量計設有RS-232C或RS-422串行通信端口,通過(guò)一根最長(cháng)達1200m的通信電纜,可直接與計算機的連接。在計算機中安裝LMC監控軟件,即可隨時(shí)在計算機中監控瞬時(shí)流量、總流量。換算的日流量、月流量和年流量等參數,以及曲線(xiàn)顯示、報表打印等,系統構成如圖1所示。若在15m之內通信則可直接用一根通信電纜將流量計接到計算機。流量計的信息也可以通過(guò)電話(huà)線(xiàn)網(wǎng)絡(luò )傳輸,但系統需配置專(zhuān)用通信器和MODEM卡。
2 監控系統通信軟件設計
我們設計了一個(gè)超聲波明渠流量計城市網(wǎng)絡(luò )監控系統,實(shí)現了上位微機與8051單片機的串行通信。監控系統通信軟件主要包括專(zhuān)線(xiàn)方式(通過(guò)RS232C連接)及網(wǎng)絡(luò )自動(dòng)撥號方式兩大功能。限于篇幅,文中只給出部分程序流程圖和程序清單。
實(shí)現串行通信一般分為3個(gè)步驟:
(1)初始化通信端口:具體工作為向操作系統申請通信端口資源,設置通信波特率和配置通信格式(如起始位個(gè)數、數據位個(gè)數、停止位個(gè)數、奇偶校驗方式等)。
(2)串行通信的讀寫(xiě)操作:用計算機發(fā)送和接受數據。
(3)關(guān)閉通信端口:在完成所有的串行通情操作后,將串行通信端口資源還給操作系統。
2.1 MSCOMM 控件的主要屬性
MSCOMM 控件是由Microsoft開(kāi)發(fā)的,用于計算機間通信的Active X控件。利用它能方便地實(shí)現串行通信。用MSCOMM控件實(shí)現串行通信主要使用以下的一些屬性:
(1 )用于初始化串行通信端口的屬性CommPort,設置并返回要用于串行通信的端口號;
PortOPen,初始化時(shí)置為T(mén)rue以打開(kāi)通信端口;
Setting,以字符串形式設置并返回波特率、奇偶檢驗位、數據位、停止位;
InputMode,置0以本格式接收數據,置1以二進(jìn)制格式接收數據。
(2)用于串行通信端口讀寫(xiě)操作的屬性
Input,從接收緩沖區返回并刪除數據;
Output,向發(fā)送緩沖區寫(xiě)數據。
(3)用于關(guān)閉通信端口的屬性
PortOpen,關(guān)閉端口時(shí)置為False以關(guān)閉通信端口。
2.2 串行通信協(xié)議說(shuō)明
上位機與下位機均采用查詢(xún)發(fā)送、中斷接收的通信方式。
幀格式為7位數據位,無(wú)檢驗位,1位停止位,波特率為W,編碼為ASCll碼。每次上位機向單片機發(fā)數據時(shí),上位機先向單片機發(fā)握手信號“02”,單片機收到握手信號則發(fā)應答信號“03”至上位機上位機收到應答信號后即發(fā)數據。同樣,當單片機要向上位機發(fā)數據時(shí),也先向上位機發(fā)握手信號“ 04”,上位機收到握手信號后發(fā)應答信號“05”,單片機收到應答信號后則發(fā)數據。
2.3 上位機(PC)通信程序設計
利用VC++6.0對設計上位機通信程序。主要步驟如下;
(1)先進(jìn)人Visual C++6.0集成開(kāi)發(fā)環(huán)境;
(2)創(chuàng )建一個(gè)單文檔控制界面;
(3)添加控制菜單、控制對話(huà)框、控制按鈕與編輯框;
(4)在控制對話(huà)框中添加ActiveX控件中的MSCOMM控件;
(5)設置MSCOMM控件屬性:
Setting9600,n,7,1;InputLen:2;Rthreshold:2;其它按缺省值。
通信程序主要部分如下:
Void CROTOTEDlg::OnButtom1() //通信初始化消息處理函數
{
DataORShaking=1; //握手信號或數據標志
Commsuce=0;//握手成功標志
receiveNo=3;//數據區標志
if(!m_RototeCom_dlg.GetPortOpen())
!m_RototeCom_dlg.GetPortOpen(TRUE);//打開(kāi)串行口
m_RototeCom_dlg.SetOutput(ColeVariant(“02”));//發(fā)握手信號
m_RototeCom_dlg.SetInputMode(0);//讀取串口緩沖區全部數據
MessageBox(“START”);
for(int i=0;i<=10000;i++);//延時(shí)
MessageBox (“通信失敗,請檢查通信硬件”);//握手失敗顯示
}
Void CROTOTEDlg::OnOnCommMscomml(); //Mscomm控件消息處理函數
{
VARIANT varii;
varii= m_RototeCom_dlg.GetPortOpen();//讀入數據賦給VARIANT變量
CString ll;
ll= varii,bstrVal;
UpdateData();//將文本值從控件傳給相應的變量
if(DataORShaking==0)//如果握手完畢,則開(kāi)始接收數據
{
if(receiveNo==4) DataORShaking=1;
if(receiveNo==3);
{ m_edit3=ll;//接收實(shí)際年流量信號
receiveNo==4;}
else
m_edit4=ll;
}
if(ll==”03”)&&( DataORShaking==1)//接收單片機應答信號
{ m_RototeCom_dlg.SetOutput(ColeVariant(m_edit1));//發(fā)給年流量
n_RototeCom_dlg.SetOutput(ColeVariant(m_edit2));//發(fā)給年流量
commsuce=1;//握手成功
}
if(ll==”04”)&& ( DataORShaking==1)// 接收單片機握手信號
{n_RototeCom_dlg.SetOutput(ColeVariant(“05”));//發(fā)應答信號
DataORShaking=0;// 握手成功
}UpdateData(FALSE);//將控件變量?jì)热菟突仄鋵丶?/p>
}
2.4 下位機(8051)通信程序設計
發(fā)應答信號及數據時(shí),8051單片機工作于查詢(xún)方式;當接收握手信號及數據時(shí),8051工作于中斷方式,中斷入口地址為0023H。當5051接收到來(lái)自上位機的握手信號“02”并核查確認后,則給上位機發(fā)應答信號,同時(shí)準備接收數據。中斷服務(wù)程序先區分是握手信號還是數據,如是握手信號就發(fā)應答信號,如是數據就轉換數據格式再送人內存。當8051需要發(fā)數據時(shí),先向上位機發(fā)握手信號“04”,等收到上位機的應答信號“05”,即可發(fā)數據。程序框圖如圖2所示,中斷服務(wù)程序如圖3所示。
3 經(jīng)濟效往分析
就上海而言,需進(jìn)行污水排放計量的工礦企業(yè)達4000多家。根據上海市環(huán)保局要求,這些企業(yè)都將按要求安裝檢測污水排放的儀器。目前本市尚無(wú)同類(lèi)產(chǎn)品。如選用國外產(chǎn)品,以美國的伊思柯(ISCO)公司為例,同類(lèi)型的超聲波明渠流量計的價(jià)格為71300元。本成果轉化為產(chǎn)品后,基本價(jià)格為17000左右,低于國外產(chǎn)品約5.4萬(wàn)元左右。仍以全市4000家企業(yè)計,可以節約資金2億元。
參考文獻:
[1] Michael J.Young.Mastering Microsoft Visual C++6[M].SYBEX Inc.1998.
[2] 王華,等. Visual C++6.0程實(shí)例與技巧[M].機械工業(yè)出版社,1999.
[3] 張敏,等 LMC型超一波明渠流量計研制[J].自動(dòng)化與儀器儀表,2000,(1).