Browse Source

set soc now in %, minor fixes to diferentiate between car and house battery

David Heck 4 years ago
parent
commit
f3cf198020

+ 24 - 8
src/blackstart/controlAlgorithm.java

@@ -29,6 +29,7 @@ public class controlAlgorithm implements AddOn {
 	private TextField blackstartStartTimeTextfield;
 	private TextField simulationDurationTextfield;
 	private TextField storageStartCharge;
+	private TextField carStartCharge;
 	private TextField waitBetweenIterations;
 	private TextField lowVolatageTextfield;
 	private TextField highVolatageTextfield;
@@ -116,14 +117,22 @@ public class controlAlgorithm implements AddOn {
 		powerplantMaxOutputLabel.setBounds(110, 110, 300, 20);
 		parameterPanel.add(powerplantMaxOutputLabel);
 
-		storageStartCharge = new TextField("0.16666666");
+		storageStartCharge = new TextField("25");
 		storageStartCharge.setBounds(10, 135, 95, 20);
 		parameterPanel.add(storageStartCharge);
 
-		JLabel storageStartChargeLabel = new JLabel("Storage charge at start in kWh");
+		JLabel storageStartChargeLabel = new JLabel("Storage soc at start in %");
 		storageStartChargeLabel.setBounds(110, 135, 300, 20);
 		parameterPanel.add(storageStartChargeLabel);
 
+		carStartCharge = new TextField("50");
+		carStartCharge.setBounds(10, 160, 95, 20);
+		parameterPanel.add(carStartCharge);
+
+		JLabel carStartChargeLabel = new JLabel("Car soc at start in %");
+		carStartChargeLabel.setBounds(110, 160, 300, 20);
+		parameterPanel.add(carStartChargeLabel);
+
 		waitBetweenIterations = new TextField("0");
 		waitBetweenIterations.setBounds(10, 205, 95, 20);
 		parameterPanel.add(waitBetweenIterations);
@@ -231,7 +240,7 @@ public class controlAlgorithm implements AddOn {
 			control.getModel().setResistanceCalculator(new resistanceCalculator(
 					Integer.parseInt(lowVolatageTextfield.getText()),
 					Integer.parseInt(highVolatageTextfield.getText()),
-					30, 30,0.017, 0.017));
+					10, 25,0.017, 0.017));
 			control.getModel().getResistanceCalculator().setDistancesToCalcResistance(powerplant);
 
 			blackstartRunningCounter = 0;
@@ -255,9 +264,15 @@ public class controlAlgorithm implements AddOn {
 			control.getModel().setIterations(Integer.parseInt(simulationDurationTextfield.getText()));
 			for (StorageElement se :
 					getStorageElements()) {
-				se.setStateOfCharge(Float.parseFloat(storageStartCharge.getText())*1000*60);
+				switch (se.getEleName()){
+					case "Storage":
+						se.setStateOfCharge(Float.parseFloat(storageStartCharge.getText()));
+						break;
+					case "Car":
+						se.setStateOfCharge(Float.parseFloat(carStartCharge.getText()));
+						break;
+				}
 			}
-
 			updateVisual();
 			if (blackstartStartTime + blackstartSuccessTime > control.getModel().getIterations() - 1) {
 				println("No Time for the blackstart, use working numbers");
@@ -313,8 +328,9 @@ public class controlAlgorithm implements AddOn {
 
 	/**
 	 * TODO: HOLEG UNTERVERSORGUNG CHECKEN
-	 * TODO: renewables mit verlust
-	 * TODO: cable diameter/specificresistance
+	 * TODO: global resistance calculator?
+	 * TODO: entladen besser verteilen
+	 *
 	 *
 	 * maybes:
 	 * 	 * TODO: prios fuer elemente anschalten
@@ -533,7 +549,7 @@ public class controlAlgorithm implements AddOn {
 		println("currenctpossiblestorage: " + SPC.currentPossibleStorageProduction());
 		for (StorageElement ele :
 				getStorageElements()) {
-			println("Storage " + ele.getId() + ", soc: " + (ele.getStateOfCharge()/60)/1000 + "kWh,"  + " maxpower: " + ele.getMaxOutRatio() + " W, distance: " + (ele.getLowDistance()+ele.getHighDistance()));
+			println(ele.getEleName() + " " + ele.getId() + ", soc: " + (ele.getStateOfCharge()/60)/1000 + "kWh,"  + " maxpower: " + ele.getMaxOutRatio() + " W, distance: " + (ele.getLowDistance()+ele.getHighDistance()));
 		}
 	}
 

+ 3 - 11
src/classes/StorageElement.java

@@ -34,7 +34,7 @@ public class StorageElement extends HolonElement implements Comparable<StorageEl
 		this.capacity = capacity * 60;// we save in watts per minute for ease of use
 		this.status = Mode.STANDBY;
 		this.chargingRatio = 0;
-		this.resistanceCalculator = new resistanceCalculator(230, 20000,30, 30, 0.017, 0.017);//TODO
+		this.resistanceCalculator = new resistanceCalculator(230, 20000,10, 25, 0.017, 0.017);//TODO
 	}
 
 	public float getEnergyPerElement() {
@@ -67,11 +67,7 @@ public class StorageElement extends HolonElement implements Comparable<StorageEl
 	 *               by the storage
 	 * @return float how much energy was collected/emited
 	 */
-
-	//TODO: das beachtet nicht wie viel durch widerstand verloren geht
-
 	public float setStatusAndSetEnergy(Mode status, float energyWanted, float energyRequiredForPowerplantBlackstart) {
-		//TODO: stellen fuer energyNeed nochmal ueberdenken
 		float energyNeed = resistanceCalculator.calcEnergyNeededForCertainEnergyAfterResistance(energyWanted, getLowDistance(), getHighDistance(), energyRequiredForPowerplantBlackstart);
 		this.status = status;
 		switch (status) {
@@ -150,12 +146,8 @@ public class StorageElement extends HolonElement implements Comparable<StorageEl
 		System.out.println("stateofcharge after:" + stateOfCharge + " now as " + status + " " + getEnergyPerElement() );
 	}
 
-	public void setStateOfCharge(float stateOfCharge){
-		if(stateOfCharge < capacity){
-			this.stateOfCharge = stateOfCharge;
-		}else{
-			this.stateOfCharge = capacity;
-		}
+	public void setStateOfCharge(float percentage){
+		this.stateOfCharge = capacity * (percentage / 100);
 	}
 
 	private float notEnoughChargedToEmitWantedEnergy(float energyRequiredForPowerplantBlackstart){

+ 2 - 2
src/ui/view/AddStorageElementPopUp.java

@@ -102,7 +102,7 @@ public class AddStorageElementPopUp extends JDialog {
         capacity.setBounds(130, 50, 110, 20);
         contentPanel.add(capacity);
         capacity.setColumns(10);
-        capacity.setText("10000");
+        capacity.setText("13.5");
 
         checkBoxActive = new JCheckBox("Active");
         checkBoxActive.setSelected(true);
@@ -206,7 +206,7 @@ public class AddStorageElementPopUp extends JDialog {
         }
         if (elementName.getText().length() != 0 && !repeated) {
             try {
-                float elementCapacity = Float.parseFloat(capacity.getText());
+                float elementCapacity = Float.parseFloat(capacity.getText())*1000;
                 float maxIn = Float.parseFloat(maxInRatio.getText());
                 float maxOut = Float.parseFloat(maxOutRatio.getText());
                 int elementAmount = Integer.parseInt(amount.getText());