Configuration
General
The application can be configured by a combination of command line interface, config file and environment variables.
Run Modes
The application has two different run modes.
run: runs the application (default)
dummy_opcua_server: runs the master with a fake link layer (useful if you only want to see the opcua server)
The mode can only be selected by using the CLI.
Supported options
Currently supported config options are:
Name |
Default |
Config file key |
Environment |
CLI |
|---|---|---|---|---|
ENI File |
None |
eni-file |
|
|
Log Directory |
None |
log-dir |
|
|
Benchmark Directory |
logdir |
benchmark-dir |
|
|
OPC-UA Port |
4840 |
opcua-port |
|
|
PDO Automation Directory |
None |
pdo-automation-dir |
|
|
Cycle Time (in µs) |
None |
cycle-time |
|
|
Network Interface |
None |
interface |
|
|
Verbose Mode |
false |
verbose |
|
|
RT Priority |
49 |
priority |
|
|
Lock Memory |
true |
lock-memory |
|
|
Prevent Sleep States |
true |
prevent-sleep-states |
|
|
CPU Affinity |
-1 |
cpu-affinity |
|
|
Transition Timeout (ms) |
0 |
transition-timeout |
|
|
Relax WKC Check |
false |
relax-wkc-check |
|
|
SDO Max Payload Size |
256 |
sdo-max-payload-size |
|
|
RT Port Config |
see below |
rt-port-config |
|
|
EoE TAP Enabled |
false |
eoe-tap-enabled |
|
|
EoE TAP Ifname |
empty |
eoe-tap-ifname |
|
|
EoE TAP IPv4 CIDR |
empty |
eoe-tap-ip-cidr |
|
|
The order of evaluation is:
default values
config file
environment
CLI
This means, if an option is provided by config file and CLI, the value from the CLI will be used. Below is a description of all options. Some of them require Linux capabilities. If you run the master as the root user and without docker, all necessary capabilities are typically already present. However, if you use Docker, you have to explicitly add these capabilities. See Docker for a compose file that adds all required capabilities.
ENI File
The EtherCAT Master needs an ENI file which describes the EtherCAT Network.
Log Directory
Logfiles are created in this directory.
Benchmark Directory
The master operates in a (soft) realtime context. To diagnose timing and realtime issues, some metrics e.g. the runtime of the cyclic task and the jitter of the receive timestamp are saved into a histogram. This helps to diagnose realtime issues. However, the benchmarks are currently used for development only.
OPC UA Port
This is the port to which the OPC UA server will bind.
PDO Automation Directory
PDO automations are loaded from this directory at startup.
Cycle Time
The cycle time in microseconds to use.
Network Interface
The interface that is used for the communication with the EtherCAT devices.
If the interface is down, or has no link during startup, the master waits for the interface to become ready.
The capabilities CAP_NET_RAW and CAP_NET_ADMIN are needed to use raw sockets.
Verbose Mode
If this is true, the master starts with a lower log level.
RT Priority
The main thread is started with SCHED_FIFO and this priority.
Leave this at the default value, if you don’t know exactly what you are doing.
In general, it is advisable to stay under 50, because most kernel threads have this priority.
Using a higher priority generally leads to priority inversion with e.g. the network irq handler or e.g. the RCU thread.
Generally, the capability CAP_SYS_NICE is required for using SCHED_FIFO (realtime) priorities.
Lock Memory
On startup, the memory is locked using mlockall if this option is true.
The capability CAP_IPC_LOCK is needed for this option.
Prevent Sleep States
Prevents the CPU from entering sleep states (C-States) to avoid latencies caused by the wakeup transitions.
This is done, by writing 0 to /dev/cpu_dma_latency. Therefore the application needs to have write access to this
file if this option is enabled.
See PM QoS for details.
If your system has sleep states disabled using some other way, e.g. by the kernel parameter idle=poll, this option can
be disabled.
CPU Affinity
Pin the cyclic task to this CPU. The value -1 means that the thread is not pinned.
Transition Timeout
Timeout for the error transition state in milliseconds. See State Machine for details.
Relax WKC Check
If set to true, the working counter checks will be relaxed if the state is not Operational. This is generally not recommended, but required for some EtherCAT slaves.
SDO Max Payload Size
Maximum payload size in bytes used by the realtime port SDO services (ecat-sdo-port) for request and response data
buffers.
The default is 256 bytes. Increase this value if your workflow requires transferring larger SDO objects. Since it affects the buffers on the SDO realtime port, you may also need to adjust your application if you change this.
RT Port Config
The file containing realtime-port configuration (see RT Port Configuration for details).
Defaults to /etc/voraus/voraus-ethercat-master/port_config.json.
EoE TAP Enabled
Enables Ethernet-over-EtherCAT forwarding to a virtual interface. See Ethernet over EtherCAT (EoE).
EoE TAP Ifname
Name of the virtual Ethernet interface (TAP) used by EoE. If this is not set, the kernel will choose a name. This can either be a preexisting TAP or the master can create the TAP itself. If EoE TAP Enabled is not set to true, this option has no effect.
EoE TAP IPv4 CIDR
Optional IPv4 address in CIDR notation that is set on the EoE TAP. If this is not set, no IP address will be configured on the TAP and the TAP will be considered managed externally. This means that the TAP will also not be brought up by the master. If EoE TAP Enabled is not set to true, this option has no effect.
Config File
The config file is in json format and can be passed using the CLI (--config) or by the environment
variable (VORAUS_CONFIG_DIR).
@note The environment variable VORAUS_CONFIG_DIR contains the path to the config directory and not the path to the
actual config file.
If the config file is passed by environment variable, it must be named and located
at ${VORAUS_CONFIG_DIR}/config.json.
An example config file is:
{
"eni-file": "example_eni_file.xml",
"log-dir": "logs",
"opcua-port": 48400,
"cycle-time": 2000,
"interface": "eth0",
"lock-memory": true,
"prevent-sleep-states": true,
"priority": 45,
"verbose": true,
"relax-wkc-check": false,
"sdo-max-payload-size": 256,
"rt-port-config": "example_port_config.json",
"eoe-tap-enabled": true,
"eoe-tap-ifname": "eoe0",
"eoe-tap-ip-cidr": "192.168.10.1/24"
}
CLI
The CLI works by specifying a subcommand (see run modes).
Some options which are required for actually running the master, can be omitted, when only the dummy opcua server is
started. See the help message for details (voraus-ethercat-master --help).