技術(shù)文章
輸煤系統(tǒng)和智能儀表串行通訊中Mscomm控件的使用
閱讀:1172 發(fā)布時(shí)間:2010-12-20 這篇文章討論了在WinCC構(gòu)筑的上位監(jiān)控輸煤系統(tǒng)中,從另一個(gè)利用8051單片機(jī)構(gòu)成的現(xiàn)場(chǎng)智能儀表中采集數(shù)據(jù)的一種實(shí)現(xiàn)方法。首先,使用VisualBasic的通訊控件Mscomm,通過(guò)RS232串口定時(shí)將稱重控制智能儀表中的數(shù)據(jù)讀入裝有WinCC上位監(jiān)控軟件的上位機(jī),并存入某個(gè)二進(jìn)制文件;而后利用WinCC軟件內(nèi)嵌的C編譯器編程,將二進(jìn)制文件中相應(yīng)的數(shù)據(jù)一一賦值給WinCC中的internaltag(內(nèi)部標(biāo)簽);這樣,在上位監(jiān)控部分設(shè)計(jì)中,即可隨時(shí)讀取這些來(lái)自于現(xiàn)場(chǎng)智能儀表的實(shí)時(shí)數(shù)據(jù),zui終實(shí)現(xiàn)將智能儀表中的數(shù)據(jù)納入上位監(jiān)控輸煤系統(tǒng)中統(tǒng)一使用。 本文所涉及到的通訊任務(wù)來(lái)自于某熱電廠的輸煤自動(dòng)控制系統(tǒng)。該輸煤系統(tǒng)的下位自動(dòng)采集和監(jiān)控任務(wù)由SIEMENSS7300來(lái)實(shí)現(xiàn),上位監(jiān)控部分是用SI2EMENSWinCC開(kāi)發(fā)設(shè)計(jì)的。其中涉及到的一個(gè)通訊要求是:為實(shí)現(xiàn)生產(chǎn)過(guò)程的集中監(jiān)測(cè),需要利用一臺(tái)8051單片機(jī)實(shí)現(xiàn)的智能稱重儀表XK2105,將有關(guān)上煤量的數(shù)據(jù)(整型或浮點(diǎn)型)傳送給上位監(jiān)控系統(tǒng),進(jìn)行統(tǒng)一監(jiān)視。該智能稱重儀表提供的是一個(gè)RS232的串行接口,且它使用8051主從式多站通訊方式,即主機(jī)主動(dòng)查詢從站,從站根據(jù)不同指令分別響應(yīng)不同信息。
1,輸煤系統(tǒng)整體方案設(shè)計(jì)
自動(dòng)控制輸煤系統(tǒng)設(shè)計(jì)中,上位監(jiān)控部分主要是用于動(dòng)態(tài)流程畫(huà)面監(jiān)視、報(bào)警報(bào)表輸出、趨勢(shì)圖分析等。在這個(gè)輸煤控制系統(tǒng)中,利用WinCC對(duì)整個(gè)上位系統(tǒng)進(jìn)行組態(tài)設(shè)計(jì),且系統(tǒng)在正常工作時(shí),上位機(jī)中始終處于WinCC的運(yùn)行環(huán)境中。WinCC中帶有一個(gè)Globalscript(全局腳本編輯器),它為開(kāi)發(fā)人員提供一個(gè)功能強(qiáng)大的工具,用于生成用戶的C腳本,生成的腳本可使用于任何地方。這里,就依據(jù)Globalscript,編制一個(gè)從智能儀表采集數(shù)據(jù)的通訊程序。上位機(jī)工作時(shí),通過(guò)運(yùn)行這個(gè)程序即可實(shí)現(xiàn)上位監(jiān)控系統(tǒng)從智能儀表采集數(shù)據(jù)的通訊任務(wù)。整個(gè)程序主要分為二部分:調(diào)用從智能儀表中取數(shù)據(jù)的可執(zhí)行程序,將采集的數(shù)據(jù)寫(xiě)入二進(jìn)制文件;將數(shù)據(jù)從二進(jìn)制文件中一一取出,賦給WinCC中相應(yīng)的內(nèi)部變量標(biāo)簽。由于可執(zhí)行程序采集到的數(shù)據(jù)在WinCC內(nèi)需要應(yīng)用,數(shù)據(jù)不方便直接傳遞,因而二進(jìn)制文件是可執(zhí)行程序與WinCC之間數(shù)據(jù)傳輸?shù)囊环N較為有效的方式。
2,利用Mscomm控件編寫(xiě)可執(zhí)行程-Mscomm控件的使用
實(shí)現(xiàn)上位機(jī)與智能儀表的通訊一般串行通信的開(kāi)發(fā)主要有兩種方法:
(1)利用WindowsAPI使用程序接口函數(shù)
WindowsAPI主要提供了三個(gè)動(dòng)態(tài)連接庫(kù)KER2NEL.EXE、USER.EXE、GDI.EXE,供開(kāi)發(fā)人員調(diào)用,其中KERNEL.EXE主要包括一些底層操作,完成一些資源管理、任務(wù)、內(nèi)存等操作;USER.EXE包含了一些底層操作函數(shù),完成一些與Windows管理有關(guān)的函數(shù),如通訊、菜單、消息、光標(biāo)、插入符、計(jì)時(shí)器及大多數(shù)非顯示函數(shù);GDI.EXE為圖形設(shè)備接口庫(kù),主要內(nèi)容為與設(shè)備輸出有關(guān)的函數(shù)。依據(jù)編寫(xiě)的串行通信程序功能更強(qiáng)大、更豐富,但編寫(xiě)較為復(fù)雜。
(2)采用通信控件實(shí)現(xiàn)
VB控件工具箱內(nèi)提供了一個(gè)串行通訊控件Mscomm.ocx,它全面地使用RS232串行通訊上層開(kāi)發(fā)的所有細(xì)則,它既可以應(yīng)用查詢方式,又可以應(yīng)用事件驅(qū)動(dòng)方式來(lái)完成通訊,且用VB控件的方法來(lái)實(shí)現(xiàn)簡(jiǎn)單串口通訊更為方便、快捷[1]。
2.1,Mscomm控件使用的主要屬性
Mscomm.ocx提供了27個(gè)關(guān)于通訊控件方面的屬性。其主要屬性如下:(1)Commport屬性:設(shè)置串行端口號(hào),取值范圍1~99,缺省默認(rèn)值為1。設(shè)置方式:mport=2;設(shè)置串行端口號(hào)為2。(2)Settings屬性:設(shè)置串行端口的波特率、奇偶數(shù)校驗(yàn)位、數(shù)位、停止位。如:Mscomm1.setting=’9600,N,8,1’即波特率為9600,N為無(wú)奇偶數(shù)校驗(yàn)位,8位數(shù)據(jù)位,1位停止位。(3)Portopen屬性:設(shè)置端口狀態(tài)(打開(kāi)或關(guān)閉)。如:Mscomm1.portopen:=TRUE,即為打開(kāi)端口(FALSE為關(guān)閉端口)。(4)Input屬性:接收緩沖區(qū)。如:str1:=Mscomm1.input(接收緩沖區(qū)的內(nèi)容賦給字符串變量str1)。(5)Output屬性:發(fā)送緩沖區(qū)。如:Mscomm1.output:=str2(將變量str2中的字符寫(xiě)入發(fā)送緩沖區(qū))。(6)Commevent屬性:設(shè)置激發(fā)通信事件的常數(shù)。