HolonBattery.java 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. package classes;
  2. import ui.model.Model;
  3. import ui.controller.*;
  4. public class HolonBattery extends AbstractCpsObject{
  5. private float inRatio;
  6. private float outRatio;
  7. private float capacity;
  8. private float initialStateOfCharge;
  9. private float stateOfCharge;
  10. private float newStateOfCharge;
  11. private float[] stateOfChargeLevels;
  12. private float iterations = 0;
  13. public enum State{STANDBY, COLLECT, EMIT};
  14. private State state;
  15. /** Constructor for a unique ID.
  16. * @param ObjName
  17. */
  18. public HolonBattery(String ObjName)
  19. {
  20. super(ObjName);
  21. inRatio = 0;
  22. outRatio = 0;
  23. capacity = 0;
  24. stateOfCharge = 0;
  25. newStateOfCharge = 0;
  26. initialStateOfCharge = 0;
  27. setState(State.STANDBY);
  28. }
  29. /** Constructor to Copy a Battery
  30. * @param obj Object to copy.
  31. */
  32. public HolonBattery(AbstractCpsObject obj)
  33. {
  34. super(obj);
  35. super.setName(obj.getName());
  36. setInRatio(((HolonBattery) obj).getInRatio());
  37. setOutRatio(((HolonBattery) obj).getOutRatio());
  38. setCapacity(((HolonBattery) obj).getCapacity());
  39. setStateOfCharge(((HolonBattery) obj).getStateOfCharge());
  40. setNewStateOfCharge(((HolonBattery) obj).getStateOfCharge());
  41. setInitialStateOfCharge(((HolonBattery) obj).getStateOfCharge());
  42. setState(State.STANDBY);
  43. }
  44. public float getStateOfCharge() {
  45. return stateOfCharge;
  46. }
  47. public void setStateOfCharge(float stateOfCharge) {
  48. this.stateOfCharge = validStateOfCharge(stateOfCharge);
  49. }
  50. public float getCapacity() {
  51. return capacity;
  52. }
  53. public void setCapacity(float capacity) {
  54. if(capacity < 0) //capasity can not be negative
  55. {
  56. capacity = 0;
  57. }
  58. this.capacity = capacity;
  59. }
  60. public float getOutRatio() {
  61. return outRatio;
  62. }
  63. public void setOutRatio(float outRatio) {
  64. if(outRatio < 0) //
  65. {
  66. outRatio = 0;
  67. }
  68. this.outRatio = outRatio;
  69. }
  70. public float getInRatio() {
  71. return inRatio;
  72. }
  73. //For Calculations
  74. public float getInAtTimeStep(int x)
  75. {
  76. if(getCapacity() - getStateOfChargeAtTimeStep(x) < inRatio)
  77. return getCapacity() - getStateOfChargeAtTimeStep(x);
  78. else
  79. return inRatio;
  80. }
  81. public float getOutAtTimeStep(int x)
  82. {
  83. if(getStateOfChargeAtTimeStep(x) < outRatio)
  84. return getStateOfChargeAtTimeStep(x);
  85. else
  86. return outRatio;
  87. }
  88. public void setInRatio(float inRatio) {
  89. if(inRatio < 0)
  90. {
  91. inRatio = 0;
  92. }
  93. this.inRatio = inRatio;
  94. }
  95. public State getState() {
  96. return state;
  97. }
  98. public void setState(State state) {
  99. this.state = state;
  100. }
  101. /**
  102. * @return The String that is over the Battery in the Canvas if COLLECT the
  103. * input if EMIT the output of the Battery
  104. */
  105. public String getCanvasBatteryString()
  106. {
  107. /*
  108. switch(getState())
  109. {
  110. case COLLECT:
  111. return "-" + Float.toString(getIN());
  112. case EMIT:
  113. return "+" + Float.toString(getOUT());
  114. case STANDBY:
  115. default:
  116. return "0";
  117. }
  118. */
  119. if(newStateOfCharge > stateOfCharge)
  120. {
  121. return "+" + Float.toString(newStateOfCharge - stateOfCharge);
  122. }
  123. else if (newStateOfCharge < stateOfCharge)
  124. {
  125. return Float.toString(newStateOfCharge - stateOfCharge); // '"-" +' not needed because negative
  126. }else
  127. {
  128. return "0";
  129. }
  130. }
  131. public String toString()
  132. {
  133. return "HolonBattery ID:" + this.getId() + " State:" + getState().name()
  134. + " InRatio:" + getInRatio() + " OutRatio:" + getOutRatio()
  135. + " Akku: " + getStateOfCharge() + "/" + getCapacity()
  136. + " NewSOC: " + getNewStateOfCharge();
  137. }
  138. public float getNewStateOfCharge() {
  139. return newStateOfCharge;
  140. }
  141. public void setNewStateOfCharge(float newStateOfCharge) {
  142. this.newStateOfCharge = newStateOfCharge;
  143. }
  144. public void setStateOfChargeAtTimeStep(float newStateOfCharge, int x) {
  145. if(iterations != SingletonControl.getInstance().getControl().getModel().getIterations())
  146. {
  147. stateOfChargeLevels = new float[SingletonControl.getInstance().getControl().getModel().getIterations()];
  148. iterations = SingletonControl.getInstance().getControl().getModel().getIterations();
  149. }
  150. System.out.println( "Iterations:" + x);
  151. stateOfChargeLevels[x] = validStateOfCharge(newStateOfCharge);
  152. for(int i = 0; i < stateOfChargeLevels.length; i++)
  153. {
  154. System.out.println( i+":"+stateOfChargeLevels[i]+ ",");
  155. }
  156. }
  157. public float getStateOfChargeAtTimeStep(int x) {
  158. if(iterations != SingletonControl.getInstance().getControl().getModel().getIterations())
  159. {
  160. stateOfChargeLevels = new float[SingletonControl.getInstance().getControl().getModel().getIterations()];
  161. iterations = SingletonControl.getInstance().getControl().getModel().getIterations();
  162. }
  163. if(x < 0)
  164. {
  165. return initialStateOfCharge;
  166. }
  167. return stateOfChargeLevels[x];
  168. }
  169. public float getInitialStateOfCharge() {
  170. return initialStateOfCharge;
  171. }
  172. public void setInitialStateOfCharge(float initialStateOfCharge) {
  173. this.initialStateOfCharge = validStateOfCharge(initialStateOfCharge);
  174. }
  175. /** Correct if a state of charge is to big or to less
  176. * @return a valid State of charge
  177. */
  178. public float validStateOfCharge(float stateOfChargeToValid)
  179. {
  180. if(stateOfChargeToValid > capacity) //state of Charege can not more than the capacity
  181. {
  182. return capacity;
  183. }
  184. else if(stateOfChargeToValid < 0) // state of charge can not be a negativ value
  185. {
  186. return 0;
  187. }
  188. else
  189. {
  190. return stateOfChargeToValid;
  191. }
  192. }
  193. }