ge fanuc cimplicity hmi interface to the pi...

of 180 /180
GE FANUC CIMPLICITY HMI Interface to the PI System Version 4.3.0.0 Revision B

Author: vuongdung

Post on 26-Apr-2018

254 views

Category:

Documents


6 download

Embed Size (px)

TRANSCRIPT

GE FANUC CIMPLICITY HMI Interface to the PI System

GE FANUC CIMPLICITY HMIInterface to the PI System

Version 4.3.0.0Revision B

Copyright 1994-2009OSIsoft, Inc.

OSIsoft, Inc.

777 Davis St., Suite 250San Leandro, CA 94577 USA(01) 510-297-5800 (main phone)(01) 510-357-8136 (fax) (01) 510-297-5828 (support phone)

http://techsupport.osisoft.com

[email protected]

Houston, TX Johnson City, TN Longview, TX Mayfield Heights, OHPhiladelphia, PAPhoenix, AZ Savannah, GA

OSIsoft Australia

Perth, Australia

OSI Software GmbH

Altenstadt,Germany

OSIsoft Asia Pte Ltd.

Singapore

OSIsoft Canada ULC

Montreal, Canada

Calgary, Canada

OSIsoft, Inc. Representative Office

Shanghai, Peoples Republic of China

OSIsoft Japan KK

Tokyo, Japan

OSIsoft Mexico S. De R.L. De C.V.

Mexico City, Mexico

OSIsoft do Brasil Sistemas Ltda.

Sao Paulo, Brazil

Sales Outlets/Distributors

Middle East/North AfricaRepublic of South AfricaRussia/Central Asia

South America/CaribbeanSoutheast AsiaSouth Korea Taiwan

www.osisoft.com

All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, mechanical, photocopying, recording, or otherwise, without the prior written permission of OSIsoft, Inc.

OSIsoft, the OSIsoft logo and logotype, PI Analytics, PI ProcessBook, PI DataLink, ProcessPoint, Sigmafine, Analysis Framework, PI Datalink, IT Monitor, MCN Health Monitor, PI System, PI ActiveView, PI ACE, PI AlarmView, PI BatchView, PI ManualLogger, PI ProfileView, ProTRAQ, RLINK, RtAnalytics, RtBaseline, RtPortal, RtPM, RtReports and RtWebParts are all trademarks of OSIsoft, Inc. All other trademarks or trade names used herein are the property of their respective owners.

RESTRICTED RIGHTS LEGEND

Use, duplication, or disclosure by the Government is subject to restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in Technical Data and Computer Software clause at DFARS 252.227-7013

Table of Contents

viiTerminology

1Introduction

2Reference Manuals

2Supported Features

7Diagram of Hardware Connection

9Principles of Operation

13Installation Checklist

13Data Collection Steps

15Interface Diagnostics

15Advanced Interface Features

17Interface Installation

17Naming Conventions and Requirements

18Interface Directories

18PIHOME Directory Tree

18Interface Installation Directory

18Interface Installation Procedure

19Installing Interface as a Windows Service

19Installing Interface Service with PI Interface Configuration Utility

22Installing Interface Service Manually

23Connection Tool

25Digital States

27PointSource

29PI Point Configuration

29Point Attributes

29Tag

30PointSource

30PointType

30Location1

30Location2

30Location3

30Location4

30Location5

31InstrumentTag

32ExDesc

32Scan

32Shutdown

33UserInt1

33Output Points

34Trigger Method 1 (Recommended)

34Trigger Method 2

35Startup Command File

35Configuring the Interface with PI ICU

38gecimpi Interface page

41Command-line Parameters

45Sample PICimpi_HMIxx.bat File

47UniInt Failover Configuration

47Introduction

48Quick Overview

49Configuring Synchronization through the Data Source (Phase 1)

53Failover Control Point Configuration

53Active ID

54Heartbeat

58Control Point Data Flow

60Configuring Synchronization through a Shared File (Phase 2)

64Configuring UniInt Failover through the Data Source (Phase 1)

64Start-Up Parameters

66Data Source Points

66PI Tags

70Detailed Explanation of Sychronization through the Data Source

71Steady State Operation

73Synchronization through a Shared File (Phase 2)

74Configuring UniInt Failover through a Shared File (Phase 2)

74Start-Up Parameters

77Failover Control Points

77PI Tags

82Detailed Explanation of Synchronization through a Shared File (Phase 2)

83Steady State Operation

85Failover Configuration Using PI ICU

85Create the Interface Instance with PI ICU

86Configuring the UniInt Failover Startup Parameters with PIICU

87Creating the Failover State Digital State Set

87Using the PI ICU Utility to create Digital State Set

89Using the PI SMT 3 Utility to create Digital State Set

92Creating the UniInt Failover Control and Failover State Tags (Phase 1)

92Creating the UniInt Failover Control and Failover State Tags (Phase 2)

94Converting from Phase 1 to Phase 2 Failover

95Procedure

97Interface Node Clock

99Security

101Starting / Stopping the Interface on Windows

101Starting Interface as a Service

101Stopping Interface Running as a Service

103Buffering

103Which Buffering Application to Use

103How Buffering Works

104Buffering and PI Server Security

105Enabling Buffering on an Interface Node with the ICU

105Choose Buffer Type

106Buffering Settings

108Buffered Servers

111Installing Buffering as a Service

115Interface Diagnostics Configuration

115Scan Class Performance Points

115Performance Counters Points

119Interface Health Monitoring Points

124I/O Rate Point

126Interface Status Point

129Appendix A: Error and Informational Messages

129Message Logs

129Messages

130System Errors and PI Errors

130UniInt Failover Specific Error Messages

130Informational

131Errors (Phase 1 & 2)

132Errors (Phase 1)

133Errors (Phase 2)

135Appendix B: PI SDK Options

137Revision History

Terminology

To understand this interface manual, you should be familiar with the terminology used in this document.

Buffering

Buffering refers to an Interface Nodes ability to store temporarily the data that interfaces collect and to forward these data to the appropriate PI Servers.

N-Way Buffering

If you have PI Servers that are part of a PI Collective, PIBufss supports n-way buffering. N-way buffering refers to the ability of a buffering application to send the same data to each of the PI Servers in a PI Collective. (Bufserv also supports n-way buffering to multiple PI Server however it does not guarantee identical archive records since point compressions specs could be different between PI Servers. With this in mind, OSIsoft recommends that you run PIBufss instead.)

ICU

ICU refers to the PI Interface Configuration Utility. The ICU is the primary application that you use to configure and run PI interface programs. You must install the ICU on the same computer on which an interface runs. A single copy of the ICU manages all of the interfaces on a particular computer.

You can configure and run an interface by editing a startup command file. However, OSIsoft discourages this approach. Instead, OSIsoft strongly recommends that you use the ICU for interface management tasks.

ICU Control

An ICU Control is a plug-in to the ICU. Whereas the ICU handles functionality common to all interfaces, an ICU Control implements interface-specific behavior. Most PI interfaces have an associated ICU Control.

Interface Node

An Interface Node is a computer on which

the PI API and/or PI SDK are installed, and

PI Server programs are not installed.

PI API

The PI API is a library of functions that allow applications to communicate and exchange data with the PI Server. All PI interfaces use the PI API.

PI Collective

A PI Collective is two or more replicated PI Servers that collect data concurrently. Collectives are part of the High Availability environment. When the primary PI Server in a collective becomes unavailable, a secondary collective member node seamlessly continues to collect and provide data access to your PI clients.

PIHOME

PIHOME refers to the directory that is the common location for PI client applications. A typical PIHOME is C:\Program Files\PIPC. PI interfaces reside in a subdirectory of the Interfaces directory under PIHOME. For example, files for the Modbus Ethernet Interface are in C:\Program Files\PIPC\Interfaces\ModbusE.

This document uses [PIHOME] as an abbreviation for the complete PIHOME directory. For example, ICU files in [PIHOME]\ICU.

PI SDK

The PI SDK is a library of functions that allow applications to communicate and exchange data with the PI Server. Some PI interfaces, in addition to using the PI API, require the use of the PI SDK.

PI Server Node

A PI Server Node is a computer on which PI Server programs are installed. The PI Server runs on the PI Server Node.

PI SMT

PI SMT refers to PI System Management Tools. PI SMT is the program that you use for configuring PI Servers. A single copy of PI SMT manages multiple PI Servers. PI SMT runs on either a PI Server Node or a PI Interface Node.

Pipc.log

The pipc.log file is the file to which OSIsoft applications write informational and error messages. While a PI interface runs, it writes to the pipc.log file. The ICU allows easy access to the pipc.log.

Point

The PI point is the basic building block for controlling data flow to and from the PI Server. For a given timestamp, a PI point holds a single value.

A PI point does not necessarily correspond to a point on the foreign device. For example, a single point on the foreign device can consist of a set point, a process value, an alarm limit, and a discrete value. These four pieces of information require four separate PI points.

Service

A Service is a Windows program that runs without user interaction. A Service continues to run after you have logged off from Windows. It has the ability to start up when the computer itself starts up.

The ICU allows you to configure a PI interface to run as a Service.

Tag (Input Tag and Output Tag)

The tag attribute of a PI point is the name of the PI point. There is a one-to-one correspondence between the name of a point and the point itself. Because of this relationship, PI System documentation uses the terms tag and point interchangeably.

Interfaces read values from a device and write these values to an Input Tag. Interfaces use an Output Tag to write a value to the device.

Introduction

The PI GE FANUC CIMPLICITY HMI Interface (PI CIMPI) provides the transfer of data between the GE FANUC CIMPLICITY system, version 4.01 and higher, and the OSIsoft Plant Information (PI) System. The interface runs on any WindowsXP or Windows Server platforms. Three versions of interface executables are shipped with the interface distribution:

PICimpi_HMI50.exe for GE Cimplicity HMI version 4.01 to 5.0

PICimpi_HMI55.exe for GE Cimplicity HMI version 5.5 to 6.01

PICimpi_HMI75.exe for Proficy HMI/SCADA Cimplicity version 7.5

The interface is bi-directional. The interface reads data from a single project on one CIMPLICITY server and sends the data to the PI server. The interface can also output data to the single specified project as well. The interface may run on a CIMPLICITY Viewer node or a CIMPLICITY server node.

The interface supports two failover solutions to minimize data loss during a failure within the system architecture. The first solution, available through UniInt, provides a no data loss solution given a single point of failover. Information relating to failover operation and configuration can be found in the UniInt Failover Configuration section of this manual. The CIMPLICITY system also provides an option for failover support. In this scenario, the interface is installed on a Viewer Node which is configured to collect data from the active project on one of two CIMPLICITY servers configured for failover.

The interface obtains data from the CIMPLICITY server on an exception basis. The interface checks for new data at a configurable scan rate (default is 250ms). The user can choose to have the data time stamped in one of 3 ways; use the raw unadjusted time from the Cimplicity server, use the PI server time at which the event was received, or use the adjusted time from the Cimplicity server. If using the adjusted time from the Cimplicity server, which is the default, the PI CIMPI Interface queries the Cimplicity server for the current time and compares that with the current time from the PI server. It uses the difference between the two times to determine an offset. This offset is then used to adjust the time of the Cimplicity event to the PI time.

The interface will exit under certain situations that do not allow recovery by standard programmatic means. Because of this possibility, the PI CIMPI Interface is shipped with a separate program named WatchDog that will monitor the interface and restart the interface if it is not running. This scenario is discussed in The Principles of Operation section and the start-up command parameter /wd.

The following is a list of key features found in version 4.3.0.0 of the PI CIMPI Interface. It is the intent for OSIsoft to maintain backward compatibility with previous versions. However, there may be some features listed below that are not supported in previous interface versions. Refer to the interface manual for a specific version to verify functionality.

The interface supports communication to a single Cimplicity HMI project. Multiple projects will require multiple instances of the interface to be run.

The interface collects data from the Cimplicity HMI only by exception. Meaning Cimplicity will only send changed data to the interface. Versions 1.x and 2.x allowed for data collection by polling and event triggers. The user does not need to make any modifications to the point attributes because of this change.

This version of the interface has support for complex (array) Cimplicity inputs or outputs. A point is identified as a complex point by configuring the InstrumentTag attribute of the PI Point. Refer to the PI Point Configuration section of this manual for details on configuring complex data points.

Users can select specific PI Points to be timestamped with sub-second resolution. Points requiring sub-second resolution can be identified by setting the UserInt1 attribute of the PI Point.

Reference Manuals

OSIsoft

PI Server manuals

PI API Installation manual

UniInt Interface User Manual

Vendor

Proficy HMI/SCADA Cimplicity v7.5 Documentation. Copyright 1995-2008 GE Fanuc Intelligent Platforms, Inc.

GE Fanuc Automation, CIMPLICITY HMI v6.10 Documentation. Copyright 19952003 GE Fanuc Automation Americas, Inc.

GE Fanuc Automation, CIMPLICITY HMI for Windows NT and Windows 95, Base System, Users Manual, GFK-1108F, October 97

GE Fanuc Automation, CIMPLICITY HMI for Windows NT and Windows 95, Point Management API, Application Developer Guide, GFK-1201C, April 1997

Supported Features

Feature

Support

Part Number

PI-IN-GE-CIM-NT

* Platforms

Windows (2000 SP3 & SP4, XP, 2003 Server)

APS Connector

Yes

Point Builder Utility

No

ICU Control

Yes

PI Point Types

int16, int32, float16, float32, float64, digital, string

Sub-second Timestamps

Yes

Sub-second Scan Classes

No

Automatically Incorporates PIPoint Attribute Changes

Yes

Exception Reporting

Yes

Outputs from PI

Yes

Inputs to PI: Scan-based / Unsolicited / Event Tags

Unsolicited

Supports Questionable Bit

No

Supports Multi-character PointSource

Yes

Maximum Point Count

Unlimited

Uses PI SDK

No

PINet String Support

No

* Source of Timestamps

CIMPLICITY server, PI Time, or Adjusted

History Recovery

No

* UniInt-based

* Disconnected Startup

* SetDeviceStatus

YesYesYes

* Failover

UniInt Failover:Phase 1

Phase 2 COLD/HOT

Cimplicity Server Level Failover

* Vendor Software Required on PI Interface Node / PINet Node

Yes

Vendor Software Required on Foreign Device

No

Vendor Hardware Required

No

* Additional PI Software Included with Interface

Yes

* Device Point Types

Analog, Boolean, Text

Serial-Based Interface

No

* See paragraphs below for further explanation.

Platforms

The Interface is designed to run on the above mentioned Microsoft Windows operating systems. Because it is dependent on vendor software, newer platforms may not yet be supported.

Uses PI SDK

The PI SDK and the PI API are bundled together and must be installed on each PI Interface node. This Interface does not specifically make PI SDK calls.

Source of Timestamps

CIMPLICITY events come with time stamps from CIMPLICITY. The resolution of a time stamp from CIMPLICITY is to the millisecond. The user can choose to have the data time stamped in one of 3 ways; use the raw unadjusted time from the Cimplicity server, use the PI server time at which the event was received, or use the adjusted time from the Cimplicity server. If using the adjusted time from the Cimplicity server, which is the default, the PI CIMPI Interface queries the Cimplicity server for the current time and compares that with the current time from the PI server. It uses the difference between the two times to determine an offset. This offset is then used to adjust the time of the Cimplicity event to the PI time. A new offset will only be applied if it differs by more than 5 seconds from the last offset and a message will be printed when a new time offset will be used.

UniInt-based

UniInt stands for Universal Interface. UniInt is not a separate product or file; it is an OSIsoft-developed template used by developers, and is integrated into many interfaces, including this interface. The purpose of UniInt is to keep a consistent feature set and behavior across as many of OSIsofts interfaces as possible. It also allows for the very rapid development of new interfaces. In any UniInt-based interface, the interface uses some of the UniIntsupplied configuration parameters and some interface-specific parameters. UniInt is constantly being upgraded with new options and features.

The UniInt Interface User Manual is a supplement to this manual.

Disconnected Start-Up

The PI CIMPI Interface is built with a version of UniInt that supports disconnected start-up. Disconnected start-up is the ability to start the interface without a connection to the PI server. This functionality is enabled by adding /cachemode to the list of start-up parameters or by enabling disconnected startup using the ICU. Refer to the UniInt Interface User Manual for more details on UniInt Disconnect startup.

SetDeviceStatus

The PI CIMPI Interface is built with a version of UniInt that supports the device status health tag. The device status health tag, like all of the UniInt Interface Health tags, is a non-interface tag that can be loaded by UniInt to monitor the health of an interface. The device status tag is different from the rest of the UniInt Health tags in that the interface client code is responsible for some of the values written to the tag. The PI CIMPI Interface can write 3 different values to the device status tag. UniInt can write two different values to the device status tag. The following is a listing of the possible values of the device status tag, they meaning of the values and a description.

1 | Starting The Interface remains in this state until it has successfully collected data from its first scan.

Good This value indicates that the Interface is able to connect to all of the devices referenced in the Interfaces point configuration. A value of Good does not mean that all tags are receiving good values, but it is a good indication that there are no hardware or network problems.

3 | 1 device(s) in error | Initializing PTMAP API failed. Will re-initializen The PI Cimpi client code will write this value if it is unable to connect to the Cimplicity server at start-up. If this is the device status tags value, the interface will not be receiving values but it will be re-attempting to connect to the Cimplicity server once per minute.

3 | 1 device(s) in error | Fatal Error communicating with Cimplicity. Stopping Interface The PI Cimpi client code will write this value if it encounters a fatal error communicating with the Cimplicity server. The interface cannot recover without stopping and restarting if the Cimplicity server is shut down while the interface is running. For this reason, when this error is detected, the interface client code will update the device status tag and then stop the interface. A watchdog application is distributed with the PI CIMPI Interface to restart the interface in this case. Please refer to the description of the /wd startup parameter for a detailed explanation of configuring the watchdog application.

4 | Intf Shutdown The Interface has shut down.

Failover

Cimplicity Server Level Failover

The CIMPLICITY system supports a fail-over mechanism where a Viewer Node can be configured to collect data from the active project on one of two CIMPLICITY servers configured for failover. The interface also supports UniInt level failover.

UniInt Failover Support

UniInt Phase 1 Failover provides support for a hot failover configuration which results in a no data loss solution for bi-directional data transfer between the PI Server and the Data Source given a single point of failure in the system architecture. This failover solution requires that two copies of the interface be installed on different interface nodes collecting data simultaneously from a single data source. Phase 1 Failover requires that the interface support output points to the Foreign System. Failover operation is automatic and operates with no user interaction. Each interface participating in failover has the ability to monitor and determine liveliness and failover status. To assist in administering system operations, the ability to manually trigger failover to a desired interface is also supported by the failover scheme.

The failover scheme is described in detail in the UniInt Interface User Manual, which is a supplement to this manual. Details for configuring this Interface to use failover are described in the UniInt Failover Configuration section of this manual.

UniInt Phase 2 Failover provides support for cold or hot failover configurations. The Phase 2 hot failover results in a no data loss solution for bi-directional data transfer between the PI Server and the Data Source given a single point of failure in the system architecture similar to Phase 1. However, in cold failover configurations, you can expect a small period of data loss during a single point of failure transition. This failover solution requires that two copies of the interface be installed on different interface nodes collecting data simultaneously from a single data source. Phase 2 Failover requires each interface have access to a shared data file. Failover operation is automatic and operates with no user interaction. Each interface participating in failover has the ability to monitor and determine liveliness and failover status. To assist in administering system operations, the ability to manually trigger failover to a desired interface is also supported by the failover scheme.

The failover scheme is described in detail in the UniInt Interface User Manual, which is a supplement to this manual. Details for configuring this Interface to use failover are described in the UniInt Failover Configuration section of this manual.

Vendor Software Required

The interface requires that the CIMPLICITY Point Management API be installed on the computer where the interface will run. This provides the functions required by the interface to access the CIMPLICITY database. To install the CIMPLICITY Point Management API, CIMPLICITY must be installed as a Viewer or as a Server on the interface node. When installing as a Viewer, the Point Management option must be checked.

Additional PI Software

Because there are situations (viewer down on viewer node or project stopped on a server node) where the PI CIMPI Interface must shut down completely to recover and start collecting data from the Cimplicity API, the interface is shipped with a watchdog application to restart the interface if it is stopped. Please see the start-up parameter /wd for instructions on configuring the watchdog application.

Device Point Types

The interface supports collecting data from Cimplicity analog, boolean, and text (string) type tags.

Diagram of Hardware Connection

Principles of Operation

Startup

Upon startup, the interface examines the command parameters passed to it. The interface will only communicate to a single project and will ignore multiple projects that are passed to it. The interface will exit if no project name has been passed to it and a message will be printed to the log file indicating that the interface has exited.

The interface then retrieves all of the points that match the Interface ID number and the Point Source from PI. Once all the points have initially been obtained the interface will set up a single CIMPLICITY shopping list for all points. A single PI tag can only point to a single CIMPLICITY tag. If a PI tag is removed from the interface, the interface does not remove the CIMPLICITY point from the shopping list and ignores any subsequent event data that is sent if it is an input or will not execute anymore outputs if it is an output tag. For this reason OSI recommends stopping and restarting the interface if a lot of tags are removed. The interface will continue to operate normally without being restarted, but those extra CIMPLICITY points will be consuming machine resources, both memory and clock cycles. New PI tags will be added dynamically to the shopping list. Upon addition of a new input tag, the interface will receive an initial value with a time-stamp for the point. If the time-stamp of the event is prior to the latest value contained in PI (because the value is static and hasnt changed since the PI tags value), the value will be written to PI with the current time-stamp. This is to handle situations when PI or the PI CIMPI Interface writes a value to the tag such as PT CREATED or SCAN OFF. For example, if a PI Point is created at 10:02, the last time the value changed in the Cimplicity server was 10:00, and the interface is started at 10:10, then the initial event received from the Cimplicity server would be prior to the PT CREATED value that exists in PI. If this situation occurs, the interface will write the value to PI at 10:10. This will not reflect the time the value actually changed to the current value, but it will reflect the current value of the Cimplicity point.

Data Input

All data from CIMPLICITY is collected via exception and checks for new exceptions are made at a rate determined by the start-up parameter /sr=rate where rate is in milliseconds (default = 250ms). Data will be sent to the interface if it changes by any amount. CIMPLICITY exception reporting does not allow the user to specify a dead-band for a given point similar to how a point can be configured in PI. It is up to the user to decide if further exception reporting for a point will be done in PI and if so, what the exception specs should be set at.

Since data comes into the interface via exception, some points may not get new values for a very long time. Therefore the interface will send a value to PI if it has not received a new value from CIMPLICTY within excmax (PI point attribute ExcMax) seconds. The time stamp used will be the CIMPLICITY time or the adjusted PI time. The user may wish to turn the STEP attribute on for points whose values will not change frequently so that a change in value will not show a ramp on the trend.

The interface will write the following digital states to input points to alert the user to problems with the point or with communication.

Bad Input is written to an input tag if it reads bad in CIMPLICITY; i.e. when viewed from the CIMPLICITY Point Control Panel the value of the tag shows ***.

I/O Timeout is written to all input tags if the interface is unable to communicate to the CIMPLICTY Viewer or Project.

Configure will be written to an output or input tag if the CIMPLICITY tag name specified in the Instrumenttag is invalid or missing.

Bad Input is written to all input tags if the interface is unable to communicate to the CIMPLCITY Project either because of a network connection problem or the Project is not running.

Note: Typically I/O Timeout would be written but the indication from the CIMPLICITY API of a network problem or the Project down is the same as when a tag reads bad in CIMPLICITY.

Data Output

All the output points have a set point request added to the shopping list. When a value is to be sent to the CIMPLICITY, the set point value will be modified and the shopping list will be sent.

Complex Data

The interface is capable of reading and writing to Cimplicity HMI complex (array) points. A complex point is an array of n-elements of a single type. For example, a Cimplicity point Foo may be declared as type REAL and defined to have 50 elements. This means that Foo contains 50 separate real values in its structure. Individual elements of Foo can be accessed by indexing into the array at a specific location. Element indices of Cimplicity points begin with zero. Therefore, a 50 element point contains indices 0-49.

The user can define a PI Point to store the value of a unique element in a Cimplicity complex point by configuring the InstrumentTag attribute of the PI Point. The PI Point Configuration section of this manual contains details for the specific format of the InstrumentTag as used with complex points.

A complex point in Cimplicity can be defined as either an input or output point in PI, but not both. For input points, the interface loads the complex points and requests on-change events for the complex point as a whole. This means that PI will update all PI Points that are part of the complex point when any element (index) of the Cimplicity HMI point changes value. Output points act in a similar fashion where the interface will update all elements of the Cimplicity HMI point when an output is received for any element of the Cimplicity point. It must be noted that if there is not one PI Point designated for each element of the Cimplicity complex point, then a value of zero will be written to Cimplicity elements where no PI Point is defined. To ensure Cimplicity receives an accurate output update, the interface loads the initial output value received by UniInt for each output point into memory and then outputs the values of all the elements received from UniInt in a single output to Cimplicity. Therefore it is important not to suppress initial outputs from the interface. If /sio is defined in the startup command file, the interface will shutdown and provide an error message in the pipc.log file stating that the /sio flag must be removed from the startup command file. If a valid value for an output point is not available on interface startup, a value of zero will be written to the Cimplicity element until a valid output value is received from PI.

UniInt Failover

This interface supports UniInt failover. Refer to the UniInt Failover Configuration section of this document for configuring the interface for failover.

CIMPLICITY Failover

The interface can run on a CIMPLICITY Viewer Node or a CIMPLICITY Server. The CIMPLICITY system supports a fail-over mechanism where a Viewer Node can be configured to collect data from the active project on one of two CIMPLICITY servers that are configured for fail-over. Because of this functionality it is highly recommended that the interface run on a VIEW Node to take advantage of the fail-over capability provided by CIMPLICITY.

In the event the primary Cimplicity server fails over to the secondary, the only loss of PI data will be the short time it takes for the secondary Cimplicity server to switch to the Primary and start collecting data.

Programmatic Stopping and Restarting of the Interface

Interface Running on a Viewer Node

The interface will be unable to recover if the CIMPLICITY VIEWER goes down. This is consistent with the behavior of the CIMPLICITY Point Control Panel where it shuts itself down when the VIEWER goes down.

Therefore the interface will shut itself down when the VIEWER goes down. There is an associated process called WatchDog that is shipped with the PI CIMPI Interface (please see the start-up parameter /wd for configuring the WatchDog). If the WatchDog is enabled, it will restart the interface if the interface shuts down due to a fatal CIMPLICITY error. The interface will then be in a position to resume communication with CIMPLICITY when the VIEWER comes back up.

Interface Running on the Project Node

The situation is very similar when running the PI CIMPI Interface on a CIMPLICITY project node. When the CIMPLICITY project is stopped, the CIMPLICITY API sends an error to the PI CIMPI Interface and then the PI CIMPI Interface is unable to recover. This is consistent with the behavior of the CIMPLICITY Point Control Panel where it shuts itself down when the Project is stopped. Therefore the interface will log the error and shut down. The WatchDog process will restart the interface and it will be ready to resume communication with the CIMPLICITY project when the project is restarted.

Installation Checklist

If you are familiar with running PI data collection interface programs, this checklist helps you get the Interface running. If you are not familiar with PI interfaces, return to this section after reading the rest of the manual in detail.

This checklist summarizes the steps for installing this Interface. You need not perform a given task if you have already done so as part of the installation of another interface. For example, you only have to configure one instance of Buffering for every interface that runs on an Interface Node.

The Data Collection Steps below are required. Interface Diagnostics and Advanced Interface Features are optional.

Data Collection Steps

1. Confirm that you can use PI SMT to configure the PI Server. You need not run PI SMT on the same computer on which you run this Interface.

2. If you are running the Interface on an Interface Node, edit the PI Servers Trust Table to allow the Interface to write data.

3. Run the installation kit for PI Interface Configuration Utility (ICU) on the interface node. This kit runs the PI SDK installation kit, which installs both the PI API and the PI SDK.

4. Run the installation kit for this Interface. This kit also runs the PI SDK installation kit, which installs both the PI API and the PI SDK.

a. Use PICimpi_HMI50.exe for version 4.01 or 5.0 of the Cimplicity HMI.

b. Use PICimpi_HMI55.exe for version 5.5, 6.0, or 6.1 of the Cimplicity HMI.

c. Use PICimpi_HMI75.exe for version Proficy HMI/SCADA Cimplicity 7.5.

5. Install CIMPLICITY HMI, either Server or Viewer.

6. Start the CIMPLICITY Point Control Panel and verify it is able to collect data from the desired points.

7. Change the PI CIMPI service log-on as property to a valid CIMPLICITY user.

Warning: Edit the Service Property log-on of the interface as to a valid CIMPLICITY user before running the service or the interface will hang in a CIMPLICITY API call.

8. If you are running the Interface on an Interface Node, check the computers time zone properties. An improper time zone configuration can cause the PI Server to reject the data that this Interface writes.

9. Run the ICU and configure a new instance of this Interface. Essential startup parameters for this Interface are

Point Source

Interface ID

PI Server

Project the /Project=Name defines the CIMPLICITY project to communicate with. The Project name will be pre-pended to the CIMPLICITY tag name to derive the Fully Qualified CIMPLICITY Tag Names.

10. If you will use digital points, define the appropriate digital state sets.

11. Build input tags and, if desired, output tags for this Interface. Important point attributes and their use are:

Location1 specifies the Interface instance ID.Location2 is point specific debug information.Location3 is input (0) or output (1).Location4 is not used.Location5 is used to specify this tag is to use Cimplicity EU conversion.InstrumentTag is the name of the CIMPLICITY tag (not including project name) and element of complex data if used.

12. Set interface and CIMPLICITY Server node clock. Setting the CIMPLICITY Server node and interface node clocks is very important if using the raw CIMPLICITY timestamps (/time=foreign). If the either time differs from the PI Servers time, the timestamps will be off by one hour.

13. Set up security, both PI server security and CIMPLICITY security. When running as a service, it is very important to assign the log on as start-up parameter of service to a valid CIMPLICITY user. If the user starts under the normal system account or another account that does not have the proper CIMPLICITY privileges, the PI CIMPI Interface can not determine this situation until the first CIMPLICITY add point call is made. Under these conditions, the CIMPLICITY add point call does not return and locks up the interface.

Warning: Edit the Service Property log-on of the interface as to a valid CIMPLICITY user before running the service or it will hang in a CIMPLICITY API call.

14. Start the Interface interactively and confirm its successful connection to the PI Server without buffering.

15. Confirm that the Interface collects data successfully.

16. Stop the Interface and configure a buffering application (either Bufserv or PIBufss).

17. Start the buffering application and the Interface. Confirm that the Interface works together with the buffering application by either physically removing the connection between the Interface Node and the PI Server Node or by stopping the PI Server.

18. Configure the Interface to run as a Service. Confirm that the Interface runs properly as a Service.

19. Restart the Interface Node and confirm that the Interface and the buffering application restart.

Interface Diagnostics

1. Configure Scan Class Performance points.

2. Install the PI Performance Monitor Interface (Full Version only) on the Interface Node.

3. Configure Performance Counter points.

4. Configure UniInt Health Monitoring points

5. Configure the I/O Rate point.

6. Install and configure the Interface Status Utility on the PI Server Node.

7. Configure the Interface Status point.

Advanced Interface Features

1. Configure the Interface for Disconnected Startup. Refer to the UniInt Interface User Manual for more details on UniInt Disconnect startup.

2. Configure UniInt Failover, see that section in this document for details related to configuring the interface for failover.

Interface Installation

OSIsoft recommends that interfaces be installed on a PI Interface Nodes instead of directly on the PIServer node. A PI Interface Node is any node other than the PI Server node where the PIApplication Programming Interface (PI API) has been installed (see the PI APImanual). With this approach, the PI Server need not compete with interfaces for the machines resources. The primary function of the PIServer is to archive data and to service clients that request data.

After the interface has been installed and tested, Buffering should be enabled on the PI Interface Node. Buffering refers to either PI API Buffer Server (Bufserv) or the PI Buffer Subsystem. For more information about Buffering see the Buffering section of this manual.

In most cases, interfaces on PI Interface Nodes should be installed as automatic services. Services keep running after the user logs off. Automatic services automatically restart when the computer is restarted, which is useful in the event of a power failure.

The guidelines are different if an interface is installed on the PI Server node. In this case, the typical procedure is to install the PI Server as an automatic service and install the interface as an automatic service that depends on the PI Update Manager and PI Network Manager services. This typical scenario assumes that Buffering is not enabled on the PI Server node. Bufserv can be enabled on the PI Server node so that interfaces on the PI Server node do not need to be started and stopped in conjunction with PI, but it is not standard practice to enable buffering on the PI Server node. The PI Buffer Subsystem can also be installed on the PI Server. See the UniInt Interface User Manual for special procedural information.

Naming Conventions and Requirements

In the installation procedure below, it is assumed that the name of the interface executable is PICimpi_HMIxx.exe and that the startup command file is called PICimpi_HMIxx.bat.

When Configuring the Interface Manually

It is customary for the user to rename the executable and the startup command file when multiple copies of the interface are run. For example, PICimpi_HMIxx1.exe and PICimpi_HMIxx1.bat would typically be used for interface number 1, PICimpi_HMIxx2.exe and PICimpi_HMIxx2.bat for interface number 2, and so on. When an interface is run as a service, the executable and the command file must have the same root name because the service looks for its command-line parameters in a file that has the same root name.

Interface Directories

PIHOME Directory Tree

The PIHOME directory tree is defined by the PIHOME entry in the pipc.iniconfiguration file. This pipc.ini file is an ASCII text file, which is located in the %windir% directory. A typical pipc.ini file contains the following lines:[PIPC]PIHOME=c:\pipc

The above lines define the \pipc directory as the root of the PIHOME directory tree on the C: drive. OSIsoft recommends using \pipc as the root directory name. The PIHOMEdirectory does not need to be on the C: drive.

Interface Installation Directory

The interface install kit will automatically install the interface to:

PIHOME\Interfaces\Cimplicity\

PIHOME is defined in the pipc.ini file.

Interface Installation Procedure

The PI CIMPI Interface setup program uses the services of the Microsoft Windows Installer. Windows Installer is a standard part of Windows 2000 and greater operating systems. To install, run the GECimpi_#.#.#.#.exe installation kit.

Installing Interface as a Windows Service

The PI CIMPI Interface service can be created, preferably, with the PI Interface Configuration Utility, or can be created manually.

Installing Interface Service with PI Interface Configuration Utility

The PI Interface Configuration Utility provides a user interface for creating, editing, and deleting the interface service:

Service Configuration

Service name

The Service name box shows the name of the current interface service. This service name is obtained from the interface executable.

ID

This is the service id used to distinguish multiple instances of the same interface using the same executable.

Display name

The Display Name text box shows the current Display Name of the interface service. If there is currently no service for the selected interface, the default Display Name is the service name with a PI- prefix. Users may specify a different Display Name. OSIsoft suggests that the prefix PI- be appended to the beginning of the interface to indicate that the service is part of the OSIsoft suite of products.

Log on as

The Log on as text box shows the current Log on as Windows User Account of the interface service. If the service is configured to use the Local System account, the Log on as text box will show LocalSystem. Users may specify a different Windows User account for the service to use.

Password

If a Windows User account is entered in the Log on as text box, then a password must be provided in the Password text box, unless the account requires no password.

Confirm password

If a password is entered in the Password text box, then it must be confirmed in the Confirm Password text box.

Dependencies

The Installed services list is a list of the services currently installed on this machine. Services upon which this interface is dependent should be moved into the Dependencies list using the button. For example, if API Buffering is running, then bufserv should be selected from the list at the right and added to the list on the left. To remove a service from the list of dependencies, use the button, and the service name will be removed from the Dependencies list.

When the interface is started (as a service), the services listed in the dependency list will be verified as running (or an attempt will be made to start them). If the dependent service(s) cannot be started for any reason, then the interface service will not run.

Note: Please see the PI Log and Windows Event Logger for messages that may indicate the cause for any service not running as expected.

- Add Button

To add a dependency from the list of Installed services, select the dependency name, and click the Add button.

- Remove Button

To remove a selected dependency, highlight the service name in the Dependencies list, and click the Remove button.

The full name of the service selected in the Installed services list is displayed below the Installed services list box.

Startup Type

The Startup Type indicates whether the interface service will start automatically or needs to be started manually on reboot.

If the Auto option is selected, the service will be installed to start automatically when the machine reboots.

If the Manual option is selected, the interface service will not start on reboot, but will require someone to manually start the service.

If the Disabled option is selected, the service will not start at all.

Generally, interface services are set to start automatically.

Create

The Create button adds the displayed service with the specified Dependencies and with the specified Startup Type.

Remove

The Remove button removes the displayed service. If the service is not currently installed, or if the service is currently running, this button will be grayed out.

Start or Stop Service

The toolbar contains a Start button and a Stop button . If this interface service is not currently installed, these buttons will remain grayed out until the service is added. If this interface service is running, the Stop button is available. If this service is not running, the Start button is available.

The status of the Interface service is indicated in the lower portion of the PI ICU dialog.

Installing Interface Service Manually

Help for installing the interface as a service is available at any time with the command:PICimpi_HMIxx.exe help

Open a Windows command prompt window and change to the directory where the PICimpi_HMIxx1.exe executable is located. Then, consult the following table to determine the appropriate service installation command.

Windows Service Installation Commands on a PI Interface Node or a PI Server Nodewith Bufserv implemented

Manual service

PICimpi_HMIxx.exe -install -depend "tcpip bufserv"

Automatic service

PICimpi_HMIxx.exe -install -auto -depend "tcpip bufserv"

*Automatic service with service id

PICimpi_HMIxx.exe -serviceid X -install -auto -depend "tcpip bufserv"

Windows Service Installation Commands on a PI Interface Node or a PI Server Nodewithout Bufserv implemented

Manual service

PICimpi_HMIxx.exe -install -depend tcpip

Automatic service

PICimpi_HMIxx.exe -install -auto -depend tcpip

*Automatic service with service id

PICimpi_HMIxx.exe -serviceid X -install -auto -depend tcpip

*When specifying service id, the user must include an id number. It is suggested that this number correspond to the interface id (/id) parameter found in the interface .bat file.

Check the Microsoft Windows Services control panel to verify that the service was added successfully. The services control panel can be used at any time to change the interface from an automatic service to a manual service or vice versa.

Connection Tool

The interface does not have its own connection tool. However, the user should run the CIMPLICITY Point Control Panel on the node where the interface is being run, which will allow the user to verify that it is able to collect data from the CIMPLICITY project.

Digital States

For more information regarding Digital States, refer to the PI Server documentation.

Digital State Sets

PI digital states are discrete values represented by strings. These strings are organized in PI as digital state sets. Each digital state set is a user-defined list of strings, enumerated from 0 to n to represent different values of discrete data. For more information about PIdigital tags and editing digital state sets, see the PI Server manuals.

An interface point that contains discrete data can be stored in PI as a digital tag. A Digitaltag associates discrete data with a digital state set, as specified by the user.

System Digital State Set

Similar to digital state sets is the system digital state set. This set is used for all tags, regardless of type to indicate the state of a tag at a particular time. For example, if the interface receives bad data from an interface point, it writes the system digital state badinput to PI instead of a value. The system digital state set has many unused states that can be used by the interface and other PI clients. Digital States 193-320 are reserved for OSIsoft applications.

PointSource

The PointSource is a unique, single or multi-character string that is used to identify the PI point as a point that belongs to a particular interface. For example, the string Boiler1 may be used to identify points that belong to the MyInt Interface. To implement this, the PointSource attribute would be set to Boiler1 for every PI Point that is configured for the MyInt Interface. Then, if /ps=Boiler1 is used on the startup command-line of the MyInt Interface, the Interface will search the PI Point Database upon startup for every PI point that is configured with a PointSource of Boiler1. Before an interface loads a point, the interface usually performs further checks by examining additional PI point attributes to determine whether a particular point is valid for the interface. For additional information, see the /ps parameter.

Case-sensitivity for PointSource Attribute

The PointSource character that is supplied with the /ps command-line parameter is not case sensitive. That is, /ps=P and /ps=p are equivalent.

Reserved Point Sources

Several subsystems and applications that ship with PI are associated with default PointSource characters. The Totalizer Subsystem uses the PointSource character T, the Alarm Subsystem uses G and @, Random uses R, RampSoak uses 9, and the Performance Equations Subsystem uses C. Do not use these PointSource characters or change the default point source characters for these applications. Also, if a PointSource character is not explicitly defined when creating a PIpoint; the point is assigned a default PointSource character of Lab (PI 3). Therefore, it would be confusing to use Lab as the PointSource character for an interface.

Note: Do not use a point source character that is already associated with another interface program. However it is acceptable to use the same point source for multiple instances of an interface.

PI Point Configuration

The PI point is the basic building block for controlling data flow to and from the PIServer. A single point is configured for each measurement value that needs to be archived.

Point Attributes

Use the point attributes below to define the PI Point configuration for the Interface, including specifically what data to transfer.

Tag

The Tag attribute (or tagname) is the name for a point. There is a one-to-one correspondence between the name of a point and the point itself. Because of this relationship, PI documentation uses the terms tag and point interchangeably.

Follow these rules for naming PI points:

The name must be unique on the PI Server.

The first character must be alphanumeric, the underscore (_), or the percent sign (%).

Control characters such as linefeeds or tabs are illegal.

The following characters also are illegal: * ? ; { } [ ] | \ `

Length

Depending on the version of the PI API and the PI Server, this Interface supports tags whose length is at most 255 or 1023 characters. The following table indicates the maximum length of this attribute for all the different combinations of PI API and PI Server versions.

PI API

PI Server

Maximum Length

1.6.0.2 or higher

3.4.370.x or higher

1023

1.6.0.2 or higher

Below 3.4.370.x

255

Below 1.6.0.2

3.4.370.x or higher

255

Below 1.6.0.2

Below 3.4.370.x

255

If the PI Server version is earlier than 3.4.370.x or the PI API version is earlier than 1.6.0.2, and you want to use a maximum tag length of 1023, you need to enable the PI SDK. See Appendix B for information.

PointSource

The PointSource is a unique, single or multi-character string that is used to identify the PI point as a point that belongs to a particular interface. For additional information, see the /pscommand-line parameter and the PointSource section.

PointType

Typically, device point types do not need to correspond to PI point types. For example, integer values from a device can be sent to floating point or digital PI tags. Similarly, a floating-point value from the device can be sent to integer or digital PI tags, although the values will be truncated.

Float16, float32, float 64, int16, int32, digital, and string point types are supported. For more information on the individual PointTypes, see PI Server manuals.

Location1

Location1 indicates to which copy of the interface the point belongs. The value of this attribute must match the /id startup parameter.

Location2

Location2 is used to specify the debug level for this tag. There are four sections of the interface that can have informational messages logged on a per tag basis. They are when the point is being added, when the point is being removed, when the interface is saving data for the point and when the interface is outputting the points data to the Cimplicity software. Each of these sections has the following values associated with it.

Add Point = 1

Remove Point = 2

Save Data = 4

Output Data = 8

Informational messages from the different sections of the interface can be combined by adding the sections values. For example, in order to print to the log file messages from when the point is being added and when the point is saving data, the Location2 should be set to 5.

Location3

0 = input; retrieve data from Cimplicity and store the data in PI

1 = output; retrieve data from PI and send to Cimplicity

Location4

Since the interface only supports unsolicited inputs and outputs, the interface does not use this location.

Location5

This parameter is used to specify whether the PI point should receive a Cimplicity scaled value or the raw value. If Location5 is set to zero 0, the point will receive the raw value. If it is set to any value other than zero 0, then the point will receive a scaled value.

Note: In order for the point to receive a scaled value, its conversion expression and reverse conversion expression (if the conversion is nonlinear) must be configured in the EU_CONV.dat file under the ProjectName\DATA directory. Please see the GE Cimplicity documentation for information on how to configure a point to display engineering unit converted values. Cimplicity Engineering Unit (EU) conversion is not available for Cimplicity complex (array) points.

For Output tags, Cimplicity does not allow the EU conversion to be changed during run-time. If the EU conversion for output points needs to be changed after the interface has started, the interface will need to be shutdown and restarted.

InstrumentTag

Length

Depending on the version of the PI API and the PI Server, this Interface supports an InstrumentTag attribute whose length is at most 32 or 1023 characters. The following table indicates the maximum length of this attribute for all the different combinations of PI API and PI Server versions.

PI API

PI Server

Maximum Length

1.6.0.2 or higher

3.4.370.x or higher

1023

1.6.0.2 or higher

Below 3.4.370.x

32

Below 1.6.0.2

3.4.370.x or higher

32

Below 1.6.0.2

Below 3.4.370.x

32

If the PI Server version is earlier than 3.4.370.x or the PI API version is earlier than 1.6.0.2, and you want to use a maximum InstrumentTag length of 1023, you need to enable the PI SDK. See Appendix B for information.

This field contains the exact CIMPLICITY point id.

Do not use fully qualified point ids (\\project\pointid) in this field. The interface generates fully qualified point IDs concatenating the project passed in the command-line parameter with the InstrumentTag.

Complex Data

In order to send or receive a value to a specific element of a Cimplicity point, this field must be configured precisely. This syntax for the InstrumentTag field must be configured as follows with no spaces between fields.

point_id || index

Where point_id is the exact Cimplicity point identification.

Where || is a double pipe string that acts as a delimiter between the point identification and element index. The pipe character | is normally located above the enter key on a standard keyboard layout.

Where index is the specific element of the Cimplicity point of interest. The indexes are zero-based.

For example, if point Foo is defined in Cimplicity to be of type REAL and contains five elements, the InstrumentTag attribute for each of the elements would be listed as shown below. All element indexes are zero-based.

Foo||0

Foo||1

Foo||2

Foo||3

Foo||4

Note: The interface will not accept tags defined for both standard and complex data for the same Cimplicity point identification. The interface will accept whichever InstrumentTag type it receives first and then reject the others, if any. If it receives an InstrumentTag with just the point_id field defined, then it will reject all InstrumentTags defined as complex for that point_id even if the point_id is defined as a complex point in Cimplicity. In this case, the tag will reference element index 0 of the Cimplicity point. A message will be written to the pipc.log file if a tag is rejected for any reason.

ExDesc

The interface does not use the ExDesc point attribute.

Scan

By default, the Scan attribute has a value of 1, which means that scanning is turned on for the point. Setting the scan attribute to 0 turns scanning off. If the scan attribute is 0 when the interface starts, a message is written to the pipc.log and the tag is not loaded by the interface. There is one exception to the previous statement.

If any PI Point is removed from the interface while the interface is running (including setting the scan attribute to 0), SCAN OFF will be written to the PI Point regardless of the value of the Scan attribute. Two examples of actions that would remove a PI Point from an interface are to change the point source or set the scan attribute to 0. If an interface specific attribute is changed that causes the tag to be rejected by the interface, SCAN OFF will be written to the PI point.

Shutdown

The Shutdown attribute is 1 (true) by default. The default behavior of the PI Shutdown subsystem is to write the SHUTDOWN digital state to all PI points when PI is started. The timestamp that is used for the SHUTDOWN events is retrieved from a file that is updated by the Snapshot Subsystem. The timestamp is usually updated every 15 minutes, which means that the timestamp for the SHUTDOWN events will be accurate to within 15minutes in the event of a power failure. For additional information on shutdown events, refer to PI Server manuals.

Note: The SHUTDOWN events that are written by the PI Shutdown subsystem are independent of the SHUTDOWN events that are written by the interface when the /stopstat=Shutdown command-line parameter is specified.

SHUTDOWN events can be disabled from being written to PI when PI is restarted by setting the Shutdown attribute to 0 for each point. Alternatively, the default behavior of the PI Shutdown Subsystem can be changed to write SHUTDOWN events only for PIpoints that have their Shutdown attribute set to 0. To change the default behavior, edit the \PI\dat\Shutdown.dat file, as discussed in PI Server manuals.

Bufserv and PIBufSS

It is undesirable to write shutdown events when buffering is being used. Bufserv and PIBufSS are utility programs that provide the capability to store and forward events to a PIServer, allowing continuous data collection when the Server is down for maintenance, upgrades, backups, and unexpected failures. That is, when PI is shutdown, Bufserv or PIBufSS will continue to collect data for the interface, making it undesirable to write SHUTDOWN events to the PI points for this interface. Disabling Shutdown is recommended when sending data to a Highly Available PIServer Collective. Refer to the Bufserv or PIBufSS manuals for additional information.

UserInt1

This field is used to turn on sub-second timestamps for a specific PI Point. The default value of this attribute is zero. Setting this field to any value other than zero 0 will turn on sub-second time stamping for the PI Point. There will be a larger amount of storage consumption when using this feature due to the larger storage requirements for saving sub-seconds timestamps.

Output Points

Output points control the flow of data from the PI Server to any destination that is external to the PI Server, such as a PLC or a third-party database. For example, to write a value to a register in a PLC, use an output point. Each interface has its own rules for determining whether a given point is an input point or an output point. There is no de facto PI point attribute that distinguishes a point as an input point or an output point.

Outputs are triggered for UniInt-based interfaces. That is, outputs are not scheduled to occur on a periodic basis. There are two mechanisms for triggering an output.

As of UniInt 3.3.4, event conditions can be placed on triggered outputs. The conditions are specified using the same event condition keywords in the extended descriptor as described below.The only difference is that the trigger tag is specified with the SourceTag attribute instead of with the event or trig keywords. Otherwise, the behavior of event conditions described under Trigger-Based Inputs is identical for output points. For output points, event conditions are specified in the extended descriptor as follows:

event_condition

The keywords in the following table can be used to specify trigger conditions.

Event Condition

Description

Anychange

Trigger on any change as long as the value of the current event is different than the value of the previous event. System digital states also trigger events. For example, an event will be triggered on a value change from 0 to Bad Input, and an event will be triggered on a value change from Bad Input to 0.

Increment

Trigger on any increase in value. System digital states do not trigger events. For example, an event will be triggered on a value change from 0 to 1, but an event will not be triggered on a value change from Pt Created to 0. Likewise, an event will not be triggered on a value change from 0 to Bad Input.

Decrement

Trigger on any decrease in value. System digital states do not trigger events. For example, an event will be triggered on a value change from 1 to 0, but an event will not be triggered on a value change from Pt Created to 0. Likewise, an event will not be triggered on a value change from 0 to Bad Input.

Nonzero

Trigger on any non-zero value. Events are not triggered when a system digital state is written to the trigger tag. For example, an event is triggered on a value change from Pt Created to 1, but an event is not triggered on a value change from 1 to Bad Input.

Trigger Method 1 (Recommended)

For trigger method 1, a separate trigger point must be configured. The output point must have the same point source as the interface. The trigger point can be associated with any point source, including the point source of the interface. Also, the point type of the trigger point does not need to be the same as the point type of the output point.

The output point is associated with the trigger point by setting the SourceTag attribute of the output point equal to the tag name of the trigger point. An output is triggered when a new value is sent to the Snapshot of the trigger point. The new value does not need to be different than the previous value that was sent to the Snapshot to trigger an output, but the timestamp of the new value must be more recent than the previous value. If no error is indicated, then the value that was sent to the trigger point is also written to the output point. If the output is unsuccessful, then an appropriate digital state that is indicative of the failure is usually written to the output point. If an error is not indicated, the output still may not have succeeded because the interface may not be able to tell with certainty that an output has failed.

Trigger Method 2

For trigger method 2, a separate trigger point is not configured. To trigger an output, write a new value to the Snapshot of the output point itself. The new value does not need to be different than the previous value to trigger an output, but the timestamp of the new value must be more recent than the previous value.

Trigger method 2 may be easier to configure than trigger method 1, but trigger method 2 has a significant disadvantage. If the output is unsuccessful, there is no tag to receive a digital state that is indicative of the failure, which is very important for troubleshooting.

Startup Command File

Command-line parameters can begin with a / or with a -. For example, the /ps=M and ps=M command-line parameters are equivalent.

For Windows, command file names have a .bat extension. The Windows continuation character (^) allows for the use of multiple lines for the startup command. The maximum length of each line is 1024 characters (1 kilobyte). The number of parameters is unlimited, and the maximum length of each parameter is 1024 characters.

The PI Interface Configuration Utility (PI ICU) provides a tool for configuring the Interface startup command file.

Configuring the Interface with PI ICU

Note: PI ICU requires PI 3.3 or greater.

The PI Interface Configuration Utility provides a graphical user interface for configuring PI interfaces. If the interface is configured by the PI ICU, the batch file of the interface (PICimpi_HMIxx.bat) will be maintained by the PI ICU and all configuration changes will be kept in that file and the module database. The procedure below describes the necessary steps for using PI ICU to configure the PI CIMPI Interface.

From the PI ICU menu, select Interface, then NewWindows Interface Instance from EXE..., and then Browse to the PICimpi_HMIxx.exe executable file. Then, enter values for Point Source and Interface ID#. A window such as the following results:

Interface name as displayed in the ICU (optional) will have PI- pre-pended to this name and it will be the display name in the services menu.

Click on Add.

The following display should appear:

Note that in this example the Host PI System is mkellyD630. To configure the interface to communicate with a remote PI Server, select Interface => Connections item from PI ICU menu and select the default server. If the remote node is not present in the list of servers, it can be added.

Once the interface is added to PI ICU, near the top of the main PI ICU screen, the Interface Type should be gecimpi If not, use the drop-down box to change the Interface Type to be gecimpi.

Click on Apply to enable the PI ICU to manage this copy of the Cimpi Interface.

The next step is to make selections in the interface-specific tab (i.e. gecimpi) that allow the user to enter values for the startup parameters that are particular to the PI CIMPI Interface.

Since the PI CIMPI Interface is a UniInt-based interface, in some cases the user will need to make appropriate selections in the UniInt page. This page allows the user to access UniInt features through the PI ICU and to make changes to the behavior of the interface.

To set up the interface as a Windows Service, use the Service page. This page allows configuration of the interface to run as a service as well as to starting and stopping of the interface. The interface can also be run interactively from the PI ICU. To do that go to menu, select the Interface item and then Start Interactive.

For more detailed information on how to use the above-mentioned and other PI ICU pages and selections, please refer to the PI Interface Configuration Utility User Manual. The next section describes the selections that are available from the gecimpi page. Once selections have been made on the PI ICU GUI, press the Apply button in order for PI ICU to make these changes to the interfaces startup file.

gecimpi Interface page

Since the startup file of the PI CIMPI Interface is maintained automatically by the PI ICU, use the gecimpi page to configure the startup parameters and do not make changes in the file manually. The following is the description of interface configuration parameters used in the PI ICU Control and corresponding manual parameters.

gecimpiGeneral and Time Tab

Project name

This specifies the name of the CIMPLICITY project this instance of the interface will communicate with. The command-line equivalent is /project=name and is a required parameter.

Watchdog service

This specifies the complete path, including the executable name, and the name of the service(s) to monitor. The watchdog application provided with the PI CIMPI Interface will check once every minute to determine if the service(s) is running. If the service(s) is not running, the watchdog application will send a service control request to start the service.

The quotation marks surrounding the exe name and the names of the services to monitor are not required when using the ICU.

The command-line equivalent is /wd=exe service [service] and is an optional parameter.

Set behavior for 24511 error code

This specified the interface behavior when the Point is currently unavailable (24511) error code is received for data points.

The command-line equivalent is /CimpiError24511=#, where # is 0-3, Default:0 and is an option parameter.

Subsecond

This specifies whether or not sub-second timestamps will be used for all PI Points loaded by the interface.

The command-line equivalent is /subsec=Yes/No and is an optional parameter with a default value of NO.

Timestamp

This specifies the source of the timestamps used for the data. There are 3 valid values for source: Foreign, Server, and Adjusted.

The command-line equivalent is /time=source and is an optional parameter with a default value of SERVER.

Rate exception based data

This specifies the rate at which the PI-GECimpi interface requests the exception based data from the CIMPLICITY server.

The command-line equivalent is /sr=rate and is an optional parameter with a default value of 250.

Timeout

This specifies the number of seconds the interface will wait before writingI/OTIMEOUT to the PI tags.

The command-line equivalent is /timeout=sec and is an optional parameter with a default value of 0.

Local time offset

This specifies a number of seconds to add to the timestamps received from the Cimplicity API.

The command-line equivalent is /timelocaloffset=sec and is an optional parameter with a default value of 0.

Additional Parameters

In the space provided the user can enter any additional parameters that are not available through PI ICU.

Debug Tab

Maximum debug settings

This specifies that the interface should use all possible debug levels. Checking this box will check all the individual settings.

The command-line equivalent is /cimpidbg=8191 and is an optional parameter with a default value of 0.

No Debug settings

This specifies that the interface is to use the default of no debug level logging. Checking this box will uncheck any of the individual settings.

The command-line equivalent is /cimpidbg=0 and is an optional parameter with a default value of 0.

Individual Debug levels

These individual debug levels can be combined by checking the individual boxes. The combined value will be displayed in the Debug level: text box at the lower right. Informational messages from the different sections of the interface can be combined by adding the debug level values. See the section /cimpidbg in the Command-line Parameters section for more information.

The command-line equivalent is /cimpidbg=n and is an optional parameter with a default value of 0.

Command-line Parameters

Parameter

Description

/CimpiError24511=x

Optional

Default = 0

The /CimpiError24511 parameter specifies interface behavior when the Point is currently unavailable (24511) error code is received for data points.

0 Write Bad Input to the associated PI point when the 24511 error code is received. This is the default behavior.

1 Send the received value and set the questionable bit for the associated PI point when the 24511 error code is received. The questionable bit is cleared upon reception of good data.

2 Send the received value for the associated PI point when the 24511 error code is received.

3 Ignore the received value when the 24511 error code is received. For debugging, set the interface debug level, /cimpidbg=16, to log the ignored value to the pipc.log file.

/cimpidbg=x

Optional

Default = 0

The /cimpidbg parameter the debug level for the interface. Informational messages from the different sections of the interface can be combined by adding the debug level values.

Initialize = 1 Time

= 128

Add Point = 2 WatchDog = 256

Load SL = 4 EU Conv = 512

Remove Point= 8 Save Statics = 1024

Get Data = 16 All PTMAP = 2048

Save Data= 32 Read Tag = 4096

Output Data= 64

/ec=#

Optional

The first instance of the /ec parameter on the command-line is used to specify a counter number, #, for an I/O Rate point. If the # is not specified, then the default event counter is 1. Also, if the /ec parameter is not specified at all, there is still a default event counter of 1 associated with the interface. If there is an I/O Rate point that is associated with an event counter of 1, each copy of the interface that is running without /ec=#explicitly defined will write to the same I/O Rate point. This means either explicitly defining an event counter other than 1 for each copy of the interface or not associating any I/O Rate points with event counter 1. Configuration of I/O Rate points is discussed in the section called I/O Rate Tag Configuration.

Subsequent instances of the /ecparameter may be used by specific interfaces to keep track of various input or output operations. Subsequent instances of the /ec parameter can be of the form /ec*, where * is any ASCII character sequence. For example, /ecinput=10, /ecoutput=11, and /ec=12 are legitimate choices for the second, third, and fourth event counter strings.

/host=host:port

Required

The /host parameter is used to specify the PI Home node. Host is the IP address of the PI Sever node or the domain name of the PI Server node. Port is the port number for TCP/IP communication. The port is always 5450. It is recommended to explicitly define the host and port on the command-line with the /host parameter. Nevertheless, if either the host or port is not specified, the interface will attempt to use defaults.

Examples:The interface is running on a PI Interface Node, the domain name of the PIhome node is Marvin, and the IP address of Marvin is 206.79.198.30. Valid /host parameters would be:/host=marvin /host=marvin:5450 /host=206.79.198.30/host=206.79.198.30:5450

/id=x

Highly Recommended

The /id parameter is used to specify the interface identifier.

The interface identifier is a string that is no longer than 9 characters in length. UniInt concatenates this string to the header that is used to identify error messages as belonging to a particular interface. See the Appendix A: Error and Informational Messages for more information.

UniInt always uses the /id parameter in the fashion described above. This interface also uses the /id parameter to identify a particular interface copy number that corresponds to an integer value that is assigned to one of the Location code point attributes, most frequently Location1. For this interface, use only numeric characters in the identifier. For example,

/id=1

/LocalTimeOffset=#

Optional

Default = 0

The /LocalTimeOffset parameter specifies a number of seconds to add to the timestamps received from the Cimplicity API. This flag would only be required if the Cimplicity UTC time is different than the UTC time of PI server. This flag only applies if the /time flag is set to Server.

/project=name

Required

The /project parameter specifies the name of the CIMPLICITY project this instance of the interface will communicate with.

/ps=x

Required

The /ps parameter specifies the point source for the interface. X is not case sensitive and can be any multiple character string. For xample, /ps=P and /ps=p are equivalent.

The point source that is assigned with the /ps parameter corresponds to the PointSource attribute of individual PI Points. The interface will attempt to load only those PI points with the appropriate point source.

/sio

Optional

The /sio parameter stands for suppress initial outputs. The parameter applies only for interfaces that support outputs. If the /sio parameter is not specified, the interface will behave in the following manner.

When the interface is started, the interface determines the current Snapshot value of each output tag. Next, the interface writes this value to each output tag. In addition, whenever an individual output tag is edited while the interface is running, the interface will write the current Snapshot value to the edited output tag.

This behavior is suppressed if the /sio parameter is specified on the command-line. That is, outputs will not be written when the interface starts or when an output tag is edited. In other words, when the /sioparameter is specified, outputs will only be written when they are explicitly triggered.

/sr=x

Optional

Default = 250

The /sr flag specifies the rate at which the PI CIMPI Interface requests the exception based data from the CIMPLICITY server. Rate is in milliseconds and the minimum allowable value is 10 and the maximum is 1000.

/stopstator/stopstat=digstate

Default:/stopstat=Intf Shut

Optional

If the /stopstat parameter is present on the startup command line, then the digitalstate Intf Shut will be written to each PI Point when the interface is stopped.

If /stopstat=digstate is present on the command line, then the digital state, digstate, will be written to each PI Point when the interface is stopped. For a PI 3 Server, digstate must be in the system digital state table. UniInt uses the first occurrence in the table.

If neither /stopstat nor /stopstat=digstate is specified on the command line, then no digital states will be written when the interface is shut down.

Note: The /stopstat parameter is disabled If the interface is running in a UniInt failover configuration as defined in the UniInt Failover Configuration section of this manual. Therefore, the digital state, digstate, will not be written to each PI Point when the interface is stopped. This prevents the digital state being written to PI Points while a redundant system is also writing data to the same PI Points. The /stopstat parameter is disabled even if there is only one interface active in the failover configuration.

Examples:/stopstat=shutdown/stopstat=Intf Shut

The entire digstate value should be enclosed within double quotes when there is a space in digstate.

/subsec=yes/no

Optional

Default = no

The /subsec flag specifies the whether or not sub-second timestamps will be used for all PI Points loaded by the interface. The two valid values for the /subsec flag are yes and no.

Individual points may be set to receive sub-second resolution. See the UseInt1 attribute of the PI Point Configuration section of this manual for further details.

/time=source

Optional

Default =Server

The /time flag specifies the source of the timestamps used for the data. There are 3 valid values for source: Foreign, Server, and Adjusted. Foreign instructs the interface to use the raw time received from CIMPLICITY. Server instructs the interface to use the PI time the event was received. Adjusted instructs the interface to use the adjusted time from the CIMPLICITY. The PI CIMPI Interface queries the CIMPLICITY server at start-up and then once every minute for the current time and compares the CIMPLICITY time with the current time from the PI server. The interface uses the difference between the two times to determine an offset. This offset is then used to adjust the time of the CIMPLICITY event to the PI time. A new offset will only be applied if it differs by more than 5 seconds from the last offset and a message will be printed when a new time offset will be used.

/timeout=sec

Optional

Default = 0

The /timeout flag specifies the number of seconds the interface will wait before writing I/O TIMEOUT to the PI tags. At start-up, the interface will try to communicate to the CIMPLICITY project and if it is unsuccessful, the interface will wait sec seconds before writing I/O TIMEOUT. This is to allow the CIMPLICITY project to come up fully and start communicating to the interface. If the value is 0 or if the /timeout flag is not found in the start-up parameters, then I/O TIMEOUT will never be written to the PI tags.

/wd=exe service [service]

Optional

Default = None

The /wd flag specifies the complete path, including the executable name, and the name of the service(s) to monitor. The watchdog application provided with the PICIMPI interface will check once every minute to determine if the service(s) is running. If the service(s) is not running, the watchdog application will send a service control request to start the service.

The quotation marks surrounding the exe name and the names of the services to monitor are very important. If the quotation marks are left off, the standard parsing algorithm treats each service name as a separate interface parameter.

The name of the exe should be the entire path to the executable including the .exe. The watchdog app creates a log file with the same path and name as the executable with the .exe changed to .log.

Only one instance of the watchdog application can be run on a given machine at a time. If multiple copies of the interface are being run on the same machine, just put the multiple service names in the /wd flag in one instance of the interface.

Example:

/wd=C:\PIPC\Cimpi\WatchDog.exe PICIMPI_1 PICIMPI_2

Sample PICimpi_HMIxx.bat File

The following is an example file:

REM=======================================================================

REM

REMPICimpi_HMIxx.bat

REM

REM Sample startup file for the GE Cimplicity Interface to the

REM PI System

REM

REM=======================================================================

REM

REM OSIsoft strongly recommends using PI ICU to modify startup files.

REM

REM Sample command line

REM

.\PICimpi_HMI75.exe ^

/host=XXXXX:5450 ^

/ps=CIMPI /id=1 ^

/project=cimpiproj ^

/timeout=20 ^

/CimpiDbg=0 ^

/sr=500 ^

/time=server^

/wd="C:\PIPC\Interfaces\Cimplicity\WatchDog.exe PICimpi_1 PICimpi_2"

REM

REM End of PICimpi_HMIxx.bat File

UniInt Failover Configuration

Introduction

To minimize data loss during a single point of failure within a system, UniInt provides two failover schemas: (1) synchronization through the data source and (2)synchronization through a shared file. Synchronization through the data source is Phase 1, and synchronization through a shared file is Phase 2.

Phase 1 UniInt Failover uses the data source itself to synchronize failover operations and provides a hot failover, no data loss solution when a single point of failure occurs. For this option, the data source must be able to communicate with and provide data for two interfaces simultaneously. Additionally, the failover configuration requires the interface to support outputs.

Phase 2 UniInt Failover uses a shared file to synchronize failover operations and provides for hot or cold failover. The Phase 2 hot failover configuration provides a no data loss solution for a single point of failure similar to Phase 1. However, in cold failover configurations, you can expect a small period of data loss during a single point of failure transition.

Note:Although both failover methods successfully maintain continuous data flow OSIsoft recommends using Phase 2 because it is supported by more interfaces.

Phase 1 is appropriate in only two situations: (1) if performance degradation occurs using the shared file or (2) read/write permissions for the shared file cannot be granted to both interfaces.

You can also configure the UniInt interface level failover to send data to a High Availability (HA) PIServer collective. The collective provides redundant PIServers to allow for the uninterrupted collection and presentation of PI time series data. In an HA configuration, PIServers can be taken down for maintenance or repair. The HA PIServer collective is described in the PIServer Reference Guide.

When configured for UniInt failover, the interface routes all PI data through a state machine. The state machine determines whether to queue data or send it directly to PI depending on the current state of the interface. When the interface is in the active state, data sent through the interface gets routed directly to PI. In the backup state, data from the interface gets queued for a short period. Queued data in the backup interface ensures a no-data loss failover under normal circumstances for Phase1 and for the hot failover configuration of Phase2. The same algorithm of queuing events while in backup is used for output data.

Quick Overview

The Quick Overview below may be used to configure this Interface for failover. The failover con