4 bcb與組態(tài)王軟件數(shù)據(jù)交換的實現(xiàn)
“組態(tài)王”之間通訊的實現(xiàn)主要是通過“組態(tài)王”提供的動態(tài)數(shù)據(jù)交換 (dde)來完成的。dde是windows平臺上的一個完整的通信協(xié)議,它使應用程序能彼此交換數(shù)據(jù)和發(fā)送指令。dde過程可以比喻為兩個人的對話。提問的一方稱為“顧客”(client),回答的一方稱為“服務器”server)。一個應用程序可以同時是“顧客”、“服務器”:當它向其他程序中請求數(shù)據(jù)和時,它充當?shù)氖?ldquo;顧客”若有其他程序需要它提供數(shù)據(jù),它又成了“服務器”這里關鍵要實現(xiàn)的是。“組態(tài)王”作為顧客程序從bcb得到數(shù)據(jù)。使bcb成為“服務器”很簡單,只需在“組態(tài)王”中設置服務器程序的三個標識名(應用程序名、主題名、項目名),并把vb應用程序中提供數(shù)據(jù)的窗體的linkmode屬性設置為1,不必在vb中增加任何程序。值得注意的是,將vb窗口的屬性設定成和在組態(tài)王中定義dde設備時的“話題名”一樣;在組態(tài)王定義要顯示的變量時,選擇“項目名”為要顯示bcb的textbox控件名。這樣組態(tài)王界面上可以顯示出指定的bcb可執(zhí)行文件中指定的textbox控件的值。
5 一種通過用bcb做控件實現(xiàn)組態(tài)王監(jiān)控變頻器的方法
利用bcb中能生成activex控件的項目編寫器new-》other-》activex-》activeform,編寫相關程序?qū)崿F(xiàn)控制變頻器的功能,并通過bcb自帶的view工具欄中的typelibrary工具來編譯生成控件,此控件經(jīng)打包可生成在組態(tài)王中認始的ocx控件,此控件同樣可設置是否具有可讀可寫的屬性,此屬性是在typeliabrary工具中設置編譯后得到的,需要幾個參數(shù),其各是什么屬性,完全可以自由添加,非常簡單方便。并可通過bcb相關程序,設置相關屬性對內(nèi)對外的具體連接功能。實際上,此過程實現(xiàn)的就是變頻器與bcb控件的通信,控件與組態(tài)王的通信,此方式彌補了組態(tài)王中不提供的相關變頻器等的驅(qū)動程序,而無法利用組態(tài)王的缺陷,可通過bcb方便實現(xiàn)相關功能的驅(qū)動,而又間接實現(xiàn)了組態(tài)王控制變頻器等的驅(qū)動。實際bcb與變頻器等的通信也非常簡便,只要確定了通信協(xié)議,就可利用mscomm控件,方便的編寫通信程序,實現(xiàn)變頻器等的控制。用bcb制作通用控件嵌入組態(tài)王從而實現(xiàn)組態(tài)王與變頻器的通訊,其運行畫面如圖3所示。
6 結(jié)束語
當用bcb作為后臺時,當系統(tǒng)開始運行前,要求首先運行c++builder的可執(zhí)行文件作為后臺運行程序,然后才能運行組態(tài)王系統(tǒng)。當變頻器發(fā)送數(shù)據(jù)的時候,由bcb接受到此數(shù)據(jù),再通過組態(tài)王提供的dde功能,將該數(shù)據(jù)顯示到組態(tài)王界面上。這樣就把從變頻器采集到的外部信號通過bcb間接動態(tài)的顯示在組態(tài)王界面上。該方法實現(xiàn)了組態(tài)王對變頻器的實時監(jiān)控。經(jīng)過測試可知,系統(tǒng)的實時響應速度能達到ms級,并且這種實現(xiàn)系統(tǒng)實時監(jiān)控的方法可移植性強,對于監(jiān)控其他類型可編程控制器plc或單片機也適用。
當用bcb制作控件時,只要用bcb制作完相應功能的控件就可實現(xiàn)脫離bcb環(huán)境,作為普通的ocx控件應用于組態(tài)王,非常簡便。此方法彌補了組態(tài)王沒有相關驅(qū)動程序,而無法實現(xiàn)應用組態(tài)王的缺陷,值得推廣應用。在兗礦鮑店磚窯監(jiān)控系統(tǒng)中,我們利用了bcb作為后臺間接實現(xiàn)組態(tài)王對變頻器的控制。其窯爐一鼓風機變頻控制監(jiān)控畫面如圖4所示。經(jīng)現(xiàn)場調(diào)試運行后,所得反饋效果良好。#p#分頁標題#e#
轉(zhuǎn)載請注明出處。