Controller-to-I/O: SPE + PoDL to Simplify 24V Wiring
← Back to: Industrial Ethernet & TSN
SPE + PoDL enables one-cable Controller-to-I/O.
It combines data and power on a single Single-Pair Ethernet run to feed remote I/O boxes, reducing 24 V distribution wiring and failure points while keeping boot stability, brownout recovery, and acceptance criteria measurable.
H2-13 · IC Selection Logic (System → Parts Mapping)
Map real Controller-to-I/O constraints (reach, power class, thermal headroom, cycle/jitter, and service model) to concrete chip building blocks and example part numbers—without drifting into PHY/PoDL/protection deep-dives.
Step 1 · Lock the system inputs
(These decide power class, topology, and what “diagnostics” means.)
- Reach & topology: point-to-point length (m), number of remote I/O boxes, allowed spur/T-branches (yes/no).
- Delivered power: target watts at the I/O box, peak/inrush behavior, and allowed brownout window.
- Thermal headroom: max enclosure temperature, no-airflow vs airflow, derating rule (threshold placeholder: X°C rise).
- I/O cycle needs: cycle time, jitter budget, “safe-state on fault” requirement, and recovery time requirement (X ms).
- Service model: swap-in replacement, segment isolation, port-level logs, and field-friendly bring-up points.
- EMC environment: VFD proximity, ESD/surge exposure, and grounding/shielding policy (single-point vs multi-point).
Decision shortcut: If “delivered power” or “thermal headroom” dominates, select PoDL/SPoE controllers and DC/DC first; if “cycle/jitter” dominates, select MAC/host + buffering/logging strategy first; then lock the PHY.
Step 2 · Map needs to blocks
(System → modules → part shortlist)
Controller-to-I/O over SPE + PoDL typically resolves into the following blocks. Each block has a “must-have” capability list; example parts are provided as anchors (final selection must match cable, class, and thermal reality).
- SPE PHY / MAC-PHY: 10BASE-T1L (long reach, point-to-point) or 10BASE-T1S (short reach, multi-drop). Must-haves: robust link stability, diagnostics hooks, and clear host interface.
- PoDL / SPoE (PSE + PD): classification, inrush handling, undervoltage behavior, fault reporting. Must-haves: controllable startup + predictable recovery.
- DC/DC (non-isolated or isolated): wide input, transient tolerance, predictable soft-start, and thermal efficiency at enclosure limits.
- Protection + EMC parts: low-cap ESD/TVS for the differential pair, common-mode choke tuned for SPE, and clear grounding path strategy.
- Isolation (as required): digital isolators for I/O domains and/or isolated DC/DC modules when safety/noise segregation requires it.
- Host controller / MAC: MCU/SoC with MAC, or MAC-PHY with SPI for MCUs without Ethernet MAC; must-haves: deterministic buffering + timestamp/logging.
Step 3 · Example part numbers by block
(Anchors for BOM planning; verify class/package/temp grade per project.)
Block A · SPE PHY / MAC-PHY
- 10BASE-T1L PHY (long reach, point-to-point): TI DP83TD510E ADI ADIN1100 ADI ADIN1110
- 10BASE-T1S (short reach, multi-drop) – MAC-PHY or PHY: Microchip LAN8650 / LAN8651 Microchip LAN8670 / LAN8671 / LAN8672
Selection rule: choose 10BASE-T1L when reach + simple P2P wiring dominates; choose 10BASE-T1S when multi-drop servicing and short runs dominate (then treat power budgeting and fault isolation as first-class requirements).
Block B · PoDL / SPoE Power (PSE + PD)
- PSE controller (power sourcing): ADI LTC4296-1 (multi-port SPoE / IEEE 802.3cg class systems)
- PD controller (powered device at the I/O box): ADI LTC9111
Must-check before locking a controller:
power class compatibility, inrush/soft-start policy, undervoltage lockout behavior, fault reporting granularity, and recovery throttling support.
Block C · DC/DC Conversion (Remote I/O Box)
- Wide-input buck (power rail generation): TI LM5163 ADI LT8609S
- Isolated DC/DC module (when isolation is required): Murata NXJ1S1205MC-R7
Selection rule:
start from worst-case cable drop + brownout policy; pick DC/DC that holds regulation across the allowed undervoltage window, with predictable soft-start to avoid re-triggering classification or link flaps.
Block D · Isolation (Signal Domains / I/O Safety)
- Quad-channel digital isolators: TI ISO7741 ADI ADuM141E
Must-check:
isolation rating vs safety spec, CMTI vs noise environment, propagation delay vs I/O timing, and channel direction mix.
Block E · Protection + EMC (Differential Pair + Cable)
- Low-cap ESD/TVS (high-speed diff pair): Nexperia PESD2ETH-D Nexperia PESD2ETH-AX Semtech RClamp03392P Semtech RClamp0504FB Littelfuse SP3025-04HTG Littelfuse SP3374NUTG Littelfuse SP3312T
- Common-mode choke (SPE-focused examples): Würth 744242471 Würth 744272471 TDK RCM70CGI-471
Do-not-break rule:
for SPE diff pairs, protection must be low capacitance and placed to avoid creating stubs; choke + TVS choices must preserve the channel’s return-loss margin.
Step 4 · Selection table template (fill per project)
(Keep as a living BOM decision sheet.)
| Block | Example Part # | Key capability to verify | Project-specific thresholds (placeholders) | Notes / boundary |
|---|---|---|---|---|
| 10BASE-T1L PHY | DP83TD510E / ADIN1100 | Cable reach margin, diagnostics hooks, host IF | Reach ≥ X m, BER ≤ X, link up time ≤ X ms | PHY electrical deep-dive belongs to SPE PHY page |
| PSE Controller | LTC4296-1 | Class support, inrush policy, fault granularity | Class X, inrush ≤ X A for X ms, retry backoff X | PoDL/SPoE standards & classes belong to PoDL page |
| PD Controller | LTC9111 | UVLO behavior, hold-up strategy, fault flags | Brownout window X ms, safe-state within X ms | Keep recovery policy aligned with H2-5 rules |
| Buck DC/DC | LM5163 / LT8609S | Transient tolerance, soft-start, efficiency @ load | η ≥ X%, ΔT ≤ X°C, Vout droop ≤ X% | Thermal model ties to enclosure and service model |
| Protection | PESD2ETH-D / RClamp03392P / SP3025-04HTG | Capacitance vs channel margin, surge/ESD rating | C ≤ X pF, IEC ESD ≥ X kV, surge ≥ X A | Layout/return path details belong to Protection page |
| CM Choke | 744242471 / 744272471 / RCM70CGI-471 | EMI gain without killing link margin | Radiated drop ≥ X dB, BER unchanged ≤ X | Validate with same cable/connector harness |
Tip: keep a separate “project constants” block (cable type, loop resistance, power class, ambient, cycle target) and reference it from every row to prevent mismatched assumptions.
Boundary · What not to solve here
- PHY electrical tuning / compliance margins → go to SPE PHY sub-page.
- PoDL/SPoE class math + detailed PD design → go to PoE / PoDL sub-page.
- Protection placement, return paths, creepage/clearance → go to PHY Co-Design & Protection sub-page.
- TDR/return-loss/SNR measurement procedures → go to Cable Diagnostics sub-page.
H2-13 · FAQs (Controller-to-I/O over SPE + PoDL)
Scope: practical bring-up, stability, maintainability, and acceptance criteria for Controller-to-I/O using SPE + PoDL/SPoE. Each answer is fixed to 4 lines: Likely cause / Quick check / Fix / Pass criteria (X placeholders).
Link is up, but the remote I/O box does not boot—check PD headroom or inrush limiting first?
Likely cause: PD input headroom collapses at startup, or inrush limit/UVLO cycles prevent the DC/DC and I/O rails from reaching regulation.
Quick check: Log V_PD_in_min, I_inrush_peak, and PD fault flags during the first X ms after link-up/power-on.
Fix: Sequence “power stable → link stable window → I/O enable”; tune soft-start/inrush policy; increase headroom (class/cable/rail) if margin is negative.
Pass criteria: V_margin ≥ X V above UVLO during startup; boot success ≥ X% across Y cold starts; T_boot ≤ X s.
Quick check: Log V_PD_in_min, I_inrush_peak, and PD fault flags during the first X ms after link-up/power-on.
Fix: Sequence “power stable → link stable window → I/O enable”; tune soft-start/inrush policy; increase headroom (class/cable/rail) if margin is negative.
Pass criteria: V_margin ≥ X V above UVLO during startup; boot success ≥ X% across Y cold starts; T_boot ≤ X s.
The link drops when a remote load switches—brownout or “retry storm” recovery policy?
Likely cause: Load step causes PD rail droop (brownout) and triggers link flap; aggressive retries amplify instability into a storm.
Quick check: Correlate droop and flaps: V_PD_in_min, N_link_flap, CRC_rate, and recovery logs over a X min window.
Fix: Add staged enabling for loads; implement backoff/throttling for reconnection; ensure DC/DC transient response and hold-up match the load profile.
Pass criteria: N_link_flap ≤ X/hour; T_recover ≤ X s to stable heartbeat; V_PD_in_min ≥ X V during worst-case step.
Quick check: Correlate droop and flaps: V_PD_in_min, N_link_flap, CRC_rate, and recovery logs over a X min window.
Fix: Add staged enabling for loads; implement backoff/throttling for reconnection; ensure DC/DC transient response and hold-up match the load profile.
Pass criteria: N_link_flap ≤ X/hour; T_recover ≤ X s to stable heartbeat; V_PD_in_min ≥ X V during worst-case step.
Same cable length, but changing the I/O box makes power unstable—budget definition or DC/DC startup curve?
Likely cause: Power budget used “average” while the new box has higher peak/inrush, or its DC/DC soft-start conflicts with PD limits and UVLO behavior.
Quick check: Compare peak vs steady: I_load_peak, I_inrush_peak, ramp time t_softstart, and V_margin at the same test points.
Fix: Recompute “waterfall” power budget with peak/inrush; align PD policy with DC/DC startup; split/sequence loads if needed.
Pass criteria: Budget closes with V_margin ≥ X V; no UVLO cycling; stable operation ≥ Y min under worst-case duty cycle.
Quick check: Compare peak vs steady: I_load_peak, I_inrush_peak, ramp time t_softstart, and V_margin at the same test points.
Fix: Recompute “waterfall” power budget with peak/inrush; align PD policy with DC/DC startup; split/sequence loads if needed.
Pass criteria: Budget closes with V_margin ≥ X V; no UVLO cycling; stable operation ≥ Y min under worst-case duty cycle.
Short cable is fine, long cable has intermittent reconnects—voltage drop margin or grounding/shielding choice?
Likely cause: Long-run drop reduces headroom during peaks, or the installation grounding/shielding creates common-mode stress that triggers errors and resets.
Quick check: Measure V_PD_in_min at long-run worst load; log CRC_rate and N_link_flap vs grounding/shield configuration state.
Fix: Increase headroom (class, conductor, rail); enforce a consistent grounding/shield policy (e.g., 360° shield bond where required) and avoid “floating” partial shields.
Pass criteria: V_margin ≥ X V at peak; CRC_rate ≤ X/10^6 frames; N_link_flap ≤ X/day.
Quick check: Measure V_PD_in_min at long-run worst load; log CRC_rate and N_link_flap vs grounding/shield configuration state.
Fix: Increase headroom (class, conductor, rail); enforce a consistent grounding/shield policy (e.g., 360° shield bond where required) and avoid “floating” partial shields.
Pass criteria: V_margin ≥ X V at peak; CRC_rate ≤ X/10^6 frames; N_link_flap ≤ X/day.
Changing the power-up order makes it stable—is it link-up timing or I/O enable timing?
Likely cause: Race between link establishment and load enabling; early I/O enable injects a transient that collapses headroom or forces retries.
Quick check: Capture three timestamps: power-rail “in regulation”, link-up event, and I/O enable event; compare to the first error/reconnect onset.
Fix: Formalize a state machine: “power OK → link stable window → I/O enable”, plus backoff if power faults occur during the window.
Pass criteria: Link-up ≤ X ms; I/O enable only after Y ms stable window; reconnects ≤ X per Z starts.
Quick check: Capture three timestamps: power-rail “in regulation”, link-up event, and I/O enable event; compare to the first error/reconnect onset.
Fix: Formalize a state machine: “power OK → link stable window → I/O enable”, plus backoff if power faults occur during the window.
Pass criteria: Link-up ≤ X ms; I/O enable only after Y ms stable window; reconnects ≤ X per Z starts.
Remote box runs hot and fails intermittently—derating curve or cable heating/line loss?
Likely cause: Thermal derating reduces available power/headroom, and cable heating increases resistance causing additional drop under load.
Quick check: Track ΔT_box, ΔT_cable, and V_PD_in_min from cold start to thermal steady state; log when flaps begin.
Fix: Apply derating policy (reduce duty/sequence loads); improve enclosure heat path; adjust cable spec or shorten run if headroom collapses at temperature.
Pass criteria: ΔT_box ≤ X °C; ΔT_cable ≤ Y °C; stable operation ≥ Z h at max ambient.
Quick check: Track ΔT_box, ΔT_cable, and V_PD_in_min from cold start to thermal steady state; log when flaps begin.
Fix: Apply derating policy (reduce duty/sequence loads); improve enclosure heat path; adjust cable spec or shorten run if headroom collapses at temperature.
Pass criteria: ΔT_box ≤ X °C; ΔT_cable ≤ Y °C; stable operation ≥ Z h at max ambient.
After maintenance cable replacement, issues increased—connector crimp/shield 360° or segment grounding?
Likely cause: Higher contact resistance or incomplete 360° shield termination; segment grounding creates unintended noise paths.
Quick check: Compare before/after Vdrop at peak load; inspect shield continuity and bonding; review logs for new CRC bursts and flaps post swap.
Fix: Define a field swap acceptance: shield continuity check, contact resistance limits, and a port self-test (loopback + counters) before handoff.
Pass criteria: MTTR_swap ≤ X min; post-swap N_link_flap ≤ X/day; CRC bursts ≤ X per Y min.
Quick check: Compare before/after Vdrop at peak load; inspect shield continuity and bonding; review logs for new CRC bursts and flaps post swap.
Fix: Define a field swap acceptance: shield continuity check, contact resistance limits, and a port self-test (loopback + counters) before handoff.
Pass criteria: MTTR_swap ≤ X min; post-swap N_link_flap ≤ X/day; CRC bursts ≤ X per Y min.
Daisy-chaining multiple I/O boxes makes the far end drop more—power waterfall or fault partitioning?
Likely cause: Downstream headroom collapses due to cumulative drop, or a single fault propagates without partitioning and causes cascading retries.
Quick check: Measure V_PD_in_min per node; compare downstream N_link_flap and recovery logs; verify per-segment isolation behavior.
Fix: Close a waterfall budget per segment; implement fault isolation (port-level or box-level) and staged recovery so one node does not destabilize all nodes.
Pass criteria: Far-end V_margin ≥ X V; far-end flaps ≤ X/hour; single-node fault does not increase others’ flaps by more than X%.
Quick check: Measure V_PD_in_min per node; compare downstream N_link_flap and recovery logs; verify per-segment isolation behavior.
Fix: Close a waterfall budget per segment; implement fault isolation (port-level or box-level) and staged recovery so one node does not destabilize all nodes.
Pass criteria: Far-end V_margin ≥ X V; far-end flaps ≤ X/hour; single-node fault does not increase others’ flaps by more than X%.
I/O cycle jitter occasionally spikes—controller queue/interrupts or power-triggered retransmit/relink?
Likely cause: Host scheduling/interrupt contention, or power events force retransmits/relinks that inflate jitter even when average cycle looks fine.
Quick check: Log Jitter_p99/Jitter_p999 with CPU load and N_link_flap/CRC_rate; identify whether spikes align to power faults or host bursts.
Fix: Prioritize cyclic path (buffers/queues/IRQ); add power-fault aware throttling; prevent “storm recovery” from consuming cycle budget.
Pass criteria: Over X min, Jitter_p99 ≤ X ms and p999 ≤ Y ms; flaps ≤ Z/hour.
Quick check: Log Jitter_p99/Jitter_p999 with CPU load and N_link_flap/CRC_rate; identify whether spikes align to power faults or host bursts.
Fix: Prioritize cyclic path (buffers/queues/IRQ); add power-fault aware throttling; prevent “storm recovery” from consuming cycle budget.
Pass criteria: Over X min, Jitter_p99 ≤ X ms and p999 ≤ Y ms; flaps ≤ Z/hour.
“Less wiring, but harder to service”—how to design bypass/segmentation/fast swap for maintainability?
Likely cause: No segmentation points, no bypass plan, and insufficient logs/counters to isolate “power vs link vs I/O processing” quickly.
Quick check: Time a controlled fault drill: can the system isolate root segment within X min using only port status, PSE/PD telemetry, and counters?
Fix: Add port-level bypass/loopback options, labeled segment points, and a minimal log schema (power events + link counters + I/O heartbeat) for field triage.
Pass criteria: Fault localization ≤ X min; swap+restore ≤ Y min; required log fields present rate ≥ Z%.
Quick check: Time a controlled fault drill: can the system isolate root segment within X min using only port status, PSE/PD telemetry, and counters?
Fix: Add port-level bypass/loopback options, labeled segment points, and a minimal log schema (power events + link counters + I/O heartbeat) for field triage.
Pass criteria: Fault localization ≤ X min; swap+restore ≤ Y min; required log fields present rate ≥ Z%.
It runs fine for minutes, then becomes unstable—thermal headroom shrink or load mode switching?
Likely cause: After reaching thermal steady state, headroom drops; or a periodic load-mode transition introduces a repeatable droop and triggers recovery loops.
Quick check: Align instability onset with ΔT_box curve and load-state transitions; check whether V_PD_in_min trends downward before flaps.
Fix: Apply derating/sequence policies at thermal thresholds; adjust DC/DC transient behavior and recovery backoff so mode shifts do not cascade into link resets.
Pass criteria: After X min warm-up, still V_margin ≥ Y V; stable for Z h; flaps ≤ X/day.
Quick check: Align instability onset with ΔT_box curve and load-state transitions; check whether V_PD_in_min trends downward before flaps.
Fix: Apply derating/sequence policies at thermal thresholds; adjust DC/DC transient behavior and recovery backoff so mode shifts do not cascade into link resets.
Pass criteria: After X min warm-up, still V_margin ≥ Y V; stable for Z h; flaps ≤ X/day.
How to write acceptance criteria without disputes—what must be quantified (voltage/temperature/reconnect/jitter)?
Likely cause: Missing metric definitions (sampling point, window, denominator) makes “pass/fail” ambiguous and unrepeatable across sites and teams.
Quick check: Standardize a metric dictionary: V_PD_in_min, V_margin, ΔT_box, N_link_flap, T_recover, Jitter_p99/p999, CRC_rate.
Fix: For each metric, specify (1) where measured, (2) window length, (3) statistic (min/p99/p999), and (4) threshold + units; include a fault drill for maintainability.
Pass criteria: Every metric has units + window + statistic; example placeholders: V_PD_in_min ≥ X V, ΔT_box ≤ X °C, N_link_flap ≤ X/day, Jitter_p99 ≤ X ms.
Quick check: Standardize a metric dictionary: V_PD_in_min, V_margin, ΔT_box, N_link_flap, T_recover, Jitter_p99/p999, CRC_rate.
Fix: For each metric, specify (1) where measured, (2) window length, (3) statistic (min/p99/p999), and (4) threshold + units; include a fault drill for maintainability.
Pass criteria: Every metric has units + window + statistic; example placeholders: V_PD_in_min ≥ X V, ΔT_box ≤ X °C, N_link_flap ≤ X/day, Jitter_p99 ≤ X ms.