Files
SequencerIO/config.yaml
2026-03-02 17:48:55 -05:00

330 lines
9.0 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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, 18 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