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
|