Engine: MAJOR bug fix
This commit is contained in:
parent
4ba55f833c
commit
ebf4f35dd7
|
@ -1,4 +1,5 @@
|
|||
#//Followme EV electric engine by Sidi Liang
|
||||
var N2LBS = 0.2248089;
|
||||
var Engine = {
|
||||
#//Class for any electric engine
|
||||
#//mTorque: Max torque, mPower: Max Power, rpmAtMPower: RPM at max power
|
||||
|
@ -17,7 +18,7 @@ var Engine = {
|
|||
isRunning: func(){
|
||||
return me.runningState;
|
||||
},
|
||||
|
||||
|
||||
direction: 1,
|
||||
setDirection: func(dir){
|
||||
me.direction = dir;
|
||||
|
@ -41,6 +42,10 @@ var Engine = {
|
|||
return me.gear;
|
||||
},
|
||||
|
||||
rotor_moi: 2.5,
|
||||
wheel_moi: 0.7688,
|
||||
wheel_radius: 0.31, #//M
|
||||
|
||||
rpm: 0,
|
||||
|
||||
maxTorque: 460, #Nm
|
||||
|
@ -64,7 +69,7 @@ var Engine = {
|
|||
var friction_lbs = props.getNode("/",1).getValue("fdm/jsbsim/forces/fbx-gear-lbs");
|
||||
var friction = 4.4492 * friction_lbs;
|
||||
#//var frictionTorque = friction * 0.045;
|
||||
var angularDecelaeration = friction * 0.072; #//frictionTorque = friction * 0.15 * 0.3, angularDecelaeration = frictionTorque/0.625;
|
||||
var angularDecelaeration = friction * me.wheel_radius * (1/me.wheel_moi) * 0.25; #//frictionTorque = friction * wheel_radius, angularDecelaeration = frictionTorque/wheel_moi;
|
||||
#print(angularAcceleration);
|
||||
#print("de"~angularDecelaeration);
|
||||
|
||||
|
@ -80,7 +85,7 @@ var Engine = {
|
|||
if(angularSpeed + totalAcceleration * 0.1 > 10){
|
||||
angularSpeed = angularSpeed + totalAcceleration * 0.1;
|
||||
}else if(angularSpeed + totalAcceleration * 0.1 < 10){
|
||||
#print("angularSpeed + totalAcceleration * 0.1 < 10");
|
||||
#print("angularSpeed + totalAcceleration * 0.01 < 10");
|
||||
angularSpeed = angularSpeed + angularAcceleration * 0.1;
|
||||
}
|
||||
}else if(me.getDirection() == -1){
|
||||
|
@ -122,26 +127,26 @@ var Engine = {
|
|||
|
||||
var cmdPower = throttle * me.ratedPower;
|
||||
#print("cmdPower: "~cmdPower);
|
||||
me.activePower_kW = math.abs(me.rpm * me.torque / 10824);
|
||||
me.activePower_kW = math.abs(me.rpm * me.torque / 9549);
|
||||
|
||||
if(math.abs(me.rpm) < cmdRpm){
|
||||
#print("me.rpm < cmdRpm");
|
||||
me.torque = throttle * me.maxTorque * direction;
|
||||
var angularAcceleration = me.torque / 0.175; #rad/s^2
|
||||
var angularAcceleration = me.torque / me.rotor_moi; #rad/s^2
|
||||
me.rpm = me.rpm_calculate(angularAcceleration);
|
||||
}else if(throttle == 0){
|
||||
me.activePower_kW = 0;
|
||||
me.torque = 0;
|
||||
var angularAcceleration = direction * math.abs(me.torque) / 0.175; #rad/s^2
|
||||
var angularAcceleration = direction * math.abs(me.torque) / me.rotor_moi; #rad/s^2
|
||||
me.rpm = me.rpm_calculate(angularAcceleration);
|
||||
}else{
|
||||
me.activePower_kW = cmdPower;
|
||||
var angularAcceleration = direction * math.abs(me.torque) / 0.175; #rad/s^2
|
||||
var angularAcceleration = direction * math.abs(me.torque) / me.rotor_moi; #rad/s^2
|
||||
me.rpm = me.rpm_calculate(angularAcceleration);
|
||||
me.torque = direction * math.abs(me.activePower_kW / me.rpm * 10824);
|
||||
me.torque = direction * math.abs((9549 * me.activePower_kW) / me.rpm);
|
||||
}
|
||||
|
||||
var force = 3.33 * me.torque * me.gear;
|
||||
var force = (1/me.wheel_radius) * me.torque * me.gear;#//unit: N
|
||||
|
||||
me.outputForce = force;
|
||||
|
||||
|
@ -150,7 +155,7 @@ var Engine = {
|
|||
}
|
||||
|
||||
|
||||
outputForce(me.outputForce);
|
||||
outputForce(me.outputForce * N2LBS);
|
||||
|
||||
},
|
||||
|
||||
|
@ -253,5 +258,4 @@ var startEngine = func(){
|
|||
var stopEngine = func(){
|
||||
engine_1.stopEngine();
|
||||
print("Engine stopped");
|
||||
}
|
||||
|
||||
}
|
|
@ -40,7 +40,7 @@
|
|||
<iyy unit="SLUG*FT2"> 5334 </iyy>
|
||||
<izz unit="SLUG*FT2"> 11945 </izz>
|
||||
<ixz unit="SLUG*FT2"> 0 </ixz>
|
||||
<emptywt unit="KG"> 3000 </emptywt>
|
||||
<emptywt unit="KG"> 995 </emptywt>
|
||||
<location name="CG" unit="M">
|
||||
<x> 1.5 </x>
|
||||
<y> 0.0 </y>
|
||||
|
|
Loading…
Reference in New Issue