當(dāng)前位置:自動(dòng)化網(wǎng)>北京世紀(jì)長(zhǎng)秋科技有限公司門戶>應(yīng)用案例>世紀(jì)星控件DBComm:小塊兒有大“智慧”

          世紀(jì)星控件DBComm:小塊兒有大“智慧”

          發(fā)布時(shí)間:2010-12-16 11:06   類型:應(yīng)用案例   人瀏覽

          1 引言

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

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

          2 世紀(jì)星數(shù)據(jù)交換標(biāo)準(zhǔn)控件——DBComm

            世紀(jì)星提供標(biāo)準(zhǔn)控件 DBComm.ocx 與外部第三方程序進(jìn)行數(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ù)讀取

            也就是說(shuō),外部程序可以按時(shí)間和變量名稱讀取世紀(jì)星的歷史數(shù)據(jù),相關(guān)函數(shù)如下:
          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)用

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

          圖 1

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

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

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

            電器原理圖如下圖所示:

          圖 2

            上圖是一個(gè)加熱控制系統(tǒng)。PLC主模塊負(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.2 世紀(jì)星監(jiān)控程序

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

          圖 3

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

            * 創(chuàng)建一個(gè)VB標(biāo)準(zhǔn)工程。
            * Projiec-Components-DBComm ActiveX Control- Moudle。
            * 初始化DBComm
             dbcomm_pid.InitComm
            * 從世紀(jì)星組態(tài)軟件讀取溫度設(shè)定和實(shí)際值
             SV= dbcomm_pid.tagReadFloat ("sv")
             PV= dbcomm_pid.tagReadFloat ("pv")
            * 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 = 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中計(jì)算的加熱時(shí)間(時(shí)間百分比,x%*1s),對(duì)PLC的Y0 進(jìn)行輸出控制。

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

          圖 4

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

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

          4 總結(jié)

            綜上所述,世紀(jì)星所提供的DBComm控件使用方便,為第三方程序提供了完備的數(shù)據(jù)交換接口。另外,DBComm控件還可以訪問(wèn)世紀(jì)星組態(tài)軟件的歷史數(shù)據(jù)庫(kù),下次有機(jī)會(huì)我們?cè)僭斒觥?/P>



























          本文地址:http://m.xznet110.com/apply/d_1nrutga2l1qmg_1.html

          拷貝地址

          免責(zé)聲明:本文僅代表作者個(gè)人觀點(diǎn),與中國(guó)自動(dòng)化網(wǎng)無(wú)關(guān)。其原創(chuàng)性以及文中陳述文字和內(nèi)容未經(jīng)本站證實(shí),對(duì)本文以及其中全部或者部分內(nèi)容、文字的真實(shí)性、完整性、及時(shí)性本站不作任何保證或承諾,請(qǐng)讀者僅作參考,并請(qǐng)自行核實(shí)相關(guān)內(nèi)容!

          留言反饋
          • 評(píng)價(jià):

          • 關(guān)于:

          • 聯(lián)系人:

          • 聯(lián)系電話:

          • 聯(lián)系郵箱:

          • 需求意向:

          • 驗(yàn)證碼:

            看不清楚?

          • 在線咨詢
          主站蜘蛛池模板: 强开小婷嫩苞又嫩又紧韩国视频| 欧美老熟妇乱子伦视频| 国产精品久久香蕉免费播放| 一级人做人a爰免费视频| 最近中文字幕高清中文字幕电影二| 免费看美女让人桶尿口| 高清伦理电影在线看| 国产精品美女自在线观看免费| 一级毛片一级毛片一级级毛片| 日韩在线第三页| 亚洲日韩精品国产一区二区三区| 精品国产乱码久久久久久郑州公司| 国产好痛疼轻点好爽的视频| 91大神亚洲影视在线| 少妇人妻在线视频| 久久久精品午夜免费不卡| 欧美人与动人物xxxx| 交换交换乱杂烩系列yy| 美女脱了内裤张开腿让男人桶网站 | 97久久超碰国产精品2021| 成人激爽3d动漫网站在线| 久久精品久久久久观看99水蜜桃| 欧美系列第一页| 免费的一级黄色片| 老师办公室被吃奶好爽在线观看 | 久久久噜噜噜久久熟女AA片| 欧美在线小视频| 亚洲黄色网址在线观看| 精品精品国产高清a毛片| 国产午夜精品一区二区三区漫画| 伊人影视在线观看日韩区| 夜夜燥天天燥2022| 一边摸一边叫床一边爽| 日本三级免费观看| 九九热精品免费| 欧美和拘做受全程看| 亚洲精品国产综合久久久久紧| 精品久久久久香蕉网| 国产AV国片精品一区二区| 高贵教师被同学调教11| 国产私拍福利精品视频网站|