當(dāng)前位置:機(jī)電之家首頁(yè) >> PLC技術(shù)>> PLC文案資料 >> PLC論文 >> 基于力控組態(tài)軟件的新型DCS監(jiān)控軟件設(shè)計(jì)分析
基于力控組態(tài)軟件的新型DCS監(jiān)控軟件設(shè)計(jì)分析

1  引言
    分布式控制系統(tǒng)通??梢苑譃楝F(xiàn)場(chǎng)控制層、過(guò)程監(jiān)控層、生產(chǎn)管理層和市場(chǎng)經(jīng)營(yíng)管理層四個(gè)層次,過(guò)程監(jiān)控層通過(guò)對(duì)多個(gè)控制設(shè)備的集中管理,完成監(jiān)控生產(chǎn)過(guò)程的目的。力控PCAuto監(jiān)控組態(tài)軟件是處于過(guò)程監(jiān)控層的軟件平臺(tái),它可運(yùn)行于bbbbbbs 98/NT/2000/XP操作系統(tǒng)之上,能與國(guó)內(nèi)外各工控廠家的常用設(shè)備通信,與工控機(jī)和網(wǎng)絡(luò)系統(tǒng)相結(jié)合,可方便、快速地構(gòu)造滿足不同需求的數(shù)據(jù)采集與監(jiān)控系統(tǒng)。
    雖然力控提供了許多常用設(shè)備的驅(qū)動(dòng)程序,但在實(shí)際應(yīng)用中,由于工程需要和設(shè)備的特殊性,力控所提供的現(xiàn)有驅(qū)動(dòng)程序并不能滿足所有設(shè)備需要,此時(shí)便需利用力控驅(qū)動(dòng)開(kāi)發(fā)包提供的接口來(lái)開(kāi)發(fā)新驅(qū)動(dòng)程序。對(duì)于普通用戶來(lái)說(shuō),驅(qū)動(dòng)開(kāi)發(fā)是一項(xiàng)很艱難的工作,但是力控提供了多種與第三方軟件的接口,如OLE控件、內(nèi)部組件等,這就為我們提供了另外一個(gè)解決問(wèn)題的思路:利用VB、VC等開(kāi)發(fā)工具自行開(kāi)發(fā)通信程序采集數(shù)據(jù),再利用力控提供的OLE控件等接口將通信程序與力控連接,實(shí)現(xiàn)數(shù)據(jù)共享。這樣,無(wú)需開(kāi)發(fā)新驅(qū)動(dòng)程序便可使力控采集到現(xiàn)場(chǎng)設(shè)備的數(shù)據(jù)。這種基于力控組態(tài)軟件的新型監(jiān)控軟件的結(jié)構(gòu)框圖如圖1所示:

圖1     軟件結(jié)構(gòu)框圖

    本文以基于RS-485串行通信的分布式控制系統(tǒng)為應(yīng)用背景,對(duì)這種新型監(jiān)控軟件的實(shí)現(xiàn)做了探討。

2  上位機(jī)串行通信的實(shí)現(xiàn)
2.1  串行通信接口技術(shù)
    串行通信常用的接口有RS-232C接口及RS-485接口。由于RS-232C接口通信距離較近,當(dāng)傳輸距離較遠(yuǎn)時(shí),可采用RS-485串行通信接口。RS-232C接口和RS-485接口之間的轉(zhuǎn)換可采用相應(yīng)的轉(zhuǎn)換模塊。一般計(jì)算機(jī)內(nèi)都配有通信適配器,使計(jì)算機(jī)能夠與其它具有RS-232C 接口的計(jì)算機(jī)或設(shè)備進(jìn)行通信。數(shù)據(jù)通過(guò)串口一次只傳送1個(gè)字節(jié),且數(shù)據(jù)和控制信號(hào)都在單根導(dǎo)線上移動(dòng),需要應(yīng)用通信協(xié)議。常用的通信協(xié)議如下:1個(gè)起始位;7個(gè)或8個(gè)數(shù)據(jù)位;奇偶效驗(yàn)位;1個(gè)或2個(gè)停止位;通信速率(單位為波特率或bit/s)。
    構(gòu)成基于RS-485串行通信的分布式控制系統(tǒng)通常采用以下硬件構(gòu)成方案:計(jì)算機(jī)RS-232C接口經(jīng)RS-232C串行通信線連接RS-232C/RS-485轉(zhuǎn)換模塊,轉(zhuǎn)換模塊經(jīng)RS-485串行通信線連接各個(gè)現(xiàn)場(chǎng)設(shè)備的RS-485接口。再配以上位機(jī)監(jiān)控軟件,便可以從計(jì)算機(jī)串行口采集現(xiàn)場(chǎng)設(shè)備的數(shù)據(jù)。
    串行通信可以在DOS或bbbbbbs環(huán)境下進(jìn)行,可以用匯編或高級(jí)語(yǔ)言編寫(xiě)通信程序。本文介紹如何利用bbbbbbs的ActiveX控件進(jìn)行編程。利用ActiveX控件編寫(xiě)串行通信程序,其編程步驟如下:
    (1) 設(shè)置通信協(xié)議(傳輸速率、奇偶校驗(yàn)、傳輸位數(shù)、終止位);
    (2) 讀取線路狀態(tài),判斷是否可以通信;
    (3) 發(fā)送或接收數(shù)據(jù);
    (4) 重復(fù)第2和第3步,直至通信完成。
2.2  串行通信編程
    在bbbbbbs環(huán)境下編寫(xiě)串行通信程序,可以利用VB提供的良好界面設(shè)計(jì)能力及強(qiáng)大的串行通信功能。VB 6.0利用MSComm控件通過(guò)串行端口發(fā)送和接收數(shù)據(jù),為應(yīng)用程序提供串行通信能力。
MSComm控件是用于bbbbbbs環(huán)境的32位串行通信控件,每個(gè)MSComm控件對(duì)應(yīng)于一個(gè)串行端口。應(yīng)用程序中需要多個(gè)串行口時(shí),要使用多個(gè)MSComm控件。MSComm控件的主要屬性及說(shuō)明如附表所示。

    附表     MSComm控件常用屬性


    使用MSComm控件前,需要向工具箱添加該控件:選擇“工程”菜單中“部件”項(xiàng),“控件”頁(yè)中選中“Microsoft Comm control 6.0”項(xiàng),點(diǎn)擊“確定”,完成MSComm控件的添加。
MSComm提供兩種處理通信的方式:事件驅(qū)動(dòng)通信和查詢通信方式。串口通信中每接收或發(fā)送一個(gè)字符就產(chǎn)生一個(gè)事件,事件驅(qū)動(dòng)通信就是利用MSComm控件OnComm事件捕獲并處理通信事件,該事件包括了處理串口通信的各個(gè)消息。以下為采用計(jì)算機(jī)串口1發(fā)送接收數(shù)據(jù)的程序示例。
發(fā)送數(shù)據(jù): 
    Private Sub DataSend ( )
    Dim Data(5) As Byte
    MSComm1. Commport = 1
    '設(shè)置MSComm1對(duì)應(yīng)Comm1
    MSComm1. Settings =”96000,N,8,1”
    ' 9600bit/s,無(wú)奇偶效驗(yàn),8位數(shù),1位終止位
    If MSComm1. PortOpen =False Then   
    '打開(kāi)端口
    MSComm1. PortOpen = True
    End If
    Data (0) = CByte(TeAddr.Text) 
    '設(shè)備地址
    Data e(1) = &H4
    '功能號(hào) 讀取電力參數(shù)
    Data e(2) = &H0
    '數(shù)據(jù)起始地址
    Data (3) = &H0
    Data (4) = &H0 
    '數(shù)據(jù)長(zhǎng)度
    Data e(5) = &H15
    MSComm1. OutBufferCount = 0  
    '清除發(fā)送緩沖區(qū)
    MSComm1. Output = Data   
    '發(fā)送數(shù)據(jù)
    MSComm1. PortOpen = False  
    '關(guān)閉端口
    End Sub
    接收數(shù)據(jù):
    Private Sub MSComm1_OnComm()
    Dim rec() As Byte
    Select Case MSComm1.CommEvent
    Case comEvReceive 
    '串口接收事件
    rec = MSComm1.bbbbb 
    '讀輸入緩沖區(qū)
    End Select   
    End Sub

3  力控實(shí)時(shí)數(shù)據(jù)庫(kù)與DbCom控件
    力控的實(shí)時(shí)數(shù)據(jù)庫(kù)是一個(gè)開(kāi)放的數(shù)據(jù)平臺(tái)。用戶可以利用數(shù)據(jù)庫(kù)提供的接口,在該平臺(tái)上進(jìn)行二次開(kāi)發(fā),創(chuàng)建自己的應(yīng)用程序。實(shí)時(shí)數(shù)據(jù)庫(kù)提供的控件DbCom就是一種方便、高效的接口方式。
    DbCom是一個(gè)標(biāo)準(zhǔn)OLE控件,用戶在各種常用開(kāi)發(fā)環(huán)境(如C++ Builder、VC++、VB、Delphi等)下可以調(diào)用DbCom來(lái)訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù)。通過(guò)DbCom,上位機(jī)通信程序不但可以讀取力控?cái)?shù)據(jù)庫(kù)數(shù)據(jù),而且可以設(shè)置力控?cái)?shù)據(jù)庫(kù)數(shù)據(jù)。在安裝力控時(shí),安裝程序自動(dòng)完成DbCom的安裝與注冊(cè)。DbCom是一個(gè)在程的OLE控件,在應(yīng)用程序中使用時(shí),必須同時(shí)啟動(dòng)數(shù)據(jù)庫(kù)DB。
    下面給出通過(guò)DbCom控件訪問(wèn)力控?cái)?shù)據(jù)庫(kù)的兩個(gè)常用方法。
    (1) 方法1:GetRealData。用于讀取多個(gè)數(shù)值型數(shù)據(jù)
    語(yǔ)法形式:long GetRealData(long count, LPCTSTR strNames, double* data)。
    參數(shù)說(shuō)明:count:數(shù)據(jù)個(gè)數(shù)。 
    strNames:數(shù)據(jù)名字符串,字符型變量,數(shù)據(jù)名間以','號(hào)分隔。 
    data:雙精度浮點(diǎn)(Double)型指針,返回的數(shù)據(jù)數(shù)組。
    返回值:長(zhǎng)整型。0:成功;-1:失敗。
    (2) 方法2: SetbbbbbbData。根據(jù)數(shù)據(jù)名稱和數(shù)據(jù)值設(shè)置數(shù)據(jù)庫(kù)
    語(yǔ)法形式:long SetbbbbbbData(long nCount, VARIANT* pvTagPars, VARIANT* pvData)。
    參數(shù)說(shuō)明:nCount:數(shù)據(jù)個(gè)數(shù)。 
    pvTagPars:VARIANT數(shù)組,nCount個(gè)數(shù)據(jù)名稱。 
    pvData:VARIANT數(shù)組,nCount個(gè)數(shù)據(jù)值。
    返回值:成功為0,否則為非0。
    以下程序?yàn)樯衔粰C(jī)通信程序讀寫(xiě)力控實(shí)時(shí)數(shù)據(jù)庫(kù)的兩種常用方法的示例。
    //讀取數(shù)據(jù)庫(kù)
    Private Sub Getbbbbbeters() 
    '讀取電度值和有功功率值
    Dim count As Integer, result As Integer
    Dim rdata(1) As Double
    Dim pars As bbbbbb
    count=2
    pars=”dbkWh1.PV,dbkW1.PV ” 
    '調(diào)用DbCom的方法
    result = DbCom1. GetRealData (count, pars, rdata) 
    '讀取數(shù)據(jù)
    If result=-1 Then
    MsgBox("請(qǐng)先啟動(dòng)力控實(shí)時(shí)數(shù)據(jù)庫(kù)!")
    Else
    kWh=rdata(0) 
    '電度值
    kW=rdata(1) 
    '有功功率值
    End If
    End Sub
    //設(shè)置數(shù)據(jù)庫(kù)
    Private Sub Setbbbbbeters() 
    '將電度值和有功功率值寫(xiě)入力控?cái)?shù)據(jù)庫(kù)
    Dim count As Integer, result As Integer
    Dim  * pTagPars(1) As VARIANT, * pVals(1) As VARIANT
    count=2
    pTagPars(0)=dbkWh1.PV 
    '數(shù)據(jù)名
    pTagPars(1)=dbkW1.PV 
    pVals(0)=kW·h  數(shù)據(jù)值
    pVals(1)=kW  調(diào)用DBcom的方法
    result=DbCom1.SetbbbbbbData(count, pTagPars, pVals)  
    '設(shè)置數(shù)據(jù)
    End Sub

4  結(jié)束語(yǔ)
    本文提出的基于力控組態(tài)軟件的新型監(jiān)控軟件,利用了力控實(shí)時(shí)數(shù)據(jù)庫(kù)提供的OLE控件接口,將力控組態(tài)軟件的強(qiáng)大功能與VB自行開(kāi)發(fā)程序的靈活性結(jié)合起來(lái),更好的滿足了工業(yè)分布式控制系統(tǒng)的需要。這種新型監(jiān)控軟件已在某港口配電監(jiān)控系統(tǒng)等實(shí)際工程項(xiàng)目中得到成功應(yīng)用。

作者:未知 點(diǎn)擊:2025次 [打印] [關(guān)閉] [返回頂部]
本文標(biāo)簽:基于力控組態(tài)軟件的新型DCS監(jiān)控軟件設(shè)計(jì)分析
* 由于無(wú)法獲得聯(lián)系方式等原因,本網(wǎng)使用的文字及圖片的作品報(bào)酬未能及時(shí)支付,在此深表歉意,請(qǐng)《基于力控組態(tài)軟件的新型DCS監(jiān)控軟件設(shè)計(jì)分析》相關(guān)權(quán)利人與機(jī)電之家網(wǎng)取得聯(lián)系。
電子樣本

SN系列樣冊(cè)
:鞏經(jīng)理
:13915946763
:南京塞姆泵業(yè)有限公司
個(gè)人求購(gòu)

雒工 【求購(gòu)】  永磁風(fēng)力發(fā)...  2025-12-1
楊異乾 【求購(gòu)】  電涌保護(hù)器  2025-11-28
趙焱 【求購(gòu)】  電氣溫控閥  2025-11-28
張揚(yáng)瓊 【求購(gòu)】  ABB火檢...  2025-11-27
張雪根 【求購(gòu)】  固體除垢劑  2025-11-26
趙經(jīng)理 【求購(gòu)】  變壓器  2025-11-26
羅經(jīng)理 【求購(gòu)】  巡邏車跟蹤...  2025-11-26
趙經(jīng)理 【求購(gòu)】  柴油發(fā)電機(jī)  2025-11-26
VIP公司推薦