{"id":2903,"date":"2026-10-31T21:36:17","date_gmt":"2026-10-31T21:36:17","guid":{"rendered":"https:\/\/raynovtechnology.com\/fault-injection-harness-ecu\/"},"modified":"2026-11-01T10:29:55","modified_gmt":"2026-11-01T10:29:55","slug":"fault-injection-harness-ecu","status":"publish","type":"post","link":"https:\/\/raynovtechnology.com\/fr\/fault-injection-harness-ecu\/","title":{"rendered":"Injection de d\u00e9fauts sur faisceaux et calculateurs : principes et bonnes pratiques"},"content":{"rendered":"<p>A sensor wire chafes through on a chassis bracket, touches the body, and the ECU has a few milliseconds to decide whether it is looking at a real signal, a short to ground or a broken sensor. If that decision was never tested on the bench, it will be tested in the field. Fault injection is how you move that test back to the lab: you deliberately create the electrical faults a harness will one day suffer, in a controlled and repeatable way, and you check that the ECU detects them, reports the right diagnostic code and falls back to the right degraded mode, without being damaged.<\/p>\n<p>This guide explains the fault types, how a switching matrix is built, how to size it, how to keep the setup safe, and how to make every injected fault traceable.<\/p>\n<h2>1. The fault types you need to cover<\/h2>\n<p>Most electrical fault campaigns start from five basic faults, applied to each relevant pin:<\/p>\n<ul>\n<li><strong>Open circuit<\/strong>: the line is disconnected between harness and ECU. It simulates a broken wire, a backed-out contact or an unplugged connector.<\/li>\n<li><strong>Short to ground<\/strong>: the line is tied to the ground reference. It simulates insulation damage against the body or chassis.<\/li>\n<li><strong>Short to battery<\/strong>: the line is tied to the supply rail. It simulates chafing against a powered conductor.<\/li>\n<li><strong>Pin-to-pin short<\/strong>: two signal lines are connected together. It simulates damage inside a bundle or a contamination bridge in a connector.<\/li>\n<li><strong>Series or parallel resistance<\/strong>: a resistor is inserted in series (corroded contact, degraded crimp) or in parallel to ground or supply (leakage, moisture). These &#8220;soft&#8221; faults are often the most interesting, because they sit close to the ECU&#8217;s detection thresholds.<\/li>\n<\/ul>\n<p>For each pin, the test specification should state which faults apply. A short to battery on an output that is already driven high may be pointless; an open circuit on a redundant ground may be the most important test of the whole campaign.<\/p>\n<h2>2. How a fault-injection matrix works<\/h2>\n<h3>2.1 Principle diagram (described)<\/h3>\n<p>The fault-injection unit sits <strong>between the harness and the ECU under test<\/strong>, in series with every line you want to disturb. Picture it from left to right:<\/p>\n<ol>\n<li>The vehicle or bench harness arrives on connector A.<\/li>\n<li>Each line passes through a <strong>series relay<\/strong> (normally closed path). Opening it creates the open circuit.<\/li>\n<li>On the ECU side of that relay, each line can be connected through further relays to one of several <strong>fault buses<\/strong>: a ground bus, a battery bus, and a &#8220;pin-to-pin&#8221; bus shared by lines.<\/li>\n<li>A <strong>resistor decade or selectable resistor bank<\/strong> can be switched into the series path or between the line and a fault bus to create resistive faults.<\/li>\n<li>The line leaves on connector B toward the ECU.<\/li>\n<\/ol>\n<p>A test sequencer drives the relays, so each fault is a defined state of the matrix. In practice, the fault-injection unit is often combined with a <a href=\"https:\/\/raynovtechnology.com\/product-category\/breakout-boxes\/\">breakout box<\/a> so that every line also remains accessible for measurement.<\/p>\n<h3>2.2 Why a shared fault bus is a design decision<\/h3>\n<p>A shared bus keeps the relay count manageable: with N lines, you need roughly one series relay plus one or two bus relays per line, rather than a relay for every possible pair. The trade-off is that only one fault (or one pair) can be active on a bus at a time. If your specification requires simultaneous independent faults, plan several buses.<\/p>\n<h2>3. Sizing the relays and the paths<\/h2>\n<p>The relay must survive the worst case it can see, not the nominal current.<\/p>\n<h3>3.1 Selection criteria<\/h3>\n<ul>\n<li><strong>Continuous current<\/strong> of the line in normal operation (series path).<\/li>\n<li><strong>Fault current<\/strong> when you short a line to ground or battery. This is set by the source impedance and any limiting you add, not by the ECU.<\/li>\n<li><strong>Switching voltage<\/strong> and whether the relay switches under load (contact wear, arcing on inductive loads).<\/li>\n<li><strong>Contact resistance<\/strong>, which adds to the line and matters for low-level analog signals and sensor grounds.<\/li>\n<li><strong>DC breaking capacity<\/strong>: relay contacts are rated much lower in DC than in AC; check the DC switching curve at the line voltage, especially on inductive loads, and prefer switching the fault with no current where possible (contact welding risk).<\/li>\n<li><strong>Signal type<\/strong>: for low-level analog or communication lines, check capacitance and leakage of the path too.<\/li>\n<\/ul>\n<h3>3.2 Worked example (illustrative values, not RAYNOV specifications)<\/h3>\n<p><em>Example:<\/em> a low-side ECU output, switched on (line held close to 0 V), and you inject a short to battery through a 10 \u03a9 current-limiting resistor. The current is roughly I = V \/ R = 12 V \/ 10 \u03a9 = 1.2 A. The resistor dissipates P = V\u00b2 \/ R = 144 \/ 10 = 14.4 W while the fault is active. A 0.25 W resistor would fail immediately; a power resistor, a short fault duration, or a higher resistance is needed. The ECU driver must also be rated, or protected, for that current.<\/p>\n<p><em>Example:<\/em> on a sensor ground carrying 50 mA, a relay contact of 100 m\u03a9 adds a drop of 0.05 A \u00d7 0.1 \u03a9 = 5 mV. On a ratiometric sensor with a few millivolts of resolution, that is not negligible. Count every contact, connector and wire segment in the path.<\/p>\n<h2>4. Safety: protect the ECU, the bench and the operator<\/h2>\n<p>Fault injection is deliberately destructive in intent, so the setup must limit the damage to what you actually want to test.<\/p>\n<ul>\n<li><strong>Current limiting<\/strong> on the battery and ground fault buses: a resistor, an electronic limit on the power supply, or both.<\/li>\n<li><strong>Fuses<\/strong> on fault buses, sized below the rating of the relays and wiring of the matrix.<\/li>\n<li><strong>Sequencing rule: open before you short.<\/strong> Always break the existing path before connecting a line to a fault bus, and release the fault before closing the series path again. Never rely on two relays changing state &#8220;at the same time&#8221;.<\/li>\n<li><strong>Break-before-make<\/strong> behaviour verified on the actual relays, including bounce time.<\/li>\n<li><strong>Emergency stop<\/strong> that returns the matrix to its neutral state (all series paths closed, all fault buses open) or cuts the supply, depending on what is safest for the ECU.<\/li>\n<li><strong>Interlocks in software<\/strong>: forbid states that would short battery to ground through two lines.<\/li>\n<\/ul>\n<h2>5. Traceability: one fault, one test line<\/h2>\n<p>A fault campaign is only useful if you can prove later what was injected and what happened. Each injected fault should be a test step with:<\/p>\n<table>\n<thead>\n<tr>\n<th>Field<\/th>\n<th>Example content<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Pin \/ signal<\/td>\n<td>Input X, connector A pin 12 (example)<\/td>\n<\/tr>\n<tr>\n<td>Fault type<\/td>\n<td>Short to ground via 0 \u03a9<\/td>\n<\/tr>\n<tr>\n<td>Preconditions<\/td>\n<td>Supply voltage, ECU mode, other faults inactive<\/td>\n<\/tr>\n<tr>\n<td>Duration<\/td>\n<td>Time the fault is held<\/td>\n<\/tr>\n<tr>\n<td>Expected response<\/td>\n<td>Diagnostic code, degraded mode, output state<\/td>\n<\/tr>\n<tr>\n<td>Measured response<\/td>\n<td>Read back from the ECU (diagnostic tool) and measured on the line<\/td>\n<\/tr>\n<tr>\n<td>Recovery check<\/td>\n<td>ECU behaviour after the fault is removed<\/td>\n<\/tr>\n<tr>\n<td>Verdict<\/td>\n<td>Pass \/ fail<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The recovery check is often forgotten. Many ECUs must clear or latch a fault in a defined way after it disappears; that behaviour deserves its own expected result. Test limits and sequences should be versioned, as for any automated test (<a href=\"\/test-automation-script-to-sequencer\/\">Test automation: from script to sequencer<\/a>).<\/p>\n<h2>6. The special case of communication buses<\/h2>\n<p>Faults on a CAN bus cannot be handled like a simple digital line.<\/p>\n<ul>\n<li>A CAN bus is a <strong>differential pair with terminations<\/strong>. Opening one wire or shorting CAN-H to CAN-L changes the bus, not just one node.<\/li>\n<li>Inserting relays adds <strong>capacitance and stubs<\/strong>; at higher bit rates this can create errors that you did not intend to inject.<\/li>\n<li>Removing or adding a <strong>termination<\/strong> is a fault in its own right and must be modelled explicitly.<\/li>\n<li>The behaviour depends on the <strong>bus load<\/strong> and the other nodes present, real or simulated.<\/li>\n<\/ul>\n<p>Treat bus faults as a dedicated part of the campaign, with their own hardware and expected results, and check that the matrix itself does not degrade the bus in the &#8220;no fault&#8221; state.<\/p>\n<h2>7. Common mistakes<\/h2>\n<ul>\n<li>Sizing relays for the nominal current and not for the fault current.<\/li>\n<li>Shorting before opening, which briefly connects the harness source to the fault bus.<\/li>\n<li>Forgetting the contact resistance of the matrix on low-level sensor lines and grounds.<\/li>\n<li>Testing only &#8220;hard&#8221; faults (0 \u03a9, open) and never the resistive values close to detection thresholds.<\/li>\n<li>No recovery check after the fault is removed.<\/li>\n<li>Not validating the matrix itself before the campaign (see the bench qualification approach in <a href=\"\/test-bench-qualification-fat-sat\/\">Qualifying a test bench before production (FAT\/SAT)<\/a>).<\/li>\n<\/ul>\n<h2>8. Checklist before the first campaign<\/h2>\n<ul>\n<li>[ ] Fault list per pin agreed with the ECU specification<\/li>\n<li>[ ] Relay ratings checked against fault current and switching voltage<\/li>\n<li>[ ] Current limiting and fuses on every fault bus<\/li>\n<li>[ ] Sequencing (open before short) enforced in software<\/li>\n<li>[ ] Forbidden states blocked by interlocks<\/li>\n<li>[ ] Emergency stop returns to a safe neutral state<\/li>\n<li>[ ] Matrix verified in &#8220;no fault&#8221; state (continuity, contact resistance, bus quality)<\/li>\n<li>[ ] Each fault = one traceable test line with expected and recovery results<\/li>\n<\/ul>\n<h2>Where fault injection fits in a test bench<\/h2>\n<p>Fault injection is usually one building block of a larger bench, together with breakout access, loads, instrumentation and, for closed-loop testing, a real-time model. The architecture of such benches is covered in <a href=\"\/hil-test-bench-architecture\/\">HIL test benches: architecture, components and implementation steps<\/a>. RAYNOV designs and builds this kind of equipment as part of its <a href=\"https:\/\/raynovtechnology.com\/custom-validation-system-delivery\/\">custom validation system delivery<\/a>, and the way acceptance tests are written for it is described in our article <a href=\"https:\/\/raynovtechnology.com\/atp-vs-qtp\/\">ATP vs QTP<\/a>.<\/p>\n<h2>Further reading<\/h2>\n<ul>\n<li>CAN in Automation (CiA), <a href=\"https:\/\/www.can-cia.org\/can-knowledge\/\">CAN knowledge<\/a>: physical layer, terminations and bus behaviour.<\/li>\n<\/ul>\n<hr \/>\n<p><strong>Planning a fault-injection campaign or a matrix for your ECU?<\/strong> <a href=\"https:\/\/raynovtechnology.com\/contact\/\">Tell us about your project<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A sensor wire chafes through on a chassis bracket, touches the body, and the ECU has a few milliseconds to [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":2936,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"normal-width-container","site-content-style":"unboxed","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[22],"tags":[],"class_list":["post-2903","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-testing-guides"],"uagb_featured_image_src":{"full":["https:\/\/raynovtechnology.com\/wp-content\/uploads\/2026\/10\/G1-featured-v2.png",1200,675,false],"thumbnail":["https:\/\/raynovtechnology.com\/wp-content\/uploads\/2026\/10\/G1-featured-v2-150x150.png",150,150,true],"medium":["https:\/\/raynovtechnology.com\/wp-content\/uploads\/2026\/10\/G1-featured-v2-300x169.png",300,169,true],"medium_large":["https:\/\/raynovtechnology.com\/wp-content\/uploads\/2026\/10\/G1-featured-v2-768x432.png",768,432,true],"large":["https:\/\/raynovtechnology.com\/wp-content\/uploads\/2026\/10\/G1-featured-v2-1024x576.png",1024,576,true],"1536x1536":["https:\/\/raynovtechnology.com\/wp-content\/uploads\/2026\/10\/G1-featured-v2.png",1200,675,false],"2048x2048":["https:\/\/raynovtechnology.com\/wp-content\/uploads\/2026\/10\/G1-featured-v2.png",1200,675,false],"trp-custom-language-flag":["https:\/\/raynovtechnology.com\/wp-content\/uploads\/2026\/10\/G1-featured-v2-18x10.png",18,10,true]},"uagb_author_info":{"display_name":"Sphie-bot","author_link":"https:\/\/raynovtechnology.com\/fr\/author\/sphie-bot\/"},"uagb_comment_info":0,"uagb_excerpt":"A sensor wire chafes through on a chassis bracket, touches the body, and the ECU has a few milliseconds to [&hellip;]","_links":{"self":[{"href":"https:\/\/raynovtechnology.com\/fr\/wp-json\/wp\/v2\/posts\/2903","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/raynovtechnology.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/raynovtechnology.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/raynovtechnology.com\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/raynovtechnology.com\/fr\/wp-json\/wp\/v2\/comments?post=2903"}],"version-history":[{"count":1,"href":"https:\/\/raynovtechnology.com\/fr\/wp-json\/wp\/v2\/posts\/2903\/revisions"}],"predecessor-version":[{"id":2916,"href":"https:\/\/raynovtechnology.com\/fr\/wp-json\/wp\/v2\/posts\/2903\/revisions\/2916"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/raynovtechnology.com\/fr\/wp-json\/wp\/v2\/media\/2936"}],"wp:attachment":[{"href":"https:\/\/raynovtechnology.com\/fr\/wp-json\/wp\/v2\/media?parent=2903"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/raynovtechnology.com\/fr\/wp-json\/wp\/v2\/categories?post=2903"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/raynovtechnology.com\/fr\/wp-json\/wp\/v2\/tags?post=2903"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}