• <blockquote id="fficu"><optgroup id="fficu"></optgroup></blockquote>

    <table id="fficu"></table>

    <sup id="fficu"></sup>
    <output id="fficu"></output>
    1. 20240703
      關(guān)注中國自動(dòng)化產(chǎn)業(yè)發(fā)展的先行者!
      工業(yè)智能邊緣計算2024年會(huì )
      2024
      2024中國自動(dòng)化產(chǎn)業(yè)年會(huì )
      2023年工業(yè)安全大會(huì )
      OICT公益講堂
      當前位置:首頁(yè) >> 案例 >> 案例首頁(yè)

      案例頻道

      PI實(shí)時(shí)數據庫簡(jiǎn)單開(kāi)發(fā)的探索
      • 企業(yè):    
      • 點(diǎn)擊數:1660     發(fā)布時(shí)間:2023-08-30 13:04:16
      • 分享到:
      本文簡(jiǎn)單介紹了PI實(shí)時(shí)數據庫的相關(guān)信息,然后利用PI-SDK、PIAPI技術(shù)對PI實(shí)時(shí)數據庫進(jìn)行讀寫(xiě)的一些方法,從而實(shí)現在PI實(shí)時(shí)數據庫的基礎上進(jìn)行簡(jiǎn)單的二次開(kāi)發(fā)的初步探索。

      文獻標識碼:B文章編號:1003-0492(2023)08-066-04中圖分類(lèi)號:TP392

      ★朱國海(浙江巨化熱電有限公司,浙江衢州324000)

      關(guān)鍵詞:PI;PI-SDK;PI-API;接口

      1 引言

      隨著(zhù)計算機信息技術(shù)的飛速發(fā)展,電廠(chǎng)都已經(jīng)實(shí)現了底層生產(chǎn)用DCS系統、上層管理用MIS系統。為了實(shí)現上層MIS系統和底層DCS系統的溝通,SIS系統(Supervisory Information System in Plant Level)應運而生。隨著(zhù)SIS系統的產(chǎn)生和發(fā)展,逐漸為多數業(yè)內人士所接受,電廠(chǎng)信息化已經(jīng)走向SIS+MIS時(shí)代。SIS系統和MIS系統是電廠(chǎng)實(shí)現電力生產(chǎn)過(guò)程自動(dòng)化和管理現代化的兩種不可缺少的工具,它們是相輔相成的。

      2 SIS系統和PI實(shí)時(shí)數據庫

      實(shí)時(shí)數據庫是SIS系統最基礎、最重要的核心組成部分。說(shuō)到實(shí)時(shí)數據庫系統,目前的產(chǎn)品有很多,PI(Plant Information System)是由美國OSI Software公司開(kāi)發(fā)的一套商品化軟件應用平臺,由于采用基于“螺旋門(mén)”的專(zhuān)利壓縮技術(shù)而使得存儲效率非常高。PI可在線(xiàn)存貯每個(gè)工藝過(guò)程點(diǎn)的多年數據。它提供了清晰、精確的操作情況畫(huà)面,用戶(hù)既可瀏覽工廠(chǎng)當前的生產(chǎn)情況,也可回顧過(guò)去的生產(chǎn)情況,所以PI在國內擁有很大的市場(chǎng)占有率,特別是在電力系統得到廣泛的運用。

      電廠(chǎng)建設SIS系統是為了可以開(kāi)發(fā)各種應用,從而使信息系統發(fā)揮出更大的作用。PI系統本身客戶(hù)端的應用程序可使用戶(hù)很容易對工廠(chǎng)實(shí)施管理,諸如改進(jìn)工藝,TQC,故障預防維護等。通過(guò)PI可集成產(chǎn)品計劃、維護管理、專(zhuān)家系統、LIMS和優(yōu)化/建模等應用程序,PI在業(yè)務(wù)管理和實(shí)時(shí)生產(chǎn)之間起到橋梁作用。同時(shí)PI數據庫也有完善的二次開(kāi)發(fā)手段,包括應用開(kāi)發(fā)接口和數據庫訪(fǎng)問(wèn)手段等。PI提供了對OPC、ODBC以及OLEDB等的支持。另外,它還有C/C++、VB環(huán)境下的SDK開(kāi)發(fā)工具包和PI-API接口函數庫,利用PI-API和PISDK,用戶(hù)可以比較方便地進(jìn)行二次開(kāi)發(fā)。

      3 PI-SDK和PI-API

      某熱電廠(chǎng)雖然已經(jīng)建立了全廠(chǎng)的網(wǎng)絡(luò )和PI實(shí)時(shí)數據庫,但上層的應用大多處于起步階段,還沒(méi)有多少成熟的應用,本文打算初步探索下PI-SDK和PI-API技術(shù),為今后二次開(kāi)發(fā)做準備。

      PI-API(PI Application Programming Interface)即PI應用程序接口,包含很多函數可以用來(lái)讀寫(xiě)數據庫。利用這些函數,用VB、C++或C#、甚至連PI-PROCESSBOOK中內嵌的VBA都可以對PI數據庫進(jìn)行數據讀寫(xiě)。

      PI-SDK(PI Software Development Kit)即基于面向對象的訪(fǎng)問(wèn)PI數據庫的軟件開(kāi)發(fā)工具包。作者個(gè)人感覺(jué)PI-SDK是把PI-API封裝了一下,讓開(kāi)發(fā)人員更容易連接數據庫進(jìn)行讀寫(xiě)。兩種方式本文都嘗試了一下,后面會(huì )分別探討。

      4 PI-API的基本應用

      在開(kāi)始編程之前,首先需要安裝OSI提供的PI-API,安裝后會(huì )在系統的SYSTEM32目錄中生成PIAPI32.DLL和PILOG32.DLL,在PI系統目錄下的INCLUDE目錄中生成PIAPI32.BAS。

      下面以VB為例說(shuō)明PI-API的大致用法。首先在VB程序中引用上面提到的PIAPI32.BAS,將它作為一個(gè)公用模塊,然后就可以按照以下步驟連接數據庫了。首先是連接數據庫、其次是獲取測點(diǎn)的內部標識號、然后通過(guò)內部標識號訪(fǎng)問(wèn)數據、最后斷開(kāi)數據庫的連接,調用相關(guān)API函數,完成對PI數據庫的讀寫(xiě)操作。下面是幾個(gè)主要函數:

      pilg_registerapp,piut_setservernode,piut_login,pipt_findpoint,pisn_getsnapshot,pisn_putsnapshot,piut_disconnect()。

      作者編寫(xiě)了一個(gè)讀寫(xiě)PI數據庫的小程序,作者對每個(gè)函數后面都做了說(shuō)明,這樣看起來(lái)更加直觀(guān)。程序界面如圖1所示,通過(guò)輸入點(diǎn)名可以讀取快照值,也可以寫(xiě)入快照值。

      image.png 

      圖1 程序界面

      Private Sub commandread_Click()

      Dim pv '讀取到的值

      Dim pd As Long 'pointid

      Dim TagName As String ’PI數據庫點(diǎn)名

      pilg_registerapp "piapi32.dll" {這是注冊PI的動(dòng)態(tài)連接庫}

      piut_setservernode "piserver" {設置要登錄的PI服務(wù)器}

      piut_login "piuser", "password", 0 {根據用戶(hù)名和密碼登錄到上面設置的PI服務(wù)器,第一個(gè)參數是用戶(hù)名,第二個(gè)參數是密碼。}

      TagName = Text1.Text {在文本框中輸入PI數據庫點(diǎn)名}

      pipt_findpoint TagName,pd{根據輸入的PI數據庫點(diǎn)名獲取對應的pointid,函數中的pd就是獲得的pointid。用戶(hù)平時(shí)應用的時(shí)候一般習慣都是用TAGNAME,也就是PI數據庫點(diǎn)名,但是PI-API函數是用POINTID來(lái)存取的,所以要先根據TAGNAME來(lái)獲得POINTID號。}

      pisn_getsnapshotpd,pv,0,0{獲取對應點(diǎn)的快照值,第一個(gè)函數是POINTID,PV就是獲取到的值,第三和第四個(gè)參數值本文設的0,就是獲取當前值}

      Text2.Text=pv

      pilg_disconnect{斷開(kāi)與PI服務(wù)器的連接}

      End Sub

      以上就是獲取快照值的全部過(guò)程,寫(xiě)入值和獲取值的過(guò)程差不多,就是最后用寫(xiě)入函數。

      Private Sub commandwrite_Click()

      Dim pv '寫(xiě)入的值

      Dim pd As Long 'pointid

      Dim TagName As String ’PI數據庫點(diǎn)名

      pilg_registerapp "piapi32.dll"

      piut_setservernode "piserver"

      piut_login "piuser", "password", 0

      TagName = Text1.Text

      pipt_findpoint TagName, pd

      pv= Text2.Text

      pisn_putsnapshot pd,pv,0,0{寫(xiě)入對應點(diǎn)的快照值,第一個(gè)函數是POINTID,PV就是要寫(xiě)入的值,第三和第四個(gè)參數值本文設的0。}

      pilg_disconnect{斷開(kāi)與PI服務(wù)器的連接}

      EndSub

      以上就是最基礎的利用PI-API讀取和寫(xiě)入PI數據庫的操作,按照以上步驟用戶(hù)就能順利地把數據寫(xiě)入到PI實(shí)時(shí)數據庫的快照中。除了能對快照進(jìn)行讀寫(xiě)操作,PI-API還提供了能對已經(jīng)存檔的數據進(jìn)行讀寫(xiě)的函數,比如piar_value,可以獲取特定時(shí)間的存檔值,piar_putvalue可以把數據寫(xiě)入數據存檔文件。

      初步掌握PI-API數據庫讀寫(xiě)操作后,本文進(jìn)行了簡(jiǎn)單的開(kāi)發(fā)嘗試。某熱電廠(chǎng)的蒸汽用戶(hù)比較分散,用戶(hù)的用汽量數據是利用無(wú)線(xiàn)數據通訊方式傳回來(lái)的,并沒(méi)有寫(xiě)入到PI數據庫,造成全廠(chǎng)實(shí)時(shí)數據的不完整,所以作者打算把這部分用戶(hù)用汽數據寫(xiě)入PI數據庫中。要對PI數據庫進(jìn)行寫(xiě)的操作,感覺(jué)用PI-API更容易操作,所以本文用的是PI的API函數開(kāi)發(fā)了數據采集程序,程序界面如圖2所示。

      image.png 

      圖2 程序界面

      部分代碼截圖如圖3所示,代碼中用戶(hù)名和密碼隱去。該段代碼是程序接收第三方系統發(fā)送過(guò)來(lái)的數據,經(jīng)過(guò)處理后用PI-API函數寫(xiě)入PI數據庫的代碼。

      image.png 

      圖3  部分代碼截圖

      5 PI-SDK的簡(jiǎn)單應用

      PI-SDK是面向對象的軟件開(kāi)發(fā)工具包,在開(kāi)始編程之前,首先需要安裝OSI提供的PI-SDK,安裝后會(huì )在PI的目錄中生成PISDK目錄,里面是PI的類(lèi)庫文件,PISDK.dll為核心類(lèi),大部分主要功能都在該類(lèi)中,PISDKCommon.dll是通用類(lèi),PITimeServer.dll是PI自定義的時(shí)間類(lèi),我們利用上述三個(gè)類(lèi)庫就能夠完成訪(fǎng)問(wèn)PI服務(wù)的主要功能。PISDK頂級類(lèi),下面是SERVERS類(lèi),在SERVERS類(lèi)下面最重要的是SERVER類(lèi),SERVER類(lèi)下面有很多類(lèi),其中我們要用到的最重要的是PIPOINTS類(lèi),其他類(lèi)都有各自的功能,本文暫時(shí)用不到或者很少用到。

      下面仍然以VB為例說(shuō)明PI-SDK的大致用法。首先在VB程序中引用上面提到的PISDK.dll、PISDKCommon.dll、PITimeServer.dll三個(gè)類(lèi),然后就可以連接數據庫進(jìn)行讀寫(xiě)操作了。本文同樣編寫(xiě)了一個(gè)讀寫(xiě)PI數據庫的小程序,本文同樣在后面都做了說(shuō)明,這樣看起來(lái)更加直觀(guān)。程序界面如圖4所示,通過(guò)輸入點(diǎn)名可以讀取快照值,也可以讀取指定時(shí)間的值。

      image.png 

      圖4 程序界面

      Private Sub Command1_Click() {讀取快照值}

      Dim srv As server

      Dim pn As PIPoint

      Dim dt As PITimeFormat

      Dim pv As PIValue

      Dim t1 As String

      Set srv = Servers("piserver") {指定要連接的PI服務(wù)器}

      srv.Open "UID=piuser;pwd=password" {根據用戶(hù)和密碼連接上面的服務(wù)器}

      Set pn = srv.PIPoints(Text1.Text) {想要取值的點(diǎn)名}

      Set pv = pn.Data.Snapshot {取快照的值}

      Text2.Text = pv.Value

      End Sub

      讀取快照值很簡(jiǎn)單,比API更簡(jiǎn)單。但是要讀取歸檔值就要麻煩一點(diǎn),因為要給定讀取的時(shí)間和模式。

      Private Sub Command2_Click() {讀取歸檔值}

      Dim srv As server

      Dim pn As PIPoint

      Dim dt As PITimeFormat

      Dim pv As PIValue

      Dim t1 As String

      Set srv = Servers("piserver") {指定要連接的PI服務(wù)器}

      srv.Open "UID=piuser;pwd=password" {根據用戶(hù)和密碼連接上面的服務(wù)器}

      Set pn = srv.PIPoints(Text1.Text) {想要取值的 點(diǎn)名}

      Set dt = New PITimeFormat

      t1=Format (text3.text , "YY-MMM - DDHH:MM:SS")

      dt.InputString = t1 {把指定的時(shí)間轉換成PI的時(shí)間格式}

      Setpv=pn.Data.ArcValue(dt,rtInterpolated){獲取指定時(shí)間的歸檔值,第一個(gè)參數就是時(shí)間,第二個(gè)參數是取數的模式,因為PI數據庫并不是每個(gè)時(shí)間都存有數據的,所以用戶(hù)可以選擇模式是讀取用戶(hù)輸入時(shí)間的當前點(diǎn),后面一個(gè)點(diǎn),前面一個(gè)點(diǎn)或者插值表示的時(shí)間}

      Text2.Text = pv.Value

      End Sub

      PI-API嘗試過(guò)了,PI-SDK當然也要嘗試一下。某熱電廠(chǎng)的新建的#10#11機組準備上一塊LED大屏,用來(lái)顯示機組的主要運行參數,方便員工了解機組運行狀況。為了能方便地顯示機組運行參數,打算從PI數據庫中獲取相關(guān)運行參數,然后寫(xiě)入到大屏顯示數據庫中,大屏控制軟件能通過(guò)讀取大屏數據庫顯示相關(guān)參數,程序界面截圖如圖5所示。

      image.png 

      圖5 程序界面

      部分代碼截圖如圖6所示。該段代碼是程序利用PI-SDK從PI數據庫中獲取相關(guān)數據,經(jīng)過(guò)處理后寫(xiě)入大屏顯示數據庫的部分代碼。程序應用了定時(shí)器,定時(shí)從PI數據庫中獲取數據,從而達到刷新大屏參數的目的。

      image.png 

      圖6 部分代碼截圖

      6 結束語(yǔ)

      PI作為工廠(chǎng)底層控制系統與上層管理信息系統之間連接的橋梁,在工廠(chǎng)的信息化建設中扮演著(zhù)特殊和重要的角色。PI是一個(gè)通用性的實(shí)時(shí)數據平臺,開(kāi)發(fā)接口也比較方便,經(jīng)過(guò)一段時(shí)間的摸索,在看了PI系統的幫助文件,對PI的開(kāi)發(fā)有了初步的認識??偟恼f(shuō)來(lái),利用OSI提供的PI-API和PI-SDK開(kāi)發(fā)也很方便,兩種方法各有各的優(yōu)點(diǎn),可以滿(mǎn)足不同場(chǎng)合的不同需求的應用。

      作者簡(jiǎn)介:

      朱國海(1977-),男,浙江紹興人,工程師,學(xué)士,現就職于浙江巨化熱電有限公司,主要從事信息化管理工作。

      參考文獻:

      [1] OSIsoft. PI Server System Management Guide[Z]. 2011.

      [2] OSIsoft. PI Server Reference Guide[Z]. 2011.

      [3] 陳衛. 火力發(fā)電廠(chǎng)SISI建設的思考[J]. 電力信息化. 2006, (12) : 31 - 34.

      摘自《自動(dòng)化博覽》2023年8月刊

      熱點(diǎn)新聞

      推薦產(chǎn)品

      x
      • 在線(xiàn)反饋
      1.我有以下需求:



      2.詳細的需求:
      姓名:
      單位:
      電話(huà):
      郵件:
      欧美精品欧美人与动人物牲交_日韩乱码人妻无码中文_国产私拍大尺度在线视频_亚洲男人综合久久综合天

    2. <blockquote id="fficu"><optgroup id="fficu"></optgroup></blockquote>

      <table id="fficu"></table>

      <sup id="fficu"></sup>
      <output id="fficu"></output>