Ethernet transmitter

The Ethernet transmitter module can cyclically send measured or calculated data from DewesoftX via UDP to any 3rd party application. Its static data definition and the simplicity of the format make it very user-friendly for integrating into custom solutions.

Another key benefit of the UDP protocol is that it can drastically reduce the used bandwith when data is acquired on multiple clients using multicast or broadcast transmission methods.

General settings

The settings allow you to define the local (source) and remote (destination) addresses and ports, between which the data exchange will take place.

The remote IP address will determine whether the sending will be:

  • Unicast: one-to-one communication where data is sent to a single recipient
  • Multicast: sends data to a specific group of recipients
  • Broadcast: sends data to all recipients on a network

The rate field will determine how many times per second the data packages will be sent out. The actual rate will depend on the performance of the network card and the PC as a whole. Each data package will contain the latest sample of each selected input channel.

NOTE: The current version of the Ethernet transmitter is meant to stream low-speed statistical parameters (in the range of 1 to 100 Hz), not high-speed dynamic data.

If you would like to send different data to multiple different recipients, another instance of the ethernet transmitter can be added using the plus button on the top right of the module. The general settings (addresses, ports, rate) and package structure are defined individually for each instance of the module.

Package

A package defines all data that will be packed into a single UDP datagram. It can be added or removed using the plus and minus buttons.

Packages are used to separate data into easily distinguishable chunks, which is typically done by placing a known value (constant) at a specific location. This way, the target application can decide whether it wants to decode and use the data from the acquired package.

Another purpose of packages is to get around the size limit of UDP datagrams. If you are trying to stream large amounts of data it might need to be spread out across multiple packages.

NOTE: It is very unlikely that the datagram size limit will be reached when only one sample per channel is sent, but this could be a realistic problem if super commutation or multiplexing is supported by the Ethernet transmitter module in the future.

Inputs can be manually added to a package and moved up and down to change the order of encoding. The auto-generate button will automatically populate a package with all available signals in the current DewesoftX instance. It will start the package with a constant followed by the absolute time value and all available channels. The order will match the typical order of channels that you can find in the channels list or in the channel selector in measure mode.

Export to XML

The export button is used to generate an XML description of the configured transmitter module. The exported file will not only contain information about the addresses, ports, data types, sizes, and offsets but also some metadata like the channel’s name, unit, value, and color. This data can be used by a 3rd party application to correctly parse the incoming UDP stream.

The formatting of the XML is directly compatible with Dewesoft’s Ethernet receiver module, where the setup can be imported. The goal here is not to use the Ethernet transmitter and the Ethernet receiver to stream data between two DewesoftX instances, but to help with debugging when developing a custom application, providing a frame of reference of how the results are supposed to look.

NOTE: If data exchange between two DewesoftX instances is desired, Dewesoft NET would be the appropriate application to accomplish this goal.

Data types

The module supports sending out several different data types. All data is econded in the Intel data format.

All input types are managed directly through the grid, which will also show the size of each input, its place in the datagram, the input channel’s metadata, and a live preview of the streamed values.

NOTE: Data is continuously streamed while in channel setup. There is no need to switch to measure mode when configuring the module in order to see updated data on the receiver side.

Constant

The constant is a 4-byte signed integer input whose value can be defined directly in the channel grid. Its main purpose is to serve as a method of differentiation in case multiple packages are used. When decoding a package, the client can determine that a package with the constant value X has a different channel definition compared to a package where the value of the constant is equal to Y.

Absolute time

The absolute time type can be used to transmit the information about the current time in the UTC format, and therefore correlate the acquired values with other data on the receiver side.

The time is encoded in an 8-byte unsigned integer, which represents the number of nanoseconds that have passed since January 1st, 1970 12:00:00 AM, also known as the Unix epoch.

Channel

The channel type can be used to transmit any scalar channel from DewesoftX, no matter if it’s analog, digital, or calculated. The wanted channel can be selected directly from a drop-down menu in the input column. Synchronous, asynchronous, and single-value channels are all supported.

The channel data type is encoded as an 8-byte floating point value.