ABB IMS/AEH Advant Station (ABB Master, ABB MOD 300) Interface to the PI System Version 5.24.0.0 How to Contact Us Phone (510) 297-5800 (510) 297-5828 Fax (510) 357-8136 E-mail techsupport@osisoft.com World Wide Web http://www.osisoft.com Mail OSIsoft P.O. Box 727 San Leandro, CA 94577-0427 USA OSI Software, Ltd P O Box 8256 Symonds Street Auckland 1035 New Zealand OSI Software GmbH Hauptstrae 30 D-63674 Altenstadt 1 Deutschland OSI Software, Asia Pte Ltd 152 Beach Road #09-06 Gateway East Singapore, 189721 (main number) (technical support) Unpublished -- rights reserved under the copyright laws of the United States. RESTRICTED RIGHTS LEGEND Use, duplication, or disclosure by the Government is subject to restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in Technical Data and Computer Software clause at DFARS 252.227-7013 Trademark statement—PI is a registered trademark of OSI Software, Inc. Microsoft Windows, Microsoft Windows for Workgroups, and Microsoft NT are registered trademarks of Microsoft Corporation. Solaris is a registered trademark of Sun Microsystems. HP-UX is a registered trademark of Hewlett Packard Corp.. IBM AIX RS/6000 is a registered trademark of the IBM Corporation. DUX, DEC VAX and DEC Alpha are registered trademarks of the Digital Equipment Corporation. PI_abbims.doc 2000-2003 OSI Software, Inc. All rights reserved 777 Davis Street, Suite 250, San Leandro, CA 94577 ABB IMS/AEH Advant Station Interface to the PI System ii Table of Contents Introduction ................................................................................................................... 1 Reference Manuals ..................................................................................................... 2 Supported Features ..................................................................................................... 2 Diagram of Hardware Connection ............................................................................... 4 Principles of Operation ................................................................................................ 5 Overview ..................................................................................................................... 5 Input ........................................................................................................................ 5 Quality Check for Selected Attributes ...................................................................... 6 Output ...................................................................................................................... 7 Connection to the PI Server ..................................................................................... 8 Connection to the DCS ............................................................................................ 8 Timestamps ............................................................................................................. 9 Sign-up for Updates ................................................................................................. 9 Supported Object Types ............................................................................................ 10 Transfer Methods ...................................................................................................... 10 ABB Attribute Data Types .......................................................................................... 11 Events – Recommended for ABB Master Only .......................................................... 12 Installation Checklist .................................................................................................. 13 Interface Installation on NT ........................................................................................ 15 Naming Conventions and Requirements ................................................................... 15 Microsoft DLLs .......................................................................................................... 16 Interface Directories .................................................................................................. 16 The PIHOME Directory Tree .................................................................................. 16 Interface Installation Directory ............................................................................... 16 Interface Installation Procedure ................................................................................. 16 Installing the Interface as an NT Service ................................................................... 17 Installing the Interface Service with PI-Interface Configuration Utility..................... 17 Installing the Interface Service Manually ................................................................ 19 Interface Files for NT ................................................................................................. 20 ABB IMS/AEH Advant Station Interface to the PI System iii iii Table of Contents Interface Installation on HP-UX .................................................................................. 21 Definition of Environment Variables ........................................................................... 21 Installation of the PI-API on HP-UX ........................................................................... 22 Interface Upgrade...................................................................................................... 24 Installing/Upgrading from CD-ROM or a Downloaded File ......................................... 24 Interface Files for HP-UX........................................................................................... 26 Additional Files after Link .......................................................................................... 26 Linking the PI-ABB Advant Interface ......................................................................... 26 Linking the Interface Control Program ....................................................................... 26 HP-UX Ownership of Interface Files .......................................................................... 26 Digital States ............................................................................................................... 29 PointSource ................................................................................................................. 31 PI Point Configuration ................................................................................................ 33 Point Attributes .......................................................................................................... 33 Tag ........................................................................................................................ 33 PointSource ........................................................................................................... 33 PointType .............................................................................................................. 33 SourceTag ............................................................................................................. 33 Location1 ............................................................................................................... 34 Location2 ............................................................................................................... 34 Location3 ............................................................................................................... 34 Location4 ............................................................................................................... 34 Location5 ............................................................................................................... 35 InstrumentTag ....................................................................................................... 35 ExDesc .................................................................................................................. 35 Scan ...................................................................................................................... 36 Shutdown ............................................................................................................... 36 Hints for Point Configuration ...................................................................................... 37 HP-UX ................................................................................................................... 37 NT.......................................................................................................................... 38 Increasing Shared Memory Size on HP-UX ............................................................... 38 Increasing Shared Memory Size on Windows NT ...................................................... 39 How to Retrieve a List of all Available Objects ........................................................... 39 ABB Master ........................................................................................................... 39 ABB MOD 300 ....................................................................................................... 40 iv iv Output Points............................................................................................................. 40 Trigger Method 1 (Recommended) ........................................................................ 41 Trigger Method 2 ................................................................................................... 41 Performance Point Configuration .............................................................................. 43 Configuring Performance Points with PI-ICU (NT-Intel) ............................................. 43 Configuring Performance Points Manually ................................................................. 44 I/O Rate Tag Configuration......................................................................................... 45 Monitoring I/O Rates on the Interface Node .............................................................. 45 Configuring I/O Rate Tags with PI-ICU (NT-Intel) ...................................................... 45 Configuring I/O Rate Tags Manually .......................................................................... 46 Configuring the PI Point on the PI Server .............................................................. 46 Configuration on the Interface Node ...................................................................... 47 Startup Command File ................................................................................................ 49 Command-Line Parameters....................................................................................... 50 Sample Interface Startup Files for HP-UX ................................................................. 57 On Demand ........................................................................................................... 57 On Event................................................................................................................ 58 Cyclic ..................................................................................................................... 59 Sample abbimspi.bat Files for NT .............................................................................. 60 On Demand ........................................................................................................... 60 On Event................................................................................................................ 60 Cyclic ..................................................................................................................... 61 Interface Node Clock .................................................................................................. 63 NT ............................................................................................................................. 63 HP-UX ....................................................................................................................... 63 Security........................................................................................................................ 65 Starting / Stopping the PI-ABB Advant Interface on NT ........................................... 67 Starting Interface as a Service .................................................................................. 67 Stopping Interface Running as a Service ................................................................... 67 Starting / Stopping the PI-ABB Advant Interface on UNIX ....................................... 69 Starting Background Processes ................................................................................ 69 Terminating Background Processes .......................................................................... 69 Anomalous Background Job Termination .................................................................. 70 Buffering ...................................................................................................................... 71 ABB IMS/AEH Advant Station Interface to the PI System v v Table of Contents Configuring Buffering with PI-ICU (NT-Intel) .............................................................. 71 Configuring Buffering Manually.................................................................................. 74 Example piclient.ini File ............................................................................................. 75 NT.......................................................................................................................... 75 HP-UX ................................................................................................................... 76 Note for DSTMISMATCH on NT ............................................................................ 76 Appendix A: Error and Informational Messages ....................................................... 77 Message Logs ........................................................................................................... 77 Log Files .................................................................................................................... 77 Interface Output File on HP-UX ................................................................................. 77 pimesslogfile on HP-UX ............................................................................................. 78 Messages on NT ....................................................................................................... 78 Translation of Error Codes ........................................................................................ 78 Specific AdvaInform UserAPI Errors and other problems .......................................... 79 Status: 3 (bciEMPTY – No more waiting events/data)............................................ 79 PI-ABB Advant Interface Allegedly Supplies Wrong Values ................................... 80 Summary of Statuses and Error Codes ..................................................................... 80 AdvaInform UserAPI Statuses ............................................................................... 80 Object Access Statuses ......................................................................................... 82 System Errors and PI Errors ...................................................................................... 83 Error Descriptions on NT and Unix ........................................................................ 83 Appendix B: Hints for PI System Manager ................................................................ 85 Automatic Interface Start on HP-UX System Startup via ABB’s Process Supervision 85 Graceful Interface Stop on System Shutdown ........................................................... 86 Starting the Interface when the PI-API is Started (HP-UX) ........................................ 86 sitestart .................................................................................................................. 87 Stopping the Interface When the PI-API is Stopped (HP-UX) .................................... 87 Automatic Interface Start on NT – Practical Experiences .......................................... 88 Increasing Number of Interfaces per AEH on Windows NT ....................................... 89 Appendix C: Interface Control Program – HP-UX Only ............................................ 91 Appendix D: Achieving Better Interface Performance ............................................. 93 Use More Interface Copies ........................................................................................ 93 Use Scan Class Offsets............................................................................................. 93 Use a Separate Interface Copy for a Fast Scan Class .............................................. 93 Consider the Transfer Method “On Event” (ABB Master only) ................................... 93 vi vi Appendix E: Test Environment .................................................................................. 95 IMS 2.0 ...................................................................................................................... 95 AEH 2.1 ..................................................................................................................... 95 AEH 2.2 ..................................................................................................................... 95 Appendix F : Attribute Lists via getObj ..................................................................... 97 Appendix G: Mounting an NT CD ROM on an HP-UX Advant Station ................... 117 Revision History........................................................................................................ 121 ABB IMS/AEH Advant Station Interface to the PI System vii vii Introduction The ABB IMS/AEH Advant Station to PI Interface (referred to as PI-ABB Advant Interface in this document) provides the read/write transfer of data between an ABB Master or ABB MOD 300 process control system and the Plant Information (PI) System using the AdvaInform UserAPI. The PI-ABB Advant Interface runs on the Advant Station (IMS or AEH). The PI-ABB Advant Interface cannot run on an Engineering Station (ES). The PI-ABB Advant Interface cannot run on an Operator Station (OS). The Advant Station serves as a PI Interface Node. It is not recommended to run the PI Server on the same machine. The following environments are supported: IMS 2.0 under HP-UX 10.20 AEH 2.0 under HP-UX 10.20 AEH 2.1 under HP-UX 10.20 AEH 2.2 under HP-UX 10.20 AEH 3.0 under Windows NT 4.0 AEH 3.1 under Windows NT 4.0 AEH 3.2 under Windows 2000 The AdvaInform UserAPI must be installed on the IMS/AEH. (Please note that "2.x" for AEH on HP-UX and "3.x" for AEH on NT is an ABB naming convention used to differentiate between OS platforms by the version number. It's actually the same software generation.) The PI-ABB Advant Interface was originally developed to run on an Information Management Station (IMS) on HP-UX. Starting with version 4.0 of the interface it can also run on an INTEL-NT PC running the ABB Advant Enterprise Historian (AEH). Version 4.x and greater of the interface does not run on HP-UX 9.05 and therefore no longer supports IMS 1.x. The PI-ABB Advant Interface was designed to use the capabilities of the AdvaInform UserAPI contained in IMS Software version 1.2. The interface is also compatible with IMS Software version 1.3. It uses the bciDoRequest call. The AdvaInform UserAPI is now included in the ABB Advant Enterprise Historian Select Package. Previously the AdvaInform UserAPI was included with the ABB Advant Enterprise Historian. The Select package DOES NOT contain the ABB Enterprise Historian but is sufficient to run the interface. Note on HP-UX: There are limits to the number of points and events per second that can be retrieved from a single Advant station. An Advant station with an RTA card that contains 8 Mbytes of RAM will allow between 4000 – 6000 tags to be retrieved from the control system. The expected throughput for a machine with 64 Mbytes of RAM is approximately 300 calls per second. ABB IMS/AEH Advant Station Interface to the PI System 1 1 Introduction The AdvaInform UserAPI provides functions for data transfer between an ABB Advant Station based on HP-UX or INTEL NT and a connected ABB Master (ASEA Masterpiece) or a MOD 300 DCS. Note: The PI-ABB Advant Interface accesses the ABB objects directly in the DCS through the AdvaInform UserAPI. No local copies of the Process Objects are required on the Advant Station. The interface does not use the Oracle tables on the Advant Station. Reference Manuals OSIsoft UniInt End User Document PI Data Archive Manual PI-API Installation Instructions ABB ABB Master AdvaInform Basic Functions User’s Guide Part 1 and 2 ABB Master AdvaInform Object Handling User’s Guide ABB Master AdvaInform Object Types Reference Manual Advant OCS with MOD 300 Software AdvaInform Object Types Reference Manual ABB Master Advant Station 500 Series Information Management Station User’s Guide ABB Master Advant Station 500 Information Management Station SW*1.1/2 Release Description AdvaInform Basic Functions Release Notes Advant Enterprise Historian for Windows NT Advant MES Advant Enterprise Historian for Windows NT Administrator's Guide Supported Features 2 2 Feature Support Part Number PI-IN-ABB-ADV-HPUX PI-IN-ABB-ADV-NTI Platforms HP-UX 10.20 / Intel NT 4.0 PI Point Types PI 2: R / I / D PI 3: Float16 / Float32 / Float64 / Int16 / Int32 / Digital / String Sub-Second Timestamps No Sub-Second Scan Classes Yes Feature Support * Automatically Incorporates PI Point Attribute Changes Yes Exception Reporting Yes Outputs from PI Yes Inputs to PI: Scan-Based / Unsolicited / Event Tags ‘On Demand’ (Scan-Based), ‘Cyclic’ (Cyclically initiated by DCS) ‘On Event’ (Events sent by the DCS) Maximum Point Count See ABB limit in Introduction * Uses PI-SDK Yes PINet to PI 3 String Support Not applicable * Source of Timestamps Local time on the Advant Station or PI Server time History Recovery No * Failover No * UniInt-Based Yes * Vendor Software Required on PI Interface Node Yes * Vendor Hardware Required Yes * Device Point Types See chapter ‘ABB Attribute Data Types’ 28 See paragraphs below for further explanation. Automatically Incorporates PI Point Attribute Changes Note that ‘Cyclic’ and ‘On Event’ interfaces behave specially. During the ‘bciGetData’ phase, controlled by the Startup Command File parameter /du (default: half an hour) they cannot process PI Point Attribute Changes. Uses PI-SDK Using the PI-SDK applies to the NT version of this interface only. The use of the PISDK must be enabled via the startup command line switch /pisdk=1. Use of the PISDK is particularly important if /timsrc=P is in use. Source of Timestamps The PI-ABB Advant Interface can use the local HP-UX or NT system time of the Advant Station or the PI Server time for time stamping the values of the PI tags. The behavior is controlled by the setting of /timsrc. UniInt-Based UniInt stands for Universal Interface. UniInt is not a separate product or file; it is an OSIsoft-developed template used by our developers, and is integrated into many interfaces, such as the PI-ABB Advant Interface. The purpose of UniInt is to keep a consistent feature set and behavior across as many of our interfaces as possible. It ABB IMS/AEH Advant Station Interface to the PI System 3 3 Introduction also allows for the very rapid development of new interfaces. In any UniInt-based interface, the interface uses some of the UniInt-supplied configuration parameters and some interface-specific parameters. UniInt is constantly being upgraded with new options and features. The UniInt End User Document is a supplement to this manual. Vendor Software Required AdvaInform UserAPI (supplied by ABB) Vendor Hardware Required ABB Advant Station (Information Management Station (IMS) or Advant Enterprise Historian (AEH)) Device Point Types See chapter ‘ABB Attribute Data Types’. Diagram of Hardware Connection 4 4 Principles of Operation Overview At startup, the PI-ABB Advant Interface checks all command line parameters. If some of them are missing or out of range and cannot be filled with a default value, the interface generates an error message and stops. Note, that some information messages are generated and stored in the log files before the /in=… parameter could be evaluated. The /id=… switch, however, is read at the very beginning of the interface lifetime. If you use it, the interface identification (should be equal to the interface number) will appear even in very early messages, allowing you to tell output of different interface copies from each other. If all parameters are correct, the interface runs the initialization part. According to the PI Point configuration details, the ABB process objects are divided into groups consisting of tags with the same property (data transfer direction, transfer method, scan class, object type, attribute, controller node). Event counters are initialized and a sign-up-for-updates operation is performed to recognize changes in the point database. Data collection starts after the interface has finished searching the point database for tags. In the log files, this will be marked by a message like this: Wed Jul 1 13:51:29 1998 ABBIMSPI 1> 1562 points found for point source A Data Acquisition Data are transferred between ABB objects and the corresponding PI tags by performing attribute operations. Input Depending on the transfer method the corresponding AdvaInform User API function is called to perform data transfer on demand, on event or cyclic. For all transfer methods, the values are sent to PI using the PI exception reporting mechanism. On Demand /tm=D. According to Location 4, the attributes (Extended Descriptor) of the ABB objects (Instrument tag name) are read periodically. Use scan classes 3. Tags must have a value 3 in Location 4. The interface must be started with at least 3 /f=… startup parameters. ABB IMS/AEH Advant Station Interface to the PI System 5 5 Principles of Operation On Event /tm=E. ABB Master only. All tags receive an initial value on interface startup, representing the current value of the object attribute in the DCS, most likely NOT representing an event in the DCS. During normal operation, attribute values from object instances are read whenever a specific event is detected. An event function is then called to transfer data to PI immediately. For Basic Objects, a changed value or status in the DCS may be considered to be an event (depending on the DCS configuration), causing data transfer to PI to be invoked. For the supported Mod 300 Process Objects, an event is generated whenever the attribute itself has changed. Make sure that for the object of interest, events have been enabled on the DCS. One /f=… startup parameter is required. However, it serves as a placeholder and is not evaluated. Location 4 must be 1. Note: ‘On Event’ data transfer is not recommended with MOD 300. See chapter ‘Note about supported object types, attributes, transfer methods, input and output’ for more details. Cyclic /tm=C. A permanent subscription for a cyclic read is created. A cyclic function is called to transfer data to PI whenever a cycle ends. The scan cycle is defined via the /ct=… switch. Scan frequency specifications via /f=… have no influence. However, at least 2 “placeholder” /f parameters are required. Tags must have a 2 in Location 4. In general, the PI-ABB Advant Interface supports all attributes that represent a single string or a single numerical value (maximum size: 32 bit). See Chapter “Events – Recommended for ABB Master Only” for restrictions regarding on-event transfer. The following applies to any attribute that is of data type BITSET or SHORT_BITSET: A single bit can be transferred to PI by setting Location 3 of the tag to the required bit number. For attributes of type BITSET, values between 1 and 32 are expected in Location 3. For SHORT_BITSET attributes, the range is 1 … 16. The entire attribute information will be stored if location 3 contains zero. Information about the data type of an attribute can be obtained from AdvaInform Object Types Reference Manual or via getObj. For detailed information about meaning and spelling of the attributes, see the description sections for the ABB objects in the AdvaInform Object Types Reference Manual. You can also list object attributes via ABB’s getObj example program. Refer to Appendix F : Attribute Lists via getObj. Tags will receive DCS Failed in PI if the object status returned by the AdvaInform UserAPI functions is different from bciOBJ_SUCCESS. In addition, if for an On-Demand interface, the bciDoRequest call fails, i.e. the returned AdvaInform UserAPI status is different from bciSUCCESS, all tags in the affected scan class will also receive this Digital State. In such a case, the overall UserAPI call already failed. Subsequent object-by-object checking does not make sense and is skipped. Quality Check for Selected Attributes For objects of type AI and AO the attribute VALUE is checked against the attribute STATUS (which is always read simultaneously) before it is stored in PI: STATUS Bit 1 (active) STATUS Bit 2 (error) must be equal to 1 must be equal to 0 In all other cases the tag receives Set to Bad. 6 6 For Objects of type DI and DO there is a quality check if you read the attribute STATUS. Any bit of this 32-bit entity can be stored as 0 or 1 in the PI tag. The number of the required bit (range 1 … 32) must be stored in location 3 of the tag. If bit 9 (the value bit) is selected, it will be checked against bits 1 and 2, which have the same meaning as for AI and AO objects. Bit 9 will be stored in the PI tag, if the following conditions are fulfilled: STATUS Bit 1 (active) STATUS Bit 2 (error) must be equal to 1 must be equal to 0 In all other cases the tag receives Set to Bad. The numerical value of the attribute MEASURE is stored in PI, if the quality-attribute DQ_MEAS for that object is equal to 1. Otherwise, the tag receives Set to Bad. A similar check is performed for the attribute RESULT. The quality attribute DATAQUAL is checked to make sure that RESULT is valid. If DATAQUAL contains a value other than 1, the tag will be Set to Bad. Output The AdvaInform UserAPI provides functions for executing operations in object instances. This is the only way to update values. The updating process is invoked by the means of the PI event handling functions. At interface startup a list of output tags will be established. These tags must either contain a valid PI tag name in the SourceTag field or the field must be left blank in which case writes to the DCS are performed if the output tag itself changes value in PI. PI will inform the interface whenever a source tag has received a new value. The output tag will then be updated with the value of the source tag. Finally, the value gets sent to the DCS. Please consult the “Introduction” chapter of this manual for detailed information about conventions regarding operations for the various ABB object types and resulting restrictions. Furthermore, information about operations can be found in the Object Types Reference Manual for ABB Master or MOD 300. Using getObj is also possible (see Appendix F : Attribute Lists via getObj). Output tags must have a value > 2 in location 4, i.e. they must belong to an ‘On Demand’ interface. Outputs to the DCS can be totally disabled by using the /nooutputs startup parameter. The PI-ABB Advant Interface currently supports output to the DCS for selected object types and attributes. For writing towards the DCS, so-called operations are being used. Operations have names. For AI, AO, DI, DO, DAT and TEXT, the operation name is “ORDER”. Note that outputs to DAT objects could not yet be tested. Although PIDCON, PIDCONA, MULTIDAT, VALVECON, MOTCON, MANSTN and RATIOSTN objects have an operation “ORDER” as well, output to these object types is not yet supported. For MOD 300 process objects of type CCF and TLL, the operation name is just the attribute name, with a preceding “PUT_”. For example, the name of the operation that is used to write a value back to the attribute “MEASURE” is “PUT_MEASURE”. If the interface finds the “PUT_” construction in the list of available operations, even for object types other than CCF and TLL, this attribute can be updated in the DCS. Otherwise, output is not supported. Note that all event and operation name constructions discussed above are automatically performed by the interface internally. There is no impact on what the user has to specify in the Extended Descriptor (attribute name) and the Instrument tag name (object name). ABB IMS/AEH Advant Station Interface to the PI System 7 7 Principles of Operation Example: You want to write to the attribute SETPOINT of FIC-100, which is an object of type CCF_PID_LOOP. Enter ATTRIB= SETPOINT into the tag’s Extended Descriptor. To make sure that writing will be possible, check the object via getObj. $ getObj FIC-100 =============================================================== Object FIC-100 is of type CCF_PID_LOOP which has: --------------------------------------------------------------… 247 SETPOINT FLOAT 4 byte … -Operations---------------------------------------------------… 249 PUT_SETPOINT OPERATION 4 byte … The interface finds SETPOINT in the Extended Descriptor. Then it retrieves a list of all operations supported for FIC-100. One of the operations is PUT_SETPOINT. This is what the interface expects, thus writing to this attribute will be possible. Connection to the PI Server Connection to the PI server is necessary for the PI-ABB Advant Interface to get started. If it can’t connect, it will try again in an endless loop. If you are not aware of your PI Home Node being down, test the connection between the API Node (the IMS) and the PI Home Node. For instance, execute OSI’s example program $PIHOME/bin/apisnap. If connection to the PI Home Node is established, it will ask you for a tag name and display the snapshot. In case of failure, please check the network connection. It is also a good idea to verify that access to the PI Home node is permitted. In PI 2 systems, the name of the IMS must appear with Read/Write access in PISysDat:PIServer.dat. In PI 3 systems, verify, that the PI Proxy Table and the PI Firewall table are set up to allow point and data access by the IMS. If the PI-API detects connection problems to the PI Home Node, this will be reported in $PIHOME/dat/pimesslogfile. However, if buffering is switched on, you will not lose data. You can find detailed information about buffering in the PI-API Manual. Missing connection to the PI server will not disturb the interface processes on the IMS. Connection to the DCS In case of connection problems with the DCS, the PI-ABB Advant Interface will receive error statuses from the AdvaInform UserAPI functions. Any object related return status that is different from bciOBJ_SUCCESS would result in DCS Failed for the corresponding tag in PI. If a controller node is down, or if the cable between the IMS and the DCS gets unplugged, bciOBJ_NODE_DOWN will be returned. However, when the node is back up or the cable is plugged in again, the interface is not able to reconnect. This is a known problem in the AdvaInform UserAPI. Starting with version 3.20, the PI-ABB Advant Interface has a workaround built in. Whenever bciOBJ_NODE_DOWN is received, the interface deletes ALL requests (or cancels all cyclic/event subscriptions, respectively) towards the controllers. It will rebuild ALL lists and try to reconnect after a configurable amount of time (see parameter /try=… in the “Startup Command File” chapter of this manual). The interface is not able to detect the node(s) being down. Thus, even if only part of the DCS environment is currently unreachable, all tags are affected. They will not 8 8 receive new data until all objects that were addressed on interface startup are reachable again. Important Note: If you decide to restart the interface in a situation where only one or a few, but not all DCS nodes are down, it will most likely start to work immediately. However, you will notice that fewer tags have been found than in previous instances. This happens because the objects that were in the state bciOBJ_NODE_DOWN before will now cause the corresponding tags to be rejected. The interface will start with a subset of tags, involving only the objects being currently reachable. Though restarting the interface is a possible workaround in cases where a partial DCS node shutdown is planned and known of, it is important to restart the interface again after the node is back up. During the downtime of one node, you can ensure data collection for the other nodes via a temporary interface restart. But in order to come back to the full set of tags, another restart is necessary after the problem has disappeared. Note: You can disable the workaround and consider the above problem solved if the appropriate patch supplied by ABB was applied to your IMS/AEH. The patch is available for IMS 2.0. See the description of the /ndw startup parameter in the “Startup Command File” chapter for more information. Starting with AEH 2.1 on HP-UX or 3.1 on NT, the fix is implemented in the product and no longer appears as a patch. Timestamps For time stamping tag values, the PI-ABB Advant Interface can use local time of the Advant Station or PI Server time. The behavior is controlled by the setting of /timsrc. Local time of the Advant Station will be used if /timsrc=A is specified on the command line, or if the /timsrc switch is missing. PI Server time will be used in case of /timsrc=P. On NT, it is possible to run the PI-ABB Advant Interface on an AEH that does not observe DST, i.e. with the ‘Automatically adjust clock for daylight saving changes’ box unchecked under the ‘Time Zone’ tab of the Date/Time Properties applet. Use /timsrc=P in this case. The interface will continue to assign correct PI Server time stamps during DST transitions of the PI Server despite of the AEH not performing the one hour forward or backward jump in local time. It is possible to adjust AEH time to correct local time (which results in incorrect UTC during ‘Summer time’). The interface will still send correct PI Server time stamps. However, the interface and bufserv must be stopped prior to changing local time on the NT AEH. They must be restarted afterwards. Important Notes - On NT, in order to have /timsrc=P work correctly under all circumstances, it is mandatory to also specify /pisdk=1 in the interface startup file, i.e. enable use of the PI-SDK. - Running the PI-ABB Advant Interface on an IMS or AEH with manually adjusted local time (i.e. incorrect UTC) is not supported on HP-UX. - Using PI Server time (/timsrc=P) on HP-UX is not supported if the interface runs on an AEH that resides in a location being off from GMT by a non-integral number of hours such as GMT+9:30 (Australian Central Standard Time, Australian Central Daylight Time (South Australia), CST-9:30CDT). Sign-up for Updates The interface periodically checks for alterations of the point database and performs the necessary operations such as adding, editing and deleting of tags. In case of editing, the tag will receive a status of Configure. Note that in case of on-event or cyclic transfer ABB IMS/AEH Advant Station Interface to the PI System 9 9 Principles of Operation these interface activities are always suspended for duration according to the value specified via /du=… (see “Startup Command File”). Refer to the description of this parameter for further information. Supported Object Types Basic Objects Object Read Write Analog Input – AI Single numerical or string attribute VALUE Analog Output – AO Single numerical or string attribute VALUE Digital Input – DI Single numerical or string attribute Bit 9 of STATUS Digital Output – DO Single numerical or string attribute Bit 9 of STATUS Dat Objects – DAT Single numerical or string attribute Not tested Text Objects – TEXT Single numerical or string attribute INT_LONG, TEXT_REAL, TEXT not tested MOD 300 Process Objects Object Read Write CCF Objects Single numerical or string attribute Numerical attribute String attribute not tested TLL Objects Single numerical or string attribute Numerical attribute String attribute not tested TCL Objects Single numerical or string attribute Not tested Other Object Types (Selection) Object Read PIDCON Single numerical or string attribute Not supported PIDCONA Single numerical or string attribute Not supported VALVECON Single numerical or string attribute Not supported MOTCON Single numerical or string attribute Not supported MANSTN Single numerical or string attribute Not supported RATIOSTN Single numerical or string attribute Not supported MULTIDAT Single numerical or string attribute Not tested Transfer Methods There are three methods of read transfer: On Demand On Event (ABB Master only) Cyclic 10 10 Write Output to the DCS is possible based on PI exceptions in “On Demand” interfaces. Note about supported object types, attributes, transfer methods, input and output: Generally, any attribute of any object type that represents a string or a single numerical value (float or integer) up to a length of 32 bits can be read by the interface. This includes even object types not listed above. ABB Attribute Data Types Supported The following data types are supported: ABB Attribute Data Type C Data Type Displayed by getObj bciFLOAT float FLOAT bciCHAR char CHAR bciSMALL char SMALL bciUSMALL unsigned char USMALL bciBOOLEAN char BOOLEAN bciSHORT short int SHORT bciLONG long int LONG bciBITSET long int BITSET bciENUM long int ENUM bciUSHORT unsigned short int USHORT bciSHORT_BITSET short int SH_BITSET bciSHORT_ENUM int SH_ENUM bciULONG unsigned long int ULONG bciSTRING char* STRING Not Supported The following data types are NOT supported: ABB Attribute Data Type C Data Type Displayed by getObj bciDOUBLE double DOUBLE bciSTRUCT struct STRUCT bciUNION union UNION bciARRAY Array [] ARRAY bciOPEN_ARRAY Array [] OPENARRAY bciCOMPOSITION struct COMPOSITE ABB IMS/AEH Advant Station Interface to the PI System 11 11 Principles of Operation You can use ABB’s example program getObj to check if the attribute you want to read is supported. For more information about getObj, consult chapter “Hints for Point Configuration” later in this manual. There is no restriction other than the data type for an attribute to be supported. Events – Recommended for ABB Master Only There is an additional restriction if you want to read attributes “On Event” (ABB Master only). Events for ABB objects have names. For the Basic object types AI, AO, DI, DO and the other object types on ABB Master that were tested (PIDCON, PIDCONA, VALVECON, MOTCON, MANSTN, RATIOSTN), the name is always “EVENT”. For MOD 300 process objects of type CCF and TLL, the event name is just the attribute name, with a preceding “CHG_”. For example, the event name for the attribute “MEASURE” is “CHG_MEASURE”. If the interface finds either “EVENT” or the “CHG_…” construction in the list of available events for the desired object type/attribute combination, the attribute can be read on event. If the event name follows other rules, then the attribute is currently unsupported for the event transfer method (you can read it “On Demand”, however). Note that DAT and TEXT objects are unable to generate events although the overview retrieved via getObj may state otherwise. Important Note for MOD 300: Because the MOD 300 system is not an event-based system, events are simulated from the Advant nodes. Essentially, data to be retrieved on events is subscribed to by the core system. Subscriptions are set-up on a pre-determined subscription rate, which can result in missed events. In other words: Although the PI-ABB Advant Interface was written in a way that the use of the ‘On Event’ method is possible for both ABB Master and ABB Mod 300, this method is NOT recommended if your DCS is MOD 300. It works fine with ABB Master. The fact that the ‘On Event’ method is recommended for Master DCS only is documented in chapter 7 of the AdvaInform UserAPI User’s Guide, “FAQ and recommendations”. 12 12 Installation Checklist For those users who are familiar with running PI data collection interface programs, this checklist helps you get the PI-ABB Advant Interface running. If you are not familiar with PI interfaces, you should return to this section after reading the rest of the manual in detail. 1. Verify that PI-API has been installed. On NT, the PI-SDK is required. If on HP-UX: - Need ‘root’ password if PI-API has yet to be installed. - Choose the cfront compatible PI-API version 1.3.4 (higher HP-UX PI-API versions not supported at this time). - Recommendation is to choose ‘ocsmgr’ as the PI-API user. 2. Install the PI-ABB Advant Interface. 3. If on HP-UX: - Link the Interface Control Program 4. Test the connection between the interface node and the foreign device using ABB’s example program getObj. 5. Define digital states. 6. Choose a point source. If PI 2 home node, create the point source. 7. Configure PI points. Location1 is the interface instance. Location3 is the bit number, if applicable. Location4 is the scan class (be aware of the 2 reserved scan classes). Location5 is the direction of data transfer. ExDesc is the attribute name. InstrumentTag is the object name. 8. Configure performance points. 9. Configure I/O Rate tag. 10. Edit startup command file, use scan offsets to lower CPU load for ‘On Demand’ interfaces. 11. Check the interface node clock. See the administrator if not correct. (Date and Time can be changed by ocsmgr via the IMS menu on HP-UX) 12. Set up security. 13. Start the interface without buffering. 14. Verify data. 15. Stop interface, start buffering, start interface. 16. If on HP-UX: - edit $PIHOME/bin/sitestart - edit $PIHOME/bin/sitestop - edit $PIHOME/bin/apiprocs define PIHOME, SHLIB_PATH and ABBIMSPI - incorporate the PI-API Startup in ABB’s Process Supervision - edit StartPIAPIOnBoot and put in hard coded definitions of PIHOME, SHLIB_PATH and ABBIMSPI 17. Verify that the PI-API and the interface stop properly when the Advant Station is shut down. 18. Verify that the interface starts up when the Advant Station is booted. ABB IMS/AEH Advant Station Interface to the PI System 13 13 Interface Installation on NT OSIsoft recommends that interfaces be installed on PI Interface Nodes instead of directly on the PI Server node. A PI Interface Node is any node other than the PI Server node where the PI Application Programming Interface (PI-API) has been installed (see the PI-API Installation Instructions manual). With this approach, the PI Server need not compete with interfaces for the machine’s resources. The primary function of the PI Server is to archive data and to service clients that request data. After the interface has been installed and tested, Bufserv should be enabled on the PI Interface Node (once again, see the PI-API Installation Instructions manual). Bufserv is distributed with the PI-API. It is a utility program that provides the capability to store and forward events to a PI Server, allowing continuous data collection when communication to the PI Server is lost. Communication will be lost when there are network problems or when the PI Server is shut down for maintenance, upgrades, backups, or unexpected failures. In most cases, interfaces on PI Interface Nodes should be installed as automatic services . Services keep running after the user logs off. Automatic services automatically restart when the computer is restarted, which is useful in the event of a power failure. The guidelines are different if an interface is installed on the PI Server node . In this case, the typical procedure is to install the PI Server as an automatic service and interfaces as manual services that are launched by site-specific command files when the PI Server is started. Interfaces that are started as manual services are also stopped in conjunction with the PI Server by site-specific command files. This typical scenario assumes that Bufserv is not enabled on the PI Server node. Bufserv can be enabled on the PI Server node so that interfaces on the PI Server node do not need to be started and stopped in conjunction with PI, but it is not standard practice to enable buffering on the PI Server node. See the UniInt End User Document for special procedural information. Naming Conventions and Requirements In the installation procedure below, it is assumed that the name of the interface executable is abbimspi.exe and that the startup command file is called abbimspi.bat. It is customary for the user to rename the executable and the startup command file when multiple copies of the interface are run. For example, one would typically use abbimspi1.exe and abbimspi1.bat for interface number 1, abbimspi2.exe and abbimspi2.bat for interface number 2, and so on. When an interface is run as a service, the executable and the command file must have the same root name because the service looks for its command-line arguments in a file that has the same root name. ABB IMS/AEH Advant Station Interface to the PI System 15 15 Interface Installation on NT Microsoft DLLs The following Microsoft DLLs are distributed on the installation CD-ROM. Copy these files to the winnt\system32 directory only if the files in the winnt\system32 directory are older than the files on the CD-ROM. MSVCIRT.DLL MSVCRT.DLL MSVCRT40.DLL MSVCP50.DLL MSVCP60.DLL The following additional Microsoft DLLs are also distributed on the CD-ROM. These DLLs are only used by a debug version of the interface. Copy these files to the Winnt\system32 directory only if the files in the winnt\system32 directory are older than the files on the CD-ROM. MSVCIRTD.DLL MSVCRTD.DLL MSVCP50D.DLL MSVCP60D.DLL Interface Directories The PIHOME Directory Tree The PIHOME directory tree is defined by the PIHOME entry in the pipc.ini configuration file. This pipc.ini file is an ASCII text file, which is located in the WinNT directory. A typical pipc.ini file contains the following lines: [PIPC] PIHOME=c:\pipc The above lines define the \pipc directory as the root of the PIHOME directory tree on the C: drive. OSIsoft recommends using \pipc as the root directory name. The PIHOME directory does not need to be on the C: drive. Interface Installation Directory Place all copies of the interface into a single directory. The suggested directory is: PIHOME\interfaces\abbimspi\ Replace PIHOME with the corresponding entry in the pipc.ini file. Interface Installation Procedure The PI-ABB Advant interface setup program uses the services of the Microsoft Windows Installer. Windows Installer is a standard part of Windows 2000. When running on 16 16 Windows NT 4.0 systems, the PI- ABB Advant setup program will install the Windows Installer itself if necessary. To install, run the PI_ABBIMS_x.x.x.x.exe installation kit. In the installation procedure below, assume that the interface is being installed and that all copies of the interface will be installed in the same directory. 1. Copy the interface files from the installation media to PIHOME\interfaces\abbimspi\. Create the directory if necessary. 2. If necessary, rename the command file so that it has the same root name of the executable. 3. Alter the command-line arguments in the .bat file as discussed in this manual. 4. Try to start the interface interactively with the command: abbimspi.bat If the interface cannot be started interactively, one will not be able to run the interface as a service. It is easier to debug interactively started processes because error messages are echoed directly to the screen. Once the interface is successfully running interactively, one can try to run it as a service by following the instructions below. Installing the Interface as an NT Service The PI-ABB Advant interface service can be created with the PI-Interface Configuration & Management Utility, or can be created manually. Installing the Interface Service with PI-Interface Configuration Utility The PI-Interface Configuration & Management Utility provides a user interface for creating, editing, and deleting the interface service: ABB IMS/AEH Advant Station Interface to the PI System 17 17 Interface Installation on NT Service Configuration Service name The Service to Add box shows the name of the current interface service. This service name is obtained from the interface executable. Display name The Display Name text box shows the current Display Name of the interface service. If there is currently no service for the selected interface, the default Display Name is the service name with a “PI-” prefix. Users may specify a different Display Name. OSIsoft suggests that the prefix “PI-” be appended to the beginning of the interface to indicate that the service is part of the OSI suite of products. Service Type The Service Type indicates whether the interface service will start automatically or need to be started manually on reboot. If the Auto option is selected, the service will be installed to start automatically when the machine reboots. If the Manual option is selected, the interface service will not start on reboot, but will require someone to manually start the service. If the Disabled option is selected, the service will not start at all. Generally, interface services are set to start automatically. Dependencies The Installed services list is a list of the services currently installed on this machine. Services upon which this Interface is dependant should be moved into the Dependencies list using the button. For example, if API Buffering is running, then “bufserv” should be selected from the list at the right and added to the list on the left. Often interface services also depend on a vendor program. To remove a service from the list of dependencies, use the “Dependencies” list. button, and the service name will be removed from the When the PI Interface is started (as a service), the services listed in the dependency list will be verified as running (or an attempt will be made to start them). If the dependent service(s) cannot be started for any reason, then the PI interface service will not run. Note: Please see the PI Log and Operating System Event Logger for messages that may indicate the cause for any server not running as expected. - Add button To add a dependency from the list of Installed services, select the dependency name, and click the Add button. - Remove button To remove a selected dependency, highlight the service name in the Dependencies list, and click the Remove button. 18 18 The full name of the service selected in the Installed services list is displayed below the Installed services list box. Create The Create button adds the displayed service with the specified Dependencies and with the specified Startup Type. Remove The Remove button removes the displayed service. If the service is not currently installed, or if the service is currently running, this button will be grayed out. Start or Stop Service To Start or Stop an interface service, use the Start button and a Stop button on the ICU toolbar. If this interface service is not currently installed, these buttons will remain grayed out until the service is added. If this interface service is running, the Stop button is available. If this service is not running, the Start button is available. The status of the Interface service is indicated in the lower portion of the PI-ICU dialog. Status of the ICU Status of the Interface Service Service installed or uninstalled Installing the Interface Service Manually Change to the directory where the abbimspi.exe executable is located. Then, consult the following table to determine the appropriate service installation command . NT Service Installation Commands on a PI Interface Node or a PI Server Node with Bufserv Manual service abbimspi.exe –install –depend “tcpip bufserv” Automatic service abbimspi.exe –install –auto –depend “tcpip bufserv” NT Service Installation Commands on a PI Interface Node or a PI Server Node without Bufserv Manual service abbimspi.exe –install –depend tcpip Automatic service abbimspi.exe –install –auto –depend tcpip When the interface is installed as a service on the PI Server node and when Bufserv is not implemented, a dependency on the PI network manager is not necessary because the interface will repeatedly attempt to connect to the PI Server until it is successful. Note: Interfaces are typically not installed as automatic services when the interface is installed on the PI Server node. Check the Microsoft Windows NT services control panel to verify that the service was added successfully. One can use the services control panel at any time to change the interface from an automatic service to a manual service or vice versa . ABB IMS/AEH Advant Station Interface to the PI System 19 19 Interface Installation on NT Interface Files for NT abbimspi.exe abbimspi_event.bat.new abbimspi_cyclic.bat.new abbimspi_demand.bat.new abbimspi.doc abbims_x.x.x.xtxt 20 20 interface executable (linking not required) interface startup template interface startup template interface startup template this interface manual release notes (x.x.x.x stands for the version) Interface Installation on HP-UX Definition of Environment Variables The Interface ‘make’ procedure requires the following UNIX environment variables to be properly defined: PIHOME ABBIMSPI this is the PI-API home directory, for example, /opt/piapi this is the Interface subdirectory path beneath PIHOME Example: If your PI-API HP-UX is installed under /opt/piapi, the PIHOME variable must point to /opt/piapi. $ echo $PIHOME /opt/piapi $ If the PI-ABB Advant Interface resides under /opt/piapi/abbimspi, the ABBIMSPI variable must point to abbimspi $ echo $ABBIMSPI abbimspi $ If the environment variable PIHOME does not exist, define it with the following commands: PIHOME=/opt/piapi export PIHOME If the environment variable ABBIMSPI does not exist, define it with the following commands: ABBIMSPI=abbimspi export ABBIMSPI In order to have PIHOME and ABBIMSPI available every time you log on, you may wish to put their definitions into /home/ocsmgr/.profile for user ocsmgr. Consult your HP-UX system administrator for more information. The directory for the Interface files is: $PIHOME/$ABBIMSPI/bin The directory for the Interface log files is: $PIHOME/$ABBIMSPI/log ABB IMS/AEH Advant Station Interface to the PI System 21 21 Interface Installation on HP-UX Installation of the PI-API on HP-UX Before installing the PI-ABB Advant Interface itself, you must install the PI-API HP-UX. Note that currently PI-API version 1.3.4 is highest supported version. If you are installing the PI-API from a distribution kit that is at a higher version (e.g. 1.3.8), you must choose to install the option “PI-API v1.3.4 compatible with the HP-UX cfront compiler” when prompted. PI-API 1.3.9.1 does not support the HP-UX cfront compiler and thus cannot be used for this interface. For more information, see the Appendices, “UNIX Installation Procedures”, “UNIX Post Installation” and “HP-UX” in the PI-API Application Programming Interface User Guide. It is recommended to have ocsmgr own all PI-API directories and the resulting processes, i.e. the requested “existing user name” should be ocsmgr. Note that the PI-ABB Advant Interface was compiled with cfront, so choose this option when asked (i.e. enter N to the question ‘Do you want to install the ANSI C++ [Y] or the cfront version?’). The following sample installation log (taken from a PI-API 1.3.4 installation) shows the required steps. User inputs during the installation are shown in bold red. Creating/Updating the PI-API file system PIHOME is properly defined: /opt/piapi Setting PI Environment Variables Installing PI-API from /opt/piapi/build BLDDIR exists LIBDIR exists BINDIR exists DATDIR exists INCDIR exists SRCDIR exists Enter an existing user name for PI-API [piadmin] ? User name: ocsmgr File: piclient.ini exists File: iorates.dat exists Do you want to install the ANSI C++ [Y] or the cfront version? N Version (10 20) API install type = 0 Installing Base System – PI API API Installation Script Setting Working Directory Installing /opt/piapi/bin/pistart /opt/piapi/bin/pistop Installing /opt/piapi/bin/apiverify Installing piapi.h piparams.h pidefs.h pistatus.h piba.h pisql.h piapix.h pidgstat.h Installing /opt/piapi/lib/libpiapi.sl Installing /opt/piapi/lib/libpiapi.a Installing files in /opt/piapi/bin: apisnap bufserv bufutil iorates ioshmcls ioshmsrv isbuf mqcls mqmgr mqsrv pilogsrv shootq Running the Site Specific Link Script Installing examples: apisnap.c apisnap.mak 22 22 If installing a higher PI-API Version (e.g. 1.3.6, where the following sample was taken from), you will see this: This distribution contains 1. PI-API v1.3.4 compatible with the HP-UX cfront compiler 2. PI-API v1.3.4 compatible with the ANSI C++ compiler 3. PI-API v1.3.6 compatible with the ANSI C++ compiler and ANSI streams If your PI-API programs (for example, PI-Interfaces) do not mention ANSI C++ compiler compatibility or PI-API v1.3.6 compatibility, choose option 1. You can always re-run this script to re-install another version of the PI-API. Which of the above PI-API version do you wish to install: [1], 2, or 3? 1 Choose “1”. Starting with PI-API version 1.3x, there is a utility $PIHOME/bin/apiverify. This little script lists all PI-API processes and allows you to detect whether one or more is/are missing. You can include the abbimspi process by simply editing the file $PIHOME/bin/apiprocs. After modification, it may look like this: bufserv mqmgr mqsrv ioshmsrv iorates abbimspi A periodic execution of apiverify as part of the daily maintenance procedure will alert you if the interface process is missing. $ apiverify NAME PID TIME bufserv 22945 00:00:00 mqmgr 22938 00:00:00 mqsrv 22933 00:00:00 ioshmsrv 22951 00:00:00 iorates 22956 00:00:00 WARNING: abbimspi is NOT running %CPU 0 0 0 0 0 VSZ 156 48 48 40 76 Note: Multiple copies of the PI-ABB Advant Interface may be running while multiple instances of the native PI-API processes must not. Unfortunately, the apiverify script is unable to distinguish between these cases and will issue a warning if multiple occurrences of the same process name are found. Please ignore an interface related warning unless there are indeed more interface copies showing up than you actually intended to start. Example: $ apiverify NAME PID TIME bufserv 22945 00:00:00 mqmgr 22938 00:00:00 mqsrv 22933 00:00:01 ioshmsrv 22951 00:00:00 iorates 22956 00:00:00 abbimspi 22990 00:00:00 abbimspi 22993 00:00:00 WARNING: multiple instances of abbimspi ABB IMS/AEH Advant Station Interface to the PI System %CPU VSZ 0 156 0 48 0 48 0 40 0 76 0 300 0 256 are running 23 23 Interface Installation on HP-UX In this case, if you have configured two interfaces, everything is ok. If you set up only one interface, you might have accidentally started it twice, maybe after an unsuccessful attempt to stop and a subsequent restart. Interface Upgrade Before you install the upgrade, make sure that you have a valid backup of your existing interface files. In particular, take care of your interface startup scripts. If you are using the names of the startup example files shipped with the kit, your files will get overwritten. Make sure that the HP-UX environment variables PIHOME and ABBIMSPI are defined. Insert the tape and copy the files. Example: cd $PIHOME/$ABBIMSPI/bin tar –xv Installing/Upgrading from CD-ROM or a Downloaded File Nowadays, interfaces are shipped on CD-ROM. Furthermore; files can easily be exchanged by e-mail or supplied and downloaded via an ftp server. You may get authorized to download an interface update from ftp.osisoft.com or receive a bug fix by e-mail. The file you receive via ftp, e-mail or on the CD-ROM is a self-extracting executable for Intel NT, containing a compressed tar file for HP-UX, the current Interface manual and the Release Notes. For example, you may receive version 5.09 of the PI-ABB Advant Interface in the file abbims_5.09.exe. Detach this file to your PC and double-click it in the Windows Explorer. In this example, after extraction, you will have the following files in c:\temp\abbimspi abbims_5.09.tar.Z abbimspi.doc abbims_5.09.txt You may wish to keep abbimspi.doc and abbims_5.09.txt on your PC (although abbims_5.09.txt is copied to your Unix box as well). If this is a new installation, create the interface directory: 24 24 mkdir $PIHOME/$ABBIMSPI cd $PIHOME/$ABBIMSPI mkdir bin mkdir log cd bin Next use ftp binary file transfer to move abbims_5.09.tar.Z to $PIHOME/$ABBIMSPI/bin on the Advant Station. Make a backup of the files in this directory prior to proceeding. Check that the file you just copied has kept the uppercase ‘Z’ at the end: abbims_5.09.tar.Z. (Otherwise, uncompress won’t work.) Uncompress and un-tar the file: $ uncompress abbims_5.09.tar.Z $ tar –xvf abbims_5.09.tar (this will leave abbims_5.09.tar) Note: You can mount an NT CD ROM directly on the Advant Station and copy files. See Appendix G: Mounting an NT CD ROM on an HP-UX Advant Station. ABB IMS/AEH Advant Station Interface to the PI System 25 25 Interface Installation on HP-UX Interface Files for HP-UX StartPIAPIOnBoot abbimscp.mak abbimscp.o abbimspi.o uniint.o apiMake apiMakefile ifinfo ifstop PI_abbims_x.x.x.x.txt abbimspi_event.sh.new abbimspi_cyclic.sh.new abbimspi_demand.sh.new PI-API Start script for use with Process Supervision control program makefile control program object file interface object file OSI universal interface object file interface make script interface makefile interface information interface stop procedure release notes interface startup example (event-based version) -”(cyclic version) -”(on demand version) Additional Files after Link abbimspi abbimscp Interface executable Control program executable Linking the PI-ABB Advant Interface The PI-ABB Advant Interface must be re-linked any time you receive a new interface version. Furthermore, the interface should be linked whenever the PI-API-HP-UX is linked. Linking of the PI-API is done by executing $PIHOME/build/pi.install. $ cd $PIHOME/$ABBIMSPI/bin $ apiMake abbimspi Make sure the PI-API is running when you perform the link procedure. Linking the Interface Control Program $ cd $PIHOME/$ABBIMSPI/bin $ make –f abbimscp.mak HP-UX Ownership of Interface Files A user that has enough privileges to execute ABB functions should own the interface files. This is typically ocsmgr. The recommended method is to have the complete PI-API tree owned by the account ocsmgr: $ chown –R ocsmgr $PIHOME $ chgrp –R ocs $PIHOME Under control of ocsmgr, the PI-API has proven to function correctly and you will not have any problems when executing ABB functions. The drawback is: If you want to make the PIHOME and ABBIMSPI environment variables (discussed in the chapter “Definition of Environment Variables”) permanent by defining them in files being 26 26 executed on login or system boot, you must be permitted to modify .profile of ocsmgr or even root. Also note that these files will be overwritten on IMS/AEH/HP-UX upgrades. If you want to use ABB’s Process Supervision for automatic startup of the PI-ABB Advant Interface on IMS startup, make sure that ocsmgr has enough privileges to access PI-API and PI-ABB Advant Interface files. A process started up automatically by the Process Supervision functionality is started and owned by the ocsmgr user. If your PIAPI tree is owned by ocsmgr, you will not have any problem. See your HP-UX system administrator to allow or help you perform necessary configuration tasks. ABB IMS/AEH Advant Station Interface to the PI System 27 27 Digital States For more information regarding Digital States, refer to the Data Archive Manuals. PI 2 Home Node Digital states are defined by running the Digtl Stat display from the PI menu. The states must be contiguous for each status type and may be anywhere within the Digital State Table outside of the range 193 – 320, which is reserved for OSIsoft. The digital states need to be defined prior to point configuration. The digital state sets described in the PI 3 sections below should be entered into the PI 2 Digital State Table. For more information, see the DA manual. PI 3 Home Node Digital State Sets PI digital states are discrete values represented by strings. These strings are organized in PI as digital state sets. Each digital state set is a user-defined list of strings, enumerated from 0 to n to represent different values of discrete data. For more information about PI digital tags and editing digital state sets, see the PI Data Archive Manual for Windows NT and Unix manual. An interface point that contains discrete data can be stored in PI as a digital tag. A Digital tag associates discrete data with a digital state set, as specified by the user. System Digital State Set Similar to digital state sets is the system digital state set. This set is used for all tags, regardless of type to indicate the state of a tag at a particular time. For example, if the interface receives bad data from an interface point, it writes the system digital state bad input to PI instead of a value. The system digital state set has many unused states that can be used by the interface and other PI clients. ABB IMS/AEH Advant Station Interface to the PI System 29 29 PointSource The PointSource is a single, unique character that is used to identify the PI point as a point that belongs to a particular interface. For example, one may choose the letter A to identify points that belong to the PI-ABB Advant Interface. To implement this, one would set the PointSource attribute to A for every PI Point that is configured for the PIABB Advant Interface. Then, if one uses /ps=A on the startup-command line of the PIABB Advant Interface, the PI-ABB Advant Interface will search the PI Point Database upon startup for every PI point that is configured with a PointSource of A. Before an interface loads a point, the interface usually performs further checks by examining additional PI point attributes to determine whether a particular point is valid for the interface. For additional information, see the /ps argument. Case-sensitivity for PointSource Attributes In all cases, the point source character that is supplied with the /ps command-line argument is not case sensitive. That is, /ps=A and /ps=a are equivalent. PI 2 Server Nodes The following point source characters are reserved on PI 2 systems and cannot be used as the point source character for an interface: C, ?, @, Q, T. Also, if one does not specify a point source character when creating a PI point, the point is assigned a default point source character of L. Therefore, it would be confusing to use L as the point source character for an interface. Before a PI point with a given point source can be created, the point source character must be added to the PI 2 point source table. For example, if point source A is not defined in the PI 2 point source table, a point with a point source of A cannot be created. This prevents the user from accidentally creating a point with an incorrect point source character. Defining a Point Source Character in the PI 2 Point Source Table 1. Enter PI by typing the following command from a VMS command prompt: @pisysexe:pi 2. Select the PointSrc option from the menu. 3. Select New from the menu. 4. Assign a point source next to the Code: field. Point Source Code: A Point Source Descriptor: ABB Advant Also, assign minimum and maximum values for the Location1 to Location5 attributes. Location1 Location2 Location3 Location4 Location5 Minimum 0 0 0 1 0 Maximum 255 0 32 255 1 5. Select “Save” from the menu. ABB IMS/AEH Advant Station Interface to the PI System 31 31 PointSource PI 3 Server Nodes No point source table exists on a PI 3 Server, which means that points can be immediately created on PI 3 with any point source character. Several subsystems and applications that ship with PI 3 are associated with default point source characters. The Totalizer Subsystem uses the point source character T, the Alarm Subsystem uses G and @, Random uses R, RampSoak uses 9, and the Performance Equations Subsystem uses C. Either do not use these point source characters or change the default point source characters for these applications. Also, if one does not specify a point source character when creating a PI point, the point is assigned a default point source character of L. Therefore, it would be confusing to use L as the point source character for an interface. 32 32 PI Point Configuration The PI point is the basic building block for controlling data flow to and from the PI Data Archive. A single point is configured for each measurement value that needs to be archived. Use the point attributes below to define what data to transfer. Point Attributes Tag A tag is a label or name for a point. Any tag name can be used in accordance to the normal PI point naming conventions. PointSource The PointSource is a single, unique character that is used to identify the PI point as a point that belongs to a particular interface. For additional information, see the /ps command-line argument and the “Point Source” section. For PI 2 systems, the point source must be defined in the point source library before point configuration. PointType Typically, device point types do not need to correspond to PI point types. For example, integer values from a device can be sent to floating point or digital PI tags. Similarly, a floating-point value from the device can be sent to integer or digital PI tags, although the values will be truncated. PI 2 Server Nodes Scaled real, full-precision real, integer, and digital point types are supported on PI 2 Servers. For more information on the individual point types, refer to the Data Archive (DA) section of PI System Manual I. The PI-ABB Advant Interface supports the PI 2 point types R (Real), I (Integer) and D (Digital). For points of type R high precision storing is supported, i.e., 32 bit floating point numbers and integers in the range up to 16,000,000. PI 3 Server Nodes Float16, float32, int16, int32, digital, string, and blob point types are supported on PI 3 Servers. For more information on the individual point types, see PI Data Archive for NT and UNIX. For PI 3 Home Nodes, point types Digital, Int16, Int32, Float16, Float32, Float64 and String are supported. SourceTag This field is used for output tags, i.e. it is only evaluated if Location 5 is set to 1. Specify the PI tag name where the output tag gets data from. The output tag will automatically be updated if the sourcetag changes. The output tag will be used to transfer data from PI to the DCS. ABB IMS/AEH Advant Station Interface to the PI System 33 33 It is possible to leave this field blank. In this case, the output tag itself will be subscribed for events in PI. Location1 Location 1 contains the interface number. This number must match the one specified via the /in= startup parameter. Otherwise, the tag will be rejected silently, i.e. without creating a message in the log files. Multiple copies of the PI-ABB Advant Interface can run on the same Advant Station. Location2 This attribute is not used for the PI-ABB Advant Interface. Location3 If the attribute you want to read is of type BITSET (for example STATUS of a DI object) or SHORT_BITSET (for example STATUS of a TEXT object), Location 3 can be used to specify the number of the specific bit you want to store in PI. In this case, Location 3 must contain a number between 1 and 32 (for attributes of type BITSET) or between 1 and 16 (for attributes of type SHORT_BITSET), respectively. The entire attribute value (a 32 or 16 bit integer) can be read by setting Location 3 to 0. A common example is the VALUE bit (also called VALUE Terminal) of the STATUS attribute of a DI or DO. The actual “value” of a DI or DO is just one bit of STATUS, namely bit 9. To read this “value”, the Extended Descriptor must contain ATTRIB=STATUS and Location 3 must be set to 9. Location4 The scan class is stored here. The scan frequency of the tag is controlled by this location parameter. For example, a ‘3’ in Location 4 corresponds to the 3rd /f=… startup switch. There is two reserved scan classes: Specify 1 for event-based reads (ABB Master only). The /tm parameter for event-based reads must be E. Specify 2 for cyclic reads. The /tm parameter for cyclic-based reads must be C. Specify 3 or greater for demand-based (scan class) reads and all outputs. The /tm parameter for these points must be D. Output tags must reside in an on-demand scan class which means that location 4 contains a value greater than 2. For those tags, the scan class is just used to prevent the tag from being entered into an event or cyclic interface instance. The corresponding /f=… specification is not evaluated for output tags as outputs are always performed when the source tag changes. Note: The number of points per scan class must NOT exceed 1500 or this can result in failure of the PI-ABB Advant Interface. If more than 1500 tags should be serviced at the same time, please use an additional scan class with the same scan-frequency for the next 1500 tags. See also 34 34 Appendix D: Achieving Better Interface Performance. Location5 This is the direction of data transfer. Choose 0 for input tags, i.e. if data are input from the DCS to PI. Choose 1 for output tags, i.e. if data are output from PI to the DCS. If set to 1, make sure the output tag belongs to an ‘On Demand’ interface. InstrumentTag Object name in ABB Master or ABB MOD 300. For a PI 2 Server, the InstrumentTag attribute is limited to 32 characters. For a PI 3 Server, the InstrumentTag is limited to 32 characters if UniInt does not use the PISDK and to 1024 characters if UniInt uses the PI-SDK. ExDesc This is the Extended Descriptor attribute. For a PI 2 Server, ExDesc is limited to 80 characters. For a PI 3 Server, ExDesc is limited to 80 characters if UniInt does not use the PI-SDK and to 1024 characters if UniInt uses the PI-SDK. The Extended Descriptor is used to store the attribute to be read or modified. Syntax: ATTRIB=<attribute name> Examples: ATTRIB=VALUE ATTRIB=MEASURE ATTRIB=DEV_STAT The attribute name specified must exactly match one of the attribute names available for the required object type, including uppercase/lowercase spelling. The PI-ABB Advant Interface automatically retrieves the object type of a given object name. See also description of the InstrumentTag field. To configure a tag, it is necessary to know which attributes are available in the DCS for a specific object type because the PI-ABB Advant Interface will compare the attribute specified in the Extended Descriptor against the list of valid attributes. Tags with an invalid attribute – object name combination (i.e. an invalid ExDesc – InstrumentTag combination) will be rejected by the PI-ABB Advant Interface. For lists of supported attributes (and their exact names), refer to the AdvaInform Object Types Reference Manual. The interface supports only attributes that represent a single string or a single numerical value (maximum size 32 bit). It is possible to retrieve a summary of attributes, events and operations for a specific object type via getObj. See “Appendix F : Attribute Lists via getObj” for more information. Performance Points For UniInt-based interfaces, the extended descriptor is checked for the string “PERFORMANCE_POINT”. If this character string is found, UniInt treats this point as a performance point. See the section called “Performance Point Configuration“. ABB IMS/AEH Advant Station Interface to the PI System 35 35 PI Point Configuration 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, SCAN OFF will be written to the PI point. If the scan attribute is changed from 1 to 0 while the interface is running, SCAN OFF will also be written to the PI point after the point edit is detected by the interface. There is one other situation, which is independent of the Scan attribute, where UniInt will write SCAN OFF to a PI point. If a point that is currently loaded by the interface is edited so that the point is no longer valid for the interface, the point will be removed from the interface, and SCAN OFF will be written to the point. For example, if the PointSource of a PI point that is currently loaded by the interface is changed, the point will be removed from the interface and SCAN OFF will be written to the point. Shutdown PI 2 Server Nodes The Shutdown attribute is not used if the server node is a PI 2 system. For information on configuring shutdown events for PI 2, see Data Archive (DA) section 4.2.3 of PI System Manual I. PI 3 Server Nodes The shutdown attribute is used only if the server node is a PI 3 system. 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 for NT and UNIX. Note: The SHUTDOWN events that are written by the PI Shutdown subsystem are independent of the SHUTDOWN events that are written by the PI-ABB Advant Interface when the /stopstat=Shutdown command-line argument is specified. One can disable SHUTDOWN events from being written to PI when PI is restarted by setting the Shutdown attribute to 0 for each point. Alternatively, one can change the default behavior of the PI Shutdown Subsystem to write SHUTDOWN events only for PI points that have their Shutdown attribute set to 0. To change the default behavior, edit the \PI\dat\Shutdown.dat file, as discussed in PI Data Archive for NT and UNIX. Bufserv It is undesirable to write shutdown events when Bufserv is being used. Bufserv is a utility program that provides the capability to store and forward events to a PI Server, allowing continuous data collection when the Server is down for maintenance, upgrades, backups, and unexpected failures. That is, when PI is shut down, Bufserv will continue to collect data for the interface, making it undesirable to write SHUTDOWN events to the PI points for this interface. 36 36 Hints for Point Configuration HP-UX ABB provide example programs in the following directory: /opt/advant/UserAPI/examples You can check whether the object name you entered into the instrument tag field and the requested attribute (in the Extended Descriptor via ATTRIB=…) are spelled correctly, and see the current value of attributes, using the utility getObj. This tool is very useful to check the availability of an object. It is independent of PI and a good means for troubleshooting. For instance, if you see an error message in the interface output file regarding difficulties with ABB object access, and the getObj program yields the same message, then there is likely a problem in the DCS or the IMS. Example: $ /opt/advant/UserAPI/examples/getObj 142IT082 VALUE getObj: bciGetAttributes(142IT082) API ERROR –100 The getObj program takes two arguments: object name and attribute name. If both are correct, getObj will return the current value of the attribute. Example: $ getObj OAKY1000E.UCL RESULT OAKY1000E.UCL RESULT = 17.00 You can obtain a list of available attributes, along with a summary of events and operations, by omitting the second argument. In order to get this summary information, it is also possible to use an object type name instead of an object name, e.g. $ getObj AI See Appendix F : Attribute Lists via getObj for examples of summaries. There are other example-programs you can use to test on-demand, cyclic or event-based reads. Depending on the object type, use getAI, getAO, getDI or getDO for Basic Objects. If these programs do not exist, create them with ABB’s apiMake script. Note that in this case, the C Compiler must be available on your IMS Advant Station. Example: $ apiMake getObj c89 +e –D_POSIX_SOURCE -I. –I.. – I/opt/advant/UserAPI/include -I/opt/advant/c++_complib/include I/opt/advant/TypeDir/include -I/opt/advant/OMF/include I/opt/advant/UXBase/include -Ic Linking getObj … Stripping getObj … done - The example below shows how to retrieve an event-based value from an ABB Master DCS. If the object name is correct, this command will subscribe for events and return value and status on event. ABB IMS/AEH Advant Station Interface to the PI System 37 37 PI Point Configuration $ getAI PU-2891A cycle 0 Other choices of value for cycle behave differently, and are documented by entering the getAI command without arguments. In general, launching these examples without arguments will display usage information. Example: $ /opt/advant/UserAPI/examples/getObj SYNTAX: getObj ObjectName [ALL|FULL] Or: getObj ObjectName [ALL|FULL] Or: getObj ObjectName AttributeName1 AttributeName2…AttributeName9] WHERE: ALL gives OPERATION and EVENT expansion and STRUCT, UNION & COMPOSITION attribute expansion AND: FULL gives additional ARRAY & BITSET attribute expansion If you are unsure where to find the getObj or other example programs, use the UNIX find command, e.g.: $ find / -name getObj –print This command will search for a file named getObj, beginning from the root “/”, and print out the complete path if the file was found. If the program getObj is unable to resolve any objects that are known to reside in the DCS then it is possible that the IMS software has not started up correctly. Restarting the IMS software MUST only be done after an authorized person has given the OK to do so since stopping the IMS software may impact the DCS. The commands to restart the IMS 2.0 software are as follows: $ $ # # # cd /home/ocsmgr su (you must enter the root password here) ./IMSstop –v ./IMSstart –v exit NT The above considerations regarding ABB example programs, in particular getObj apply in a general manner also to NT. On Advant Enterprise Historian (AEH) 3.0 getobj.exe resides in c:\Program Files\ABB\Advant\SystemModules\AdvaInform UserAPI\1.3\Examples Increasing Shared Memory Size on HP-UX As stated earlier in this manual, depending on the available resources, there is a limit on the number of points that can be retrieved from a single IMS Advant Station. If you reach the limit, you might get an error message Out of shared memory!!! 38 38 In this case, contact your local ABB specialist and ask him to check the file /etc/opt/advant/OMF/config.cfg Look for a section [SharedMemory]. If possible yet, doubling the current value for the keyword Size may help to increase the number of objects that can be serviced. E.g., if the Size was originally set to 4096, the file may look like this after doubling the value: [SharedMemory] # Size is in Kbytes Size = 8192 Please have this change only done by an authorized ABB engineer. Afterwards, the system must be watched carefully to make sure the change has no negative impact on other components. Increasing Shared Memory Size on Windows NT On NT, the ‘size’ of the available shared memory is stored in the registry. Edit the following entry to modify it. Make sure to have this change done by authorized ABB personnel. On Advant Enterprise Historian (AEH) 3.0 the key is HKEY_LOCAL_MACHINE\SOFTWARE\ABB\Advant\SystemModules\OMF\1.4\Priva te\config\SharedMemory\size On Advant Enterprise Historian (AEH) 3.1 the key is HKEY_LOCAL_MACHINE\SOFTWARE\ABB\SystemServices\OMF\config\SharedMe mory\Size Note that “1.4” in the key above may have been increased on your system, e.g. to 1.5. Increasing the size of the shared memory may solve problems with interfaces ‘hanging’ at ABB functions such as bciDoRequest, if the number of tags/objects serviced by one bciDoRequest was increased and the PI-ABB Advant Interface used to work with fewer tags. You may have to set the interface to debug level 4 in order to exactly determine where the interface is hanging. For more information, consult the Advant MES Advant Enterprise Historian for Windows NT Administrator’s Guide. How to Retrieve a List of all Available Objects ABB Master You can retrieve an object list via the Object Reference Maintenance tool. The results (stored in the file /tmp/Reference.tmp) can be used to fill the Tag name and the Instrument Tag name. The following step-by-step procedure explains how to get the information. (This example was generated on an IMS connected to ABB Master.) On the bottom of the IMS screen, there is an ABB icon. Click on it. Choose “Station” -> “Object Reference Maintenance”. Choose “List Object References” -> “List” The following mask details should apply: Reference Status “Resolved” Object Type “All” (or a specific type you want) Node Type “All” Network “Own” ABB IMS/AEH Advant Station Interface to the PI System 39 39 PI Point Configuration Node “All” Click OK and the list will appear. To save the list, click on “Save List”. A message will appear: ”The current object reference list will be saved as ‘/tmp/Reference.tmp’. If the file already exists it will be overwritten.” Check whether you need the old file, per haps rename it, and then click OK. ABB MOD 300 The following hints, based on notes that have been taken during an installation, can be used to pull information for analog and digital tags, digital state sets and digital states out of a MOD 300 system. Log on to the OS/ES (not the IMS). Run SQLplus using the project configuration account and password. Set linesize 1000 set pagesize 50000 === spool pimod300_ana.txt SELECT OBJ_ID,LOOP_DESC,LOENGUNLIM,HIENGUNLIM,MEAS_UNITS,MEASFCMNAM FROM LOOP_DEF ORDER BY OBJ_ID; spool off spool pimod300_digdesc.txt SELECT * FROM DEV_DESC; spool off === spool pimod300_dig.txt SELECT OBJ_ID, DESCRIPSET, DEVICETYPE, LOOP_DESC FROM DEV_LOOP spool off The DEV_DESC table has a field called OBJ_ID that corresponds to the DESCRIPSET field in the DEV_LOOP table (use for digitalset name in PI). The state descriptors are in fields named STATEVAL01, STATEVAL02 … STATEVAL16. Output Points Output points control the flow of data from the PI Data Archive to any destination that is external to the PI Data Archive, such as a PLC or a third-party database. For example, to write a value to a register in a PLC, one would use an output point. Each interface has its own rules for determining whether a given point is an input point or an output point. There is no de facto PI point attribute that distinguishes a point as an input point or an output point. Outputs are triggered for UniInt-based interfaces. That is, outputs are typically not scheduled to occur on a periodic basis. There are two mechanisms for triggering an output. 40 40 Trigger Method 1 (Recommended) For trigger method 1, a separate trigger point must be configured. The output point must have the same point source as the interface. The trigger point can be associated with any point source, including the point source of the interface. Also, the point type of the trigger point does not need to be the same as the point type of the output point. The output point is associated with the trigger point by setting the SourceTag attribute of the output point equal to the tag name of the trigger point. An output is triggered when a new value is sent to the Snapshot of the trigger point. The new value does not need to be different than the previous value that was sent to the Snapshot to trigger an output, but the timestamp of the new value must be more recent than the previous value. If no error is indicated, then the value that was sent to the trigger point is also written to the output point. If the output is unsuccessful, then an appropriate digital state that is indicative of the failure is usually written to the output point. If an error is not indicated, the output still may not have succeeded because the interface may not be able to tell with certainty that an output has failed. This field is used for output tags, i.e. it is only evaluated if Location 5 is set to 1. Specify the PI tag name the output tag gets data from. The output tag will automatically be updated if the SourceTag receives a new snapshot. The output tag will be used to transfer data from PI to the DCS. It is possible to leave this field blank. In this case, the output tag itself will be subscribed for events in PI. Trigger Method 2 For trigger method 2, a separate trigger point is not configured. To trigger an output, write a new value to the Snapshot of the output point itself. The new value does not need to be different than the previous value to trigger an output, but the timestamp of the new value must be more recent than the previous value. ABB IMS/AEH Advant Station Interface to the PI System 41 41 Performance Point Configuration One can configure performance points to monitor the amount of time in seconds that an interface takes to complete a scan for a particular scan class. The closer the scan completion time is to 0 seconds, the better the performance. The scan completion time is recorded to millisecond resolution. Note that for the reserved scan classes 1 and 2, Performance Points are rather meaningless as the interface will stay inside the ‘scan’, more precisely at bciGetData, for a long time, depending on the /du argument. Configuring Performance Points with PI-ICU (NT-Intel) The PI-Interface Configuration & Management Utility (PI-ICU) provides a user interface for creating and managing Performance Points. Create To create a Performance Point, right mouse click the line belonging to the tag to be created, and select Create. Delete To delete a Performance Point, right mouse click the line belonging to the tag to be deleted, and select Delete. Correct If the “Status” of a point is marked “Incorrect”, the point configuration can be automatically corrected by ICU by right mouse clicking on the line belonging to the tag to be corrected, and selecting Correct. The Performance Points are created with the following PI attribute values. If ICU detects that a Performance Point is not defined with the following, it will be marked Incorrect: Attribute Details Tag Tag name that appears in the list box Point Source Point Source for tags for this interface, as specified on the first tab Compressing Off Excmax 0 Descriptor Interface name + “ Scan Class # Performance Point” ABB IMS/AEH Advant Station Interface to the PI System 43 43 Performance Point Configuration Rename To rename a Performance Point, right mouse click the line belonging to the tag to be renamed, and select “Rename”. Status The Status column in the Performance Points table indicates whether the Performance Point exists for the scan class in column 2. Created – Indicates that the Performance Point does exist Not Created – Indicates that the Performance Point does not exist Deleted – Indicates that a Performance Point existed, but was just deleted by the user Scan Class The Scan Class column indicates which scan class the Performance Point in the Tagname column belongs to. There will be one scan class in the Scan Class column for each scan class listed in the Scan Classes combo box on the Uniint Parameters tab. Tagname The Tagname column holds the Performance Point tag name. Snapshot The Snapshot column holds the snapshot value of each Performance Point that exists in PI. The Snapshot column is updated when the Performance Points/Counters tab is clicked, and when the interface is first loaded. Configuring Performance Points Manually Performance point configuration is the same on all operating system platforms. Performance points are configured as follows. 1. Set the extended descriptor to: PERFORMANCE_POINT or to: PERFORMANCE_POINT=interface_id where interface_id corresponds to the identifier that is specified with the /id flag on the startup command line of the interface. The character string PERFORMANCE_POINT is case insenstive. The interface_id does not need to be specified if there is only one copy of an interface that is associated with a particular point source. 2. Set Location4 to correspond to the scan class whose performance is to be monitored. For example, to monitor scan class 2, set Location4 to 2. See the /f flag for a description of scan classes. 3. Set the PointSource attribute to correspond to the /ps flag on the startup command line of the interface. 4. Set the PointType attribute to float32. 44 44 I/O Rate Tag Configuration An I/O Rate point can be configured to receive 10-minute averages of the total number of exceptions per minute that are sent to PI by the interface. An exception is a value that has passed the exception specifications for a given PI point. Since 10-minute averages are taken, the first average is not written to PI until 10 minutes after the interface has started. One I/O Rate tag can be configured for each copy of the interface that is in use. Monitoring I/O Rates on the Interface Node For NT and UNIX nodes, the 10-minute rate averages (in events/minute) can be monitored with a client application such as ProcessBook Configuring I/O Rate Tags with PI-ICU (NT-Intel) The PI-Interface Configuration & Management Utility (PI-ICU) provides a user interface for creating and managing IORates Tags. PI-ICU currently allows for one I/O Rate tag to be configured for each copy of the interface that is in use. Some interfaces allow for multiple I/O Rates tags. Enable IORates for this Interface The Enable IORates for this interface check box enables or disables IORates for the current interface. To disable IORates for the selected interface, uncheck this box. To enable IORates for the selected interface, check this box. Tag Status The Tag Status column indicates whether the IORates tag exists in PI. The possible states are: Created – This status indicates that the tag exist in PI Not Created – This status indicates that the tag does not yet exist in PI Deleted – This status indicates that the tag has just been deleted Unknown – This status indicates that the ICU is not able to access the PI Server In File The In File column indicates whether the IORates tag listed in the tag name and the event counter is in the IORates.dat file. The possible states are: Yes – This status indicates that the tag name and event counter are in the IORates.dat file ABB IMS/AEH Advant Station Interface to the PI System 45 45 I/O Rate Tag Configuration No – This status indicates that the tag name and event counter are not in the IORates.dat file Event Counter The Event Counter correlates a tag specified in the iorates.dat file with this copy of the interface. The command line equivalent is /ec=x, where x is the same number that is assigned to a tag name in the iorates.dat file. Tagname The tag name listed under the Tagname column is the name of the IORates tag. Snapshot The Snapshot column holds the snapshot value of the IORates tag, if the IORates tag exists in PI. The Snapshot column is updated when the IORates/Status Tags tab is clicked, and when the interface is first loaded. Right Mouse Button Menu Options Create Create the suggested IORates tag with the tag name indicated in the Tagname column. Delete Delete the IORates tag listed in the Tagname column. Rename Allows the user to specify a new name for the IORates tag listed in the Tagname column. Add to File Adds the tag to the IORates.dat file with the event counter listed in the Event Counter Column. Search Allows the user to search the PI Server for a previously defined IORates tag. Configuring I/O Rate Tags Manually There are two configuration steps. Configuring the PI Point on the PI Server PI 2 Server Nodes A listing of the I/O Rate Tags that are currently being monitored can be obtained with the command: @PISysDat:IOMonitor.com Create an I/O Rate Tag using one of the existing I/O Rate Tags as a template. 46 46 PI 3 Server Nodes Create an I/O Rate Tag with the following point attribute values. Attribute Value PointSource L PointType float32 Compressing 0 ExcDev 0 Configuration on the Interface Node For the following examples, assume that the name of the PI tag is SY:ABB001, and that the name of the I/O Rate on the home node is SY:ABB001. NT Nodes 1. Edit/Create a file called iorates.dat in the PIHOME\dat directory. The PIHOME directory is defined either by the PIPCSHARE entry or the PIHOME entry in the pipc.ini file, which is located in the \WinNT directory. If both are specified, the PIPCSHARE entry takes precedence. Since the PIHOME directory is typically C:\PIPC, the full name of the iorates.dat file will typically be C:\PIPC\dat\iorates.dat. Add a line in the iorates.dat file of the form: SY:ABB001, x where SY:ABB001 is the name of the I/O Rate Tag and x corresponds to the first instance of the /ec=x flag in the startup command file. X can be any number between 2 and 34 or between 51 and 200, inclusive. To specify additional rate counters for additional copies of the interface, create additional I/O Rate tags and additional entries in the iorates.dat file. The event counter, /ec=x, should be unique for each copy of the interface. 2. Set the /ec=x flag on the startup command file of the interface to match the event counter in the iorates.dat file. The interface must be stopped and restarted in order for the I/O Rate tag to take effect. I/O Rates will not be written to the tag until 10 minutes after the interface is started. UNIX Nodes 1. Edit/Create a file called iorates.dat in the $PIHOME/dat directory. PIHOME is an environment variable that is set equal to the PI home directory name as discussed in the PI-API Installation Instructions manual. Add a line in the iorates.dat file of the form: SY:ABB001, x where SY:ABB001 is the name of the I/O Rate Tag and x corresponds to the first instance of the /ec=x flag in the startup command file. X can be any number between 1 and 34 or between 51 and 200, inclusive. However, it is best to use an ABB IMS/AEH Advant Station Interface to the PI System 47 47 I/O Rate Tag Configuration event counter, x, that is not equal to 1 because 1 is the default event counter for UniInt-based interfaces. To specify additional rate counters for additional copies of the interface, create additional I/O Rate tags and additional entries in the iorates.dat file. The event counter, /ec=x, should be unique for each copy of the interface. 2. Set the /ec=x flag on the startup command file of the interface to match the event counter in the iorates.dat file. 3. The I/O Rate shared memory server and the I/O Rate monitor program must be stopped and started for the changes to take effect. The easiest way to do this is to run the pistop and pistart command scripts with the following commands: sh $PIHOME/bin/pistop nohup sh $PIHOME/bin/pistart One can determine that the shared memory server and the I/O Rate monitor are running with the commands: ps –ef | grep ioshmsrv ps –ef | grep iorates 48 48 Startup Command File Command-line arguments begin with a /, for example, /ps=A. Notes for NT For NT, command file names have a .bat extension. The NT continuation character ( ^) allows one to use multiple lines for the startup command. The maximum length of each line is 1024 characters (1 kilobyte). The number of flags is unlimited, and the maximum length of each flag is 1024 characters. The PI-Interface Configuration & Management Utility (PI-ICU) provides a tool for configuring the Interface startup command file. A screenshot of the interface ICU control is shown below. ABB IMS/AEH Advant Station Interface to the PI System 49 49 Startup Command File Notes for UNIX UNIX does not enforce file-naming conventions. The backslash (\) continuation character allows one to use multiple lines for the startup command. There is no limit to the command-line length and there is no limit to the number or length of the command line parameters. Note: The UniInt End User Document includes details about other command line parameters, which may be useful. Command-Line Parameters Parameter /nn=host:port Required /deb=x Optional Default: 0 50 PI Home Node name, /nn is identical to /host, see description there, parameter is kept for backward compatibility Debug level. This is the optional debug level (0-7). It defaults to a value of 0, which means that no additional output will be sent to the interface output file. Greater values result in more output information. On HP-UX, you can use the interface control program abbimscp to modify the debug level while the interface is running. In problem situations, debug level 4 (/deb=4) is recommended. However, this can result in a huge interface output file, depending on the number of tags. Make sure not to run the interface in debug level 4 for more than some minutes. Watch the available disk space when operating in debug mode to prevent the disk from filling up. In general, you should await instructions from OSI regarding how long to run the interface in a high debug level if problems occurred, as different phases may need to be monitored (startup, data initialization, data collection, shutdown or even all of those). For example, in order to examine interface performance and to check DCS response times, a temporary change to Debug level 4 via the Control Program may be sufficient. After a while, the Debug level can be reset to 0. If startup problems occur, you will probably have to edit the startup script and restart the interface. You will have to revert your change after diagnosis is finished, to prevent the interface from ALWAYS being started in high Debug mode. Eventually, to debug shutdown problems, increasing the Debug level on the fly via the Control Program + a subsequent interface stop may be required. /to=x Time-out. Optional Default: 300 Only applicable for cyclic interfaces. Maximum period accepted for a cyclic tag to be without new data. Afterwards the tag gets an I/O Timeout status until e.g. connection is re-established and the tag resumes getting data. /in=x Interface Number. Example: /in=1 Location1 of a tag must match the interface number in order to be serviced. It is possible to run multiple PI-ABB Advant Interfaces on the same node. Due to ABB restrictions, the number of cyclic and event tags per application is limited. Therefore several interface processes may be necessary to service all tags. Each interface instance must have its own number. Via this number, you can tell which interface caused a specific message in pimesslogfile or pipc.log. Required 50 Description Parameter /tm=[C|D|E] Optional Default: D Description Transfer Method. One interface process only performs one method. /tm=C /tm=D /tm=E Interface reads data cyclically (cyclic subscription at one pre-defined rate per interface see /ct argument) Interface reads and writes data on demand (multiple scan classes with configurable frequencies possible) Interface reads data on event (event subscription, recommended for ABB Master only) See also the descriptions of Location4 and the /f=… parameter earlier in this manual. /du=x Optional Default: 1800 Duration. Duration (in seconds) for cyclic and on-event subscriptions. Data collection using the cyclic or on-event method is initialized by a so-called subscription of objects. The actual data transfer is done by the ABB function bciGetData. Periodically, after an amount of time according to /du=… data collection is suspended. The interface returns from bciGetData, checks the PI Point Database and executes bciGetData again. Behavior of the interface according to the specified value: Small value, e.g. /du=60 Short periods of continuous cyclic scanning or event watching, but frequent checking for changes in the PI point database; adding or deleting tags is immediately reflected by the interface; Big value, e.g. /du=3600 Long periods of continuous cyclic data collection or watching for events; changes in the PI point database can be recognized only after return from the ABB function, i.e. after e.g. 1 hour; Do not exceed the ABB limit for the duration (currently: 4096 seconds). Important note for the ‘On Event’ interface: Between /du=… periods, i.e. when the interface checks for point updates, it is unable to receive events from the DCS. Although in practice, these intermediate periods usually do not last for more than a second, an event may happen exactly at this time and could get lost. To work around this problem, it is possible to specify a negative value for /du, for example /du=-1 A negative value will cause the event driven interface to stay in bciGetData forever. No event will ever be missed. The drawback is that the interface will not do anything else. You will not be able to add, edit or delete points for this interface while it is running. Instead, you must restart the event interface after a point edit. This is a significant difference to the standard OSI interface features but is caused by the fact that DCS events are not being buffered. If the final tag configuration is accomplished, you should start the event interface with /du=-1 and waive the capability of on-line point edits in favor of 100% data reception. ABB IMS/AEH Advant Station Interface to the PI System 51 51 Startup Command File Parameter Description Note for HP-UX: For the ‘duration’ seconds (if negative: forever), the interface will not reach any other place in the code except the callback functions that send event or cyclic data to PI. On HP-UX, these functions will check a mailbox for messages from the Control Program on a regular basis. Hence, a command issued by the Control Program will only be received on either the next cycle or on the next event, respectively. /ct=x Optional Default: 9 /try=x Optional Default: 300 /ndw=x Optional Default: 1 Cycle Time. Only applicable with /tm=C. Cycle time to be used by the AdvaInform UserAPI function for cyclic read. There is only one cycle time for one cyclic interface process. Note that there are restrictions on the cyclic subscription intervals (IMS 1.1 and 1.2 support 1s, 3s and 9s intervals only). Refer to the AdvaInform UserAPI documentation and Release Description for further information. Number of seconds to wait before trying to re-establish a lost connection to the DCS. It may happen, that a node in the DCS becomes unreachable. In the interface log file, this will be reported by error messages like “… object’s node not reachable”. In this case, the PI-ABB Advant Interface will try to re-establish the connection after a while. The default setting is /try=300 which means that an attempt to reconnect is made after 5 minutes. If the attempt fails, the next one is launched after another 5 minutes. It is possible to configure a different retry rate via /try=… . You can choose an integer value between 0 and 3600. Note that the /try switch has no effect if the ABB patch for fixing the “Node Down” problem has been applied (discussed in this manual) and the workaround (which actually uses the value set via /try) has therefore been disabled via /ndw=0 (see below). Enable or disable the Node Down Workaround. For a detailed description of the Node Down situation, please refer to the section “Connection to the DCS”. There is a fix available from ABB. For AdvaInform 2.0 request patch: ABB-AI-USERAPI_PATCH_1 For Enterprise Historian 2.0 for HP-UX request patch: ABB-AI-USERAPI_PATCH_1 For Enterprise Historian 3.0 for Windows NT request patch: ABB-PAPI_130001 If the appropriate patch was applied to your system, the PI-ABB Advant Interface no longer needs to work around the problem. You should disable the workaround by specifying /ndw=0. You can forget about /try then. /timsrc=x Source of time stamps. Optional Default: A /timsrc=A /timsrc=P Local time of the Advant Station PI Server time See chapter ‘Timestamps’ for more details. On NT, if /timsrc=P is specified, specify /pisdk=1, too. /pisdk=x Optional Default: 0 52 52 The /pisdk flag can be used to enable or disable the PI-SDK. Use /pisdk=1 to enable the PI-SDK. Use /pisdk=0 to disable the PI-SDK. On NT, if /timsrc=P is specified, specify /pisdk=1, too. Parameter /nooutputs Optional Default: outputs enabled Description If specified, any writes to the DCS are disabled. Upon startup of the PIABB Advant Interface, the following message will get written to the message log: ABBIMSPI 1> /NoOutputs flag detected. Outputs to PI disabled Please interpret this message in a way that no output tags will be serviced by this interface, thus output from PI to the DCS is not possible. /startup_delay=x Optional Default: 30 /ps=x Required Number of seconds the PI-ABB Advant Interface delays right after start. If this parameter is specified, the interface will delay the specified number of seconds immediately after printing out the message that indicates that the interface is starting (i.e. “Starting interface…”). If /startup_delay is specified without specifying the number of seconds to delay, then the default delay time is 30 seconds. This parameter is of special importance for the NT version of this interface. Unlike on HPUX, there is no Process Supervision the interface can be incorporated in. Even though the interface could be set up to be dependent on one of the AEH Services, it may start up too soon, actually before all the ABB processes are completely up and running. For example, to wait a grace period of 5 minutes after a reboot of the NT AEH before the interface starts, specify /startup_delay=300. The /ps flag specifies the point source for the interface. A is not case sensitive and can be any single character. For example, /ps=A and /ps=a are equivalent. The point source that is assigned with the /ps flag corresponds to the PointSource attribute of individual PI Points. The interface will attempt to load only those PI points with the appropriate point source. However, not all tags found may finally make it to the interface, due to additional checks (see /in=…, /tm=…) See also chapter “Installation” for more information. /id=x The /id flag is used to specify the interface identifier. Optional Default: empty The interface identifier is a string that is no longer than 9 characters in length. UniInt concatenates this string to the header that is used to identify error messages as belonging to a particular interface. UniInt always uses the /id flag in the fashion described above. This string, together with the interface name, appears in the PI-API log file $PIHOME/dat/pimesslogfile (pipc.log on NT) as a header for interface messages. It is recommended that you use the interface number as the id. For example, use /in=1 /id=1 as startup parameters. /f=SS or /f=SS,SS or /f=HH:MM:SS or /f=HH:MM:SS,hh:m m:ss The /f flag defines the time period between scans in terms of hours (HH), minutes (MM), and seconds (SS). The scans can be scheduled to occur at discrete moments in time with an optional time offset specified in terms of hours (hh), minutes (mm), and seconds (ss). If HH and MM are omitted, then the time period that is specified is assumed to be in seconds. Required for reading scan-based inputs Each instance of the /f flag on the command line defines a scan class for the interface. There is no limit to the number of scan classes that can be defined. The first occurrence of the /f flag on the command line defines the first scan class of the interface, the second occurrence defines the second scan class, and so on. PI Points are associated with a ABB IMS/AEH Advant Station Interface to the PI System 53 53 Startup Command File Parameter Description particular scan class via the Location4 PI Point attribute. For example, all PI Points that have Location4 set to 1 will receive input values at the frequency defined by the first scan class. Similarly, all points that have Location4 set to 2 will receive input values at the frequency specified by the second scan class, and so on. Two scan classes are defined in the following example: /f=00:01:00,00:00:05 /f=00:00:07 or, equivalently: /f=60,5 /f=7 The first scan class has a scanning frequency of 1 minute with an offset of 5 seconds, and the second scan class has a scanning frequency of 7 seconds with no offset. When no offset is specified, the scan class will be scheduled for immediate execution. That is, the interface will not wait for a welldefined moment in time before scanning when no offset is specified. When an offset is specified, the scans occur at well-defined moments in time according to the formula: scan times = (reference time) + n(frequency) + offset where n is an integer and the “reference time” is midnight on the day that the interface was started. In the above example, “frequency” is 60 seconds and “offset” is 5 seconds for the first scan class. This means that if the interface was started at 05:06:06, the first scan would be at 05:07:05, the second scan would be at 05:08:05, and so on. There is no guarantee that a scan will occur at the interval defined by the scan class. If the interface is under a large load, then some scans may occur late or be skipped entirely. Subsecond Scan Classes (Including VMS as of version 3.4.3 ) One can also specify sub-second scan classes on the command line such as /f=0.5 /f=0.1 where the scanning frequency associated with the first scan class is 0.5 seconds and the scanning frequency associated with the second scan class is 0.1 seconds. Similarly, sub-second scan classes with sub-second offsets can be defined, such as /f=0.5,0.2 /f=1,0 Wall Clock Scheduling (NT and UNIX only) Wall-clock scheduling means that the scans will occur at the same time every day, even across daylight savings time transitions. The interface implicitly assumes that certain scan classes should be scheduled according to a wall clock. For example, the interface implicitly assumes that /f=24:00:00,08:00:00 means that the scan should occur once a day at 8 PM. The period of the scan is actually 25 hours during daylight saving time to standard time transitions and is 23 hours during standard time to daylight savings time transitions. Wall-clock scheduling is assumed only when an offset is explicitly defined for a scan class. For example, /f=24:00:00 means that the scan should occur once every 24 hours even across daylight savings time transitions. Even when 54 54 Parameter Description an offset is explictly defined, wall-clock scheduling is implicitly assumed only if the scan would ordinarily occur at the same time every day. For example, the scans associated with /f=23:00:00,08:00:00 would occur at 8 PM the first day, 7 PM the next day, and so on. The interface will perform the scan once every 23 hours even across daylight savings time transitions since there is no implicit reason to adhere to a wall clock for this particular scan class. Periods of 2, 3, 4, 6, 8, 12, or 24 hours or periods that are a multiple of 24 hours are implicitly scanned according to wall-clock scheduling as long as a time offset is explicitly defined for the scan class. A scan class can be explicitly defined to adhere to wall-clock scheduling by appending ,L to the scan class definition. For example, /f=23:00:00,08:00:00,L will invoke wall-clock scheduling for the scan class. This means that the period of the scan class with be 24 hours during daylight saving time to standard time transitions and 22 hours during standard time to daylight savings time transitions. Appending ,L has no effect when the period of the scan class is less than or equal to 1 hour. Similarly, a scan class can be explicitly defined to ignore wall clock scheduling by appending ,U to the scan class definition. For example, /f=24:00:00,08:00:00,U means that the scan period will always be 24 hours, even across daylight savings time transitions. An interesting case occurs with wall-clock scheduling on the spring forward time change for a scan class defined as /f=02:00:00,00:30:00. Under normal opeartion, scans will occur at 00:00:30, 02:30:00, 04:30:00, and so on. However, during the spring forward time change, there is no wall clock time of 02:30:00. In this case, the interface skips the scan entriely and performs the following scan at 04:30:00. /host=host:port Optional for NT and UNIX The /host flag is used to specify the PI Home node. Host is the IP address of the PI Sever node or the domain name of the PI Server node. Port is the port number for TCP/IP communication. The port is always 5450 for a PI 3 Server and 545 for a PI 2 Server. It is recommended to explicitly define the host and port on the command line with the /host flag. Examples: The interface is running on a PI Interface Node, the domain name of the PI 3 home node is Marvin, and the IP address of Marvin is 206.79.198.30. Valid /host flags would be: /host=marvin /host=marvin:5450 /host=206.79.198.30 /host=206.79.198.30:5450 ABB IMS/AEH Advant Station Interface to the PI System 55 55 Startup Command File Parameter /stopstat or /stopstat= digstate Default: /stopstat= ”Intf shut” Optional Description If the /stopstat flag is present on the startup command line, then the digital state I/O Timeout will be written to each PI Point when the interface is stopped. If /stopstat=digstate is present on the command line, then the digital state, digstate, will be written to each PI Point when the interface is stopped. For a PI 3 Server, digstate must be in the system digital state table. For a PI 2 Server, where there is only one digital state table available, digstate must simply be somewhere in the table. UniInt uses the first occurrence in the table. If neither /stopstat nor /stopstat=digstate is specified on the command line, then no digital states will be written when the interface is shut down. Examples: /stopstat=”Intf shut” The entire parameter is enclosed within double quotes when there is a space in digstate. /ec=x Optional Default: 23 /sio Optional Event counter. This is the number of a free slot in iorates.dat. See chapter “I/O Rate Tag Configuration” for additional information. The /sio flag stands for “suppress initial outputs.” The flag applies only for interfaces that support outputs. If the /sio flag is not specified, the interface will behave in the following manner. When the interface is started, the interface determines the current Snapshot value of each output tag. Next, the interface writes this value to each output tag. In addition, whenever an individual output tag is edited while the interface is running, the interface will write the current Snapshot value to the edited output tag. This behavior is suppressed if the /sio flag is specified on the command line. That is, outputs will not be written when the interface starts or when an output tag is edited. In other words, when the /sio flag is specified, outputs will only be written when they are explicitly triggered. /q Optional for NT and UNIX Recommended When the /q flag is present, Snapshots and exceptions are queued before they are sent to the PI Server node. Extended API mode behavior: The maximum queue size is close to 4000 bytes. The queue is flushed between scans if it is not filled. Non-Extended API mode behavior: The maximum queue size is 255 bytes for a PI 3 Server and 36 bytes for a PI 2 Server. For example, if the interface is running on a UNIX node and is communicating to a PI 2 Server, then the maximum queue size is 36. The queue is flushed between scans if it is not filled. When the /q flag is specified in non-extended API mode, the PI-API sends integer values as 16-bit integers instead of 32-bit integers. Therefore, integer points will be limited to values between 0 and 32767. Values higher than 32767 need to be sent to floating-point PI tags. 56 56 Parameter /dbuniint=0x0008 Optional Recommended Description When the /dbuniint=0x0008 flag is present, the interface will send a message to the log file upon interface shutdown, reporting the signal number that caused it to terminate. The general format of the /dbuniint switch is /dbuniint=level This switch is used to set a debug level for debugging UniInt code. Level is a 32-bit integer. Setting a particular bit in level to 1 turns on a particular debug switch. See the UniInt End User Document for more information. Please use levels other than 0 and 0x0008 only upon recommendation of OSIsoft as it can result in very verbose log files. /dbuniint=0x0008 however does not cause repeated messages and can be permanently specified on the command line. Sample Interface Startup Files for HP-UX Sample interface startup files abbimspi_cyclic.sh.new, abbimspi_demand.sh.new, abbimspi_event.sh.new are provided in $PIHOME/$ABBIMSPI/bin. These files may be adapted for your requirements. It is recommended that you copy the template file to a different file name and modify the copy. The template files will be overwritten on every interface upgrade. More than one instance of this interface may be run at one time, but must be differentiated by unique /in=… and /id=… arguments. On Demand The following is an example startup file for an ‘On Demand’ interface: #!/bin/ksh # # Startup file for the ABB IMS/AEH Advant Interface to PI # The \ marks are continuation characters, they allow # you to have a command be split between multiple lines. # There must not be ANYTHING after the \ on each line. # There must not be ANY ‘#’ comment line between command lines. # This is only a sample of the options available, the user # manual has the list and descriptions for them all. # # /host=host PI Home node # /ps=x Point source # /f=hh:mm:ss scan frequency # /in=x Interface Number # /id=x Interface identifier, should be same as for /in # /deb=x Interface-specific debug level # /tm=[C|D|E] Transfer Method (Cyclic, Demand, Event) # /du=x Duration. Only for event and cyclic method # /ct=x Cycle Time.Only applicable with /tm=C # /timsrc=x Source of time stamps # /pisdk=x Enable or disable the PI-SDK # /q Use queued PI-API functions # /nooutputs Outputs disabled # /startup_delay=x Number of seconds the Interface delays right after start # /stopstat=x shutdown digital state # /ec=x Event counter # /sio suppress initial outputs # /dbuniint=x Uniint debug level, 0x0008 recommended # echo “Starting up ABB IMS Advant Station to PI interface 3 (on DEMAND: scan classes >= 3)” DIR=”$PIHOME/$ABBIMSPI” LOG=”$DIR/log/abbimspi_demand.log” if [ -r $LOG ]; then mv $LOG $LOG.old fi ABB IMS/AEH Advant Station Interface to the PI System 57 57 Startup Command File nohup $DIR/bin/abbimspi /host=mypi3server:5450 \ /in=3 \ /id=3 \ /tm=D \ /ps=A \ /ec=23 \ /f=00:00:01 \ /f=00:00:09 \ /f=00:00:15 \ /f=00:01:00 \ /f=00:05:00 \ /f=00:10:00 \ /f=00:15:00 \ /q \ /deb=0 \ /dbuniint=0x0008 \ $LOG 2>&1 & echo “ … started” exit #------------------------------------------------------------------# End #------------------------------------------------------------------- On Event The following is an example startup file for an ‘On Event’ interface: #!/bin/ksh # # Startup file for the ABB IMS/AEH Advant Interface to PI # The \ marks are continuation characters, they allow # you to have a command be split between multiple lines. # There must not be ANYTHING after the \ on each line. # There must not be ANY ‘#’ comment line between command lines. # This is only a sample of the options available, the user # manual has the list and descriptions for them all. # # /host=host PI Home node # /ps=x Point source # /f=hh:mm:ss scan frequency # /in=x Interface Number # /id=x Interface identifier, should be same as for /in # /deb=x Interface-specific debug level # /tm=[C|D|E] Transfer Method (Cyclic, Demand, Event) # /du=x Duration. Only for event and cyclic method # /ct=x Cycle Time.Only applicable with /tm=C # /timsrc=x Source of time stamps # /pisdk=x Enable or disable the PI-SDK # /q Use queued PI-API functions # /nooutputs Outputs disabled # /startup_delay=x Number of seconds the Interface delays right after start # /stopstat=x shutdown digital state # /ec=x Event counter # /sio suppress initial outputs # /dbuniint=x Uniint debug level, 0x0008 recommended # echo “Starting up ABB IMS Advant Station to PI interface 1 (on EVENT: scan class 1)” DIR=”$PIHOME/$ABBIMSPI” LOG=”$DIR/log/abbimspi_event.log” if [ -r $LOG ]; then mv $LOG $LOG.old fi nohup $DIR/bin/abbimspi /host=mypi3server:5450 \ /in=1 \ /id=1 \ /tm=E \ /ps=A \ /ec=25 \ /f=00:00:01 \ /f=00:00:09 \ 58 58 /q \ /deb=0 \ /dbuniint=0x0008 \ $LOG 2>&1 & echo “ … started” exit #------------------------------------------------------------------# End #------------------------------------------------------------------- Cyclic The following is an example startup file for a ‘Cyclic’ interface: #!/bin/ksh # # Startup file for the ABB IMS/AEH Advant Interface to PI # The \ marks are continuation characters, they allow # you to have a command be split between multiple lines. # There must not be ANYTHING after the \ on each line. # There must not be ANY ‘#’ comment line between command lines. # This is only a sample of the options available, the user # manual has the list and descriptions for them all. # # /host=host PI Home node # /ps=x Point source # /f=hh:mm:ss scan frequency # /in=x Interface Number # /id=x Interface identifier, should be same as for /in # /deb=x Interface-specific debug level # /tm=[C|D|E] Transfer Method (Cyclic, Demand, Event) # /du=x Duration. Only for event and cyclic method # /ct=x Cycle Time.Only applicable with /tm=C # /timsrc=x Source of time stamps # /pisdk=x Enable or disable the PI-SDK # /q Use queued PI-API functions # /nooutputs Outputs disabled # /startup_delay=x Number of seconds the Interface delays right after start # /stopstat=x shutdown digital state # /ec=x Event counter # /sio suppress initial outputs # /dbuniint=x Uniint debug level, 0x0008 recommended # echo “Starting up ABB IMS Advant Station to PI interface 2 (CYCLIC: scan class 2)” DIR=”$PIHOME/$ABBIMSPI” LOG=”$DIR/log/abbimspi_cyclic.log” if [ -r $LOG ]; then mv $LOG $LOG.old fi nohup $DIR/bin/abbimspi /host=mypi3server:5450 \ /in=2 \ /id=2 \ /tm=C \ /ps=A \ /ec=24 \ /f=00:00:01 \ /f=00:00:09 \ /q \ /deb=0 \ /dbuniint=0x0008 \ $LOG 2>&1 & echo “ … started” exit #------------------------------------------------------------------# End #------------------------------------------------------------------- ABB IMS/AEH Advant Station Interface to the PI System 59 59 Startup Command File Sample abbimspi.bat Files for NT On Demand The following is an example file for an ‘On Demand’ interface: rem rem Startup file for the ABB IMS/AEH Advant Interface to PI rem The ^ marks are continuation characters, they allow rem you to have a command be split between multiple lines. Rem There must not be ANYTHING after the ^ on each line. Rem There must not be ANY ‘rem’ comment line between command lines. Rem This is only a sample of the options available, the user rem manual has the list and descriptions for them all. Rem rem /host=host PI Home node rem /ps=x Point source rem /f=hh:mm:ss scan frequency rem /in=x Interface Number rem /id=x Interface identifier, should be same as for /in rem /deb=x Interface-specific debug level rem /tm=[C|D|E] Transfer Method (Cyclic, Demand, Event) rem /du=x Duration. Only for event and cyclic method rem /ct=x Cycle Time.Only applicable with /tm=C rem /timsrc=x Source of time stamps rem /pisdk=x Enable or disable the PI-SDK rem /q Use queued PI-API functions rem /nooutputs Outputs disabled rem /startup_delay=x Number of seconds the Interface delays right after start rem /stopstat=x shutdown digital state rem /ec=x Event counter rem /sio suppress initial outputs rem /dbuniint=x Uniint debug level, 0x0008 recommended rem abbimspi ^ /host=mypi3server:5450 ^ /in=3 ^ /id=3 ^ /tm=D ^ /ps=A ^ /ec=23 ^ /f=00:00:01 ^ /f=00:00:09 ^ /f=00:00:15 ^ /deb=0 ^ /stopstat ^ /dbuniint=0x0008 On Event The following is an example file for an ‘On Event’ interface: rem rem rem rem Rem Rem Rem rem Rem rem rem rem rem rem rem rem rem rem 60 60 Startup file for the ABB IMS/AEH Advant Interface to PI The ^ marks are continuation characters, they allow you to have a command be split between multiple lines. There must not be ANYTHING after the ^ on each line. There must not be ANY ‘rem’ comment line between command lines. This is only a sample of the options available, the user manual has the list and descriptions for them all. /host=host /ps=x /f=hh:mm:ss /in=x /id=x /deb=x /tm=[C|D|E] /du=x /ct=x PI Home node Point source scan frequency Interface Number Interface identifier, should be same as for /in Interface-specific debug level Transfer Method (Cyclic, Demand, Event) Duration. Only for event and cyclic method Cycle Time.Only applicable with /tm=C rem /timsrc=x rem /pisdk=x rem /q rem /nooutputs rem /startup_delay=x rem /stopstat=x rem /ec=x rem /sio rem /dbuniint=x rem abbimspi ^ /host=mypi3server:5450 /in=1 ^ /id=1 ^ /tm=E ^ /ps=A ^ /ec=25 ^ /f=00 :00 :01 ^ /deb=0 ^ /du=120 ^ /stopstat ^ /dbuniint=0x0008 Source of time stamps Enable or disable the PI-SDK Use queued PI-API functions Outputs disabled Number of seconds the Interface delays right after start shutdown digital state Event counter suppress initial outputs Uniint debug level, 0x0008 recommended ^ Cyclic The following is an example file for a ‘Cyclic’ interface: rem rem Startup file for the ABB IMS/AEH Advant Interface to PI rem The ^ marks are continuation characters, they allow rem you to have a command be split between multiple lines. Rem There must not be ANYTHING after the ^ on each line. Rem There must not be ANY ‘rem’ comment line between command lines. Rem This is only a sample of the options available, the user rem manual has the list and descriptions for them all. Rem rem /host=host PI Home node rem /ps=x Point source rem /f=hh:mm:ss scan frequency rem /in=x Interface Number rem /id=x Interface identifier, should be same as for /in rem /deb=x Interface-specific debug level rem /tm=[C|D|E] Transfer Method (Cyclic, Demand, Event) rem /du=x Duration. Only for event and cyclic method rem /ct=x Cycle Time.Only applicable with /tm=C rem /timsrc=x Source of time stamps rem /pisdk=x Enable or disable the PI-SDK rem /q Use queued PI-API functions rem /nooutputs Outputs disabled rem /startup_delay=x Number of seconds the Interface delays right after start rem /stopstat=x shutdown digital state rem /ec=x Event counter rem /sio suppress initial outputs rem /dbuniint=x Uniint debug level, 0x0008 recommended rem abbimspi ^ /host=mypi3server:5450 ^ /in=2 ^ /id=2 ^ /tm=C ^ /ps=A ^ /ec=24 ^ /f=00 :00 :01 ^ /f=00 :00 :09 ^ /deb=0 ^ /du=120 ^ /stopstat ^ /dbuniint=0x0008 ABB IMS/AEH Advant Station Interface to the PI System 61 61 Interface Node Clock NT The correct settings for the time and time zone should be set in the Date/Time control panel. If local time participates in Daylight Savings, from the control panel, configure the time to be automatically adjusted for Daylight Savings Time. The correct local settings should be used even if the interface node runs in a different time zone than the PI Server node. Make sure that the TZ environment variable is not defined. The currently defined environment variables can be listed by going to Start | Settings | Control Panel, double clicking on the system icon, and selecting the environment tab on the resulting dialog box. Also, make sure that the TZ variable is not defined in an autoexec.bat file. When the TZ variable is defined in an autoexec.bat file, the TZ variable may not appear as being defined in the System control panel even though the variable is defined. Admittedly, autoexec.bat files are not typically used on NT, but this does not prevent a rogue user from creating such a file and defining the TZ variable unbeknownst to the System Administrator. What if the NT Interface Node does not observe DST? If the Interface Node does not observe DST despite local time participating in Daylight Savings, then local time of the NT box will be one hour off during summer time. If this is the case, working with the default setting /timsrc=A will produce wrong time stamps during the DST period. The solution is to use /timsrc=P instead (and also /pisdk=1), which will force the interface to use PI Server Time based on UTC, regardless of local time on the AEH. See the description of /timsrc in the chapter “Command-Line Parameters”. See the also chapter “Timestamps” for more information. HP-UX The correct time and time zone must be configured on the interface node. Also, the interface node should be configured to automatically adjust for daylight savings time for locations that use daylight savings time. The correct local settings should be used even if the interface node runs in a different time zone than the PI Server node. What if the HP-UX Interface Node does not observe DST? This not supported. ABB IMS/AEH Advant Station Interface to the PI System 63 63 Security If the home node is a PI 3 Server, the PI Firewall Table and the PI Proxy Table must be configured so that the interface is allowed to write data to the PI Data Archive. See “Modifying the Firewall Database” and “Modifying the Proxy Database” in the PI Data Archive Manual. Note that starting with PI 3.3, the PI Trust Table has replaced the PI Proxy Table. If the home node is a PI 2 Server, the read/write permissions should be set appropriately in the pisysdat:piserver.dat file on the PI 2 home node. For more information on setting permissions on PI 2, see the pibuild:piserver.txt file on the PI 2 home node. If the interface cannot write data to a PI 3 Server because it has insufficient privileges, a –10401 error will be reported in the pipc.log file. If the interface cannot send data to a PI2 Server, it writes a –999 error. See the section “Appendix A: Error and Informational Messages” for additional information on error messaging. ABB IMS/AEH Advant Station Interface to the PI System 65 65 Starting / Stopping the PI-ABB Advant Interface on NT This section describes starting and stopping the PI-ABB Advant Interface once it has been installed as a service. See the UniInt End User Document to run the interface interactively. Starting Interface as a Service If the interface was installed a service, it can be started from the services control panel or with the command: abbimspi.exe –start A message will be echoed to the screen informing the user whether or not the interface has been successfully started as a service. Even if the message indicates that the service started successfully, make sure that the service is still running by checking in the services control panel. There are several reasons that a service may immediately terminate after startup. One is that the service may not be able to find the command-line arguments in the associated .bat file. For this to succeed, the root name of the .bat file and the .exe file must be the same, and the .bat file and the .exe file must be in the same directory. If the service terminates prematurely for whatever reason, no error messages will be echoed to the screen. The user must consult the pipc.log file for error messages. See the section “Appendix A: Error and Informational Messages” on page 77, for additional information. Stopping Interface Running as a Service If the interface was installed a service, it can be stopped at any time from the services control panel or with the command: abbimspi.exe –stop The service can be removed by: abbimspi.exe –remove ABB IMS/AEH Advant Station Interface to the PI System 67 67 Starting / Stopping the PI-ABB Advant Interface on UNIX Starting Background Processes To start an interface on Unix, simply execute the script file supplied with the interface kit, after you adjusted it according to your needs. You must be ocsmgr. Example: $ cd $PIHOME/$ABBIMSPI/bin $ start_demand_interface This will start the PI-ABB Advant Interface as a background process. See the UniInt End User Document to run the interface as a foreground process. Terminating Background Processes First, obtain the process id (pid) of the background job. This is done as follows. First execute the command: ps –ef | grep abbimspi which produces output similar to: ocsmgr 12788 12707 2 09:55:27 ttys1 0:00 abbimspi /ps=A … The second column is the pid of the process. That is, 12788 is the pid of the abbimspi interface in the example above. The process is then stopped by: kill 12788 Make sure you are picking up the right number as there may be multiple ‘abbimspi’ processes on your machine. The kill command (without an argument) will send the SIGTERM signal (signal 15) to the process. The interface will handle this signal properly. All necessary operations such as deleting requests or canceling subscriptions for cyclic and on-event transfer, giving a Digital State to all tags, according to the /stopstat startup parameter etc. are performed. There is an overall interface shutdown procedure ifstop, which is part of the interface kit. Execute $PIHOME/$ABBIMSPI/bin/ifstop to terminate all PI PI-ABB Advant Interface processes. Note: Do not terminate interface processes via kill –9 unless there is a serious reason for this. A program cannot catch signal 9, as opposed to other signals. Thus, kill –9 will abort the process, not giving the interface any chance to exit gracefully. As a result of this, you will have an interface log file with the last lines missing because the remaining log information will not be flushed to disk. If the log file was at a size of zero bytes before you killed the interface via kill –9, you will end up not having any interface log information at all. Furthermore, after kill –9, tags will not receive the Digital State ABB IMS/AEH Advant Station Interface to the PI System 69 69 Starting / Stopping the Interface on UNIX passed to the interface via /stopstat, thus the indication in the PI archive, that the interface was stopped will be missing. Another reason for not using kill –9 is that the necessary cleanups towards the AdvaInform UserAPI and the ABB Object Management Facility (OMF) will not be performed, which should be avoided. However, if there is no other way of terminating the interface, go ahead and use kill –9. You can also use the Interface Control Program abbimscp with the command ‘q’ to stop a distinct interface instance. See Appendix C: Interface Control Program – HP-UX Only for details. Recommendation: Use the startup parameter /dbuniint=0x0008 to record the interface termination signal in the log file. Anomalous Background Job Termination On some platforms, processes that are started in the background will be terminated if one types “control-c” in the same window that the job was started in. If one closes the window in which the interface was started or if one logs off and logs back on, the user will not be able to accidentally terminate the job in this manner. 70 70 Buffering For complete information on buffering, please refer to the Uniint End User. PI Interface Node buffering consists of a buffering process which runs continuously on the local node, a PI-API library whose calls can send data to this buffering process, and a utility program for examining the state of buffering and controlling the buffering process. Note: Change the Local Security Policy on Windows XP. 1. Open “Administrative Tools” from the control panel. 2. Open “Local Security Policy” from administrative tools. 3. Browse to “Security Options” under “Local Policies.” 4. Double click on “System Objects: Default owner for objects created by members of the Administrators group.” 5. Change the dropdown from “Object Creator” to “Administrators group.” The behavior of Bufserv should now be the same on XP as it was for NT4 and 2000. Configuring Buffering with PI-ICU (NT-Intel) Buffering is enabled through the PI-Interface Configuration Utility’s Tools>API Buffering… menu. Unless buffering is explicitly enabled, the PI-API will not buffer data, sending data directly to the home node. The API Buffering… dialog allows the user to view and configure the parameters associated with the API Buffering (bufserv) process. The user can start and stop the API Buffering process from the Service tab: Service Tab The Service tab allows for some API Buffering service configuration. For further configuration changes, use the Services applet. ABB IMS/AEH Advant Station Interface to the PI System 71 71 Buffering Service Name The Service name displays the name of the API Buffering Service. Display Name The Display name displays the full name associated with the API Buffering service. Log On As Log on as indicates the Windows user account under which the API Buffering service is setup to start automatically on reboot, or manually. To modify the user account or password under which bufserv runs, use the Microsoft Windows “Services” applet. Dependencies The Dependencies lists the Windows services on which the API Buffering service is dependent. Service Startup Type The Startup Type indicates whether the API Buffering service is setup to start automatically on reboot or manually on reboot, or is disabled. If the Auto option is selected, the service will be installed to start automatically when the machine reboots. If the Manual option is selected, the interface service will not start on reboot, but will require someone to manually start the service. If the Disabled option is selected, the service will not start at all. Generally, the API Buffering service is set to start automatically. Start / Stop Service The Start / Stop buttons allow for the API Buffering service to be started and stopped. After a change is made to any of the settings on the Settings tab, the Save button must be clicked, and then the service must be stopped and restarted for the changes to be picked up by bufserv. Settings Tab The Settings tab allows for configuration of the 7 configurable settings used by API Buffering. Default values are used if no other value is provided. 72 72 Enable API Buffering Enables the API Buffering feature. Maximum File Size Maximum buffer file size in kilobytes before buffering fails and discards events. Default value is 100,000. Range is 1 to 2,000,000. The Use Default button places the default value into the text box. To keep this value, click the Apply button. Send Rate Send rate is the time to wait between sending up to MAXTRANSFEROBJS to the server (milliseconds). Default value is 100. Range is 0 to 2,000,000. The Use Default button places the default value into the text box. To keep this value, click the Apply button. Primary Memory Buffer Size Primary memory buffer size is the size in bytes of the Primary memory buffer. Default value is 32768. Range is 64 to 2,000,000. The Use Default button places the default value into the text box. To keep this value, click the Apply button. Secondary Memory Buffer Size Secondary memory buffer size is the size in bytes of the Secondary memory buffer. Default value is 32768. Range is 64 to 2,000,000. The Use Default button places the default value into the text box. To keep this value, click the Apply button. ABB IMS/AEH Advant Station Interface to the PI System 73 73 Buffering Max Transfer Objects Max transfer objects is the maximum number of events to send between each SENDRATE pause. Default value is 500. Range is 1 to 2,000,000. The Use Default button places the default value into the text box. To keep this value, click the Apply button. Pause Rate When buffers are empty the buffering process will wait for this number of seconds before attempting to send more data to the home node. Default value is 2. Range is 0 to 2,000,000. The Use Default button places the default value into the text box. To keep this value, click the Apply button. Retry Rate When the buffering process discovers the home node is unavailable it will wait this number of seconds before attempting to reconnect. Default value is 120. Range is 0 to 2,000,000. The Use Default button places the default value into the text box. To keep this value, click the Apply button. Max Theoretical Send Rate This is the theoretical max send rate is calculated like this: max = MAXTRANSFEROBJS / SENDRATE * 1000 Default value is 5000. There are no additional steps needed to install buffering after installing the PI-API. The delivered PI-API library supports both buffered and un-buffered calls. Configuring Buffering Manually Buffering is enabled through the use of a configuration file, piclient.ini. Unless this file is modified to explicitly enable buffering, the PI-API will not buffer data, sending data directly to the home node. There are no additional steps needed to install buffering after installing the PI-API. The delivered PI-API library supports both buffered and un-buffered calls. Note: When buffering is configured to be on, the bufserv process must be started before other programs using the PI-API, so that these programs can access the shared buffering resources. Any program that makes a connection to a PI Server has this requirement even if it does not write to PI. Configuration of buffering is achieved through entries in the piclient.ini file. The file is found in the dat subdirectory of the PIHOME directory (typically c:\pipc\dat) under Windows NT. On UNIX systems, the file is found in the dat subdirectory of the PIHOME directory (e.g., /opt/piapi/dat). This file follows the conventions of Microsoft Windows initialization files with sections, keywords within sections, and values for keywords. All buffering settings are entered in a section called [APIBUFFER]. To modify settings, simply edit the piclient.ini file in a text editor (Notepad on Windows, vi on UNIX) to the desired values. 74 74 The following settings are available for buffering configuration: Keywords Values Default Description BUFFERING 0,1 0 Turn off/on buffering. OFF = 0, ON = 1, PAUSERATE 0 – 2,000,000 2 When buffers are empty the buffering process will wait for this long before attempting to send more data to the home node (seconds) RETRYRATE 0 – 2,000,000 120 When the buffering process discovers the home node is unavailable it will wait this long before attempting to reconnect (seconds) MAXFILESIZE 1 – 2,000,000 100,000 Maximum buffer file size before buffering fails and discards events. (Kbytes) MAXTRANSFEROBJS 1 – 2,000,000 500 Maximum number of events to send between each SENDRATE pause. BUF1SIZE 64 – 2,000,000 32768 Primary memory buffer size. (Bytes) BUF2SIZE 64 – 2,000,000 32768 Secondary memory buffer size. (Bytes) SENDRATE 0 – 2,000,000 100 The time to wait between sending up to MAXTRANSFEROBJS to the server (milliseconds) In addition to the [APIBUFFER] section, the [PISERVER] section may be used to define the default PI server and an optional time offset change that may occur between the client and server. Keywords Values Default Description PIHOMENODE string none Default server for UNIX. Windows default server is in pilogin.ini DSTMISMATCH 0 – 2,000,000 0 The time that the server and client local time offset is allowed to jump. Typically, 3600 if the nodes are in time zones whose DST rules differ (seconds) Example piclient.ini File NT On Windows NT the default server information is stored in the pilogin.ini file so the piclient.ini would only have the [APIBUFFER] section. The BUFFERING=1 indicates that buffering is on. The MAXFILESIZE entry in Kbytes of 100000 allows up to 100 Megabytes of data storage. Do not use commas or other separators in the numeric entries. The retry rate is set to 600 seconds meaning wait 10 minutes after losing a connection before retrying. On NT a piclient.ini file might look like: [APIBUFFER] BUFFERING=1 MAXFILESIZE=100000 ; The PI-API connection routines have a 1 minute default timeout. RETRYRATE=600 ABB IMS/AEH Advant Station Interface to the PI System 75 75 Buffering HP-UX The BUFFERING=1 indicates that buffering is on. The MAXFILESIZE entry in Kbytes of 100000 allows up to 100 Megabytes of data storage. Do not use commas or other separators in the numeric entries. The retry rate is set to 600 seconds meaning wait 10 minutes after losing a connection before retrying. The [PISERVER] and [TCP/IP] sections are used to define the default connection. Comment lines begin with a semicolon. On HP-UX a piclient.ini file might look like: [PISERVER]PIHOMENODE=MYNTSERVER ; DSTMISMATCH=0 [TCP/IP] PORT=5450 [APIBUFFER] BUFFERING=1 MAXFILESIZE=100000 ; The PI-API connection routines have a 1 minute default timeout. RETRYRATE=600 Note for DSTMISMATCH on NT On Windows platforms, all DSTMISMATCH entries go into PILOGIN.INI file – NONE go into piclient.ini. On Windows platforms, DSTMISMATCH looks like this in PILOGIN.INI: [Defaults] PIServer=arwen HELPFILE=C:\pipc\LIBRARY\PILOGIN.HLP PI3USER=piadmin PI2USER=piadmin PI1USER=piadmin DSTMISMATCH1=3600 DSTMISMATCH2=3600 DSTMISMATCH3=3600 [PINODEIDENTIFIERS] PI3=arwen,8164,5450 PI2=trinity,6249,5450 PI1=strider,62085,5450 [Services] PI1=PI [NETWORK] Timeout=60 76 76 Appendix A: Error and Informational Messages A string NameID is pre-pended to error messages written to the message log. Name is a non-configurable identifier that is no longer than 9 characters. ID is a configurable identifier that is no longer than 9 characters and is specified using the /id flag on the startup command line. Message Logs The location of the message log depends upon the platform on which the interface is running. See the UniInt End User Document for more information. Messages are written to PIHOME\dat\pipc.log at the following times. When the interface starts many informational messages are written to the log. These include the version of the interface, the version of UniInt, the command-line parameters used, and the number of points. As the interface retrieves points, messages are sent to the log if there are any problems with the configuration of the points. If the /dbuniint=level is used on the command line, then various informational messages are written to the log file. Log Files Interface Output File on HP-UX The interface output file (also called the interface log file), is located in the $PIHOME/$ABBIMSPI/log directory. All fatal error messages are copied to this file. The interface also copies startup, shutdown and debug information to this file. Note that each interface instance must have its own log file. In the startup template files the interface output file appears after the “>” character. The following example start_demand_interface specifies abbimspi_demand.log as the interface output file. If a log file with the same name is found on interface start, it will be renamed to abbimspi_demand.log.old. #!/bin/ksh #----------------------------------------------------------------# Startup of ABB IMS Advant Station to PI interface # Date: 28-Apr-1998 #----------------------------------------------------------------# echo “Starting up ABB IMS Advant Station to PI interface 3 (on DEMAND: scan classes >= 3)” DIR=”$PIHOME/$ABBIMSPI” LOG=”$DIR/log/abbimspi_demand.log” if [ -r $LOG ]; then mv $LOG $LOG.old fi nohup $DIR/bin/abbimspi /nn=roc174:5450 \ /in=3 \ ABB IMS/AEH Advant Station Interface to the PI System 77 77 Appendix A: Error and Informational Messages /id=3 /tm=D /ps=A /ec=23 /f=00:00:01 /f=00:00:09 /f=00:00:15 /f=00:01:00 /f=00:05:00 /f=00:10:00 /f=00:15:00 /try=60 /q /deb=0 \ \ \ \ \ \ \ \ \ \ \ \ \ \ $LOG 2>&1 & echo “ ... started” exit #----------------------------------------------------------------# End #--------------------------------------------------------------- pimesslogfile on HP-UX The PI message log, pimesslogfile, is located in $PIHOME/dat. The interface puts its error and information messages into this file except for messages from fatal errors that prevented the interface from starting up. Messages to pimesslogfile are flushed to disk more often than to the interface log file. While every interface copy has its own output file, $PIHOME/dat/pimesslogfile contains messages from all interfaces and the PI-API processes. That’s why you should use the /in=… and /id=… startup parameters with care. If there is a problem with a specific interface instance while other copies are running well, it is important to tell which one caused a message in pimesslogfile. Messages on NT Error and informational messages are written to the pipc.log file. The location of the pipc.log file is determined by the PIHOME entry in the pipc.ini file. The pipc.ini file should always be in the WinNT directory. For example, if the PIHOME entry is C:\PIPC then the pipc.log file will be located in the c:\PIPC\dat directory. For version 1.3 and greater of the PI-API, a process called pilogsrv may be installed to run as a service. After the pipc.log file exceeds a user-defined maximum size, the pilogsrvprocess renames the pipc.log file to pipcxxxx.log , where xxxx ranges from 0000 to the maximum number of allowed log files. Both the maximum file size and the maximum number of allowed log files are configured in the pipc.ini file. Configuration of the pilogsrvprocess is discussed in detail in the PI-API Installation Instructions manual. Translation of Error Codes The PI-ABB Advant Interface makes calls to AdvaInform UserAPI functions. Depending on the function, different kinds of statuses are returned, such as statuses from calls to the AdvaInform UserAPI (one status per call), object related statuses (one status per object, up to 500 statuses per call), or statuses from operations. The interface usually translates these return codes into a short text, giving the user an idea about current interface 78 78 operation. While successful operations will not be mentioned in the log files (except when the interface is in a debug level >0), warnings and errors will always appear, along with the return status. Here is an example for a warning message. The short explanation for status –114 is in parentheses: Thu Jul 9 09:59:54 1998 ABBIMSPI-3-dev_service_input_list> Warning: Bad object status in read on demand: PI-Tag: 321PDIC151A., Object: 321PDIC151A.PTA, Status: -114 (bciOBJ_NODE_DOWN – Object’s node not reachable) Here is an example for a success message. This information can only be seen in the log file if the PI-ABB Advant Interface is running in debug level 4 or higher: Thu Jul 9 12:10:13 1998 ABBIMSPI-3 Debug4> bciDoRequest, Status: 1 (bciSUCCESS – Service successfully completed) However, it may happen that output looks like this: Thu Apr 9 06:35:57 1998 ABBIMSPI-1 Debug4> bciDoRequest, Status: 1 (MessageID: 13, 10, 129) In this case, there is a problem executing the AdvaInform UserAPI function bciGetMessageText on your machine. Please check with your local ABB engineer, whether translating the status codes is possible in your environment. However, even then, there is still a chance to get status codes explained. The file /opt/advant/UserAPI/include/bciUserAPI.h contains a list of all AdvaInform UserAPI and object statuses. Specific AdvaInform UserAPI Errors and other problems Status: 3 (bciEMPTY – No more waiting events/data) An error resembling the one below may be seen in your log file: ABBIMSPI-4-dev_service_input_list> Warning: Error in bciDoRequest, scanclass: 8, status: 3 (bciEMPTY – No more waiting events/data), writing ‘DCS failed’ to all tags If this happens, please check whether appropriate IMS/AEH patches have been installed. HP-UX The patch concerning the “Node Down” problem is also of importance for this one. For AdvaInform 2.0 request patch: For Enterprise Historian 2.0 for HP-UX request patch: ABB IMS/AEH Advant Station Interface to the PI System ABB-AI-USERAPI_PATCH_1 ABB-AI-USERAPI_PATCH_1 79 79 Appendix A: Error and Informational Messages NT The patch concerning the “Node Down” problem is also of importance for this one. For Enterprise Historian 3.0 for Windows NT request patch: ABB-PAPI_130001 In addition, the following patch specifically deals with bciEMPTY: InformIT Enterprise Historian™ Versions 3.0, 3.1 & 3.2/0 User API Patch For Enterprise Historian Version 3.0 or 3.1 For Enterprise Historian Version 3.2: ABB EH3.0/EH3.1 User API HotFix ABB EH3.2.0 B9 User API HotFix The patch is documented in ABB’s Release Notes Document 3BUF 001 017 D1 (3buf001017d1.pdf). PI-ABB Advant Interface Allegedly Supplies Wrong Values If the object attribute values in the DCS appear to be different from the values of the PI tags pointing to those object attributes (via InstrumentTag/ExDesc), the reason can be that objects have been moved in the DCS. Objects typically do not move to another place on the fly. If objects move, then someone is reconfiguring the system. An object moves when it is deleted from one node and re-created in another node. For example, if object 1 exists in node A and is moved to node B, all applications referencing the object when it was in node A only know about the object via its “node A object reference”. For applications to locate object 1 in its new location – node B, the application node (the Advant Station) must be told to delete its old reference to object 1 and retranslate the reference. One way of doing this on a Master IMS/AEH 2.x node is to execute the Object Reference Maintenance Tool located on the IMS main menu under “Station”. An object’s reference is held by the IMS Core system so that any applications accessing this object use this same reference (internal instance identifier). This applies to both a MOD 300 IMS and a Master IMS. For Master, the IMS Core system must be told to retranslate an object that has been deleted in one node and re-created in another node. This can be done using the Object Reference Maintenance Tool when on a Master IMS. For MOD 300, the internal object instance identifiers are removed each time the IMS software is stopped and then re-started. This does not happen on a Master IMS because retranslating objects can take a significant amount of time so a file holding the internal object instance identifiers is maintained during IMS shutdowns and restarts. The PI-ABB Advant Interface cannot force an object re-translation. For ABB Master, retranslation must be done as part of the system reconfiguration procedure when objects are moved in the system. For MOD 300, a restart of the IMS software is required. After any objects are moved and their object references re-translated, any applications referencing these objects must be re-started. Summary of Statuses and Error Codes Statuses are listed/documented in Appendix A of the AdvaInform User API User’s Guide. AdvaInform UserAPI Statuses /* // IMS User API – object access services – API status definition */ /* // Status for specific API interface call */ 80 80 /* Start of codes that marks error */ bciFIRST_ERROR = -128, /* First code that marks error */ bciNOT_SUPPORTED = -127, /* API internal */ bciTIMEOUT = -126, /* Communication service timeout */ bciVERSION = -125, /* API internal */ bciALLOCATION = -124, /* Could not allocate resource */ bciREFERENCE = -123, /* API internal */ bciILLEGAL_NAME = -122, /* A specified symbol uses illegal characters */ bciILLEGAL_MONITOR = -121, /* API internal */ bciILLEGAL_UAC = -120, /* Illegal UAC in UAF */ bciINCONSISTENCY = -119, /* API internal */ bciALREADY_DEFINED = -118, /* API internal */ bciIN_USE = -117, /* Busy in access service or association */ bciTYPE = -116, /* API internal */ bciNO_RESOURCE = -115, /* API internal */ bciNO_SYNCH = -114, /* Could not create synch file or event flag */ bciSYNTAX_ERROR = -113, /* API internal */ bciNO_PRIVILEGE = -112, /* API internal */ bciLENGTH_REJECTED = -111, /* Unable to create wanted queue size */ bciWRONG_NODE = -110, /* API internal */ bciWRONG_DOMAIN = -109, /* API internal */ bciMOVED = -108, /* Name Server error: Object moved */ bciRENAMED = -107, /* Name Server error: Object removed */ bciNOT_FOUND = -106, /* Name Server error: Object not found */ bciABORT = -105, /* Server aborted object request */ bciFAILURE = -104, /* Object or its methods failed */ bciINACTIVE = -103, /* Server object not active */ bciNOT_IMPLEMENTED = -102, /* Objects service or method not impl */ bciMISSING = -101, /* Not all methods are supplied */ bciNO_MATCHING_CAP = -100, /* API internal */ bciCAP_IN_USE = -99, /* API internal */ bciNO_ASSOCIATION = -98, /* No association exists */ bciFOUND_OUTSIDE_SCOPE = -97, /* API internal */ bciALREADY_REGISTERED = -96, /* API internal */ bciNO_TRANSLATION = -95, /* Could not translate name to identifier */ bciNOT_DEFINED = -94, /* API internal */ bciARRAY_BOUNDS = -93, /* Max_is is lesser than last_is in open array */ bciNOT_EXISTING = -92, /* No such user exists */ bciNOT_OPEN = -91, /* OMF could not be opened */ bciCOMM_FAIL = -90, /* Communication failure */ bciNAME = -89, /* Name Server error: object type OK, Name error */ bciALREADY_IN_TYPED_VIEW = -88, /* API internal */ bciENTRY_DELETED = -87, /* API internal */ bciMONITOR_IN_USE = -86, /* API internal */ bciNO_SERVICE = -85, /* API internal */ bciERRONEOUS_CAPS = -84, /* API internal */ /* Start of codes that marks API interface specific errors */ bciAPI_FIRST_ERROR = -20, /* First User API specific error code */ bciAPI_RESOURCE_LACK bciAPI_EXE_FAILED bciAPI_ERR_EVSIZE bciAPI_ERR_OPSIZE bciAPI_ERR_VALSIZE bciAPI_ERR_EVENT bciAPI_ERR_OPER bciAPI_ERR_ATTRIB bciAPI_ERR_TIMEOUT = = = = = = = = = -18, -17, -16, -15, -14, -13, -12, -11, -10, /* /* /* /* /* /* /* /* /* Lack of resources (memory) */ Operation could not be executed */ Error in eventSize specification */ Error in operSize specification */ Error in valueSize specification */ Error in event specification */ Error in operation specification */ Error in attribute specification */ Time-Out out of range */ /* End of codes that marks API interface specific errors */ bciAPI_LAST_ERROR = -1, /* Last User API specific error code */ /* End of codes that marks error */ bciLAST_ERROR = -1, /* Last code that marks an error */ bciPENDING = 0, /* Complete service result not available */ ABB IMS/AEH Advant Station Interface to the PI System 81 81 Appendix A: Error and Informational Messages /* Start of codes that marks success */ bciFIRST_SUCCESS = 1, /* First code that marks success */ bciSUCCESS = 1, /* Service was successfully completed */ bciMORE bciEMPTY bciNO_SPACE bciUNRESOLVED bciALREADY_OPEN bciINTERRUPT bciSERVER_RESTARTED = = = = = = = 2, 3, 4, 5, 6, 7, 8, /* /* /* /* /* /* /* More events/data queued */ No more waiting events/data */ Not enough space in receiving array */ View is unresolved */ OMF already opened */ System call made by OMF was interrupted */ An OMF server node has restarted */ /* End of codes that marks success */ bciLAST_SUCCESS = 127 /* Last code that marks success */ Object Access Statuses /* // IMS User API – object access services – object access status definition */ /* // Status for object access */ bciOBJ_FIRST bciOBJ_NO_CODE = -128, /* beginning of codes */ = -127, /* Codes originating in user application (client) side of OMF */ bciCAP_INCONSISTENCY = -120, /* capability is not in a consistent state */ bciCAP_ARRAY_BOUNDS = -119, /* mismatch in open array bounds */ bciCAP_UNION_TAG = -118, /* Invalid tag or union */ bciOBJ_NOT_RESOLVED = -117, /* object could not be resolved */ bciOBJ_UNREGISTERED = -116, /* object not registered */ bciOBJ_OBJECT_MOVED = -115, /* object moved */ bciOBJ_NODE_DOWN = -114, /* object’s node not reachable */ bciOBJ_NODE_UP = -113, /* object’s node now reachable again */ bciOBJ_REQUEST_TIMEOUT = -112, /* communication timeout */ bciOBJ_TIMEOUT = -111, /* cyclic timeout */ bciOBJ_COMM_FAIL = -110, /* communication failure */ bciOBJ_RESTARTED = -109, /* OMF has restarted */ bciOBJ_PENDING = -108, /* communication failure */ bciOBJ_PING_TIMEOUT = -107, /* ping request has timed out */ /* Codes originating in object’s (server) side of OMF */ bciOBJ_NOT_IMPLEMENTED = -96, /* server method not implemented */ bciOBJ_NOT_DEFINED = -95, /* server class not defined */ bciOBJ_NOT_REGISTERED = -94, /* object not registered */ bciOBJ_MOVED = -93, /* object moved */ bciOBJ_SERVER_ABORT = -92, /* object’s process has aborted */ bciOBJ_SERVER_EXIT = -91, /* object’s process has made an exit */ bciOBJ_NOT_ACTIVE = -90, /* object not in active group */ bciOBJ_NOT_BOUND = -89, /* object not bound to server */ bciOBJ_INCONSISTENCY = -88, /* capability is not in a consistent state */ bciOBJ_SERVER_FULL = -87, /* server monitor full */ bciOBJ_SERVER_RESOURCE = -86, /* there are no more server resources, to many associations */ bciOBJ_SERVER_ARRAY_BOUNDS = -85, /* */ bciOBJ_CONTROL_LAST = -65, /* last control event */ /* Codes from server object, indicating method was invoked but failed: */ bciOBJ_FAILURE bciOBJ_PARAMETER bciOBJ_PERMISSION 82 82 = -64, /* generic method failure */ = -63, /* parameter error in operation */ = -62, /* user not permitted to access element */ bciOBJ_STATUS1 bciOBJ_STATUS2 bciOBJ_STATUS3 bciOBJ_STATUS4 bciOBJ_STATUS5 bciOBJ_STATUS6 bciOBJ_STATUS7 bciOBJ_STATUS8 bciOBJ_STATUS9 bciOBJ_STATUS10 bciOBJ_STATUS11 bciOBJ_STATUS12 bciOBJ_STATUS13 bciOBJ_STATUS14 bciOBJ_STATUS15 bciOBJ_STATUS16 bciOBJ_STATUS17 bciOBJ_STATUS18 bciOBJ_STATUS19 bciOBJ_STATUS20 bciOBJ_STATUS21 bciOBJ_STATUS22 bciOBJ_STATUS23 bciOBJ_STATUS24 bciOBJ_STATUS25 bciOBJ_STATUS26 bciOBJ_STATUS27 bciOBJ_STATUS28 bciOBJ_STATUS29 bciOBJ_STATUS30 bciOBJ_STATUS31 bciOBJ_STATUS32 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -61, /* errors defined by object type: */ -60, -59, -58, -57, -56, -55, -54, -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, /* Codes not passed to client: */ bciOBJ_ABORT = -1, /* Codes indicating object accessed successfully: */ bciOBJ_SUCCESS = 1, /* successful access of object */ bciOBJ_LAST = 127 /* last capability status code */ System Errors and PI Errors System errors are associated with positive error numbers. Errors related to PI are associated with negative error numbers. Error Descriptions on NT and Unix If your PI Server is a PI3 system, you can use the pidiag utility on the PI Server machine to obtain error descriptions. (The paths below are examples and may be different in your system) On an NT/Windows 2000 PI Server: \PI\adm\pidiag –e error_number On a Unix PI Server: /opt/PI/adm/pidiag –e error_number ABB IMS/AEH Advant Station Interface to the PI System 83 83 Appendix B: Hints for PI System Manager Automatic Interface Start on HP-UX System Startup via ABB’s Process Supervision It is essential to start PI-ABB Advant Interface processes only after a complete successful startup of the IMS software. Starting a PI-ABB Advant Interface before the ABB processes are up may cause interface termination by signal 6. ABB provides a way to ensure the right process starting sequence at system startup. Perform the following steps, using the Operator’s Console of the IMS Advant Station: 1. Log in as ocsmgr 2. Make sure the ABB icon on the bottom of your screen is not dimmed 3. Click on the ABB icon 4. Choose Settings from the menu 5. Choose Process Supervision 6. Fill in the mask that appears on the screen: Program ID ABBIMSPI Startup Order 10000 Description ABB IMS Advant Station to PI Interface FilePath opt/piapi/abbimspi/bin/StartPIAPIOnBoot <= enter your path here! Button implemented must appear as pressed down. 7. Click on Commit 8. Click on Exit 9. Click on Yes to answer the Alert question !Do you want to save the changes you have made? 10. Click on OK to acknowledge the message FRM-40400:Transaction complete -- 1 records applied and saved 11. From the File menu, choose Exit 12. Log out The interface kit contains a template script StartPIAPIOnBoot that starts the PI-API (it runs pistart) on system startup. $PIHOME/bin/pistart calls $PIHOME/bin/sitestart in which you place the interface startup commands (see below). Put the required definitions of the Unix environment variables hard coded into ABB IMS/AEH Advant Station Interface to the PI System 85 85 Appendix B: Hints for PI System Manager StartPIAPIOnBoot. It may then look like this: #!/bin/ksh sleep 120 PIHOME=/opt/piapi SHLIB_PATH=$PIHOME/lib:$SHLIB_PATH ABBIMSPI=abbimspi export PIHOME SHLIB_PATH ABBIMSPI nohup sh $PIHOME/bin/pistart function cleanup { echo “Got signal 15, exiting” $PIHOME/bin/pistop echo “Finished” exit 0 } trap cleanup 15 while [ true ]; do sleep 5 done Please, do not forget to re-modify this file in the unlikely case that the location of your PI-API changes. Note that the script contains a 2 minutes sleep at the beginning that should not be removed. Even if hooked up to ABB Process Supervision, sometimes PI-API startup problems after reboot were seen. Those could be remedied by waiting two more minutes after Process Supervision had given the ok to start the application. Graceful Interface Stop on System Shutdown Process Supervision also takes care on graceful interface stop when the system shuts down. The Process Supervision component of the Enterprise Historian software has functions that will both start an application on IMSstart or when the station comes up after a boot as well as to shut it down at IMSstop or when the system is shut down (the HP-UX shutdown command runs the IMSstop script). Therefore the startup script StartPIAPIOnBoot does not exit. It traps the kill command that will be issued to a supervised process when IMSstop is executed in case of - manual re-start (IMSstop, IMSstart) - automatic re-start - HP-UX reboot or shutdown When having trapped this kill interrupt the script StartPIAPIOnBoot will then in turn kill the PI-API processes that it had started and then exit itself. Starting the Interface when the PI-API is Started (HP-UX) To start the PI-ABB Advant Interfaces when the PI-API processes start up, enter a startup line for each interface into $PIHOME/bin/sitestart. Example: 86 86 sitestart #!/bin/ksh # @(#)sitestart 1.2 09/05/95 # File: sitestart # # This file is provided to allow site specific applications to be started # whenever the pistart is executed. An appropriate application stop script # should be inserted into the sitestop file. # $PIHOME/$ABBIMSPI/bin/start_demand_interface_1 $PIHOME/$ABBIMSPI/bin/start_demand_interface_2 Stopping the Interface When the PI-API is Stopped (HP-UX) Add the following line at the end of the file $PIHOME/bin/sitestop: verify_stopped abbimspi If you cannot find sitestop in the fashion quoted below, you may copy it from $PIHOME/build/api or use the lines below to edit your existing file. The complete sitestop script is posted below: ABB IMS/AEH Advant Station Interface to the PI System 87 87 Appendix B: Hints for PI System Manager ############################################################################# # @(#)sitestop 1.3 2000/07/25 # File: sitestop # # This file is provided to allow site specific applications to be stopped # whenever the pistop is executed. An appropriate application start script # should be inserted into the sitestart file or the verify_stopped() # routine below may be used. ############################################################################# ## Bourne shell script to check process shutdown. Verify_stopped() { pid=`ps –e | grep $1 | grep –v grep | awk ‘{ print $1 }’` if [ ${pid:-0} –gt 0 ] then # Change the following line a signal besides SIGTERM is used to stop # the interface. Kill $pid lcount=0 dcount=0 while [ ${pid:-0} –gt 0 ] do if [ ${lcount} –gt 300 ] then break; fi sleep 1 echo ‘.\c’ pid=`ps –e | grep $1 | grep –v grep | awk ‘{ print $1 }’` lcount=`expr $lcount+1` dcount=`expr $dcount+1` if [ ${dcount} –ge 60 ] then echo $lcount dcount=0 fi done if [ ${dcount} –gt 0 ] then echo ‘ ‘ fi if [ ${pid:-0} –gt 0 ] then echo “ERROR: Unable to stop $1 (pid = $pid)” $PIHOME/bin/shootq “ERROR: Unable to stop $1 (pid = $pid)” else echo “Program $1 stopped” $PIHOME/bin/shootq “Program $1 stopped” fi else echo “Program $1 not found” $PIHOME/bin/shootq “Program $1 not found” fi } # EXAMPLE: # verify_stopped buftest verify_stopped abbimspi Automatic Interface Start on NT – Practical Experiences On HP-UX, ABB Process Supervision can be used to ensure proper application startup. Currently, there is no equivalent tool on NT. Like on HP-UX, it is very important to start the interface only after the NT ABB processes have started up completely. Make sure that the ABB services are set to load as a service. “ABB Advant Process Administration Service” (PAS) should be set to “Automatic” and the “ABB Advant System Message Log “should be set to “Manual”. The message log will start as dependent of the PAS service. NOTE: If you set them both 88 88 to automatic the service will fail to start. Once the system has booted and been up for a few minutes you can see which service you are waiting for by going to the start menu and selecting ADVANT, System Services, then Process Administration. This will show you a window with the sub services that ABB must restart. If you open this too soon there will be an error message and you will not see any of the services. The services that should be listed are: BsSysLogNT csCleanup csInit csNetMaint csPreMaint csTransport dxStallsup dxTimeSync dxupr FmsServer LogManager OmfCleanup OMFCOM OmfNameProc OmfNameProc OmfPM OmfTimer OmoNameBroker OmoNodeBroker OmoStorageDomain OmoTypeDirectory SesServer All of these services should be started with the exception of “dxupr”. It must be ensured that the PI-ABB Advant Interface starts only after a complete startup of all ABB processes. You can configure the wait period via the /startup_delay command line argument. See chapter “Startup Command File” for details. Practical experience has shown that waiting 5 minutes is long enough to be safe. Increasing Number of Interfaces per AEH on Windows NT On the Windows NT AEH, you may run into a problem when attempting to have multiple copies of the PI-ABB Advant Interface. The reason is that there is a limit on the number of OMF applications (one of which is the PI-ABB Advant Interface) per AEH. This limit is controlled by the number of semaphores and is stored in the NT registry. If you encounter problems when starting additional copies of the PI-ABB Advant Interface, while the number you had so far ran fine, please contact your local ABB specialist. The following modification may fix the problem. Run regedit and go to the following registry key. On Advant Enterprise Historian (AEH) 3.0: HKEY_LOCAL_MACHINE\Software\ABB\Advant\SystemModules\OMF\1.5\private \config\Semaphores On Advant Enterprise Historian (AEH) 3.1: ABB IMS/AEH Advant Station Interface to the PI System 89 89 Appendix B: Hints for PI System Manager HKEY_LOCAL_MACHINE\SOFTWARE\ABB\SystemServices\OMF\config\Semaphores Increase the setting of Max (which is at 20 by default). On one site, increasing this to 50, subsequently allowed for 11 OMF processes. 90 90 Appendix C: Interface Control Program – HP-UX Only The interface kit contains a small program named abbimscp. It allows changing the debug level “on the fly” which can become very useful in problem situations. You can also stop your PI-ABB Advant Interface with this program. There are 2 files in the kit: abbimscp.mak abbimscp.o Refer to the chapter “Linking the Interface Control Program” for instructions about how to ‘make’ abbimscp. The control program allows you to modify the debug level for the PI-ABB Advant Interface while it is running. If you find it useful or if you have been advised by OSI to do so, run abbimscp to add more run-time information to the interface output file. The syntax is: $abbimscp debuglevel interfacenumber or $abbimscp q interfacenumber Starting abbimscp without command line arguments will display the expected usage: $./abbimscp ABB IMS Advant Station to PI Interface Control Program Version 1.2 Usage e.g.: Usage e.g.: ./abbimscp 4 1 ./abbimscp q 1 - switch debug level to 4 for abbimspi with /in=1 - Shut down interface abbimspi with /in=1 $ Note that ‘On Event’ and ‘Cyclic’ interfaces may react a bit delayed. Depending on /du=…, the interface may stay at bciGetData for a long time or even ‘forever’. The interface’s next chance to check the mailbox for a command issued by abbimscp is when data is received from the DCS and the corresponding callback function is called to send data to PI. For a Cyclic interface, this means that the command you sent will be received by the interface on the next cycle. In an ‘On Event’ interface, the command will be recognized at the next event. ABB IMS/AEH Advant Station Interface to the PI System 91 91 Appendix D: Achieving Better Interface Performance Use More Interface Copies It is better to have more interface copies, each one servicing fewer tags. For example, 3 interfaces with 500 tags in each have been found to have a better scan performance than one interface with all 1500 tags in it. In fact, the best performance has been seen with one interface copy per scan class. Use Scan Class Offsets Better performance and more moderate CPU usage have been seen when scan class offsets were being used. For more details, refer to the description of /f=… in the section “Startup Command File”. Make sure that different scan classes are never called at the same time. Use a Separate Interface Copy for a Fast Scan Class If, for some tags, a short scan cycle of e.g. 3 seconds is wanted, while the majority of tags is scanned every 30, 40, 50 or 60 seconds, it is more efficient to have the 3 seconds tags serviced by a separate interface instance. Consider the Transfer Method “On Event” (ABB Master only) The interface, via ABB’s AdvaInform UserAPI provides the possibility to read object attributes “On Event”. For some attributes with a discrete characteristic, it makes more sense to have the DCS tell the interface when the attribute value has changed rather than to scan this object periodically. Given that the system is not overloaded with events, an event interface can hardly be seen in the UNIX process list, hence leaving more resources for the “On Demand” interfaces. However, setting up a permanent subscription on the event of a very noisy signal can result in tremendous CPU load, and hence in the opposite of what was intended. See chapter Introduction for more details about the “On Event” method. The ‘On Event’ method is not recommended for MOD 300. ABB IMS/AEH Advant Station Interface to the PI System 93 93 Appendix E: Test Environment IMS 2.0 ABB Master Advant Controller AC 450 MasterBus MB 300e Advant Station 530 IMS, 288 Mbyte RAM RTA card 16 Mbyte IMS 2.0 with “programming option” (including AdvaInform UserAPI 1.3) HP-UX 10.20 Intel Pentium 200 MHz, 192 MB RAM, 2Gbyte disk PI 3.1 Build 2.71 (in a late phase also PI 3.2 Build 3.29) Intel NT 4.0 Service Pack 3 ABB IMS Advant Station to PI interface version 3.11 300 AI objects + 100 DI objects on the ABB Master Test system were mapped to 7000 different PI tags AEH 2.1 ABB MOD 300 This is AdvaInform Enterprise Historian Version 2.1-0. Software versions included in the AdvaInform Basic Functions 2.2-0: - HP-UX 10.20 - Motif 1.2 -X X11R5 - Oracle 7.3.2.3 - TeleUSE 3.2-1 - OS 1.8-0 - OMF 1.4-5 - TypeDir 5.1-1 - UXBase 2.3-0 - PI-API HP-UX 1.3.4 - PI 3.2 Build 357.17 on Intel NT 4 AEH 2.2 ABB Master Information about version This is AdvaInform Enterprise Historian Version 2.2-0. Software versions included in the AdvaInform Basic Functions 2.2-0: ABB IMS/AEH Advant Station Interface to the PI System 95 95 Appendix E: Test Environment 96 96 - HP-UX - Motif -X - Oracle - TeleUSE - OS - OMF - TypeDir - UXBase 10.20 1.2 X11R5 7.3.2 3.02.B 1.8-0 1.4-5 5.1-3 2.3-0 - PI-API HP-UX - PI Server - Interface version 1.3.6 (cfront compatible option 1.3.4 chosen) PI 3.3, Build 361.96 on Windows 2000 5.09 Appendix F : Attribute Lists via getObj The following lists are summaries of attributes, events and operations for the 6 Basic Object Types + one example for a CCF_PID_LOOP object. Similar information can be retrieved for any other object type. Remember that you have to ‘cd’ into /opt/advant/UserAPI/examples first. $ cd /opt/advant/UserAPI/examples $ getObj AI ================================================================= Object AI is of type AI which has: -Attributes-----------------------------------------------------0 NAME STRING 21 byte 1 DESCRIPTION STRING 29 byte 2 STATUS BITSET 4 byte 3 UNIT STRING 7 byte 4 RANGE_MIN FLOAT 4 byte 5 RANGE_MAX FLOAT 4 byte 6 VALUE FLOAT 4 byte 7 ERROR_TREAT SHORT 2 byte 8 NO_OF_DEC SMALL 1 byte 9 SUBSYSTEM SMALL 1 byte 10 CLASS SMALL 1 byte 11 HI_LIM2 FLOAT 4 byte 12 HI_LIM1 FLOAT 4 byte 13 LO_LIM1 FLOAT 4 byte 14 LO_LIM2 FLOAT 4 byte 15 USE_HI_LIM2 BOOLEAN 1 byte 16 USE_HI_LIM1 BOOLEAN 1 byte 17 USE_LO_LIM1 BOOLEAN 1 byte 18 USE_LO_LIM2 BOOLEAN 1 byte 19 LIM1_TREAT SHORT 2 byte 20 LIM2_TREAT SHORT 2 byte 21 ain_ab1_dcx COMPOSITE 12 byte 22 ain_ab2_dcx COMPOSITE 80 byte 23 ain_ab3_dcx COMPOSITE 96 byte 24 ain_ab4_dcx COMPOSITE 100 byte -Operations-----------------------------------------------------0 Delete OPERATION 0 byte 1 Deactivate OPERATION 0 byte 2 Copy OPERATION 21 byte 3 NormalOperation OPERATION 0 byte 4 SELECT OPERATION 84 byte 5 DESELECT OPERATION 16 byte 6 ORDER OPERATION 24 byte 7 ACKNOWLEDGE OPERATION 16 byte 8 GETVALUE OPERATION 28 byte -Events---------------------------------------------------------0 EVENT EVENT 0 byte $ getObj AO ================================================================= ABB IMS/AEH Advant Station Interface to the PI System 97 97 Appendix F: Attribute Lists via getObj Object AO is of type AO which has: -Attributes-----------------------------------------------------0 NAME STRING 21 byte 1 DESCRIPTION STRING 29 byte 2 STATUS BITSET 4 byte 3 UNIT STRING 7 byte 4 RANGE_MIN FLOAT 4 byte 5 RANGE_MAX FLOAT 4 byte 6 VALUE FLOAT 4 byte 7 MAX_LIM FLOAT 4 byte 8 MIN_LIM FLOAT 4 byte 9 START_VALUE SHORT 2 byte 10 ERROR_TREAT SHORT 2 byte 11 NO_OF_DEC SMALL 1 byte 12 SUBSYSTEM SMALL 1 byte 13 CLASS SMALL 1 byte 14 aout_ab1_dcx COMPOSITE 12 byte 15 aout_ab2_dcx COMPOSITE 80 byte 16 aout_ab3_dcx COMPOSITE 88 byte -Operations-----------------------------------------------------0 Delete OPERATION 0 byte 1 Deactivate OPERATION 0 byte 2 Copy OPERATION 21 byte 3 NormalOperation OPERATION 0 byte 4 SELECT OPERATION 84 byte 5 DESELECT OPERATION 16 byte 6 ORDER OPERATION 24 byte 7 ACKNOWLEDGE OPERATION 16 byte 8 GETVALUE OPERATION 28 byte -Events---------------------------------------------------------0 EVENT EVENT 0 byte ================================================================= $ getObj DI ================================================================= Object DI is of type DI which has: -Attributes-----------------------------------------------------0 NAME STRING 21 byte 1 DESCRIPTION STRING 29 byte 2 STATUS BITSET 4 byte 3 ERROR_TREAT SHORT 2 byte 4 VALUE_TREAT SHORT 2 byte 5 SUBSYSTEM SMALL 1 byte 6 CLASS SMALL 1 byte 7 din_ab1_dcx COMPOSITE 4 byte 8 din_ab2_dcx COMPOSITE 60 byte -Operations-----------------------------------------------------0 Delete OPERATION 0 byte 1 Deactivate OPERATION 0 byte 2 Copy OPERATION 21 byte 3 NormalOperation OPERATION 0 byte 4 SELECT OPERATION 84 byte 5 DESELECT OPERATION 16 byte 98 98 6 ORDER 7 ACKNOWLEDGE 8 GETVALUE OPERATION OPERATION OPERATION 24 byte 16 byte 28 byte -Events---------------------------------------------------------0 EVENT EVENT 0 byte ================================================================= $ getObj DO ================================================================= Object DO is of type DO which has: -Attributes-----------------------------------------------------0 NAME STRING 21 byte 1 DESCRIPTION STRING 29 byte 2 STATUS BITSET 4 byte 3 ERROR_TREAT SHORT 2 byte 4 SUBSYSTEM SMALL 1 byte 5 CLASS SMALL 1 byte 6 dout_ab1_dcx COMPOSITE 4 byte 7 dout_ab2_dcx COMPOSITE 56 byte -Operations-----------------------------------------------------0 Delete OPERATION 0 byte 1 Deactivate OPERATION 0 byte 2 Copy OPERATION 21 byte 3 NormalOperation OPERATION 0 byte 4 SELECT OPERATION 84 byte 5 DESELECT OPERATION 16 byte 6 ORDER OPERATION 24 byte 7 ACKNOWLEDGE OPERATION 16 byte 8 GETVALUE OPERATION 28 byte -Events---------------------------------------------------------0 EVENT EVENT 0 byte $ getObj DAT ================================================================= Object DAT is of type DAT which has: -Attributes-----------------------------------------------------0 NAME STRING 21 byte 1 VALID SMALL 1 byte 2 VAL_TYPE SMALL 1 byte 3 B0_VAL BOOLEAN 1 byte 4 B1_VAL BOOLEAN 1 byte 5 B2_VAL BOOLEAN 1 byte 6 B3_VAL BOOLEAN 1 byte 7 B4_VAL BOOLEAN 1 byte 8 B5_VAL BOOLEAN 1 byte 9 B6_VAL BOOLEAN 1 byte 10 B7_VAL BOOLEAN 1 byte 11 B8_VAL BOOLEAN 1 byte 12 B9_VAL BOOLEAN 1 byte 13 B10_VAL BOOLEAN 1 byte 14 B11_VAL BOOLEAN 1 byte 15 B12_VAL BOOLEAN 1 byte ABB IMS/AEH Advant Station Interface to the PI System 99 99 Appendix F: Attribute Lists via getObj 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 B13_VAL B14_VAL B15_VAL B16_VAL B17_VAL B18_VAL B19_VAL B20_VAL B21_VAL B22_VAL B23_VAL B24_VAL B25_VAL B26_VAL B27_VAL B28_VAL B29_VAL B30_VAL B31_VAL IW_VAL IL_VAL R_VAL dat_ab1_dcx dat_ab2_dcx BOOLEAN BOOLEAN BOOLEAN BOOLEAN BOOLEAN BOOLEAN BOOLEAN BOOLEAN BOOLEAN BOOLEAN BOOLEAN BOOLEAN BOOLEAN BOOLEAN BOOLEAN BOOLEAN BOOLEAN BOOLEAN BOOLEAN SHORT LONG FLOAT COMPOSITE COMPOSITE 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 4 4 8 28 byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte -Operations-----------------------------------------------------0 Delete OPERATION 0 byte 1 Deactivate OPERATION 0 byte 2 Copy OPERATION 21 byte 3 NormalOperation OPERATION 0 byte 4 DAT_SELECT OPERATION 52 byte 5 DAT_DESELECT OPERATION 16 byte 6 DAT_ORDER OPERATION 32 byte -Events---------------------------------------------------------0 EVENT EVENT 0 byte ================================================================= $ getObj TEXT ================================================================= Object TEXT is of type TEXT which has: -Attributes-----------------------------------------------------0 NAME STRING 21 byte 1 INT_LONG LONG 4 byte 2 TEXT_REAL FLOAT 4 byte 3 DISPMAX FLOAT 4 byte 4 DISPMIN FLOAT 4 byte 5 NO_OF_DEC SMALL 1 byte 6 ORD_BLK SMALL 1 byte 7 STATUS SH_BITSET 2 byte 8 TEXT STRING 73 byte 9 td_ab1_dcx COMPOSITE 88 byte 10 td_ab2_dcx COMPOSITE 120 byte -Operations-----------------------------------------------------0 Delete OPERATION 0 byte 1 Deactivate OPERATION 0 byte 2 Copy OPERATION 21 byte 3 NormalOperation OPERATION 0 byte 100 100 4 TEXT_SELECT 5 TEXT_DESELECT 6 TEXT_ORDER OPERATION OPERATION OPERATION 84 byte 16 byte 104 byte -Events---------------------------------------------------------0 EVENT EVENT 0 byte ================================================================= $ $ getObj CCF_PID_LOOP Object CCF_PID_LOOP is of type CCF_PID_LOOP which has: -Attributes------------------------------------------------------0 NAME STRING 21 byte 1 APL_F1 USMALL 1 byte 2 APL_F10 USMALL 1 byte 3 APL_F2 USMALL 1 byte 4 APL_F3 USMALL 1 byte 5 APL_F4 USMALL 1 byte 6 APL_F5 USMALL 1 byte 7 APL_F6 USMALL 1 byte 8 APL_F7 USMALL 1 byte 9 APL_F8 USMALL 1 byte 10 APL_F9 USMALL 1 byte 11 BLKBYTE SHORT 2 byte 12 CHK_ENB USMALL 1 byte 13 COMP_ALL USMALL 1 byte 14 COMP_MOD USMALL 1 byte 15 COMP_REQ USMALL 1 byte 16 CONTPR LONG 4 byte 17 CONTUAC USMALL 1 byte 18 CONT_SRC LONG 4 byte 19 CO_ENAB USMALL 1 byte 20 CO_RLREF LONG 4 byte 21 CO_STATE USMALL 1 byte 22 DEMAND_M USMALL 1 byte 23 DEMAND_N USMALL 1 byte 24 DEMAND_X ARRAY 20 byte 25 DEPENAB USMALL 1 byte 26 DEVLPNUM ULONG 4 byte 27 DMD_SCAN USMALL 1 byte 28 ENAB_FLG USMALL 1 byte 29 INDEX_1 USMALL 1 byte 30 INDEX_10 USMALL 1 byte 31 INDEX_2 USMALL 1 byte 32 INDEX_3 USMALL 1 byte 33 INDEX_4 USMALL 1 byte 34 INDEX_5 USMALL 1 byte 35 INDEX_6 USMALL 1 byte 36 INDEX_7 USMALL 1 byte 37 INDEX_8 USMALL 1 byte 38 INDEX_9 USMALL 1 byte 39 INSTR SHORT 2 byte 40 INSTRTYP USMALL 1 byte 41 LER_ACTN USMALL 1 byte 42 LOOPDESC STRING 25 byte 43 LOOPLREF LONG 4 byte 44 LOOPTYPE USMALL 1 byte 45 LOOP_DAT LONG 4 byte ABB IMS/AEH Advant Station Interface to the PI System 101 101 Appendix F: Attribute Lists via getObj 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 102 102 LOOP_SEQ LP_CONFG LP_STATE NORMSTAT OUTERROR PHASE POSTENAB PREV_STA REM_INP SCANFLAG SCANRATE TAG TCL_DONE UNITNUM DQ_ENAB ALG_NUM ALM_COMP ALM_MASK CONINDEX CON_DQ CON_DVDQ CON_DVHI CON_DVLO CON_HI CON_HIHI CON_IROC CON_LO CON_LOLO CON_ODQ CON_OHI CON_OIRC CON_OLO CON_SPDQ CON_SPHI CON_SPLO DECPTPOS DEV_ALM DEV_DQ_B DEV_HI DEV_LO C_DQ_BAD DQ_MEAS ENGUNITS ERR_FCM EU_DEBD FCMS HI HIHI HIHILIMT HILIMT HI_CONV IROCLIMT IROC_HI LOLIMT LOLO LOLOLIMT LOW LO_CONV MEASLREF MEASURE MEAS_ALM FLOAT SMALL USMALL USMALL USMALL USMALL USMALL USMALL USMALL USMALL USHORT STRING USMALL USHORT USMALL SMALL BITSET LONG USMALL USMALL USMALL USMALL USMALL USMALL USMALL USMALL USMALL USMALL USMALL USMALL USMALL USMALL USMALL USMALL USMALL USMALL USMALL USMALL USMALL USMALL USMALL USMALL STRING USMALL FLOAT ARRAY USMALL USMALL FLOAT FLOAT FLOAT FLOAT USMALL FLOAT USMALL FLOAT USMALL FLOAT USMALL FLOAT USMALL 4 1 1 1 1 1 1 1 1 1 2 13 1 2 1 1 4 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 1 4 64 1 1 4 4 4 4 1 4 1 4 1 4 1 4 1 byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 MROC_ALM NBKINPTS OROC_ALM OUTP_ALM OUT_DQ_B OUT_HI OUT_IRC OUT_LO RD1_K1 SPT_ALM SP_DQ SP_HI SP_LO TRNDLREF TRNDRATE MEASURE_COMP BAD_INP BALANCE B_DQ B_HILI B_LMAL B_LOLI B_MDAL B_MODE B_REMIN B_VALUE CTL_RATE DATAQUAL FCM_MODE FULL_OUT INITMODE INIT_FLG INIT_OUT INPUT_1 LINKFAIL OUMDFAIL OUTRETMD OUTRFAIL OUT_COND OUT_DEBD OUT_HILI OUT_LOLI OUT_MODE OUVAFAIL OU_LM_AL OU_MD_AL PREVOUMD RATE_CNT RATE_LIM REMTRKFL REMTRKIN REM_CRTL RESULT RET_OUMD R_DQ R_HILI R_LMAL R_LOLI R_MDAL R_MODE R_REMIN USMALL SMALL USMALL USMALL USMALL USMALL USMALL USMALL FLOAT USMALL USMALL USMALL USMALL LONG USHORT COMPOSITE SMALL SMALL USMALL FLOAT USMALL FLOAT USMALL USMALL LONG FLOAT SMALL USHORT USMALL FLOAT USMALL USMALL FLOAT LONG USMALL USMALL USMALL FLOAT USMALL FLOAT FLOAT FLOAT SMALL USMALL SMALL SMALL SMALL LONG FLOAT LONG LONG USMALL FLOAT SMALL USMALL FLOAT USMALL FLOAT USMALL USMALL LONG ABB IMS/AEH Advant Station Interface to the PI System 1 1 1 1 1 1 1 1 4 1 1 1 1 4 2 12 1 1 1 4 1 4 1 1 4 4 1 2 1 4 1 1 4 4 1 1 1 4 1 4 4 4 1 1 1 1 1 4 4 4 4 1 4 1 1 4 1 4 1 1 4 byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte 103 103 Appendix F: Attribute Lists via getObj 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 104 104 R_VALUE TRAK_DQ TRAK_VAR TRKFLPAD TRKINPAD TRKORET TRK_FLAG TRK_STAT WD_COUNT WD_TIME WORST_DQ OUTPUT_COMP ACCUMINT ACTION AC_GAIN AC_RESET ADPTMODE A_GAIN A_RESET BAD_SPT BS_GAIN BS_RESET C CASCADE DELTA_T DEV_DEBD DEV_HILI DEV_LOLI DEV_VAL DTC_ENAB END_SPT ERROR ERR_SQR EXFBENAB FFFBMODE FF_CONST FF_TYPE FILT_CON GAIN_DQ GAIN_LIM INC_CV INC_FLAG INC_H_DB INC_L_DB INC_MFLG INITSPMD INIT_SPT INTGTYPE INT_DER INT_FORM MPROCVAL M_R_HILI M_R_LOLI M_R_TYPE M_R_VAL PREACT PREACTIM PRERMPMD PREVFFFB PREVINTG PREVSPMD FLOAT USMALL FLOAT LONG LONG USMALL USMALL USMALL LONG LONG USMALL COMPOSITE DOUBLE USMALL FLOAT FLOAT SMALL LONG LONG SMALL FLOAT FLOAT FLOAT USMALL FLOAT FLOAT FLOAT FLOAT FLOAT USMALL FLOAT FLOAT USMALL USMALL SMALL FLOAT USMALL FLOAT USMALL FLOAT FLOAT USMALL FLOAT FLOAT USMALL USMALL FLOAT SMALL FLOAT USMALL FLOAT FLOAT FLOAT SMALL FLOAT SMALL FLOAT SMALL SMALL FLOAT SMALL 4 1 4 4 4 1 1 1 4 4 1 8 8 1 4 4 1 4 4 1 4 4 4 1 4 4 4 4 4 1 4 4 1 1 1 4 1 4 1 4 4 1 4 4 1 1 4 1 4 1 4 4 4 1 4 1 4 1 1 4 1 byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 PROC_DQ PROC_ENG PROC_HV PROC_LV PROC_VAL PROPTYPE RD1_K2 RD1_K3 RD1_K4 REMINF REMSETPT REMSPTN REM_DTC REM_EXFB REM_EXFF RESET_DQ RET_SPMD RMP_RATE SETPOINT SETPTN SETPT_DQ SPMDFAIL SPREFAIL SPRETMD SPTRKSRC SPT_HILI SPT_LOLI SPT_MODE SPVAFAIL SP_LM_AL SP_MD_AL TRKSRET TUNE_FLG ATUNE_ID EXEC_AT SETPOINT_COMP USMALL FLOAT FLOAT FLOAT FLOAT SMALL FLOAT FLOAT FLOAT SMALL LONG SMALL LONG LONG LONG USMALL SMALL FLOAT FLOAT FLOAT USMALL USMALL FLOAT USMALL LONG FLOAT FLOAT SMALL USMALL SMALL SMALL USMALL USMALL ULONG USMALL COMPOSITE 1 4 4 4 4 1 4 4 4 1 4 1 4 4 4 1 1 4 4 4 1 1 4 1 4 4 4 1 1 1 1 1 1 4 1 8 byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte -Operations------------------------------------------------------0 Delete OPERATION 0 byte 1 Deactivate OPERATION 0 byte 2 Copy OPERATION 21 byte 3 NormalOperation OPERATION 0 byte 4 TAKE_CONTROL OPERATION 4 byte 5 PUT_APL_F1 OPERATION 1 byte 6 PUT_APL_F10 OPERATION 1 byte 7 PUT_APL_F2 OPERATION 1 byte 8 PUT_APL_F3 OPERATION 1 byte 9 PUT_APL_F4 OPERATION 1 byte 10 PUT_APL_F5 OPERATION 1 byte 11 PUT_APL_F6 OPERATION 1 byte 12 PUT_APL_F7 OPERATION 1 byte 13 PUT_APL_F8 OPERATION 1 byte 14 PUT_APL_F9 OPERATION 1 byte 15 PUT_BLKBYTE OPERATION 2 byte 16 PUT_CHK_ENB OPERATION 1 byte 17 PUT_COMP_ALL OPERATION 1 byte 18 PUT_COMP_MOD OPERATION 1 byte 19 PUT_COMP_REQ OPERATION 1 byte 20 PUT_CONTPR OPERATION 4 byte 21 PUT_CONTUAC OPERATION 1 byte 22 PUT_CONT_SRC OPERATION 4 byte ABB IMS/AEH Advant Station Interface to the PI System 105 105 Appendix F: Attribute Lists via getObj 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 106 106 PUT_CO_ENAB PUT_CO_RLREF PUT_CO_STATE PUT_DEMAND_M PUT_DEMAND_N PUT_DEMAND_X PUT_DEPENAB PUT_DEVLPNUM PUT_DMD_SCAN PUT_ENAB_FLG PUT_INDEX_1 PUT_INDEX_10 PUT_INDEX_2 PUT_INDEX_3 PUT_INDEX_4 PUT_INDEX_5 PUT_INDEX_6 PUT_INDEX_7 PUT_INDEX_8 PUT_INDEX_9 PUT_INSTR PUT_INSTRTYP PUT_LER_ACTN PUT_LOOPDESC PUT_LOOPLREF PUT_LOOPTYPE PUT_LOOP_DAT PUT_LOOP_SEQ PUT_LP_CONFG PUT_LP_STATE PUT_NORMSTAT PUT_OUTERROR PUT_PHASE PUT_POSTENAB PUT_PREV_STA PUT_REM_INP PUT_SCANFLAG PUT_SCANRATE PUT_TAG PUT_TCL_DONE PUT_UNITNUM PUT_DQ_ENAB PUT_ALG_NUM PUT_ALM_COMP PUT_ALM_MASK PUT_CONINDEX PUT_CON_DQ PUT_CON_DVDQ PUT_CON_DVHI PUT_CON_DVLO PUT_CON_HI PUT_CON_HIHI PUT_CON_IROC PUT_CON_LO PUT_CON_LOLO PUT_CON_ODQ PUT_CON_OHI PUT_CON_OIRC PUT_CON_OLO PUT_CON_SPDQ PUT_CON_SPHI OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION 1 4 1 1 1 20 1 4 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 25 4 1 4 4 1 1 1 1 1 1 1 1 1 2 13 1 2 1 1 4 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 PUT_CON_SPLO PUT_DECPTPOS PUT_DEV_ALM PUT_DEV_DQ_B PUT_DEV_HI PUT_DEV_LO PUT_C_DQ_BAD PUT_DQ_MEAS PUT_ENGUNITS PUT_ERR_FCM PUT_EU_DEBD PUT_FCMS PUT_HI PUT_HIHI PUT_HIHILIMT PUT_HILIMT PUT_HI_CONV PUT_IROCLIMT PUT_IROC_HI PUT_LOLIMT PUT_LOLO PUT_LOLOLIMT PUT_LOW PUT_LO_CONV PUT_MEASLREF PUT_MEASURE PUT_MEAS_ALM PUT_MROC_ALM PUT_NBKINPTS PUT_OROC_ALM PUT_OUTP_ALM PUT_OUT_DQ_B PUT_OUT_HI PUT_OUT_IRC PUT_OUT_LO PUT_RD1_K1 PUT_SPT_ALM PUT_SP_DQ PUT_SP_HI PUT_SP_LO PUT_TRNDLREF PUT_TRNDRATE PUT_BAD_INP PUT_BALANCE PUT_B_DQ PUT_B_HILI PUT_B_LMAL PUT_B_LOLI PUT_B_MDAL PUT_B_MODE PUT_B_REMIN PUT_B_VALUE PUT_CTL_RATE PUT_DATAQUAL PUT_FCM_MODE PUT_FULL_OUT PUT_INITMODE PUT_INIT_FLG PUT_INIT_OUT PUT_INPUT_1 PUT_LINKFAIL OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION ABB IMS/AEH Advant Station Interface to the PI System 1 1 1 1 1 1 1 1 7 1 4 64 1 1 4 4 4 4 1 4 1 4 1 4 1 4 1 1 1 1 1 1 1 1 1 4 1 1 1 1 4 2 1 1 1 4 1 4 1 1 4 4 1 2 1 4 1 1 4 4 1 byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte 107 107 Appendix F: Attribute Lists via getObj 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 108 108 PUT_OUMDFAIL PUT_OUTRETMD PUT_OUTRFAIL PUT_OUT_COND PUT_OUT_DEBD PUT_OUT_HILI PUT_OUT_LOLI PUT_OUT_MODE PUT_OUVAFAIL PUT_OU_LM_AL PUT_OU_MD_AL PUT_PREVOUMD PUT_RATE_CNT PUT_RATE_LIM PUT_REMTRKFL PUT_REMTRKIN PUT_REM_CRTL PUT_RESULT PUT_RET_OUMD PUT_R_DQ PUT_R_HILI PUT_R_LMAL PUT_R_LOLI PUT_R_MDAL PUT_R_MODE PUT_R_REMIN PUT_R_VALUE PUT_TRAK_DQ PUT_TRAK_VAR PUT_TRKFLPAD PUT_TRKINPAD PUT_TRKORET PUT_TRK_FLAG PUT_TRK_STAT PUT_WD_COUNT PUT_WD_TIME PUT_WORST_DQ PUT_ACCUMINT PUT_ACTION PUT_AC_GAIN PUT_AC_RESET PUT_ADPTMODE PUT_A_GAIN PUT_A_RESET PUT_BAD_SPT PUT_BS_GAIN PUT_BS_RESET PUT_C PUT_CASCADE PUT_DELTA_T PUT_DEV_DEBD PUT_DEV_HILI PUT_DEV_LOLI PUT_DEV_VAL PUT_DTC_ENAB PUT_END_SPT PUT_ERROR PUT_ERR_SQR PUT_EXFBENAB PUT_FFFBMODE PUT_FF_CONST OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION 1 1 4 1 4 4 4 1 1 1 1 1 4 4 4 4 1 4 1 1 4 1 4 1 1 4 4 1 4 4 4 1 1 1 4 4 1 8 1 4 4 1 4 4 1 4 4 4 1 4 4 4 4 4 1 4 4 1 1 1 4 byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 PUT_FF_TYPE PUT_FILT_CON PUT_GAIN_DQ PUT_GAIN_LIM PUT_INC_CV PUT_INC_FLAG PUT_INC_H_DB PUT_INC_L_DB PUT_INC_MFLG PUT_INITSPMD PUT_INIT_SPT PUT_INTGTYPE PUT_INT_DER PUT_INT_FORM PUT_MPROCVAL PUT_M_R_HILI PUT_M_R_LOLI PUT_M_R_TYPE PUT_M_R_VAL PUT_PREACT PUT_PREACTIM PUT_PRERMPMD PUT_PREVFFFB PUT_PREVINTG PUT_PREVSPMD PUT_PROC_DQ PUT_PROC_ENG PUT_PROC_HV PUT_PROC_LV PUT_PROC_VAL PUT_PROPTYPE PUT_RD1_K2 PUT_RD1_K3 PUT_RD1_K4 PUT_REMINF PUT_REMSETPT PUT_REMSPTN PUT_REM_DTC PUT_REM_EXFB PUT_REM_EXFF PUT_RESET_DQ PUT_RET_SPMD PUT_RMP_RATE PUT_SETPOINT PUT_SETPTN PUT_SETPT_DQ PUT_SPMDFAIL PUT_SPREFAIL PUT_SPRETMD PUT_SPTRKSRC PUT_SPT_HILI PUT_SPT_LOLI PUT_SPT_MODE PUT_SPVAFAIL PUT_SP_LM_AL PUT_SP_MD_AL PUT_TRKSRET PUT_TUNE_FLG PUT_ATUNE_ID PUT_EXEC_AT OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION OPERATION ABB IMS/AEH Advant Station Interface to the PI System 1 4 1 4 4 1 4 4 1 1 4 1 4 1 4 4 4 1 4 1 4 1 1 4 1 1 4 4 4 4 1 4 4 4 1 4 1 4 4 4 1 1 4 4 4 1 1 4 1 4 4 4 1 1 1 1 1 1 4 1 byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte 109 109 Appendix F: Attribute Lists via getObj -Events----------------------------------------------------------0 DUMMY_EVENT EVENT 4 byte 1 CHG_APL_F1 EVENT 2 byte 2 CHG_APL_F10 EVENT 2 byte 3 CHG_APL_F2 EVENT 2 byte 4 CHG_APL_F3 EVENT 2 byte 5 CHG_APL_F4 EVENT 2 byte 6 CHG_APL_F5 EVENT 2 byte 7 CHG_APL_F6 EVENT 2 byte 8 CHG_APL_F7 EVENT 2 byte 9 CHG_APL_F8 EVENT 2 byte 10 CHG_APL_F9 EVENT 2 byte 11 CHG_BLKBYTE EVENT 4 byte 12 CHG_CHK_ENB EVENT 2 byte 13 CHG_COMP_ALL EVENT 2 byte 14 CHG_COMP_MOD EVENT 2 byte 15 CHG_COMP_REQ EVENT 2 byte 16 CHG_CONTPR EVENT 8 byte 17 CHG_CONTUAC EVENT 2 byte 18 CHG_CONT_SRC EVENT 8 byte 19 CHG_CO_ENAB EVENT 2 byte 20 CHG_CO_RLREF EVENT 8 byte 21 CHG_CO_STATE EVENT 2 byte 22 CHG_DEMAND_M EVENT 2 byte 23 CHG_DEMAND_N EVENT 2 byte 24 CHG_DEMAND_X EVENT 40 byte 25 CHG_DEPENAB EVENT 2 byte 26 CHG_DEVLPNUM EVENT 8 byte 27 CHG_DMD_SCAN EVENT 2 byte 28 CHG_ENAB_FLG EVENT 2 byte 29 CHG_INDEX_1 EVENT 2 byte 30 CHG_INDEX_10 EVENT 2 byte 31 CHG_INDEX_2 EVENT 2 byte 32 CHG_INDEX_3 EVENT 2 byte 33 CHG_INDEX_4 EVENT 2 byte 34 CHG_INDEX_5 EVENT 2 byte 35 CHG_INDEX_6 EVENT 2 byte 36 CHG_INDEX_7 EVENT 2 byte 37 CHG_INDEX_8 EVENT 2 byte 38 CHG_INDEX_9 EVENT 2 byte 39 CHG_INSTR EVENT 4 byte 40 CHG_INSTRTYP EVENT 2 byte 41 CHG_LER_ACTN EVENT 2 byte 42 CHG_LOOPDESC EVENT 50 byte 43 CHG_LOOPLREF EVENT 8 byte 44 CHG_LOOPTYPE EVENT 2 byte 45 CHG_LOOP_DAT EVENT 8 byte 46 CHG_LOOP_SEQ EVENT 8 byte 47 CHG_LP_CONFG EVENT 2 byte 48 CHG_LP_STATE EVENT 2 byte 49 CHG_NORMSTAT EVENT 2 byte 50 CHG_OUTERROR EVENT 2 byte 51 CHG_PHASE EVENT 2 byte 52 CHG_POSTENAB EVENT 2 byte 53 CHG_PREV_STA EVENT 2 byte 54 CHG_REM_INP EVENT 2 byte 55 CHG_SCANFLAG EVENT 2 byte 56 CHG_SCANRATE EVENT 4 byte 57 CHG_TAG EVENT 26 byte 58 CHG_TCL_DONE EVENT 2 byte 59 CHG_UNITNUM EVENT 4 byte 110 110 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 CHG_DQ_ENAB CHG_ALG_NUM CHG_ALM_COMP CHG_ALM_MASK CHG_CONINDEX CHG_CON_DQ CHG_CON_DVDQ CHG_CON_DVHI CHG_CON_DVLO CHG_CON_HI CHG_CON_HIHI CHG_CON_IROC CHG_CON_LO CHG_CON_LOLO CHG_CON_ODQ CHG_CON_OHI CHG_CON_OIRC CHG_CON_OLO CHG_CON_SPDQ CHG_CON_SPHI CHG_CON_SPLO CHG_DECPTPOS CHG_DEV_ALM CHG_DEV_DQ_B CHG_DEV_HI CHG_DEV_LO CHG_C_DQ_BAD CHG_DQ_MEAS CHG_ENGUNITS CHG_ERR_FCM CHG_EU_DEBD CHG_FCMS CHG_HI CHG_HIHI CHG_HIHILIMT CHG_HILIMT CHG_HI_CONV CHG_IROCLIMT CHG_IROC_HI CHG_LOLIMT CHG_LOLO CHG_LOLOLIMT CHG_LOW CHG_LO_CONV CHG_MEASLREF CHG_MEASURE CHG_MEAS_ALM CHG_MROC_ALM CHG_NBKINPTS CHG_OROC_ALM CHG_OUTP_ALM CHG_OUT_DQ_B CHG_OUT_HI CHG_OUT_IRC CHG_OUT_LO CHG_RD1_K1 CHG_SPT_ALM CHG_SP_DQ CHG_SP_HI CHG_SP_LO CHG_TRNDLREF EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT ABB IMS/AEH Advant Station Interface to the PI System 2 2 8 8 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 14 2 8 128 2 2 8 8 8 8 2 8 2 8 2 8 2 8 2 2 2 2 2 2 2 2 2 8 2 2 2 2 8 byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte 111 111 Appendix F: Attribute Lists via getObj 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 112 112 CHG_TRNDRATE CHG_BAD_INP CHG_BALANCE CHG_B_DQ CHG_B_HILI CHG_B_LMAL CHG_B_LOLI CHG_B_MDAL CHG_B_MODE CHG_B_REMIN CHG_B_VALUE CHG_CTL_RATE CHG_DATAQUAL CHG_FCM_MODE CHG_FULL_OUT CHG_INITMODE CHG_INIT_FLG CHG_INIT_OUT CHG_INPUT_1 CHG_LINKFAIL CHG_OUMDFAIL CHG_OUTRETMD CHG_OUTRFAIL CHG_OUT_COND CHG_OUT_DEBD CHG_OUT_HILI CHG_OUT_LOLI CHG_OUT_MODE CHG_OUVAFAIL CHG_OU_LM_AL CHG_OU_MD_AL CHG_PREVOUMD CHG_RATE_CNT CHG_RATE_LIM CHG_REMTRKFL CHG_REMTRKIN CHG_REM_CRTL CHG_RESULT CHG_RET_OUMD CHG_R_DQ CHG_R_HILI CHG_R_LMAL CHG_R_LOLI CHG_R_MDAL CHG_R_MODE CHG_R_REMIN CHG_R_VALUE CHG_TRAK_DQ CHG_TRAK_VAR CHG_TRKFLPAD CHG_TRKINPAD CHG_TRKORET CHG_TRK_FLAG CHG_TRK_STAT CHG_WD_COUNT CHG_WD_TIME CHG_WORST_DQ CHG_ACCUMINT CHG_ACTION CHG_AC_GAIN CHG_AC_RESET EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT 4 2 2 2 8 2 8 2 2 8 8 2 4 2 8 2 2 8 8 2 2 2 8 2 8 8 8 2 2 2 2 2 8 8 8 8 2 8 2 2 8 2 8 2 2 8 8 2 8 8 8 2 2 2 8 8 2 16 2 8 8 byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 CHG_ADPTMODE CHG_A_GAIN CHG_A_RESET CHG_BAD_SPT CHG_BS_GAIN CHG_BS_RESET CHG_C CHG_CASCADE CHG_DELTA_T CHG_DEV_DEBD CHG_DEV_HILI CHG_DEV_LOLI CHG_DEV_VAL CHG_DTC_ENAB CHG_END_SPT CHG_ERROR CHG_ERR_SQR CHG_EXFBENAB CHG_FFFBMODE CHG_FF_CONST CHG_FF_TYPE CHG_FILT_CON CHG_GAIN_DQ CHG_GAIN_LIM CHG_INC_CV CHG_INC_FLAG CHG_INC_H_DB CHG_INC_L_DB CHG_INC_MFLG CHG_INITSPMD CHG_INIT_SPT CHG_INTGTYPE CHG_INT_DER CHG_INT_FORM CHG_MPROCVAL CHG_M_R_HILI CHG_M_R_LOLI CHG_M_R_TYPE CHG_M_R_VAL CHG_PREACT CHG_PREACTIM CHG_PRERMPMD CHG_PREVFFFB CHG_PREVINTG CHG_PREVSPMD CHG_PROC_DQ CHG_PROC_ENG CHG_PROC_HV CHG_PROC_LV CHG_PROC_VAL CHG_PROPTYPE CHG_RD1_K2 CHG_RD1_K3 CHG_RD1_K4 CHG_REMINF CHG_REMSETPT CHG_REMSPTN CHG_REM_DTC CHG_REM_EXFB CHG_REM_EXFF CHG_RESET_DQ EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT ABB IMS/AEH Advant Station Interface to the PI System 2 8 8 2 8 8 8 2 8 8 8 8 8 2 8 8 2 2 2 8 2 8 2 8 8 2 8 8 2 2 8 2 8 2 8 8 8 2 8 2 8 2 2 8 2 2 8 8 8 8 2 8 8 8 2 8 2 8 8 8 2 byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte 113 113 Appendix F: Attribute Lists via getObj 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 $ CHG_RET_SPMD CHG_RMP_RATE CHG_SETPOINT CHG_SETPTN CHG_SETPT_DQ CHG_SPMDFAIL CHG_SPREFAIL CHG_SPRETMD CHG_SPTRKSRC CHG_SPT_HILI CHG_SPT_LOLI CHG_SPT_MODE CHG_SPVAFAIL CHG_SP_LM_AL CHG_SP_MD_AL CHG_TRKSRET CHG_TUNE_FLG CHG_ATUNE_ID CHG_EXEC_AT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT EVENT 2 8 8 8 2 2 8 2 8 8 8 2 2 2 2 2 2 8 2 byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte byte $ getObj VA_STRING_FCM Object VA_STRING_FCM is of type VA_STRING_FCM which has: -Attributes------------------------------------------------------0 NAME STRING 21 byte 1 ALG_NUM SMALL 1 byte 2 DATAQUAL USHORT 2 byte 3 DEVLPNUM ULONG 4 byte 4 FCM_ID STRING 4 byte 5 FCM_MODE USMALL 1 byte 6 INITMODE USMALL 1 byte 7 INIT_FLG USMALL 1 byte 8 INIT_OUT FLOAT 4 byte 9 INPUT_1 LONG 4 byte 10 OUT_MODE SMALL 1 byte 11 RESULT FLOAT 4 byte 12 WORST_DQ USMALL 1 byte 13 SVALUE STRING 41 byte -Operations------------------------------------------------------0 Delete OPERATION 0 byte 1 Deactivate OPERATION 0 byte 2 Copy OPERATION 21 byte 3 NormalOperation OPERATION 0 byte 4 TAKE_CONTROL OPERATION 4 byte 5 PUT_ALG_NUM OPERATION 1 byte 6 PUT_DATAQUAL OPERATION 2 byte 7 PUT_DEVLPNUM OPERATION 4 byte 8 PUT_FCM_ID OPERATION 4 byte 9 PUT_FCM_MODE OPERATION 1 byte 10 PUT_INITMODE OPERATION 1 byte 11 PUT_INIT_FLG OPERATION 1 byte 12 PUT_INIT_OUT OPERATION 4 byte 13 PUT_INPUT_1 OPERATION 4 byte 14 PUT_OUT_MODE OPERATION 1 byte 15 PUT_RESULT OPERATION 4 byte 16 PUT_WORST_DQ OPERATION 1 byte 17 PUT_SVALUE OPERATION 41 byte 114 114 -Events----------------------------------------------------------0 DUMMY_EVENT EVENT 4 byte 1 CHG_ALG_NUM EVENT 2 byte 2 CHG_DATAQUAL EVENT 4 byte 3 CHG_DEVLPNUM EVENT 8 byte 4 CHG_FCM_ID EVENT 8 byte 5 CHG_FCM_MODE EVENT 2 byte 6 CHG_INITMODE EVENT 2 byte 7 CHG_INIT_FLG EVENT 2 byte 8 CHG_INIT_OUT EVENT 8 byte 9 CHG_INPUT_1 EVENT 8 byte 10 CHG_OUT_MODE EVENT 2 byte 11 CHG_RESULT EVENT 8 byte 12 CHG_WORST_DQ EVENT 2 byte 13 CHG_SVALUE EVENT 82 byte ABB IMS/AEH Advant Station Interface to the PI System 115 115 Appendix G: Mounting an NT CD ROM on an HP-UX Advant Station Recent Advant Stations are not necessarily equipped with a DAT tape drive, so having the compressed tar file on a tape would not help. But usually, there is a CD ROM drive. It may happen that you have a CD burnt (and readable) on an NT computer and you need to transfer the Unix related file(s) to the Advant Station. Sometimes, there is no PC with a CD ROM drive in the neighborhood from which you could ftp the files. In Windows Explorer, the files on CD may appear as follows: To transfer abbimspi_5.05.tar.Z to the HP-UX box, do the following: (The example actions have been performed under the root account.) Insert the CD into the CD ROM drive of the Advant Station. You need a directory /cdrom. Create a working directory for the file, for example /tmp/abbimspi. # mkdir /tmp/abbimspi Mount the CDROM drive. # mount /cdrom Navigate to the file. # cd /cdrom # ls –l total 12 dr-xr-xr-x dr-xr-xr-x dr-xr-xr-x 1 4294967295 4294967295 1 4294967295 4294967295 1 4294967295 4294967295 ABB IMS/AEH Advant Station Interface to the PI System 2048 May 10 15:32 CD05(B~1 2048 May 24 14:41 INTERF~1 2048 May 24 14:44 INTERF~2 117 117 Appendix F: Attribute Lists via getObj # cd INTERF~2 # ls –l total 4 dr-xr-xr-x 1 4294967295 4294967295 2048 May 24 14:44 ABBIMSPI 1 1 1 1 1 1 1 2048 2048 2048 2048 2048 2048 2048 # cd ABBIMSPI # ls –l total 28 dr-xr-xr-x dr-xr-xr-x dr-xr-xr-x dr-xr-xr-x dr-xr-xr-x dr-xr-xr-x dr-xr-xr-x 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 May May May May May May May 24 24 24 24 24 24 24 14:44 14:44 14:44 14:44 14:44 14:44 14:44 321REL 423REL 424REL 500REL 501REL 504REL 505VER # cd 505VER # ls –l total 8 dr-xr-xr-x dr-xr-xr-x 1 4294967295 4294967295 1 4294967295 4294967295 2048 May 24 14:44 HPUX 2048 May 24 14:44 NTI # cd HPUX # ls –l total 2592 -r-xr-xr-x -r-xr-xr-x -r-xr-xr-x -r-xr-xr-x -r-xr-xr-x -r-xr-xr-x 1 1 1 1 1 1 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 683520 103080 292947 44892 149989 45304 Dec Dec Dec Dec Dec Dec 27 27 27 27 27 27 2001 2001 2001 2001 2001 2001 ABBIMS.DOC;1 ABBIMSPI.O;1 ABBIMS~1.EXE;1 ABBIMS~1.TXT;1 ABBIMS~1.Z;1 ABBIMS~1.ZIP;1 Copy the file you need on Unix to the working directory and rename it to the original name. Note the double quotes around the file name! Uncompress and un-tar the file and we’re set. # cp “ABBIMS~1.Z;1” /tmp/abbimspi # cd /tmp/abbimspi # ls –l total 320 -r-xr-xr-x 1 root sys 118 118 149989 Jul 18 09:29 ABBIMS~1.Z;1 # # # x x x x x x x x x x x x x mv “ABBIMS~1.Z;1” abbimspi_5.05.tar.Z uncompress abbimspi_5.05.tar.Z tar –xvf abbimspi_5.05.tar ./abbimspi.o, 103080 bytes, 202 tape blocks ./uniint.o, 84432 bytes, 165 tape blocks ./apiMake, 1970 bytes, 4 tape blocks ./apiMakefile, 2652 bytes, 6 tape blocks ./StartPIAPIOnBoot, 39 bytes, 1 tape blocks ./ifinfo, 341 bytes, 1 tape blocks ./ifstop, 415 bytes, 1 tape blocks ./abbimspi_cyclic.sh.new, 1041 bytes, 3 tape blocks ./abbimspi_demand.sh.new, 1224 bytes, 3 tape blocks ./abbimspi_event.sh.new, 1043 bytes, 3 tape blocks ./abbimscp.o, 7684 bytes, 16 tape blocks ./abbimscp.mak, 210 bytes, 1 tape blocks ./release_notes, 44309 bytes, 87 tape blocks Finally, dismount the CD ROM drive. There must not be any open files from this directory or a window pointing to it. You can remove the CD afterwards. # umount /cdrom ABB IMS/AEH Advant Station Interface to the PI System 119 119 Revision History Date Author Comments 24-Nov-96 KP Written 18-Dec-96 KP Added version overview and getObj hints 12-Mar-97 KP Modifications for Version 3.x (DoRequest support) 26-Apr-97 KP Revised 01-Nov-97 KP Added more HP-UX and IMS hints 25-Feb-98 KP Hints for increasing Shared Memory on the Advant Station 16-May-98 KP Remarks regarding support for IMS 2.0 on HP-UX 10.20, hints for better performance, description of control program, 31-May-98 KP Added description of /id=…startup parameter 10-Jul-98 KP Revised, Support of additional object types 29-Oct-98 KP Add exact paths for IMS 2.0 (IMSstop, config.cfg) 13-Jan-99 KP Revised, Interface stop via Control Program possible (V3.21) 30-Jun-99 MMG Add sections for Intel-NT version (v4.0). 02-Dec-99 KP Add new requirements for version 4.x Add remark for negative /du argument in event interfaces Add practical experiences for startup on NT. 20-Mar-00 KP Add startup parameter /ndw 04-Apr-00 KP Add information about ABB’s node down patch 05-Apr-00 KP Add info that output to TEXT objects is supported 22-Dec-00 KP String tag support 20-May-01 KP Add description of startup parameter /startup_delay Remove all references to IMS 1.x and HP-UX 9.x. 10-Jul-01 KP Revised. Mention enhanced sitestop in PI-API 1.3.4. 12-Oct-01 KP Refine registry key info for SharedMemory on NT 13-Feb-02 KP Manual re-written for release 5.07, modified according to the Interface Skeleton Version 1.11 standard 01-Jul-02 KP Revised and updated for version 5.09 08-Aug-02 CG Formatting; fixed headers & footers 28-Mar-03 KP Added description of /timsrc switch Added Appendix describing mounting an NT CDROM on an HP-UX machine ABB IMS/AEH Advant Station Interface to the PI System 121 121 Revision History Date 122 122 Author Comments 02-Apr-03 KP Removed description of ABB’s IMSstop script modification, documented graceful interface stop using Process Supervision instead. 04-Apr-03 KP Added information on how to extract a tag list from a MOD 300 system 17-Apr-03 KP Added recommendation for /dbuniint=0x0008 startup parameter 23-Apr-03 KP More AEH version information in Introduction 30-Apr-03 KP Change names of sample startup files (.bat.new, .sh.new) 04-Jun-03 CG Minor formatting changes; added ICU 23-Jun-03 KP Minor revision 28-Jul-03 MKP Added interface ICU control screenshot. 23-Oct-03 KP Corrected * Source of Timestamps in the 'Supported Features' table to also mention PI Server time. 22-Mar-04 KP Pointed out that the interface does not currently support PI-API versions greater then 1.3.4 on HP-UX. No restrictions for the Windows version.