BSAP OPC Items
Standard Items
SeeĀ Device Standard Items.
Protocol Items
Valid BSAP items are defined by the program that the device is running.
- Only the list and array numbers that are implemented by the program will exist within the device.
- Signals can have any name that the programmer gives them, following certain rules.
- These rules differ for Network 3000 devices, which use ACCOL, and ControlWave devices, which don't.
- The RTU Type in the Device tab determines which set(s) of rules will be used by ACM to validate items.
Rules for Network 3000 ACCOL Signal Names
- ACCOL signal names have three parts that are separated by periods: Base.Extension.Attribute
- The maximum length of the Base is 8 characters.
- The Base must contain at least one character and start with '#' or a letter.
- Other characters in the Base must be letters or numbers.
- The maximum length of the Extension is 6 characters.
- The Extension may be empty, but the periods that separate it from the Base and Attribute must still be included.
- The characters in the Extension must be letters or numbers.
- The maximum length of the Attribute is 4 characters.
- The Attribute may be empty, but the period that separates it from the Extension must still be included.
- The characters in the Extension must be letters or numbers.
Rules for ControlWave Signal Names
- The maximum length of a ControlWave signal name is 128 characters.
- A ControlWave signal name must start with a letter, or an underscore, or the string "@GV.".
- Other characters in the name must be letters, numbers, underscores, or periods.
- Some ControlWave devices also support signal names that use the Network 3000 ACCOL format.
Templates for BSAP Items in OPC Browse
If an Item Browse File is configured in the Device tab, OPC browse will display item names from the file.Ā If not (or if certain types of items are not included in the Item Browse File), the template names will be displayed instead (or as well).
Select the template of the same type as the item you want to poll, then edit it to match the actual valid item name.
Analog Signal Names
Item | Data Type | Description |
---|---|---|
BASE.. BASE.EXT. BASE..ATT BASE.EXT.ATT | R4 | These items are templates for analog signals that follow the Network 3000 ACCOL naming conventions. See the Rules for Network 3000 ACCOL Signal Names listed above. Analog signal values are 4-byte floats. To identify a signal name item as being an analog, do not use the &L or &S modifier. If the data type is incorrectly identified (that is, if the analog signal name format is used for a logical signal or string signal), the value will be converted. See the section below on BSAP OPC Items#Item Conversions. |
CTRLWAVE_ITEM | R4 | This item is a template for analog signals that follow the ControlWave naming conventions. See the Rules for ControlWave Signal Names listed above. |
Logical Signal Names
Item | Data Type | Description |
---|---|---|
BASE..&L BASE.EXT.&L BASE..ATT&L BASE.EXT.ATT&L | BOOL | These items are templates for logical signals that follow the Network 3000 ACCOL naming conventions. See the Rules for Network 3000 ACCOL Signal Names listed above. Logical signal values are 1-byte boolean values (0 or 1). To identify a signal name item as being a logical, use the &L modifier. If the data type is incorrectly identified (that is, if the &L modifier is used for an analog signal or string signal), the value will be converted. See the section below on BSAP OPC Items#Item Conversions. An '!' may be added after the &L modifier (for example, BASE.EXT.ATT&L!) to invert the boolean value. |
CTRLWAVE_ITEM&L | BOOL | This item is a template for logical signals that follow the ControlWave naming conventions. See the Rules for ControlWave Signal Names listed above. |
String Signal Names
Item | Data Type | Description |
---|---|---|
BASE..&S BASE.EXT.&S BASE..ATT&S BASE.EXT.ATT&S | STRING | These items are templates for string signals that follow the Network 3000 ACCOL naming conventions. See the Rules for Network 3000 ACCOL Signal Names listed above. String signal values are strings of up to 64 characters. To identify a signal name item as being a string, use the &S modifier. If the data type is incorrectly identified (that is, if the &S modifier is used for an analog signal or logical signal), the value will be converted. See the section below on BSAP OPC Items#Item Conversions. |
CTRLWAVE_ITEM&S | STRING | This item is a template for string signals that follow the ControlWave naming conventions. See the Rules for ControlWave Signal Names listed above. |
Signal Name Type & Inhibits Items
Item | Data Type | Description |
---|---|---|
BASE..&T BASE.EXT.&T BASE..ATT&T BASE.EXT.ATT&T | I2 I2 I2 I2 | These items are templates for the Type & Inhibits items of signals that follow the Network 3000 ACCOL naming conventions. See the "Rules for Network 3000 ACCOL Signal Names" listed above. Signal name Type & Inhibits items are set to values determined by the bits of the Type & Inhibits byte when the signal name is polled.
The Type & Inhibits byte encodes the following information:
|
CTRLWAVE_ITEM&T | I2 | These items are templates for the Type & Inhibits items of signals that follow the ControlWave naming conventions. See the "Rules for ControlWave Signal Names" listed above. |
Analog Array Names
Item | Data Type | Description |
---|---|---|
#A- An.x.y | R4 | This item is a template for analog array elements, where n is the array number (1-255), x is the row number (1-65535), and y is the column number (1-65535) of the element. The protocol driver puts different rows into different messages. If the array is a single dimension array of one column but multiple rows, the column number and the row number can be reversed so the BSAP protocol driver will put the different elements of the array in the same message. |
Analog Array Row Names
Item | Data Type | Description |
---|---|---|
#A-An.x | Array of R4s | This item is a template for a row of elements of an analog array, where n is the array number (1-255) and x is the row number (1-65535). The entire row is sent to and from the client as one item. |
Logical Array Names
Item | Data Type | Description |
---|---|---|
#L-An.x.y | BOOL | This item is a template for logical array elements, where n is the array number (1-255), x is the row number (1-65535), and y is the column number (1-65535) of the element. Note The protocol driver puts different rows into different messages. If the array is a single dimension array of one column but multiple rows, the column number and the row number can be reversed so the BSAP protocol driver will put the different elements of the array in the same message. |
Logical Array Row Names
Item | Data Type | Description |
---|---|---|
#L-An.x | Array of BOOLs | This item is a template for a row of elements of an analog array, where n is the array number (1-255) and x is the row number (1-65535). The entire row is sent to and from the client as one item. |
List Names
Item | Data Type | Description |
---|---|---|
#Listn.x #Listn.x&L #Listn.x&S #Listn.x&T | R4 BOOL STRING I2 or BOOL | These items are templates for list elements, where n is the list number (1-65535) and x is the number of the element in the list (1-65535). The first element in a list is number 1; the second element is number 2, and so on. Not using an & modifier indicates that the list element is an analog, which has a 4-byte float value. Using an &L modifier indicates that the list element is a logical, which has a 1-byte boolean value (0 or 1).Ā An '!' may be added after the &L modifier (for example, Listn.x&L!) to invert the boolean value. Using an &S modifier indicates that the list element is a string, which has a string value of up to 64 characters. If the data type is incorrectly identified (for example, if the analog name format is used for a logical signal or string signal), the value will be converted. See the section below on BSAP OPC Items#Item Conversions. Using an &T modifier indicates a Type & Inhibits item; see the section Signal Name Type & Inhibits Items for a full explanation of these |
Extended Items
The BSAP protocol implementation supports the following item names for use by client applications:
Item | Data Type | Description |
---|---|---|
#ACCOL_VERSION | I4 | Poll the ACCOL load version number |
#LOG_EFM_ITEMS | I4 | Writes status information to the logger for all EFM items. |
#LOG_ITEM_LIST | I4 | Writes status information to the logger for all items that have been advised to the device. |
#LOG_READ_QUEUE | I4 | Writes status information to the logger for all poll messages in the device read queue. |
#LOG_WRITE_QUEUE | I4 | Writes status information to the logger for all poll messages in the device write queue. |
#READ_BY_NAME | BOOL | Forces all items currently being read by address to be read by name (one time). |
#REQUEST_NRT | BOOL | Forces a TS/NRT message to be sent at the start of the next poll cycle. |
#TEST_VERSION | I4 | Sets the stored MSD version number to a different value. This will force the MSD version to be reread from the device. |
#TIME_HOUR #TIME_MIN #TIME_SEC #TIME_DAY #TIME_MON #TIME_YEAR #TIME_JULIAN_DAY #TIME_JULIAN_4SEC #TIME_JULIAN_20MSEC | R4 | Poll the system date and time using the RDB extension read date/time message. Note that: a) These items are read-only and cannot be used to set the time. b) Not all BSAP RTUs support this RDB extension message type. |
LastArchive1Record/n | DATE | Timestamp of the latest User1 Upload record collected from Meter n. |
LastArchive2Record/n | DATE | Timestamp of the latest User2 Upload record collected from Meter n. |
LastArchive3Record/n | DATE | Timestamp of the latest User3 Upload record collected from Meter n. |
LastArchive4Record/n | DATE | Timestamp of the latest User4 Upload record collected from Meter n. |
LastArchive5Record/n | DATE | Timestamp of the latest User5 Upload record collected from Meter n. |
LastArchive6Record/n | DATE | Timestamp of the latest User6 Upload record collected from Meter n. |
LastArchive7Record/n | DATE | Timestamp of the latest User7 Upload record collected from Meter n. |
LastArchive8Record/n | DATE | Timestamp of the latest User8 Upload record collected from Meter n. |
LastArchive9Record/n | DATE | Timestamp of the latest User9 Upload record collected from Meter n. |
LastArchive10Record/n | DATE | Timestamp of the latest User10 Upload record collected from Meter n. |
LastArchive11Record/n | DATE | Timestamp of the latest User11 Upload record collected from Meter n. |
LastArchive12Record/n | DATE | Timestamp of the latest User12 Upload record collected from Meter n. |
LastArchive13Record/n | DATE | Timestamp of the latest User13 Upload record collected from Meter n. |
LastArchive14Record/n | DATE | Timestamp of the latest User14 Upload record collected from Meter n. |
LastArchive15Record/n | DATE | Timestamp of the latest User15 Upload record collected from Meter n. |
LastArchive16Record/n | DATE | Timestamp of the latest User16 Upload record collected from Meter n. |
LastAuditRecord | DATE | Timestamp of the latest Audit Upload record collected from the device. |
LastDailyRecord/n | DATE | Timestamp of the latest Daily Upload record collected from Meter n. |
LastHourlyRecord/n | DATE | Timestamp of the latest Hourly Upload record collected from Meter n. |
LastMinuteRecord/n | DATE | Timestamp of the latest Minute Upload record collected from Meter n. |
LastRtuConfigRead/n | DATE | Timestamp of the most recent read of the Meter Configuration for Meter n. |
LastTimeSync | DATE | Timestamp of the last time synch. |
LastTimeSyncResult | I4 | Result code for the last time synch: 0 for no error or alarm. Error and alarm result code values are set in the TimeSync object. |
MoveArchive1/n | I2 | Move User1 Upload position pointer for Meter n: positive value moves backward, negative forward. |
MoveArchive2/n | I2 | Move User2 Upload position pointer for Meter n: positive value moves backward, negative forward. |
MoveArchive3/n | I2 | Move User3 Upload position pointer for Meter n: positive value moves backward, negative forward. |
MoveArchive4/n | I2 | Move User4 Upload position pointer for Meter n: positive value moves backward, negative forward. |
MoveArchive5/n | I2 | Move User5 Upload position pointer for Meter n: positive value moves backward, negative forward. |
MoveArchive6/n | I2 | Move User6 Upload position pointer for Meter n: positive value moves backward, negative forward. |
MoveArchive7/n | I2 | Move User7 Upload position pointer for Meter n: positive value moves backward, negative forward. |
MoveArchive8/n | I2 | Move User8 Upload position pointer for Meter n: positive value moves backward, negative forward. |
MoveArchive9/n | I2 | Move User9 Upload position pointer for Meter n: positive value moves backward, negative forward. |
MoveArchive10/n | I2 | Move User10 Upload position pointer for Meter n: positive value moves backward, negative forward. |
MoveArchive11/n | I2 | Move User11 Upload position pointer for Meter n: positive value moves backward, negative forward. |
MoveArchive12/n | I2 | Move User12 Upload position pointer for Meter n: positive value moves backward, negative forward. |
MoveArchive13/n | I2 | Move User13 Upload position pointer for Meter n: positive value moves backward, negative forward. |
MoveArchive14/n | I2 | Move User14 Upload position pointer for Meter n: positive value moves backward, negative forward. |
MoveArchive15/n | I2 | Move User15 Upload position pointer for Meter n: positive value moves backward, negative forward. |
MoveArchive16/n | I2 | Move User16 Upload position pointer for Meter n: positive value moves backward, negative forward. |
MoveAudit | I2 | Move Audit Upload position pointer: positive value moves backward. |
MoveDaily/n | I2 | Move Daily Upload position pointer for Meter n: positive value moves backward, negative forward. |
MoveHourly/n | I2 | Move Hourly Upload position pointer for Meter n: positive value moves backward, negative forward. |
MoveMinute/n | I2 | Move Minute Upload position pointer for Meter n: positive value moves backward, negative forward. |
ResetArchive1/n | BOOL | Reset User1 Upload position pointer for Meter n. |
ResetArchive2/n | BOOL | Reset User2 Upload position pointer for Meter n. |
ResetArchive3/n | BOOL | Reset User3 Upload position pointer for Meter n. |
ResetArchive4/n | BOOL | Reset User4 Upload position pointer for Meter n. |
ResetArchive5/n | BOOL | Reset User5 Upload position pointer for Meter n. |
ResetArchive6/n | BOOL | Reset User6 Upload position pointer for Meter n. |
ResetArchive7/n | BOOL | Reset User7 Upload position pointer for Meter n. |
ResetArchive8/n | BOOL | Reset User8 Upload position pointer for Meter n. |
ResetArchive9/n | BOOL | Reset User9 Upload position pointer for Meter n. |
ResetArchive10/n | BOOL | Reset User10 Upload position pointer for Meter n. |
ResetArchive11/n | BOOL | Reset User11 Upload position pointer for Meter n. |
ResetArchive12/n | BOOL | Reset User12 Upload position pointer for Meter n. |
ResetArchive13/n | BOOL | Reset User13 Upload position pointer for Meter n. |
ResetArchive14/n | BOOL | Reset User14 Upload position pointer for Meter n. |
ResetArchive15/n | BOOL | Reset User15 Upload position pointer for Meter n. |
ResetArchive16/n | BOOL | Reset User16 Upload position pointer for Meter n. |
ResetAudit | BOOL | Reset Audit Upload position pointer. |
ResetDaily/n | BOOL | Reset Daily Upload position pointer for Meter n. |
ResetHourly/n | BOOL | Reset Hourly Upload position pointer for Meter n. |
ResetMinute/n | BOOL | Reset Minute Upload position pointer for Meter n. |
RetrieveHistory | BOOL | Retrieve History |
TimeSync | I2 | Triggers a Time Sync to occur. |
Item Conversions
The BSAP protocol module supports item conversion from logical to analog and from analog to logical, from logical to string and from string to logical, or from analog to string and string to analog. The default signal type is analog (R4).
To tell the protocol module that a signal is a logical value (bool), append anĀ &L to the end of the signal name. To tell the protocol module that a signal is a string value (BSTR), append anĀ &S to the end of the signal name.
If theĀ &L is left off from a logical signal name, the value received from the device will be converted from a logicalĀ 0 to anĀ R4 value ofĀ 0.0, or a logicalĀ 1 will be converted to an analog value ofĀ 1.0 before sending to the client. If theĀ &S is left off from a string signal name, the ASCII string (Ā -999.9, -Ā 9.999e-011 ) received from the device will be converted to an analog value before sending to the client. The analog value received from the client will be converted to its ASCII string equivalent (Ā -999.9, -9.999e-011) before sending to the device.
TheĀ &S is not normally appended to a logical signal name, but if anĀ &S is appended to a logical signal name, the value received from the device will be converted from a logical
1 to an ASCII string value ofĀ On, or an ASCII string value ofĀ On (case insensitive) to a logical value ofĀ 1 before sending to the client. Also, a logicalĀ 0 will be converted to an ASCII string value ofĀ Off, or an ASCII string value ofĀ Off (case insensitive) will be converted to a logical value of 0 before sending to the client.
TheĀ &L andĀ &S are not normally appended to an analog signal name, but if either is, the same conversion described above will occur. It is not necessary to append theĀ &L to a logical array name. It is not valid to append theĀ &S to a logical array name. It is not valid to append theĀ &L orĀ &S to an analog array name. All conversions that apply to signal values also apply to the same type of signal in a list.
For assistance, please submit a ticket via our Support Portal, email autosol.support@autosoln.com or call 281.286.6017 to speak to a support team member.