• <blockquote id="fficu"><optgroup id="fficu"></optgroup></blockquote>

    <table id="fficu"></table>

    <sup id="fficu"></sup>
    <output id="fficu"></output>
    1. ABB
      關(guān)注中國自動(dòng)化產(chǎn)業(yè)發(fā)展的先行者!
      CAIAC 2025
      2025工業(yè)安全大會(huì )
      OICT公益講堂
      當前位置:首頁(yè) >> 案例 >> 案例首頁(yè)

      案例頻道

      世紀星控件DBComm:小塊兒有大“智慧”
      • 企業(yè):北京世紀長(cháng)秋科技有限公司     領(lǐng)域:自動(dòng)化軟件     行業(yè):電力    
      • 點(diǎn)擊數:522     發(fā)布時(shí)間:2010-12-16 11:16:39
      • 分享到:
      DBComm.OCX控件 實(shí)現PID控制
      1 引言

        盡管組態(tài)軟件已經(jīng)具備了很強的功能,但是在很多場(chǎng)合同樣有直接使用第三方代碼的要求。例如用戶(hù)需要將組態(tài)軟件采集的實(shí)時(shí)數據傳送到自己開(kāi)發(fā)的VB程序中做更復雜的數據分析或者是將世紀星采集的數據做特定的處理之后再傳送給世紀星,這些都需要有一種數據交換機制。

        當然實(shí)現這種交換機制有很多傳統的方法,如使用文件共享數據DDE數據和交換機制。傳統的方法雖然能夠達到數據交換的目的,但其使用方法較為煩瑣。和使用文件共享數據就需要在組態(tài)軟件和外部程序內部進(jìn)行文件讀取操作,這樣不但麻煩而且處理速度也相對較慢,在要求實(shí)時(shí)性較好的工程中就顯得力不從心。為了讓第三方程序方便地讀寫(xiě)世紀星數據,世紀星提供了基于A(yíng)ctiveX技術(shù)的OCX控件,此控件可以在大多的開(kāi)發(fā)環(huán)境中使用(如VC++6.0、VB6.0),它就是DBComm。

      2 世紀星數據交換標準控件——DBComm

        世紀星提供標準控件 DBComm.ocx 與外部第三方程序進(jìn)行數據交換,其交換內容包括:

      2.1 實(shí)時(shí)數據交換

        外部程序可以讀取世紀星的系統變量(包括系統離散、系統整數、系統實(shí)數和系統信息)、內存變量(包括內存離散、內存整數、內存實(shí)數和內存信息)和IO變量(包括IO離散、IO整數、IO實(shí)數和IO信息);還可以改寫(xiě)世紀星的內存變量和IO變量。

        相關(guān)函數如下:
        DiscValue=tagReadDisc(Tagname) 外部程序讀取世紀星離散變量的當前值;
        IntValue=tagReadInt(Tagname) 外部程序讀取世紀星整數變量的當前值;
        FloatValue=tagReadFloat(Tagname) 外部程序讀取世紀星實(shí)數變量的當前值;
        MessValue=tagReadMess(Tagname) 外部程序讀取世紀星信息變量的當前值;
        tagWriteDisc(Tagname, DiscValue) 外部程序改寫(xiě)世紀星離散變量的當前值;
        tagWriteInt(Tagname, IntValue) 外部程序改寫(xiě)世紀星整數變量的當前值;
        tagWriteFloat(Tagname, FloatValue) 外部程序改寫(xiě)世紀星實(shí)數變量的當前值;
        tagWriteMess(Tagname, String) 外部程序改寫(xiě)世紀星信息變量的當前值;
        InitComm() DBComm初始化函數;

      2.2 歷史數據讀取

        也就是說(shuō),外部程序可以按時(shí)間和變量名稱(chēng)讀取世紀星的歷史數據,相關(guān)函數如下:
      TimeUINT=ConvertTime(Year, Month, Day, Hour, Minute, Second);

        時(shí)間轉換函數:
        DiscResult=GetHistoryData(Tagname,StartTime,EndTime,DataArray,SizeOfArray, Interval);

        根據指定的起止日期時(shí)間和世紀星的變量名稱(chēng)讀取世紀星的歷史數據。

      3 DBComm在VB6.0中的應用

      3.1 VB工程和世紀星工程數據交換示意圖:
       

      圖 1

       

        下面是一個(gè)應用VB程序在外部計算PID輸出功率的一個(gè)簡(jiǎn)單實(shí)驗:

        需要硬件:三菱FX2N系列PLC、FX2N-4AD-TC、加熱器、S分度熱電偶、固態(tài)繼電器。

        需要軟件:世紀星組態(tài)軟件7.22、VB6.0。

        電器原理圖如下圖所示:
       

      圖 2


       

        上圖是一個(gè)加熱控制系統。PLC主模塊負責控制繼電器的通斷(PID輸出);,TC模塊負責溫度采集(PID輸入);上位機世紀星部分負責溫度設定、采集下位機信號、曲線(xiàn)顯示、數據記錄、數據檢索等功能;上位機VB部分負責從世紀星獲取設定溫度SV、測量溫度PV以計算PID輸出(固態(tài)繼電器的通斷時(shí)間)。

      3.2 世紀星監控程序

        首先,正確配置控制電路,將上位機與PLC相連,然后開(kāi)發(fā)世紀星監控程序,創(chuàng )建相應的驅動(dòng),便能得到如下監控畫(huà)面:


      圖 3

       

      3.3 VB外掛程序開(kāi)發(fā)

        * 創(chuàng )建一個(gè)VB標準工程。
        * Projiec-Components-DBComm ActiveX Control- Moudle。
        * 初始化DBComm
         dbcomm_pid.InitComm
        * 從世紀星組態(tài)軟件讀取溫度設定和實(shí)際值
         SV= dbcomm_pid.tagReadFloat ("sv")
         PV= dbcomm_pid.tagReadFloat ("pv")
        * y0輸出時(shí)間計算函數(根據P=0.5,I=0.5,D=0)
         Private Function PIDCalc(pp As PID, ByVal NextPoint As Double) As Double
          Dim dError As Double
          Dim Error As Double
           Error = pp.SetPoint - NextPoint
           pp.SumError = pp.SumError + Error
           dError = pp.LastError - pp.PrevError
          pp.PrevError = pp.LastError
          pp.LastError = Error
           PIDCalc = pp.P * Error + pp.i * pp.SumError + pp.D * dError
         End Function

      3.4 加熱輸出控制

        根據2中計算的加熱時(shí)間(時(shí)間百分比,x%*1s),對PLC的Y0 進(jìn)行輸出控制。

        YO ON/OFF:tagWriteDisc ("y0",1)/ tagWriteDisc ("y0",0),Y0脈寬調制如下圖所示:


      圖 4

       

      3.5 實(shí)驗結果

        本工程利用世紀星組態(tài)軟件采集溫度實(shí)際值(從PLC),通過(guò)在組態(tài)軟件中設定溫度的目標值,在VB6.0程序中計算輸出功率的百分比,VB再將加熱時(shí)間(Y0時(shí)間)傳遞給組態(tài)軟件,組態(tài)軟件最后再傳給PLC控制加熱。由于采用了粗糙的PID,所以控溫精度在正負1度以?xún)?精度不在本文研究范圍內),但是VB通過(guò)DBComm和世紀星組態(tài)軟件實(shí)時(shí)交換數據功能良好。

      4 總結

        綜上所述,世紀星所提供的DBComm控件使用方便,為第三方程序提供了完備的數據交換接口。另外,DBComm控件還可以訪(fǎng)問(wèn)世紀星組態(tài)軟件的歷史數據庫,下次有機會(huì )我們再詳述。

      熱點(diǎn)新聞

      推薦產(chǎn)品

      x
      • 在線(xiàn)反饋
      1.我有以下需求:



      2.詳細的需求:
      姓名:
      單位:
      電話(huà):
      郵件:
      欧美精品欧美人与动人物牲交_日韩乱码人妻无码中文_国产私拍大尺度在线视频_亚洲男人综合久久综合天

    2. <blockquote id="fficu"><optgroup id="fficu"></optgroup></blockquote>

      <table id="fficu"></table>

      <sup id="fficu"></sup>
      <output id="fficu"></output>