Collector Rockwell
  • 06 Sep 2021
  • 6 Minutes to read
  • Contributors
  • Dark
    Light
  • PDF

Collector Rockwell

  • Dark
    Light
  • PDF

Article Summary

The purpose of this article is to serve as a reference for the Rockwell collector part of the full Data Collection Module documentation

Prerequisites

A Starter package (SiteManager + accounts A Rockwell CIP capable device, (Only Rockwell 1769 model PLC supported.) 

SiteManager 15xx or 35xx with version 9.2, 9.2c, 9.4 or higher. It does not work on 9.3 or the initial release of 9.4

Rockwell Limitations

The limitations of the Rockwell collector are:

  • Only the following SiteManager models are supported: SM-E 6311, SM 35xx, SM 15xx
  • Only Control Logix-class PLCs using the AB-EIP protocol are supported
  • The IP address/hostname is not taken over from the agent config right now, so CollectorIPAddr is mandatory
  • SampleDataType "string" and "data" are unsupported
  • OnlySaveOnChanged is unsupported (so, ChangeLimit isn't either)
  • None of these sample limitation options are supported: SampleLowerLimit, SampleUpperLimit, SampleLimitDiscard, SampleLimitAlarm
  • Aggregation are not yet fully supported. The supported values for the Function parameter are "max", "min", "avg", "mavg", "derived", "compute". Thus, "eventcompute" is not supported.
  • Reading large amounts of data needs optimization



Config main

The Config main (array of objects, mandatory) contain the following fields:

FunctionTypeImportanceDescription
ConfigNamestringmandatoryUnique name for this configuration file. Follows the rules for names.
ConfigDescriptionstringoptionaltext describing this configuration.
CheckpointIntervalinteger == 0 or >= 60optionalThe interval with which all data from the internal datasample cache is saved to disk. This more unstable (power) the SiteManager, the more often data should be saved. Saving it often, however will also cost performance and wear on the hard-disk/flash. A value of 0 means, never checkpoint, otherwise it means interval in seconds between saves. If not specified the value 15 * 60 (15 minutes) is used.
AlarmsSavedinteger >= 4optionalThe number of alarms saved in the store-and-forward database. If this values is not specified, it will default to 32.
WaitForNTPbooleanoptionalSynchronize DCM data collection with NTP time. If this parameter is true, all DCM collectors will not begin collecting data until NTP is enabled and configured and NTP has synchronized date/time. If not specified, the value is true.

Since the JSON format itself doesn't define a comment notation, DCM accepts a fieldname comment with any type of value in any section.

Example of comment

"Comment": "Example of a comment for use in any section.": 


Collector main

The Collectors (array of objects, mandatory) list elements contain the following fields:

Important:
CollectorIPAddr and CollectorPortno are mandatory in the Rockwell collector configuration.
FunctionTypeImportanceDescription
CollectorNamestringmandatoryUnique name (within this confguration file) of a device to collect data from. (This is the name used in the agent configuration.) Follows the normal rules for names.
CollectorDesriptionstringoptionalDescription of this collector. (For your use, no system function.)
CollectorIPAddrstringmandatory
Default IP address (or DNS name) for the device to be polled. The agent Target IP address must match this.
CollectorPortnointeger > 0 and < 65535mandatory
Default port number for the device to be polled. The agent Target Port Number must match this.
AliasstringoptionalThis is the CollectorName of another collector, from which, all the parameters (expect CollectorName , CollectorDescription , CollectorIPAddr and CollectorPortno ) are copied. An alias cannot refer to another alias.
Protocolstring-enummandatoryThe protocol used to collect data. Currently 3 possible values exist: "OPC-UA/TCP", "Modbus/TCP", "Http/GET" and "Simulator".
ConnectRetryMininteger > 0mandatoryMinimum number of seconds before trying to reestablish a connection to the device being sampled. An exponential backoff algorithm is used to retry establishment of a connection, starting after ConnectRetryMin and increasing to ConnectRetryMax.
ConnectRetryMaxinteger > 0mandatoryMaximum number of seconds before trying to reestablish a connection to the device being sampled.
RockwellAccessObjectoptionalCollection of parameters needed to access a given Rockwell PLC.
SamplePointsArray of objectsmandatoryList of samples to be collected, possibly aggregated, and stored in the Store'n'Forward database.

RockwellAccess

The RockwellAccess objects contains the following elements:

FunctionTypeImportanceDescription
RockwellPathstringmandatoryThe path of the device to connect to- e.g, "1,0".
RockwellTimeoutinteger > 0optionalConnect and read timeout (in milliseconds) for all tags of this collector. If not present, the value 500 is used.
RockwellTagsArray of objectsmandatoryList of the tags to be fetched if the Protocol is "Rockwell".

RockwellTags

The RockwellTags objects contains the following elements:

FunctionTypeImportanceDescription
RockwellTagName
string
mandatory
The Rockwell tag name to fetch data from. Tag names are not case-sensitive, and they may contain the characters a-Z, 0-9,  colons, dots or blanks- e.g. "PROGRAM:INV.SEC". It is possible to fetch a full tag at once if all elements have the same RockwellElementSize/datatype, and a matching RockwellElementCount is given. Additionally, individual elements can be addressed directly by using a zero-based array syntax. e.g, "PROGRAM:INV.SEC[0]" will read the first element of the tag while "PROGRAM:INV.SEC[2]" will read the third.
RockwellID
integer >= 0
mandatory
 Is a unique ID (within this Collectors element) for this entry. (Used by the SamplePoints entries.)
RockwellElementSize
integer > 0
mandatory
The size of one element of the tag, in bytes. For instance, When one is reading a tag composed of bytes, then a size of 1 is used, and when one is reading a tag composed of "uint64", the size is 8. See SampleDataType for the different sizes.
RockwellElementCount
integer > 0
optional
The amount of elements that should be fetched. Each element's size will be RockwellElementSize. The default is 1.
RockwellSampleInterval
integer > 0
mandatory
Number of seconds between each collection of data using this Rockwell collector.

Samplepoint

The SamplePoints objects contains the following elements:

FunctionTypeImportanceDescription
SampleNamestringmandatoryName of this sampled value (sometimes called a tagname). Follows the normal rules for names.
SampleDescriptionstringoptionalIs a text description of this sample value.
SampleUnitstringoptionalIs a description of the unit of measurement for this sample.
SampleGroupstringoptionalDesignates (in some datasrvs) that all samplepoints in that group should be handled (displayed) together. The DCM system itself places no meaning on this group affiliation.
SamplesSavedinteger > 0mandatoryIs the number of values collected that is saved as minimum in the Store'n'Forward database. If set to 0, the Samplepoint isn't stored in the S'n'F database, and thus not delivered to cloud, but can be used for aggregations.
OnlySaveOnChangedbooloptionalControl if new sample values should only be saved to the store-and-forward database if the values have changed since last sample. If not set, it is false.
SampleDataTypestring-enummandatoryThe type of data collected. The possible values are: "bool" (1 bit), "sbyte" (8 bit signed), "byte" (8 bit unsigned), "int16" (16 bit signed), "uint16" (16 bit unsigned), "int32" (32 signed), "uint32" (32 bit unsigned), "int64" (64 bit signed), "uint64" (64 bit unsigned), "float" (32 bit), "double" (64 bit), "string" (variable text up to 24575 bytes: includes terminating NUL), "data" (variable variable data up to 24575 bytes).
SampleLowerLimitinteger/doubleoptionalThe lower limit for the collected data. If the collected data value is less than SampleLowerLimit, it is evaluated in accordance to SampleLimitDiscard and SampleLimitAlarm.
SampleUpperLimitinteger/doubleoptionalThe upper limit for the collected data. If the collected data value is more than SampleUpperLimit, it is evaluated in accordance to SampleLimitDiscard and SampleLimitAlarm.
SampleLimitDiscardboolmaybe-optionalChecks if a sample limit violation results in the sample value being discarded. Mandatory if either SampleLowerLimit or SampleUpperLimit is present.
SampleLimitAlarmboolmaybe-optionalChecks if a sample limit violation generates an alarm. Mandatory if either SampleLowerLimit or SampleUpperLimit is present.
ModbusValueObjectmaybe-optionalDescription of how to extract a collected data value from a FC collected value. Mandatory if the protocol type is "Modbus/TCP".

RockwellValues

The RockwellValue object contains the following elements:

FunctionTypeImportanceDescription
RockwellIDREFinteger >= 0mandatoryThis is a reference to one of the RockwellIDs used in RockwellTags.
RockwellOffsetinteger >= 0optionalStart index from which to extract values from a tag. For example if a tag "MACHINE:SENSOR:1" with a RockwellElementCount of 6 is read, then an offset of 2 would use the third element of the tag as sample value.
{
      "CollectorName": "AB-PLC",
      "CollectorIPAddr": "123.123.123.123",
      "CollectorPortno": "123",
      "CollectorDescription": "Rockwell EIP",
      "Protocol": "Rockwell",
      "ConnectRetryMin": 2,
      "ConnectRetryMax": 240,
      "RockwellAccess": {
        "RockwellTags": [
         {
            "RockwellTagName": "PROGRAM: INV.SEC",
            "RockwellID": 1,
            "RockwellElementSize": 2,
            "RockwellSampleInterval": 15
          }
        ],
        "RockwellPath": "1,0"
      },
      "SamplePoints": [
        {
          "SampleName": "Test001",
          "SampleDescription": "Counter",
          "SamplesSaved": 10,
          "SampleDataType": "int16",
          "RockwellValue": {
            "RockwellIDREF": 1,
            "RockwellOffset": 0
          }
        }
      ]
    }

Here is a second example configuration using a Controllogix L18ERM PLC with tags located in Controller Tags Scope:

{
  "CheckpointInterval": 600,
  "Collectors": [
    {
      "CollectorDescription": "SDCM Internal Simulation Server",
      "CollectorName": "DCCsim",
      "Protocol": "Simulator",
      "SamplePoints": [
        {
          "SampleDataType": "double",
          "SampleDescription": "SDCM simulation of sine curve",
          "SampleLimitAlarm": true,
          "SampleLimitDiscard": false,
          "SampleLowerLimit": -1000,
          "SampleName": "sine",
          "SampleUpperLimit": 1000,
          "SamplesSaved": 300,
          "SimulatorData": {
            "SimulatorFunction": "sine",
            "SimulatorIncValue": 100,
            "SimulatorInitValue": 1000,
            "SimulatorSampleInterval": 1
          }
        }
      ]
    },
    {
      "CollectorName": "L18ERM",
      "CollectorIPAddr": "10.100.10.5",
      "CollectorPortno": 44818,
      "CollectorDescription": "My first Rockwell1",
      "Protocol": "Rockwell",
      "ConnectRetryMin": 2,
      "ConnectRetryMax": 240,
      "RockwellAccess": {
        "RockwellTags": [
          {
            "RockwellTagName": "sine_wave",
            "RockwellID": 2,
            "RockwellElementSize": 4,
            "RockwellElementCount": 1,
            "RockwellSampleInterval": 1
          }
        ],
        "RockwellPath": "1,0"
      },
      "SamplePoints": [
        {
          "SampleName": "sine_wave",
          "SampleDescription": "Sine Wave",
          "SamplesSaved": 10,
          "SampleDataType": "float",
          "RockwellValue": {
            "RockwellIDREF": 2
          }
        }
      ]
    }
  ],
  "ConfigDescription": "Test configuration for SDCC with SIMs only",
  "ConfigName": "SDCC_SIM",
  "DataServers": [
    {
      "ConnectRetryMax": 12,
      "ConnectRetryMin": 2,
      "DatasrvName": "DCC",
      "DatasrvProtocol": "SCI/SPD",
      "SCISPDParams": {
        "DevCertName": "DCC Certificate",
        "DevPkeyName": "DCC Private Key",
        "PushInterval": 1,
        "RootCAName": "DCC CA Certificate",
        "SCIServerAddr": "dcm-dcc.secomea.com",
        "SPDPort": 443,
        "Security": "TLS1.2"
      }
    }
  ],
  "WaitForNTP": false
}

Was this article helpful?