999国内精品永久免费视频,色偷偷9999www,亚洲国产成人爱av在线播放,6080亚洲人久久精品,欧美超高清xxxhd

首頁(yè) 新聞 工控搜 論壇 廠(chǎng)商論壇 產(chǎn)品 方案 廠(chǎng)商 人才 文摘 下載 展覽
中華工控網(wǎng)首頁(yè)
  P L C | 變頻器與傳動(dòng) | 傳感器 | 現(xiàn)場(chǎng)檢測(cè)儀表 | 工控軟件 | 人機(jī)界面 | 運(yùn)動(dòng)控制
  D C S | 工業(yè)以太網(wǎng) | 現(xiàn)場(chǎng)總線(xiàn) | 顯示調(diào)節(jié)儀表 | 數(shù)據(jù)采集 | 數(shù)傳測(cè)控 | 工業(yè)安全
  電 源 | 嵌入式系統(tǒng) | PC based | 機(jī)柜箱體殼體 | 低壓電器 | 機(jī)器視覺(jué)
紫金橋?qū)崟r(shí)數(shù)據(jù)庫(kù)的應(yīng)用——通過(guò)函數(shù)寫(xiě)入數(shù)據(jù)到關(guān)系數(shù)據(jù)庫(kù)典型案例
收藏本文     查看收藏

         某天然氣公司的生產(chǎn)信息平臺(tái),是一個(gè)生產(chǎn)運(yùn)行關(guān)鍵數(shù)據(jù)統(tǒng)計(jì)和展示的平臺(tái),其中的裝置關(guān)鍵參數(shù)合格率、設(shè)備運(yùn)行狀態(tài)、振動(dòng)設(shè)備報(bào)警監(jiān)測(cè)這三部分,由紫金橋?qū)崟r(shí)數(shù)據(jù)庫(kù)提供數(shù)據(jù)。
   客戶(hù)在功能上要求是這樣的:
  1、裝置關(guān)鍵參數(shù)合格率,報(bào)警上下限值要從指定的關(guān)系數(shù)據(jù)庫(kù)表中讀取,該表由工藝人員根據(jù)需要修改報(bào)警上下限的限值,紫金橋軟件根據(jù)此限值計(jì)算裝置關(guān)鍵參數(shù)的合格率,計(jì)算完成后,再存入關(guān)系數(shù)據(jù)庫(kù)指定的表中。
  2、設(shè)備運(yùn)行狀態(tài),實(shí)時(shí)值由信息平臺(tái)實(shí)時(shí)讀取,歷史值要定時(shí)存入關(guān)系數(shù)據(jù)庫(kù)指定的表中。
  3、設(shè)備振動(dòng)報(bào)警監(jiān)測(cè),實(shí)時(shí)值由信息平臺(tái)實(shí)時(shí)讀取,不需要存儲(chǔ)歷史值。
   設(shè)備運(yùn)行狀態(tài)以及設(shè)備振動(dòng)監(jiān)測(cè)的實(shí)時(shí)數(shù)據(jù)是通過(guò)開(kāi)放OPC Server接口,由對(duì)方直接實(shí)時(shí)采集,裝置關(guān)鍵參數(shù)的合格率以及設(shè)備運(yùn)行狀態(tài)歷史兩部分的數(shù)據(jù),是通過(guò)紫金橋?qū)崟r(shí)數(shù)據(jù)庫(kù)軟件,將歷史數(shù)據(jù)寫(xiě)入到SQL Server數(shù)據(jù)庫(kù)中,再由生產(chǎn)信息平臺(tái)系統(tǒng)從SQL Server中按照需要讀取。
   系統(tǒng)使用的軟件版本:紫金橋?qū)崟r(shí)數(shù)據(jù)庫(kù)軟件V6.5。
  功能窗口截圖如下,由于該窗口不需要展示,故未做任何美化:

  各部分功能說(shuō)明:
  1-報(bào)警時(shí)間統(tǒng)計(jì)組件,用于統(tǒng)計(jì)位號(hào)的累計(jì)報(bào)警時(shí)間,以便計(jì)算合格率。
  2-設(shè)備狀態(tài)實(shí)時(shí)報(bào)表,實(shí)時(shí)顯示設(shè)備狀態(tài)值,通過(guò)腳本將對(duì)應(yīng)位號(hào)的值存儲(chǔ)到數(shù)據(jù)庫(kù)中。
  3-位號(hào)的報(bào)警上下限值報(bào)表,從關(guān)系數(shù)據(jù)庫(kù)讀取參數(shù)的報(bào)警限值。
  4-手動(dòng)讀取合格率報(bào)警限值按鈕,點(diǎn)擊后讀取關(guān)系數(shù)據(jù)庫(kù)的報(bào)警限值。
  5-查看當(dāng)天已經(jīng)寫(xiě)入數(shù)據(jù)的報(bào)表,用來(lái)查看數(shù)據(jù)庫(kù)中已經(jīng)寫(xiě)入的數(shù)據(jù)。
  6-查看設(shè)備狀態(tài)/合格率數(shù)據(jù)按鈕。點(diǎn)擊按鈕分別查看最近一天的設(shè)備狀態(tài)或者合格率數(shù)據(jù)。
  窗口最下方的部分即5、6兩塊實(shí)際上不是功能必須的,只是方便開(kāi)發(fā)者自己查看遠(yuǎn)程數(shù)據(jù)庫(kù)中的數(shù)據(jù)是否成功存儲(chǔ)。
  本文主要介紹“裝置關(guān)鍵參數(shù)合格率”這部分的功能,“設(shè)備運(yùn)行狀態(tài)”部分大同小異,“設(shè)備振動(dòng)監(jiān)測(cè)”部分不需要向關(guān)系數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù),所以這兩部分不再過(guò)多敘述。接
  下來(lái)開(kāi)始說(shuō)明關(guān)鍵參數(shù)合格率功能部分:
  1、窗口中新增報(bào)警時(shí)間統(tǒng)計(jì)組件,命名為Alarm1,在組件中添加需要進(jìn)行統(tǒng)計(jì)的位號(hào),設(shè)置位號(hào)使用自身報(bào)警限值。
  2、點(diǎn)組態(tài)中,新增‘報(bào)表關(guān)系數(shù)據(jù)源點(diǎn)’,連接要讀取數(shù)據(jù)的關(guān)系數(shù)據(jù)庫(kù)。
  3、窗口中新增自由報(bào)表,關(guān)系數(shù)據(jù)庫(kù)連接里面,連接新建的報(bào)表關(guān)系數(shù)據(jù)源點(diǎn),并將報(bào)表命名。本案例中,該報(bào)表名為Fr1 。
  4、建立表模板。
  使用紫金橋軟件預(yù)定義的SQL函數(shù)向關(guān)系數(shù)據(jù)庫(kù)插入數(shù)據(jù),首先要按照固定表結(jié)構(gòu)在關(guān)系數(shù)據(jù)庫(kù)先創(chuàng)建表, SQL函數(shù)無(wú)法直接生成表,而是需要一個(gè)給定的模板,按照模板進(jìn)行表的創(chuàng)建,這就需要事先定義好一個(gè)表模板。
  下圖是合格率數(shù)據(jù)表要使用的表模板,要?jiǎng)?chuàng)建的表一共有4個(gè)字段,分別是‘日期、位號(hào)名、值、權(quán)重’,對(duì)應(yīng)的字段名分別是‘UpdateTime、TagName、TagValue、TagLevel’,權(quán)重這個(gè)字段是客戶(hù)要求的。

  合格率表模版
   創(chuàng)建表使用函數(shù)SQLCreateTable(),這里定義一個(gè)窗口整型變量w_cID,供SQL函數(shù)使用。關(guān)于紫金橋?qū)崟r(shí)數(shù)據(jù)庫(kù)預(yù)定義的SQL函數(shù)的用法,請(qǐng)讀者自行查看幫助,這里不再詳述。
  一旦數(shù)據(jù)表創(chuàng)建完畢,表模板就不再需要了。基于此原因,最開(kāi)始的數(shù)據(jù)表是使用按鈕創(chuàng)建的,創(chuàng)建完畢后,按鈕就刪除了,所以窗口中沒(méi)有創(chuàng)建數(shù)據(jù)表的腳本。
   5、建立綁定表。
  數(shù)據(jù)表創(chuàng)建完畢后,接下來(lái)就是向表內(nèi)插入數(shù)據(jù)了。要向關(guān)系數(shù)據(jù)庫(kù)表內(nèi)插入數(shù)據(jù),需要使用紫金橋?qū)崟r(shí)數(shù)據(jù)庫(kù)的‘綁定表’,綁定表里的字段名設(shè)置要和表模版里的字段完全一致,否則插入數(shù)據(jù)時(shí)會(huì)失敗。
  另外,需要建立4個(gè)中間變量(圖中變量名部分),分別對(duì)應(yīng)數(shù)據(jù)表的4個(gè)字段,供綁定表使用,具體用法在后面腳本部分會(huì)詳細(xì)介紹。

  合格率綁定表
  6、腳本。
   由于紫金橋?qū)崟r(shí)數(shù)據(jù)庫(kù)6.5版軟件里,窗口周期執(zhí)行腳本的周期不能大于15分鐘,所以為了實(shí)現(xiàn)需要的功能,定義以下整型窗口變量:w_cID、w_t1、w_t2、w_t3、w_t4、w_TBegin,具體使用在后面的腳本中說(shuō)明。
  進(jìn)入窗口:
   進(jìn)入窗口后,執(zhí)行下面腳本,前三行是給w_t1、w_t2、w_t3賦值為次日零點(diǎn)的時(shí)間;第五行w_TBegin賦值為當(dāng)日零點(diǎn)的時(shí)間,是報(bào)警統(tǒng)計(jì)組件執(zhí)行統(tǒng)計(jì)的起始時(shí)間;第六行連接數(shù)據(jù)存儲(chǔ)所使用的數(shù)據(jù)庫(kù),由于連接字符涉及到客戶(hù)信息,所以這里去掉了,讀者可以自己查看幫助中關(guān)于紫金橋軟件內(nèi)置SQL函數(shù)的用法,里面有關(guān)于連接數(shù)據(jù)庫(kù)的詳細(xì)說(shuō)明。w_t4賦值為次日上午8:30分的時(shí)間,設(shè)備狀態(tài)數(shù)據(jù)存儲(chǔ)腳本使用,與合格率數(shù)據(jù)存儲(chǔ)無(wú)關(guān)。w
  _t1 = LongTime(StrLeft(StrTime($Curtime,0),10) + " 00:00:00") + 86400;
  w_t2 = w_t1;
  w_t3 = w_t1;
  w_t4 = LongTime(StrLeft(StrTime($Curtime,0),10) + " 08:30:00") + 86400;
  w_TBegin = LongTime(StrLeft(StrTime($Curtime,0),10) + " 00:00:00");
  SQLConnect(w_cID,"此部分是數(shù)據(jù)庫(kù)服務(wù)器連接字符串,不便公開(kāi)");
  周期執(zhí)行:
  
首先,每天凌晨前5分鐘,從關(guān)系數(shù)據(jù)庫(kù)讀取關(guān)鍵參數(shù)的報(bào)警限值到報(bào)表Fr1中。由于報(bào)警限值由工藝人員維護(hù),可能根據(jù)工藝需要有修改,所以每天計(jì)算合格率之前要重新讀取。腳本如下:
   if $Curtime >= w_t1-300 && $Curtime < w_t1-240 then
  w_t1 = $Curtime + 86400;
  #Fr1.SqlSelectCmd("select 位號(hào),指標(biāo)級(jí)別,下限,上限 from TM_裝置關(guān)鍵控制參數(shù)");
  Delay(1500);
   for i = 1 to #Fr1.RowCount()+1
  #本地.SetDataStr(#Fr1.Txt(1,i)+".EU",#Fr1.Txt(2,i));
  #本地.SetDataReal(#Fr1.Txt(1,i)+".EULO",#Fr1.Val(3,i));
  #本地.SetDataReal(#Fr1.Txt(1,i)+".EUHI",#Fr1.Val(4,i));
  #next
  #本地.RegUpdate();
  endif
  腳本第1行是判斷本段腳本執(zhí)行的時(shí)間,當(dāng)系統(tǒng)時(shí)間處于零點(diǎn)前5分鐘至前4分鐘這段時(shí)間內(nèi),開(kāi)始執(zhí)行腳本;
  第2行是將變量w_t1的值增加一天的時(shí)間,以便下次執(zhí)行的時(shí)間是在下一天的同一時(shí)間;
  第3行是報(bào)表Fr1從關(guān)系數(shù)據(jù)庫(kù)的表中讀取報(bào)警限值;
  第4行是延遲時(shí)間,以便報(bào)表Fr1能夠完全讀取表中的數(shù)據(jù);
  第5~9行循環(huán),將報(bào)表Fr1中的報(bào)警限值以及權(quán)重設(shè)置到對(duì)應(yīng)的位號(hào),第6行是設(shè)置權(quán)重,第7行是設(shè)置報(bào)警下限,第8行是設(shè)置報(bào)警上限;
  第10行,刷新第6、7、8行操作以后的點(diǎn)的信息。
   讀取報(bào)警限值后,接下來(lái)就是根據(jù)報(bào)警限值計(jì)算位號(hào)的合格率了。下面這段腳本是判斷系統(tǒng)時(shí)間在零點(diǎn)前4分鐘至3分鐘之間,開(kāi)始執(zhí)行,同樣把變量w_t2的值增加一天,即與w_t1相同,然后開(kāi)始報(bào)警組件進(jìn)行報(bào)警時(shí)間的統(tǒng)計(jì),統(tǒng)計(jì)的時(shí)間是一天,即86400秒。
  if $Curtime >= w_t2-240 && $Curtime < w_t2-180 then
  #w_t2 = w_t1;
  #Alarm1.Start(w_TBegin,86400,1);
  endif
  在報(bào)警統(tǒng)計(jì)組件完成統(tǒng)計(jì)后,接下來(lái)就需要將統(tǒng)計(jì)的數(shù)據(jù)提取出來(lái),然后計(jì)算,再把計(jì)算結(jié)果存入數(shù)據(jù)庫(kù)的表中了。
  if $Curtime > w_t3-60 && $Curtime <= w_t3 then
  w_t3 = w_t1;
  for i = 0 to #Alarm1.GetTagCount()
  Bind_TagValue = 1 - (#Alarm1.GetCellHi(0,i) + #Alarm1.GetCellLow(0,i))/86400;
  Bind_TagName = #Alarm1.GetTag(i) + ".PV";
  Bind_StrTime = StrTime($Curtime,1);
  for j = 0 to #Fr1.RowCount()
  if #Alarm1.GetTag(i) == #Fr1.Txt(1,j+1) then
  Bind_TagLevel = #Fr1.Txt(2,j+1)
  endif
  next
  SQLInsert(w_cID,"XHQ_HGL","XHQ_BindHGL");
  next
  endif
  這部分腳本就是向數(shù)據(jù)庫(kù)表內(nèi)寫(xiě)入數(shù)據(jù)了。
  第1行仍然是判斷時(shí)間,當(dāng)時(shí)間達(dá)到零點(diǎn)前一分鐘時(shí),開(kāi)始執(zhí)行腳本,首先還是將時(shí)間變量w_t3增加一天,與w_t1相同;
  第3~13行循環(huán),將報(bào)警組件中所有位號(hào)的值逐個(gè)進(jìn)行計(jì)算,然后存入數(shù)據(jù)庫(kù)的表中。
  第4行是把報(bào)警組件第i列的位號(hào)報(bào)警上限時(shí)間和報(bào)警下限時(shí)間求和,然后除以一天的時(shí)間,得到不合格率,再用1減去不合格率得到合格率的數(shù)值,賦給綁定表使用的變量;
  第5行是把報(bào)警組件第i列的位號(hào)賦給綁定表變量;
  第6行是把當(dāng)前時(shí)間賦給綁定表變量;
  第7~11行,是在報(bào)表Fr1中查找當(dāng)前第i列位號(hào)的權(quán)重,然后賦給綁定表變量;
  第12行,4個(gè)綁定表變量都已經(jīng)賦值,此行使用紫金橋軟件的SQL函數(shù),將綁定表變量的值插入到關(guān)系數(shù)據(jù)庫(kù)表中。
  至此,完成報(bào)警組件第i列的一個(gè)循環(huán),直至報(bào)警組件中所有位號(hào)的合格率統(tǒng)計(jì)值都插入數(shù)據(jù)表后,循環(huán)完成。
  退出窗口:
  這里只有一行腳本,就是當(dāng)退出窗口時(shí),斷開(kāi)與關(guān)系數(shù)據(jù)庫(kù)的連接。
  SQLDisconnect(w_cID);
   整個(gè)腳本的關(guān)鍵,就是周期執(zhí)行部分,這里使用了一個(gè)小技巧,由于紫金橋?qū)崟r(shí)數(shù)據(jù)庫(kù)6.5版,周期執(zhí)行腳本的周期不能大于15分鐘,所以這里使用一個(gè)整型變量,通過(guò)該變量的值與系統(tǒng)當(dāng)前時(shí)間比較,只有符合條件才能執(zhí)行腳本,否則不執(zhí)行,這就保證了腳本只在每天指定的零點(diǎn)附近執(zhí)行。
  另外,為了保證每一部分的腳本能夠完全執(zhí)行完畢,并且不在時(shí)間上有交叉沖突,所以設(shè)置3個(gè)不同的時(shí)間變量,并且在不交叉的時(shí)間執(zhí)行。而且通過(guò)這樣的方法,不會(huì)影響其他需要頻繁執(zhí)行的周期腳本正常運(yùn)行。
   總結(jié):
  本例中使用了報(bào)表關(guān)系數(shù)據(jù)源點(diǎn)與自由報(bào)表相結(jié)合,讀取關(guān)系數(shù)據(jù)庫(kù)表中的數(shù)據(jù),這樣的好處是操作簡(jiǎn)單,不需要寫(xiě)過(guò)多腳本,但是無(wú)法向數(shù)據(jù)庫(kù)表中寫(xiě)入數(shù)據(jù)。
  又使用了紫金橋?qū)崟r(shí)數(shù)據(jù)庫(kù)軟件預(yù)定義的SQL函數(shù),向關(guān)系數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)。SQL函數(shù)的優(yōu)點(diǎn)是功能全面,幾乎能夠完成對(duì)關(guān)系數(shù)據(jù)庫(kù)表的所有操作,包括查詢(xún)、插入、刪除、建表、刪表等等;缺點(diǎn)就是操作相對(duì)自由報(bào)表和報(bào)表關(guān)系數(shù)據(jù)源點(diǎn)的結(jié)合要繁瑣一些,需要建立表模版、綁定表,還要手動(dòng)寫(xiě)一些腳本等。


 

狀 態(tài): 離線(xiàn)

公司簡(jiǎn)介
產(chǎn)品目錄
供應(yīng)信息

公司名稱(chēng): 紫金橋軟件技術(shù)有限公司
聯(lián) 系 人: 李磊
電  話(huà): 0459-8151391-808
傳  真: 0459-8151391-804
地  址: 大慶市高新區(qū)服務(wù)外包產(chǎn)業(yè)園C-1座817室
郵  編: 163316
主  頁(yè):
 
該廠(chǎng)商相關(guān)解決方案:
跨平臺(tái)實(shí)時(shí)數(shù)據(jù)庫(kù)歷史回放功能介紹
跨平臺(tái)實(shí)時(shí)數(shù)據(jù)庫(kù)如何實(shí)現(xiàn)表格的保存和讀取
跨平臺(tái)實(shí)時(shí)數(shù)據(jù)庫(kù)腳本系統(tǒng)介紹
基于紫金橋?qū)崟r(shí)數(shù)據(jù)庫(kù)實(shí)現(xiàn)焦化廠(chǎng)生產(chǎn)能源調(diào)度信息管理系統(tǒng)
紫金橋聲音報(bào)警實(shí)現(xiàn)的幾種方式
基于紫金橋監(jiān)控組態(tài)軟件的天然氣計(jì)量系統(tǒng)
基于紫金橋軟件抄表系統(tǒng)解決方案
火狐瀏覽器紫金橋軟件Web發(fā)布(open in ie方式)
紫金橋軟件在供水泵站遠(yuǎn)程監(jiān)控系統(tǒng)中的應(yīng)用
基于紫金橋?qū)崟r(shí)數(shù)據(jù)庫(kù)實(shí)現(xiàn)焦化廠(chǎng)生產(chǎn)能源調(diào)度信息管理系統(tǒng)
紫金橋組態(tài)軟件在除塵控制系統(tǒng)中的應(yīng)用
紫金橋軟件在水文監(jiān)測(cè)系統(tǒng)中的應(yīng)用
更多方案...
立即發(fā)送詢(xún)問(wèn)信息在線(xiàn)聯(lián)系該解決方案廠(chǎng)商:
用戶(hù)名: 密碼: 免費(fèi)注冊(cè)為中華工控網(wǎng)會(huì)員
請(qǐng)留下您的有效聯(lián)系方式,以方便我們及時(shí)與您聯(lián)絡(luò)

關(guān)于我們 | 聯(lián)系我們 | 廣告服務(wù) | 本站動(dòng)態(tài) | 友情鏈接 | 法律聲明 | 不良信息舉報(bào)
工控網(wǎng)客服熱線(xiàn):0755-86369299
版權(quán)所有 中華工控網(wǎng) Copyright©2022 Gkong.com, All Rights Reserved