330 lines
9.0 KiB
YAML
330 lines
9.0 KiB
YAML
# arnold config.yaml — Terminator I/O server configuration
|
||
# ─────────────────────────────────────────────────────────────────────────────
|
||
# DEVICES
|
||
# Each device is a Terminator I/O EBC100 Ethernet base controller.
|
||
# Modules are listed in physical slot order (left-to-right after the EBC100).
|
||
# Supported module types: T1H-08TDS, T1H-08ND3, T1H-16ND3, T1H-08NA (inputs)
|
||
# T1H-08TD1, T1H-08TD2, T1H-16TD1, T1H-08TA, T1H-08TRS (outputs)
|
||
# ─────────────────────────────────────────────────────────────────────────────
|
||
|
||
devices:
|
||
- id: ebc100_main
|
||
host: 192.168.3.202
|
||
port: 502
|
||
unit_id: 1
|
||
poll_interval_ms: 50 # 20 Hz — well within EBC100 capability
|
||
modules:
|
||
- slot: 1
|
||
type: T1H-08TDS # 8-point 24VDC sinking digital input
|
||
points: 8
|
||
- slot: 2
|
||
type: T1H-08TDS
|
||
points: 8
|
||
- slot: 3
|
||
type: T1H-08TDS
|
||
points: 8
|
||
# ── Uncomment and adapt when output modules are added ──────────────────
|
||
# - slot: 4
|
||
# type: T1H-08TD1 # 8-point 24VDC sourcing digital output
|
||
# points: 8
|
||
|
||
|
||
# ─────────────────────────────────────────────────────────────────────────────
|
||
# LOGICAL I/O
|
||
# Give human-readable names to individual I/O points.
|
||
# device: must match a devices[].id above
|
||
# slot: physical slot number (1-based, matches modules list)
|
||
# point: point within that module (1-based, 1–8 for 8-pt modules)
|
||
# direction: must match the module type (input or output)
|
||
# ─────────────────────────────────────────────────────────────────────────────
|
||
|
||
logical_io:
|
||
# ── Slot 1 — Module 1 inputs ───────────────────────────────────────────────
|
||
- name: input_1_1
|
||
device: ebc100_main
|
||
slot: 1
|
||
point: 1
|
||
direction: input
|
||
|
||
- name: input_1_2
|
||
device: ebc100_main
|
||
slot: 1
|
||
point: 2
|
||
direction: input
|
||
|
||
- name: input_1_3
|
||
device: ebc100_main
|
||
slot: 1
|
||
point: 3
|
||
direction: input
|
||
|
||
- name: input_1_4
|
||
device: ebc100_main
|
||
slot: 1
|
||
point: 4
|
||
direction: input
|
||
|
||
- name: input_1_5
|
||
device: ebc100_main
|
||
slot: 1
|
||
point: 5
|
||
direction: input
|
||
|
||
- name: input_1_6
|
||
device: ebc100_main
|
||
slot: 1
|
||
point: 6
|
||
direction: input
|
||
|
||
- name: input_1_7
|
||
device: ebc100_main
|
||
slot: 1
|
||
point: 7
|
||
direction: input
|
||
|
||
- name: input_1_8
|
||
device: ebc100_main
|
||
slot: 1
|
||
point: 8
|
||
direction: input
|
||
|
||
# ── Slot 2 — Module 2 inputs ───────────────────────────────────────────────
|
||
- name: input_2_1
|
||
device: ebc100_main
|
||
slot: 2
|
||
point: 1
|
||
direction: input
|
||
|
||
- name: input_2_2
|
||
device: ebc100_main
|
||
slot: 2
|
||
point: 2
|
||
direction: input
|
||
|
||
- name: input_2_3
|
||
device: ebc100_main
|
||
slot: 2
|
||
point: 3
|
||
direction: input
|
||
|
||
- name: input_2_4
|
||
device: ebc100_main
|
||
slot: 2
|
||
point: 4
|
||
direction: input
|
||
|
||
- name: input_2_5
|
||
device: ebc100_main
|
||
slot: 2
|
||
point: 5
|
||
direction: input
|
||
|
||
- name: input_2_6
|
||
device: ebc100_main
|
||
slot: 2
|
||
point: 6
|
||
direction: input
|
||
|
||
- name: input_2_7
|
||
device: ebc100_main
|
||
slot: 2
|
||
point: 7
|
||
direction: input
|
||
|
||
- name: input_2_8
|
||
device: ebc100_main
|
||
slot: 2
|
||
point: 8
|
||
direction: input
|
||
|
||
# ── Slot 3 — Module 3 inputs ───────────────────────────────────────────────
|
||
- name: input_3_1
|
||
device: ebc100_main
|
||
slot: 3
|
||
point: 1
|
||
direction: input
|
||
|
||
- name: input_3_2
|
||
device: ebc100_main
|
||
slot: 3
|
||
point: 2
|
||
direction: input
|
||
|
||
- name: input_3_3
|
||
device: ebc100_main
|
||
slot: 3
|
||
point: 3
|
||
direction: input
|
||
|
||
- name: input_3_4
|
||
device: ebc100_main
|
||
slot: 3
|
||
point: 4
|
||
direction: input
|
||
|
||
- name: input_3_5
|
||
device: ebc100_main
|
||
slot: 3
|
||
point: 5
|
||
direction: input
|
||
|
||
- name: input_3_6
|
||
device: ebc100_main
|
||
slot: 3
|
||
point: 6
|
||
direction: input
|
||
|
||
- name: input_3_7
|
||
device: ebc100_main
|
||
slot: 3
|
||
point: 7
|
||
direction: input
|
||
|
||
- name: input_3_8
|
||
device: ebc100_main
|
||
slot: 3
|
||
point: 8
|
||
direction: input
|
||
|
||
# ── Outputs (uncomment when output module is added) ────────────────────────
|
||
# - name: output_4_1
|
||
# device: ebc100_main
|
||
# slot: 4
|
||
# point: 1
|
||
# direction: output
|
||
|
||
|
||
# ─────────────────────────────────────────────────────────────────────────────
|
||
# SEQUENCES
|
||
# name: unique identifier (used in POST /sequences/{name}/run)
|
||
# description: human-readable label
|
||
# steps: list of timed actions, executed in t_ms order
|
||
#
|
||
# Step fields:
|
||
# t_ms: milliseconds from sequence T=0 when this step fires (absolute)
|
||
# action: set_output | check_input
|
||
# signal: logical_io name
|
||
# state: (set_output only) true=ON false=OFF
|
||
# expected: (check_input only) true=ON false=OFF — failure aborts sequence
|
||
#
|
||
# ─────────────────────────────────────────────────────────────────────────────
|
||
|
||
sequences:
|
||
# ── Example: verify all inputs on module 1 are OFF at rest ────────────────
|
||
- name: check_all_inputs_off
|
||
description: "Verify all 24 inputs are de-energised (rest state check)"
|
||
steps:
|
||
- t_ms: 0
|
||
action: check_input
|
||
signal: input_1_1
|
||
expected: false
|
||
- t_ms: 0
|
||
action: check_input
|
||
signal: input_1_2
|
||
expected: false
|
||
- t_ms: 0
|
||
action: check_input
|
||
signal: input_1_3
|
||
expected: false
|
||
- t_ms: 0
|
||
action: check_input
|
||
signal: input_1_4
|
||
expected: false
|
||
- t_ms: 0
|
||
action: check_input
|
||
signal: input_1_5
|
||
expected: false
|
||
- t_ms: 0
|
||
action: check_input
|
||
signal: input_1_6
|
||
expected: false
|
||
- t_ms: 0
|
||
action: check_input
|
||
signal: input_1_7
|
||
expected: false
|
||
- t_ms: 0
|
||
action: check_input
|
||
signal: input_1_8
|
||
expected: false
|
||
- t_ms: 0
|
||
action: check_input
|
||
signal: input_2_1
|
||
expected: false
|
||
- t_ms: 0
|
||
action: check_input
|
||
signal: input_2_2
|
||
expected: false
|
||
- t_ms: 0
|
||
action: check_input
|
||
signal: input_2_3
|
||
expected: false
|
||
- t_ms: 0
|
||
action: check_input
|
||
signal: input_2_4
|
||
expected: false
|
||
- t_ms: 0
|
||
action: check_input
|
||
signal: input_2_5
|
||
expected: false
|
||
- t_ms: 0
|
||
action: check_input
|
||
signal: input_2_6
|
||
expected: false
|
||
- t_ms: 0
|
||
action: check_input
|
||
signal: input_2_7
|
||
expected: false
|
||
- t_ms: 0
|
||
action: check_input
|
||
signal: input_2_8
|
||
expected: false
|
||
- t_ms: 0
|
||
action: check_input
|
||
signal: input_3_1
|
||
expected: false
|
||
- t_ms: 0
|
||
action: check_input
|
||
signal: input_3_2
|
||
expected: false
|
||
- t_ms: 0
|
||
action: check_input
|
||
signal: input_3_3
|
||
expected: false
|
||
- t_ms: 0
|
||
action: check_input
|
||
signal: input_3_4
|
||
expected: false
|
||
- t_ms: 0
|
||
action: check_input
|
||
signal: input_3_5
|
||
expected: false
|
||
- t_ms: 0
|
||
action: check_input
|
||
signal: input_3_6
|
||
expected: false
|
||
- t_ms: 0
|
||
action: check_input
|
||
signal: input_3_7
|
||
expected: false
|
||
- t_ms: 0
|
||
action: check_input
|
||
signal: input_3_8
|
||
expected: false
|
||
|
||
# ── Example: output sequencing template (requires output module in slot 4) ─
|
||
# - name: actuate_and_verify
|
||
# description: "Set output, wait 500ms, verify input feedback"
|
||
# steps:
|
||
# - t_ms: 0
|
||
# action: set_output
|
||
# signal: output_4_1
|
||
# state: true
|
||
# - t_ms: 500
|
||
# action: check_input
|
||
# signal: input_1_1
|
||
# expected: true
|
||
# - t_ms: 1000
|
||
# action: set_output
|
||
# signal: output_4_1
|
||
# state: false
|