New Support for Siemens Data Blocks!

New Support for Siemens Data Blocks

It’s not often that I get to announce something really cool, but today’s an exception. Our application engineering team just added support for Siemens Data Blocks to all of our Siemens gateways! It’s something our customers have been asking for and something I’ve wanted to have for a long time.

This mirrors the UDT (User Defined Data Type) support we’ve had in our Allen-Bradley PLC gateways for many years now. If you’re not familiar with UDTs, Bryce Automation does a fantastic job of explaining them in an article titled ControlLogix UDTs. UDTs are nothing more than a way of collecting a group of controller tags together and giving them a name. Here’s an example from the Bryce article of three valve UDTs (from that same article).

3 Valve UDT - User Defined Data Type in A-B PLC

In many of our gateways, you can simply map any of the individual fields of a UDT to a register, attribute or value of some other protocol. You could map Suction_ValveFaulted to a Modbus Coil, an OPC UA Server attribute or to a BACnet variable. In our 460ETC gateways, mapping is managed using the tag names of the variables in the UDT.

That’s not exactly the same in the Siemens world. In that world, external access to tag names isn’t supported. There is a name for the data group – it’s called a Data Space Block. What’s different is that variables within the Data Space Block can only be accessed using the offset from the beginning of the block. It’s not exactly like UDTs in Logix processors but close enough.

The following image presents an example of a Data Space Block called RA_DB_NonOpt. The block contains individual values (FanSpeed, Fandegree), an array, and a timer.

Data Space Block RA_DB_NonOpt

The offset column indicates the number of bytes to the variable from the start of the Data Space Block. Values in the block can be mapped to other protocols using the name of the Data Space Block and the offset within the data block. They can be mapped to all the places that we can map a tag name in a UDT: a BACnet point, a Modbus TCP register, an EtherNet/IP attribute or anything else in the long list of technologies we support. For example, the 460ETCSC, our PLC to PLC gateway for Siemens to Allen-Bradley, will now directly map a tag in AB (UDT or not) to a variable in the Siemens controller, whether that point is part of a Data Space Block or not.

This has been a long time coming. It’s been on my personal wish list for over a year now. Our Allen-Bradley PLC to Siemens S7 PLC product (460ETCSC) delivers, but it had one fatal flaw – it didn’t support Siemens Data Blocks. And now that flaw is fixed.

Time for a glass of wine to celebrate.