Hydraulic and brake systems improvements:
- fix flightdeck brakes pressure indicator's bug; - disable autobrake if antiskid is disabled or green pressure is low/missing; - set hydraulic brakes snd accumulator's pressure; to be done: set brake power according to brake's pressure
This commit is contained in:
parent
024fca8b7d
commit
4b58edb995
4 changed files with 115 additions and 47 deletions
|
@ -365,7 +365,7 @@
|
||||||
<type>rotate</type>
|
<type>rotate</type>
|
||||||
<object-name>brakes_lb_psi</object-name>
|
<object-name>brakes_lb_psi</object-name>
|
||||||
<property>systems/hydraulic/brakes/pressure-left-psi</property>
|
<property>systems/hydraulic/brakes/pressure-left-psi</property>
|
||||||
<factor>0.03</factor>
|
<factor>-0.03</factor>
|
||||||
<condition>
|
<condition>
|
||||||
<equals>
|
<equals>
|
||||||
<property>systems/hydraulic/brakes/mode</property>
|
<property>systems/hydraulic/brakes/mode</property>
|
||||||
|
@ -381,7 +381,7 @@
|
||||||
<type>rotate</type>
|
<type>rotate</type>
|
||||||
<object-name>brakes_rb_psi</object-name>
|
<object-name>brakes_rb_psi</object-name>
|
||||||
<property>systems/hydraulic/brakes/pressure-right-psi</property>
|
<property>systems/hydraulic/brakes/pressure-right-psi</property>
|
||||||
<factor>-0.03</factor>
|
<factor>0.03</factor>
|
||||||
<condition>
|
<condition>
|
||||||
<equals>
|
<equals>
|
||||||
<property>systems/hydraulic/brakes/mode</property>
|
<property>systems/hydraulic/brakes/mode</property>
|
||||||
|
@ -399,10 +399,16 @@
|
||||||
<property>systems/hydraulic/brakes/accumulator-pressure-psi</property>
|
<property>systems/hydraulic/brakes/accumulator-pressure-psi</property>
|
||||||
<interpolation>
|
<interpolation>
|
||||||
<entry><ind>0</ind><dep>0</dep></entry>
|
<entry><ind>0</ind><dep>0</dep></entry>
|
||||||
<entry><ind>700</ind><dep>66</dep></entry>
|
<entry><ind>700</ind><dep>-66</dep></entry>
|
||||||
<entry><ind>2000</ind><dep>78</dep></entry>
|
<entry><ind>2000</ind><dep>-78</dep></entry>
|
||||||
<entry><ind>3000</ind><dep>90</dep></entry>
|
<entry><ind>3000</ind><dep>-90</dep></entry>
|
||||||
</interpolation>
|
</interpolation>
|
||||||
|
<condition>
|
||||||
|
<equals>
|
||||||
|
<property>systems/hydraulic/brakes/mode</property>
|
||||||
|
<value>2</value>
|
||||||
|
</equals>
|
||||||
|
</condition>
|
||||||
<axis>
|
<axis>
|
||||||
<object-name>brakes_accum_psi.axis</object-name>
|
<object-name>brakes_accum_psi.axis</object-name>
|
||||||
</axis>
|
</axis>
|
||||||
|
|
|
@ -406,7 +406,7 @@ var Autobrake = {
|
||||||
me._mode = me.mode.getValue();
|
me._mode = me.mode.getValue();
|
||||||
me._active = me.active.getBoolValue();
|
me._active = me.active.getBoolValue();
|
||||||
if (me._gnd_speed > 72) {
|
if (me._gnd_speed > 72) {
|
||||||
if (me._mode != 0 and pts.Controls.Engines.Engine.throttle[0].getValue() < 0.15 and pts.Controls.Engines.Engine.throttle[1].getValue() < 0.15 and me._wow0) {
|
if (me._mode != 0 and pts.Controls.Engines.Engine.throttle[0].getValue() < 0.15 and pts.Controls.Engines.Engine.throttle[1].getValue() < 0.15 and me._wow0 and systems.HYD.Brakes.askidSw.getValue() and systems.HYD.Psi.green.getValue() >= 2500 ) {
|
||||||
me.active.setBoolValue(1);
|
me.active.setBoolValue(1);
|
||||||
} elsif (me._active) {
|
} elsif (me._active) {
|
||||||
me.active.setBoolValue(0);
|
me.active.setBoolValue(0);
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
# Jonathan Redpath
|
# Jonathan Redpath
|
||||||
|
|
||||||
# Copyright (c) 2019 Jonathan Redpath
|
# Copyright (c) 2019 Jonathan Redpath
|
||||||
|
var lcont = 0;
|
||||||
|
var rcont = 0;
|
||||||
|
|
||||||
var HYD = {
|
var HYD = {
|
||||||
Brakes: {
|
Brakes: {
|
||||||
|
@ -10,10 +12,11 @@ var HYD = {
|
||||||
rightPressPsi: props.globals.initNode("/systems/hydraulic/brakes/pressure-right-psi", 0, "INT"),
|
rightPressPsi: props.globals.initNode("/systems/hydraulic/brakes/pressure-right-psi", 0, "INT"),
|
||||||
askidSw: props.globals.initNode("/systems/hydraulic/brakes/askidnwssw", 1, "BOOL"),
|
askidSw: props.globals.initNode("/systems/hydraulic/brakes/askidnwssw", 1, "BOOL"),
|
||||||
mode: props.globals.initNode("/systems/hydraulic/brakes/mode", 0, "INT"),
|
mode: props.globals.initNode("/systems/hydraulic/brakes/mode", 0, "INT"),
|
||||||
|
leftbrake: props.globals.getNode("/controls/gear/brake-left"),
|
||||||
|
rightbrake: props.globals.getNode("/controls/gear/brake-right"),
|
||||||
lbrake: props.globals.initNode("/systems/hydraulic/brakes/lbrake", 0, "INT"),
|
lbrake: props.globals.initNode("/systems/hydraulic/brakes/lbrake", 0, "INT"),
|
||||||
rbrake: props.globals.initNode("/systems/hydraulic/brakes/rbrake", 0, "INT"),
|
rbrake: props.globals.initNode("/systems/hydraulic/brakes/rbrake", 0, "INT"),
|
||||||
noserubber: props.globals.initNode("/systems/hydraulic/brakes/nose-rubber", 0, "INT"),
|
noserubber: props.globals.initNode("/systems/hydraulic/brakes/nose-rubber", 0, "INT"),
|
||||||
counter: props.globals.initNode("/systems/hydraulic/brakes/counter", 0, "INT"),
|
|
||||||
},
|
},
|
||||||
Fail: {
|
Fail: {
|
||||||
blueElec: props.globals.getNode("/systems/failures/hydraulic/blue-elec"),
|
blueElec: props.globals.getNode("/systems/failures/hydraulic/blue-elec"),
|
||||||
|
@ -85,11 +88,110 @@ var HYD = {
|
||||||
me.Fail.yellowLeak.setBoolValue(0);
|
me.Fail.yellowLeak.setBoolValue(0);
|
||||||
},
|
},
|
||||||
loop: func() {
|
loop: func() {
|
||||||
|
if (me.Brakes.leftbrake.getValue() == 1) {
|
||||||
|
me.Brakes.lbrake.setValue(1);
|
||||||
|
} else {
|
||||||
|
me.Brakes.lbrake.setValue(0);
|
||||||
|
}
|
||||||
|
if (me.Brakes.rightbrake.getValue() == 1) {
|
||||||
|
me.Brakes.rbrake.setValue(1);
|
||||||
|
} else {
|
||||||
|
me.Brakes.rbrake.setValue(0);
|
||||||
|
}
|
||||||
|
if (props.globals.getValue("/controls/gear/nws-switch") == 1) {
|
||||||
|
me.Brakes.askidSw.setBoolValue(1); #true
|
||||||
|
} else {
|
||||||
|
me.Brakes.askidSw.setBoolValue(0); #false
|
||||||
|
}
|
||||||
if (me.Brakes.mode.getValue() == 2) {
|
if (me.Brakes.mode.getValue() == 2) {
|
||||||
if (me.Psi.yellow.getValue() > 2500 and me.Brakes.accumPressPsi.getValue() < 700) {
|
if (me.Psi.yellow.getValue() > 2500 and me.Brakes.accumPressPsi.getValue() < 700) {
|
||||||
me.Brakes.accumPressPsi.setValue(me.Brakes.accumPressPsi.getValue() + 50);
|
me.Brakes.accumPressPsi.setValue(me.Brakes.accumPressPsi.getValue() + 50);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Decrease accumPressPsi when green and yellow hydraulic's aren't pressurized
|
||||||
|
if (me.Brakes.leftbrake.getValue() > 0) {
|
||||||
|
lcont = lcont + 1;
|
||||||
|
} else {
|
||||||
|
lcont = 0;
|
||||||
|
}
|
||||||
|
if (me.Brakes.rightbrake.getValue() > 0) {
|
||||||
|
rcont = rcont + 1;
|
||||||
|
} else {
|
||||||
|
rcont = 0;
|
||||||
|
}
|
||||||
|
if ((me.Psi.green.getValue() == 0) and (me.Psi.yellow.getValue() == 0) and (me.Brakes.accumPressPsi.getValue()) > 0) {
|
||||||
|
if (lcont == 1) {
|
||||||
|
#me.Brakes.accumPressPsi.setValue(me.Brakes.accumPressPsi.getValue() - (35 * me.Brakes.leftbrake.getValue()));
|
||||||
|
me.Brakes.accumPressPsi.setValue(me.Brakes.accumPressPsi.getValue() - 35);
|
||||||
|
}
|
||||||
|
if (rcont == 1) {
|
||||||
|
#me.Brakes.accumPressPsi.setValue(me.Brakes.accumPressPsi.getValue() - (35 * me.Brakes.leftbrake.getValue()));
|
||||||
|
me.Brakes.accumPressPsi.setValue(me.Brakes.accumPressPsi.getValue() - 35);
|
||||||
|
}
|
||||||
|
if (me.Brakes.accumPressPsi.getValue() < 0) {
|
||||||
|
me.Brakes.accumPressPsi.setValue(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Braking Pressure
|
||||||
|
if (me.Brakes.mode.getValue() == 1 or (me.Brakes.mode.getValue() == 2 and me.Psi.green.getValue() >= 2500)) {
|
||||||
|
# Normal braking - Green OK
|
||||||
|
if (me.Brakes.lbrake.getValue() > 0) {
|
||||||
|
me.Brakes.leftPressPsi.setValue(props.globals.getValue("/systems/hydraulic/green-psi-ptu"));
|
||||||
|
} else {
|
||||||
|
me.Brakes.leftPressPsi.setValue(0);
|
||||||
|
}
|
||||||
|
if (me.Brakes.rbrake.getValue() > 0) {
|
||||||
|
me.Brakes.rightPressPsi.setValue(props.globals.getValue("/systems/hydraulic/green-psi-ptu"));
|
||||||
|
} else {
|
||||||
|
me.Brakes.rightPressPsi.setValue(0);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (me.Brakes.mode.getValue() == 2 and me.Psi.green.getValue() < 2500) {
|
||||||
|
# Alternate Braking (Yellow OK + Antiskid ON + electric OK) - missing condition: BSCU OK-KO
|
||||||
|
if (me.Psi.yellow.getValue() >= 2500 and me.Brakes.askidSw.getValue() and props.globals.getValue("/systems/electrical/serviceable")) {
|
||||||
|
if (me.Brakes.lbrake.getValue() > 0) {
|
||||||
|
me.Brakes.leftPressPsi.setValue(props.globals.getValue("/systems/hydraulic/yellow-psi-ptu"));
|
||||||
|
} else {
|
||||||
|
me.Brakes.leftPressPsi.setValue(0);
|
||||||
|
}
|
||||||
|
if (me.Brakes.rbrake.getValue() > 0) {
|
||||||
|
me.Brakes.rightPressPsi.setValue(props.globals.getValue("/systems/hydraulic/yellow-psi-ptu"));
|
||||||
|
} else {
|
||||||
|
me.Brakes.rightPressPsi.setValue(0);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
# Alternate Braking (Yellow OK + Antiskid OFF + electric OK) - missing condition: BSCU OK-KO
|
||||||
|
if (me.Psi.yellow.getValue() >= 2500 and !me.Brakes.askidSw.getValue() and props.globals.getValue("/systems/electrical/serviceable")) {
|
||||||
|
if (me.Brakes.lbrake.getValue() > 0) {
|
||||||
|
me.Brakes.leftPressPsi.setValue(1000);
|
||||||
|
} else {
|
||||||
|
me.Brakes.leftPressPsi.setValue(0);
|
||||||
|
}
|
||||||
|
if (me.Brakes.rbrake.getValue() > 0) {
|
||||||
|
me.Brakes.rightPressPsi.setValue(1000);
|
||||||
|
} else {
|
||||||
|
me.Brakes.rightPressPsi.setValue(0);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
# Alternate Braking (Yellow KO or Antiskid KO or electric KO) - missing condition: BSCU OK-KO
|
||||||
|
if (me.Psi.yellow.getValue() < 2500 or !me.Brakes.askidSw.getValue() or !props.globals.getValue("/systems/electrical/serviceable")) {
|
||||||
|
if (me.Brakes.lbrake.getValue() > 0) {
|
||||||
|
me.Brakes.leftPressPsi.setValue(me.Brakes.accumPressPsi.getValue());
|
||||||
|
} else {
|
||||||
|
me.Brakes.leftPressPsi.setValue(0);
|
||||||
|
}
|
||||||
|
if (me.Brakes.rbrake.getValue() > 0) {
|
||||||
|
me.Brakes.rightPressPsi.setValue(me.Brakes.accumPressPsi.getValue());
|
||||||
|
} else {
|
||||||
|
me.Brakes.rightPressPsi.setValue(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -740,46 +740,6 @@
|
||||||
<output>/controls/flight/auto-coordination</output>
|
<output>/controls/flight/auto-coordination</output>
|
||||||
</filter>
|
</filter>
|
||||||
|
|
||||||
<!-- Braking -->
|
|
||||||
|
|
||||||
<filter>
|
|
||||||
<name>Left Press</name>
|
|
||||||
<type>gain</type>
|
|
||||||
<gain>1.0</gain>
|
|
||||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
|
||||||
<input>
|
|
||||||
<expression>
|
|
||||||
<table>
|
|
||||||
<property>/controls/gear/brake-left</property>
|
|
||||||
<entry><ind>0.0</ind><dep> 0</dep></entry>
|
|
||||||
<entry><ind>0.3</ind><dep>1000</dep></entry>
|
|
||||||
<entry><ind>0.6</ind><dep>2000</dep></entry>
|
|
||||||
<entry><ind>1.0</ind><dep>3000</dep></entry>
|
|
||||||
</table>
|
|
||||||
</expression>
|
|
||||||
</input>
|
|
||||||
<output>/systems/hydraulic/brakes/pressure-left-psi</output>
|
|
||||||
</filter>
|
|
||||||
|
|
||||||
<filter>
|
|
||||||
<name>Right Press</name>
|
|
||||||
<type>gain</type>
|
|
||||||
<gain>1.0</gain>
|
|
||||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
|
||||||
<input>
|
|
||||||
<expression>
|
|
||||||
<table>
|
|
||||||
<property>/controls/gear/brake-right</property>
|
|
||||||
<entry><ind>0.0</ind><dep> 0</dep></entry>
|
|
||||||
<entry><ind>0.3</ind><dep>1000</dep></entry>
|
|
||||||
<entry><ind>0.6</ind><dep>2000</dep></entry>
|
|
||||||
<entry><ind>1.0</ind><dep>3000</dep></entry>
|
|
||||||
</table>
|
|
||||||
</expression>
|
|
||||||
</input>
|
|
||||||
<output>/systems/hydraulic/brakes/pressure-right-psi</output>
|
|
||||||
</filter>
|
|
||||||
|
|
||||||
<filter>
|
<filter>
|
||||||
<name>Left Door</name>
|
<name>Left Door</name>
|
||||||
<type>gain</type>
|
<type>gain</type>
|
||||||
|
|
Loading…
Reference in a new issue