技術(shù)頻道

      世紀(jì)星組態(tài)軟件和Visual Basic 6.0數(shù)據(jù)交換

      1 引言
      盡管組態(tài)軟件已經(jīng)具備了很強的功能,但是在很多場合都有直接使用第三方代碼的要求。例如用戶需要將組態(tài)軟件采集的實時數(shù)據(jù)傳送到自己開發(fā)的VB程序中做更復(fù)雜的數(shù)據(jù)分析或者是將世紀(jì)星采集的數(shù)據(jù)做特定的處理之后再傳送給世紀(jì)星,這都需要有一種數(shù)據(jù)交換機制。
      當(dāng)然實現(xiàn)這種交換機制有很多傳統(tǒng)的方法,如使用文件共享數(shù)據(jù)、使用DDE數(shù)據(jù)交換機制。傳統(tǒng)的方法雖然能夠達(dá)到數(shù)據(jù)交換的目的,但其使用方法較為煩瑣,使用文件共享數(shù)據(jù)就需要在組態(tài)軟件和外部程序內(nèi)部進(jìn)行文件讀取操作,這樣不但麻煩而且處理速度也相對較慢,在要求實時性較好的工程中就顯得力不從心。為了讓第三方程序方便地讀寫世紀(jì)星數(shù)據(jù),世紀(jì)星提供了基于ActiveX技術(shù)的OCX控件,此控件可以在大多的開發(fā)環(huán)境中使用(如VC++6.0、VB6.0),它就是DBComm。
      2 DBComm 世紀(jì)星數(shù)據(jù)交換標(biāo)準(zhǔn)控件
      世紀(jì)星提供標(biāo)準(zhǔn)控件 DBComm.ocx 與外部第三方程序進(jìn)行數(shù)據(jù)交換,數(shù)據(jù)交換內(nèi)容包括:
      2.1 實時數(shù)據(jù)交換
      外部程序可以讀取世紀(jì)星的系統(tǒng)變量(包括系統(tǒng)離散、系統(tǒng)整數(shù)、系統(tǒng)實數(shù)和系統(tǒng)信息)、內(nèi)存變量(包括內(nèi)存離散、內(nèi)存整數(shù)、內(nèi)存實數(shù)和內(nèi)存信息)和IO變量(包括IO離散、IO整數(shù)、IO實數(shù)和IO信息);還可以改寫世紀(jì)星的內(nèi)存變量和IO變量。
      相關(guān)函數(shù):
      DiscValue=tagReadDisc(Tagname) 讀取世紀(jì)星離散變量的當(dāng)前值
      IntValue=tagReadInt(Tagname) 讀取世紀(jì)星整數(shù)變量的當(dāng)前值
      FloatValue=tagReadFloat(Tagname) 讀取世紀(jì)星實數(shù)變量的當(dāng)前值
      MessValue=tagReadMess(Tagname) 讀取世紀(jì)星信息變量的當(dāng)前值
      tagWriteDisc(Tagname, DiscValue) 改寫世紀(jì)星離散變量的當(dāng)前值
      tagWriteInt(Tagname, IntValue) 改寫世紀(jì)星整數(shù)變量的當(dāng)前值
      tagWriteFloat(Tagname, FloatValue) 改寫世紀(jì)星實數(shù)變量的當(dāng)前值
      tagWriteMess(Tagname, String) 改寫世紀(jì)星信息變量的當(dāng)前值
      InitComm() DBComm初始化函數(shù)
      2.2 歷史數(shù)據(jù)讀取
      外部程序可以按時間和變量名稱讀取世紀(jì)星的歷史數(shù)據(jù)。
      TimeUINT=ConvertTime(Year, Month, Day, Hour, Minute, Second)
      時間轉(zhuǎn)換函數(shù)
      DiscResult=GetHistoryData(Tagname,StartTime,EndTime,DataArray,SizeOfArray, Interval)
      根據(jù)指定的起止日期時間和世紀(jì)星的變量名稱讀取世紀(jì)星的歷史數(shù)據(jù)。
      3 DBComm在VB6.0中的應(yīng)用
      VB工程和世紀(jì)星工程數(shù)據(jù)交換示意圖:

      世紀(jì)長秋 世紀(jì)星組態(tài)軟件

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

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

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

      如下圖所示為電器原理圖:

      世紀(jì)長秋 世紀(jì)星組態(tài)軟件

      如上圖所示是一個加熱控制系統(tǒng)。PLC主模塊負(fù)責(zé)控制繼電器的通斷(PID輸出),TC模塊負(fù)責(zé)溫度采集(PID輸入),上位機世紀(jì)星部分負(fù)責(zé)溫度設(shè)定、采集下位機信號、曲線顯示、數(shù)據(jù)記錄、數(shù)據(jù)檢索等功能,上位機VB部分負(fù)責(zé)從世紀(jì)星獲取設(shè)定溫度SV、測量溫度PV、計算PID輸出(固態(tài)繼電器的通斷時間)。
      3.1 世紀(jì)星監(jiān)控程序
      將控制電路配置好,將上位機連接到PLC。開發(fā)世紀(jì)星監(jiān)控程序,配置相應(yīng)的串口驅(qū)動、串口參數(shù),創(chuàng)建的監(jiān)控畫面如下:
      世紀(jì)長秋 世紀(jì)星組態(tài)軟件
      3.2 VB外掛程序開發(fā)
      * 創(chuàng)建一個VB標(biāo)準(zhǔn)工程。
      * Projiec—Components—DBComm ActiveX Control Moudle。
      * 初試化DBComm
      dbcomm_pid.InitComm
      * 從世紀(jì)星組態(tài)軟件讀取溫度設(shè)定和實際值
      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.3 加熱輸出控制
      根據(jù)2中計算的加熱時間(時間百分比,x%*1s),對PLC的Y0 進(jìn)行輸出控制。
      Y0 ON/OFF:tagWriteDisc ("y0",1)/ tagWriteDisc ("y0",0),Y0脈寬調(diào)制如下圖所示:
      世紀(jì)長秋 世紀(jì)星組態(tài)軟件
      3.4實驗結(jié)果
      本工程利用世紀(jì)星組態(tài)軟件采集溫度實際值(從PLC),在組態(tài)軟件中設(shè)定溫度的目標(biāo)值,在VB6.0程序中計算輸出功率的百分比,VB再將加熱時間(Y0時間)傳遞給組態(tài)軟件,組態(tài)軟件再傳給PLC,PLC控制加熱。
      由于采用了粗糙的PID,所以控溫精度在正負(fù)1度以內(nèi)(精度不在本文研究范圍內(nèi)),但是VB通過DBComm和世紀(jì)星組態(tài)軟件實時交換數(shù)據(jù)功能良好。
      4 總結(jié)
      綜上所述,世紀(jì)星所提供的DBComm 控件使用方便,為第三方程序提供了完備的數(shù)據(jù)交換接口。另外DBComm 控件還可以訪問世紀(jì)星組態(tài)軟件的歷史數(shù)據(jù)庫,本篇暫不詳述。

      文章版權(quán)歸西部工控xbgk所有,未經(jīng)許可不得轉(zhuǎn)載。

      主站蜘蛛池模板: 免费在线观看一区| 亚洲一区中文字幕在线电影网| 亚洲一区二区在线免费观看| 成人免费一区二区无码视频 | 99在线精品一区二区三区| 人妻无码一区二区三区四区| 伊人久久一区二区三区无码| 亚洲老妈激情一区二区三区| 色一情一乱一伦一区二区三区日本| 人妻AV中文字幕一区二区三区| 国产一区二区三区免费观在线| 国产人妖在线观看一区二区 | 极品少妇伦理一区二区| 糖心vlog精品一区二区三区| 日韩国产精品无码一区二区三区 | 麻豆AV天堂一区二区香蕉| 亚洲熟妇av一区二区三区下载| 久久se精品一区二区国产| 国产熟女一区二区三区四区五区| 一区二区三区亚洲视频| 一区在线免费观看| 夜夜爽一区二区三区精品| 风流老熟女一区二区三区| 在线视频亚洲一区| 成人在线一区二区| 中文国产成人精品久久一区| 本免费AV无码专区一区| 日韩人妻无码一区二区三区综合部 | 天堂Av无码Av一区二区三区| 性色AV一区二区三区无码| 国产成人无码aa精品一区| 波多野结衣中文一区二区免费| 无码人妻精品一区二| 国产日韩AV免费无码一区二区三区| 精品国产一区二区三区AV性色| 亚洲一区二区三区AV无码| 人妻无码一区二区不卡无码av | 丰满岳乱妇一区二区三区| 99精品国产高清一区二区三区| 一区二区三区视频在线| 亚洲日韩国产一区二区三区在线|