Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

...

Data Process TableValues
ChannelMaster Channel used for process logic and obtaining RTDB data.
RTU

Field Unit address used for process logic and obtaining RTDB data.

Type

For the Generic-Registers process, the options include:

  • Generic Data Block – generic process for creating Report out of RTDB or file data.
  • DISABLE THIS ROW – use this to temporarily disable one or more process rows.
CommStatReg

RTDB register address containing the first of 5 Field Unit communication status registers (register should contain 7=good, 0=bad comms). If the communication status is checked and found to be in a failed state, the processing on this row will be skipped.

Following the convention of the Field Unit's Comm Status Holdreg, use a 40,xxx register to point to the communication status register in the System Status RTU, or use a 30,xxx register to point to the communication status register in the Field Unit's own RTDB.

Set CommStatReg to 0 to check protocol status of the Master Channel's protocol driver instead of a Comm Status Holdreg register.

Set CommStatReg to -1 to ignore the communication status. Process logic for this row will occur regardless of comms status.

ReportSelect one Report definition to define the structure of the output data report produced by this process row.
DataRegs 

If this row uses a Process-RTDB-Report or Process-PBuf-Report type:

If DataRegs is non-zero, that RTDB register in Channel/RTU is used as the "base register" for Report generation. The Report defines offsets from DataRegs.

This option may be used when more than one block of similar data is stored in the RTDB; thus, the same Report can be reused by setting DataRegs to the starting register of each block of registers. (For example: Field Units 1 and 2 each have analogous blocks of data at 40001-40020 and 40101-40120. Four rows could be defined in Generic Registers with different RTU address (1 and 2) and DataRegs column (starting address 40001 and 40101), and Report defined with data elements at Offset 0 through 19; the same Report would be called four different times using data from different units and different blocks of data).

If DataRegs is zero, the Report must be defined using actual register addresses in the RTDB.

This option might be used, for example, if a set of numbered addresses with similar data is used in multiple Channel/RTU/RTDB. The registers do not have to be in a contiguous block of addresses. (For example: Field Units 1 through 10 each have an analogous data at 10001-5 and 40001-40020. Ten rows could be defined in Generic Registers with different RTU addresses, DataRegs set to 0, and the Report defined with data elements at fixed register locations 10001-10005 and 40001-40020; the same Report would be called ten different times using data from different units).

If this row uses a Process-FILE-Report type:

DataRegs should be the RTDB register of a STRING type value, where the Tag Name of the register must be defined as the name of the text file containing data to process. The directory "/tmp/director/" is added to the beginning of the Tag Name, plus a suffix "_CC_RRRRR" is automatically appended to the Tag Name (where CC is the Channel and RRRRR is RTU/Field Unit address configured on this row, each with leading zeros as needed). The contents of the specified DataRegs RTDB register is unused.

For instance, assume there is a text file containing ASCII data, stored with the filename of  /tmp/director/MyData_01_0005. For this row, configure Channel=1 and RTU=5. If DataRegs is configured as 48001, then the Channel 1, unit 5, Tag Names object should have register 48001 defined with a Tag Name of "MyData". The above filename will be opened and used to generate the output Report.

TrigMode 

The TrigMode option selects a method for triggering the Report generation. See below for more information on the TrigMode options.

For instance, the Report generation logic could be triggered based on timing (day, minute, or hour), on a register value matching a certain condition, or any change in the value of any register in a block of registers.

TrigReg RTDB address in Channel/RTU containing some value to trigger on. See below for a discussion on the TrigMode options.
TrigValue Constant value to use for trigger comparison, or RTDB register containing a value for "Compare Register" TrigMode. See below for a discussion on the TrigMode options.
TrigAdjust 

If a Report generation logic is "triggered," the trigger value in the TrigReg can be modified based on the TrigAdjust option (e.g., to prevent the Report from being immediately triggered again). TrigAdjust options are:

  • None - no modification to TrigReg after Report generation.
  • REMOTE INCREMENT - Increment the trigger value and write it to remote Channel/RTU/TrigReg register. Set TrigWrap and Parm1 to handle roll-over.
  • REMOTE DECREMENT - Decrement the trigger value and write it to remote Channel/RTU/TrigReg register. Once the value decrements to zero, it will not be decremented further.
  • REMOTE ZERO - Set the trigger value to zero and write it to remote Channel/RTU/TrigReg register.
  • RTDB INCREMENT - Increment the trigger value and set the Channel/RTU/TrigReg RTDB register. Set TrigWrap and Parm1 to handle roll-over.
  • RTDB DECREMENT - Decrement the trigger value and set the Channel/RTU/TrigReg RTDB register. Once the value decrements to zero, it will not be decremented further.
  • RTDB ZERO - Set the trigger value to zero and set the Channel/RTU/TrigReg RTDB register.
TrigWrap 

If the TrigAdjust "INCREMENT" option is used, TrigWrap tells at what point the value should roll over to its low ("WrapTo") value. If TrigWrap is greater than 20000, it is used as a register point to a maximum "Increment" value. If less than 20001, it is a constant value.

For instance, if TrigWrap is set to 40001, and the value in 40001 is 30000, then if the TrigReg register will be incremented to 30000, then after the next Report trigger, it will be set to the value in Parm1.

Run The Run value is unused in processing, but it can be used as part of the Report filename (MQTT topic) using the ${RUN#} variable.
Parm1 

If the TrigAdjust "INCREMENT" option is used, Parm1 contains the "WrapTo" value. Once the value rolls over at its maximum limit, it will be set to the constant integer contained in Parm1.

For instance, this may be used to set the minimum roll-over value to 1 instead of 0, if a particular trigger value requires it.

COUNT DataRegs 

(This is the "Parm2" parameter.)

If the TrigMode "CRC" option is used, this value determines the number of sequential registers starting at DataRegs that will be calculated for the CRC, to determine if any of the registers has changed. See below for a discussion on the TrigMode options.

Inhibit Reg Unused
Inhibit Test Unused
Proc-Logic Unused
Comment Optional column, allowing a descriptive comment to be entered for each row in the table. The Comment field is unused in the configuration.

...

  • NONE
    No modification of the TrigReg register.

  • REMOTE INCREMENT, REMOTE DECREMENT, REMOTE ZERO
    When Report is generated, write a value to the field device via its Poll Table, using the Channel/RTU/TrigReg address. The value to be written is either the existing TrigReg value incremented or decremented by 1, or a zero (0). When using REMOTE DECREMENT, the value decreases down to zero and remains there (no wrapping).
    Additional options:
    TrigWrap contains the maximum value for the REMOTE INCREMENT option. If TrigWrap is set to a number >20000, it points to an RTDB register that contains the maximum value; otherwise, the TrigWrap column itself is the (constant) maximum value.
    Parm1 contains the constant "WrapTo" value for the REMOTE INCREMENT option. After the value increments positively past the maximum value, it will be set to Parm1.
    TrigWrap and Parm1 columns are unused for REMOTE DECREMENT or ZERO options.
    For both INCREMENT and DECREMENT options, the TrigReg register value is set directly in the RTDB, in addition to writing the value to the remote device.

  • RTDB INCREMENT, RTDB DECREMENT, RTDB ZERO
    When Report is generated, write a value to the RTDB register configured in Channel/RTU/TrigReg (not sent to the remote device). The value to be written is either the existing TrigReg value incremented or decremented by 1, or a zero (0). When using REMOTE DECREMENT, the value decreases down to zero and remains there (no wrapping).
    Additional options:
    TrigWrap contains the maximum value for the REMOTE INCREMENT option. If TrigWrap is set to a number >20000, it points to an RTDB register that contains the maximum value; otherwise, the TrigWrap column itself is the (constant) maximum value.
    Parm1 contains the constant "WrapTo" value for the REMOTE INCREMENT option. After the value increments positively past the maximum value, it will be set to Parm1.
    TrigWrap and Parm1 columns are unused for REMOTE DECREMENT or ZERO options.


Read-ProtoBuff-Payload Process

Image Modified

The Read-ProtoBuff-Payload process object is used for parsing Google Protobuf-formatted payload messages, typically received through an MQTT subscription.

To publish a Google Protobuf payload, see the Generic-Registers process object instead.


Attributes
Function
Object TypeRead-ProtoBuff-Payload
Parent(s)System → Clients → Automated_Processing → Processes
Instance0


Every row in the Process table points to a Report definition that describes a received Protobuf message. Therefore, the Reports section and at least one Report definition must be defined before the Data Process Table can be configured.


Data Process Table
Values
ChannelMaster Channel used for storing RTDB data.
RTU

Field Unit address used for storing RTDB data.

Type

For the Generic-Registers process, the options include:

  • V2 Read Protobuff Payloads – use Report definition to parse a Protobuf message into RTDB.
  • IGNORE THIS ROW – use this to temporarily disable one or more process rows.
CommStatReg

RTDB register address containing the first of 5 Field Unit communication status registers (register should contain 7=good, 0=bad comms). If the communication status is checked and found to be in a failed state, the processing on this row will be skipped.

Following the convention of the Field Unit's Comm Status Holdreg, use a 40,xxx register to point to the communication status register in the System Status RTU, or use a 30,xxx register to point to the communication status register in the Field Unit's own RTDB.

Set CommStatReg to 0 to check protocol status of the Master Channel's protocol driver instead of a Comm Status Holdreg register.

Set CommStatReg to -1 to ignore the communication status. Process logic for this row will occur regardless of comms status.

ReportSelect one Report definition to define the structure expected from the subscribed data for this process row.
DataRegs 

If DataRegs is non-zero, that RTDB register in Channel/RTU is used as the "base register" for Report generation. The Report defines offsets from DataRegs.

This option may be used when more than one block of similar data is stored in the RTDB; thus, the same Report can be reused by setting DataRegs to the starting register of each block of registers. (For example: Field Units 1 and 2 each have analogous blocks of data at 40001-40020 and 40101-40120. Four rows could be defined in Read-ProtoBuff-Payload with different RTU address (1 and 2) and DataRegs column (starting address 40001 and 40101), and Report defined with data elements at Offset 0 through 19; the same Report would be called four different times using data from different units and different blocks of data).

If DataRegs is zero, the Report must be defined using actual register addresses in the RTDB.

This option might be used, for example, if a set of numbered addresses with similar data is used in multiple Channel/RTU/RTDB. The registers do not have to be in a contiguous block of addresses. (For example: Field Units 1 through 10 each have an analogous data at 10001-5 and 40001-40020. Ten rows could be defined in Read-ProtoBuff-Payload with different RTU addresses, DataRegs set to 0, and the Report defined with data elements at fixed register locations 10001-10005 and 40001-40020; the same Report would be called ten different times using data from different units).

TrigMode 

The TrigMode option selects a method to use in response to a receiving and parsing a Protobuf payload message. If either of the "WRITE" options are selected, it can be used by another process to indicate that we have received a message, and perhaps to take some further action. TrigMode options are:

  • DON'T Write to TrigReg – do nothing after parsing message.
  • WRITE CONSTANT TrigVal to TrigReg – after parsing message, store the constant value configured in the TrigValue column into an RTDB register configured in the TrigReg column.
  • WRITE TrigVal REGISTER to TrigReg – after parsing message, take the value from an RTDB register (configured in the TrigValue column) and store it into an RTDB register configured in the TrigReg column. This allows a variable value to be used, which could be set by some other process logic.
TrigReg RTDB address in Channel/RTU to write a trigger value, indicating a received message, if configured by TrigMode.
TrigValue If TrigMode selects a trigger action, this should either be a constant value to write, or an RTDB register address containing a value to write.
TrigAdjust 

Unused

TrigWrap 

Unused

Run Unused
Parm1 

Unused

Parm2 

Unused

Inhibit Reg Unused
Inhibit Test Unused
Proc-Logic Unused
Comment Optional column, allowing a descriptive comment to be entered for each row in the table. The Comment field is unused in the configuration.


Device TimeSync Process

The Time-Syncs process object uses special program logic to synchronize the clock in either an Omni Modbus-compatible flow computer or an Allen Bradley PLC.

...

Data Process TableValues
ChannelMaster Channel of the Omni or Allen Bradley device.
RTU

Field Unit address useof the Omni or Allen Bradley device.

Type

For the Time-Syncs process, the options include:

  • Omni Time Sync – special logic for sending time to Omni flow computer 
  • DF1 Time Sync – special logic for sending time to Allen Bradley PLC
  • Ignore This Row – use this to temporarily disable one or more process rows.
CommStatReg

RTDB register address containing the first of 5 Field Unit communication status registers (register should contain 7=good, 0=bad comms). If the communication status is checked and found to be in a failed state, the processing on this row will be skipped.

Following the convention of the Field Unit's Comm Status Holdreg, use a 40,xxx register to point to the communication status register in the System Status RTU, or use a 30,xxx register to point to the communication status register in the Field Unit's own RTDB.

Set CommStatReg to 0 to check protocol status of the Master Channel's protocol driver instead of a Comm Status Holdreg register.

Set CommStatReg to -1 to ignore the communication status. Process logic for this row will occur regardless of comms status.

ReportUnused
DataRegs 

Starting register in the RTDB for the device timestamp registers polled from the Omni or Allen Bradley device. In the Allen Bradley, some custom programming is required to place the timestamp into six consecutive registers (Year, Month, Day, Hour, Minute, Second), and a seventh register is written to by the RediGate, which the PLC must take the new timestamp and store into the PLC's clock. For the Omni, the RediGate will read the standard six timestamp registers (Omni registers 3867-3872: Hour, Minute, Second, Month, Day, Year).

TrigMode 

Unused

TrigReg 

RTDB address in Channel/RTU containing a trigger to synchronize the time whenever the TrigReg register is non-zero. This can be used, for instance, to read the "Power Fail" flag (Omni register 1829).

TrigValue Constant value to write to the device after the time has been synchronized. The value is written via the RTDB register (and Poll Table) specified in the TrigWrap column. This can be used, for instance, to write to the "Reset Power Failed" flag (Omni register 1713).
TrigAdjust Unused
TrigWrapRTDB register to write the TrigValue after the time has been synchronized (sent to the device via the Poll Table).
Hour

(This is the "Run" parameter.)

Optional parameter, can be used to automatically write the timestamp to the device once/day at a certain Hour and Minute.

Minute

(This is the "Parm1" parameter.)

Optional parameter, can be used to automatically write the timestamp to the device once/day at a certain Hour and Minute.

Parm2 Unused
Inhibit Reg Unused
Inhibit Test Unused
Proc-Logic Unused
Comment Optional column, allowing a descriptive comment to be entered for each row in the table. The Comment field is unused in the configuration.

...

AttributesFunction
Object TypeHeart-Beat-Monitor
Parent(s)System → Clients → Automated_Processing → Processes
Instance0


Every row in the Process table handles the heartbeat monitoring for one field device. The Heart-Beat-Monitor process is an exception, in that it does not require a Report object to be defined.

Data Process TableValues
ChannelMaster Channel used for the PLC.
RTU

Field Unit address used for the PLC.

Type

For the Heart-Beat-Monitor process, the options include:

  • Heartbeat Monitor – special logic for PLC heartbeat monitoring and MQTT death certificates
  • Ignore This Row – use this to temporarily disable one or more process rows.
CommStatReg

RTDB register address containing the first of 5 Field Unit communication status registers (register should contain 7=good, 0=bad comms). If the communication status is checked and found to be in a failed state, the processing on this row will be skipped.

Following the convention of the Field Unit's Comm Status Holdreg, use a 40,xxx register to point to the communication status register in the System Status RTU, or use a 30,xxx register to point to the communication status register in the Field Unit's own RTDB.

Set CommStatReg to 0 to check protocol status of the Master Channel's protocol driver instead of a Comm Status Holdreg register.

Set CommStatReg to -1 to ignore the communication status. Process logic for this row will occur regardless of comms status.

ReportUnused
DataRegs 

Unused

TrigMode Unused
TrigReg RTDB address in Channel/RTU containing the heartbeat value polled from the PLC.
TrigValue Constant number of seconds, after which an unchanging heartbeat value will trigger the fail condition and send MQTT death certificate.
TrigAdjust Unused
TrigWrap 

Unused

Run Unused
Parm1 

Unused

Parm2 

Unused

Inhibit Reg Unused
Inhibit Test Unused
Proc-Logic Unused
Comment Optional column, allowing a descriptive comment to be entered for each row in the table. The Comment field is unused in the configuration.

...

Data Process TableValues
ChannelMaster Channel of the Omni Modbus unit used for process logic and obtaining RTDB data.
RTU

Field Unit address of the Omni Modbus unit used for process logic and obtaining RTDB data.

Type

For the Omni-Modbus-Archives process, the options include:

  • OMNI Modbus Archive – logic to retrieve and publish batch/ticket archives for an Omni Modbus flow computer.
  • Spirit Modbus Archive – logic for Spirit flow computer (same as Omni Modbus logic?)
  • Ignore This Row – use this to temporarily disable one or more process rows.
CommStatReg

RTDB register address containing the first of 5 Field Unit communication status registers (register should contain 7=good, 0=bad comms). If the communication status is checked and found to be in a failed state, the processing on this row will be skipped.

Following the convention of the Field Unit's Comm Status Holdreg, use a 40,xxx register to point to the communication status register in the System Status RTU, or use a 30,xxx register to point to the communication status register in the Field Unit's own RTDB.

Set CommStatReg to 0 to check protocol status of the Master Channel's protocol driver instead of a Comm Status Holdreg register.

Set CommStatReg to -1 to ignore the communication status. Process logic for this row will occur regardless of comms status.

ReportSelect one Report definition to define the structure of the output data report produced by this process row. Because the Omni-Modbus-Archives process deals with Modbus register-based polling, the Report must be a Process-RTDB-Report type.
DataRegs 

If DataRegs is non-zero, that RTDB register in Channel/RTU is used as the "base register" for Report generation. The Report defines offsets from DataRegs. For the Omni-Modbus-Archives process, this will generally be the block of data containing the latest archive record.

This option may be used when more than one block of similar data is stored in the RTDB; thus, the same Report can be reused by setting DataRegs to the starting register of each block of registers. (e.g., Field Units 1 and 2 each have an analogous block of data at 40001-40020 and 40101-40120. If more than one archive is obtained, multiple rows can be defined in this table for the same RTU address, and rows for each Modbus flow computer, with each row calling one or more Report definitions.

If DataRegs is zero, the Report must be defined using actual register addresses in the RTDB.

TrigMode 

Unused

TrigReg RTDB address in Channel/RTU containing the first of three registers containing the Max, Current, and Requested Record for the archive.
TrigValue Unused
TrigAdjust 

Unused

TrigWrap Unused
RunThe Run value is unused in processing, but it can be used as part of the Report filename (MQTT topic) using the ${RUN#} variable to identify the run number if the flow meter contains archives for multiple flow.
SOS-Enable

(This is the "Parm1" parameter.)

This must be set to the RTDB register used in the SOS table that enables and disables the poll for the actual archive data record. The processing logic will set this register to True (or 1) to enable the archive poll, and set it to False (or 0) once the record has been received.

Parm2 Unused
Inhibit Reg Unused
Inhibit Test Unused
Proc-Logic Unused
Comment Optional column, allowing a descriptive comment to be entered for each row in the table. The Comment field is unused in the configuration.

...

Data Process TableValues
ChannelMaster Channel of the Omni Modbus unit used for process logic and obtaining CMD 65 file data.
RTU

Field Unit address of the Omni Modbus unit used for process logic and obtaining CMD 65 file data.

Type

For the Generic Registers process, the options include:

  • OMNI-7K Batch ASCII Archive – logic to retrieve and publish batch/ticket archive for Omni 7000 using Cmd65.
  • OMNI-7K Snapshot ASCII Archive – logic for to retrieve and publish Snapshot archive for Omni 7000 using Cmd65.
  • OMNI-6K Batch ASCII Archive – logic to retrieve and publish batch/ticket archive for Omni 6000 using Cmd65.
  • OMNI-7K ALARM – logic to retrieve and publish Alarm archive for Omni 7000 using Cmd65.
  • OMNI-7K AUDIT MEASUREMENT – logic to retrieve and publish Measurement Audit archive for Omni 7000 using Cmd65.
  • OMNI-7K AUDIT SYSTEM – logic to retrieve and publish System Audit archive for Omni 7000 using Cmd65.
  • Ignore This Row – use this to temporarily disable one or more process rows.
CommStatReg

RTDB register address containing the first of 5 Field Unit communication status registers (register should contain 7=good, 0=bad comms). If the communication status is checked and found to be in a failed state, the processing on this row will be skipped.

Following the convention of the Field Unit's Comm Status Holdreg, use a 40,xxx register to point to the communication status register in the System Status RTU, or use a 30,xxx register to point to the communication status register in the Field Unit's own RTDB.

Set CommStatReg to 0 to check protocol status of the Master Channel's protocol driver instead of a Comm Status Holdreg register.

Set CommStatReg to -1 to ignore the communication status. Process logic for this row will occur regardless of comms status.

ReportSelect one Report definition to define the structure of the output data report produced by this process row. Because the Omni-Cmd65-File process deals with ASCII text files, the Report must be a Process-FILE-Report type.
FileNameReg

(This is the "DataRegs" parameter.)

The FileNameReg should typically be a STRING type register in the RTDB, which is used by the Poll Table to specify the name of the file created by the Modbus CMD 65 data acquisition of the raw ASCII report. The Tag Name of this register identifies the filename; the retrieved file to be processed will be stored in /tmp/director/ with a filename of TagName_CC_RRRRR, where "TagName is the tag of the FileNameReg, "CC" is the Master Channel number and RRRRR is the Modbus unit ID (the Omni CMD 65 poll automatically appends these numbers with the underscores).

TrigMode 

Unused

TrigReg 

RTDB address in Channel/RTU containing data to trigger when the raw ASCII text file has been acquired and is ready to be processed.

  • For Omni 7K (Batch, Prover): TrigReg must point to the 1st of 9 registers in the RTDB used by Cmd65 data acquisition (1st register=Request ID, 8th register=Number of records, 9th register=Newest record ID).
  • Omni 7K Snapshot: TrigReg indicates when new Snapshot ASCII file has been acquired (for instance, the first 128 bytes of Snapshot report could be polled, containing header lines of ASCII file, and use Timestamp option to update 32-bit timestamp when the header data changes → use the Timestamp for TrigReg).
  • For Omni 6K: TrigReg is a register that changes when a new ASCII report is available (for instance, could be a Timestamp register generated based on data changing in the poll for ASCII data from Omni).
TrigValue RTDB register containing CRC-32 of the raw ASCII file, stored by the Modbus Poll Table (CMD 65) after completing the read. Used by Omni-Cmd65-File process to determine when the report is available for processing – after CRC-32 changes, process and publish the Report.
TrigAdjust 

Unused

ACK Register

(This is the "TrigWrap" parameter.)

  • Omni 7K – RTDB register containing feedback of requesting ASCII file report ID, to indicate when the report is ready. Register will contain 0=Report ready, 1=Pending (in process), 2=Error.
  • Omni 6K – Unused
HistRecord

(This is the "Run" parameter.)

RTDB register for writing the "Count HistRecords" parameter, below, used to request a count of historical archives for certain types of Cmd65 reports (Alarm, Audit).

Otherwise, the HistRecord parameter is unused, other than optional use in an MQTT topic using the "${RUN}" variable.

SOS-Enable

(This is the "Parm1" parameter.)

This must be set to the RTDB register used in the SOS table that enables and disables the poll for the actual archive data record. The processing logic will set this register to True (or 1) to enable the archive poll, and set it to False (or 0) once the record has been received.

Count HistRecords

(This is the "Parm2" parameter.)

This is the count of historical records needed in the request for certain types of historical archives. This is the value written into HistRecord, above.

Inhibit Reg This is a Boolean register in the RTDB which is used for certain types of historical archives (Snapshot, Status, Product, Alarm, Measurement Audit, System Audit, Initialization), to prevent more than one archive request from operating at the same time. Each of these report processes uses Omni register 16303 as the Report Command register, so the Omni-Cmd65-File process will set the Inhibit Reg while one archive file is being retrieved and clear the register when finished, so other processes can acquire their own archive.
Inhibit Test Unused
Proc-Logic Unused
Comment Optional column, allowing a descriptive comment to be entered for each row in the table. The Comment field is unused in the configuration.

...

Definition TableValues
DataReg Offset

If the calling Process uses a non-zero "DataRegs" register, then the "DataReg Offset" column is treated as an offset from the starting DataRegs register, for every row in the Report. The offset may be negative or positive (-65535 to 256000).

For instance, if a Process calls this Report with a DataReg=40001 (from a Master Channel/RTU), then a DataReg Offset of  5  will retrieve the value in register 40006 in the RTDB of that Channel/RTU. A DataReg Offset of  -10000  will retrieve the value in 30001.

If the calling Process has DataReg set to 0, then the "DataReg Offset" column is treated as an absolute register address in the Channel/RTU RTDB, for every row in the Report.

For instance, if the calling process uses DataRegs=0, the DataReg Offset might be set to RTDB addresses 40006, 30001, etc.

SrcReg Count

Count of registers (starting at the RTDB register pointed to by DataReg Offset) to use for the value being processed in this row of the Report.

This is used in cases where one value (long integer, floating point, string) occupies more than one consecutive register address. (Remember that each row in the Report table handles only one data value or string.)

Output Format

The Output Format determines how the source value on each row of the Report should be stored in the output file. This should match the field type (integer, float, string) that is defined for each Protobuf field in the message, as well as specifying the size of the value to be output (16-bit, 32-bit, etc.).

See the section 17727489 for a description of the different output formats for individual data elements.

Swapping

This option allows data coming from RTDB registers to be byte-swapped or word-swapped in order to represent the value correctly in the Report output.

For instance, if the source RTDB type is 16-bit and the Count is 2 for a 32-bit integer, byte-swapping switches the order within registers, and word-swapping changes the order of the registers when they are assembled into a value.

Options are:

  • No Swapping – the default order is LSB first, then MSB from the first register in "Count", then second registers, etc.
  • Swap Bytes – MSB first, then LSB in registers.
  • Swap Words – Last register in "Count," then first register.
  • Swap Bytes and Words – Last register in "Count" is first, in MSB–LSB order.
  • Swap DWords – All the "DWords" options are for 64-bit data. Swap DWords reverses the order of 1st and 2nd sets of 32-bits.
  • Swap DWords,Bytes – Switch order of 32-bit words, plus MSB/LSB order.
  • Swap DWords,Words – Switch order of 32-bit words, plus 1st/2nd register.
  • Swap DWords,Words,Bytes – Switch order of 32-bit words, 1st/2nd register, and MSB/LSB order.
Name

The Name column is not output directly in the Protobuf output payload, but by convention it is recommended to use the field names in the Protobuf definition. This will allow correlation between the ACE configuration and the Protobuf definition for understanding the data items in the message structure. See below for an example of configuring a Protobuf message using the Process-PBuf-Report table.

If a single "?" character is used in the Name column for a Publish report, then the field value will NOT be added to the message. The scaled value of the tag will only be written to an RTDB Address, if that column is configured with a numeric RTDB register. The "?" symbol has no function in a Subscribe report.

If this column is unused (such as for NESTING END or ARRAY END), it must still contain at least one character, such as a "+".

PBuf Tag

The PBuf Tag column contains the numeric field number for each field that is defined in the Protobuf message. The values in this column must match the Protobuf message definition in order to encode the output into a correct Protobuf payload. See below for an example. The PBuf Tag property has some specific rules, associated with the Google Protocol Buffers language structure.

  • The PBuf Tag (field number) for non-repeated fields should be unique among all fields for that message (unique within the same level in the message). Typically, tag numbers start at 1 and run consecutively, but they don't have to be consecutive in the Protobuf definition.
  • For a "repeated" field in the Protobuf definition, the PBuf Tag may be repeated at the same level in the message. See later bullet for more detail.

  • Protobuf messages allow fields to be missing in the payload. On a Subscribe report definition, if a PBuf Tag is defined with only a numeric value in the Report structure but the received payload is missing the field, the Automated Processing will skip that value. However, if you wish to force the register (DataReg Offset) to a default value of zero for a missing field, you must append the letter "z" after the number. (A space can be included between the number and the "z", for readability.)

    Example: a Protobuf message includes field# 2. The Subscribe message is received, but field# 2 is not present in the payload. If the Report definition includes PBuf Tag of "2" which would have been saved to register 41201, the missing value will be skipped, and register 41201 is unchanged. But if the PBuf Tag is set to "2 z", then register 41201 is set to 0, due to the missing tag.

  • If there is a nested sub-message as a field within a message, it can be defined in the following way:

Output Format: NESTING START, PBuf Tag: field number of the sub-message (its numeric position in the current level of the message)
Sub-message field elements, PBuf Tag: 1 through X (unique within the sub-message, but might duplicate other tag numbers at different levels in the main message).
Output Format: NESTING END, PBufTag: ignored (can be blank)
The SrcReg Count can be set to 1 for both NESTING START and NESTING END - it is ignored.

  • If there is a repeated element within a message (including a repeated sub-message element), it can be defined in one of the following ways:
  1. Include the repeated field multiple times in the Report definition, using the same PBuf Tag (field number) on each row. Typically, each row would reference a different statically defined DataReg Offset source register; or different sets of registers for repeated NESTING START elements. Or,
  2. Use the Output Format ARRAY START/ARRAY END to define a variable array of elements. The array should be defined in the following way:

Output Format: ARRAY START, PBuf Tag: field number of the sub-message (its numeric position in the current level of the message), SrcReg Count: number of repeated elements to include, DataReg Offset: unused (but must be an integer).
Repeated element Output Format: use appropriate data type, PBuf Tag: Typically set to 1, DataReg Offset: RTDB address of the first register containing repeated data. Data must be in consecutive registers, and on each iteration through the array, the repeated field values will be taken from subsequent registers following DataReg Offset location.
Output Format: ARRAY END, PBuf Tag: ignored (can be blank), SrcReg Count: ignored (but must be an integer), DataReg Offset: unused (but must be an integer).

Scale_1
Scale_2
Scale_3

The three Scale columns are optional, allowing the source data value to be scaled before the final value is stored into the output Report. Only one operation is allowed per column and operations are applied in series (Scale_1, then Scale_2, then Scale_3, if they are non-blank). (Scaled operations are not allowed on 64-bit registers.) 

The Scale operations on a Publish message are applied to RTDB register values before storing or publishing. Scale operations on a Subscribe message are applied to the received value before storing to RTDB or writing to an RTU.

The output of all scale operations is cast to the data type of the source RTDB register. NOTE: This is important – if the source RTDB register is an integer type, then all subsequent values and operands in all Scale operations will be truncated to the integer value, which may lead to unexpected results. To force the intermediate Scale operations on integer values to use fractional values, include an "F" as the first character in the Scale_1 column, followed immediately by any additional operator (+-*/i), with no space. The "F" character is only recognized in the Scale_1 column.
Example: "F* 9" will multiply the source value by 9, but all Scale operations will be done in floating point math. If the Output Format is integer, the result of the last calculation will be truncated to an integer.

Decimal points are required only for values that are fractional. Scale operations are:

  • + 0.0    (Add)
  • - 7        (Subtract)
  • * 3.14   (Multiply)
  • / 5         (Divide)
  • i 1.4      (invert the preceding value, then multiply by the number. Do not use "*" – the invert and multiply are both implied with the single "i" character.)

There can be a space between the operator and the number, for readability. (But there cannot be a space between the "F" and the operator.)

Examples (showing 2 or 3 Scale statements):

Convert Celsius to Fahrenheit:            F* 9        / 5     + 3232    ("F" is used if values are integers)
Convert Fahrenheit to Celsius:             - 32     / 9     * 55        (no "F" is needed, if values are already floating point type)
Calculate 3 / (register + 10):                 + 10     i 3
      Explanation: take the source value and add 10. Then invert the sum to the denominator and multiply by 3.

RTDB Address

If this column is non-zero for the Process-PBuf-Report on a Publish message, the scaled value will be output to the RTDB Address register and added to the output message. But if the Name column contains a single "?" character, then the scaled value will only be stored to the register but not added to the output message. The RTDB Address must be an absolute register address (not an offset). Ensure that the RTDB register type is compatible with the Output Format selected for each data element.

This column is not used for Subscribe messages.

CommentUnused column that allows a comment to annotate each row in the Report Definition table.


The Report definition should match the Google Protobuf message definition. The Publish and Subscribe report definitions will typically be exact copies of each other, if a RediGate is both the publisher and the subscriber of the same message. The only necessary difference is that the the Output Mode should be either "Publish" or one of the "Subscribe" options. (There might be cases where the Report contents are different, such as if the Publish message includes a conditional "IF" section.If a Subscribe report receives data with a field# (PBuf Tag) that isn't included in the Report definition, it will be discarded.


Example of Process-PBuf-Report Definition

...