Engine: bug fix

This commit is contained in:
Sidi Liang 2021-02-05 16:00:50 +08:00
parent eb1049c7f4
commit a20127d96e
1 changed files with 28 additions and 18 deletions

View File

@ -61,7 +61,10 @@ var Engine = {
torque: 0, #Nm
outputForce: 0, #N
debugMode: 0,
frictionNode: props.getNode("/fdm/jsbsim/forces/fbx-gear-lbs", 1),
wheelSpeedNode: props.getNode("/gear/gear/rollspeed-ms", 1),
debugMode: 1,
calculateRatedCurrent: func(){ #//Returns the rated current
var a = me.motorResistance;
@ -80,7 +83,7 @@ var Engine = {
var angularSpeed = rpm * 0.10471975; #//rps * 2 * 3.1415926
var friction_lbs = props.getNode("/",1).getValue("fdm/jsbsim/forces/fbx-gear-lbs");
var friction_lbs = me.frictionNode.getValue();
var friction = 4.4492 * friction_lbs * 0.25;#//0.25: single wheel
var angularDecelaeration = friction * me.wheel_radius * (1/me.wheel_moi); #//frictionTorque = friction * wheel_radius, angularDecelaeration = frictionTorque/wheel_moi;
#print(angularAcceleration);
@ -92,22 +95,24 @@ var Engine = {
var totalAcceleration = angularAcceleration + angularDecelaeration;
if(me.getDirection() == 1){
if(angularSpeed + totalAcceleration * 0.1 > 5){
angularSpeed = angularSpeed + totalAcceleration * 0.1;
}else if(angularSpeed + totalAcceleration * 0.1 < 5){
#print("angularSpeed + totalAcceleration * 0.1 < 10");
angularSpeed = angularSpeed + angularAcceleration * 0.1;
}
}else if(me.getDirection() == -1){
if(angularSpeed + totalAcceleration * 0.1 < -5){
angularSpeed = angularSpeed + totalAcceleration * 0.1;
}else if(angularSpeed + totalAcceleration * 0.1 > -5){
angularSpeed = angularSpeed + angularAcceleration * 0.1;
}
}
#if(me.getDirection() == 1){
# if(angularSpeed + totalAcceleration * 0.1 > 10){
# angularSpeed = angularSpeed + totalAcceleration * 0.1;
# }else if(angularSpeed + totalAcceleration * 0.1 < 10){
# #print("angularSpeed + totalAcceleration * 0.1 < 10");
# angularSpeed = angularSpeed + angularAcceleration * 0.1;
# }
#}else if(me.getDirection() == -1){
# if(angularSpeed + totalAcceleration * 0.1 < -10){
# angularSpeed = angularSpeed + totalAcceleration * 0.1;
# }else if(angularSpeed + totalAcceleration * 0.1 > -10){
# angularSpeed = angularSpeed + angularAcceleration * 0.1;
# }
#}
var wheelSpeed_ms = math.abs(props.getNode("/",1).getValue("gear/gear/rollspeed-ms"));
angularSpeed += totalAcceleration * 0.1;
var wheelSpeed_ms = math.abs(me.wheelSpeedNode.getValue()) * me.getDirection();
var wheelAngularSpeed = wheelSpeed_ms / me.wheel_radius;
var targetAngularSpeed = wheelAngularSpeed * me.gear;
@ -121,6 +126,11 @@ var Engine = {
#//rps = angularSpeed / 6.2831853;
rpm = angularSpeed * 9.5492966; #//rps * 60
#//Prevent the rpm goes too small
if(rpm * me.getDirection() < 50){
rpm = 50 * me.getDirection();
}
me.rpm = rpm;
props.getNode("/",1).setValue("/controls/engines/engine/rpma",rpm);
@ -163,7 +173,7 @@ var Engine = {
var angularAcceleration = me.cmdTorque / me.rotor_moi; #rad/s^2
me.rpm = me.rpm_calculate(angularAcceleration);
if(me.rpm) me.torque = direction * math.abs((9549 * me.cmdPower) / me.rpm);
if(me.rpm) me.torque = (9549 * me.cmdPower) / me.rpm;
me.activePower_kW = math.abs(me.rpm * me.torque / 9549);