diff --git a/Models/.DS_Store b/Models/.DS_Store
index 56f7caf..c98c2b4 100644
Binary files a/Models/.DS_Store and b/Models/.DS_Store differ
diff --git a/Models/Instruments/fuelgauge.png b/Models/Instruments/fuelgauge.png
index cf86ec2..f68acda 100644
Binary files a/Models/Instruments/fuelgauge.png and b/Models/Instruments/fuelgauge.png differ
diff --git a/Models/Instruments/speedometer的副本.png b/Models/Instruments/speedometer的副本.png
new file mode 100644
index 0000000..da106cf
Binary files /dev/null and b/Models/Instruments/speedometer的副本.png differ
diff --git a/Models/Messages/Speed and power.png b/Models/Messages/Speed and power.png
new file mode 100644
index 0000000..eb63be0
Binary files /dev/null and b/Models/Messages/Speed and power.png differ
diff --git a/Models/Messages/Speed and power.xml b/Models/Messages/Speed and power.xml
new file mode 100644
index 0000000..0b746a6
--- /dev/null
+++ b/Models/Messages/Speed and power.xml	
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<PropertyList>
+<sim>
+	<model>
+		<livery>
+			<name type="string">Speed and power</name>
+			<texture>Messages/Speed and power.png</texture>
+		</livery>
+	</model>
+</sim>
+</PropertyList>
diff --git a/Models/followmewheel.png b/Models/followmewheel.png
index a8597a2..061553f 100644
Binary files a/Models/followmewheel.png and b/Models/followmewheel.png differ
diff --git a/Nasal/electrical.nas b/Nasal/electrical.nas
new file mode 100644
index 0000000..0a7ea67
--- /dev/null
+++ b/Nasal/electrical.nas
@@ -0,0 +1,58 @@
+var electric_init = func(){  #Initialize
+    props.getNode("/",1).setValue("/systems/electrical/e-tron/battery-kWh",80);
+    props.getNode("/",1).setValue("/systems/electrical/e-tron/battery-U-V",760);
+    props.getNode("/",1).setValue("/systems/electrical/e-tron/switch/bat-fwd-eng",0);
+    props.getNode("/",1).setValue("/systems/electrical/e-tron/switch/bat-bwd-eng",0);
+    props.getNode("/",1).setValue("/systems/electrical/e-tron/fwd-eng-U-V",0);
+    props.getNode("/",1).setValue("/systems/electrical/e-tron/fwd-eng-U-V-max",0);
+    props.getNode("/",1).setValue("/systems/electrical/e-tron/bwd-eng-U-V",0);
+    props.getNode("/",1).setValue("/systems/electrical/e-tron/bwd-eng-U-V-max",0);
+    props.getNode("/",1).setValue("/systems/electrical/e-tron/fwd-eng-I-A",0);
+    props.getNode("/",1).setValue("/systems/electrical/e-tron/fwd-eng-I-A-max",0);
+    props.getNode("/",1).setValue("/systems/electrical/e-tron/bwd-eng-I-A",0);
+    props.getNode("/",1).setValue("/systems/electrical/e-tron/bwd-eng-I-A-max",0);
+    print("Electrical system initiallized!");
+}
+
+var electric_update = func(){
+    if(props.getNode("/",1).getValue("/systems/electrical/e-tron/switch/bat-fwd-eng") == 1){
+        props.getNode("/",1).setValue("/systems/electrical/e-tron/fwd-eng-U-V-max",380);
+        props.getNode("/",1).setValue("/systems/electrical/e-tron/fwd-eng-I-A-max",747);
+    }else{
+        props.getNode("/",1).setValue("/systems/electrical/e-tron/fwd-eng-U-V-max",0);
+        props.getNode("/",1).setValue("/systems/electrical/e-tron/fwd-eng-I-A-max",0);
+    }
+    
+    if(props.getNode("/",1).getValue("/systems/electrical/e-tron/switch/bat-bwd-eng") == 1){
+        props.getNode("/",1).setValue("/systems/electrical/e-tron/bwd-eng-U-V-max",380);
+        props.getNode("/",1).setValue("/systems/electrical/e-tron/bwd-eng-I-A-max",747);
+    }else{
+        props.getNode("/",1).setValue("/systems/electrical/e-tron/bwd-eng-U-V-max",0);
+        props.getNode("/",1).setValue("/systems/electrical/e-tron/bwd-eng-I-A-max",0);
+    }
+    
+}
+
+var electricTimer = maketimer(1, electric_update);
+
+var startElectricalSystemUpdate = func(){
+    electricTimer.start();
+    print("Electrical system update started!");
+}
+var stopElectricalSystemUpdate = func(){
+    electricTimer.stop();
+    print("Electrical system update stopped!");
+}
+
+var resetElectricalSystemUpdate = func(){
+    electricTimer.stop();
+    electric_init();
+    electricTimer.start();
+    print("Electrical system update reseted!");
+}
+
+var L = setlistener("/sim/signals/fdm-initialized", func{
+    electric_init();
+    electricTimer.start();
+    removelistener(L);
+});
\ No newline at end of file
diff --git a/Nasal/engine.nas b/Nasal/engine.nas
index 817ab3e..0379ec3 100644
--- a/Nasal/engine.nas
+++ b/Nasal/engine.nas
@@ -1,37 +1,67 @@
-var max_P_KW = 568;
 var gearratio = 9.73;
 props.getNode("/",1).setValue("/controls/engines/engine/rpm1",1000);
 props.getNode("/",1).setValue("/controls/engines/engine/direction",1);
 props.getNode("/",1).setValue("/controls/engines/engine/started",0);
+props.getNode("/",1).setValue("/controls/gear/brake-cmd",0);
+
+
 
 var update_engine = func(){
-    var direction = getprop("/controls/engines/engine/direction");
-    var throttle = getprop("/controls/engines/engine/throttle");
-    var rpm = getprop("/controls/engines/engine/rpm1");
-    var rpm_rate = throttle*max_P_KW*0.06;
-    var max_rpm = throttle*max_P_KW*90+1000;
+    var throttle = props.getNode("/",1).getValue("/controls/engines/engine/throttle");
+    var direction = props.getNode("/",1).getValue("/controls/engines/engine/direction");
+    
+    var fwdUNode = props.getNode("/systems/electrical/e-tron/fwd-eng-U-V",1);
+    var fwdANode = props.getNode("/systems/electrical/e-tron/fwd-eng-I-A",1);
+    var bwdUNode = props.getNode("/systems/electrical/e-tron/bwd-eng-U-V",1);
+    var bwdANode = props.getNode("/systems/electrical/e-tron/bwd-eng-I-A",1);
+    
+    var fwdMaxU = props.getNode("/",1).getValue("/systems/electrical/e-tron/fwd-eng-U-V-max");
+    var fwdMaxA = props.getNode("/",1).getValue("/systems/electrical/e-tron/fwd-eng-I-A-max");
+    var bwdMaxU = props.getNode("/",1).getValue("/systems/electrical/e-tron/bwd-eng-U-V-max");
+    var bwdMaxA = props.getNode("/",1).getValue("/systems/electrical/e-tron/bwd-eng-I-A-max");
+    
+    fwdUNode.setValue(throttle * fwdMaxU);
+    fwdANode.setValue(throttle * fwdMaxA);
+    bwdUNode.setValue(throttle * bwdMaxU);
+    bwdANode.setValue(throttle * bwdMaxA);
+    
+    var fwdPower = fwdUNode.getValue() * fwdANode.getValue();
+    var bwdPower = bwdUNode.getValue() * bwdANode.getValue();
+    
+    var cmd_P_kW = (fwdPower + bwdPower)/1000;
+    
+    
+    #var cmd_P_kW = throttle*max_P_kW;
+    
+    var rpm = props.getNode("/",1).getValue("/controls/engines/engine/rpm1");
+    var rpm_rate = cmd_P_kW * 0.06;
+    var max_rpm = cmd_P_kW * 90 + 1000;
     if(rpm > max_rpm){
         rpm_rate = -20;
     }else if(rpm == max_rpm){
         rpm_rate = 0;
     }else{
-        rpm_rate = throttle*max_P_KW*0.053;
+        rpm_rate = cmd_P_kW*  0.06;
     }
     var rpmActual = rpm_calculate(rpm_rate);
     var torque = 0;
     if(rpmActual == 0){
         torque = 0;
     }else{
-        torque = (throttle*max_P_KW*1000)/(rpmActual*6.283*0.1667);#max 967
+        torque = (cmd_P_kW * 1000) / (rpmActual * 6.283 * 0.1667);#max 967
     }
     var force = 3.33*direction*torque*gearratio;
     #print("torque:"~torque);
     props.getNode("/",1).setValue("/fdm/jsbsim/external_reactions/engine/magnitude", force);
 }
+
+var engineTimer = maketimer(0.001, update_engine);
+
+
 var rpm_calculate = func(rpm_rate){
     var rpm = getprop("/controls/engines/engine/rpm1");
     var rpm2 = 0;
-    var gearspeed = math.round(getprop("/gear/gear/rollspeed-ms"));
+    var gearspeed = math.round(props.getNode("/",1).getValue("/gear/gear/rollspeed-ms"));
     var rpm2 = (gearspeed/0.3)*9.8;
     #print(rpm2);
     rpm_rate = rpm_rate/1000;
@@ -42,18 +72,24 @@ var rpm_calculate = func(rpm_rate){
     return rpmActual;
 }
 
-var engineTimer = maketimer(0.001, update_engine);
+
 var startEngine = func(){
     props.getNode("/",1).setValue("/controls/engines/engine/started",1);
+    props.getNode("/",1).setValue("/systems/electrical/e-tron/switch/bat-fwd-eng",1);
+    props.getNode("/",1).setValue("/systems/electrical/e-tron/switch/bat-bwd-eng",1);
     engineTimer.start();
     print("Engine started");
 }
 var stopEngine = func(){
     props.getNode("/",1).setValue("/controls/engines/engine/started",0);
     props.getNode("/",1).setValue("/fdm/jsbsim/external_reactions/engine/magnitude", 0);
+    props.getNode("/",1).setValue("/systems/electrical/e-tron/switch/bat-fwd-eng",0);
+    props.getNode("/",1).setValue("/systems/electrical/e-tron/switch/bat-bwd-eng",0);
     engineTimer.stop();
     print("Engine stopped");
 }
 
 
 
+
+
diff --git a/Nasal/systems.nas b/Nasal/systems.nas
index 178964a..ca3adfa 100644
--- a/Nasal/systems.nas
+++ b/Nasal/systems.nas
@@ -31,6 +31,37 @@ var rearright_door = aircraft.door.new("/controls/doors/rearright", 1);
 beacon_switch = props.globals.getNode("controls/switches/warninglight", 2);
 var beacon = aircraft.light.new( "/sim/model/lights/warning", [0.5, 0.5], "/controls/lighting/warning" );
 beacon_switch = props.globals.getNode("controls/switches/indicator-left", 2);
-var beacon = aircraft.light.new( "/sim/model/lights/indicator-left", [0.8, 0.5], "/controls/lighting/indicator-left" );
+var beacon = aircraft.light.new( "/sim/model/lights/indicator-left", [0.8, 0.5], "/controls/lighting/indicator-left");
 beacon_switch = props.globals.getNode("controls/switches/indicator-right", 2);
-var beacon = aircraft.light.new( "/sim/model/lights/indicator-right", [0.8, 0.5], "/controls/lighting/indicator-right" );
+var beacon = aircraft.light.new( "/sim/model/lights/indicator-right", [0.8, 0.5], "/controls/lighting/indicator-right");
+
+
+
+var brakesABS = func(){
+    var gearFrtLftSpeed = math.round(props.getNode("/",1).getValue("/fdm/jsbsim/gear/unit/wheel-speed-fps"));
+    var gearFrtRgtSpeed = math.round(props.getNode("/",1).getValue("/fdm/jsbsim/gear/unit[1]/wheel-speed-fps"));
+    var gearBckLftSpeed = math.round(props.getNode("/",1).getValue("/fdm/jsbsim/gear/unit[2]/wheel-speed-fps"));
+    var gearBckRgtSpeed = math.round(props.getNode("/",1).getValue("/fdm/jsbsim/gear/unit[3]/wheel-speed-fps"));
+    if(gearFrtLftSpeed == 0 or gearBckLftSpeed == 0 or gearFrtRgtSpeed == 0 or gearBckRgtSpeed == 0){
+        props.getNode("/",1).setValue("/controls/gear/brake-left", 0);
+        props.getNode("/",1).setValue("/controls/gear/brake-right", 0);
+    }else{
+        props.getNode("/",1).setValue("/controls/gear/brake-left", 1);
+        props.getNode("/",1).setValue("/controls/gear/brake-right", 1);
+    }
+}
+
+var absTimer = maketimer(0.001, brakesABS);
+
+var brakeWithABS = func(){
+    var brakeCmd = props.getNode("/",1).getValue("/controls/gear/brake-cmd");
+    if(brakeCmd){
+        absTimer.start();
+    }else{
+        absTimer.stop();
+    }
+}
+
+setlistener("/controls/gear/brake-cmd", brakeWithABS);
+
+
diff --git a/followme_e-tron-set.xml b/followme_e-tron-set.xml
index 5a2239f..1bebb8b 100644
--- a/followme_e-tron-set.xml
+++ b/followme_e-tron-set.xml
@@ -226,23 +226,13 @@
             <repeatable>false</repeatable>
             <binding>
                 <command>property-assign</command>
-                <property>/controls/gear/brake-left</property>
-                <value>1</value>
-            </binding>
-            <binding>
-                <command>property-assign</command>
-                <property>/controls/gear/brake-right</property>
+                <property>/controls/gear/brake-cmd</property>
                 <value>1</value>
             </binding>
             <mod-up>
                 <binding>
                     <command>property-assign</command>
-                    <property>/controls/gear/brake-left</property>
-                    <value>0</value>
-                </binding>
-                <binding>
-                    <command>property-assign</command>
-                    <property>/controls/gear/brake-right</property>
+                    <property>/controls/gear/brake-cmd</property>
                     <value>0</value>
                 </binding>
             </mod-up>
@@ -291,6 +281,9 @@
     <engine>
         <file>Aircraft/followme_e-tron/Nasal/engine.nas</file>
     </engine>
+    <electrical>
+        <file>Aircraft/followme_e-tron/Nasal/electrical.nas</file>
+    </electrical>
 </nasal>
 
 </PropertyList>
diff --git a/followme_e-tron.xml b/followme_e-tron.xml
index 2a3605e..62991f2 100644
--- a/followme_e-tron.xml
+++ b/followme_e-tron.xml
@@ -140,8 +140,8 @@
     </propulsion>
 
     <flight_control name="Truck">
+        
         <channel name="Steer">
-           
             <summer name="Steer Sum">
                 <input>fcs/rudder-cmd-norm</input>
                 <clipto>