EPD-FRAME
The Ethernet Process Data (EPD-Frame) is a proprietary protocol developed by CAF that allows different devices to exchange information over IP networks. It uses the UDP protocol to encapsulate data and multicast addressing for efficient data distribution.
The transmission unit used in this protocol is referred to as a frame. Frames can be configured as:
Source frames: Periodically transmitted by the device to multicast addresses
Sink frames: Periodically received by the device from multicast addresses
Each frame is a structured dataset with a variable length of 2^n bytes (where 1 ≤ n ≤ 7, resulting in sizes from 2 to 128 bytes). Data is transmitted over a configured period to a specific multicast address and UDP port defined for each frame type. Frames are considered valid as long as the time between two consecutive frames is less than or equal to five times the configured period.
The protocol uses variable types defined in the TCN standard, including TIMEDATE48, REAL32, INTEGER32/16/8, UNSIGNED32/16/8, BITSET32/16/8, CHARACTER8, ENUM4, ANTIVALENT2, and BOOLEAN1. Data variables must be aligned at bit offsets that are multiples of their size in bits.
Frame Types
The EPD-Frame service supports multiple frame formats, each designed for specific purposes. The available frame types are:
eth_router_gps
Type: Source
This frame format includes GPS data and system information. The frame fields are:
STS (offset 0, BITSET16): System status word containing router OK status, cellular module presence, error modes, and connection states
RSSI_M1 (offset 16, UNSIGNED8): Module 1 signal strength (0 to 255, equivalent to 0 to -255 dBm)
RSSI_M2 (offset 24, UNSIGNED8): Module 2 signal strength (0 to 255, equivalent to 0 to -255 dBm)
RSSI_M3 (offset 32, UNSIGNED8): Module 3 signal strength (0 to 255, equivalent to 0 to -255 dBm)
RSSI_M4 (offset 40, UNSIGNED8): Module 4 signal strength (0 to 255, equivalent to 0 to -255 dBm)
PROVIDER1_CHAR# (offset 48-200, UNSIGNED8): Characters 1 to 20 of Provider 1’s name
PROVIDER2_CHAR# (offset 208-360, UNSIGNED8): Characters 1 to 20 of Provider 2’s name
PROVIDER3_CHAR# (offset 368-520, UNSIGNED8): Characters 1 to 20 of Provider 3’s name
PROVIDER4_CHAR# (offset 528-680, UNSIGNED8): Characters 1 to 20 of Provider 4’s name
UPTIME_LifeB (offset 688, UNSIGNED16): System uptime from startup
GPS_LATFD (offset 704, UNSIGNED32): Latitude degrees, fraction part (0 to 99999)
GPS_LONFD (offset 736, UNSIGNED32): Longitude degrees, fraction part (0 to 99999)
GPS_TIME_OF_POS (offset 768, TIMEDATE48): Moment GPS data is calculated
GPS_SPEED (offset 816, UNSIGNED16): Train speed in km/h according to GPS board
GPS_HEADING (offset 832, UNSIGNED16): Direction in which the device is traveling
GPS_LATD (offset 848, UNSIGNED8): Latitude in decimal degrees (0 to 90)
GPS_LOND (offset 856, UNSIGNED8): Longitude in decimal degrees (0 to 180)
GPS_TIME (offset 864, TIMEDATE48): Time received by the GPS module
GPS_HDOP (offset 912, UNSIGNED8): Horizontal dilution of precision
GPS_HDOFP (offset 920, UNSIGNED8): Fraction of horizontal dilution of precision
GPS_VDOP (offset 928, UNSIGNED8): Vertical dilution of precision
GPS_VDOFP (offset 936, UNSIGNED8): Fraction of vertical dilution of precision
GPS_STSW (offset 944, BITSET8): GPS status word (latitude/longitude direction, dead reckoning, simulated position, GPS signal correct)
GPS_COORDINATE_SYSTEM (offset 952, UNSIGNED8): Coordinate system to be used (WGS84)
GPS_GNSS_TYPE (offset 960, UNSIGNED8): GNSS type (GPS, GLONASS, GALILEO, BEIDOU, IRNSS, etc.)
GPS_NMBR_SAT (offset 968, UNSIGNED8): Number of visible satellites
GPS_SIGNAL_QUALITY (offset 976, UNSIGNED8): GPS signal quality indicator
GPS_BOARD_CV (offset 984, ANTIVALENT2): Control variable associated with the GPS board
GPS_SIGNAL_CV (offset 986, ANTIVALENT2): Control variable associated with the GPS signal
SW_VER (offset 992, UNSIGNED32): System’s OSDx version
eth_hmi1_c1_sts_m
Type: Sink
This frame format requests EPD frames to be received and parsed in OSDx devices. The frame fields are:
EVR_Distance (offset 0, UNSIGNED32): Total distance
EVR_LifeB (offset 32, UNSIGNED8): When running, validates all EVR variables
EVR_TIME_Y_H (offset 40, UNSIGNED8): BCD format. Local time. 2-digit higher part of year
EVR_TIME_Y_L (offset 48, UNSIGNED8): BCD format. Local time. 2-digit lower part of year
EVR_TIME_MON (offset 56, UNSIGNED8): BCD format. Local time. Month (1..12)
EVR_TIME_DAY (offset 64, UNSIGNED8): BCD format. Local time. Day (1..31)
EVR_TIME_HOR (offset 72, UNSIGNED8): BCD format. Local time. Hour (0..23)
EVR_TIME_MIN (offset 80, UNSIGNED8): BCD format. Local time. Minutes (0..59)
EVR_TIME_SEC (offset 88, UNSIGNED8): BCD format. Local time. Seconds (0..59)
PLC_LifeB (offset 96, UNSIGNED8): When running, validates all PLC variables
PLC_ControlB (offset 104, BITSET8): PLC control word
PLC_ModeW (offset 112, BITSET16): PLC mode word
PLC_MC_StsW (offset 128, BITSET16): PLC MC status word
PLC_TramCompo (offset 144, BITSET16): Tram composition
HMI_PPP_GUI (offset 160, BITSET16): HMI passenger information GUI
PLC_PPP_AcouConnB_Cmd (offset 176, BITSET8): Acoustic connection command pulse bits
PLC_SDIAG_START_UPLOAD (offset 184, BOOLEAN1): Upload data signal
PLC_PPP_CT (offset 192, BITSET16): Control bits for various operations
PLC_VNumberB (offset 208, UNSIGNED8): Vehicle number
PLC_LimitedSpeed (offset 224, UNSIGNED16): Maximum speed limit due to degraded mode
PLC_DriverID (offset 240, UNSIGNED16): Driver ID
PLC_TPP_PICPulsado (offset 256, BITSET32): Picture pulsed state bits
PLC_TempOut (offset 288, INTEGER8): Outside temperature
EVR_Speed (offset 304, UNSIGNED16): Tram speed according to speed sensors
HMI_LifeB (offset 320, UNSIGNED8): When running, validates HMI variables
HMI_TempIn (offset 328, INTEGER8): Inside temperature. Return flow temperature
PLC_PPP_PICPulsadoAco (offset 352, BITSET32): Picture pulsed acoustic state bits
PLC_PPP_MsgDBCode (offset 512, UNSIGNED16): Message code to be played from database
PLC_PPP_SetRouteID1-4 (offset 528-552, CHARACTER8): Route number characters
PLC_PPP_SetStationID1-4 (offset 560-584, CHARACTER8): Station index characters
PLC_PPP_MsgPrio (offset 592, UNSIGNED8): Message priority (0 lowest to 100 highest)
PLC_PPP_CabVolumeSet (offset 600, ENUM4): Cabin volume level (1 to 10)
PLC_PPP_ExtVolumeSet (offset 608, ENUM4): External volume level (1 to 10)
PLC_PPP_SalVolumeSet (offset 616, ENUM4): Saloon volume level (1 to 10)
PLC_RearCamMon_LLowCab1/2 (offset 624-648, UNSIGNED8): Camera selection for TFT fields
PLC_RearCamMon_LLowCab1/2_Prop (offset 632-648, BITSET8): Camera rotation and mirror properties
PLC_RearCamMon_LUppCab1/2 (offset 656-680, UNSIGNED8): Upper cabin camera selection
PLC_RearCamMon_LUppCab1/2_Prop (offset 664-680, BITSET8): Upper cabin camera properties
PLC_RearCamMon_RLowCab1/2 (offset 688-712, UNSIGNED8): Right low cabin camera selection
PLC_RearCamMon_RLowCab1/2_Prop (offset 696-712, BITSET8): Right low cabin camera properties
PLC_RearCamMon_RUppCab1/2 (offset 720-744, UNSIGNED8): Right upper cabin camera selection
PLC_RearCamMon_RUppCab1/2_Prop (offset 728-744, BITSET8): Right upper cabin camera properties
PLC_CCTV_CT (offset 784, BITSET16): CCTV control bits
PLC_CCTV_TFT_BrightLevel (offset 800, UNSIGNED8): Brightness level
EVR_Time_CV (offset 1018, ANTIVALENT2): EVR time control variable
PLC_VNumberB_CV (offset 1020, ANTIVALENT2): Vehicle number control variable
EVR_Speed_CV (offset 1022, ANTIVALENT2): Speed control variable
eth_hmi1_c2_sts_m
Type: Sink
This frame format requests EPD frames to be received and parsed in OSDx devices. The frame fields are identical to eth_hmi1_c1_sts_m.
eth_router_sts2_m
Type: Source
This frame format includes system information. The 128-byte frame contains:
Conf_ID (offset 0, UNSIGNED16): Configuration identification number set by configuration
Not defined (offset 16-1023): Free for future use
The frame allows dynamic field addition through operational commands, making it flexible for custom field definitions.
Configuration
This service is only available in H5-Rail devices and its configuration is under the ‘service’ path.
The syntax to configure service epd-frame: is:
set service epd-frame [ ... ]
This path has the following parameters:
type: defines the frame type and format to be configured
log-level: set the priority of logs related to epd-frame. By default is error.
Frame Type Configuration
The type parameter specifies whether the frame is source (transmitted) or sink (received), followed by the frame format.
set service epd-frame type <type> format <format> address <address> port <port> period <period>
Available frame types and formats:
source formats:
eth-router-gps,eth-router-sts2-msink formats:
eth-hmi1-c1-sts-m,eth-hmi1-c2-sts-m
Parameters:
type:source(transmitted) orsink(received)
format: Frame format identifier
address: Multicast IP address for the frame
port: UDP port number (1-65535)
period: Frame transmission/reception period in milliseconds
Additional parameters for specific formats:
gps: GPS source identifier (only for eth-router-gps format)
config-id: Configuration identification number 0-256 (only for eth-router-sts2-m format)
set service epd-frame type source format eth-router-gps gps <gps-id>
set service epd-frame type source format eth-router-sts2-m config-id <id>
set service epd-frame log-level <level>
Examples
Source Frame: eth-router-gps
Configuration example for GPS and system information frame:
admin@osdx$ set service epd-frame type source format eth-router-gps address 239.33.0.80
admin@osdx$ set service epd-frame type source format eth-router-gps gps gps0
admin@osdx$ set service epd-frame type source format eth-router-gps period 512
admin@osdx$ set service epd-frame type source format eth-router-gps port 2127
Source Frame: eth-router-sts2-m
Configuration example for customizable system information frame:
admin@osdx$ set service epd-frame type source format eth-router-sts2-m address 239.33.0.82
admin@osdx$ set service epd-frame type source format eth-router-sts2-m config-id 5
admin@osdx$ set service epd-frame type source format eth-router-sts2-m period 64
admin@osdx$ set service epd-frame type source format eth-router-sts2-m port 2129
Sink Frame: eth-hmi1-c1-sts-m
Configuration example for frame eth-hmi1-c1-sts-m:
admin@osdx$ set service epd-frame type sink format eth-hmi1-c1-sts-m address 239.33.0.1
admin@osdx$ set service epd-frame type sink format eth-hmi1-c1-sts-m port 2048
admin@osdx$ set service epd-frame type sink format eth-hmi1-c1-sts-m period 128
Sink Frame: eth-hmi1-c2-sts-m
Configuration example for frame eth-hmi1-c2-sts-m:
admin@osdx$ set service epd-frame type sink format eth-hmi1-c2-sts-m address 239.33.0.2
admin@osdx$ set service epd-frame type sink format eth-hmi1-c2-sts-m port 2049
admin@osdx$ set service epd-frame type sink format eth-hmi1-c2-sts-m period 128
Monitoring commands
The EPD-Frame service provides operational commands to monitor and customize frame variables.
Reading Frame Variables
To read a variable from a sink frame (received frames):
service epd-frame read <eth-hmi1-c1-sts-m|eth-hmi1-c2-sts-m> <variable>
Note
When using variable names in commands, replace underscores (_) with hyphens (-) and convert all letters to lowercase. For example, EVR_LifeB becomes evr-lifeb.
Example:
admin@osdx$ service epd-frame read eth-hmi1-c1-sts-m evr-lifeb
EPD frame information:
---------------------------
evr-lifeb: 12
Writing Frame Variables
To write custom values to source frames (transmitted frames):
service epd-frame write <eth-router-gps|eth-router-sts2-m> add <type> <size> <offset> <value>
service epd-frame write <eth-router-gps|eth-router-sts2-m> delete <id|all>
service epd-frame write <eth-router-gps|eth-router-sts2-m> list-epd
- Variable types:
bitset: Bitset type (size: 1-32 bits)unsigned: Unsigned integer type (size: 8, 16, or 32 bits)antivalent: Antivalent type (size: 2 bits)
Add custom value
admin@osdx$ service epd-frame write eth-router-gps add unsigned 8 32 25
OK
This command adds a custom unsigned integer value of 25 at offset 32 (8 bits size).
For bitset and antivalent types, values must be in binary format (e.g., “10110011”):
admin@osdx$ service epd-frame write eth-router-gps add bitset 16 48 1010101010101010
OK
admin@osdx$ service epd-frame write eth-router-gps add antivalent 2 100 01
OK
List custom values
admin@osdx$ service epd-frame write eth-router-gps list-epd
0. Offset[32]: 25
1. Offset[48]: 43690
-EPD frames sent: 1523
Delete custom values
Delete a specific custom value by ID:
admin@osdx$ service epd-frame write eth-router-gps delete 0
Value removed successfully
Delete all custom values:
admin@osdx$ service epd-frame write eth-router-gps delete all
All values have been removed successfully
Notes
Sink frames (eth-hmi1-c1-sts-m, eth-hmi1-c2-sts-m) are used to read variables from received frames
Source frames (eth-router-gps, eth-router-sts2-m) are used to write/customize variables in transmitted frames
Offset values must be specified in bits
For unsigned integers, offset must be a multiple of 8
Binary values for bitset/antivalent must match the specified size
Command Summary
Configuration commands
service epd-frame type sink eth-hmi1-c1-sts-m address <ipv4>service epd-frame type sink eth-hmi1-c2-sts-m address <ipv4>service epd-frame type source eth-router-sts2-m address <ipv4>service epd-frame type source eth-router-sts2-m config-id <u32>service epd-frame type source eth-router-sts2-m period <u32>