使用C#调用PI-SDK进行基于PI的开发

一、概述

PI-SDK(Plant Information Software Develop Kit)是OSI公司提供的基于面向对象的访问PI数据库的软件开发工具包,它可以对以下数据库进行读写:

²        PIPoints (PI point table)

²        StateSets (Digital sets table)

²        PIUsers   (User table)

²        PIGroups (Groups table)

²        PIModuleDB (Modules Database)

²        PIBatchDB (Batches Database)

²        PITransferRecords (TransferRecords Database)

²        Point Classes (Attribute Sets)

PI SDK只有在32位Windows平台下可以使用,可以调用任何平台下的PI数据库。

二、PI-SDK对象继承图

 

使用C调用PI-SDK进行基于PI的开发一 - .net - .net中国协会

在这个对象继承图中,本人用得最多的是PIPoint了,所以,大家现在先清楚PISDK-Servers-Server- PIPoints-PIPoint这一条线,其它的以后我们再慢慢叙述。

三、关于“About PI-SDK”程序

当PI-SDK安装完成后,可以在如下目录下找到此应用程序:

\PIPC\PISDK\AboutPI SDK.exe

使用C调用PI-SDK进行基于PI的开发一 - .net - .net中国协会

 

通过这个应用程序可以查看PI-SDK的版本号,以及维护已知服务器列表(known servers list),测试与服务器列表中的各个服务器是否能正常连接(如下图所示,本地服务器localhost可以正常连接)。

 

 

使用C调用PI-SDK进行基于PI的开发一 - .net - .net中国协会

四、PI-SDK和PI-API的比较

 

 

 

项目

 

PI-API

 

PI-SDK

 

全称

 

PI Application Programming Interface,PI应用程序接口

 

PI Software Development Kit,PI软件开发工具包

 

面向

 

procedural methods,面向编程

 

Object-oriented对象编程

 

安装完成后创建目录

 

(\pipc, \pipc\dat, \pipc\bin, \pipc\library, and \pipc\include),在Windows\System32目录下创建文件piapi32.dll和pilog32.dll

 

\pipc\PISDK

 

支持平台

 

所有平台支持API调用的所有语言,如(VB, VBA, C, Fortran, Delphi,...)

 

Windows平台支持面向对象的语言

本文源代码可以到http://download.csdn.net/source/781107下载

一、关于known servers list(已知服务器列表)

PI-SDK创建和维护known servers lists(已知服务器列表);PI-API使用和维护/PIPC/DAT/PILOGIN.INI中的服务器表。

PILOGIN.INI服务器表的修改会自动更新到PI-SDK的known servers lists中;而PI-SDK对known servers list的修改不会自动更新到PILOGIN.INI中。

在使用PI-SDK时,如果需要连接的PI服务器不在known servers lists中,则应首先将它加入到known servers lists中。

 

二、连接PI服务器的两种方式

1、  以互动方式登陆——通过用户名和密码登陆

互动方式登陆有3种方式:

a) PISDK.Server.Open(string connectstring)

ConnectionString为连接字符串,为string数据类型。它的格式如下:

UID=PIUser;PWD=PIUserPassWord

其中PIUser为PI用户名,PIUserPassWord为对应PI用户的密码,如果无密码则用空字符串。

例如,如果用户为piadmin,对应的密码为123,则对应的连接字符串为:

UID=piadmin;PWD=123

b) PISDKDlg.Connections.Login(ref PISDK.Server PIServerref string PIUserref string PasswordboolOverridebool ForceShow)

具体调用方法在实例中会进一步说明。

这个方法本人还不太会用,主要对OverrideForceShow的含义不太清楚(我试了一下,当OverridefalseForceShowtrue时,程序会出错)。有会用这个方法的请告知。

c)PISDKDlg.Connections.ShowConnectionDialogbool ReadOnlyshort Modal

使用这个方法会调用PI连接管理器对话框(PI Connection Manager dialog)。PI连接管理器会列出已知服务器表(Known Servers table)中的所有PI服务器,并且可以对PI服务器进行连接和断开连接、在已知服务器列表中添加和删除PI服务器、更改默认连接参数、定义服务器ID别名和路径别名等操作。

 

2、  以非互动方式登陆——借用trust登陆

PISDK.Server.Open(string.Empty)

具体代码见代码示例。

 

三、连接到PI窗口应用程序

本实例建立一个Windows Form应用程序,其中包括了1个GroupBox控件、3个Label控件、1个ListBox控件、3个Button控件、2个TextBox控件,具体界面如下:

 

通过“Establish Connection”按钮和“Connection Manager”按钮可以与PI数据库建立连接。

 

    首先在“解决方案资源管理器”窗口增加引用“OSIsoft.PISDK”和“OSIsoft.PISDKDlg”,方法如下截图所示:

 

然后,右键单击界面,在弹出窗口中选择“View Code”,在一开始的using语句后增加一句:

using PISDK;

 

Form1类增加2个字段,并且在构造函数中初始化piSDKserver字段。

    public partial class Form1 : Form

    {

        PISDK.PISDK piSDK;   // 定义PISDK接口piSDK

        Server server;       // 定义Server接口server

 

        /// <summary>

        /// 构造函数

        /// </summary>

                public Form1()

        {

            InitializeComponent();

            piSDK=new PISDKClass();  // 创建PISDKClass对象,并使接口piSDK指向它

 

            // ListBox控件lstServer进行初始化,使其列出服务器列表中的所有服务器名

            foreach (Server srv in piSDK.Servers)

            {

                lstServer.Items.Add(srv.Name);

            }

 

            // 使lstServer控件的选中项为默认服务器名

            lstServer.SelectedItem = piSDK.Servers.DefaultServer.Name;

 

            // 使PI用户为默认服务器的默认用户

            txtUser.Text = piSDK.Servers.DefaultServer.DefaultUser;

 

            // 使接口server指向默认服务器

            server = piSDK.Servers[lstServer.SelectedItem.ToString()];

        }

双击Form1界面中的ListBox控件,然后为lstServer_SelectedIndexChanged事件添加如下代码:

        private void lstServer_SelectedIndexChanged(object sender, EventArgs e)

        {

            // 如果选定的服务器已修改,则server指向修改后的服务器

            server = piSDK.Servers[lstServer.SelectedItem.ToString()];

            txtUser.Text = server.DefaultUser; // txtUser控件显示修改后服务器的默认用户

        }

 

双击Form1界面中的“Establish Connection”按钮,然后为btnConnect_Click事件添加如下代码:

private void btnConnect_Click(object sender, EventArgs e)

        {

            try

            {

                // 如果已经连接到PI服务器,则先断开与PI服务器之间的连接

                if (server.Connected)

                {

                    server.Close();

                }

 

                #region 使用server.Open(connectString)以登陆方式连接PI服务器

                string connectString = string.Format("UID={0};PWD={1}", txtUser.Text, txtPassword.Text);

                server.Open(connectString);

                #endregion

 

                #region 使用server.Open()trust方式连接PI服务器

                //if (!server.Connected)

                //{

                //    server.Open(String.Empty);

                //}

                #endregion

 

                #region 使用PISDKDlg.Connections.Login()以登录方式连接PI服务器

                //Server otherServer=piSDK.Servers["192.168.0.103"];

                //string a = txtUser.Text;

                //string b = txtPassword.Text;

                //PISDKDlg.Connections connection = new PISDKDlg.ConnectionsClass();

                //connection.Login(ref otherServer, ref a, ref b, true, true);

                //if (otherServer.Connected)

                //    server = otherServer;

                #endregion

 

                MessageBox.Show(server.ConnectionType + " connection established with the " + server.Name

                    + " server as " + server.CurrentUser + " on " + server.LastConnectedTime + ".");

            }

            catch (Exception ex)

            {

                MessageBox.Show("Can not connect to PI Server./r/nDetail is: " + ex.Message);

                return;

            }

        }

注意:上面的代码段中包含3种连接PI数据库的方法,我们可以逐一测试,其中使用trust连接PI服务器的方法需要首先在PI数据库中建立恰当的trust

 

双击Form1界面中的“Connection Manager”按钮,然后为btnConnectionManager_Click事件添加如下代码:

        private void btnConnectionManager_Click(object sender, EventArgs e)

        {

            PISDKDlg.Connections connections = new PISDKDlg.ConnectionsClass();                  

            connections.ShowConnectionDialog(true, 22);

        }

代码中首先创建connections对象,然后显示连接管理器对话框。

 

双击Form1界面中的“Exit”按钮,然后为btnConnectionManager_Click事件添加如下代码:

        private void btnExit_Click(object sender, EventArgs e)

        {

            if (server.Connected)

                server.Close();

            this.Dispose();

        }

 

注意:文中,新增加的代码用加粗斜体字有底色

 

四、小结

在连接到PI服务器时,可以有如下几种方法:

1  使用PISDK命名空间下的server.Open(ConnectString)方法,如果ConnectString为空字符串,那么系统就自动用Trust方式连接。如果连接过程中发生错误,则会引起错误。

2  使用PISDKDlg命名空间下的connections.Login(params)方法,可以选择需要连接的PI服务器,并且如果连接过程中发生错误,会跳转到“PI服务器登陆”对话框。

3  使用PISDKDlg命名空间下的connections. ShowConnectionDialog (params)方法,则可以在弹出对话框中方便地选择需要连接的PI服务器和连接用户。

 

建议通过对象浏览器(Object Browser)去熟悉以下PISDK.Server接口和PISDKDlg.Connections可以调用的各个属性和方法,并且尝试下使用各个属性和方法,或者画出相应的类视图。

 

程序员的基础教程:菜鸟程序员

转载于:https://www.cnblogs.com/guohu/p/5165182.html

PI数据库开发SDK例程 The introduction provides an architectural overview of how the PI-SDK fits into various programming environments. A description and simplified view of the PI-SDK object model is also presented. What Is the PI-SDK? The PI Software Development Kit (PI-SDK) is a programming tool providing access to PI Servers. The software consists of an ActiveX in-process server, an ActiveX control, and supporting code libraries. The kit comes with online documentation, example code, various support files, and tools. The PI-SDK runs on 32-bit Windows platforms and provides access to servers on all PI platforms. Based on Microsoft’s Component Object Model (COM), the PI-SDK can be used with most WIN32 programming environments. The kit is particularly well integrated with Microsoft Visual Basic providing rapid development and deployment of PI applications. The PI-SDK provides an object-oriented approach to program interaction with PI Systems. It delivers a hierarchical model of objects and collections representing the components of PI Servers. This approach provides for intuitive and efficient access. What Documentation Is Provided? The PI-SDK User Guide and the PI-SDK Programming Reference are the primary sources for information related to the PI-SDK. Both are incorporated in the online help system. A version of the user guide in MS Word format is also installed during the setup for printing or for use in training programs. Programming Reference Detailed programming references for properties and methods of each object in the PI-SDK and the PI-SDK Control and Dialogs are available in online help. Most methods provide an example of their usage in Visual Basic. Other code examples, including examples of calling the PI-SDK
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值