PI Universal Interface (UniInt) 4.6.4 User Guide OSIsoft, LLC 1600 Alvarado Street San Leandro, CA 94577 USA Tel: (01) 510-297-5800 Fax: (01) 510-357-8136 Web: http://www.osisoft.com PI Universal Interface (UniInt) 4.6.4 User Guide © 1992-2018 by OSIsoft, LLC. 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, LLC. OSIsoft, the OSIsoft logo and logotype, Managed PI, OSIsoft Advanced Services, OSIsoft Cloud Services, OSIsoft Connected Services, PI ACE, PI Advanced Computing Engine, PI AF SDK, PI API, PI Asset Framework, PI Audit Viewer, PI Builder, PI Cloud Connect, PI Connectors, PI Data Archive, PI DataLink, PI DataLink Server, PI Developer’s Club, PI Integrator for Business Analytics, PI Interfaces, PI JDBC driver, PI Manual Logger, PI Notifications, PI ODBC, PI OLEDB Enterprise, PI OLEDB Provider, PI OPC HDA Server, PI ProcessBook, PI SDK, PI Server, PI Square, PI System, PI System Access, PI Vision, PI Visualization Suite, PI Web API, PI WebParts, PI Web Services, RLINK, and RtReports are all trademarks of OSIsoft, LLC. All other trademarks or trade names used herein are the property of their respective owners. U.S. GOVERNMENT RIGHTS Use, duplication or disclosure by the U.S. Government is subject to restrictions set forth in the OSIsoft, LLC license agreement and as provided in DFARS 227.7202, DFARS 252.227-7013, FAR 12.212, FAR 52.227, as applicable. OSIsoft, LLC. Version: 4.6.4 Published: 15 February 2018 Contents Introduction to PI Universal Interface.......................................................................... 1 Related documentation for UniInt interfaces................................................................................................... 1 Operational overview for UniInt interfaces...................................................................................................... 2 UniInt-based interfaces................................................................................................................................... 3 Configuration overview for UniInt interfaces................................................................ 5 Startup configuration overview....................................................................................................................... 5 Create interface instances........................................................................................................................... 5 Configure the batch file............................................................................................................................... 6 Interface security configuration overview........................................................................................................ 7 Read-only and read-write interfaces............................................................................................................ 7 Security requirements and best practices for interfaces...............................................................................8 Create the interface service....................................................................................................................... 12 PI Data Archive security............................................................................................................................. 13 UniInt input and output point configuration...................................................................................................16 PI Point attributes...................................................................................................................................... 16 Input points............................................................................................................................................... 23 Output points............................................................................................................................................ 25 Manually update the snapshot...................................................................................................................26 UniInt failover configuration overview........................................................................................................... 27 Hot, warm, and cold failover modes.......................................................................................................... 29 Configure interface failover....................................................................................................................... 30 Test the failover configuration................................................................................................................... 36 Convert from phase 1 to phase 2 failover....................................................................................................37 Failover configuration for redundant data sources..................................................................................... 38 UniInt failover scenarios............................................................................................................................ 40 Disconnected startup overview......................................................................................................................43 Limitations of disconnected startup...........................................................................................................45 Configure disconnected startup.................................................................................................................46 Build cache files on remote interface machines......................................................................................... 46 Interface buffering overview.......................................................................................................................... 47 Performance and status points...................................................................................................................... 48 Health points............................................................................................................................................. 50 Performance counter points.......................................................................................................................55 Create performance points........................................................................................................................ 58 I/O rate points............................................................................................................................................58 Failover status points.................................................................................................................................59 UniInt interface operation........................................................................................ 61 Start the interface......................................................................................................................................... 61 Stop the interface..........................................................................................................................................61 PI point updates............................................................................................................................................ 62 Modify point check frequency....................................................................................................................62 Process large point updates....................................................................................................................... 62 UniInt diagnostics and troubleshooting......................................................................................................... 63 Start and stop the interface interactively................................................................................................... 63 Disable exception reporting.......................................................................................................................64 Hit, missed, and skipped scans.................................................................................................................. 64 PI Universal Interface (UniInt) 4.6.4 User Guide iii Contents Use command prompts............................................................................................................................. 65 UniInt parameter reference....................................................................................................................... 65 View Windows performance counters........................................................................................................ 77 Error and informational messages............................................................................................................. 78 Technical support and other resources....................................................................... 87 iv PI Universal Interface (UniInt) 4.6.4 User Guide Introduction to PI Universal Interface PI Universal Interface (UniInt) is an OSIsoft framework for interfaces to PI Data Archive. UniInt provides generic functions required by most interfaces, such as establishing a connection to a PI Data Archive node and monitoring changes to PI points. The UniInt framework ensures a standard set of features for OSIsoft interfaces. PI Universal Interface (UniInt) User Guide explains the operation and functionality provided by the UniInt framework. Each interface includes a user guide that describes its specific features, configuration, function and usage. PI Server naming conventions OSIsoft is revising its terminology to reflect the growth of the PI System from its original singleserver architecture. In the revised terminology, PI Data Archive is the component that stores time-series data (formerly called PI Server). PI Server is the entire suite of PI System server products, and includes both PI Data Archive and PI Asset Framework. This document uses the revised terminology. Related documentation for UniInt interfaces UniInt interfaces use and interact with many other components of the PI System. For related information, refer to the following documents: • Read-only versus Read-write Interfaces FAQ Describes information on the differences between read-only and read-write interfaces, and instructions for migrating from the read-write to the read-only option. See "Read-only versus read-write interfaces" in Live Library (https://livelibrary.osisoft.com) . • PI Server System Management Guide Documentation for managing PI Server installations, interfaces, PI points, and digital state sets. See the PI Server System Management Guide (https://techsupport.osisoft.com/ Downloads/File/b481399c-463e-4bcb-a93f-6ef85295263e) for more information. • PI Server Configuring PI Server Security Includes information about PI Data Archive security. See the Configuring PI Server Security (https://techsupport.osisoft.com/Downloads/File/ 349de824-dd52-44a3-a8e1-ef0316537f8d) for more information. • High Availability Administrator Guide Describes how to configure high availability and manage PI Data Archive and interface installations when using PI collectives. See the High Availability Adminstrator Guide (https://techsupport.osisoft.com/Downloads/ File/670d4bab-503f-48e7-9c1a-9fe796c6f8ab). • PI SDK and PI API Online Help Files Documentation for the PI SDK and PI API libraries used by interfaces. The embedded help (.chm) files are located in the %PIHOME%\PIPC\Help\ directory. PIHOME is an environment PI Universal Interface (UniInt) 4.6.4 User Guide 1 Introduction to PI Universal Interface variable that contains the PI API installation path. See PI SDK and PI API Online Help Files (https://techsupport.osisoft.com/Downloads/File/3414fad3-9117-4a22-bcdff01ce9909293). • PI API Installation Instructions User Guide Details about installing supporting components, including buffering to prevent data loss if the connection to PI Data Archive is lost. See PI API Installation Instructions User Guide (https://techsupport.osisoft.com/Downloads/File/ e77a2bb7-1bc7-4641-9efc-96d038e006eb). • PI Buffering Manager Help Files Explains how to configure buffering using PI Buffer Subsystem 4.3 or later, including how to upgrade from API Buffer Server (bufserv) if needed. The embedded help files are located at PIPC/HELP/BufferManager.chm. See PI Buffering Manager Help Files (https:// livelibrary.osisoft.com/LiveLibrary/content/en/server-v6/GUID-55D9DB9F-B6CD-46A7B0DE-18FC75E349AB). • PI Interface Configuration Utility User Guide Describes how to configure interfaces using PI ICU. See PI Interface Configuration Utility User Guide (https://livelibrary.osisoft.com/LiveLibrary/web/ui.xql? action=html&resource=publist_home.html&filter=interface_connector&pub_category=PIInterface-Configuration-Utility). • Interface logging For more information about reading message logs, see the OSIsoft Knowledge Base article How to read new UniInt 4.5.0.x and later Interface message logs (http:// techsupport.osisoft.com/techsupport/nontemplates/KB/article.aspx?id=KB00401). • Interface release notes Release-specific information about functional updates, bug fixes, and new features. Release notes are provided both for the UniInt framework and for each interface. See Interface Release Notes (https://techsupport.osisoft.com/Downloads/File/ 48305bfa-6eda-406f-8448-a0dd508bc005). Operational overview for UniInt interfaces Interfaces connect data sources to the PI System by connecting to the data source, collecting data, and then sending it to PI Data Archive. Interfaces can be configured to run as services, use failover, limit user access, increase data security, monitor interface performance and status, use disconnected startup, and in some cases, write data back to the data source. Interface operation uses the following processes: 1. Startup 2. Connection to PI Data Archive 3. Data collection 4. Point updates 5. Shutdown 2 PI Universal Interface (UniInt) 4.6.4 User Guide Introduction to PI Universal Interface Startup At startup, the interface connects to PI Data Archive. If the PI Data Archive node is unavailable, the interface continuously attempts to connect. If the interface cannot connect to PI Data Archive and disconnected startup is not enabled, the interface cannot collect data. Connection to PI Data Archive For interfaces to connect to PI Data Archive, PI trusts must be enabled. See security processes. Data collection For interfaces where disconnected startup is enabled, the interface loads PI points from a locally-cached subset of the PI Data Archive point database, and starts collecting data whether or not it is connected to PI Data Archive. For interfaces where disconnected startup is not enabled, the interface connects to PI Data Archive, loads the PI points, and starts collecting data. Time-series data is collected and sent to PI Data Archive for each successfully loaded point. Point updates After starting and loading the PI points, the interface checks and updates point attributes for points that have been added, changed, or deleted. Shutdown The UniInt exit handler will perform an orderly shutdown with the following operations: 1. Write Intf Shut system digital state to all health points for the interface. 2. Write stop status information to failover points or interfaces configured with UniInt failover, when the interface is the last running instance of the failover pair. 3. Clean up the interface. 4. Update scan-based and event-based input points with the specified digital state for interfaces with a configured shutdown status, 5. Update the I/O rate point and reset the I/O rate counter to zero for interfaces with an associated I/O rate. 6. Disconnect from PI Data Archive. UniInt-based interfaces UniInt-based interfaces have interface-specific features for connecting to data sources and archiving data. Features common to interfaces based on the UniInt framework include: • Failover • Disconnected startup • Writing from input points to PI Data Archive, including performance and status point values from the interface • Writing to output points in the data source PI Universal Interface (UniInt) 4.6.4 User Guide 3 Introduction to PI Universal Interface PI API and PI SDK UniInt-based interfaces require the PI API library for functionality. However, some features for interfaces are only available for earlier versions of PI Data Archive when using the PI SDK library. Interfaces that use PI SDK cannot use the disconnected startup feature. PI Data Archive before version 3.4.370 requires PI SDK to be enabled for the following features: • Extended descriptor (exdesc) and data source name (instrumenttag) attribute lengths up to 1023 characters • Full 32-bit values for exception reporting interval attributes (excmin and excmax) • Multi-character point source attribute Refer to the specific interface user guide for information about whether PI SDK is enabled, or if it can be enabled optionally. To enable PI SDK for the interface, see Enable PI SDK. Interfaces send data using PI API. Buffering for interfaces using PI API requires a different configuration than buffering for interfaces using PI SDK. For more information about interface buffering, see Interface buffering overview. For more information about PI API and PI SDK, see PI SDK and PI API Online Help Files (https://techsupport.osisoft.com/Downloads/File/3414fad3-9117-4a22-bcdf-f01ce9909293). Read-write and read-only interfaces Interfaces can be available as read-write or read-only versions. For increased security, interfaces without a read-only version can be disabled from writing to the data source. For more information, see Read-only and read-write interfaces. 4 PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces UniInt interfaces start by using a batch file that runs the interface executable. Interfaces are normally configured to run as services, and do not have their own graphical user interface (GUI). To configure each interface installation, use PI Interface Configuration Utility (PI ICU). For each interface you install, PI ICU provides a pane for configuring interface-specific settings in the batch file. Run-time settings for the interface are specified in the batch file using command-line parameters. UniInt interfaces require configuration for multiple functions. For more information about using PI ICU to configure interfaces, see PI Server System Management Guide (https:// techsupport.osisoft.com/Downloads/File/b481399c-463e-4bcb-a93f-6ef85295263e). Topics in this section • Startup configuration overview • Interface security configuration overview • UniInt input and output point configuration • UniInt failover configuration overview • Disconnected startup overview • Interface buffering overview • Performance and status points Startup configuration overview Interfaces can be started in the following ways: • Run the interface as an automatic Windows service. Recommended for standard operation. The service starts when the interface node is restarted. • Run the interface interactively through PI ICU. Used for debugging and viewing messages. • Start the interface from a command prompt window using a batch (.bat) file. • Start the interface from a command prompt window by entering the interface executable (.exe) file name, followed by all parameters, on the command line. Topics in this section • Create interface instances • Configure the batch file Create interface instances Interface instances can be created from the interface executable (.exe) file or from a copy of a batch (.bat) file configured for the interface. Interfaces come with sample .bat files, but these PI Universal Interface (UniInt) 4.6.4 User Guide 5 Configuration overview for UniInt interfaces files will not have the necessary configurations, and should not be used for standard installations. Procedure 1. Navigate to the interface .exe file and run the installation. The interface instance is now available in PI ICU. 2. Configure the interface instance using PI ICU. Refer to this document for more information about configuring UniInt interfaces. After you finish Once the startup parameters are configured, create additional interface instances using the New Windows Interface Instance from BAT File menu option in PI ICU. Make the appropriate changes to the interface ID parameter and other interface instance-specific startup parameters. Configure the batch file The interface .bat file contains a list of parameters that control how the interface runs. Procedure 1. Open PI ICU and select the interface instance. Any new interfaces added to PI ICU (using New Windows Interface Instance from EXE and New Windows Interface Instance from BAT File operations) are included in the drop-down list. 2. Select or enter your interface parameters. For more information about configuring interfaces using PI ICU, refer to the PI Interface Configuration Utility (PI ICU) User Guide. For more information about parameter settings, see UniInt parameter reference. Note: To ensure scan class performance counters are created for all scan classes, define the scan classes for the interface before creating the interface service, unless you disable performance counters. To update scan class performance counters after creating the interface service, see Update performance counters. 3. Save and run the interface to make the parameter changes take effect. Enable PI SDK In cases where the PI Data Archive version requires PI SDK for certain PI point attributes, enable PI SDK. Note: Enabling PI SDK will prevent the availability of some UniInt features that use PI API, including disconnected startup. 6 PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces Procedure 1. Open PI ICU and select the interface instance. 2. On the UniInt tab, locate PI SDK and select Enable PI SDK. Interface security configuration overview Interfaces connect data sources to PI Data Archive. Sending data across networks and through individual machines within those networks can pose security risks. Therefore, OSIsoft recommends you configure your interface service accounts using the most secure methods possible that meet your requirements. Additionally, consider whether the interface needs to write to a data source before selecting a read-write version of an interface. Topics in this section • Read-only and read-write interfaces • Security requirements and best practices for interfaces • Create the interface service • PI Data Archive security Read-only and read-write interfaces OSIsoft provides both read-only and read-write options of many interfaces. Due to the inherent security risks associated with writing to the data source, OSIsoft recommends using the readonly option when possible. • If you do not need to write to the data source, select the read-only version of the interface. For more information about the read-only version of the interface, or if you are migrating from a read-write version to a read-only version and want to view the migration procedure, see the Read-only versus Read-write FAQ document on Live Library: "Read-only versus readwrite interfaces" in Live Library (https://livelibrary.osisoft.com). If a read-only version is not available, disable interface updates to the data source. See the Disable read-write interface updates to the data source section of this document. • If you need to write to the data source, select the read-write version of the interface and secure your points in the following ways: ◦ Create an output point whitelist file that is secured so that only authorized users can change it. See Secure output points using a whitelist file. ◦ Isolate output points using a separate interface instance from the input point interface instance. Disable read-write interface updates to the data source OSIsoft recommends using the read-only option of the interface whenever possible. If a readonly option is not available, perform the following steps to disable outputs using PI ICU to secure the data source. PI Universal Interface (UniInt) 4.6.4 User Guide 7 Configuration overview for UniInt interfaces Procedure 1. Open PI ICU and select the interface instance. 2. On the UniInt tab, select Disable all outputs from PI. 3. Click Apply. PI ICU saves the configuration. Security requirements and best practices for interfaces Interface installation requires an administrator account for the following tasks: • Installing the interface software • Creating the interface service account • Creating, editing, and removing the interface service • Adding, updating, and removing performance counters Caution: Except for interfaces that are included with PI Data Archive, OSIsoft discourages installing interfaces on the PI Data Archive machine. Interface installations on the PI Data Archive machine automatically default to the piadmin super-user or the piadmins group, which have high-level privileges and can expose your system to security risks. When interfaces are configured to run as a service, the account type used to run the service depends on the interface. Use an account with the lowest-level privilege required to run the interface. Most interfaces based on UniInt version 4.6 or later do not need administrator privileges to run. Security best practices for running the interface using the least-privileged account apply to interfaces based on versions of UniInt earlier than 4.6, but this document only discusses security as it applies to UniInt version 4.6 and later. Caution: Running interfaces with accounts that have high-level privileges can expose your system to security risks. Secure your system using accounts with the lowest-level privilege required to run the interface, and limit the access rights of the account if possible. In some cases, the interface service account privileges can be restricted to limit file, folder, and registry key access. Virtual service accounts, managed service accounts, non-administrator domain service accounts, and non-administrator local service accounts are the best options for limiting service account permissions. Certain types of use cases can restrict access. The main level of restriction for an interface should be focused on the data source and the \Program Files(x86)\PIPC\ directory on the machine. You should restrict access to an interface based on the level of security needed to interact with the data source. Standard PI Interfaces do not need access to the registry. The only folder/file access for an interface should be focused on the PIPC folder and interface folder contained within it. File system access should be determined on an as-needed basis. If you are using an interface feature that requires reading/writing to a file, you must give the interface service the needed access to the file. Registry access should normally only be as read only because performance counters are now created during the interface service creation process. All modifications to 8 PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces performance counters must be done by an administrator, using either the ICU or service editing command line options. Interface services are no longer required to start as an administrator in order to obtain the interface's performance counters. Read access to the .bat file and its directory are the minimum file and registry required to run the interface. The following are needed for writing to files/folders: • If the interface is using failover, then the interface will need read/write access to the failover sync file. • If the interface is using disconnected startup, then the interface will need read/write access to the Disconnected Start cache sync file. • If the interface creates or uses its own files and moves these files between folders, the interface will need access to the base location for these actions. You will also need PI Data Archive access for the interface and security permissions on the PI points. The virtual account permissions on a service allow the service to access a local machine in the same way it would access any other basic machine. A service that runs using a virtual account can access network resources by using the identity and credentials of the local computer account. It's designed to eliminate the overhead of password management for services that only need resources on their local machine. An account running a service should not be affected during an interface upgrade. Note: If an interface has been upgraded using the Local System account for its services, you should consider modifying the account being used to run the service. Local System gives a service the highest level of administrative privileges on a machine and is a security vulnerability. Topics in this section • Service hardening • Service account types • Restricted access for service accounts • Restricted directory access for disconnected startup files Service hardening When considering your vulnerability to cyber security threats, OSIsoft recommends making Windows service hardening a primary focus. Service hardening increases your ability to defend against cyber security threats by enforcing the principle of least privileges on Windows services. Windows services are only granted the permissions necessary to maintain functionality. This approach reduces attack surface area (and damage potential) should a cyber attack occur. To better understand the implications of upgrading and how to manually harden services, see https://tswiki.osisoft.int/kb_articles/kb01160_securing_pi_interfaces_with_service_hardening. PI Universal Interface (UniInt) 4.6.4 User Guide 9 Configuration overview for UniInt interfaces Note: In the UniInt 4.6 doc, the interface applies these techniques on a new install, but the upgrade will not provide these benefits as stated in the referenced KB. However, if you upgrade from an earlier version of the interface, service hardening must be applied manually, as explained in the KB. Service account types Windows services can run as the following account types: • Domain user account If the service interacts with network services or accesses domain resources like file shares on other computers, consider using a minimally-privileged domain account. A domain administrator must create the account before interface services can be configured to use the account. • Local user account If the computer is not part of a domain, a local user account can be used. OSIsoft recommends that the account not have administrator permissions. • Local Service account This is a built-in low-privilege account. This limited access helps safeguard the system if individual services or processes are compromised. Services that run as the Local Service account access network resources as a null session without credentials (anonymous). For service creation, the actual name of the account is NT AUTHORITY\LocalService. For controlling access to local files or other securable objects, the account name is Local Service. • Network Service account This is a built-in low-privilege account. Services that run as the Network Service account access network resources by using the credentials of the computer account. For service creation, the actual name of the account is NT AUTHORITY\NetworkService. For controlling access to local files or other securable objects, the account name is Network Service. • Virtual accounts Microsoft introduced virtual accounts in Windows 7 and Windows Server 2008 R2. A virtual account has the same privileges as the built-in Network Service account. The difference is that a virtual account is specific to one service but multiple services can share the Network Service account. Therefore, a virtual account can have finer granularity of access control for local resources (like files and folders) than the Network Service account. On Windows versions that support virtual accounts, virtual accounts are preferable to the Network Service or Local Service account for interface services. For service creation, the actual name of the account is NT SERVICE\servicename, where servicename is the interface executable name plus the service ID. • Managed Service Account A Managed Service Account (MSA) is a type of service account that can be associated with services on individual machines, and is available for Windows 7 and Windows Server 2008 R2 computers. A managed service account is a domain account, which must be created by a 10 PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces domain administrator. The advantage of a managed service account over a user domain account is that MSA accounts cannot be used to log into a machine, have rotating passwords that are managed by the domain, and cannot be locked out. • Local System account This is the highest privileged built-in account. It has extensive privileges on the local system and acts as the computer on the network. The actual name of the account is . \LocalSystem. Caution: Avoid using the Local System account for interface services. The Local System account has higher privileges than administrator accounts. Security for service account types can be grouped by the level of security they offer: • Most-secure account types ◦ Non-administrative local account ◦ Non-administrative domain account ◦ Built-in Local Service account ◦ Built-in Network Service account ◦ Built-in virtual service account ◦ Managed Service Account • Less-secure account types ◦ Administrative local account ◦ Administrative domain account • Least-secure account type Built-in Local System account Note: Local and user-domain accounts have password administration issues that require additional security considerations, which are not discussed in this document. Restricted access for service accounts For some service account types, the service account that runs the interface can be restricted so that it cannot access sensitive folders, files, and registry keys. Access control for folders and files is performed through property pages in Windows Explorer. Access control for registry keys is performed through regedit.exe. Service account types can be grouped by the possible restrictions in the following ways: • Virtual service accounts, non-administrator Domain and Local Service accounts Recommended: Restrictions can be configured to individual folder, files, and registry keys. PI Universal Interface (UniInt) 4.6.4 User Guide 11 Configuration overview for UniInt interfaces • Local Service and Network Service accounts Limited restrictions can be configured. Accounts are shared by multiple services, including Windows services, which require different levels of access. • Domain or Local Service accounts in Administrators group Restrictions are difficult to configure. Access is required for administrator-level tasks and restrictions are not recommended. • Local System service account Not recommended: No restrictions are possible. You must allow access to restricted folders and files for service accounts with lower-level privileges. Without adding access for the low-privileged account, the interface will not run properly. Restricted directory access for disconnected startup files By default, interfaces install in the %PIHOME% directory under \Program Files or \Program Files (x86). Both of these folders are protected with restricted access in Windows Vista or later. The default location for disconnected startup files is the interface installation folder. To use the default folder for the cache files on Windows systems that protect the folder, an administrator must grant the interface service account write access to the interface installation folder. Otherwise, choose a non-protected folder for the cache files. Create the interface service To run an unattended interface as a service that restarts when the computer starts, create a Windows service for the interface. Use PI ICU to create the interface service. PI ICU version 1.4.14.18 or later automatically selects the most-secure service account type as the default to run the interface service, unless you use API Buffer Server (bufserv) buffering. PI Buffer Subsystem (pibufss) can use the most-secure service account type, but API Buffer Server must use the Local System account. PI ICU uses the following defaults for creating services: • For Windows 7 and Windows Server 2008 R2 and later, uses a Virtual Account • For Windows Vista and Windows Server 2008 and earlier, uses a Network Service account Note: Follow best security practices when selecting your service account type. For information about interface security, see Security requirements and best practices for interfaces. In some case it may not be possible to create the interface service using PI ICU. In these cases, see the OSIsoft Knowledge Base article How do you create a new PI Interface Windows service (https://techsupport.osisoft.com/Troubleshooting/KB/KB00324). 12 PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces Before you start Unless performance counters for the interface are disabled, define the scan classes before you create the interface service. For more information about scan classes, which are defined using the f startup parameter, see Standard parameters. Procedure 1. In PI ICU, select the interface instance and navigate to the Service page. 2. Select either Auto or Manual in the Startup Type area. 3. Ensure the buffering service is added in the Dependencies list. If the buffering service has not been added, select the buffering service from the Installed services list and click < to move it to the Dependencies list. 4. Click Create. After you finish Once the interface service is created, you can optionally restrict access to folders and files through the property page in Windows Explorer. You can also restrict registry key access through regedit.exe. Consider whether or not the interface requires access to specific files or folders before restricting access permissions for the service. PI Data Archive security Interfaces use security processes and components to connect to PI Data Archive. PI Data Archive security processes In order for the interface to connect to PI Data Archive, the interface service account must be authenticated and authorized for communications. Interfaces use the following security processes: • Authentication The process of confirming the identity of a user from credentials or other evidence provided by the user, such as a password. • Authorization The process of determining whether the user has permission to perform certain operations. PI Data Archive provides the following three authentication methods: ◦ PI trust authentication. This method is required for interface service authentication. ◦ Password authentication. This method does not support unattended Windows services. ◦ Windows integrated security: This method is not supported by PI API. After authentication validates the identity claim, authorization determines what actions the user can perform in the PI Data Archive. For more information about PI Data Archive security, see the manual Configuring PI Server Security. When an interface successfully authenticates through a trust, the interface is granted the access rights for the associated identity, user, or group. PI Universal Interface (UniInt) 4.6.4 User Guide 13 Configuration overview for UniInt interfaces PI Data Archive security components A PI trust is associated with one PI identity. The trust connects a client to the PI Data Archive object permissions using matching authentication credentials. Interfaces use the following security components: • PI identity PI identities are the link between Windows authentication and PI Data Archive authorization. Each PI identity represents a set of access permissions to PI Data Archive. • PI users and PI groups Special types of PI identities that can be associated with the PI trust. Caution: Avoid using the piadmin super-user or the piadmins group. These built-in users and groups have high-level privileges that can pose security risks. The piadmin super-user permissions cannot be restricted. The piadmins group is enabled by default with permissions necessary for administrator-level tasks and should not be restricted. Additional built-in PI identities have either no default write permissions or no default permissions at all. • PI trust A set of credentials that maps a machine, application, or a Windows domain or local account to a specific identity on PI Data Archive. PI trusts for interface and buffering services are contained in a database. Use PI System Management Tools (PI SMT) or the piconfig command-line utility to view, create new trusts, and modify existing trusts. Optionally, use Buffering Manager to set up and manage trusts for buffering. Note: OSIsoft recommends the use of PI Identities rather than PI Trusts wherever possible. • PI point security Permissions for the identity to access PI points can be restricted using the data access (dataaccess) and point access (ptaccess) attributes for each point. Multiple points can be configured at once using the PI Tag Configurator plug-in for Excel, available with PI SMT. Procedure 1. Create the PI identity for the interface. 2. Enable PI Data Archive access for the PI identity. Create the PI identity for the interface The PI identity controls access to objects in PI Data Archive. The recommended best practice for PI Data Archive security is to use an identity that has only the access rights which are necessary for the interface to operate. Use PI SMT to create PI identities and PI trusts, and update mappings between trusts and identities. Optionally, use Buffering Manager to create the trust for the buffering application. 14 PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces Procedure 1. Choose an existing PI identity for the interface or create a new PI identity. Note: Select an identity with a lower privilege level. OSIsoft discourages using highlyprivileged identities in PI trusts for interfaces. You can create trusts based on PI API application names for more secured trusts for the interface. 2. Create a PI trust that maps to the PI identity and matches the credentials of the interface. OSIsoft recommends using two or more matched items in a trust (commonly referred to as a 2+ Trust). These matched items are the interface application name, interface node name, and IP address. Trusts are required for each interface instance and executable that connects to PI Data Archive. The minimum required trusts are one for the interface and one for the buffering subsystem. During setup, creating trusts for apisnap and PI-SDK utilities is helpful for testing communication between the interface node and PI Data Archive. Enable PI Data Archive access for the PI identity Use PI SMT or piconfig to allow the interface access to start and write data to PI Data Archive. Use PI Tag Configurator in PI SMT to configure point permissions for large point counts. The PI trust database is also sometimes referred to as the trust table. Procedure 1. Grant the PI identity in the PI trust that authenticates the interface instance the following permission: PI database security Permission PIPOINT r 2. Grant the same database security permissions to each instance of the interface. 3. Configure all the PI points created for the interface to grant the interface read and possibly write access to the points. To grant the interface access to the points, set the permissions for the PI identity assigned to the PI trust for the interface. Configure access using the point security (ptsecurity) and data security (datasecurity) attributes. Necessary access depends on the buffering configuration: ◦ For interface instances that access interface points, grant read permission in the point security attribute. ◦ For interface instances running on unbuffered interface nodes, where the interface instance sends point updates directly to PI Data Archive, grant read and write access to the PI identity in the PI trust that authenticates the interface instance using the data security attribute. ◦ For interfaces running on buffered interface nodes, where the interface instance sends point updates to the buffering application which then relays updates to PI Data Archive, grant read access to the PI identity in the PI trust that authenticates the interface instance. PI Universal Interface (UniInt) 4.6.4 User Guide 15 Configuration overview for UniInt interfaces PI point database security Permission ptsecurity r datasecurity (for unbuffered data) r, w datasecurity (for buffered data) r UniInt input and output point configuration Interfaces read data from data sources and sometimes write data to data sources using PI points in PI Data Archive. A PI point stores a series of time-stamped measurements, such as temperature readings from a tank meter every five minutes. Input points store data from devices (data sources), and output points send data from PI Data Archive to devices. PI points are also used to track the performance and status of interfaces. For more information, see Performance and status points. Some point attributes have an interface-specific application. For details, refer to the interface user guide for which you are configuring points. To configure points, you can use PI SMT. To configure large point counts, you can use the PI Tag Configurator, a Microsoft Excel plug-in. For more details about configuring and managing PI points, refer to PI Server System Management Guide (https://techsupport.osisoft.com/Downloads/File/b481399c-463e-4bcba93f-6ef85295263e). Topics in this section • PI Point attributes • Input points • Output points • Manually update the snapshot PI Point attributes The attributes stored in a PI point specify its name, data type, associated interface instance, adjustments to the point value, and additional data collection configurations. The attributes listed below are ones used by UniInt; indivitual interfaces may use additional attributes, so you should look at the user guides for each of your interfaces. Additionally, information about all PI Point attributes and classes is available in the "PI Server documentation" in Live Library (https://livelibrary.osisoft.com). Choose your server version and view the topic Point classes and attributes . Topics in this section • Point association attributes • Point security attributes • Data collection attributes 16 PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces Point association attributes PI point attributes used to associate the point with the data source and interface instance include the point name (or tag), point source, interface instance, extended descriptor, instrument name, and trigger source point. Topics in this section • Tag • PointSource • Location1 • Extended descriptor attribute • Instrument name attribute • Trigger source name attribute Tag The Tag attribute (or tag name) 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 System documentation uses the terms "tag" and "point" interchangeably. Follow these rules for naming PI points: • The name must be unique in the PI Data Archive. • 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 Data Archive, this interface supports Tag attributes 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 Data Archive versions. PI API PI Data Archive Maximum Length 6.0.2 or later 4.370.x or later 4.370.x or later 1023 6.0.2 or later Earlier than 3.4.370.x 255 Earlier than 1.6.0.2 4.370.x or later 255 Earlier than 1.6.0.2 Earlier than 3.4.370.x 255 If the PI Data Archive 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 *** SDK options*** for information. PI Universal Interface (UniInt) 4.6.4 User Guide 17 Configuration overview for UniInt interfaces PointSource The PointSource attribute contains a unique, single or multi-character string that is used to identify the PI point as a point that belongs to a particular interface. Location1 Location1 indicates to which copy of the interface the point belongs. The value of this attribute must match the /id command-line parameter. Extended descriptor attribute The extended descriptor (exdesc) attribute is used by interfaces to configure multiple settings. UniInt extended descriptors use keywords to configure performance points, trigger points, failover control points, and interface health points. The syntax for each extended descriptor depends on the type of point being configured, and many exdesc settings are interface-specific. Refer to the interface manual for details. Instrument name attribute The instrument name (instrumenttag) attribute usually identifies the origin of the data that the PI point receives, such as a point, address or location on a device. The use of this attribute is interface-specific. Refer to the interface manual for details. Trigger source name attribute The trigger source name (sourcetag) attribute is the name of the PI point that triggers an output point update. Note: If the source point name length exceeds 80 characters, you must use the source point mapping (scriptid) attribute, due to a limitation of PI API. Point security attributes You can configure security for PI point attributes and PI point data by restricting user access. For each point, you can restrict user access using the following point attributes: • Point security attribute The point security (ptsecurity) attribute controls which users can read and make changes to PI point attributes. The PI identity in the PI trust that authenticates the interface instance must be granted read access by the ptsecurity attribute of every PI point that the interface services. • Data security attribute The data security (datasecurity) attribute controls which users can read or edit PI point data values. 18 PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces The PI identity in the PI trust that authenticates the interface instance must be granted read access by the datasecurity attribute of every PI point that the interface instance services. If the interface is used without a buffering application, write access also must be granted. If the interface is used with a buffering application, the buffering application requires write access, but the interface does not. For more information about interface security, see Security requirements and best practices for interfaces. Data collection attributes Interfaces use scan, scan class, data type, digital state set, valid and typical point value, exception and compression, and shutdown attributes to determine how data is collected and archived. Topics in this section • Scan • Location4 • Data type attribute • Digital state set attribute • Valid point value attributes • Typical point value attribute • Exception reporting attributes • Compression attributes • Shutdown 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 log and the point 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 point to be rejected by the interface, SCAN OFF will be written to the PI point. Location4 For interfaces that support scan-based collection of data, Location4 defines the scan class for the PI point. The scan class determines the frequency at which input points are scanned for new values. In addition, points in the first scan class will be configured for exception data collection. Points in all other scan classes will be configured to collect archive data. Specify scan frequency and optional offset using the following format: PI Universal Interface (UniInt) 4.6.4 User Guide 19 Configuration overview for UniInt interfaces HH:MM:SS.##,HH:MM:SS.## Data type attribute The data type ( pointtype) attribute specifies what type of data is stored in the PI point. Example data types are strings, integers, and digital values. Unless the interface documentation specifies otherwise, only string and blob type data can be saved to a string PI point. UniInt does not convert integer, float, or digital values to string values. Device data types do not need to match PI point data types exactly, but the data types must be compatible. For example, integer values from a device can be sent to floating-point or digital PI points. Similarly, a floating-point value from the device can be sent to integer or digital PI points, although the values might be truncated. To determine which data types are supported by an interface, refer to the interface documentation. For details about PI Data Archive data types, refer to the PI Server Management Guide (https:// techsupport.osisoft.com/Downloads/File/b481399c-463e-4bcb-a93f-6ef85295263e). Digital state set attribute For digital PI points, the digitalset attribute specifies the name of the associated digital state set. For more information about digital state sets, see the PI Server System Management Guide. See PI Server System Management Guide (https://techsupport.osisoft.com/Downloads/ File/b481399c-463e-4bcb-a93f-6ef85295263e). Valid point value attributes Valid point values for the PI point limit what values can be written to points. The following attributes are used to set valid point values: • Zero attribute The lowest valid value for a point is defined in the zero attribute. • Span attribute The range of valid point values is defined in the span attribute. The span attribute value is added to the zero attribute value to specify the highest possible valid value for the point. The zero and span attributes are required for numeric points, because the settings affect the data representation in PI Data Archive for these point types. Setting these attributes for other point types can affect data collection, especially if the compression and exception specifications are specified using the percentage point attributes. For digital points, PI Data Archive sets zero and span internally. Typical point value attribute The typical point value (typicalvalue) attribute is used to specify a reasonable value for the PI point. Default typical point value is 50. 20 PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces Required for numeric points if the default value (50) does not fall within the minimum and maximum valid point values defined with the zero and span attributes. Exception reporting attributes To minimize the data that is stored and transmitted over the network, you can use exception reporting to filter out value changes that are not meaningful. Filtering takes place on the interface node. Values are sent to PI Data Archive if they exceed the specified deadband or have a timestamp that differs from the preceding value outside the bounds of the specified minimum or maximum, also known as the deadband. The deadband is defined by the specified deviation or percentage of the span. When exception values are stored, the preceding value is also stored, to accurately reflect the trend (the value and time stamp before the value fell outside the deadband). For more information about exception reporting, refer to the following resources: • To determine if your interface has implemented exception reporting that differs from standard UniInt, consult the interface documentation. • For more information about exception reporting, see the PI Server System Management Guide. See PI Server System Management Guide (https://techsupport.osisoft.com/ Downloads/File/b481399c-463e-4bcb-a93f-6ef85295263e). • For recommendations about configuring exception reporting settings, see the OSIsoft Knowledge Base article What are recommended Exception and Compression settings (https://techsupport.osisoft.com/Troubleshooting/KB/3226OSI8). The following attributes define the exception reporting settings: • Minimum exception reporting interval Minimum frequency interval (excmin) value, in seconds. Using this value, the interface will not record values more frequently than the specified interval. If a value arrives before the specified time has elapsed, it is not sent to PI Data Archive. • Maximum exception reporting interval Maximum frequency interval (excmax) value, in seconds. Using this value, the interface will write values to PI Data Archive no less frequently than the specified interval. Set excmax to 0 to disable exception reporting. • Exception deviation The exception deviation, or deadband, value is stored in the excdev attribute, and specifies how much a value must differ from the previous value before it is considered to be a significant value. Set the exception deviation to a value, in engineering units, that is slightly smaller than the precision of the data source instrument. • Exception deviation percentage The exception deviation percentage value is stored in the excdevpercent attribute, and specifies how much a value must differ from the previous value before it is considered to be a significant value, as a percentage of the span value. PI Universal Interface (UniInt) 4.6.4 User Guide 21 Configuration overview for UniInt interfaces The excdev attribute is related to excdevpercent attribute as shown in the equation: excdev = excdevpercent * span / 100. If either attribute is changed, the other is automatically updated to be compatible. Compression attributes Compression settings enable you to store just enough data to reproduce the signal, discarding any data that is not significant. Compression is performed on PI Data Archive unless PI Buffer Subsystem is running on the interface node, in which case compression is performed on the interface node by PI Buffer Subsystem. For more information about compression, see the PI Server System Management Guide (https://techsupport.osisoft.com/Downloads/File/b481399c-463e-4bcba93f-6ef85295263e). The following attributes define the compression settings: • Minimum compression reporting interval Minimum frequency (compmin) attribute value, in seconds for recording updates. Values are recorded to PI Data Archive no more frequently than the specified interval. • Maximum compression reporting interval Maximum time (compmax) attribute value, in seconds, for recording values from the interface to PI Data Archive. • Compression deviation The compression deviation (compdev) attribute, or deadband, is the acceptable variation used to determine the amount of variation that is considered meaningful. The interface records exceptions, or values whose variation exceeds the deadband. • Compression deviation percentage The compression deviation percentage value is stored in the compdevpercent attribute and specifies what percentage of the span attribute constitutes an exception. The compdev attribute is related to the compdevpercent attribute as shown in the equation compdev = compdevpercent * span / 100. If either attribute is changed, the other attribute is automatically updated to be compatible. 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 15 minutes in the event of a power failure. For additional information on shutdown events, refer to PI Data Archive 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. 22 PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces To configure PI Shutdown Subsystem to write SHUTDOWN events only for PI points that have their shutdown attribute set to 1, edit the \PI\dat\Shutdown.dat file, as described in the PI Server System Management Guide (https://techsupport.osisoft.com/Downloads/File/ b481399c-463e-4bcb-a93f-6ef85295263e). SHUTDOWN events can be disabled from being written to PI points when the PI Data Archive 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 PI points that have their Shutdown attribute set to 0. To change the default behavior, edit the Shutdown.dat file, as discussed in the PI Data Archive 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 PI Data Archive, allowing continuous data collection when the PI Data Archive is down for maintenance, upgrades, backups, and unexpected failures. That is, when the PI Data Archive 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 PI Data Archive collective. Refer to the Bufserv or PIBufss manuals for additional information. Input points Input points record data that interfaces receive from data sources and send to PI Data Archive. Input points can be scan-based, unsolicited, or trigger-based, and use the location4 attribute in the following ways: Scan-based input points Values are sent to the points at the frequency configured for the point’s scan class. To assign a scan class to a point, set the location4 attribute to a scan class. Scan classes are defined with the f parameter. For more information about the scan class parameter, see Standard parameters. Unsolicited input points Some interfaces do not poll for data, because the data source controls the timing of data sent to the interface. For details about configuring such unsolicited input points, refer to the interface documentation. Because these points are not scanned, the location4 attribute should be set to 0. Trigger-based input points Trigger-based input points are updated when a new value is sent to the snapshot of a specified trigger point. Because these points are not scanned, the location4 attribute should be set to 0. Configure input trigger points To configure trigger-based input points, configure the following point attributes. PI Universal Interface (UniInt) 4.6.4 User Guide 23 Configuration overview for UniInt interfaces Procedure 1. Configure the scan class. Set location4 to 0. 2. Specify the trigger point name and the condition in the extended descriptor (exdesc) attribute. You can specify the trigger point in the exdesc attribute in three ways: ◦ event='trigger_point_name' ◦ trigger='trigger_point_name' ◦ trig='trigger_point_name' The trigger point name must be in single quotes. The following table shows valid conditions for the extended descriptor (exdesc) attribute. Condition Description anychange Trigger on any change if 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 is triggered on a value change from 0 to Bad Input, or a change from Bad Input to 0. increment Trigger on any increase in value. System digital states do not trigger events. For example, an event is triggered on a value change from 0 to 1, but not on a change from Pt Created to 0 or 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, or 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 point. 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. For example, event='Sinusoid' anychange. 24 PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces Note: Data loss can occur for Event Points ( ExDesc contains event='trigger_tag_name' condition) if the connection to the PI Server is lost. The interface signs up for events from Update Manager for the source points configured for the Event Points. When there is no connection, the source point data cannot be sent to PI, nor can updates be received from the Update Manager for the Event Points. Thus, Event Points will not be updated during the time period when connectivity is lost, nor can data be recovered during the period of lost connectivity. Output points Output points send data from PI Data Archive through an interface to any external data source capable of receiving inputs, such as a PLC or a third-party database. Each interface has its own requirements for configuring output points. For UniInt-based interfaces, outputs are triggered as opposed to occurring on a regularly-scheduled basis. There are two ways to trigger new values sent to output points: • Specify an input point to trigger the output point. The output point will update every time the input point receives a new value. • Manually write a new value to the snapshot of the output point itself, triggering output to the destination. If the output point is configured correctly, the new value is written to the destination when the output point is successfully updated. A success status indicates that the output point has been updated; however, this does not guarantee that the external data source was updated. To verify data source updates, create a corresponding input point and check its value. If the interface does not successfully receive a value, it records a digital state that describes the error. Topics in this section • Configure output points • Secure output points using a whitelist file Configure output points Configure the attributes of the output point to specify the input point that will trigger updates. Note: The data type of the input point must be compatible with that of the triggered output point. Procedure 1. For the triggered output point, configure the sourcetag and pointsource attributes. a. Set the sourcetag attribute to the tag attribute value of the input point that will trigger updates. PI Universal Interface (UniInt) 4.6.4 User Guide 25 Configuration overview for UniInt interfaces The input point is the PI point that contains the values you want written to the destination data source. b. Set the pointsource attribute to match the point source (ps) parameter value of the interface instance connected to the data source. The point source of the output point must match the point source of the interface instance, but the input point can be associated with any point source. Secure output points using a whitelist file For enhanced security, create a whitelist of output points to specify authorized point updates to the data source. When using a whitelist, the interface verifies an output point against the list before updating the data source. The whitelist file is a comma-separated values (.csv) file that contains a list of valid output points and any attributes necessary to specify the output points and their intended location within the data source. Additionally, the zero and span attributes can be used to specify the minimum and maximum values allowed by the output point. For more information about UniInt security, see Interface security configuration overview. Procedure 1. Extract a list of output tags from PI Data Archive using the PI Builder add-in for Microsoft Excel. The output tags open in a spreadsheet. 2. Delete any output points that you want to disable. 3. For whitelist output points, delete any columns for point attributes that the interface does not use to associate the output point to the data source. 4. Export the spreadsheet as a .csv file. 5. Copy the whitelist .csv file to the desired location. The default file location is in the interface installation directory. a. Edit the file permissions so that the interface service account can read the file and only authorized users can read and write to it. 6. Use PI ICU to select the Enable Output Point Security option on the UniInt page, or edit the .bat file for the interface to add the /whitelist=path\filename parameter, specifying the location and name of the .csv file. 7. Restart the interface. Manually update the snapshot You can test trigger point configurations by manually updating a point value to trigger an update either to the data source or PI Data Archive using PI System Management Tools (PI SMT). 26 PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces Procedure 1. Locate the output point in the archive editor. 2. Enter a time stamp value of * (now). The point value does not need to change to trigger the update. The time stamp must be more recent than the last time stamp value in PI Data Archive. 3. Click the save icon to update the snapshot to the output point. Results Triggered input points will update the archive value. Output points will write to the interface to update the data source. You can use a visualization tool to see the updated point value, or verify the update on the data source. UniInt failover configuration overview UniInt failover minimizes data loss by enabling a backup interface instance to collect data using a shared file if the primary interface instance fails. UniInt failover is designed to handle cases with a single point of failure, either for the interface failing to connect to the data source, or the interface failing to connect to PI Data Archive. To configure failover, you create instances of the same interface on two different computers. Failover configuration modes are hot, warm, or cold. Note: Synchronization through the data source (phase 1 failover) is now deprecated and is not recommended. To migrate to shared file (phase 2) failover, see Convert from phase 1 to phase 2 failover. Shared file failover operation Shared-file UniInt failover uses PI points and a shared file to coordinate failover operation. Status information from the points is maintained in a shared file, removing the requirement for a PI Data Archive connection after the instances are running. If the shared file cannot be accessed, the interface instances read status information from PI Data Archive if it is available. The first interface instance to start (IF-Node1) acts as the primary interface instance, and the second interface instance (IF-Node2) acts as the backup. Either interface can be the primary. Failover seeks to keep a running instance of the interface connected to the data source using the following process: 1. If IF-Node1 fails, IF-Node2 becomes the primary and takes over transmitting data from the data source to PI Data Archive. 2. If IF-Node1 is restored and IF-Node2 then fails, IF-Node1 becomes the primary again. If both IF-Node1 and IF-Node2 can neither connect to PI Data Archive nor the shared file, IFNode1 remains as the primary with the "Primary Error" state and IF-Node2 remains as the backup with the "Backup Error" state. Data loss is possible if IF-Node1 loses connection to the data source. The interface with the status "Backup Error" does not collect data, and cannot become the primary unless it reconnects to either PI Data Archive or the shared file. PI Universal Interface (UniInt) 4.6.4 User Guide 27 Configuration overview for UniInt interfaces In a hot failover configuration, each interface instance queues three failover intervals' worth of data to prevent any data loss. When failover occurs, data for up to three intervals might overlap. The exact amount of overlap is determined by the timing and the cause of the failover. For example, if the update interval is five seconds, data can overlap between 0 and 15 seconds. For more information about UniInt failover scenarios, see UniInt failover scenarios. Failover with disconnected startup If the interface instances are configured to use disconnected startup, they can start and trigger failover in order to continue collecting data, even if PI Data Archive is unavailable, as long as they both have access to the shared file. If the interface instances do not have access to PI Data Archive or the shared file, they will both enter Backup No PI state until they reconnect and establish the primary and backup roles. If buffering has been enabled, the primary interface instance then sends any data that was collected. Failover status and keywords During normal operation, IF-Node1 collects data from the data source and sends it to PI Data Archive. The interface instances read and write to the shared file to update status information. To identify failover attributes that are written to the shared file, the interface uses the heartbeat, active ID, and failover ID failover keywords are defined in the extended descriptor (exdesc) attribute. Both IF-Node1 and IF-Node2 perform the following operations simultaneously: • Update their own heartbeat value at a configured interval • Monitor the heartbeat value and device status for the other instance • Check the active ID value in the shared file Normal operation continues as long as the following conditions are met: 28 PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces • The heartbeat value for the primary interface indicates that it is running. • The active ID point has not been changed manually. • The device status on the primary interface is good. • The active ID keyword and its corresponding entry in the shared file are set to the failover ID of the primary interface instance. To indicate that it is running, each interface instance refreshes its heartbeat value by incrementing it at the rate specified by the failover update interval. The heartbeat value starts at 1 and increments until it reaches 15, at which point it resets to 1. If the instance loses its connection to PI Data Archive, the value of the heartbeat cycles from 17 to 31. When the connection is restored, the heartbeat value reverts back to the range for a running interface. During a normal shutdown process, the heartbeat value is set to zero. For more information about failover status points, see Failover status points. Failover with collectives If you have a PI collective and PI Data Archive sends outputs to the data source through the interface in your deployment, you can use UniInt interface failover to ensure the availability of the PI Data Archive node that provides outputs. Each interface receives outputs from a specific PI Data Archive node in the collective. If that PI Data Archive node becomes unavailable, the interface will no longer receive outputs. However, you can configure each interface to receive outputs from a different collective member. For more information on configuring interface outputs for UniInt failover in a PI collective, see the host parameter in Standard parameters topic. If the PI Data Archive node connected to the primary interface fails, the backup interface takes over, receives outputs from its collective member, and reports time-series data to the collective. The backup interface must remain connected to the data source to trigger this failover scenario. Topics in this section • Hot, warm, and cold failover modes • Configure interface failover • Test the failover configuration • Convert from phase 1 to phase 2 failover • Failover configuration for redundant data sources • UniInt failover scenarios Hot, warm, and cold failover modes The failover mode specifies how the backup interface instance handles connecting to a data source and adding points when failover occurs. The sooner the backup interface can take over data collection, the less data is lost. However, increasing the failover level also increases data source load and system resource usage. To determine which mode to use, consider how much data you can afford to lose and how much workload your system can handle. Be prepared to experiment, and consult your data source documentation and vendor as needed. PI Universal Interface (UniInt) 4.6.4 User Guide 29 Configuration overview for UniInt interfaces UniInt provides three levels of failover: cold, warm and hot. Higher ("hotter") levels preserve more data in the event of failover, but impose increasing workload on the system. Hot failover Hot failover is the most resource-intensive mode. Both the primary and backup interface instances collect data. No data is lost during failover (unless both the primary and backup interface nodes fail together), but the data source carries a double workload. Warm failover In a warm failover configuration, the backup interface does not actively collect data. The backup interface loads the list of PI points and waits to collect data until the primary interface fails or stops collecting data for any reason. If the backup interface assumes the role of primary, it starts collecting data. Some data loss can occur in a warm failover configuration. Cold failover In cold failover, the backup instance does not connect with the data source or load the list of PI points until it becomes primary. This delay almost always causes some data loss but imposes no additional load on the data source. Cold failover is required for the following cases: • A data source can support only one client. • You are using redundant data sources and the backup data source cannot accept connections. Configure interface failover Configure failover for interfaces using PI ICU. Procedure 1. Create the primary and backup interface instances. 2. Configure interface buffering. 3. Configure the shared file location. 4. Configure and enable failover in PI ICU. 5. If you are configuring health points, configure them in the following order: a. Create health points for the first interface node. b. Create health points for the second interface node. Topics in this section • Create paired interface instances for failover • Configure buffering for failover • Configure the failover shared file location • Create UniInt failover points • Enable UniInt failover • Set delays for cold failover 30 PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces Create paired interface instances for failover Before enabling UniInt failover, configure the primary and backup interface instances for failover as nearly-identical copies of the same interface. Create the interface instances using PI ICU. Multiple instances of an interface may use the same executable (.exe) file without copying and renaming the interface executable file. PI ICU assigns a new service ID to each interface instance to distinguish it from other copies of the interface that use the same executable. The service ID then becomes part of the interface service name. Procedure 1. Use PI ICU to configure the first interface instance. 2. Create a second interface instance on another machine. 3. Copy the contents of the batch file for the first interface instance and paste them in the batch file of the second interface instance, or use PI ICU to import the batch file on the second interface instance. Copying or importing the batch file ensures the instances are identical. 4. Verify that both instances can collect data. Note: Do not run both instances simultaneously. After you finish After you create the identical interface instances, configure buffering. Configure buffering for failover Configure buffering for UniInt failover using PI ICU. Buffering can be configured to use API Buffer Server or PI Buffer Subsystem. Procedure 1. Open PI ICU and select the interface instance. 2. Click Tools > Buffering and configure buffering. Note: If PI ICU 1.4.15 or later and PI Buffer Subsystem 4.3 or later are installed, you will be prompted to configure PI Buffer Subsystem. Accepting this configuration upgrades your buffering to PI Buffer Subsystem if you previously used API Buffer Server. For more information about buffering subsystems, see Interface buffering overview and the PI Interface Configuration Utility User Guide. 3. Verify that buffering is working. After you finish After you configure buffering, configure the location of the shared file. PI Universal Interface (UniInt) 4.6.4 User Guide 31 Configuration overview for UniInt interfaces Configure the failover shared file location Interface instances paired for phase 2 UniInt failover both read from and write to a shared folder to communicate status with each other. Configure the location of this file for both interface instances. Caution: The shared failover file must only be used by a single pair of interface instances, otherwise detrimental behavior such as interface thrashing will occur Procedure 1. Create a folder for the shared file. Note: OSIsoft recommends creating the folder on a machine that is neither the primary nor the backup interface instance machine, to ensure the file remains accessible if either interface node fails. The machine should be a Windows Server platform that has the Server role configured. 2. Set the folder properties to grant read/write access to the user account that runs the interface service. Results The folder location is used in PI ICU to create the shared binary file for failover. Create UniInt failover points Create failover points for each interface instance of the failover pair for UniInt failover. UniInt failover points are PI points that track the status of the interface instances, and are required to trigger failover. Create failover points in PI ICU. Note: Do not use other tools to create these points. Procedure 1. Recommended: Create all failover points. Navigate to the Failover tab, right-click within the PI point list, and then click Create all points (UFO Phase 2). PI ICU automatically creates all the failover points for the interface instance. Failover status points and attributes UniInt uses PI points to track the statuses of the interface instances paired for failover. Configure failover using PI ICU to create the active ID, heartbeat, state, and device status PI points on the Failover tab. Failover status points The failover points used by the interface instances are: 32 PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces • Active ID point • Heartbeat point for instance 1 • Heartbeat point for instance 2 • Optional: ◦ State point for instance 1 and state point for instance 2 ◦ Device status point for instance 1 and device status point for instance 2 Failover point attributes The point name (tag) attributes for UniInt failover points require a particular syntax. For each failover point, use the following syntax: Failover point tag attribute Attribute syntax Active ID point tag PIDataArchiveNameInterfaceGenericName_InstanceID_PointSo urce_UFO2_ActiveID Heartbeat point tag PIDataArchiveNameInterfaceGenericName_InstanceID_PointSo urce_UFO2_UFO2_Heartbeat_ID State point tag PIDataArchiveNameInterfaceGenericName_InstanceID_PointSo urce_UFO2_UFO2_State_ID Device status point tag PIDataArchiveNameInterfaceGenericName_InstanceID_PointSo urce_UFO2_UFO2_DeviceStatus_ID The extended descriptor (exdesc) attribute defines UniInt failover control points. Values must be contained in square brackets and require the following syntax: Failover point extended descriptor attribute Attribute syntax Active ID exdesc [UFO2_ActiveID] Heartbeat point exdesc [UFO2_Heartbeat:failoverID] State point exdesc [UFO2_DeviceStat:failoverID] Device status point exdesc [UFO2_State:failoverID] Additionally, set the following attributes for all UniInt failover points: Additional failover point attributes Description compmax Set to 0. location1 Set to the interface ID. PI Universal Interface (UniInt) 4.6.4 User Guide 33 Configuration overview for UniInt interfaces Additional failover point attributes Description location3 For cold failover only. Sets the delay for the primary interface instance with a good device status to stay in the primary state before allowing the backup interface instance with the bad device status a chance to become primary. To enable this delay, set location3 to a positive value, in minutes, for the amount of time the primary interface instance with a GOOD status will stay in the primary state before allowing the backup interface instance with the bad device status a chance to become primary. The backup interface instance must actively be reporting a good heartbeat in order for the primary interface instance to allow the backup interface instance to become primary. To disable this delay, set location3 to 0. location4 For cold failover only. Sets the delay for the backup interface instance to allow the interface instance assuming primary role to clear a bad device status by using a delay. Only valid when location3 is set for delay. To configure this delay, set location4 to a positive value, in minutes, for the backup interface instance with a good device status to stay in backup-ready state before reverting to normal failover operation. If the primary interface instance did not update to a good device status during the delay, the backup attempts to resume primary role. Default: location4 value of 0, which is a 5-minute delay. location5 For cold failover only. Sets the delay for the backup interface instance to attempt to assume primary role when both primary and backup interface instances have equally bad device status. Only valid when location3 is set for delay. To configure this delay, set location5 to a positive value, in minutes, for the backup interface instance to wait for the primary interface instance to update to a better device status before attempting to assume primary role. Default: location5 value of 0, which is a 10minute delay. 34 pointsource Set to the point source for all points maintained by this interface instance. pointtype Must be set to Int32. shutdown Must be set to 0. step Must be set to 1. PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces Enable UniInt failover Use PI ICU to configure and enable UniInt failover for the interface. Before you start Before you enable UniInt failover, create both instances of the interface, configure buffering, and configure the shared file location. Procedure 1. For the first interface instance, click UniInt > Failover. 2. Select Enable UniInt Failover and choose Phase 2. 3. In the Synchronization File Path box, specify the location of the shared file. Note: See KB article https://techsupport.osisoft.com/Troubleshooting/KB/KB00443 (https://techsupport.osisoft.com/Troubleshooting/KB/KB00443). Also see KB article https://techsupport.osisoft.com/Troubleshooting/KB/KB00444 (https:// techsupport.osisoft.com/Troubleshooting/KB/KB00444). 4. From the UFO Type list, choose the level of failover. Options for failover are HOT, WARM, or COLD. For more information about failover modes, see Hot, warm, and cold failover modes. 5. Browse to the location of the other interface instance. Note: Ensure the interface failover ID (ufo_id) parameter settings of each interface instance match the other interface failover ID (ufo_otherid) parameter settings of the other interface instance. 6. Optional: Configure the following settings: ◦ Set the update rate for the heartbeat point if you need a value other than the default of 5000 milliseconds. ◦ If the PI Data Archive node is part of a collective and writes output point data to the data source, configure the primary and backup instances to connect to different members of the collective using PI ICU. For each interface instance, perform the following steps: i. Go to the General page for the interface instance. ii. In the PI Hostname section, set the Server/Collective and SDK Member boxes to point to different PI Data Archive hosts for each interface instance. This ensures that data continues to be written to the data source if one of the PI Data Archive connections fail. For more information, see the discussion of failover in the . See High Availability Administrator Guide (https://techsupport.osisoft.com/Downloads/File/ 670d4bab-503f-48e7-9c1a-9fe796c6f8ab). 7. Click Apply. 8. Create the failover digital state set if it has not been created. Right-click the PI point list, and then click Create UFO_State Digital Set on Server ServerName. 9. On the first interface instance only, right-click the list of failover points and then click Create all points (UFO Phase 2) to create all the required failover PI points. PI Universal Interface (UniInt) 4.6.4 User Guide 35 Configuration overview for UniInt interfaces 10. Click Close to save. Set delays for cold failover In a cold failover configuration, you can configure delays that ensure that the interface instances update their status in a coordinated way, to prevent one or the other from being locked into the role of backup. Consider setting delays if you need to run the interface on an unreliable network where the communication between the interface and the data source is disrupted on a regular basis. On a robust and reliable network, you do not need to set delays. Procedure 1. To configure delays, set the following attributes of the active ID failover point: ◦ location3 Specifies how long to wait after assuming the backup role before resuming the primary role and resetting status. Default: location3 set to 0 (cold failover is disabled). ◦ location4 Specifies how long to wait before assuming the primary role if the other instance has a bad status. Default: location4 set to 0 (5 minutes). ◦ location5 When both the primary and backup interface instances have equally bad device status, specifies how long to wait before the backup transitions to primary. Default: location5 set to 0 (10 minutes). For more information, see Failover status points and attributes. Test the failover configuration To test the UniInt failover configuration, use PI ICU to start the interface interactively and view the output. 36 PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces Procedure 1. Start the first interface instance interactively using PI ICU. The first interface to start assumes the role of primary interface. 2. Check the output to verify that failover is correctly configured. Successful failover output would look similar to the following example: OPCpi> 1 1> UniInt failover: Successfully Initialized: This Failover ID (/UFO_Id): 1 Other Failover ID (/UFO_OtherId): 2 The primary interface runs and collects data. 3. Start the second interface instance. 4. Check the output to verify that failover for the second instance is configured correctly. The second interface instance assumes the role of backup interface. 5. Stop the primary interface. 6. Verify that the backup interface has detected the absence of the primary instance and has taken over data collection. Examine the output for the following messages: > UniInt failover: Interface is attempting to assume the "Primary" state. Waiting 2 ufo intervals to confirm state of other copy. Fri Jun 22 11:43:26 2012 > UniInt failover: Waited 2 ufo intervals, Other copy has not updated our activeId, transition to primary. Fri Jun 22 11:43:26 2012 > UniInt failover: Interface in the "Primary" state and actively sending data to PI. 7. Check for data loss in PI Data Archive. For example, use PI ProcessBook to display a data trend. 8. Test failover with different failure scenarios. Verify the level of data loss by checking the data in PI Data Archive and on the data source. For hot failover, there should be no data loss. For warm and cold failover, there will be a short period of data loss during the failover transition. For example, test loss of the PI Data Archive connection for one of the instances. After you finish Once you have tested failover for a successful configuration, stop both copies of the interface, start buffering, configure each interface instance as a service, and then start both copies of the interface. Convert from phase 1 to phase 2 failover Phase 1 failover, which relies on the data source, is deprecated. OSIsoft recommends phase 2 failover, which uses a shared file. Convert from phase 1 failover to phase 2 failover. Repeat this task for each interface instance. PI Universal Interface (UniInt) 4.6.4 User Guide 37 Configuration overview for UniInt interfaces Before you start Use PI ICU to delete the phase 1 failover points for the UniInt failover pair, as they are no longer needed for phase 2 failover. Procedure 1. Open PI ICU and select the interface instance. 2. Navigate to UniInt Failover and select the Enable UniInt Failover checkbox and the Phase 2 radio button. 3. Enter the shared file location in the Synchronization File Path field. Both interface instances must have access to this file location. Note: Both interface instances must have access to this file location. For more information, see KB article https://techsupport.osisoft.com/Troubleshooting/KB/KB00443 (https://techsupport.osisoft.com/Troubleshooting/KB/KB00443). Also see KB article https://techsupport.osisoft.com/Troubleshooting/KB/KB00444 (https:// techsupport.osisoft.com/Troubleshooting/KB/KB00444). 4. If not already created, right-click the tag list and then select Create UFO_State Digital Set on Server ServerName. 5. Right-click the tag list and select Create all points (UFO Phase 2). 6. Save the configuration. 7. Configure and save the settings for the second interface instance using the previous steps, using the interface instance ID of the first interface instance as failover ID number of the second interface instance. 8. Return to the first interface instance in PI ICU, configure the failover ID number to match the interface instance ID number of the second interface instance, and save. Failover configuration for redundant data sources The following figure illustrates the UniInt failover configuration for redundant data sources. 38 PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces Redundant data source failover configuration Configure failover for redundant data sources If you are running redundant data sources, you can configure multiple UniInt failover pairs that use the same point source and interface ID. PI Universal Interface (UniInt) 4.6.4 User Guide 39 Configuration overview for UniInt interfaces Procedure 1. For each pair of interface instances, when you set the exdesc attribute of the active ID point, ensure the failover ID values always refer to the correct interface instance for the failover pair. For more information about the syntax for the exdesc attribute of the active ID failover point, see Failover status points and attributes. UniInt failover scenarios UniInt failover can be triggered in multiple scenarios. The following topics describe different causes of failover in UniInt interfaces version 4.6 or later. For each failover pair, assume that IF-Node1 is the first interface instance to start. IF-Node1 assumes the primary interface instance role and writes data to PI Data Archive. IF-Node2 is the interface instance that acts as backup and queues data. During failover transitions, the interface instances will change state, as described in the following failover scenarios. Topics in this section • Graceful primary shutdown triggers failover • Primary instance stops updating the heartbeat point • Manual failover • Primary instance loses connection to PI Data Archive • Interface instances attempt to be primary at the same time • UniInt phase 2 failover: miscellaneous scenarios Graceful primary shutdown triggers failover A graceful shutdown performs the following operations: 1. IF-Node1 stops. 2. At exit, the IF-Node1 writes a value of 0 to its heartbeat point and active ID point. 3. IF-Node2 reads the active ID point, detects the 0 value, and assumes the role of primary. In some cases, IF-Node1 stops shortly after IF-Node2 checks the value of the failover control points. When this happens, IF-Node2 will not recognize that IF-Node1 has shut down for an additional failover update interval. This does not result in data loss for hot failover configurations because the backup queues data for two failover intervals and any additional time where the primary status was unknown. When IF-Node2 assumes the primary role, it sends queued data to PI Data Archive. This results in overlapping data for one or two failover update intervals. When IF-Node2 assumes the role of primary interface, it performs the following operations: 1. IF-Node2 writes its failover ID to the active ID point. 2. IF-Node2 waits for two failover update intervals, then verifies that the active ID value is the same as its failover ID. Depending on the verification result, IF-Node2 performs the following actions: 40 PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces ◦ If the active ID is equal to the failover ID for IF-Node1, IF-Node2 remains in the backup role. ◦ If the active ID is the same as the failover ID for IF-Node2, IF-Node2 assumes the primary interface role and sends queued data to PI Data Archive. Primary instance stops updating the heartbeat point There are multiple situations that cause IF-Node1 to stop updating the heartbeat point. Examples include: • The interface crashes. • The interface is unable to write data for any reason. • The interface hangs in a function call that does not return. When IF-Node1 stops updating the heartbeat point, IF-Node2 determines if it should assume primary role using the following operations: 1. At each failover update interval, IF-Node2 reads and stores the value of the heartbeat point for IF-Node1. 2. If the heartbeat point value for IF-Node1 does not update between two readings, IF-Node2 stops deleting older queued data and continues to queue data until it knows the state of IFNode1. 3. If the heartbeat point value for IF-Node1 does not update for four failover update intervals, IF-Node2 transitions to the AssumingControl state. 4. In AssumingControl state, IF-Node2 immediately writes its failover ID to the active ID point. 5. IF-Node2 remains in AssumingControl state for two update intervals. 6. If the active ID value is still the same as the failover ID for IF-Node2, IF-Node2 transitions to PrimaryReady state and writes all queued data to PI Data Archive. Total failover time for this scenario is between three and five failover update intervals. The exact amount of time depends on when IF-Node1 failed and when IF-Node2 read the control points. When using hot failover, overlapping data is dependent on this timing. Manual failover To initiate manual failover, IF-Node2 must be in an equal or better state than IF-Node1. For example, failover will not trigger when IF-Node1 has a connection to PI Data Archive and IFNode2 does not. IF-Node2 knows the state of IF-Node1 by reading the value of the heartbeat point for IF-Node1. Manual failover results in overlapping data for two failover update intervals. You trigger manual failover by changing the value of the active ID point from the failover ID for IF-Node1 to the failover ID for IF-Node2. Changing the active ID point value on PI Data Archive causes the interfaces to perform the following operations: PI Universal Interface (UniInt) 4.6.4 User Guide 41 Configuration overview for UniInt interfaces 1. IF-Node2 reads the active ID value from both the shared file and the point. 2. IF-Node2 recognizes that the values are not the same and waits two failover update intervals to determine which value is correct. 3. When IF-Node1 does not update the active ID point, IF-Node2 updates the active ID value in the shared file and assumes primary role. 4. IF-Node1 reads the new active ID value in the shared file and immediately assumes backup role. Primary instance loses connection to PI Data Archive In cases where failover is configured to ensure a continuous data flow to PI Data Archive to prevent disruption of operations dependent on the server connection, primary and backup interfaces perform the following operations: 1. If any PI API functions return a value indicating PI Data Archive is unavailable, UniInt signals that IF-Node1 lost its connection to PI Data Archive, and IF-Node1 writes a value to its heartbeat point. This value increments from 17 to 31 in a cycle that repeats while IFNode1 is disconnected. 2. During its next failover cycle, IF-Node2 reads the value in the heartbeat point indicating a failover trigger and stops discarding queued data. 3. At the following failover update, IF-Node2 tries to read the value of the active ID point on PI Data Archive. 4. For a successful active ID read, IF-Node2 transitions to AssumingControl state and updates the active ID point value to its own failover ID. 5. IF-Node1 reads the value of the active ID for IF-Node2 and immediately assumes backup role. Interface instances attempt to be primary at the same time In scenarios where both instances of the interface are started at the same time, or both are running and the data source is started, IF-Node1 and IF-Node2 might both try to assume the role of primary. At startup, both copies check the active ID point value and the heartbeat point value for the backup. The value determines the role of the node: • Primary: If the interface instance reads its own failover ID, it transitions to the primary role. This transition takes two failover interval updates for new data to show up in PI Data Archive. • Backup: when the interface instance reads the other instance's failover ID, it remains in backup role and monitors the heartbeat value for the other interface instance. If the heartbeat value stops updating, the backup transitions to primary. This process takes four failover update intervals, in order to monitor, verify heartbeat value, assume control, and update PI Data Archive. • Unassigned: If both interface instances start at approximately the same time and the active ID point value is unclaimed, IF-Node1 and IF-Node2 both write their failover ID values to the active ID point, transition to AssumingControl, and wait two failover update intervals. 42 PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces Assume IF-Node2 was the last to write its value. At the next failover update interval, IFNode1 reads the failover ID of IF-Node2 as the active ID value and transitions to the backup role, and IF-Node2 reads its own failover ID and transitions to the primary role. While the point update is immediate, the delay in role transitions resolves any role conflicts that may have occurred before the update reached the data source. UniInt phase 2 failover: miscellaneous scenarios The following Phase 2 failover scenarios could potentially affect whether the interface continues to collect and buffer data. Scenario 1: Access lost to shared file and PI server This scenario occurs for example, if the NIC goes bad, router/switch goes down, cable is unplugged, etc. This scenario has two points of failure. Uniint failover is designed to function correctly for a single point of failure in the system. If an interface loses communication with the shared file and the PI server, the interface instance will remain in its current state. The interface will not assume primary if the interface was in backup mode at the time that both connections went down, and similarly the interface will not transition out of primary if the interface was in primary mode when both connections went down. Scenario 2: PI Server Collective architecture This scenario occurs when primary PI server fails and shared file access fails. Each instance reads from its designated "/host" and receives outputs from its designated "/host"; therefore, the interface instance will remain in its current state. Scenario 3: Disaster recovery In this scenario, the shared file is on the interface node which has a system failure that requires the entire node to be rebuilt. In this situation, the interface will failover to the other node and collect/buffer data. When the failed node is rebuilt, the interface will get back in sync automatically once the file is created. The file will be created when the interface on the failed node is started, or if the sync file was backed up on the ghost image. Note that if the sync file was on a separate machine from the interface nodes and that machine crashed, the sync node must be restored from a ghost image or created manually. Otherwise, one of the interface instances would require a restart to create the sync file. Until the sync file is created, failover would be controlled via PI server reads. Disconnected startup overview Disconnected startup allows the interface to start from a local cache file with or without a valid connection to PI Data Archive. This prevents data loss when an interface starts up without a connection to PI Data Archive. Disconnected startup should only be configured and enabled after you have configured the interface and tested your configurations. Buffering must be configured. Disconnected startup uses the following processes for an initial startup: 1. The interface connects to PI Data Archive. 2. The interface delays startup and creates two local cache files. One file contains PI point configuration and the other contains digital state information needed to start the interface. PI Universal Interface (UniInt) 4.6.4 User Guide 43 Configuration overview for UniInt interfaces 3. The interface synchronizes the cache files to PI Data Archive. 4. The interface service begins data collection. 5. The interface collects and buffers data collected from the data source when no connection to PI Data Archive is available. Subsequent disconnected startups use the following processes: 1. The interface starts and checks for the local cache files. If the cache files are missing or unusable, the interface must recreate them using the initial startup process. 2. The interface loads points from the cache file instead of PI Data Archive. 3. The interface service begins data collection. 4. The interface collects and buffers data collected from the data source when no connection to PI Data Archive is available. Using a local cache for startup has the additional benefit that the interface starts collecting data more quickly by loading points from the local cache, which is faster than loading points across the network. For example, an interface with 50,000 associated PI points may take several minutes to retrieve all the PI points from PI Data Archive. The disconnected startup feature can reduce the time to load the same 50,000 PI points from the cache file to approximately 10 seconds. Results will vary depending on the system architecture, network latency, and work load on PI Data Archive. Point modification and synchronization Interfaces using the disconnected startup configuration: • Load points designated for the interface from locally stored cache files. • Retrieve point information from PI Data Archive during normal updates or during point synchronization. • After losing the PI Data Archive connection and reconnecting, the interface synchronizes interface point configuration data with that of PI Data Archive. For example, an interface started using the disconnected startup configuration loses its connection to PI Data Archive due to a network failure. While the interface connection to PI Data Archive is down, the administrator modifies the point database. When the connection to PI Data Archive is restored, the interface synchronizes its point cache to match the current point configuration on PI Data Archive. Without restarting the interface, points that were created on PI Data Archive while disconnected are added to the interface. Similarly, edited points are updated in the interface and deleted points are removed from the interface. Avoid running the interface in disconnected startup mode while making major point modifications to PI Data Archive, because major point modifications can take a long time to sync with the disconnected startup file. Point modification messages Messages about point modifications that occurred while the interface was running but disconnected from PI Data Archive are logged to the PI Message Log file after the interface reestablishes a connection, including information about point creation, editing, or deletion. These messages appear once per point modification. 44 PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces In some cases, an error message may be generated because data is being sent to PI points that no longer exist on PI Data Archive. Typically, the interface logs one message for a given error code only once per point that is in error. These informational and error messages are normal and should require no action by the user. For more information, see Disconnected startup messages. Topics in this section • Limitations of disconnected startup • Configure disconnected startup • Build cache files on remote interface machines Limitations of disconnected startup Known limitations imposed on an interface running with disconnected startup enabled include extended attribute length, using PI SDK, and suspended output point updates. Extended attribute lengths To maximize the functionality of the disconnected startup configuration, the use of PI Data Archive version 3.4.370 or later is recommended. PI Data Archive version 3.4.370 or later in conjunction with PI API version 1.6.1.x or later provides greater field lengths for the tag, descriptor, exdesc, instrumenttag, and pointsource attributes. Moreover, PI SDK is no longer required for support of the increased field lengths. The following table lists the maximum field lengths for a given PI point attribute for the version of PI Data Archive used. In all cases, the PI API version is assumed to be 1.6.1.x or later to support disconnected startup. Maximum attribute lengths Attribute PI Data Archive 3.4.370.x or later PI Data Archive earlier than 3.4.370.x tag 1023 255 descriptor 1023 26 exdesc 1023 80 instrumenttag 1023 32 pointsource 1023 1 Note: If the actual data stored for the point attribute is greater than the maximum field length specified in the table, the returned value for the attribute is truncated to the maximum length for the given PI Data Archive version. Interfaces using PI SDK The disconnected startup feature utilizes PI API to retrieve extended point information from PI Data Archive that is stored in the necessary caching files. Disconnected startup is not supported if PI SDK is required for the interface to start. The operational need for PI SDK is interface-specific. Interfaces supporting disconnected startup will explicitly say that disconnected startup is supported in the Supported Features table of the interface manual. PI Universal Interface (UniInt) 4.6.4 User Guide 45 Configuration overview for UniInt interfaces In the case where the interface supports disconnected startup, uses PI SDK by default to retrieve extended point attribute information, and PI Data Archive is earlier than version 3.4.370, you must define the /pisdk=0 parameter to disable PI SDK before enabling disconnected startup. For cases where PI Data Archive is later than version 3.4.370, the interface always uses PI API to retrieve extended attribute information and does not require disabling PI SDK. For more information about enabling and disabling PI SDK, see Enable PI SDK. Suspended output point updates The interface can start and run in the disconnected startup configuration while PI Data Archive is unavailable. However, outputs will not function while disconnected from PI Data Archive. Once the interface establishes a valid connection, outputs from PI Data Archive to the interface resume normal operation. Configure disconnected startup Use PI ICU to configure disconnected startup for the interface. Procedure 1. In PI ICU, select the interface instance and select Disconnected Startup from the UniInt tab. 2. Select the Enable disconnected startup (with point caching) check box. 3. Required: Configure the cachemode parameter for disconnected startup. 4. Configure optional parameters: ◦ pisdk If you use PI SDK to retrieve extended point attribute information for points from PI Data Archive, disable PI SDK by defining /pisdk=0 in the .bat file, or remove any disconnected startup parameters. Disconnected startup requires PI API. Some UniInt based interfaces require PI SDK to retrieve point information if PI API is earlier than version 1.6 or PI Data Archive is earlier than version 3.4.370.x. In this case, setting the /pisdk=0 startup parameter may not disable PI SDK, prohibiting the use of disconnected startup. Running disconnected startup with PI SDK configured to retrieve point attribute information will cause the interface to log an error message and then shut down. ◦ cachepath Specify the cache file path. ◦ cachesynch Specify the cache file synchronization interval. For more information, see Disconnected startup parameters. 5. Click Apply to save the changes. Build cache files on remote interface machines The cache files for disconnected startup can be built from either the interface node or the remote node for the interface. 46 PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces Before you start Building cache files on remote machines requires disconnected startup to be enabled and a connection from the interface to PI Data Archive. Procedure 1. Start the interface instance on the remote node. The interface delays startup and creates two local cache files, one for PI point configuration and the other for PI digital state information for interface startup. 2. Wait for the interface to synch point information from PI Data Archive, and then transfer the cache files to the interface node you want to use. If the node you want to use cannot synch points, use the command line to disable syncing by setting the parameter /cachesynch=0. 3. Start the interface on the node you want to use. The interface loads the points from the cache file and begins collecting data. 4. View the message logs to verify that the interface is using the existing cache files on the correct machine. Interface buffering overview The interface node uses buffering to prevent data loss when PI Data Archive is not available. UniInt interfaces can buffer data to store point values when network communication to PI Data Archive is unavailable. UniInt disconnected startup requires buffering, and it is highly recommended for failover. Buffering for interfaces is configured and enabled through PI ICU. The PI System offers two services to implement buffering at interfaces. Only one of them, PI Buffer Subsystem, supports buffering for clients. For more information about buffering, see the "PI Interface Configuration Utility User Guide" in Live Library (https://livelibrary.osisoft.com). • PI Buffer Subsystem (pibufss) PI Buffer Subsystem is the best option for most environments, particularly if you use version 4.3 or later. Starting with version 4.3, PI Buffer Subsystem supports buffering to multiple servers and collectives. For information about configuring this buffering service, and the considerations for using PI Buffer Subsystem 4.3 or later, see "PI Interface Configuration Utility User Guide" in Live Library (https://livelibrary.osisoft.com). • API Buffer Server (bufserv) API Buffer Server is needed only by those with unusual configurations, for example, those connecting to older versions of PI Data Archive. If the interface is properly configured with buffering, the interface service cannot run unless the buffering service is also running. Note: Correct interface service dependencies are a common troubleshooting point. Ensure the interface service dependencies for the buffering service are configured correctly. Without buffering running during a loss of connection to PI Data Archive, any data collected while the connection is unavailable is permanently lost. PI Universal Interface (UniInt) 4.6.4 User Guide 47 Configuration overview for UniInt interfaces Buffering and collectives PI Buffer Subsystem 4.3 and later can buffer data to multiple independent servers, including those configured as PI Server collectives. For interfaces to use PI Buffer Subsystem with PI Server collectives, the PI Data Archive servers must be running PI Data Archive version 3.4.375 or later. Caution: API Buffer Server does not detect and validate the PI Server collective configuration. As a result, API Buffer Server requires manual configuration whenever a collective changes. Also, because API Buffer Server results in compression at the PI Data Archive machine, archives at different servers in the collective could contain different records. Buffering configuration Use PI Interface Configuration Utility (PI ICU) to configure interface buffering. The Tools > Buffering option helps you configure buffering. Depending on your current configuration, this option does one of the following: • If this computer is configured to buffer data using PI Buffer Subsystem 4.3 or later, the Buffering Manager window opens and shows a buffering dashboard. The dashboard shows information about the status of buffering on this computer. • If this computer is not currently configured to buffer data, and PI Buffer Subsystem 4.3 or later is installed, you are prompted to configure PI Buffer Subsystem. If you click Yes, the Buffering Manager window opens and shows the installation wizard, which helps you configure PI Buffer Subsystem. • If this computer is configured to buffer data using API Buffer Server (Bufserv), and PI Buffer Subsystem 4.3 or later is installed, you are prompted to convert to and configure PI Buffer Subsystem. If you click Yes at both prompts, the Buffering Manager window opens and shows the upgrade wizard, which helps you upgrade from API Buffer Server to PI Buffer Subsystem. • If PI Buffer Subsystem 4.3 is not yet installed, the Buffering window opens for API Buffering or the earlier version of PI Buffer Subsystem. For PI Buffer Subsystem 4.3, when configuring an interface to buffer data to a PI Data Archive server which has not been added to the buffered server list you must enable buffering. Click the Enable button in the Buffering Status box on the interface General page. To verify that the buffering status is On , exit PI ICU, then restart and select the interface. You can use Buffering Manager to configure, monitor, and troubleshoot buffering using PI Buffer Subsystem. PI Buffer Subsystem is recommended for applications connecting to PI Data Archive 3.4.375 or later. Older versions of PI Data Archive require API Buffer Server, as do some sites with custom solutions. See Buffering Manager help (PIPC/HELP/BufferManager.chm) for more information. Performance and status points UniInt provides the following options for monitoring the status and performance of an interface instance: 48 PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces • Health points PI points that track the interface and data source statuses and other interface-specific metrics. Health points can be configured in PI ICU and viewed in PI System visualization tools such as PI SMT, PI ProcessBook, or PI Coresight. Configuring health points is the recommended method for monitoring interfaces. OSIsoft recommends using health points to track interface status. • Performance counter points PI points that store data from Windows performance counters. Windows performance counters can be viewed in Windows Performance Monitor. Performance counter points require PI Performance Monitor Interface to collect and archive data from Windows Performance Monitor. Windows performance counter points provide real-time information about the performance of the operating system, application, service, or driver related to interface operation. Performance counter points can be configured to provide a more detailed level of performance information than health points. • UniInt performance points Interface-specific PI points that track how long it takes an interface to complete a scan for a particular scan class. • I/O rate points Track the average rate of data collection. • Failover status points Track status information for UniInt failover. • PI Interface Status Utility (PI ISU) points Required for server-level failover configuration for PI to PI Interface. A PI ISU watchdog point only monitors a single PI point, and is not recommended for monitoring interface health. Topics in this section • Health points • Performance counter points • Create performance points • I/O rate points • Failover status points PI Universal Interface (UniInt) 4.6.4 User Guide 49 Configuration overview for UniInt interfaces Health points Health points enable an interface to store its status information in PI Data Archive, providing a history of interface operation. Health point details Health Point Extended Data Type Descriptor (exdesc) Keyword When Updated When Reset Device Status [UI_DEVSTAT] String On change N/A Heartbeat [UI_HEARTBEAT] Interface Point Count [UI_POINTCOUNT] Integer Integer Variable N/A On change N/A IO Rate [UI_IORATE] Integer Heartbeat Heartbeat Message Count [UI_MSGCOUNT] Integer 60 seconds N/A Output Bad Value Rate [UI_OUTPUTBVRAT Integer E] Heartbeat Performance summary period Output Rate [UI_OUTPUTRATE] Integer Heartbeat Performance summary period Scan Class Bad Value Rate [UI_SCBVRATE] Integer At scan At Scan Scan Class Device Scan Time [UI_SCINDEVSCAN Integer TIME] At scan N/A Scan Class Information [UI_SCINFO] String Perf interval N/A Scan Class IO Rate [UI_SCIORATE] Integer At scan At Scan Scan Class Point Count [UI_SCPOINTCOUN Integer T] On change N/A Scan Class Scan Count [UI_SCSCANCOUNT Integer ] At scan Performance summary period Scan Class Scan Time [UI_SCINSCANTIM Integer E] At scan N/A Scan Class Scans Skipped [UI_SCSKIPPED] Integer On change Performance summary period Trigger Bad Value Rate [UI_TRIGGERBVRA Integer TE] Heartbeat Performance summary period Trigger Rate [UI_TRIGGERRATE Integer ] Heartbeat Performance summary period Health point heartbeats are updated in the following way: • If there are no scan classes defined, the heartbeat updates once per second. • If one or more scan classes are defined for the interface, the heartbeat updates at the rate of the most frequent scan class. • Non-scan class health points are updated when the heartbeat is updated. • All scan class health points are updated when the class is scanned. 50 PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces Some health points keep a running total of events until they are reset to 0. Several points are zeroed at the reporting period, which is based on the performance summary interval (by default, 8 hours). During normal shutdown, the interface writes the system digital state of Intf Shut to all health points loaded by the interface. Topics in this section • General health status points • Scan class health points • Create health monitoring points General health status points The following health points track general interface status. These points do not require a scan class to be defined in the location4 attribute of the PI point. Health points that return strings use the pipe symbol | as a delimiter between fields. Use the extended descriptor (exdesc) point attribute keyword to specify what type of information to gather. Use square brackets around the keyword. General UniInt health status points include the following types: • Heartbeat Keyword: [UI_HEARTBEAT] The heartbeat point indicates whether or not the interface is running. The heartbeat point is updated continuously unless the interface is shut down or in a deadlock situation. As long as the interface is running, the value of the point cycles incrementally from 1 to 15. The heartbeat point does not indicate whether the interface is connected to or collecting data from a data source. Note: The interface health heartbeat point is different than the UniInt failover heartbeat point. An interface can have both loaded simultaneously. If no scan classes are defined for the interface, the heartbeat is updated once a second. If the interface has scan classes defined, the update interval is set to the highest-frequency scan rate (no lower than once a second or higher than once a minute). • Scan class information Keyword: [UI_SCINFO] This string point lists the scan rates, including the heartbeat scan rate, in seconds. The point is updated once at interface startup and again at each performance interval. The scan class information string uses the following format: # rates | heartbeat_rate | scan class 1 | … | scan class n. For example, for an interface with three scan classes of 5, 10, and 60 seconds, the point returns the following string: 3 | 5 | 5 | 10 | 60 • Device status Keyword: [UI_DEVSTAT] PI Universal Interface (UniInt) 4.6.4 User Guide 51 Configuration overview for UniInt interfaces This string point contains information about communication between the interface and the data source. This point is evaluated only while the heartbeat point is updating and is updated on startup, on change, on shutdown, and on each performance summary interval. The point contains a string indicating status, formatted as follows: Status code | Description | Interface-specific text. For standard message strings, see UniInt device status messages. • I/O rate Keyword: [UI_IORATE] Counts the number of all point values (inputs, outputs, triggered inputs) being sent to PI Data Archive before exception processing occurs. Can contain zero for update intervals during which no data was sent to PI Data Archive. If the value stops updating, the interface has stopped collecting data. Updated at the same rate as the heartbeat point. • Message counter Keyword: [UI_MSGCOUNT] Tracks the number of messages that the interface has logged since start-up. A large number of log messages can indicate a problem that requires investigation. Updated every 60 seconds. • Output rate Keyword: [UI_OUTPUTRATE] Tracks the number of output point events that are sent to PI Data Archive before exception processing. Updated according to the heartbeat point update interval and reset each performance summary interval. If no output points are defined, the digital state value NO RESULT is written to the health point. • Output bad value rate Keyword: [UI_OUTPUTBVRATE] Counts number of output point events with non-GOOD status that are sent to PI Data Archive before exception processing. Output points update based on some event and cannot be scheduled for an update rate. These points are updated at the same rate as the heartbeat point and reset after the performance summary interval. If no output points are defined, the digital state value of NO RESULT is written to the health point. • Interface point count Keyword: [UI_POINTCOUNT] Counts number of PI points loaded by the interface. This count includes all input, output and triggered input points. This count does not include any interface health points or performance points. Updated on startup, on change, and shutdown. • Trigger input rate Keyword: [UI_TRIGGERRATE] 52 PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces Counts number of triggered input point events that are sent to PI Data Archive before exception processing. Triggered input points update based on some event and cannot be scheduled for an update rate. Therefore, the value of these points is updated at the same rate as the heartbeat point and reset after the performance summary interval. If no trigger input points are defined, the digital state value of NO RESULT is written to the point. • Trigger input bad value rate Keyword: [UI_TRIGGERBVRATE] Counts number of triggered input point events with non-GOOD values that are sent to PI Data Archive before exception processing. Triggered input points update based on some event and cannot be scheduled for an update rate. The value of these points is updated at the same rate as the heartbeat point and reset after the performance summary interval. If no trigger input points are defined, the digital state value of No Result is written to the point. Scan class health points To configure a health point for a scan class, set its location4 attribute to the scan class. To monitor the point count for unsolicited points, set location4 to 0. Unless otherwise stated in the description of the point, a scan class health point receives the system digital state NO RESULT if there are no interface points loaded for the scan class. Use the extended descriptor (exdesc) point attribute keyword to specify what type of information to gather. Use square brackets around the keyword. Scan class point count [UI_SCPOINTCOUNT] Contains the number of points loaded by the interface for a specified scan class. If location4 is 0, the point monitors the point count for unsolicited points. The scan class point count returns 0 when there are no points for the scan class. Scan class health points include the following types: • Scan class I/O rate Keyword: [UI_SCIORATE] Tracks the number of events sent to PI Data Archive before exception processing for the given scan class. If the scan class update executed successfully, the point contains a value between zero and the scan class point count inclusive. If location4 is 0, the point monitors the I/O rate for unsolicited points. If the point stops updating in PI Data Archive, an error has occurred and the points for that scan class are no longer receiving new data. The point is updated after the completion of each scan. • Scan class bad value rate Keyword: [UI_SCBVRATE] Calculates all the bad values being sent to PI Data Archive before exception processing from the device with a status of anything other than good. This point can be defined for each scan class and is used for all input points in that particular scan class. Updated at the completion PI Universal Interface (UniInt) 4.6.4 User Guide 53 Configuration overview for UniInt interfaces of associated scan class. If location4 is 0, the point monitors the bad value for unsolicited points. • Scan class scans skipped Keyword: [UI_SCSKIPPED] The total number of scans skipped since the last reporting period. This point tracks the number of scans that were not performed before the scan time elapsed and the next scheduled scan was executed. The value of this point is event-driven and updates each time a scan is skipped. If location4 is 0, the point monitors the total scans skipped for all of the scan classes. The value of the point is set to zero at the beginning of each reporting period. • Scan class scan count Keyword: [UI_SCSCANCOUNT] The number of scans performed by the interface since the last reporting period. The value of this point is incremented after the completion of every scan. If location4 is 0, the point monitors the total number of scans for all of the scan classes. The value of the point is set to zero at the beginning of each reporting period. • Scan class scan time Keyword: [UI_SCINSCANTIME] The total amount of elapsed time in milliseconds required for the interface to read data from the foreign device, populate the input points, and send the data to PI Data Archive. The value for this point is updated after each completed scan. • Scan class input device scan time Keyword: [UI_SCINDEVSCANTIME] The time in milliseconds required to read data from the foreign device and populate the input points. This value is a subset of the total scan class scan time and can be used to determine the percentage of time spent communicating to the foreign system compared with the percentage of time spent communicating with PI Data Archive. If the scan class scans skipped point value is increasing, consult the scan class scan time and scan class input device scan time points to identify where the delay is occurring: the data source communication, the PI System communication, or elsewhere. Create health monitoring points Create health monitoring points using PI ICU. Procedure 1. On the Health Points tab, right-click the list of points, and then click Create or Create All. A basic health point configuration should include the following points: ◦ Heartbeat ◦ Device status 54 PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces ◦ I/O rate ◦ Skipped scans for each scan class Additional health tags that are helpful include the following points: ◦ Scan count for each scan class ◦ Scan time for each scan class ◦ Scan class point count for each scan class Performance counter points To archive performance counter data in PI Data Archive, install PI Performance Monitor Interface and create performance points for the interface using PI ICU. In addition to interface-specific counters, the following performance counters are associated with UniInt-based interfaces for which counters are enabled. Counter Name Description Device Scan Time (milliseconds) Time in milliseconds to gather data from data source. Does not include the amount of time to write the values to PI Data Archive. There is one "Device Scan Time" counter per scan class. Applies to scan classes only. Does not apply to the instance (_Total). Device Actual Connections The actual number of data sources currently connected to the interface instance and working properly. Device Expected Connections Total number of data sources that the interface is expected to be communicating with at runtime. Only applies to the instance ( _Total). Device Status Stores communication information about the interface and the connection to the data source. The device status performance counter indicates status using the following values: • 0: Interface working properly, reading/writing data • 10: Connected to data source, not receiving data • 30 to 79: Interface-specific statuses • 50: UniInt failover is in a state where the backup interface may take over if needed after a certain period of time. 10 minutes is the default, but can be configured using the location5 attribute of the active ID point. • 90: Starting interface, not connected to data source • 95: Communication error with data source • 99: Shutting down the interface Only applies to the instance (_Total). PI Universal Interface (UniInt) 4.6.4 User Guide 55 Configuration overview for UniInt interfaces 56 Counter Name Description Failover Status Stores the failover state of the interface when configured for UniInt failover. Contains 0 if the interface is primary, 1 if backup. Interface heartbeat The heartbeat of the interface. Default: once a second. Set to the highest frequency scan rate, between once a second and once a minute. Uses default if no scan classes are defined. Only applies to the instance (_Total). Interface up-time (seconds) The number of seconds since the interface has started. This counter is incremented once a second. Only applies to the instance (_Total). IO Rate (events/second) The number of events per second received by the interface. If this counter is viewed from the Windows performance monitor, increase the update time of the performance monitor to the minimum scan period for the interface. For example, if the minimum scanning period for the interface is 5 seconds (/f=5), set the update rate of the performance monitor to 5 seconds by selecting the Chart command from the Options menu. On the window, change the periodic update time to 5 seconds. If the update time is left at 1 second, the IO Rate appears to go to zero between scans because no events are received between scans. Only applies to instance (_Total). Log file message count Number of messages that have been written to the log file. Only applies to the instance (_Total). PI Status Status of the connection to PI Data Archive. If the connection is GOOD the value is 0. If the connection is anything other than GOOD the value is 1. Only applies to the instance (_Total). Points added to the interface Number of points that have been added to the interface. Only applies to the instance (_Total). Point edited in the interface Number of point edits that have occurred. Only applies to the instance (_Total). Point Count Number of points loaded by the interface. Does not include UniInt-controlled points such as health points or failover points. Applies to both instance (_Total) and scan classes. Points Good Number of points that have sent a GOOD current value to PI Data Archive. If the last value sent to PI Data Archive is a system digital state value, or the last value sent to PI Data Archive is older than the Stale timeout, the point is not counted in the Points Good count. This value equals Point Count when all points are updating with a GOOD current value. Only applies to instance (_Total). Points In Error Number of points that have sent a system digital state value as the current value to PI Data Archive. The total number of Points In Error, Points Good and Points Stale equals the Point Count. Only applies to the instance (_Total). PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces Counter Name Description Points removed from the interface Number of points that have been removed from the interface. Only applies to the instance (_Total). Points Stale 10(min) Number of points that have not received a new value in the last 10, 30, 60 or 240 minutes. If a point had a GOOD current value that is now stale, the Stale count goes up and the Points Good count goes down. Only good points go stale; points in error do not. Only applies to the instance (_Total). Points Stale 30(min) Points Stale 60(min) Points Stale 240(min) Scan Time (milliseconds) Time in milliseconds to collect values from data source. One "Scan Time" counter per scan class. Does not apply to the instance. Applies to scan classes only. Scheduled Scans: % Missed Percentage of missed scans since starting the interface. If a scan occurs more than one second after its scheduled time, the scan is considered missed. One "Missed Scans" counter per scan class. Applies to both instance (_Total) and scan classes. Scheduled Scans, % Skipped Percentage of skipped scans since starting the interface. If a scan occurs one scan period or more after its scheduled time, those scans are considered skipped. One "Skipped Scans" counter per scan class. Applies to both instance (_Total) and scan classes. Scheduled Scans: Scan count this interval The total number of scans in the current performance interval. This total is the current sample size that is used to evaluate the % Missed Scans and the % Skipped scans. The performance interval is 8 hours by default, and can be changed using PI ICU (Debug tab) or by setting the perf command-line parameter. The minimum performance interval is 60 seconds. When the performance interval is exceeded, the previous samples are discarded and sampling starts again. Applies to both instance (_Total) and scan classes. Standard deviation above mean The quantity calculated to indicate the extent of deviation for input and output data for each heartbeat interval above the average of the values. This calculation accounts for up to 30 days of history. Only applies to instance (_Total). Standard deviation below mean The quantity calculated to indicate the extent of deviation for input and output data for each heartbeat interval below the average of the values. This calculation accounts for up to 30 days of history. Only applies to instance (_Total). Update performance counters If you update scan classes after creating the interface service, you can update the scan class performance counters and ensure new points are created for scan classes that were added. PI Universal Interface (UniInt) 4.6.4 User Guide 57 Configuration overview for UniInt interfaces Procedure 1. Update the Windows performance counters in one of two ways: ◦ Use the Windows service-related parameter (syntax: /upcvalue) in PI ICU to update Windows performance counters. ◦ Using a command prompt, issue the command: interface.exe /upc / serviceidinterfaceid. For more information, see Windows service-related parameters. Create performance points Performance points can be configured to monitor the amount of time, in seconds, that it takes an interface to complete a scan for a particular scan class. The lower the scan time, the better the performance. The scan time is recorded to millisecond resolution. Several other measurements concerning the performance of the interface can be monitored with performance points. Performance points are not relevant if the interface gathers data asynchronously, because the data source is not regularly scanned. Create performance points using PI ICU. Procedure 1. On the Performance Points tab, right-click the list of points, and then click Create or Create All. I/O rate points I/O rate points monitor the data collection rate of an interface. An I/O rate point can be configured to receive ten-minute averages of the total number of exceptions per minute that are sent to PI Data Archive by the interface. A value is considered an exception if it has exceeded the exception limits for a given PI point. Because ten-minute averages are taken, the first average is not written to PI Data Archive until ten minutes after the interface has started. One I/O rate point can be configured for each copy of the interface that is in use. Some interfaces permit more than one I/O rate point per interface. See the interface user guide for details. Note: In HOT failover mode, the value of the I/O rate point on a backup interface might be higher than that of the I/O rate on the primary interface. This might happen because the failover primary interface instance switch occurs after values are processed in preparation for sending to PI Data Archive. These values are discarded by the backup interface; however, the I/O rate point value seems to show that the events are being sent to PI Data Archive. To create I/O rate points using PI ICU, go to the IO Rate tab. To display the averages as events per minute, use a client application such as PI ProcessBook. For detailed information about the I/O rates mechanism, refer to the PI-API Installation Instructions documentation or PI API online help through the OSIsoft Tech Support site. 58 PI Universal Interface (UniInt) 4.6.4 User Guide Configuration overview for UniInt interfaces Failover status points UniInt failover tracks status using the following PI points: • Active ID Tracks which interface instance is currently forwarding data from the data source to PI Data Archive. If the backup instance detects that the primary instance has failed, it sets the active ID point to its own failover ID and assumes responsibility for data collection, becoming the primary. • Heartbeat for UFO instance 1 Enables the backup interface instance to detect whether the primary instance is running. • Heartbeat for UFO instance 2 Enables the primary interface instance to detect whether the backup instance is running. • Device Status for UFO instance 1 • Device Status for UFO instance 2 Displays interface status. Device status point values Device Status Description 0 Interface working properly, reading/writing data 10 Connected to device, not receiving data 30-70 Interface-specific error; consult interface manual 90 Starting interface, not connected to device 95 Communication error with device 99 Shutting down the interface Note: Device status points are different than the UniInt health device status points. The information in the two point types is similar, but failover device status points are integer values and the health device status points are string values. Heartbeat point values Value Status 1 - 15 The interface instance is running. This value cycles through 1 - 15 based on the rate specified by the failover update interval. 17 - 31 The interface instance has lost its connection to PI Data Archive. This value cycles through 17 - 31 until the connection is restored. 0 The interface instance is in a normal shutdown process. PI Universal Interface (UniInt) 4.6.4 User Guide 59 Configuration overview for UniInt interfaces 60 PI Universal Interface (UniInt) 4.6.4 User Guide UniInt interface operation Interface operation includes startup, shutdown, point updates, and diagnostics and troubleshooting. Topics in this section • Start the interface • Stop the interface • PI point updates • UniInt diagnostics and troubleshooting Start the interface Starting the interface as a Windows service is best for normal interface operation. The other options can be better for testing and troubleshooting. Procedure 1. Choose one of the interface startup methods: ◦ Start the interface from PI ICU, either starting the service or as a non-service in the command prompt window. ◦ Run the Windows service for the interface. From the Windows menu, click Control Panel > Administrative Tools, and then doubleclick Services. Select the service for the interface and click Start. ◦ Run the batch file with the interface startup commands. ◦ Run the interface executable command from a command prompt window, and specify the parameters from the command line. Stop the interface You can stop the interface and trigger an orderly shutdown where UniInt performs all the shutdown processes. Procedure 1. For orderly shutdown of interfaces running as a service, stop the interface service in one of two ways: ◦ Stop the interface service in PI ICU. ◦ Stop the interface service in Windows. If the computer crashes or the process is stopped, the interface can be terminated without completing an orderly shutdown. 2. For interfaces running interactively in a command prompt window, press Ctrl+C to begin orderly shutdown. PI Universal Interface (UniInt) 4.6.4 User Guide 61 UniInt interface operation Note: To interrupt orderly shutdown for interactive interface processes in the command prompt window, press Ctrl+C more than once. PI point updates After startup, the interface checks for points that have been added, changed, or deleted. Normal point updates happen in a cycle with the following conditions: • Default point updates occur every two minutes after startup and process 25 point updates at a time. • For more than 25 pending updates, the interface processes updates in batches and splits the update interval to increase processing speed. Updates occur every 30 seconds or at onequarter of the update interval (updateinterval) parameter, whichever is lower, until the updates are complete. UniInt writes the digital state SCAN OFF to any removed points. Updates and point synchronization that involve numerous point changes require additional time before the interface handles all the point changes. To update large batches of point updates at the same time, see the Process large point updates section in this document. Without disconnected startup, any point updates that occur during a loss of connection to the PI Data Archive are lost until the interface is restarted. Topics in this section • Modify point check frequency • Process large point updates Modify point check frequency The default frequency for the interface to check for PI point updates is 120 seconds. You can modify this value to change the point check frequency. Procedure 1. Open PI ICU and select the interface instance. 2. From the navigation pane, select the UniInt page. 3. In the Performance and Behavior area, select Point update interval (sec.), and enter the new point check frequency. This new value updates the update interval (updateinterval) parameter in the .bat file. The new point check frequency takes effect at the end of the current update interval. Process large point updates Point updates are processed in batches. Large point updates can be processes more quickly by stopping and restarting the interface, either for updating point attributes that change while connected, or for synchronizing the disconnected startup cache files. However, this process causes some data loss. 62 PI Universal Interface (UniInt) 4.6.4 User Guide UniInt interface operation Note: Avoid running the interface in disconnected startup mode while making major point modifications to PI Data Archive. Procedure 1. Stop the interface. You can stop the interface service from PI ICU or Windows. 2. If you are using disconnected startup, move or delete any previously created cache files for the interface. This prevents the interface from using the outdated cache files during subsequent restarts. 3. Restart the interface. The interface collects all the point updates and processes them in one batch. UniInt diagnostics and troubleshooting Diagnostic information is available for UniInt interfaces using the following methods: • Review error and informational message logs in the PI message log file • Use the pipc parameter to print all messages to the pipc.log file in addition to the PI message log file • View Windows performance counters using the Windows Performance Monitor, or use the PI Interface for Performance Monitor to create performance counter points • View interface health, status, and performance points using a visualization tool • Change parameters from the command line and test the output Topics in this section • Start and stop the interface interactively • Disable exception reporting • Hit, missed, and skipped scans • Use command prompts • UniInt parameter reference • View Windows performance counters • Error and informational messages Start and stop the interface interactively For interactive parameter configuration, running the interface service you can use PI ICU to run the interface interactively. Note: Interfaces running as services must be stopped before you can run them interactively. PI Universal Interface (UniInt) 4.6.4 User Guide 63 UniInt interface operation Procedure 1. Open PI ICU and select the interface instance. 2. Click Interface > Start Interactively. A command prompt window opens and interface operation begins automatically. 3. Optional: Press Ctrl+C to initiate orderly shutdown. You can also close the command prompt window to stop running the interface interactively. Note: Press Ctrl+C more than once during orderly shutdown to stop the interface immediately and end any interface-specific cleanup processes. The interface stops. Disable exception reporting Standard exception reporting is enabled by default, and is disabled using the sn parameter in the .bat file. You can use PI ICU to disable exception reporting for the interface instance. Use PI SMT to change point attributes. Procedure 1. To disable exception reporting for the interface instance, launch PI ICU and select the interface instance, navigate to the UniInt page and select Bypass exception. 2. To disable exception reporting for a PI point, use PI SMT, and set excmin, excmax, excdev, and excdevpercent attributes to 0. This setting takes effect after the interface restarts. Hit, missed, and skipped scans UniInt logs the percentage of scans that are hit, missed, and skipped for scan-based input points. Scans are defined as follows: • Hit scans occur on time. • Missed scans occur more than one second after the scheduled scan time. • Skipped scans occur one or more scan periods after the scheduled scan time. For example, if a particular scan class has a period of two seconds and a scan for this class occurs 1.1 seconds after its scheduled time, then one scan has been missed. No scans have been skipped, because the next scan can occur at its scheduled time, 0.9 seconds after the last scan in this case. For scan classes that have periods of one second or less, scans are considered either hit or skipped. Because every skipped scan is also considered to be a missed scan, the percentage of skipped and missed scans is the same for scan classes with periods of one second or less. Adjust scan performance summary logs By default, the performance summary for hit, missed, and skipped scans is logged every 8 hours if the hit ratio (hits / (hits + misses)) drops below 0.95. 64 PI Universal Interface (UniInt) 4.6.4 User Guide UniInt interface operation You can change scan performance summary logging in the following ways: • Adjust the log frequency. • Disable logging for unsolicited input points. Procedure 1. To adjust the frequency of logging using PI ICU, set its value on the Debug tab. In the startup batch file, set the perf parameter. 2. For interfaces that use unsolicited input points, deactivate performance summaries using PI ICU by going to the UniInt > Debug tab and setting Scan performance summary to 0, or specify /perf=0 in the .bat file. Performance summaries are meaningless for unsolicited inputs. Disable data collection You can disable data collection before starting the interface, or while the interface is running. Data collection is enabled by default. Procedure 1. Using PI SMT, set the scan attribute for each point to 0. The interface will detect the change at the next update interval (by default, 2 minutes). Multiple update intervals are necessary to process point updates of 25 or more. 2. Optional: To enable data collection, set the scan attribute to 1. Use command prompts For troubleshooting, you can open a command prompt and change parameters from the command line instead of configuring the .bat file using PI ICU. Before you start Ensure the interface instance was created and configured correctly in PI ICU. Procedure 1. From the Windows menu, open a command prompt window. 2. Navigate to the interface directory and run the .bat file. The interface starts. 3. Enter the interface executable name followed by /help to list parameters supported by the interface. For information about interface parameters, see UniInt parameter reference. UniInt parameter reference Parameters can be used to configure general interface settings, the Windows service, failover, and disconnected startup. Parameter syntax uses the following rules: PI Universal Interface (UniInt) 4.6.4 User Guide 65 UniInt interface operation • Parameters are not case sensitive • Parameter values or parameters that use embedded spaces must be enclosed in quotes • Enable or disable parameters that do not have values either by adding or removing the parameter. • Most interfaces can use either the / or - characters as parameter delimiters, unless specified in the interface user guide. Use PI ICU to select the delimiter. Each interface has a list of supported parameters, which you can view in a command prompt window when running the interface interactively by entering /help. Interface version information is available by entering /v. Windows-related parameters should never be included in the .bat file for the interface. Topics in this section • Windows service-related parameters • Standard parameters • UniInt failover parameters • Disconnected startup parameters Windows service-related parameters Windows service-related parameters should be specified from the command line or PI ICU. Do not include Windows-related parameters in the .bat file. Windows service-related parameters for UniInt 66 Parameter and syntax Description /query Query the operating system for the status of the interface service. Returns RUNNING, NOT RUNNING or NOT INSTALLED. /install Create a Windows service. The default name of the service is the executable name, unless you specify the serviceid parameter. /start Start the interface service. /stop Stop the interface service. /remove Remove the interface service from the list of services in the Windows Services control applet. /disabled Create the interface as a disabled service. /display name Install service using the specified display name. /serviceid instanceID Specify the instance ID of the service you are maintaining, using a concatenation of the interface executable name and the serviceid parameter. This value is different than the id parameter for the interface or the ufo_id parameter for failover. PI Universal Interface (UniInt) 4.6.4 User Guide UniInt interface operation Parameter and syntax Description /upc value Install, remove, or update Windows performance counters. Valid value options are update (default), add, or remove. This parameter should only be included in the .bat file if the administrator wants to use it to update performance counters for an interface and then shut down. Standard parameters Interfaces use startup parameters to control how the interface runs. Some parameters require values. Standard settings for the interface include the following parameters: • Application name (appname) Syntax: /appname=Name For API trusts, this parameter configures the name sent to PI Data Archive when the interface connects. The interface includes the Name value in message logs. By default, the interface sends the first four characters of the executable name appended with the letter E. Maximum length is eight characters. To use eight characters for the Name value, ensure the PIClient.ini file contains the following setting: [PISERVER] LONGPROCNAME=1 • Debug UniInt (dbuniint) Syntax: /dbuniint=level-bitmask Enables debug output for one or more specified functions. This parameter can be added, removed, or modified while the interface is running. Options include: ◦ Enable a single debug option. Set the associated bit value for the parameter. ◦ Enable all debugging options. Set all bit values to: /dbuniint=0xFFFF. The bitmask is a 32-bit integer, which can be specified as either a hexadecimal number or a decimal number. Hexadecimal values begin with 0x. Bitmask values for UniInt debug settings include the following options. Description Hexadecimal Value Decimal Value Initialization 0x0002 2 Exit Handler 0x0008 8 Update PI Data Archive 0x0010 16 Control Loop 0x0020 32 Point List Loading 0x0040 64 Point Edits 0x0080 128 IO Rate points 0x0100 256 PI Universal Interface (UniInt) 4.6.4 User Guide 67 UniInt interface operation Description Hexadecimal Value Decimal Value Time Functions 0x0400 1024 Performance Counters 0x0800 2048 Digital State Caching 0x2000 8192 Whitelist 0x4000 16384 Standard Deviation 0x8000 32768 • TrimSyntax: /digstatetrimleft leading spaces from digital state tags (digstatetrimleft) Syntax: /digstatetrimleft Removes both leading and trailing spaces from digital state tags. If this parameter is not set, then only trailing spaces are deleted. • Disable counters (disablecounters) Syntax: /disablecounters Disables Windows performance counters. Syntax: /ec[=#] The event counter (ec) parameter associates an I/O rate point in the inIOrates.dat file with this copy of the interface. The value specifies the number of the point in the file. Valid ec value ranges are: ◦ 2 to 34 ◦ 50 to 200 Interfaces that share an ec value will write to the same I/O rate point, making the data unusable. To avoid this problem, define a unique event counter for each copy of the interface. The default ec value is 1. The default value is associated with the interface in the following cases: ◦ If the # value is not specified ◦ If the ec parameter is omitted from the command line The event counter can be used by specific interfaces to keep track of input or output operations. In these cases, you can define subsequent instances of the ec parameter. Refer to the interface-specific documentation to see if subsequent instances of the ec parameter have any effect. For interfaces that use subsequent instances of the ec parameter, use the form /ec*=#, where * is any ASCII character sequence. For example, /ecinput=10, / ecoutput=11, and /ec=12 are acceptable for the second, third, and fourth event counter strings. • Scan class (f) The f parameter defines one or more scan classes. Scan classes specify how often a data source is checked for new data. Syntax: /f=scan-interval Specify scan interval and optional offset using the following format: time value,time offset,L 68 PI Universal Interface (UniInt) 4.6.4 User Guide UniInt interface operation Scan class time and offset time values use the following format: HH:MM:SS.##, where: ◦ HH is hours ◦ MM is minutes ◦ SS is seconds ◦ ## is hundredths of seconds (01 to 99) If you omit HH and MM, the scan period is assumed to be in seconds. For example, / f=00:01:00,00:00:05 is equivalent to /f=60,5. The L value associates the time unit value with the local computer time-of-day settings. Time-of-day scans use a 24-hour clock and are automatically adjusted for daylight saving time. This is also known as wall clock scheduling. The following example uses a scan frequency of 24 hours (once a day), an offset of eight hours from midnight (8 AM), and enables time-of-day scanning by specifying the L value: /f=24:00:00,08:00:00,L The scan class frequency determines how often to scan for data. The offset specifies how long after the frequency's time value to scan for data. To balance the scanning workload, specify an offset for scan classes that have the same interval so that they are not scanned simultaneously. For each scan class that you want to define, specify the f parameter. Scan classes are numbered by the order in which you define them. Scan class 1 is the first defined f parameter, and scan class 2 is the second f parameter you define. Examples: ◦ Scan class 1 has a scanning frequency of one minute with an offset of five seconds, and scan class 2 has a scanning frequency of seven seconds with no offset: /f=00:01:00,00:00:05 /f=00:00:07 ◦ Two scan classes, defined using only seconds: /f=60,5 /f=7 ◦ Sub-second scan classes defined as decimal values: /f=0.5 /f=00:00:00.1 Note: Deleting scan classes or changing their order can adversely affect the operation of existing PI points, which are closely related to scan rates. Scan classes should be adjusted only by PI System administrators who are fully aware of the PI System configuration and the effects of any such changes. For more information about scan classes, see the PI Interface Configuration Utility (PI ICU) User Guide. • Foxboro Coordinated Universal Time (foxutc) Syntax: /foxutc Enabling this option determines the Coordinated Universal Time (UTC) of the PI Data Archive node by using the same process as that used in PI Interface for Foxboro. This parameter is not necessary if the PI API version is 1.6.x or later and the PI Data Archive version is 3.4.370.x or later. PI Universal Interface (UniInt) 4.6.4 User Guide 69 UniInt interface operation The foxutc parameter is used in situations where the default method of calculating the UTC offset between the interface node and the PI Data Archive node does not work properly. For PI Interface for Foxboro, the time zone on the interface node is always set to GMT standard time, but the wall clock time is adjusted by one hour during daylight savings time changes, so the UTC time on the interface node also changes by one hour. This parameter also enables you to calculate time zone differences of less than one hour. • Host name (host) Syntax: /host=host[:port] Required: Specifies the host name of the PI Data Archive. The host can specify IP address, host name, or fully-qualified domain name. The port specifies the TCP/IP port on which PI Data Archive listens for requests. Default for port is 5450. The following examples are all valid host parameter values: /host=marvin /host=marvin:5450 /host=206.79.198.30 /host=206.79.198.30:5450 When failover is enabled, the host parameter has additional meaning. The value of the host parameter depends on the PI Data Archive configuration, where: ◦ If the redundant interfaces are configured to send data to a PI Data Archive node that is not part of a collective, the value of host must be identical on both interface computers. ◦ If the redundant interfaces are configured to send data to a PI Data Archive collective, the value of host must be set on the different interface nodes to different members of the collective. This parameter ensures that outputs continue to be sent to the data source if one of the PI Data Archive nodes becomes unavailable for any reason. • Interface ID (id) Syntax: /id=id# The id parameter specifies the integer ID of the interface instance. The maximum length of the id# value is interface-specific. • I/O source time (iosourcetime) Syntax: /iosourcetime Enable the iosourcetime parameter for output points. At startup, the interfaces sends the time stamp of the source point’s snapshot value to the interface-specific code that handles the actual output. • Maximum stop time (maxstoptime) Syntax: /maxstoptime Specifies the maximum amount of time that the interface can use to perform cleanup tasks when shutting down. If shutdown exceeds the specified time, the interface exits without performing remaining tasks. Default is two minutes. 70 PI Universal Interface (UniInt) 4.6.4 User Guide UniInt interface operation • No outputs (nooutputs) Syntax: /nooutputs Disable outputs to the data source in a read-write version of an interface. The interface cannot write data from PI Data Archive to the data source, but it can read data from the data source into PI Data Archive . Note: If the interface is available in both read-write and read-only versions, use the readonly version instead of disabling outputs. • Percent up (percentup) Syntax: /percentup For interfaces that connect to multiple devices (data source), specifies the percentage of connections that is required to be valid for the interface to report a device status of "0 | Good". If the number of valid connections drops below the specified percentage, the interface sets the device performance counter to indicate failure. By default, 100 percent of connections must be valid. • Performance summary logging (perf) Syntax: /perf=interval Specifies how often, in hours, performance summaries are logged. If the percentage of scans performed on time drops below 95%, the interface logs performance summaries for each scan class. By default, summaries are reported every eight hours. This setting can be changed using PI ICU, from the Debug tab. If the data source uses an unsolicited reporting mechanism for all input data to the interface, performance summaries are meaningless. In this case, you can disable performance summaries by setting the interval value to 0. • PIPC Message Log (pipc) Syntax: /pipc When enabled, the interface sends error and informational messages to the pipc.log file in addition to the PI Message Log. • PI SDK (pisdk) Syntax: /pisdk=# Enables PI SDK connections for the interface. By default, PI SDK connections to PI Data Archive are disabled unless the interface enables them. This parameter is ignored if the interface is running with PI API version 1.6.x or later, and connecting to PI Data Archive version 3.4.370.x or later. Enable PI SDK: /pisdk=1 Disable PI SDK: /pisdk=0 PI Universal Interface (UniInt) 4.6.4 User Guide 71 UniInt interface operation • PI SDK connection timeout (pisdkcontimeout) Syntax: /pisdkcontimeout=timeout Specifies the time, in seconds, for how long to wait for a connection to PI Data Archive before timing out. Overrides any connection timeout configured using PI Connection Manager. To adjust the PI SDK connection timeout, use PI Connection Manager. Only configure this setting if the interface uses PI SDK and you must configure a connection timeout that is different than the setting configured with PI Connection Manager. • PI SDK data access timeout (pisdktimeout) Syntax: /pisdktimeout=timeout Specifies the time, in seconds, for the PI SDK data access timeout. Configure this setting only if the interface uses PI SDK and you need to override the timeout that is configured using PI Connection Manager. • Point source (ps) Syntax: /ps=point-source Required: Specifies the point source for the interface instance. The point source is used by the interface to determine which points to load at startup and during operation. This point source value is not case-sensitive. Note: If the PI API version is earlier than 1.6.x, or the PI Data Archive version is earlier than 3.4.370.x, the point-source value must be a single character, or PI SDK must be used to load points. The following point sources are reserved. Do not configure them for interface instances. Point Source Reserved By T PI Totalizer Subsystem G and @ PI Alarm Subsystem (PI Alarm) R PI Interface for Random (Random interface) 9 PI Interface for RampSoak (RampSoak interface) C PI performance equations subsystem • Service events timeout (svceventsto) Syntax: /svceventsto=timeout Specifies the service events timeout for how many milliseconds the interface spends servicing events from the event queue before switching to perform its other tasks. Default is 500 milliseconds. Maximum is 3000 milliseconds (3 seconds). If you specify /svceventtsto=0, UniInt interfaces will service 36 events before switching to other tasks. Used when servicing outputs and triggered inputs to ensure that the servicing of events does not exceed the Service Events Timeout time limit. 72 PI Universal Interface (UniInt) 4.6.4 User Guide UniInt interface operation • Suppress initial outputs (sio) Syntax: /sio The sio parameter is enabled to suppress initial outputs. Suppresses the default interface startup behavior. Outputs will be written only when they are explicitly triggered. By default, when a UniInt interface is started, it determines the current snapshot value of each output point and writes this value to each output point. In addition, when an output point is edited, the interface writes the current snapshot value to the point by default. • Disable exception reporting (sn) Syntax: /sn Specifying the sn parameter disables exception reporting, which is enabled by default. Do not use for normal interface operation. • Startup delay (startup_delay) Syntax: /startup_delay[=delay] Specifies the time, in seconds, for how long the interface waits after logging the Starting message before proceeding. Startup delays for interfaces are not enabled by default. If you enable this parameter, default delay value is 30 seconds. • Stop state (stopstat) Syntax: /stopstat[=digitalstate] Writes the digital state defined in the system digital state set to PI points when the interface is stopped. By default, no digital states are written to PI points when the interface shuts down. If you omit the digitalstate value, the interface writes Intf Shut to the PI points. In a UniInt failover configuration, the digital state is not written to points when an interface instance is stopped, because the other interface instance takes over writing data to the point. For more information about the PI Data Archive system digital state set, see PI Server System Management Guide PI Server System Management Guide (https:// techsupport.osisoft.com/Downloads/File/b481399c-463e-4bcb-a93f-6ef85295263e). • Unique redundant interface ID (uht_id) Syntax: /uht_id=ID# Specifies a unique ID for interfaces that are run in a redundant mode without using the UniInt failover mechanism. Some UniInt interfaces implement their own version of failover. This setting enables you to configure health points to monitor a copy of such an interface. The interface loads only health points that contain the specified ID# value in the location3 attribute. • UniInt point trace (uitrace) Syntax: /uitrace=tagname Enables tracing for the PI point specified in tagname. PI Universal Interface (UniInt) 4.6.4 User Guide 73 UniInt interface operation Note: Trace output can bloat log files. Limit usage of this parameter. This parameter can be added, removed, or modified while this interface is running. • Update interval (updateinterval) Syntax: /updateinterval=interval Specifies time, in seconds, for how often the interface checks for changes to the PI point database, such as point additions, deletions, or attribute modifications. Default is 120 seconds. Must specify a value between 1 and 300. To disable checking, set interval to 0. When checking is disabled, changes are not detected until you stop and restart the interface. If the PI point database is very stable, disabling the checking for point updates can slightly reduce the chances of missing scans when communication between PI Data Archive and the interface is interrupted. • Whitelist (whitelist) Syntax: /whitelist=path\filename Specifies a list of permitted output tags and their attributes, which the interface uses to write output data to the data source. UniInt failover parameters Interfaces use failover parameters to control how failover operates. Some parameters require values. Failover settings for UniInt failover include the following parameters: • Do not failover (ufo_dnfbpi) Syntax: /ufo_dnfbpi If both interface instances lose connectivity to PI Data Archive, do not attempt failover. Enabling this option ensures that if both instances lose connectivity to PI Data Archive, incoming data is buffered by a single interface instance to prevent the buffer from being split. • Interface failover ID (ufo_id) Syntax: /ufo_id=failoverID# Required: Specifies the failover ID for this interface instance. The active ID point maintains the failover ID of the interface that is currently primary in a failover configuration. Valid values: integer from 1 to 4,294,967,295. Note: The interface failover ID (ufo_id) and interface ID (id) parameters are different settings. • Other interface failover ID (ufo_otherid) Syntax: /ufo_otherid=otherID# 74 PI Universal Interface (UniInt) 4.6.4 User Guide UniInt interface operation Required: Specifies the failover ID of the other interface instance in the failover configuration. The otherID# value must be different from the value specified for ufo_id. Valid values: integer from 1 to 99. • Synchronization file path (ufo_sync) Syntax: /ufo_sync=path\[filename] Required: Specifies the path to the directory containing the shared file used for failover synchronization and an optional filename that overrides the default filename. Each node in the failover configuration must specify the same path and filename and must have read, write, and file creation rights to the shared directory. If the file does not exist, the first interface instance to start creates the file. The default filename is executablename_pointsource_interfaceID.dat. The path value can be one of the following types: ◦ Fully qualified machine name and directory ◦ Mapped drive letter ◦ Local path, if the shared file is on one of the interface nodes The path value must end with either a slash / or backslash \. The interface interprets path names without a terminating slash as a filename value. Note: If you specify the file name, omit the trailing slash. If there are spaces in the path or filename, enclose the entire path and filename in double quotes. If you quote a path, use two backslashes \\ at the end of the path. • Failover type (ufo_type) Syntax: /ufo_type=type Required: Specifies the type of failover. Type values can be HOT, WARM, or COLD. If an interface does not support the requested type of failover, the interface logs an error and shuts down. • Failover interval (ufo_interval) Syntax: /ufo_interval=time Specifies time, in milliseconds, for how often the interface checks and updates the failover heartbeat points. The time value must be the same on both interface computers. Minimum is 50, maximum is 20,000, and the default is 5000 milliseconds. • Output failover-specific debug messages (ufo_debug) Syntax: /UFO_Debug=x Debug off (default) = 0x00 Debug ActiveID = 0x01 Debug this Heartbeat = 0x02 Debug other Heartbeat = 0x04 PI Universal Interface (UniInt) 4.6.4 User Guide 75 UniInt interface operation Debug shared file = 0x08 Debug other DeviceStatus = 0x10 Debug reads from PI = 0x20 Debug max = 0xFF • Host name (host) When failover is enabled, the host parameter has additional meaning. For more information, see Standard parameters. Disconnected startup parameters Interfaces use disconnected startup parameters to control how disconnected startup operates. Some parameters require values. Disconnected startup settings for UniInt interfaces include the following parameters: • Cache mode (cachemode) Syntax: /cachemode Required. If enabled, the cachemode startup parameter indicates that the interface is configured for disconnected startup. Default: Not Defined. • Cache file path (cachepath) Syntax: /cachepath=path Specifies the directory path to the cache files. The specified directory must already exist on the interface node. By default, the cache files are created in the same location as the interface executable, which may require increased service account access permissions. For more information about security for access to the default file path, see Restricted access for service accounts. If the path contains any spaces, enclose the path in quotes. For example: ◦ /cachepath=D:\PIPC\Interfaces\CacheFiles ◦ /cachepath="D:\Program Files\PIPC\MyFiles" • Cache file synchronization (cachesynch) Syntax: /cachesynch=# Specifies the amount of time in milliseconds that the interface takes to synchronize the point cache file with PI Data Archive during each update. Note: If the value of the cachesynch parameter is greater than the interval of any scan class, input scans will be missed while the cache file is being synchronized. Ensure that the value is less than the smallest scan class period (defined with the f parameter). Interfaces often have multiple scan classes. 76 PI Universal Interface (UniInt) 4.6.4 User Guide UniInt interface operation By default, the interface synchronizes the point cache if running in disconnected startup mode. UniInt allocates a maximum of # milliseconds during each pass through the control loop, synchronizing the interface point cache until the file is completely synchronized. The default value is 250 milliseconds. The minimum value is 50 milliseconds, and the maximum is 3000 milliseconds. The interface changes # values of 1 to 49 to the minimum value of 50 milliseconds and values greater than 3000 to the maximum value of 3000 milliseconds. To disable synchronization of the point cache file, set # to 0. For example: ◦ /cachesynch=50 (50 millisecond interval) ◦ /cachesynch=3000 (3 second interval) ◦ /cachesynch=0 (do not synchronize the cache file) View Windows performance counters UniInt enables Windows performance counters by default when the interface runs as a service. To view performance counters for an interface service, launch the Windows Performance Monitor control panel and perform the following steps: Procedure 1. Click the + button. The Add Counters window opens. 2. Select one or more performance counters from the Available counters list, and then click the Add>> button. The counters are listed in the Added counters list. PI Universal Interface (UniInt) 4.6.4 User Guide 77 UniInt interface operation 3. Click OK. The values of the selected counters are displayed on the graph. Error and informational messages Informational and error messages generated by the interface are logged to the PI Message Log file. Interface-specific errors are discussed in the interface documentation. To view system and PI Data Archive errors, use the AboutPI-SDK or PI SDK utilities, or PI SMT. To translate an error number to an error description, you can perform one of the following: • Issue the following command in a command prompt: pidiag –e error_number. • Use the Error Lookup tool from the AboutPI-SDK utility. Enter the error number and click Lookup. Errors use the following numbering: • Positive: System errors • Negative: PI Data Archive errors You can enable standard deviation debugging messages using the debug UniInt (dbuniint) parameter to record the following information: 78 PI Universal Interface (UniInt) 4.6.4 User Guide UniInt interface operation • Standard deviation thread starting and stopping • Calculated queue size • Variances of more than two units of standard deviation from the current mean Additionally, interfaces can write messages to the pipc.log file by setting the pipc parameter in the .bat file to /pipc. For details about interface message and error logging, see the OSIsoft Knowledge Base article How to read new UniInt 4.5.0.x and later Interface message logs (https:// techsupport.osisoft.com/Troubleshooting/KB/KB00401?). Topics in this section • UniInt failover-specific messages • Disconnected startup messages • UniInt device status messages UniInt failover-specific messages This section contains informational messages and their meanings, and error messages and their causes and resolutions. Informational messages: • 16-May-06 10:38:00 ifc 1> UniInt failover: Interface in the "Backup" state. Meaning: At system startup, the interface assumes the backup role and monitors the status of the other interface participating in failover. When configured for Hot failover, data received from the data source is queued and not sent to PI Data Archive while in backup mode. The amount of data queued while in this state is determined by the failover update interval. Typically no more than two update intervals of data reside in the queue, though state negotiations can cause the queue to hold up to five failover update intervals worth of data. • 16-May-06 10:38:05 ifc 1> UniInt failover: Interface in the "Primary" state and actively sending data to PI. Meaning: The interface is collecting data and sending it to PI Data Archive. • 16-May-06 16:37:21 ifc 1> UniInt failover: Interface in the "Primary" state, Backup interface available. Meaning: The interface is collecting data and sending it to PI Data Archive . The other copy of the interface is ready to take over the role of primary if failover occurs. • 16-May-06 16:37:21 ifc 1> UniInt failover: Interface in the "Primary" state, Backup interface not available. Meaning: The interface is collecting data and sending it to PI Data Archive . However, the other copy of the interface is not ready to take over the role of primary if failover is triggered. PI Universal Interface (UniInt) 4.6.4 User Guide 79 UniInt interface operation Error messages: • 16-May-06 17:29:06 ifc 1> One of the required Failover Synchronization points was not loaded. Error = 0: The Active ID synchronization point was not loaded. The input PI tag was not loaded Cause: The active ID point is not configured properly. Resolution: Check validity of point attributes. Make sure the location1 attribute is valid for the interface. All failover points must have the same settings for the pointsource and location1 attributes. Modify point attributes as necessary and restart the interface. • 16-May-06 17:38:06 ifc 1> One of the required Failover Synchronization points was not loaded. Error = 0: The Heartbeat point for this copy of the interface was not loaded. The input PI tag was not loaded Cause: The heartbeat point is not configured properly. Resolution: Check validity of point attributes. Make sure the location1 attribute is valid for the interface. All failover points must have the same settings for the pointsource and location1 attributes. Modify point attributes as necessary and restart the interface. • 17-May-06 09:06:03 ifc> The UniInt FailOver ID (/UFO_ID) must be a positive integer. Cause: The ufo_id parameter has not been assigned a positive integer value. Resolution: Change the parameter to a positive integer and restart the interface. • 17-May-06 09:06:03 ifc 1>The Failover ID parameter (/UFO_ID) was found but the ID for the redundant copy was not found Cause: The ufo_otherid parameter is not defined or has not been assigned a positive integer value. Resolution: Change the parameter to a positive integer and restart the interface. • 17-May-06 09:06:03 ifc 1> UniInt failover: Interface in an "Error" state. failover control points. Could not read Cause: The failover control points on the data source are returning an erroneous value. The error can be caused by creating a non-initialized control point on the data source. (Phase 1 failover only.) Resolution: Check validity of the value of the control points on the data source. • 16-May-06 17:29:06 ifc 1> Loading Failover Synchronization tag failed Error Number = 0: Description = [FailOver] or HeartBeat:n] was found in the exdesc for Tag Active_IN but the tag was not loaded by the interface. Failover will not be initialized unless another Active ID tag is successfully loaded by the interface. Cause: The active ID or heartbeat point is not configured properly. (Phase 1 failover only.) Resolution: Check validity of point attributes. For example, make sure location1 attribute is valid for the interface. All failover points must have the same pointsource and location1 attributes. Modify point attributes as necessary and restart the interface. 80 PI Universal Interface (UniInt) 4.6.4 User Guide UniInt interface operation • 17-May-06 09:05:39 ifc 1> Error reading Active ID point from data source Active_IN (Point 29600) status = -255 Cause: The active ID point value on the data source produced an error when read by the interface. The value read from the data source must be valid. As a result of receiving this error, the interface enters the Backup in Error state. Resolution: Check validity of the value of the active ID point on the data source. For example, if the value for the active ID point shows up as *** on the Cimplicity Point Control Panel, modify the value of the point to a valid value. • 17-May-06 09:06:03 ifc 1> Error reading the value for the other copy’s Heartbeat point from data source HB2_IN (Point 29604) status = -255 Cause: The heartbeat point value on the data source produced an error when read by the interface. The value read from the data source must be valid. Upon receiving this error, the interface enters the Backup in Error state. Resolution: Check validity of the value of the Heartbeat point on the data source. For example, if the value for the heartbeat point shows up as *** on the Cimplicity Point Control Panel, modify the value of the point to a valid value. • 27-Jun-08 17:27:17 PI Eight Track 1 1> Error 5: Unable to create file ‘\\georgiaking \GeorgiaKingStorage\UniIntFailover\\PIEightTrack_eight_1.dat’ Verify that interface has read/write/create access on file server machine. Initializing UniInt library failed Stopping Interface Cause: This message is logged when the interface is unable to create a new failover synchronization file at startup. The creation of the file only takes place the first time either copy of the interface is started and the file does not exist. The error number most commonly seen is error number 5. Error number 5 is an access denied error and is likely the result of a permissions problem. Resolution: Ensure that the account that the interface is running under has both read and write permissions for the folder. Change the folder permissions to allow the account in the Log on as property of the Windows service to create files in the folder. • Sun Jun 29 17:18:51 2008 PI Eight Track 1 2> WARNING> Failover Warning: Error = 64 Unable to open Failover Control File ‘\\georgiaking\GeorgiaKingStorage\Eight \PIEightTrack_eight_1.dat’ The interface will not be able to change state if PI is not available Cause: The interface is unable to open the failover synchronization file (phase 2 failover). The interface failover operates correctly as long as communication to PI Data Archive is not interrupted. If communication to PI Data Archive is interrupted while one or both interfaces cannot access the synchronization file, the interfaces remain in the state they were in at the time of the second failure, so the primary interface remains primary and the backup interface remains backup. Resolution: Change the folder or file permissions to allow the account in the Log on as property of the Windows service to read and write the failover synchronization file. PI Universal Interface (UniInt) 4.6.4 User Guide 81 UniInt interface operation Disconnected startup messages This section contains informational messages and their meanings, and error messages and their causes and resolutions. Informational messages: • 21-Nov-06 16:57:51 WriteSeconds.exe>PI-API> Attempting to initialize and validate cache file: c:/pipc/interfaces/test/test_freebird_abc_1_dgcache.dat. Meaning: API Cache Manager looks for the digital cache file in the specified path and attempts to initialize and validate the file. If the file is not found, it attempts to create it. • 21-Nov-06 16:54:41 WriteSeconds.exe>PI-API> Successfully validated cache file: c:/pipc/interfaces/test/test_freebird_abc_1_dgcache.dat Meaning: API Cache Manager was able to validate the existing digital cache file. A valid cache file means the digital cache file is designated for this particular instance of the interface, contains PI Data Archive version information, and that the files are capable of receiving new data. The file might not contain all the necessary point information. • 21-Nov-06 16:54:41 WriteSeconds.exe>PI-API> Successfully validated cache file: c:/pipc/interfaces/test/test_freebird_abc_1_ptcache.dat Meaning: API Cache Manager was able to validate the existing point cache file. A valid cache file means the point cache file is designated for this particular instance of the interface, contains PI Data Archive version information, and that the files are capable of receiving new data. The file might not contain all the necessary point information. • 21-Nov-06 16:57:51 WriteSeconds.exe>PI-API> Successfully created cache file: c:/pipc/interfaces/test/test_freebird_abc_1_dgcache.dat. Meaning: API Cache Manager was able to create the specified file. The interface successfully connected to PI Data Archive to retrieve the version information needed to create the cache file. The file has not been constructed with digital state information and continues to require a connection to PI Data Archive. • 21-Nov-06 16:57:51 WriteSeconds.exe>PI-API> Successfully created cache file: c:/pipc/interfaces/test/test_freebird_abc_1_ptcache.dat. Meaning: API Cache Manager was able to create the specified file. The interface successfully connected to PI Data Archive to retrieve the version information needed to create the cache file. The file has not been constructed with point information and continues to require a connection to PI Data Archive. • 21-Nov-06 16:54:41 WriteSeconds.exe>PI-API> Point information will be loaded from cache file: c:/pipc/interfaces/test/test_freebird_abc_1_ptcache.dat Meaning: API Cache Manager has determined the point and digital cache files have been completely constructed and can be used to load point information. No connection to PI Data Archive is necessary for the interface to start. • 21-Nov-06 17:00:04 WriteSeconds.exe>PI-API> Renamed cache file: 82 PI Universal Interface (UniInt) 4.6.4 User Guide UniInt interface operation c:/pipc/interfaces/test/test_freebird_abc_1_dgcache.dat to c:/pipc/interfaces/test/test_freebird_abc_1_dgcache_20061121220004.dat. Meaning: API Cache Manager has determined the current digital cache file is invalid and unusable. The file has been renamed as indicated in the message. Expect to see a message indicating a new digital cache file has been created. A connection to PI Data Archive must be available for the interface to start. • 21-Nov-06 17:00:04 WriteSeconds.exe>PI-API> Renamed cache file: c:/pipc/interfaces/test/test_freebird_abc_1_ptcache.dat to c:/pipc/interfaces/test/test_freebird_abc_1_ptcache_20061121220004.dat. Meaning: API Cache Manager has determined the current point cache file is invalid and unusable. The file has been renamed as indicated in the message. Expect to see a later message indicating that a new point cache file has been created. A connection to PI Data Archive is required for the interface to start. • 21-Nov-06 16:57:51 WriteSeconds.exe>PI-API> Cache valid for reading and writing, but not complete. Point information will be retrieved from the PI Server and saved in cache file: c:/pipc/interfaces/test/test_freebird_abc_1_ptcache.dat. Meaning: API Cache Manager was able to create and validate the point cache file, but the file has not been constructed with point record and attributes information. This message also indicates the digital cache must be constructed with digital state information. A connection to PI Data Archive is required for the interface to start so the file can be constructed. • 21-Nov-06 16:57:51 PI-WriteSeconds 1> Point cache being constructed to store point information. Cache file: c:/pipc/interfaces/test/test_freebird_abc_1_ptcache.dat. Cache synchronization enabled with period set to 250 ms. Meaning: UniInt Cache Manager has detected a point caching file that has not been constructed with point record and attributes information. This message also indicates the digital cache must be constructed with digital state information. A connection to PI Data Archive is required for the interface to start so the file can be constructed. The message also indicates that cache synchronization is enabled with a time period set to 250 milliseconds. • 21-Nov-06 16:57:51 PI-WriteSeconds 1> Begin synching cache file: c:/pipc/interfaces/test/ test_freebird_abc_1_ptcache.dat Meaning: UniInt Cache Manager has loaded point information from the cache, entered the control loop, connected to PI Data Archive , and begun cache synchronization. The digital cache has also begun synchronization. • 21-Nov-06 16:57:51 PI-WriteSeconds 1> Completed synching cache file: c:/pipc/interfaces/test/ test_freebird_abc_1_ptcache.dat Meaning: UniInt Cache Manager has completed point and digital cache synchronization. Updates will be sent to the interface. Configuration errors: • 22-Nov-06 16:21:19 PI-WriteSeconds 1> Error = -1: Point caching configuration error. PI Universal Interface (UniInt) 4.6.4 User Guide 83 UniInt interface operation The PI SDK is being used to retrieve point attribute information. Unable to utilize point caching while in this mode. Disable cachemode by removing "/cachemode" parameter from the startup command file and restart the interface. Stopping Interface Cause: UniInt Cache Manager has determine PI SDK is being used to retrieve point attribute information while attempting to start the interface in a disconnected startup mode. Caching will be disabled and the interface will be shutdown. Resolution: ◦ Option 1: Remove the cachemode startup command parameter and restart the interface. ◦ Option 2: Try using the /pisdk=0 startup command parameter to disable the interface. Restart the interface. Not all interfaces can disable PI SDK using this option. • 29-Nov-06 15:45:08 PI-WriteSeconds 1> Disconnected Startup is not available with PI API prior to Version: 1.6, Build 1.5 To utilize the disconnected startup configuration, upgrade to PI API Version: 1.6, Build 1.5 or later and restart the interface. Stopping Interface. Cause: UniInt Cache Manager has found a PI API version currently installed on the interface node that does not support disconnected startup. The interface has been configured with the cachemode startup parameter and will be stopped. Resolution: ◦ Option 1: Upgrade PI API on the interface node to version 1.6.1.x or later. Restart the interface. ◦ Option 2: Remove the cachemode startup command parameter. Restart the interface. • 29-Nov-06 15:56:19 PI-WriteSeconds 1> Error: 0, Setting cache function pointer failed. Unable to load picm_closecache from API dll Point caching unavailable for this interface. Correct the error or remove the /cachemode startup command parameter. Stopping Interface. Cause: UniInt Cache Manager has failed to load a required function from PI API. The interface has been configured with the cachemode startup parameter and will be stopped. Resolution: ◦ Option 1: Upgrade PI API on the interface node to version 1.6.1.x or later. Restart the interface. ◦ Option 2: Remove the cachemode startup command parameter. Restart the interface. Other errors: • 22-Nov-06 16:35:27 WriteSeconds>PI-API> Error initializing digital set cache file: /opt/home/ piadmin/pi/clients/interfaces/test/test_freebird_ab_1_dgcache.dat. Point information will be retrieved from the PI Server. Cause: PI API Cache Manager was unable to create the digital cache file necessary for disconnected startup. The message also indicates PI Data Archive will be used to retrieve point information. To start, the interface requires a connection to PI Data Archive. 84 PI Universal Interface (UniInt) 4.6.4 User Guide UniInt interface operation Resolution: Make sure the file path to the filename is identical to the path shown in the error message. UniInt device status messages The device status health point produces messages based on the interface device status. Messages that are interface-specific are documented in the interface user guide. The following table lists standard status strings. Message Description 0 | Good The interface is working properly, and reading/ writing data. 10 | Connected / No Data The interface is connected to the device, but not receiving data. 30-70 Interface-specific status messages. Refer to interface user guide for more information. 90 | Starting The interface is starting, but not connected to the device. 95 | Device(s) in error There is a communication error with the device. 99 | Intf Shutdown The interface is shutting down. PI Universal Interface (UniInt) 4.6.4 User Guide 85 UniInt interface operation 86 PI Universal Interface (UniInt) 4.6.4 User Guide Technical support and other resources For technical assistance, contact OSIsoft Technical Support at +1 510-297-5828 or through the OSIsoft Tech Support Contact Us page (https://techsupport.osisoft.com/Contact-Us/). The website offers additional contact options for customers outside of the United States. When you contact OSIsoft Technical Support, be prepared to provide this information: • Product name, version, and build numbers • Details about your computer platform (CPU type, operating system, and version number) • Time that the difficulty started • Log files at that time • Details of any environment changes prior to the start of the issue • Summary of the issue, including any relevant log files during the time the issue occurred To ask questions of others who use OSIsoft software, join the OSIsoft user community, PI Square (https://pisquare.osisoft.com). Members of the community can request advice and share ideas about the PI System. The PI Developers Club space within PI Square offers resources to help you with the programming and integration of OSIsoft products. PI Universal Interface (UniInt) 4.6.4 User Guide 87 Technical support and other resources 88 PI Universal Interface (UniInt) 4.6.4 User Guide