Modifying GSDML file for anybus device

I have an Anybus Communicator ABC3013-A.
I can write bytes from the PLC to the Anybus device and from the Anybus device to a serial device. This works. I have a working blinky example where I can toggle an IO.
I’m now trying to modify the GSDML file but I run into issues.

I’ve modified ID_SUBMODULE_OUT_0004, but I canot see the TextId or Description field in CODESYS.

						<VirtualSubmoduleItem ID="ID_SUBMODULE_OUT_0004" SubmoduleIdentNumber="0x10000004" MayIssueProcessAlarm="false">
							<IOData>
								<Output Consistency="All items consistency">
									<DataItem DataType="Unsigned32" TextId="T_ID_DATAITEM_BLOB" UseAsBits="true">
										<BitDataItem BitOffset="0" TextId="LED0" Description="LED 0"/>
										<BitDataItem BitOffset="2" TextId="LED1"/>
									</DataItem>
								</Output>
							</IOData>
							<ModuleInfo>
								<Name TextId="T_ID_SUBMODULE_NAME"/>
								<InfoText TextId="T_ID_INFO_TEXT_SUBMODULE"/>
							</ModuleInfo>
						</VirtualSubmoduleItem>

In CODESYS the two bitfields show up, but the description field doesn’t show up.

I would like to do the following:

  • Add descriptive names to certain bitfields that will show up in CODESYS
  • add a float32 so the PLC can send 2 variables (the bitfields and some floats)
  • add a unit to the float field, in my case degrees Celsius
  • do the same for inputs

I’m sorry, but I have never heard of editing our GSD file in order alter data types in the PLC. This is typically done in the PLC programming software itself.

You must understand that the generic serial or Modbus protocols don’t inherently support Float data types. Therefore, the Anybus gateway is not dealing with data types. It’s taking the raw data from the serial network and sending to the PROFINET network. You should handle any transformation of data types within your PLC programming software.

If you have further questions about this, I would recommend opening a support case at https://support.hms-networks.com.

I’m sorry, but I have never heard of editing our GSD file in order alter data types in the PLC

We are designing a product with a PROFINET interface and are using the Anybus Communicator in our enclosure to provide the PROFINET device functionality. We are not engineering the entire system and not writing the PLC application firmware. So in our case the GSDML file is the interface to our product for the customer and we like to have descriptive names instead of “4 bytes input module” and “DataBlob”.

generic serial […] protocols don’t inherently support Float data types

You can serialize IEEE-754 single precision floating points just fine over RS232. In the GSDML file it is “Float32” and the PLC sees it as “REAL”. Works just fine. Just has to be big endian and it works. This wasn’t documented anywhere so I had to figure it out myself.

You should handle any transformation of data types within your PLC programming software

Delegating such important steps to your end customers is a bad idea. Documentation, documentation, documentation.

I have got most descriptive fields working and can send/receive float32 and booleans.
The issue remaining is the units. Below I have a picture of what we have after importing our GSDML file. I I would like to have units. I now have them in the name as a workaround.

Hi @char_array,

You make some good points about the benefits of a descriptive GSD file for the end user. However, we need to keep the GSD very generic because our customers are going to all have different configurations. Modifying the GSD would put it out of spec.

I’m not an expert on the GSDML Spec, but I believe altering it may cause problems if you keep the same vendor name and device ID:

What I would recommend is creating a case in our ticketing system (support.hms-networks.com) so you can get in touch with the device developers who can provide more information.

Best Regards,

Kyle