Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class SPAirBrakeValve395 : SPAirObject
- {
- public int UR;
- public int TM;
- public int GR;
- public int State = 6; // 1, 2, 3, 4, 51, 5, 6
- public float ChargePressure;
- public float StabilizerPressure;
- int lnRelayTmGr;
- int lnRelayTmAt;
- int lnGrTm;
- int lnTmAt;
- int ndTm;
- int ndD;
- int ndS;
- int ndU;
- int lnGrU;
- int lnGrR;
- int lnUS;
- int lnUrD;
- int lnUrTmOk;
- int lnUrAtSlow;
- int lnUrAt;
- int lnUrAtE;
- int lnUAt;
- int lnDAt;
- override public void Init(SPVehicle owner, SPAirScheme scheme)
- {
- base.Init(owner, scheme);
- ChargePressure = 500.0f;
- float stabilizerPressureSqrt = 20.0f * 20.0f / 60.0f / SPAirHelper.HoleDiam(0.45f);
- StabilizerPressure = stabilizerPressureSqrt * stabilizerPressureSqrt;
- ndTm = scheme.CreateNode(null, 0.0f, 0.1f);
- scheme.CreateLink(null, ndTm, TM, 1.0f, SPAirHelper.HoleDiam(16.0f));
- lnRelayTmGr = scheme.CreateLink(null, ndTm, GR, 0.0f, SPAirHelper.HoleDiam(9.0f));
- lnRelayTmAt = scheme.CreateLink(null, ndTm, "at", 0.0f, SPAirHelper.HoleDiam(10.0f));
- lnGrTm = scheme.CreateLink(null, GR, ndTm, 0.0f, SPAirHelper.HoleDiam(16.0f));
- lnTmAt = scheme.CreateLink(null, ndTm, "at", 0.0f, SPAirHelper.HoleDiam(16.0f));
- ndU = scheme.CreateNode(null, 0.0f, 1.0f);
- scheme.CreateLink(null, UR, ndU, 1.0f, SPAirHelper.HoleDiam(1.6f));
- lnGrU = scheme.CreateLink(null, GR, ndU, 0.0f, SPAirHelper.HoleDiam(5.0f));
- lnGrR = scheme.CreateLink(null, GR, ndU, 1.0f, SPAirHelper.HoleDiam(3.0f));
- ndD = scheme.CreateNode(null, 0.0f, 0.1f);
- lnUrD = scheme.CreateLink(null, UR, ndD, 0.0f, SPAirHelper.HoleDiam(3.0f));
- ndS = scheme.CreateNode(null, 0.0f, 0.1f);
- scheme.CreateLink(null, ndS, "at", 1.0f, SPAirHelper.HoleDiam(0.45f));
- lnUS = scheme.CreateLink(null, ndU, ndS, 0.0f, SPAirHelper.HoleDiam(3.0f));
- lnUrTmOk = scheme.CreateLink(null, UR, ndTm, 0.0f, SPAirHelper.HoleDiam(3.0f));
- lnUrAtSlow = scheme.CreateLink(null, UR, "at", 0.0f, SPAirHelper.HoleDiam(0.75f));
- lnUrAt = scheme.CreateLink(null, UR, "at", 0.0f, SPAirHelper.HoleDiam(2.3f));
- lnUrAtE = scheme.CreateLink(null, UR, "at", 0.0f, SPAirHelper.HoleDiam(4.0f));
- lnUAt = scheme.CreateLink(null, ndU, "at", 0.0f, SPAirHelper.HoleDiam(5.0f));
- lnDAt = scheme.CreateLink(null, ndU, "at", 0.0f, SPAirHelper.HoleDiam(3.0f));
- }
- override public void Update(float dt)
- {
- float openRelayTmGr = 0.0f;
- float openRelayTmAt = 0.0f;
- float openGrTm = 0.0f;
- float openTmAt = 0.0f;
- float openGrU = 0.0f;
- float openGrR = 0.0f;
- float openUS = 0.0f;
- float openUrD = 0.0f;
- float openUrTmOk = 0.0f;
- float openUrAtSlow = 0.0f;
- float openUrAt = 0.0f;
- float openUrAtE = 0.0f;
- float openUAt = 0.0f;
- float openDAt = 0.0f;
- bool reductor = false;
- bool stabilizer = false;
- bool ok = false;
- switch (State)
- {
- case 1:
- openGrTm = 1.0f;
- openGrU = 1.0f;
- reductor = true;
- break;
- case 2:
- reductor = true;
- openUrD = 1.0f;
- stabilizer = true;
- break;
- case 3:
- ok = true;
- break;
- case 4:
- break;
- case 51:
- openUrAtSlow = 1.0f;
- break;
- case 5:
- openUrAt = 1.0f;
- break;
- default:
- //case 6:
- openDAt = 1.0f;
- openUAt = 1.0f;
- openUrAtE = 1.0f;
- openTmAt = 1.0f;
- break;
- }
- float tmPressure = Scheme.GetPressure(ndTm);
- float uPressure = Scheme.GetPressure(ndU);
- if (!ok)
- {
- float relayDelta = uPressure - tmPressure;
- float relaySensivity = 2.0f;
- float relaySensivityMax = 10.0f;
- if (relayDelta > relaySensivity)
- {
- openRelayTmGr = (relayDelta - relaySensivity) / relaySensivityMax;
- if (openRelayTmGr > 1.0f)
- openRelayTmGr = 1.0f;
- }
- else if (relayDelta < -relaySensivity)
- {
- openRelayTmAt = (-relayDelta + relaySensivity) / relaySensivityMax;
- if (openRelayTmAt > 1.0f)
- openRelayTmAt = 1.0f;
- }
- }
- if (reductor)
- {
- float reductorDelta = ChargePressure - Scheme.GetPressure(ndD);
- float reductorMaxDelta = 100.0f;
- if (reductorDelta > 0.0f)
- {
- openGrR = reductorDelta / reductorMaxDelta;
- if (openGrR > 1.0f)
- openGrR = 1.0f;
- }
- }
- if (stabilizer)
- {
- float stabilizerDelta = StabilizerPressure - Scheme.GetPressure(ndS);
- float stabilizerMaxDelta = 100.0f;
- if (stabilizerDelta > 0.0f)
- {
- openUS = stabilizerDelta / stabilizerMaxDelta;
- if (openUS > 1.0f)
- openUS = 1.0f;
- }
- }
- if (ok)
- {
- float okSensivity = 2.0f;
- float okSensivityMax = 10.0f;
- float okDelta = Scheme.GetPressure(UR) - tmPressure - okSensivity;
- if (okDelta > 0.0f)
- {
- openUrTmOk = okDelta / okSensivityMax;
- if (openUrTmOk > 1.0f)
- openUrTmOk = 1.0f;
- }
- }
- Scheme.SetFlowValue(lnRelayTmGr, openRelayTmGr);
- Scheme.SetFlowValue(lnRelayTmAt, openRelayTmAt);
- Scheme.SetFlowValue(lnGrTm, openGrTm);
- Scheme.SetFlowValue(lnTmAt, openTmAt);
- Scheme.SetFlowValue(lnGrU, openGrU);
- Scheme.SetFlowValue(lnGrR, openGrR);
- Scheme.SetFlowValue(lnUrD, openUrD);
- Scheme.SetFlowValue(lnUS, openUS);
- Scheme.SetFlowValue(lnUrTmOk, openUrTmOk);
- Scheme.SetFlowValue(lnUrAtSlow, openUrAtSlow);
- Scheme.SetFlowValue(lnUrAt, openUrAt);
- Scheme.SetFlowValue(lnUrAtE, openUrAtE);
- Scheme.SetFlowValue(lnUAt, openUAt);
- Scheme.SetFlowValue(lnDAt, openDAt);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement