diff --git a/Nasal/SmartInstruments.nas b/Nasal/SmartInstruments.nas index b3ed542..6f45abc 100644 --- a/Nasal/SmartInstruments.nas +++ b/Nasal/SmartInstruments.nas @@ -11,8 +11,15 @@ var SmartInstruments = { }), }; m.group = m.instrumentCanvas.createGroup();#//Main group + m.signGroup = m.instrumentCanvas.createGroup();#//sign group m.welcomeGroup = m.instrumentCanvas.createGroup(); m.instrumentCanvas.addPlacement({"node": placement}); + #Sign svg + #canvas.parsesvg( + # m.signGroup, + # "Aircraft/followme_e-tron/Models/Interior/Instruments/Smart/dashboard.svg", + #); + #m.signGroup.hide(); #Background m.backgroundPath = "Aircraft/followme_e-tron/Models/Interior/Instruments/Smart/dashboard0.png"; # create an image child for the texture @@ -169,7 +176,7 @@ var SmartInstruments = { me.updateTimer.start(); }, shutDown:func(){ - if(me.updateTimer) me.updateTimer.stop(); + if(me.updateTimer != nil) me.updateTimer.stop(); me.group.hide(); me.welcomeGroup.hide(); } @@ -178,10 +185,7 @@ var SmartInstruments = { var smartInstruments = SmartInstruments.new("instrumentScreen"); -#canvas.parsesvg( -# group, -# "Aircraft/followme_e-tron/Models/Interior/Instruments/Smart/dashboard.svg", -#); + #props.getNode("/dev/smart/size", 1).setValue(30); #props.getNode("/dev/smart/x", 1).setValue(520); @@ -196,5 +200,5 @@ var runtimeTextAdjust = func(text){ } -var window = canvas.Window.new([756,368],"dialog"); -window.setCanvas(smartInstruments.instrumentCanvas); +#var window = canvas.Window.new([756,368],"dialog"); +#window.setCanvas(smartInstruments.instrumentCanvas); diff --git a/Nasal/electrical.nas b/Nasal/electrical.nas index c93bb0d..ad409d2 100644 --- a/Nasal/electrical.nas +++ b/Nasal/electrical.nas @@ -57,6 +57,7 @@ var Series = { } } } + #//Calculated by solving the equation UI = I^2*R + Power output var a = me.totalResistance(); var b = me.voltage; var c = math.sqrt(me.voltage * me.voltage - 4 * me.totalResistance() * me.totalActivePower()); @@ -67,13 +68,20 @@ var Series = { calculateSeriesVoltage: func(){ var tR = me.totalResistance(); + cElectromotiveForce = me.voltage - me.current() * tR; #Total counterElectromotiveForce, calculated from UI = I^R + Power output + me.voltage = me.voltage - cElectromotiveForce; #//Voltage with counterElectromotiveForce in consideration + totalTmp = 0; + foreach(elem; me.units){ + totalTmp += elem.current * elem.current * elem.resistance + elem.activePower + elem.activePower_kW * 1000; + } foreach(elem; me.units){ if(elem.isSwitch()){ if(!elem.isConnected()){ me.voltage = 0; } } - elem.voltage = (elem.resistance/tR) * me.voltage; + var factor = (elem.current * elem.current * elem.resistance + elem.activePower + elem.activePower_kW * 1000)/totalTmp; + elem.voltage = me.voltage * factor; } }, @@ -122,11 +130,22 @@ var Circuit = { current: 0, #//Ampere voltage: func(){ - return me.parallelConnection[0].units[0].electromotiveForce; + var v = 0; + #if(me.calculateTotalParallelCurrent()){ + v = me.parallelConnection[0].units[0].electromotiveForce - me.calculateTotalParallelCurrent()*me.parallelConnection[0].units[0].resistance; + #} + #foreach(elem; me.parallelConnection){ + # if(elem.voltage != v){ + # v = elem.voltage; + # break; + # } + #} + return v }, #//Volt calculateParallelVoltage: func(){ var setVoltage = me.voltage(); + var totalCounterElecMotiveForce = 0; foreach(elem; me.parallelConnection){ if(elem.isSwitch()){ if(!elem.isConnected()){ @@ -191,7 +210,7 @@ var Circuit = { foreach(elem; me.parallelConnection){ foreach(unit; elem.units){ - if(unit.isCurrentSource()) unit.currentSourceUpdate(me.calculateTotalPower(), me.updateInterval); #//Pass in negetive power for charging + if(unit.isCurrentSource()) unit.currentSourceUpdate(me.calculateTotalPower(), me.updateInterval); #//Update the current source. Pass in negetive power in case of charging } } if(me.debugMode == 2) print("Power Calculated"); @@ -241,7 +260,9 @@ var Appliance = { power: func(){ return me.activePower + me.activePower_kW*1000 + me.heatingPower(); }, - + counterElectromotiveForce: func(){ + return (me.activePower + me.activePower_kW*1000)/me.current; #//Counter Electromotive Force calculated by output power divided by current + }, isResistor: 0,