Configuration Layout
The YAML configuration example is composed of three parts: system, user, machines. The examples are best viewed using https://jsonformatter.org/yaml-parser because it dereferences nodes to give you a complete view.
Major Sections
Configuration is broken down into three main sections:
System
Node templates referenced elsewhere within the configuration.
Default transformations for supported transports.
User
Fanuc machine properties such as IP address and polling interval.
Groupings of data to be collected from the machine.
Transport configuration properties such as what port to emit SHDR on.
Machines
Defines each machine’s pipleine during runtime by assembling sections from
System
andUser
.
Configuring a Machine
Configuration of each machine are simply a YAML merge (<<
) and dereference (*
) operations of existing nodes in the YAML file.
Short Form
machines:
- id: my_fanuc
<<: *machine-base
#<<: *machine-disabled
<<: *source-1
<<: *collector-1
<<: *target-1
<<: *no-filter
*machine-base
reference is expended into:
#machine:
machine-base: &machine-base
enabled: !!bool true
type: l99.driver.fanuc.FanucMachine, fanuc
strategy: l99.driver.fanuc.strategies.FanucMultiStrategy, fanuc
handler: l99.driver.fanuc.handlers.FanucOne, fanuc
*source-1
reference is expanded into:
#user:
source-1: &source-1
l99.driver.fanuc.FanucMachine, fanuc:
sweep_ms: !!int 1000
net:
ip: 10.1.10.211
port: !!int 8193
timeout_s: !!int 3
Long Form
At run time the machine is expanded as shown below. Note that we are not dereferencing &default-shdr-transformers
or &default-shdr-model-genny
for brevity.
machines:
- id: my_fanuc
enabled: !!bool true
type: l99.driver.fanuc.FanucMachine, fanuc
strategy: l99.driver.fanuc.strategies.FanucMultiStrategy, fanuc
handler: l99.driver.fanuc.handlers.FanucOne, fanuc
l99.driver.fanuc.FanucMachine, fanuc:
sweep_ms: !!int 1000
net:
ip: 10.1.10.211
port: !!int 8193
timeout_s: !!int 3
l99.driver.fanuc.strategies.FanucMultiStrategy, fanuc:
collectors:
- l99.driver.fanuc.collectors.MachineInfo, fanuc
- l99.driver.fanuc.collectors.Alarms, fanuc
- l99.driver.fanuc.collectors.Messages, fanuc
- l99.driver.fanuc.collectors.StateData, fanuc
- l99.driver.fanuc.collectors.ToolData, fanuc
- l99.driver.fanuc.collectors.ProductionData, fanuc
- l99.driver.fanuc.collectors.GCodeData, fanuc
- l99.driver.fanuc.collectors.AxisData, fanuc
- l99.driver.fanuc.collectors.SpindleData, fanuc
l99.driver.fanuc.transports.SHDR, fanuc:
<< : *default-shdr-transformers
<< : *default-shdr-model-genny
device_name: f_sim
net:
port: !!int 7878
heartbeat_ms: !!int 10000
interval_ms: !!int 1000
l99.driver.fanuc.handlers.FanucOne, fanuc:
change_only: !!bool true
skip_internal: !!bool true
Long form is completely acceptable and typically more readable.
Limiting Collected Data
The default data collectors have been tested against a wide range of Fanuc controllers. However, if you run into unexpected issues, you can modify what data is collected by removing specific collectors.
machines:
- id: my_fanuc
enabled: !!bool true
...
l99.driver.fanuc.strategies.FanucMultiStrategy, fanuc:
collectors:
- l99.driver.fanuc.collectors.MachineInfo, fanuc
#- l99.driver.fanuc.collectors.Alarms, fanuc
#- l99.driver.fanuc.collectors.Messages, fanuc
- l99.driver.fanuc.collectors.StateData, fanuc
#- l99.driver.fanuc.collectors.ToolData, fanuc
#- l99.driver.fanuc.collectors.ProductionData, fanuc
#- l99.driver.fanuc.collectors.GCodeData, fanuc
#- l99.driver.fanuc.collectors.AxisData, fanuc
#- l99.driver.fanuc.collectors.SpindleData, fanuc
...