Reviewd and fixed deadman architecture
@@ -66,8 +66,11 @@ Validate each circuit manifest with the installed topology validator:
|
||||
- The Hall-input drawing separates sensor supply, sensor return and signal;
|
||||
the original ASCII alignment could suggest an unintended join. The pull-up,
|
||||
divider and parallel filter follow the existing prose.
|
||||
- The deadman equations are unchanged. Contact observations, permission gates
|
||||
and output gates occupy separate figures; shared net names connect them.
|
||||
- The steering-wheel deadman switches are wired in parallel and present one
|
||||
shared `DEADMAN_IN` to the ECU. Either switch can assert permission. One
|
||||
`DEADMAN_STATUS` input reports the combined state; the ECU has no per-switch
|
||||
observations. The permission and output gates use the single `DEADMAN_OK`
|
||||
signal. See the module document for release and stuck-high fault behavior.
|
||||
- `VBG_LOCAL_KELVIN` labels the documented local ignition reference at the
|
||||
`IGN_PGND` joining point. `LOCAL_GND` in the sink-command figure denotes the
|
||||
TLE9104SH local ground reference. Neither denotes a new remote ground path.
|
||||
|
||||
@@ -658,11 +658,11 @@
|
||||
]
|
||||
},
|
||||
"deadman-inputs": {
|
||||
"title": "Deadman contacts and observations",
|
||||
"source": "IO_MODULES/DEAD_MAN.md: Logic domains",
|
||||
"title": "Parallel switches \u00b7 one ECU deadman input",
|
||||
"source": "IO_MODULES/DEAD_MAN.md: Steering-wheel wiring and ECU input",
|
||||
"nodes": {
|
||||
"title": {
|
||||
"label": "Deadman contacts and observations",
|
||||
"label": "Parallel switches \u00b7 one ECU deadman input",
|
||||
"kind": "note",
|
||||
"bounds": [
|
||||
30,
|
||||
@@ -671,131 +671,137 @@
|
||||
42
|
||||
]
|
||||
},
|
||||
"As": {
|
||||
"label": "Protected 5 V\nIndependent NO contact A",
|
||||
"supply": {
|
||||
"label": "Protected 5 V",
|
||||
"kind": "power",
|
||||
"bounds": [
|
||||
30,
|
||||
100,
|
||||
260,
|
||||
80
|
||||
]
|
||||
},
|
||||
"Ap": {
|
||||
"label": "Protected input A\nOwn filter + default-low bias",
|
||||
"kind": "signal",
|
||||
"bounds": [
|
||||
370,
|
||||
100,
|
||||
290,
|
||||
80
|
||||
]
|
||||
},
|
||||
"Ah": {
|
||||
"label": "DEADMAN_A_HELD\n5 V \u00b7 non-inverting",
|
||||
"kind": "signal",
|
||||
"bounds": [
|
||||
750,
|
||||
100,
|
||||
260,
|
||||
80
|
||||
]
|
||||
},
|
||||
"Ad": {
|
||||
"label": "DEADMAN_A_STATUS\n3.3 V \u00b7 held = high \u2192 MCU",
|
||||
"kind": "device",
|
||||
"bounds": [
|
||||
370,
|
||||
200,
|
||||
220,
|
||||
330,
|
||||
75
|
||||
]
|
||||
},
|
||||
"Bs": {
|
||||
"label": "Protected 5 V\nIndependent NO contact B",
|
||||
"kind": "power",
|
||||
"bounds": [
|
||||
30,
|
||||
345,
|
||||
260,
|
||||
80
|
||||
]
|
||||
},
|
||||
"Bp": {
|
||||
"label": "Protected input B\nOwn filter + default-low bias",
|
||||
"kind": "signal",
|
||||
"bounds": [
|
||||
370,
|
||||
345,
|
||||
290,
|
||||
80
|
||||
]
|
||||
},
|
||||
"Bh": {
|
||||
"label": "DEADMAN_B_RELEASED\n5 V \u00b7 inverting",
|
||||
"kind": "signal",
|
||||
"bounds": [
|
||||
750,
|
||||
345,
|
||||
260,
|
||||
80
|
||||
]
|
||||
},
|
||||
"Bd": {
|
||||
"label": "DEADMAN_B_STATUS\n3.3 V \u00b7 held = high \u2192 MCU",
|
||||
"left": {
|
||||
"label": "Left NO switch\nHeld = closed",
|
||||
"kind": "device",
|
||||
"bounds": [
|
||||
370,
|
||||
465,
|
||||
330,
|
||||
75
|
||||
340,
|
||||
90,
|
||||
230,
|
||||
80
|
||||
]
|
||||
},
|
||||
"note575": {
|
||||
"label": "Separate harness paths. MCU status observations are diagnostic; the 5 V signals feed the permit gates.",
|
||||
"right": {
|
||||
"label": "Right NO switch\nHeld = closed",
|
||||
"kind": "device",
|
||||
"bounds": [
|
||||
340,
|
||||
300,
|
||||
230,
|
||||
80
|
||||
]
|
||||
},
|
||||
"shared": {
|
||||
"label": "DEADMAN_IN\nJoined at steering wheel",
|
||||
"kind": "signal",
|
||||
"bounds": [
|
||||
740,
|
||||
200,
|
||||
270,
|
||||
80
|
||||
]
|
||||
},
|
||||
"note390": {
|
||||
"label": "Switches are physically in parallel. Either held \u2192 asserted; both released \u2192 deasserted.",
|
||||
"kind": "note",
|
||||
"bounds": [
|
||||
30,
|
||||
575,
|
||||
390,
|
||||
980,
|
||||
60
|
||||
]
|
||||
},
|
||||
"input": {
|
||||
"label": "DEADMAN_IN\nOne ECU signal pin",
|
||||
"kind": "signal",
|
||||
"bounds": [
|
||||
30,
|
||||
490,
|
||||
240,
|
||||
80
|
||||
]
|
||||
},
|
||||
"conditioning": {
|
||||
"label": "Protection + filter\nDefault-low bias",
|
||||
"kind": "signal",
|
||||
"bounds": [
|
||||
340,
|
||||
490,
|
||||
270,
|
||||
80
|
||||
]
|
||||
},
|
||||
"ok": {
|
||||
"label": "DEADMAN_OK\n5 V \u00b7 hardware gates",
|
||||
"kind": "signal",
|
||||
"bounds": [
|
||||
740,
|
||||
490,
|
||||
270,
|
||||
80
|
||||
]
|
||||
},
|
||||
"status": {
|
||||
"label": "DEADMAN_STATUS\n3.3 V \u2192 one MCU input",
|
||||
"kind": "device",
|
||||
"bounds": [
|
||||
340,
|
||||
630,
|
||||
310,
|
||||
80
|
||||
]
|
||||
}
|
||||
},
|
||||
"connections": [
|
||||
{
|
||||
"from": "As",
|
||||
"to": "Ap",
|
||||
"from": "supply",
|
||||
"to": "left",
|
||||
"label": "",
|
||||
"kind": "signal"
|
||||
},
|
||||
{
|
||||
"from": "Ap",
|
||||
"to": "Ah",
|
||||
"from": "supply",
|
||||
"to": "right",
|
||||
"label": "",
|
||||
"kind": "signal"
|
||||
},
|
||||
{
|
||||
"from": "Ap",
|
||||
"to": "Ad",
|
||||
"from": "left",
|
||||
"to": "shared",
|
||||
"label": "",
|
||||
"kind": "signal"
|
||||
},
|
||||
{
|
||||
"from": "Bs",
|
||||
"to": "Bp",
|
||||
"from": "right",
|
||||
"to": "shared",
|
||||
"label": "",
|
||||
"kind": "signal"
|
||||
},
|
||||
{
|
||||
"from": "Bp",
|
||||
"to": "Bh",
|
||||
"from": "input",
|
||||
"to": "conditioning",
|
||||
"label": "",
|
||||
"kind": "signal"
|
||||
},
|
||||
{
|
||||
"from": "Bp",
|
||||
"to": "Bd",
|
||||
"from": "conditioning",
|
||||
"to": "ok",
|
||||
"label": "",
|
||||
"kind": "signal"
|
||||
},
|
||||
{
|
||||
"from": "conditioning",
|
||||
"to": "status",
|
||||
"label": "",
|
||||
"kind": "signal"
|
||||
}
|
||||
|
||||
@@ -99,15 +99,23 @@ f.note('Sensor output is the sensor’s signal pin. Both ADC channels use +3V3_A
|
||||
|
||||
chain('dac-output','Optional analogue-output provision','IO_ARCHITECTURE.md: Analogue-output provision',['MCU DAC','Rail-to-rail buffer','Protection /\nseries impedance','Connector'],'Provision only; final electrical range, load and protection remain to be defined.')
|
||||
|
||||
f=Figure('deadman-inputs','Deadman contacts and observations','IO_MODULES/DEAD_MAN.md: Logic domains',1040,650)
|
||||
for i,c in enumerate('AB'):
|
||||
y=100+i*245
|
||||
f.node(c+'s','Protected 5 V\nIndependent NO contact '+c,30,y,260,80,'power')
|
||||
f.node(c+'p','Protected input '+c+'\nOwn filter + default-low bias',370,y,290,80,'signal')
|
||||
f.node(c+'h','DEADMAN_A_HELD\n5 V · non-inverting' if c=='A' else 'DEADMAN_B_RELEASED\n5 V · inverting',750,y,260,80,'signal')
|
||||
f.node(c+'d','DEADMAN_'+c+'_STATUS\n3.3 V · held = high → MCU',370,y+120,330,75,'device')
|
||||
f.edge(c+'s',c+'p'); f.edge(c+'p',c+'h'); f.edge(c+'p',c+'d',exit=(.5,1),entry=(.5,0))
|
||||
f.note('Separate harness paths. MCU status observations are diagnostic; the 5 V signals feed the permit gates.',575);f.save()
|
||||
f=Figure('deadman-inputs','Parallel switches · one ECU deadman input','IO_MODULES/DEAD_MAN.md: Steering-wheel wiring and ECU input',1040,750)
|
||||
f.node('supply','Protected 5 V',30,200,220,80,'power')
|
||||
f.node('left','Left NO switch\nHeld = closed',340,90,230,80,'device')
|
||||
f.node('right','Right NO switch\nHeld = closed',340,300,230,80,'device')
|
||||
f.node('shared','DEADMAN_IN\nJoined at steering wheel',740,200,270,80,'signal')
|
||||
f.edge('supply','left',points=[(290,240),(290,130)])
|
||||
f.edge('supply','right',points=[(290,240),(290,340)])
|
||||
f.edge('left','shared',points=[(660,130),(660,240)])
|
||||
f.edge('right','shared',points=[(660,340),(660,240)])
|
||||
f.note('Switches are physically in parallel. Either held → asserted; both released → deasserted.',390)
|
||||
f.node('input','DEADMAN_IN\nOne ECU signal pin',30,490,240,80)
|
||||
f.node('conditioning','Protection + filter\nDefault-low bias',340,490,270,80)
|
||||
f.node('ok','DEADMAN_OK\n5 V · hardware gates',740,490,270,80)
|
||||
f.node('status','DEADMAN_STATUS\n3.3 V → one MCU input',340,630,310,80,'device')
|
||||
f.edge('input','conditioning');f.edge('conditioning','ok')
|
||||
f.edge('conditioning','status',exit=(.5,1),entry=(.5,0))
|
||||
f.save()
|
||||
|
||||
for name,title,part,pin,load,ground,source in [
|
||||
('ignition-power','Ignition power path','VBG08H-E','HVC','Coil primary','IGN_PGND','IGNITION'),
|
||||
|
||||
@@ -160,11 +160,10 @@ def equation_gate(c,ref,xy,a,b,out,invert_b=False):
|
||||
c.wire(start,(x-1.2,yy));c.wire((x-1.2,yy),(x-1.2,anchor.y));c.wire((x-1.2,anchor.y),anchor)
|
||||
c.wire(gate.out,(x+5,y));c.port(ref+'O',(x+5,y),out,loc='right')
|
||||
|
||||
c=Circuit('deadman-permit','Hardware engine-permit equations','IO_MODULES/DEAD_MAN.md: Logic equations')
|
||||
equation_gate(c,'VALID',(0,0),'DEADMAN_A_HELD','DEADMAN_B_RELEASED','DEADMAN_OK',True)
|
||||
equation_gate(c,'PERMIT',(0,-6),'DEADMAN_OK','MCU_RUN_PERMIT','ENGINE_PERMIT')
|
||||
c.label((0,3),'Hardware permission · 5 V gate outputs',size=18)
|
||||
c.label((0,-9),'Bubble inverts channel B. MCU_RUN_PERMIT is 3.3 V; gates must accept that input level.',size=11);c.save()
|
||||
c=Circuit('deadman-permit','Single-input hardware engine permission','IO_MODULES/DEAD_MAN.md: Hardware gating')
|
||||
equation_gate(c,'PERMIT',(0,0),'DEADMAN_OK','MCU_RUN_PERMIT','ENGINE_PERMIT')
|
||||
c.label((0,3),'Single deadman input · hardware permission',size=18)
|
||||
c.label((0,-3),'DEADMAN_OK: conditioned shared input. MCU_RUN_PERMIT: 3.3 V. Gate output: 5 V.',size=11);c.save()
|
||||
|
||||
c=Circuit('deadman-outputs','Hardware permitted output commands','IO_MODULES/DEAD_MAN.md: Logic equations')
|
||||
equation_gate(c,'INJECT',(0,0),'ENGINE_PERMIT','MCU_INJECTOR_SIG','SAFE_INJECTOR_SIG')
|
||||
|
||||
@@ -1,58 +1,81 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<mxfile host="app.diagrams.net">
|
||||
<diagram name="Deadman contacts and observations" id="deadman-inputs">
|
||||
<mxGraphModel page="1" pageWidth="1040" pageHeight="650" grid="1" gridSize="10">
|
||||
<diagram name="Parallel switches · one ECU deadman input" id="deadman-inputs">
|
||||
<mxGraphModel page="1" pageWidth="1040" pageHeight="750" grid="1" gridSize="10">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="node_title" value="Deadman contacts and observations" style="rounded=1;html=0;fontFamily=DejaVu Sans;fontSize=26;fontColor=#172b40;strokeColor=#577086;fillColor=#ffffff;spacing=10;strokeColor=none;fillColor=none;align=left;" vertex="1" parent="1">
|
||||
<mxCell id="node_title" value="Parallel switches · one ECU deadman input" style="rounded=1;html=0;fontFamily=DejaVu Sans;fontSize=26;fontColor=#172b40;strokeColor=#577086;fillColor=#ffffff;spacing=10;strokeColor=none;fillColor=none;align=left;" vertex="1" parent="1">
|
||||
<mxGeometry x="30" y="18" width="980" height="42" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="node_As" value="Protected 5 V Independent NO contact A" style="rounded=1;html=0;fontFamily=DejaVu Sans;fontSize=18;fontColor=#172b40;strokeColor=#577086;fillColor=#fff1d6;spacing=10;" vertex="1" parent="1">
|
||||
<mxGeometry x="30" y="100" width="260" height="80" as="geometry" />
|
||||
<mxCell id="node_supply" value="Protected 5 V" style="rounded=1;html=0;fontFamily=DejaVu Sans;fontSize=18;fontColor=#172b40;strokeColor=#577086;fillColor=#fff1d6;spacing=10;" vertex="1" parent="1">
|
||||
<mxGeometry x="30" y="200" width="220" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="node_Ap" value="Protected input A Own filter + default-low bias" style="rounded=1;html=0;fontFamily=DejaVu Sans;fontSize=18;fontColor=#172b40;strokeColor=#577086;fillColor=#e8f0fc;spacing=10;" vertex="1" parent="1">
|
||||
<mxGeometry x="370" y="100" width="290" height="80" as="geometry" />
|
||||
<mxCell id="node_left" value="Left NO switch Held = closed" style="rounded=1;html=0;fontFamily=DejaVu Sans;fontSize=18;fontColor=#172b40;strokeColor=#577086;fillColor=#e8f4ed;spacing=10;" vertex="1" parent="1">
|
||||
<mxGeometry x="340" y="90" width="230" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="node_Ah" value="DEADMAN_A_HELD 5 V · non-inverting" style="rounded=1;html=0;fontFamily=DejaVu Sans;fontSize=18;fontColor=#172b40;strokeColor=#577086;fillColor=#e8f0fc;spacing=10;" vertex="1" parent="1">
|
||||
<mxGeometry x="750" y="100" width="260" height="80" as="geometry" />
|
||||
<mxCell id="node_right" value="Right NO switch Held = closed" style="rounded=1;html=0;fontFamily=DejaVu Sans;fontSize=18;fontColor=#172b40;strokeColor=#577086;fillColor=#e8f4ed;spacing=10;" vertex="1" parent="1">
|
||||
<mxGeometry x="340" y="300" width="230" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="node_Ad" value="DEADMAN_A_STATUS 3.3 V · held = high → MCU" style="rounded=1;html=0;fontFamily=DejaVu Sans;fontSize=18;fontColor=#172b40;strokeColor=#577086;fillColor=#e8f4ed;spacing=10;" vertex="1" parent="1">
|
||||
<mxGeometry x="370" y="220" width="330" height="75" as="geometry" />
|
||||
<mxCell id="node_shared" value="DEADMAN_IN Joined at steering wheel" style="rounded=1;html=0;fontFamily=DejaVu Sans;fontSize=18;fontColor=#172b40;strokeColor=#577086;fillColor=#e8f0fc;spacing=10;" vertex="1" parent="1">
|
||||
<mxGeometry x="740" y="200" width="270" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e0" source="node_As" target="node_Ap" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=0;strokeWidth=2;strokeColor=#416680;fontSize=16;fontFamily=DejaVu Sans;labelBackgroundColor=#ffffff;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1">
|
||||
<mxCell id="e0" source="node_supply" target="node_left" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=0;strokeWidth=2;strokeColor=#416680;fontSize=16;fontFamily=DejaVu Sans;labelBackgroundColor=#ffffff;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="290" y="240" />
|
||||
<mxPoint x="290" y="130" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="e1" source="node_supply" target="node_right" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=0;strokeWidth=2;strokeColor=#416680;fontSize=16;fontFamily=DejaVu Sans;labelBackgroundColor=#ffffff;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="290" y="240" />
|
||||
<mxPoint x="290" y="340" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="e2" source="node_left" target="node_shared" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=0;strokeWidth=2;strokeColor=#416680;fontSize=16;fontFamily=DejaVu Sans;labelBackgroundColor=#ffffff;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="660" y="130" />
|
||||
<mxPoint x="660" y="240" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="e3" source="node_right" target="node_shared" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=0;strokeWidth=2;strokeColor=#416680;fontSize=16;fontFamily=DejaVu Sans;labelBackgroundColor=#ffffff;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="660" y="340" />
|
||||
<mxPoint x="660" y="240" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="node_note390" value="Switches are physically in parallel. Either held → asserted; both released → deasserted." style="rounded=1;html=0;fontFamily=DejaVu Sans;fontSize=16;fontColor=#172b40;strokeColor=#577086;fillColor=#ffffff;spacing=10;strokeColor=none;fillColor=none;align=left;" vertex="1" parent="1">
|
||||
<mxGeometry x="30" y="390" width="980" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="node_input" value="DEADMAN_IN One ECU signal pin" style="rounded=1;html=0;fontFamily=DejaVu Sans;fontSize=18;fontColor=#172b40;strokeColor=#577086;fillColor=#e8f0fc;spacing=10;" vertex="1" parent="1">
|
||||
<mxGeometry x="30" y="490" width="240" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="node_conditioning" value="Protection + filter Default-low bias" style="rounded=1;html=0;fontFamily=DejaVu Sans;fontSize=18;fontColor=#172b40;strokeColor=#577086;fillColor=#e8f0fc;spacing=10;" vertex="1" parent="1">
|
||||
<mxGeometry x="340" y="490" width="270" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="node_ok" value="DEADMAN_OK 5 V · hardware gates" style="rounded=1;html=0;fontFamily=DejaVu Sans;fontSize=18;fontColor=#172b40;strokeColor=#577086;fillColor=#e8f0fc;spacing=10;" vertex="1" parent="1">
|
||||
<mxGeometry x="740" y="490" width="270" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="node_status" value="DEADMAN_STATUS 3.3 V → one MCU input" style="rounded=1;html=0;fontFamily=DejaVu Sans;fontSize=18;fontColor=#172b40;strokeColor=#577086;fillColor=#e8f4ed;spacing=10;" vertex="1" parent="1">
|
||||
<mxGeometry x="340" y="630" width="310" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e4" source="node_input" target="node_conditioning" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=0;strokeWidth=2;strokeColor=#416680;fontSize=16;fontFamily=DejaVu Sans;labelBackgroundColor=#ffffff;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e1" source="node_Ap" target="node_Ah" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=0;strokeWidth=2;strokeColor=#416680;fontSize=16;fontFamily=DejaVu Sans;labelBackgroundColor=#ffffff;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1">
|
||||
<mxCell id="e5" source="node_conditioning" target="node_ok" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=0;strokeWidth=2;strokeColor=#416680;fontSize=16;fontFamily=DejaVu Sans;labelBackgroundColor=#ffffff;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e2" source="node_Ap" target="node_Ad" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=0;strokeWidth=2;strokeColor=#416680;fontSize=16;fontFamily=DejaVu Sans;labelBackgroundColor=#ffffff;endArrow=block;endFill=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1">
|
||||
<mxCell id="e6" source="node_conditioning" target="node_status" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=0;strokeWidth=2;strokeColor=#416680;fontSize=16;fontFamily=DejaVu Sans;labelBackgroundColor=#ffffff;endArrow=block;endFill=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="node_Bs" value="Protected 5 V Independent NO contact B" style="rounded=1;html=0;fontFamily=DejaVu Sans;fontSize=18;fontColor=#172b40;strokeColor=#577086;fillColor=#fff1d6;spacing=10;" vertex="1" parent="1">
|
||||
<mxGeometry x="30" y="345" width="260" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="node_Bp" value="Protected input B Own filter + default-low bias" style="rounded=1;html=0;fontFamily=DejaVu Sans;fontSize=18;fontColor=#172b40;strokeColor=#577086;fillColor=#e8f0fc;spacing=10;" vertex="1" parent="1">
|
||||
<mxGeometry x="370" y="345" width="290" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="node_Bh" value="DEADMAN_B_RELEASED 5 V · inverting" style="rounded=1;html=0;fontFamily=DejaVu Sans;fontSize=18;fontColor=#172b40;strokeColor=#577086;fillColor=#e8f0fc;spacing=10;" vertex="1" parent="1">
|
||||
<mxGeometry x="750" y="345" width="260" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="node_Bd" value="DEADMAN_B_STATUS 3.3 V · held = high → MCU" style="rounded=1;html=0;fontFamily=DejaVu Sans;fontSize=18;fontColor=#172b40;strokeColor=#577086;fillColor=#e8f4ed;spacing=10;" vertex="1" parent="1">
|
||||
<mxGeometry x="370" y="465" width="330" height="75" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e3" source="node_Bs" target="node_Bp" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=0;strokeWidth=2;strokeColor=#416680;fontSize=16;fontFamily=DejaVu Sans;labelBackgroundColor=#ffffff;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e4" source="node_Bp" target="node_Bh" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=0;strokeWidth=2;strokeColor=#416680;fontSize=16;fontFamily=DejaVu Sans;labelBackgroundColor=#ffffff;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="e5" source="node_Bp" target="node_Bd" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=0;strokeWidth=2;strokeColor=#416680;fontSize=16;fontFamily=DejaVu Sans;labelBackgroundColor=#ffffff;endArrow=block;endFill=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="node_note575" value="Separate harness paths. MCU status observations are diagnostic; the 5 V signals feed the permit gates." style="rounded=1;html=0;fontFamily=DejaVu Sans;fontSize=16;fontColor=#172b40;strokeColor=#577086;fillColor=#ffffff;spacing=10;strokeColor=none;fillColor=none;align=left;" vertex="1" parent="1">
|
||||
<mxGeometry x="30" y="575" width="980" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
|
||||
|
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 4.2 KiB |
@@ -1,42 +1,8 @@
|
||||
{
|
||||
"title": "Hardware engine-permit equations",
|
||||
"source": "IO_MODULES/DEAD_MAN.md: Logic equations",
|
||||
"title": "Single-input hardware engine permission",
|
||||
"source": "IO_MODULES/DEAD_MAN.md: Hardware gating",
|
||||
"reference_scope": "documentation only",
|
||||
"components": [
|
||||
{
|
||||
"ref": "VALID",
|
||||
"kind": "and-with-inverted-B",
|
||||
"pins": [
|
||||
"A",
|
||||
"B",
|
||||
"Y"
|
||||
],
|
||||
"value": ""
|
||||
},
|
||||
{
|
||||
"ref": "VALIDP0",
|
||||
"kind": "port",
|
||||
"pins": [
|
||||
"P"
|
||||
],
|
||||
"value": "DEADMAN_A_HELD"
|
||||
},
|
||||
{
|
||||
"ref": "VALIDP1",
|
||||
"kind": "port",
|
||||
"pins": [
|
||||
"P"
|
||||
],
|
||||
"value": "DEADMAN_B_RELEASED"
|
||||
},
|
||||
{
|
||||
"ref": "VALIDO",
|
||||
"kind": "port",
|
||||
"pins": [
|
||||
"P"
|
||||
],
|
||||
"value": "DEADMAN_OK"
|
||||
},
|
||||
{
|
||||
"ref": "PERMIT",
|
||||
"kind": "and",
|
||||
@@ -73,25 +39,9 @@
|
||||
}
|
||||
],
|
||||
"nets": [
|
||||
{
|
||||
"name": "DEADMAN_A_HELD",
|
||||
"connections": [
|
||||
"VALID.A",
|
||||
"VALIDP0.P"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "DEADMAN_B_RELEASED",
|
||||
"connections": [
|
||||
"VALID.B",
|
||||
"VALIDP1.P"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "DEADMAN_OK",
|
||||
"connections": [
|
||||
"VALID.Y",
|
||||
"VALIDO.P",
|
||||
"PERMIT.A",
|
||||
"PERMITP0.P"
|
||||
]
|
||||
|
||||