B&R OPC UA example
  • 07 Oct 2021
  • 4 Minutes to read
  • Contributors
  • Dark
    Light
  • PDF

B&R OPC UA example

  • Dark
    Light
  • PDF

Article Summary

The purpose of this article is to show some DCM config file examples for OPC UA with a B&R (BR-automation) PLC 

Please pay attention to the specific format of the NodeIDString value:

 "NodeIdString" : "::AsGlobalPV:gState.Main",

Full DCM config collecting from B&R OPC UA PLC and delivering to Secomea DCC

 { 
    "ConfigName" : "BR_OPCUA_2_DCC", 
    "ConfigDescription" : "Example configuration B&R OPCUA PLC to DCC", 
    "CheckpointInterval" : 600,
    "WaitForNTP" : false, 
    "Collectors" : [ 
        {                
    "CollectorName": "OpcUaMap",                
    "CollectorDescription": "Setup using B&R CPU with OPC-UA Server",                
    "Protocol": "OPC-UA/TCP",                
    "CollectorIPAddr" : "10.0.0.50",                
    "CollectorPortno": 4840,                
    "ConnectRetryMin": 2,                
    "ConnectRetryMax": 240,                
    "OPCUAAccess": {                
        "OPCUASecurityPolicy": "none",            
        "OPCUAUserTokenType": "anonynmous",            
        "OPCUATimeStampPolicy": "dcm"            
        },            
        "SamplePoints": [            
        {            
            "SampleName" : "MachineMainState",        
            "SampleDescription" : "All time number of units palletized",        
            "SamplesSaved" : 10,        
            "SampleDataType" : "byte",        
            "OPCUAObject" : {        
                "NodeIdNameSpaceIndex" : 6,    
                "NodeIdType" : "string",    
                "NodeIdString" : "::AsGlobalPV:gState.Main",    
                "OPCUASampleInterval" : 15    
            }        
        },            
        {            
            "SampleName" : "UnitTripLife",        
            "SampleDescription" : "All time number of units palletized",        
            "SamplesSaved" : 10,        
            "SampleDataType" : "uint32",        
            "OPCUAObject" : {        
                "NodeIdNameSpaceIndex" : 6,    
                "NodeIdType" : "string",    
                "NodeIdString" : "::AsGlobalPV:pStatistics.unit_trip_life",    
                "OPCUASampleInterval" : 60    
            }        
        }
        ]
    }
    ], 
    "DataServers" : [
{
            "ConnectRetryMax": 60,
            "ConnectRetryMin": 2,
            "DatasrvName": "DCC",
            "DatasrvProtocol": "SCI/SPD",
            "IOPin": true,
            "SCISPDParams": {
                "DevCertName": "DCC Certificate",
                "DevPkeyName": "DCC Private Key",
                "PushInterval": 1,
                "RootCAName": "DCC CA Certificate",
                "SCIServerAddr": "dcm-dcc.secomea.com",
                "SPDPort": 443,
                "Security": "TLS1.2"
            }
        } 
    ] 
} 

 

And the B&R OPC UA collector on its own

        {                
    "CollectorName": "OpcUaMap",                
    "CollectorDescription": "Setup using B&R CPU with OPC-UA Server",                
    "Protocol": "OPC-UA/TCP",                
    "CollectorIPAddr" : "10.0.0.50",                
    "CollectorPortno": 4840,                
    "ConnectRetryMin": 2,                
    "ConnectRetryMax": 240,                
    "OPCUAAccess": {                
        "OPCUASecurityPolicy": "none",            
        "OPCUAUserTokenType": "anonynmous",            
        "OPCUATimeStampPolicy": "dcm"            
        },            
        "SamplePoints": [            
        {            
            "SampleName" : "MachineMainState",        
            "SampleDescription" : "Machine Main Status",        
            "SamplesSaved" : 5,        
            "SampleDataType" : "byte",        
            "OPCUAObject" : {        
                "NodeIdNameSpaceIndex" : 6,    
                "NodeIdType" : "string",    
                "NodeIdString" : "::AsGlobalPV:gState.Main",    
                "OPCUASampleInterval" : 15    
            }        
        },            
        {            
            "SampleName" : "UnitTripLife",        
            "SampleDescription" : "All time number of units palletized",        
            "SamplesSaved" : 10,        
            "SampleDataType" : "uint32",        
            "OPCUAObject" : {        
                "NodeIdNameSpaceIndex" : 6,    
                "NodeIdType" : "string",    
                "NodeIdString" : "::AsGlobalPV:pStatistics.unit_trip_life",    
                "OPCUASampleInterval" : 60    
            }        
        }
        ]
    }
   

And example with 22 sample points incl. aggregations

{
  "ConfigName": "DefaultConfig",
  "ConfigDescription": "Default Configuration",
  "CheckpointInterval": 60,
  "WaitForNTP": false,
  "Collectors": [
    {
      "CollectorName": "OpcUaMap",
      "CollectorDescription": "Setup using B&R CPU with OPC-UA Server",
      "Protocol": "OPC-UA/TCP",
      "CollectorIPAddr": "10.0.0.50",
      "CollectorPortno": 4840,
      "ConnectRetryMin": 2,
      "ConnectRetryMax": 240,
      "OPCUAAccess": {
        "OPCUASecurityPolicy": "none",
        "OPCUAUserTokenType": "anonynmous",
        "OPCUATimeStampPolicy": "dcm"
      },
      "SamplePoints": [
        {
          "SampleName": "MachineMainState",
          "SampleDescription": "Machine Main Status",
          "SamplesSaved": 10,
          "SampleDataType": "byte",
          "OPCUAObject": {
            "NodeIdNameSpaceIndex": 6,
            "NodeIdType": "string",
            "NodeIdString": "::AsGlobalPV:gState.Main",
            "OPCUASampleInterval": 15
          }
        },
        {
          "SampleName": "UnitTripLife",
          "SampleDescription": "All time number of units palletized",
          "SamplesSaved": 10,
          "SampleDataType": "uint32",
          "OPCUAObject": {
            "NodeIdNameSpaceIndex": 6,
            "NodeIdType": "string",
            "NodeIdString": "::AsGlobalPV:pStatistics.unit_trip_life",
            "OPCUASampleInterval": 60
          }
        },
        {
          "SampleName": "TotalPowerConsumption",
          "SampleDescription": "Total power consumption of all drives",
          "SamplesSaved": 10,
          "SampleDataType": "float",
          "OPCUAObject": {
            "NodeIdNameSpaceIndex": 6,
            "NodeIdType": "string",
            "NodeIdString": "::AsGlobalPV:gMappView.powerStatistics.powerConsumption.kwh",
            "OPCUASampleInterval": 3600
          }
        },
        {
          "SampleName": "MachineTempOutside",
          "SampleDescription": "temperature outside cabinet",
          "SamplesSaved": 10,
          "SampleDataType": "float",
          "OPCUAObject": {
            "NodeIdNameSpaceIndex": 6,
            "NodeIdType": "string",
            "NodeIdString": "::PT100:PT100.flag.temp_Outside",
            "OPCUASampleInterval": 3600
          }
        },
        {
          "SampleName": "MachineTempInside",
          "SampleDescription": "temperature inside cabinet",
          "SamplesSaved": 10,
          "SampleDataType": "float",
          "OPCUAObject": {
            "NodeIdNameSpaceIndex": 6,
            "NodeIdType": "string",
            "NodeIdString": "::PT100:PT100.flag.temp_Inside",
            "OPCUASampleInterval": 3600
          }
        },
        {
          "SampleName": "OverallServiceWarning",
          "SampleDescription": "Flag if one or more machineparts have reached its service point",
          "SamplesSaved": 10,
          "SampleDataType": "bool",
          "OPCUAObject": {
            "NodeIdNameSpaceIndex": 6,
            "NodeIdType": "string",
            "NodeIdString": "::AsGlobalPV:gHMI_MACHINE.Oper_Info.HMI.Overall_warningHide",
            "OPCUASampleInterval": 3600
          }
        },
        {
          "SampleName": "OverallMachineWarning",
          "SampleDescription": "Flag if the machine has a warning",
          "SamplesSaved": 10,
          "SampleDataType": "bool",
          "OPCUAObject": {
            "NodeIdNameSpaceIndex": 6,
            "NodeIdType": "string",
            "NodeIdString": "::AsGlobalPV:gWarn.Status",
            "OPCUASampleInterval": 300
          }
        },
        {
          "SampleName": "PalletMagasineWarning",
          "SampleDescription": "Flag if the palletmagasine is not in run",
          "SamplesSaved": 10,
          "SampleDataType": "bool",
          "OPCUAObject": {
            "NodeIdNameSpaceIndex": 6,
            "NodeIdType": "string",
            "NodeIdString": "::PMS:PMS.Flag.WarnPalletMag",
            "OPCUASampleInterval": 300
          }
        },
        {
          "SampleName": "OverallMachineAlarm",
          "SampleDescription": "Flag if the machine has a Alarm",
          "SamplesSaved": 10,
          "SampleDataType": "bool",
          "OPCUAObject": {
            "NodeIdNameSpaceIndex": 6,
            "NodeIdType": "string",
            "NodeIdString": "::AsGlobalPV:gAlarm.Status",
            "OPCUASampleInterval": 300
          }
        },
        {
          "SampleName": "BUB1",
          "SampleDescription": "Buffer Conveyor ",
          "SamplesSaved": 10,
          "SampleDataType": "float",
          "OPCUAObject": {
            "NodeIdNameSpaceIndex": 6,
            "NodeIdType": "string",
            "NodeIdString": "::AsGlobalPV:pMachineStat[152].Data[0].Distance.Overall.Total",
            "OPCUASampleInterval": 3600
          }
        },
        {
          "SampleName": "DRB_V1",
          "SampleDescription": "Turning conveyor",
          "SamplesSaved": 10,
          "SampleDataType": "float",
          "OPCUAObject": {
            "NodeIdNameSpaceIndex": 6,
            "NodeIdType": "string",
            "NodeIdString": "::AsGlobalPV:pMachineStat[154].Data[0].Distance.Overall.Total",
            "OPCUASampleInterval": 3600
          }
        },
        {
          "SampleName": "SIS3",
          "SampleDescription": "Counter pusher",
          "SamplesSaved": 10,
          "SampleDataType": "float",
          "OPCUAObject": {
            "NodeIdNameSpaceIndex": 6,
            "NodeIdType": "string",
            "NodeIdString": "::AsGlobalPV:pMachineStat[160].Data[0].Distance.Overall.Total",
            "OPCUASampleInterval": 3600
          }
        },
        {
          "SampleName": "FPL",
          "SampleDescription": "Foil dispenser",
          "SamplesSaved": 10,
          "SampleDataType": "float",
          "OPCUAObject": {
            "NodeIdNameSpaceIndex": 6,
            "NodeIdType": "string",
            "NodeIdString": "::AsGlobalPV:pMachineStat[180].Data[0].Distance.Overall.Total",
            "OPCUASampleInterval": 3600
          }
        },
        {
          "SampleName": "BUB3",
          "SampleDescription": "Buffer Conveyor ",
          "SamplesSaved": 10,
          "SampleDataType": "float",
          "OPCUAObject": {
            "NodeIdNameSpaceIndex": 6,
            "NodeIdType": "string",
            "NodeIdString": "::AsGlobalPV:pMachineStat[182].Data[0].Distance.Overall.Total",
            "OPCUASampleInterval": 3600
          }
        },
        {
          "SampleName": "BUB4",
          "SampleDescription": "Buffer Conveyor ",
          "SamplesSaved": 10,
          "SampleDataType": "float",
          "OPCUAObject": {
            "NodeIdNameSpaceIndex": 6,
            "NodeIdType": "string",
            "NodeIdString": "::AsGlobalPV:pMachineStat[184].Data[0].Distance.Overall.Total",
            "OPCUASampleInterval": 3600
          }
        },
        {
          "SampleName": "PLB_ELV",
          "SampleDescription": "Elevator",
          "SamplesSaved": 10,
          "SampleDataType": "float",
          "OPCUAObject": {
            "NodeIdNameSpaceIndex": 6,
            "NodeIdType": "string",
            "NodeIdString": "::AsGlobalPV:pMachineStat[203].Data[0].Distance.Overall.Total",
            "OPCUASampleInterval": 3600
          }
        },
        {
          "SampleName": "TRS_B",
          "SampleDescription": "Travers PM800",
          "SamplesSaved": 10,
          "SampleDataType": "float",
          "OPCUAObject": {
            "NodeIdNameSpaceIndex": 6,
            "NodeIdType": "string",
            "NodeIdString": "::AsGlobalPV:pMachineStat[204].Data[0].Distance.Overall.Total",
            "OPCUASampleInterval": 3600
          }
        },
        {
          "SampleName": "PAR_R",
          "SampleDescription": "Parallel conveyor",
          "SamplesSaved": 10,
          "SampleDataType": "float",
          "OPCUAObject": {
            "NodeIdNameSpaceIndex": 6,
            "NodeIdType": "string",
            "NodeIdString": "::AsGlobalPV:pMachineStat[205].Data[0].Distance.Overall.Total",
            "OPCUASampleInterval": 3600
          }
        },
        {
          "SampleName": "DRH_S_V2",
          "SampleDescription": "Turning head",
          "SamplesSaved": 10,
          "SampleDataType": "float",
          "OPCUAObject": {
            "NodeIdNameSpaceIndex": 6,
            "NodeIdType": "string",
            "NodeIdString": "::AsGlobalPV:pMachineStat[206].Data[0].Distance.Overall.Total",
            "OPCUASampleInterval": 3600
          }
        },
        {
          "SampleName": "STS_R",
          "SampleDescription": "Travers PM 2000",
          "SamplesSaved": 10,
          "SampleDataType": "float",
          "OPCUAObject": {
            "NodeIdNameSpaceIndex": 6,
            "NodeIdType": "string",
            "NodeIdString": "::AsGlobalPV:pMachineStat[210].Data[0].Distance.Overall.Total",
            "OPCUASampleInterval": 3600
          }
        },
        {
          "SampleName": "SKB_O_V3",
          "SampleDescription": "Press conveyor",
          "SamplesSaved": 10,
          "SampleDataType": "float",
          "OPCUAObject": {
            "NodeIdNameSpaceIndex": 6,
            "NodeIdType": "string",
            "NodeIdString": "::AsGlobalPV:pMachineStat[215].Data[0].Distance.Overall.Total",
            "OPCUASampleInterval": 3600
          }
        },
        {
          "SampleName": "MachineMainState2SecInterval",
          "SampleDescription": "When MachineMainState value = 2, sample OverallMachineAlarm",
          "SamplesSaved": 0,
          "SampleDataType": "uint32",
          "Aggregation": {
            "Function": "eventcompute",
            "Expression": "MachineMainState,2,==",
            "Values": [
              "OverallMachineWarning",
              "PalletMagasineWarning",
              "OverallMachineAlarm"
            ],
            "TriggerSample": "MachineMainState",
            "TriggerNewInterval": 8
          }
        }
      ]
    }
  ],
  "DataServers": [
    {
      "ConnectRetryMax": 10,
      "ConnectRetryMin": 2,
      "DatasrvName": "DCC",
      "DatasrvProtocol": "SCI/SPD",
      "IOPin": true,
      "SCISPDParams": {
        "DevCertName": "DCC Certificate",
        "DevPkeyName": "DCC Private Key",
        "PushInterval": 1,
        "RootCAName": "DCC CA Certificate",
        "SCIServerAddr": "dcm-dcc.secomea.com",
        "SPDPort": 443,
        "Security": "TLS1.2"
      }
    }
  ]
}

Was this article helpful?