麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

應(yīng)用VB4.0實(shí)現(xiàn)工業(yè)控制的實(shí)時(shí)曲線和歷史曲線

2019-11-18 17:50:12
字體:
供稿:網(wǎng)友
在大型的工業(yè)現(xiàn)場(chǎng)控制中,一般用DCS(集散控制系統(tǒng))來實(shí)現(xiàn)過程控制。在DCS中,實(shí)時(shí)曲線可顯示該控制點(diǎn)的當(dāng)前趨勢(shì),以監(jiān)測(cè)該點(diǎn)在現(xiàn)場(chǎng)工況變化的情況下的控制穩(wěn)定性,歷史曲線可觀察過去一段時(shí)間內(nèi)某一點(diǎn)的變化趨勢(shì),并供工藝人員分析工藝流程的穩(wěn)定性和故障原因。然而在小型的工業(yè)控制中,由于控制規(guī)模小,控制回路少,因此可用PC機(jī)就能完成整個(gè)過程控制,在實(shí)時(shí)曲線和歷史曲線方面,可用VB4.0就能實(shí)現(xiàn),并可與大型的DCS相媲美。
[實(shí)時(shí)曲線]
實(shí)時(shí)曲線反映的是現(xiàn)場(chǎng)數(shù)據(jù)的實(shí)時(shí)性和當(dāng)前趨勢(shì),因此在實(shí)現(xiàn)時(shí)需顯示曲線的動(dòng)態(tài)變化,參考DCS,當(dāng)前點(diǎn)在曲線的最右端顯示,而整個(gè)曲線動(dòng)態(tài)地向左移動(dòng)。

具體實(shí)現(xiàn)如下:
1、選擇需要顯示的窗體Form1,加入圖片框Picture1,根據(jù)實(shí)際需要設(shè)置圖片的大小并移到合適的位置,并在圖片的外面畫好量程----時(shí)間坐標(biāo)系;
2、在全局模塊中定義位塊傳輸API函數(shù)BitBlt()和全局變量:
DeclareFunctionBitBltLib"GDI32"(ByValhDestDCASLong,ByValXAsLong,ByValYAsLong,ByValnWidthAsLong,ByValnHeightAsLong,ByValhSrcDCAsLong,ByValxSrcAsLong,ByValySrcAsLong,ByValDrawStyleAsLong)AsLong
GobalSAsLong`量程
GobalLAsLong`上一次的縱坐標(biāo)值
GobalTAsInteger`上一次時(shí)間值(分)
3、PRivateSubForm1_Load()
Picture1.AutoRedraw=False`曲線不重畫
Picture1.ScaleMode=3`以象素方式(Pixel)
L=-1`設(shè)置初值
S=400
T=-1
EndSub
4、根據(jù)現(xiàn)場(chǎng)數(shù)據(jù)采集的采樣頻率,設(shè)置定時(shí)器Timer1的定時(shí)值,曲線移動(dòng)就

Timer1實(shí)現(xiàn):
PrivateSubTimer1_Time()
DimwAsLong,hAsLong,y1AsLong,DataAsLong
DimhBmpAshDC,ShowModeAsLong,iiAsLong,t1AsInteger
w=Picture1.Width
h=Picture1.Height
hBmp=Picture1.hDC
ShowMode=&HCC0020`ROP模式(復(fù)制)
Data=Get_RealDatabase()`從實(shí)時(shí)數(shù)據(jù)庫取當(dāng)前監(jiān)控值
y1=(S-Data)/S*h`根據(jù)量程轉(zhuǎn)變成具體坐標(biāo)
ii=BitBlt(hBmp,0,0,w-1,h,hBmp,1,0,ShowMode)`整個(gè)曲線右移一個(gè)像素點(diǎn)
Picture1.Line(w-1,y)-(w,y1),RGB(0,255,0)
y=y1
t1=Val(Mid$(Time$,3,2))
IfT<>t1Then`在曲線下方顯示時(shí)間(用分表示)
Picture1.CurrentX=w-16
Picture1.CurrentY=h-8
Picture1.PrintMid$(Time$,1,5)
T=t1
EndIf
EndSub
[歷史曲線]
歷史曲線反映的是過去一段時(shí)間內(nèi)某個(gè)監(jiān)測(cè)點(diǎn)的變化趨勢(shì),其曲線走向是從左向右方向發(fā)展的,與實(shí)時(shí)曲線走向正好相反。由于歷史數(shù)據(jù)庫保存的時(shí)間長,一般為一個(gè)月、三個(gè)月或者更長,因此其數(shù)據(jù)量特別大,在實(shí)現(xiàn)時(shí)只能顯示其中的一段曲線,而不能在圖片上一次畫好,否則其顯示速度將非常慢。

具體實(shí)現(xiàn)如下:
1、
在窗體Form2中加入圖片框Picture2,在圖片框的下方加入四個(gè)按鈕,分別為曲線右移4小時(shí)按鈕Command1、曲線右移8小時(shí)按鈕Command2、曲線左移4小時(shí)按鈕Command3和曲線左移8小時(shí)按鈕Command4。
2、設(shè)歷史曲線一分鐘存儲(chǔ)一個(gè)數(shù)據(jù),并設(shè)一個(gè)像素點(diǎn)畫一小段直線,因此對(duì)于8小時(shí)的曲線,圖片的寬度為480Pixel,而對(duì)于4個(gè)小時(shí)的曲線,則兩個(gè)像素點(diǎn)畫一小段直線,具體設(shè)置如下:
Picture2.ScaleMode=3:Picture2.AutoRedraw=False
Picture2.Width=480:Picture2.Height=120
3、在窗體級(jí)變量中定義以下變量:
DimSAsLong`被測(cè)點(diǎn)的量程
DimFileNoAsLong`歷史數(shù)據(jù)庫的記錄號(hào)
DimHtimeAsDate`被測(cè)點(diǎn)對(duì)應(yīng)的歷史時(shí)間
4、PrivateSubForm2_Load()
t$=FileDateTime("C:/HDB/HistoryData.dat")`獲得歷史數(shù)據(jù)庫存儲(chǔ)時(shí)間
Htime=TimeValue(Mid$(t$,Len(t$)-8,8))
Open"C:/HDB/HistoryData.dat"ForRandomAs#1Len=4
`打開歷史數(shù)據(jù)庫,
每個(gè)記錄存放一個(gè)單精度數(shù)
S=400`設(shè)置量程
EndSub
5、PrivateSubCommand1_Click()
`曲線右移4個(gè)小時(shí)
DimwAsLong.HAsLong,IAsLong,jAsLong
Dimy1AsLong,y2AsLong,yAsSingle
Picture2.Picture=LoadPicture("")`清曲線
w=Picture2.Width
h=Picture2.Height
Picture2.Line(0,0)-(w-1,h-20-1),RGB(127,127,127),B`用灰色在圖片上
畫網(wǎng)格
ForI=1To4
Picture2.Line(0,I*20)-(w-1,I*20),RGB(127,127,127)
NextI
ForI=1To7
Picture2.Line(I*60,0)-(I*60,h-20-1),RGB(127,127,127)
NextI
y1=-1
I=0
j=0
DoWhileNotEOF(#1)ANDI<w
Get#1,y
y2=(S-y)/S*h`根據(jù)量程轉(zhuǎn)換為具體坐標(biāo)值
Ify1<>-1Then
Picture2.Line(I,y1)-(I 2,y2),RGB(0,255,0)`用綠色畫曲線
I=I 2
y1=y2
EndIF
j=j 1
Ifj=60Then'顯示時(shí)間(用小時(shí)顯示)
Htime=TimeValue(Htime) TimeValue("01:00:00")
j=0
Picture2.CurrentX=I-10
Picture2.CurrentY=h-20
Picture2.PrintHour(Htime)
EndIf
EndDo
FileNo=Seek(#1)`獲得歷史數(shù)據(jù)庫的記錄號(hào)
EndSub
6、PrivateSubCommand3_Click()
`曲線左移4個(gè)小時(shí)
DimwAsLong.HAsLong,IAsLong,jAsLong
Dimy1AsLong,y2AsLong,yAsSingle
Picture2.Picture=LoadPicture("")`清曲線
w=Picture2.Width
h=Picture2.Height
Picture2.Line(0,0)-(w-1,h-20-1),RGB(127,127,127),B`用灰色在圖片上
畫網(wǎng)格
ForI=1To4
Picture2.Line(0,I*20)-(w-1,I*20),RGB(127,127,127)
NextI
ForI=1To7
Picture2.Line(I*60,0)-(I*60,h-20-1),RGB(127,127,127)
NextI
y1=-1
I=0
j=0
IfFileNo>240Then`記錄指針往前移240個(gè)記錄
FileNo=FileNo-240
Seek#1,FileNo
Htime=TimeValue(Htime)-TimeValue("04:00:00")`時(shí)間左移4個(gè)小時(shí)
EndIf
DoWhileNotEOF(#1)ANDI<w
Get#1,y
y2=(S-y)/S*h
Ify1<>-1Then
Picture2.Line(I,y1)-(I 2,y2),RGB(0,255,0)`用綠色畫曲線
I=I 2
y1=y2
EndIF
j=j 1
Ifj=60Then'顯示時(shí)間(用小時(shí)顯示)
Htime=TimeValue(Htime) TimeValue("01:00:00")
j=0
Picture2.CurrentX=I-10
Picture2.CurrentY=h-20
Picture2.PrintHour(Htime)
EndIf
EndDo
FileNo=Seek(#1)`獲得歷史數(shù)據(jù)庫的記錄號(hào)
EndSub
至于曲線左移8小時(shí)和右移8小時(shí),可以參考上述的方法,在畫兩點(diǎn)之間的直線時(shí),以一個(gè)像素點(diǎn)為一小段直線,這里不一一舉例。->


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 91九色国产视频 | 日本高清黄色片 | 国产欧美一区二区三区免费看 | 国产免费永久在线观看 | 逼片视频 | 性爱视频免费 | 黄色网址在线免费播放 | 欧美国产综合视频 | 一级毛片免费一级 | 国产porn在线 | 看国产一级毛片 | 91成人免费在线观看 | 毛片视频在线免费观看 | 最新一区二区三区 | 激情综合在线 | 欧洲成人精品 | 成人男男视频拍拍拍在线观看 | 精品久久久一 | 欧美成人性色 | 久久撸视频 | 一级裸体视频 | 亚洲啊v在线观看 | 国产精品视频不卡 | 日本残忍极度灌浣肠视频 | 久久久中文| 日韩精品久久久久久久九岛 | 日韩黄站| 最新中文字幕在线视频 | 日韩视频一区二区三区四区 | 视频一区二区国产 | 黄色片视频免费观看 | 久久久久国产一区二区三区不卡 | 欧美视频99| 成人网在线观看 | 伊人一二三四区 | 国产精品视频久久久 | 日韩视频在线观看免费视频 | 久久6国产 | 2017亚洲男人天堂 | 91精品国产综合久久久动漫日韩 | 久久精品视频在线免费观看 |