久久久91-久久久91精品国产一区二区-久久久91精品国产一区二区三区-久久久999国产精品-久久久999久久久精品

最新廣告
關注中國自動化產業(yè)發(fā)展的先行者!
工業(yè)智能邊緣計算2025年會
CAIAC 2025
2025工業(yè)安全大會
OICT公益講堂
當前位置:首頁 >> 案例 >> 案例首頁

案例頻道

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

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

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

2 世紀星數(shù)據(jù)交換標準控件——DBComm

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

2.1 實時數(shù)據(jù)交換

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

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

2.2 歷史數(shù)據(jù)讀取

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

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

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

3 DBComm在VB6.0中的應用

3.1 VB工程和世紀星工程數(shù)據(jù)交換示意圖:
 

圖 1

 

  下面是一個應用VB程序在外部計算PID輸出功率的一個簡單實驗:

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

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

  電器原理圖如下圖所示:
 

圖 2


 

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

3.2 世紀星監(jiān)控程序

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


圖 3

 

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

  * 創(chuàng)建一個VB標準工程。
  * Projiec-Components-DBComm ActiveX Control- Moudle。
  * 初始化DBComm
   dbcomm_pid.InitComm
  * 從世紀星組態(tài)軟件讀取溫度設定和實際值
   SV= dbcomm_pid.tagReadFloat ("sv")
   PV= dbcomm_pid.tagReadFloat ("pv")
  * y0輸出時間計算函數(shù)(根據(jù)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 加熱輸出控制

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

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


圖 4

 

3.5 實驗結果

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

4 總結

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

熱點新聞

推薦產品

x
  • 在線反饋
1.我有以下需求:



2.詳細的需求:
姓名:
單位:
電話:
郵件:
主站蜘蛛池模板: 久久免费成人| 日韩在线观看网址| 国产h在线观看| 特级aaa毛片| 丁香月婷婷| 久草在线国产视频| 日韩女同性互慰免费视频 | 2022国产情侣真实露脸在线| 日韩中文字幕电影| 亚洲美女视频网| 欧美777精品久久久久网| 99久久99久久精品免费看蜜桃| 欧美国产中文字幕| 五月婷婷精品| 综合 欧美 亚洲日本| 久久精品乱子伦免费| 午夜视频网站在线观看| 成人免费网站| 免费网站看v片在线观看| 国产v欧美v日韩在线观看| 国产精品久草| 美女被免费网站91| 2022色婷婷综合久久久| 国产精品超清大白屁股| 亚洲精品在线第一页| 6080yy 久久 亚洲 日本不卡| 大杳蕉精品视频在线观看| 日本99视频| 日韩在线视频网址| 外国一级黄色片| 亚洲精品日本一区二区在线| 成免费网站| 好看的亚洲视频| 免费级毛片| 欧美一级高清片免费一级| 欧美性生活视频播放| 国产一级毛片免| 黄色三级毛片视频| 精品一区二区三区五区六区| 91小视频在线观看| 99re久久在热线播放最新地址|