<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 用C++ Builder實(shí)現組態(tài)王實(shí)時(shí)監控艾默生變頻器

用C++ Builder實(shí)現組態(tài)王實(shí)時(shí)監控艾默生變頻器

作者: 時(shí)間:2012-02-24 來(lái)源:網(wǎng)絡(luò ) 收藏

1 引言

本文引用地址:http://dyxdggzs.com/article/149569.htm

  工業(yè)自動(dòng)化通用軟件——王軟件系統與最終工程人員使用的具體的或現場(chǎng)部件無(wú)關(guān)。對于不同的硬件設施,只需為王配置相應的通訊驅動(dòng)程序即可。組態(tài)王支持的硬件設備包括:可編程控制器plc、智能模塊、板卡、智能儀表、等。工程人員可以把每一臺下位機看作一種設備,而不必關(guān)心具體的通訊協(xié)議,使用時(shí)只需要在組態(tài)王的設備庫中選擇設備的類(lèi)型完成安裝即可,使驅動(dòng)程序的配置更加方便。

  窯爐系統是為滿(mǎn)足生產(chǎn)需要,減少能耗,提高效率而設計的,它的必須要借助一定的軟件及硬件條件,通過(guò)控制風(fēng)機從而控制窯內多個(gè)點(diǎn)的溫度及通風(fēng)量,保質(zhì)保量的完成出磚要求。因此,對變頻器的就顯得十分重要。

  窯爐系統以組態(tài)王畫(huà)面為主要運行畫(huà)面,首先在組態(tài)王界面上對被監控系統的參數。進(jìn)行設置,然后起動(dòng),在組態(tài)王的界面上可以動(dòng)態(tài)。顯示下位機的運行狀態(tài)、測量參數、作業(yè)位置以及完成對多個(gè)變頻器具體性能指標的測試等。由于組態(tài)王只提供這類(lèi)變頻器的驅動(dòng)程序,沒(méi)有提供其通訊協(xié)議,因此在功能并不很強大的組態(tài)王內部直接開(kāi)發(fā)變頻器的通訊協(xié)議是有較大難度的。

2 c++ builder作為后臺間接組態(tài)王與變頻器的通訊

  本文采取的方法是:利用c++ builder 提供的串行通訊功能,與變頻器的通訊,再利用bcb的dde功能完成組態(tài)王與c++builder之間的動(dòng)態(tài)數據交換。這樣就把從變頻器采集到的外部信號通過(guò)c++builder間接動(dòng)態(tài)地顯示在組態(tài)王界面上。其系統的結構圖如圖1所示。

3 c++ builder與變頻器之間串行通信的實(shí)現

  串行通訊 (serial communication)指的是兩個(gè)欲交換信息者的信息流動(dòng),其信息流動(dòng)的方式是一個(gè)位接一個(gè)位,有順序的由一端向另一端流動(dòng)。帶異步通訊適配器的pc機與變頻器只有滿(mǎn)足如下條件,才能互聯(lián)通信:帶有異步通訊接口的變頻器與帶異步通訊適配器的pc機互聯(lián);雙方采用的總線(xiàn)標準一致,否則要通過(guò)“總線(xiàn)標準變換單元”變換之后才能互聯(lián);雙方的初始化、波特率、數據位數、停止位數、奇偶校驗都相同;要對變頻器的通訊協(xié)議分析清楚,嚴格的按照協(xié)議的規定及幀格式編寫(xiě)pc機的通訊程序。變頻器中配有通訊機制,一般不需要用戶(hù)編程。pc機與變頻器不能直接連接,要通過(guò)電纜進(jìn)行rs232、rs485的變換。

  3.1 c++ builder與變頻器的通訊協(xié)議

  協(xié)議是一系列的定義了計算機應該怎樣管理通信的規則。協(xié)議可以規定數據應該以什么格式進(jìn)行傳遞和每個(gè)節點(diǎn)在什么時(shí)間以及以什么方式進(jìn)行傳遞。除了數據通道以外,一個(gè)連接可以使用其它線(xiàn)線(xiàn)路來(lái)表示什么時(shí)候一個(gè)發(fā)送者有數據要發(fā)送,什么時(shí)候一個(gè)接收者能夠接收新數據或者其它控制或狀態(tài)信息。

  3.2變頻器的通訊協(xié)議

  變頻器通訊協(xié)議為modbus協(xié)議,除了支持常用的寄存器的讀寫(xiě)外,還擴充了部分命令對變頻器功能碼進(jìn)行管理。modbus協(xié)議同時(shí)支持rtu模式和ascii模式,本文采用rtu模式。對應的幀格式如圖2所示。

  3.3 c++ builder中通訊協(xié)議的實(shí)現

  在c++builder中mscomm控件可以采用輪詢(xún)或事件驅動(dòng)的方法從端口獲取數據。這里采用的是事件驅動(dòng)的方法。就是在一個(gè)事件發(fā)生的時(shí)候,讓程序自動(dòng)的跳到一段程序。該控件的oncomm事件執行這個(gè)功能。oncomm程序負責對諸如在串口的硬件中斷或者一個(gè)軟件緩存的計數器到達了一個(gè)觸發(fā)值這樣的事件時(shí)做出反應。在bcb的classwizard中為新創(chuàng )建的通信控件定義成員對象,通過(guò)該對象可以對串口屬性進(jìn)行設置。通過(guò)設定其settings、commport、inputmode、handshaking、portopen屬性來(lái)實(shí)現設定bcb的通訊協(xié)議。這里設定settings屬性為:9600,n,8,1,即該協(xié)議的波特率為9600,無(wú)奇偶校驗,每個(gè)字符的數據位為8位。

4 bcb與組態(tài)王軟件數據交換的實(shí)現

  “組態(tài)王”之間通訊的實(shí)現主要是通過(guò)“組態(tài)王”提供的動(dòng)態(tài)數據交換 (dde)來(lái)完成的。dde是windows平臺上的一個(gè)完整的通信協(xié)議,它使應用程序能彼此交換數據和發(fā)送指令。dde過(guò)程可以比喻為兩個(gè)人的對話(huà)。提問(wèn)的一方稱(chēng)為“顧客”(client),回答的一方稱(chēng)為“服務(wù)器”server)。一個(gè)應用程序可以同時(shí)是“顧客”、“服務(wù)器”:當它向其他程序中請求數據和時(shí),它充當的是“顧客”若有其他程序需要它提供數據,它又成了“服務(wù)器”這里關(guān)鍵要實(shí)現的是。“組態(tài)王”作為顧客程序從bcb得到數據。使bcb成為“服務(wù)器”很簡(jiǎn)單,只需在“組態(tài)王”中設置服務(wù)器程序的三個(gè)標識名(應用程序名、主題名、項目名),并把vb應用程序中提供數據的窗體的linkmode屬性設置為1,不必在vb中增加任何程序。值得注意的是,將vb窗口的屬性設定成和在組態(tài)王中定義dde設備時(shí)的“話(huà)題名”一樣;在組態(tài)王定義要顯示的變量時(shí),選擇“項目名”為要顯示bcb的textbox控件名。這樣組態(tài)王界面上可以顯示出指定的bcb可執行文件中指定的textbox控件的值。

5 一種通過(guò)用bcb做控件實(shí)現組態(tài)王監控變頻器的方法

  利用bcb中能生成activex控件的項目編寫(xiě)器new-》other-》activex-》activeform,編寫(xiě)相關(guān)程序實(shí)現控制變頻器的功能,并通過(guò)bcb自帶的view工具欄中的typelibrary工具來(lái)編譯生成控件,此控件經(jīng)打包可生成在組態(tài)王中認始的ocx控件,此控件同樣可設置是否具有可讀可寫(xiě)的屬性,此屬性是在typeliabrary工具中設置編譯后得到的,需要幾個(gè)參數,其各是什么屬性,完全可以自由添加,非常簡(jiǎn)單方便。并可通過(guò)bcb相關(guān)程序,設置相關(guān)屬性對內對外的具體連接功能。實(shí)際上,此過(guò)程實(shí)現的就是變頻器與bcb控件的通信,控件與組態(tài)王的通信,此方式彌補了組態(tài)王中不提供的相關(guān)變頻器等的驅動(dòng)程序,而無(wú)法利用組態(tài)王的缺陷,可通過(guò)bcb方便實(shí)現相關(guān)功能的驅動(dòng),而又間接實(shí)現了組態(tài)王控制變頻器等的驅動(dòng)。實(shí)際bcb與變頻器等的通信也非常簡(jiǎn)便,只要確定了通信協(xié)議,就可利用mscomm控件,方便的編寫(xiě)通信程序,實(shí)現變頻器等的控制。用bcb制作通用控件嵌入組態(tài)王從而實(shí)現組態(tài)王與變頻器的通訊,其運行畫(huà)面如圖3所示。

6 結束語(yǔ)

  當用bcb作為后臺時(shí),當系統開(kāi)始運行前,要求首先運行c++builder的可執行文件作為后臺運行程序,然后才能運行組態(tài)王系統。當變頻器發(fā)送數據的時(shí)候,由bcb接受到此數據,再通過(guò)組態(tài)王提供的dde功能,將該數據顯示到組態(tài)王界面上。這樣就把從變頻器采集到的外部信號通過(guò)bcb間接動(dòng)態(tài)的顯示在組態(tài)王界面上。該方法實(shí)現了組態(tài)王對變頻器的監控。經(jīng)過(guò)測試可知,系統的響應速度能達到ms級,并且這種實(shí)現系統實(shí)時(shí)監控的方法可移植性強,對于監控其他類(lèi)型可編程控制器plc或單片機也適用。

  當用bcb制作控件時(shí),只要用bcb制作完相應功能的控件就可實(shí)現脫離bcb環(huán)境,作為普通的ocx控件應用于組態(tài)王,非常簡(jiǎn)便。此方法彌補了組態(tài)王沒(méi)有相關(guān)驅動(dòng)程序,而無(wú)法實(shí)現應用組態(tài)王的缺陷,值得推廣應用。在兗礦鮑店磚窯監控系統中,我們利用了bcb作為后臺間接實(shí)現組態(tài)王對變頻器的控制。其窯爐一鼓風(fēng)機變頻控制監控畫(huà)面如圖4所示。經(jīng)現場(chǎng)調試運行后,所得反饋效果良好。

c++相關(guān)文章:c++教程




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>