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