I/O 設(shè)備

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

ainet.cn   2009年12月09日
 

  1  引言

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

  當(dāng)然實(shí)現(xiàn)這種制有很多傳統(tǒng)的方法,如使用文件共享數(shù)據(jù)、使用DDE數(shù)據(jù)制。傳統(tǒng)的方法雖然能夠達(dá)到數(shù)據(jù)交換的目的,但其使用方法較為煩瑣,使用文件共享數(shù)據(jù)就需要在和外部程序內(nèi)部進(jìn)行文件讀取操作,這樣不但麻煩而且處理速度也相對(duì)較慢,在要求實(shí)時(shí)性較好的工程中就顯得力不從心。為了讓第三方程序方便地讀寫世紀(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)控件 與外部第三方程序進(jìn)行數(shù)據(jù)交換,數(shù)據(jù)交換內(nèi)容包括:

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

  外部程序可以讀取世紀(jì)星的系統(tǒng)變量(包括系統(tǒng)離散、系統(tǒng)整數(shù)、系統(tǒng)實(shí)數(shù)和系統(tǒng)信息)、內(nèi)存變量(包括內(nèi)存離散、內(nèi)存整數(shù)、內(nèi)存實(shí)數(shù)和內(nèi)存信息)和IO變量(包括IO離散、IO整數(shù)、IO實(shí)數(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í)數(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í)數(shù)變量的當(dāng)前值

  tagWriteMess(Tagname, String) 改寫世紀(jì)星信息變量的當(dāng)前值

  InitComm() DBComm初始化函數(shù)

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

  外部程序可以按時(shí)間和變量名稱讀取世紀(jì)星的歷史數(shù)據(jù)。

  TimeUINT=ConvertTime(Year, Month, Day, Hour, Minute, Second)

  時(shí)間轉(zhuǎn)換函數(shù)

  DiscResult=GetHistoryData (Tagname,StartTime,EndTime,DataArray,SizeOfArray, Interval)

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

  3  DBComm在VB6.0中的應(yīng)用

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

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

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

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

  需要軟件:世紀(jì)星7.22、VB6.0。

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

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

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

  3.1 世紀(jì)星監(jiān)控程序

  將控制電路配置好,將上位機(jī)連接到。開發(fā)世紀(jì)星監(jiān)控程序,配置相應(yīng)的串口驅(qū)動(dòng)、串口參數(shù),創(chuàng)建的監(jiān)控畫面如下:

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

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

  * 創(chuàng)建一個(gè)VB標(biāo)準(zhǔn)工程。

  * Projiec—Components—DBComm ActiveX Control Moudle。

  * 初試化DBComm

  mm

 ?。?從世紀(jì)星讀取溫度設(shè)定和實(shí)際值

  SV= dFloat ("sv")

  PV= dFloat ("pv")

 ?。?nbsp; y0輸出時(shí)間計(jì)算函數(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 = nt - NextPoint

  or = or + Error

  dError = ror - ror

  ror = ror

  ror = Error

  PIDCalc = pp.P * Error + pp.i * or + pp.D * dError

  End Function

  3.3 加熱輸出控制

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

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

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

  3.4實(shí)驗(yàn)結(jié)果

  本工程利用世紀(jì)星采集溫度實(shí)際值(從),在中設(shè)定溫度的目標(biāo)值,在VB6.0程序中計(jì)算輸出功率的百分比,VB再將加熱時(shí)間(Y0時(shí)間)傳遞給,再傳給,控制加熱。

  由于采用了粗糙的PID,所以控溫精度在正負(fù)1度以內(nèi)(精度不在本文研究范圍內(nèi)),但是VB通過(guò)DBComm和世紀(jì)星實(shí)時(shí)交換數(shù)據(jù)功能良好。

  4 總結(jié)

  綜上所述,世紀(jì)星所提供的DBComm 控件使用方便,為第三方程序提供了完備的數(shù)據(jù)交換接口。另外DBComm 控件還可以訪問(wèn)世紀(jì)星的歷史數(shù)據(jù)庫(kù),本篇暫不詳述。

(轉(zhuǎn)載)

標(biāo)簽:組態(tài)軟件 我要反饋 
泰科電子ECK、ECP系列高壓直流接觸器白皮書下載
世強(qiáng)
優(yōu)傲機(jī)器人下載中心
億萬(wàn)克
專題報(bào)道