From 1b3c6a290132537a611fca657e30245a7aa4b2a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Rodr=C3=ADguez=20Pearson?= Date: Sat, 1 Jul 2017 18:42:35 +0200 Subject: [PATCH] Improve documentation for most examples This commit represents only a slight improvement, since the documentation that has been added is quite succinct. It's still an improvement. Only one example, USBBatteryConverter, is left without documentation since there's still some work to do on that one. --- .../Verification/IdealCBSwitchVerification.mo | 70 +++++++------- .../MPPTControllerVerification.mo | 86 +++++++++++------- .../Examples/Verification/PLLVerification.mo | 37 ++++---- .../Verification/PVArrayVerification.mo | 49 +++++----- .../Examples/Verification/ParkVerification.mo | 37 ++++---- .../Verification/SimpleBatteryVerification.mo | 72 +++++++++++---- .../Verification/SwitchingCPMVerification.mo | 39 ++++---- .../Verification/SwitchingPWMVerification.mo | 39 ++++---- ...g => IdealCBSwitchVerificationResults.png} | Bin .../MPPTControllerValidationResults.png | Bin 3857 -> 0 bytes .../MPPTControllerVerificationResultsA.png | Bin 0 -> 13404 bytes .../MPPTControllerVerificationResultsB.png | Bin 0 -> 14637 bytes ...Results.png => PLLVerificationResults.png} | Bin ...lts.png => PVArrayVerificationResults.png} | Bin .../Images/ParkValidationResults.png | Bin 7452 -> 0 bytes .../Images/ParkVerificationResults.png | Bin 0 -> 8961 bytes .../Images/SignalPWMValidationResults.png | Bin 3245 -> 0 bytes .../SimpleBatteryVerificationResults.png | Bin 0 -> 6342 bytes .../SwitchingCPMVerificationResults.png | Bin 0 -> 11185 bytes .../SwitchingPWMVerificationResults.png | Bin 0 -> 6278 bytes 20 files changed, 241 insertions(+), 188 deletions(-) rename PVSystems/Resources/Images/{IdealCBSwitchValidationResults.png => IdealCBSwitchVerificationResults.png} (100%) delete mode 100644 PVSystems/Resources/Images/MPPTControllerValidationResults.png create mode 100644 PVSystems/Resources/Images/MPPTControllerVerificationResultsA.png create mode 100644 PVSystems/Resources/Images/MPPTControllerVerificationResultsB.png rename PVSystems/Resources/Images/{PLLValidationResults.png => PLLVerificationResults.png} (100%) rename PVSystems/Resources/Images/{PVArrayValidationResults.png => PVArrayVerificationResults.png} (100%) delete mode 100644 PVSystems/Resources/Images/ParkValidationResults.png create mode 100644 PVSystems/Resources/Images/ParkVerificationResults.png delete mode 100644 PVSystems/Resources/Images/SignalPWMValidationResults.png create mode 100644 PVSystems/Resources/Images/SimpleBatteryVerificationResults.png create mode 100644 PVSystems/Resources/Images/SwitchingCPMVerificationResults.png create mode 100644 PVSystems/Resources/Images/SwitchingPWMVerificationResults.png diff --git a/PVSystems/Examples/Verification/IdealCBSwitchVerification.mo b/PVSystems/Examples/Verification/IdealCBSwitchVerification.mo index 844b2f9..8837b1e 100644 --- a/PVSystems/Examples/Verification/IdealCBSwitchVerification.mo +++ b/PVSystems/Examples/Verification/IdealCBSwitchVerification.mo @@ -39,41 +39,41 @@ equation StopTime=1, Tolerance=1e-4), Documentation(info=" -

- IdealCBSwitchValidation presents a simple circuit to validate the - behaviour of the corresponding component. The circuit is composed of - a resistor in series with a sinusoidal AC voltage source and the - ideal current bidirectional switch. The switch is operated by a step - block that changes from 0 to 1 in the middle of the simulation. This - changes the state of the switch from open to closed. -

- -

- To use the example, simulate the model as provided and plot the - source voltage as well as the switch voltage, the plot should look - like this: -

- - -
-

\"IdealCBSwitchValidationResults.png\" +

+ This example presents a circuit composed of a resistor + in series with a sinusoidal AC voltage source and the + ideal current bidirectional switch. The switch is + operated by a step block that changes from 0 to 1 in the + middle of the simulation. This changes the state of the + switch from open to closed.

-
- -

- Notice how at the begining of the simulation, when the switch is not - closed, it blocks all the positive voltage, preventing current from - flowing. On the other hand, the negative voltage is not blocked, so - the current can flow (through the parallel diode). When the switch - is closed using the firing signal, it never blocks voltage, allowing - bidirectional flow of current. -

- -

- Plot the voltage drop in the result to confirm these results or play - with the parameter values to see what effects they have. -

- + +

+ To use the example, simulate the model as provided and + plot the source voltage as well as the switch voltage, + the plot should look like this: +

+ + +
+

\"IdealCBSwitchVerificationResults.png\" +

+
+ +

+ Notice how at the begining of the simulation, when the + switch is not closed, it blocks all the positive + voltage, preventing current from flowing. On the other + hand, the negative voltage is not blocked, so the + current can flow (through the anti-parallel diode). When + the switch is closed using the firing signal, it never + blocks voltage, allowing bidirectional flow of current. +

+ +

+ Plot the voltage drop in the resistor to confirm these + results or play with the parameter values to see what + effects they have.

")); end IdealCBSwitchVerification; diff --git a/PVSystems/Examples/Verification/MPPTControllerVerification.mo b/PVSystems/Examples/Verification/MPPTControllerVerification.mo index 7d7cf0d..0275818 100644 --- a/PVSystems/Examples/Verification/MPPTControllerVerification.mo +++ b/PVSystems/Examples/Verification/MPPTControllerVerification.mo @@ -12,7 +12,7 @@ model MPPTControllerVerification "MPPT controller verification" origin={0,-10}, extent={{-10,-10},{10,10}}, rotation=270))); - Control.MPPTController controller( + Control.MPPTController mpptController( sampleTime=1, pkThreshold=0.01, vrefStep=1, @@ -32,11 +32,11 @@ model MPPTControllerVerification "MPPT controller verification" startTime=50, duration=50) annotation (Placement(transformation(extent={{-80,-80},{-60,-60}}, rotation=0))); - Modelica.Blocks.Math.Add add annotation (Placement(transformation( + Modelica.Blocks.Math.Add vdcSetpoint annotation (Placement(transformation( origin={30,54}, extent={{-10,-10},{10,10}}, rotation=0))); - Modelica.Blocks.Sources.Ramp Perturbation( + Modelica.Blocks.Sources.Ramp perturbation( height=10, offset=0, duration=20, @@ -48,7 +48,7 @@ model MPPTControllerVerification "MPPT controller verification" annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); Modelica.Blocks.Sources.RealExpression isense(y=sink.i) annotation (Placement(transformation(extent={{-80,44},{-60,64}}))); - Modelica.Blocks.Sources.RealExpression isense1(y=26) + Modelica.Blocks.Sources.RealExpression vdcSetpoint1(y=26) annotation (Placement(transformation(extent={{60,-60},{40,-40}}))); Modelica.Electrical.Analog.Basic.Ground ground1 annotation (Placement( transformation(extent={{-30,-80},{-10,-60}}, rotation=0))); @@ -64,21 +64,21 @@ model MPPTControllerVerification "MPPT controller verification" equation connect(G.y, pVArray.G) annotation (Line(points={{-69,10},{-60,10},{-60,-7},{ -45.5,-7}}, color={0,0,127})); - connect(add.y, sink.v) annotation (Line(points={{41,54},{60,54},{60,-10},{7,-10}}, - color={0,0,127})); - connect(Perturbation.y, add.u2) annotation (Line(points={{-19,34},{0,34},{0, - 48},{18,48}}, color={0,0,127})); + connect(vdcSetpoint.y, sink.v) annotation (Line(points={{41,54},{60,54},{60,-10}, + {7,-10}}, color={0,0,127})); + connect(perturbation.y, vdcSetpoint.u2) annotation (Line(points={{-19,34},{0,34}, + {0,48},{18,48}}, color={0,0,127})); connect(pVArray.p, sink.p) annotation (Line(points={{-40,0},{0,0}}, color={0,0,255})); - connect(vsense.y, controller.u1) + connect(vsense.y, mpptController.u1) annotation (Line(points={{-59,80},{-59,80},{-42,80}}, color={0,0,127})); - connect(controller.y, add.u1) annotation (Line(points={{-19,74},{0,74},{0,60}, - {18,60}}, color={0,0,127})); - connect(isense.y, controller.u2) annotation (Line(points={{-59,54},{-50,54},{ - -50,68},{-42,68}}, color={0,0,127})); + connect(mpptController.y, vdcSetpoint.u1) annotation (Line(points={{-19,74},{0, + 74},{0,60},{18,60}}, color={0,0,127})); + connect(isense.y, mpptController.u2) annotation (Line(points={{-59,54},{-50,54}, + {-50,68},{-42,68}}, color={0,0,127})); connect(pVArray1.p, sink1.p) annotation (Line(points={{-40,-40},{-28,-40},{-14, -40},{0,-40}}, color={0,0,255})); - connect(sink1.v, isense1.y) + connect(sink1.v, vdcSetpoint1.y) annotation (Line(points={{7,-50},{39,-50}}, color={0,0,127})); connect(T.y, pVArray1.T) annotation (Line(points={{-59,-70},{-52,-70},{-52,-53}, {-45.5,-53}}, color={0,0,127})); @@ -95,27 +95,43 @@ equation connect(ground1.p, sink1.n) annotation (Line(points={{-20,-60},{-1.77636e-015,-60}}, color={0,0,255})); annotation (experiment(StopTime=180), Documentation(info=" -

- This examples places the MPPT controller closing the loop for a - voltage source connected to a PV array. The MPPT controller senses - the power coming out of the PV array and provides a setpoint for the - voltage source. This changes the operation point of the PV array - with the goal of maximizing its output power for any given solar - irradiation and junction temperature conditions. -

- -

- The model is designed to challenge the control by ramping solar - irradiation, temperature at different times and by injecting a - perturbation into the control loop. The MPPT controller successfully - deals with these changing conditions as shown in the following plot: -

- - -
-

\"MPPTControllerValidationResults.png\" +

+ This examples places an MPPT controller closing the loop + for a voltage source connected to a PV array. The MPPT + controller senses the power coming out of the PV array + and provides a setpoint for the voltage source. This + changes the operation point of the PV array with the + goal of maximizing its output power for any given solar + irradiation and junction temperature conditions.

-
+ +

+ The model is designed to challenge the control by + ramping solar irradiation, temperature at different + times and by injecting a perturbation into the control + loop: +

+ + +
+

\"MPPTControllerVerificationResultsA.png\" +

+
+ +

+ The MPPT controller successfully deals with these + changing conditions as shown in the following plots, + which compares the static PV array control with the MPPT + control: +

+ + +
+

\"MPPTControllerVerificationResultsB.png\"

+
")); end MPPTControllerVerification; diff --git a/PVSystems/Examples/Verification/PLLVerification.mo b/PVSystems/Examples/Verification/PLLVerification.mo index 1a08fb7..89b8d24 100644 --- a/PVSystems/Examples/Verification/PLLVerification.mo +++ b/PVSystems/Examples/Verification/PLLVerification.mo @@ -19,24 +19,25 @@ equation StopTime=0.1, Tolerance=1e-4), Documentation(info=" -

- This simple example provides a sinusoidal input to the PLL block and - applies the output provided by the PLL, the calculated phase of the - input sine, to drive a sine block so that the synchronization - capabilities of the PLL can be visualized. -

- -

- Run the model and plot the output of the sinusoidal source and the - output of the sine block to see how, after some short transient, the - PLL successfully follows the reference: -

- - -
-

\"PLLValidationResults.png\" +

+ This simple example provides a sinusoidal input to the + PLL block and applies the output provided by the PLL, + the calculated phase of the input sine, to drive a sine + block so that the synchronization capabilities of the + PLL can be visualized.

-
+ +

+ Run the model and plot the output of the sinusoidal + source and the output of the sine block to see how, + after some short transient, the PLL successfully follows + the reference: +

+ + +
+

\"PLLVerificationResults.png\"

+
")); end PLLVerification; diff --git a/PVSystems/Examples/Verification/PVArrayVerification.mo b/PVSystems/Examples/Verification/PVArrayVerification.mo index 8e37bf6..6efc97d 100644 --- a/PVSystems/Examples/Verification/PVArrayVerification.mo +++ b/PVSystems/Examples/Verification/PVArrayVerification.mo @@ -33,39 +33,40 @@ equation Diagram(graphics), Documentation(info="

- PVArrayValidation presents a ramp DC voltage source in parallel with - an instance of the PVArray model. The voltage ramp is configured to - sweep from -10 volts to 35 volts in 1 second. This provides the - enough voltage range to cover all of the PV array's working range - when initialized with default values. + A ramp DC voltage source is applied in parallel to an + instance of the PVArray model. The voltage ramp is + configured to sweep from -10 volts to 35 volts in 1 + second. This provides the enough voltage range to cover + all of the PV array's working range when initialized + with default values.

- +

- To use the example, simulate the model and start by displaying both - voltage and current of the ramp voltage source. A figure like the - following should be displayed: + To use the example, simulate the model and start by + displaying both voltage and current of the ramp voltage + source. A figure like the following should be displayed:

- - + +
-

\"PVArrayValidationResults.png\" +

\"PVArrayVerificationResults.png\"

- +

- Notice how the variation in the current delivered by the PV array - (sinked by the voltage source) reflects the familiar PV module - curve. + Notice how the variation in the current delivered by the + PV array (sinked by the voltage source) reflects the + familiar PV module curve.

- +

- Modify the values for the irradiance and temperature blocks and see - how these changes are reflected in a change in the PV curve, - accurately reflecting the effects of these variables in the PV - module performance. -

- "), + Modify the values for the irradiance and temperature + blocks and see how these changes are reflected in a + change in the PV curve, accurately reflecting the + effects of these variables in the PV module + performance.

+ "), experiment( StartTime=0, StopTime=1, diff --git a/PVSystems/Examples/Verification/ParkVerification.mo b/PVSystems/Examples/Verification/ParkVerification.mo index 49de886..8c19362 100644 --- a/PVSystems/Examples/Verification/ParkVerification.mo +++ b/PVSystems/Examples/Verification/ParkVerification.mo @@ -1,5 +1,5 @@ within PVSystems.Examples.Verification; -model ParkVerification "Park transformations verification" +model ParkVerification "Park transforms verification" extends Modelica.Icons.Example; Control.Park park annotation (Placement(transformation(extent={{0,20},{20,40}}, rotation=0))); @@ -33,22 +33,25 @@ equation Diagram(graphics), experiment(StopTime=0.1), Documentation(info=" -

- This example provides some easy input for the Park transform blocks - to check that calculations are being done as expected. Run the - simulation and you should get something like the following figure: -

- -
-

\"ParkValidationResults.png\" +

+ This example provides some easy input for the Park + transform blocks to check that calculations are being + done as expected. Run the simulation and you should get + something like the following figure:

-
- -

- As expected, d is equal to the peak amplitude of the input - signal and q sets at zero. Feeding the signals back to the - inverse transformation block recreates the original signals. -

+ + +
+

\"ParkVerificationResults.png\" +

+
+ +

+ As expected, d is equal to the peak amplitude + of the input signal and q sets at zero. Feeding + the signals back to the inverse transformation block + recreates the original signals (which overlap them on + the plot).

")); end ParkVerification; diff --git a/PVSystems/Examples/Verification/SimpleBatteryVerification.mo b/PVSystems/Examples/Verification/SimpleBatteryVerification.mo index 789ee97..12e365a 100644 --- a/PVSystems/Examples/Verification/SimpleBatteryVerification.mo +++ b/PVSystems/Examples/Verification/SimpleBatteryVerification.mo @@ -5,30 +5,68 @@ model SimpleBatteryVerification "SimpleBattery verification" transformation( extent={{-10,-10},{10,10}}, rotation=90, - origin={10,10}))); - Modelica.Blocks.Sources.RealExpression CCControl(y=4.19 - B.v) - annotation (Placement(transformation(extent={{-80,0},{-50,20}}))); + origin={60,10}))); Modelica.Electrical.Analog.Basic.Ground ground - annotation (Placement(transformation(extent={{0,-40},{20,-20}}))); - Electrical.SimpleBattery B(Q=1, DoDini=0.999) annotation (Placement( + annotation (Placement(transformation(extent={{50,-40},{70,-20}}))); + Electrical.SimpleBattery B(Q=1, DoDini=0.5) annotation (Placement( transformation( extent={{-10,-10},{10,10}}, rotation=270, - origin={50,10}))); - Modelica.Blocks.Continuous.LimIntegrator limIntegrator(outMax=2) - annotation (Placement(transformation(extent={{-30,0},{-10,20}}))); + origin={90,10}))); + Modelica.Blocks.Nonlinear.SlewRateLimiter slewRateLimiter(Rising=4) + annotation (Placement(transformation(extent={{20,0},{40,20}}))); + Modelica.Blocks.Logical.Hysteresis hysteresis(uHigh=4.19, uLow=0.1) + annotation (Placement(transformation(extent={{-54,0},{-34,20}}))); + Modelica.Blocks.Logical.Switch switch1 + annotation (Placement(transformation(extent={{-14,0},{6,20}}))); + Modelica.Blocks.Sources.RealExpression idis(y=-2) + annotation (Placement(transformation(extent={{-54,30},{-34,50}}))); + Modelica.Blocks.Sources.RealExpression ich(y=2) + annotation (Placement(transformation(extent={{-54,-30},{-34,-10}}))); + Modelica.Blocks.Sources.RealExpression vsense(y=B.v) + annotation (Placement(transformation(extent={{-90,0},{-70,20}}))); equation connect(ground.p, CC.p) - annotation (Line(points={{10,-20},{10,-20},{10,0}}, color={0,0,255})); - connect(CC.p, B.n) annotation (Line(points={{10,0},{50,0}}, color={0,0,255})); + annotation (Line(points={{60,-20},{60,-20},{60,0}}, color={0,0,255})); + connect(CC.p, B.n) annotation (Line(points={{60,0},{90,0}}, color={0,0,255})); connect(CC.n, B.p) - annotation (Line(points={{10,20},{50,20}}, color={0,0,255})); - connect(limIntegrator.y, CC.i) - annotation (Line(points={{-9,10},{3,10}}, color={0,0,127})); - connect(CCControl.y, limIntegrator.u) annotation (Line(points={{-48.5,10},{-48.5, - 10},{-32,10}}, color={0,0,127})); + annotation (Line(points={{60,20},{90,20}}, color={0,0,255})); + connect(slewRateLimiter.y, CC.i) + annotation (Line(points={{41,10},{53,10}}, color={0,0,127})); + connect(switch1.y, slewRateLimiter.u) + annotation (Line(points={{7,10},{18,10}}, color={0,0,127})); + connect(hysteresis.y, switch1.u2) + annotation (Line(points={{-33,10},{-24,10},{-16,10}}, color={255,0,255})); + connect(idis.y, switch1.u1) annotation (Line(points={{-33,40},{-24,40},{-24,18}, + {-16,18}}, color={0,0,127})); + connect(ich.y, switch1.u3) annotation (Line(points={{-33,-20},{-24,-20},{-24,2}, + {-16,2}}, color={0,0,127})); + connect(vsense.y, hysteresis.u) + annotation (Line(points={{-69,10},{-56,10}}, color={0,0,127})); annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( coordinateSystem(preserveAspectRatio=false)), - experiment(StopTime=15, Interval=0.001), - __Dymola_experimentSetupOutput); + experiment(StopTime=5400, __Dymola_NumberOfIntervals=10000), + __Dymola_experimentSetupOutput, + Documentation(info=" +

+ This example provides a charge/discharge control logic + to a current source in parallel with the battery + model. The control is configured to put the battery + through charge/discharge cycles for as long as the + simulation runs: +

+ + +
+

\"SimpleBatteryVerificationResults.png\" +

+
+ +

+ Notice how the charge and discharge cycles take about 30 + minutes, which is what was to be expected by + charging/discharging a 1A.h battery with a 2A + current.

+ ")); end SimpleBatteryVerification; diff --git a/PVSystems/Examples/Verification/SwitchingCPMVerification.mo b/PVSystems/Examples/Verification/SwitchingCPMVerification.mo index 0111060..f413d19 100644 --- a/PVSystems/Examples/Verification/SwitchingCPMVerification.mo +++ b/PVSystems/Examples/Verification/SwitchingCPMVerification.mo @@ -33,26 +33,21 @@ equation annotation (Line(points={{-39,0},{-22,0}}, color={0,0,127})); annotation (experiment(StopTime=0.001, __Dymola_NumberOfIntervals=5000), Documentation(info=" -

- SignalPWMValidation presents a very simple model aimed at validating - the behaviour of the SignalPWM block. It provides a changing duty - cycle with the use of two step blocks. When running the simulation - with the provided values, plotting the fire output generates the - following graph: -

- - -
-

\"SignalPWMValidationResults.png\" -

-
- -

- Through inspection of the plot, it can be seen how the signal - constitutes a PWM signal with a duty cycle changing in steps through - the values 0.2, 0.5 and 0.8. Zoom into the signal to confirm this - fact as well as the value of the period, set at 10 milliseconds. -

- ")); +

+ The switching CPM block requires the vs input, + corresponding to the voltage output of the current + sensor. In order to simplify things, a switch with some + constant sources and an integrator are used to emulate + the behaviour of an inductor. This setup creates the + conditions to exercise the CPM block, as can be seen in + the following figure: +

+ + +
+

\"SwitchingCPMVerificationresults.Png\"

+
+ >")); end SwitchingCPMVerification; diff --git a/PVSystems/Examples/Verification/SwitchingPWMVerification.mo b/PVSystems/Examples/Verification/SwitchingPWMVerification.mo index 3f7ad93..2fb9700 100644 --- a/PVSystems/Examples/Verification/SwitchingPWMVerification.mo +++ b/PVSystems/Examples/Verification/SwitchingPWMVerification.mo @@ -26,26 +26,25 @@ equation StopTime=1, Tolerance=1e-4), Documentation(info=" -

- SignalPWMValidation presents a very simple model aimed at validating - the behaviour of the SignalPWM block. It provides a changing duty - cycle with the use of two step blocks. When running the simulation - with the provided values, plotting the fire output generates the - following graph: -

- - -
-

\"SignalPWMValidationResults.png\" +

+ This model provides a changing duty cycle with the use + of two step blocks. When running the simulation with the + provided values, plotting the fire output generates the + following graph:

-
- -

- Through inspection of the plot, it can be seen how the signal - constitutes a PWM signal with a duty cycle changing in steps through - the values 0.2, 0.5 and 0.8. Zoom into the signal to confirm this - fact as well as the value of the period, set at 10 milliseconds. -

+ + +
+

\"SwitchingPWMVerificationResults.png\" +

+
+ +

+ Through inspection of the plot, it can be seen how the + signal constitutes a PWM signal with a duty cycle + changing in steps through the values 0.2, 0.5 and + 0.8. Zoom into the signal to confirm this fact as well + as the value of the period, set at 10 milliseconds.

")); end SwitchingPWMVerification; diff --git a/PVSystems/Resources/Images/IdealCBSwitchValidationResults.png b/PVSystems/Resources/Images/IdealCBSwitchVerificationResults.png similarity index 100% rename from PVSystems/Resources/Images/IdealCBSwitchValidationResults.png rename to PVSystems/Resources/Images/IdealCBSwitchVerificationResults.png diff --git a/PVSystems/Resources/Images/MPPTControllerValidationResults.png b/PVSystems/Resources/Images/MPPTControllerValidationResults.png deleted file mode 100644 index 48901f5664855b7984fbc15ac6352615670c6e5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3857 zcma)9dpuNY+g?bv4m3HBQbuSK8PaTn;cbsZ4oL_lqA6q?hhZ>EJHt4HoDE{<6iI0& zr$OV8b0TNs7&$gW4i)BIy!+eVxA*&g-|zcp{qEmd&vW0;@42u0x~>&|$wdF)KIlFG z01g^lKwky`t~D_3{)roWZf52V0)Rlj0s0?T@ac;qrPv8W$wqcxX2;WHVUnVX-W_RU zg+ZT7=e#Q}=qo-Q+H3fs>vGo~+FdRydo%md*1+FNJtG|qZr)w_&M_~0>&WAdiI->C zYbChyF+n}pmG5^xD}FM?&-=lV!YHOQW@mR|J)>w4_7=EXtr)8kxh7b)Rszu1(zN<-}UF7k1K{8Q~o-5Tcy;C_- zUtFv$AtKzm2~)4Hb}#C)>&iy@t5ebRO2(AGS}~vPLRhaa8}e@UOtnVrz}1M=fa|{e z`X7JJMJ6OGh?r9hjS?aXOk{Hn8>Yl-5yu)TYnp6hGghUrNFkzHYH?y%SGgJ+F+SYx z;;dd&`p*7V1?@RMFgHF88Kp?5Rc6CiegO>Od<2D2Hi2YH<36cB&@KHD2CE6)YN?J7 z#{-whBtGCZ=|2UyxU02qUk-M&DyR|{ub%uzJx_iLzC6OhbyM}=edkK~@odq?Onmjp zb&KN@Ts;;!vkwsI7?~=En6u6MUBWM@xY5EGYk831O~Wx(-|=K>d~fV zv>MFLri7ZI2$FVyTa=`joHNzV8yijja5U-V{u{ice$yc9z&)@DW$l?4MP{thN89mA zhmD5Z+gUhff$X-RoQaz-3#`M|jp8d+Z3n)47+2uU zkVM*1Ek8YUMQ5l7f6mFtk*9r`HB`}Kb@1_qQMa7i3)QU-)|CuL<`IZsR$${WOHnC< zY}(#@!4Crhi%CaG9K%#quGb&~u9Qy6Y zQxn&ta#!d+dg$R#gfnD!oz+`x>K$!AJ*e@3lAq^WL}~|N!%8NZN=7;6J+jCIvR+oG z5kFwjLdY(d=+b)|RG9ZC6W8^d)qx8kfpE}D#wlK){o@8I;&L&m5F2(gKr z;2Nvq)*q(To|FQ5U=v)rO0fS5m{{IR0*aG^-0vj7E7;SRe4{2f;regEXsr;h&Gk_t zaeLE0Fz{66qfkSUc(Lif?EN#zUjl{W6QRySNRpM3PgudjNKv4+b69I4bhh=4$aB<^ zX%+Lm2*j^{MJ_m7I)@ivnImHGgff1sHzK8(-=k@QC;AB{oMzNnr!oKtE_zpvUtfQ- zihK#S%T|y|B5l1NTncQy1CH)hha_q5uwL8lQ6En53E=p#MELZyDF~A&z0uLgg*z*H z(`m6sN8{o}H49JAM|_xH{XVU(kEAqxHsJhzc5HM*d&yJ_>uY5;|iGxg-($28dsk(uvF zjG@7_=e37@%qO)Y-5+EFo^r z^ZuS$Aoc$3wv=aF9{c}BsaCw*Y{08YLS6sFDc}}q!?a~<*!h=7Gp|a3<+tdAf2ZH7 z5rwzqXMo2yg^8D9TiCAViI-mZ@-L2D2 zc(RoDkv8lH?NDhS$NE{N{Zy%iDQQCItj+*zm+Eeon`T;ywPx`XiCdJNXnS0s=xMu2K&!bEEvwi;xh(vsoNNs{o z#u)={?vOiC`0=?opcdUu*|{$DKMz3KAT)qTs@bI>i`zXag}fmrEFh=T75M@FUAh`P z&whQFKH0KADS|vLc#Od*z$4+S5Bfbo7#+x(LiAe;kc<;f3D{1ln%!^Yvpu( zkMZRDm9lwxl|D{(;tf0+FNzpe%WJdl?&+6cP2jNCEENvM7Bu$6HeYY1BZH>8^T@6j z7AsgjygnD@FDskg@r)G&sEDK2uu*&ppvS5Ftw!{ZIuYopLF|cA&7DN{Fd|i;fuzWyls8(oF)_X&V}o_H*~ll(P^)27}HBt zAt~Mgzib^sxT0G>l+#|6c9-Qh)ElY&U-sMMQP@2@mDrYh{Mo$&md#3# zSai2@t3*Mnp1_R;+mb$6EmzT4EpoV~+5nBcc*Su}c?Q~gnZn7LyK=MeiV;o$ZlNI8 z z)zBG`6`OgZ*169#C{jo_oP?KE&7+nW%$#22_PFui_yvbz-cDzvMMDx`S*=6aZ_DEV z7Gf8=u1TbT3WH22)XirXT;3;ZxU;UYCxE#*C z^`(jAMKg-w?}iOm@(%CP9eTH)u?iyblP9T>q%R$otqj_j(WWuN#pSAFY+Z}b#e9B1 zxUl6$@w~;{X*WFua4l$?|CS;;fi-KnLvI{<#AaOyv_e*BBrY7={MeDUt7aC{830i3 zD7>q3e+bfuMZLH2w@%RMYDX!z8qARPbo;tU+#mEKYib40H!T$eaZXg~eT!*7s;AZW zm~$$b9!cxkOOZKjbVD>~G#P!mr^rnhTscM=Be{Cr#5$gKl2I?eELy0$wlO&fW{K^!|MsIehBR%zr(SkqUMk O01Wg@(9h4=-~T7^&Sm-l diff --git a/PVSystems/Resources/Images/MPPTControllerVerificationResultsA.png b/PVSystems/Resources/Images/MPPTControllerVerificationResultsA.png new file mode 100644 index 0000000000000000000000000000000000000000..a87e1fdb9761b18831e45ddd73cb6a1f99d44e1f GIT binary patch literal 13404 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 literal 0 HcmV?d00001 diff --git a/PVSystems/Resources/Images/MPPTControllerVerificationResultsB.png b/PVSystems/Resources/Images/MPPTControllerVerificationResultsB.png new file mode 100644 index 0000000000000000000000000000000000000000..6f106562b87a64920982e5f1c5898ff6569f01cf GIT binary patch literal 14637 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 b$O&tqUzLggkL5OalSoNH9a=1B7Vv)n04xay literal 0 HcmV?d00001 diff --git a/PVSystems/Resources/Images/SignalPWMValidationResults.png b/PVSystems/Resources/Images/SignalPWMValidationResults.png deleted file mode 100644 index 8d5f7c2dacea7a067865fd9031ef85aed55d0140..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3245 zcmcgvXH-+!7CxaWEg~o&QU)27Za@MKBA@|8MX*rCNRg;CDbij-2%ts;3osagAdD#D z(@dlW2nmd6K)NlI0KuV&n$QV>K;CuMnz!Cs@7K(a`E%BH@49E-{q6JZyT6<6e%x76 zZkrqcK+)we>LdUXFbKD8kbu_8y;2teP`KiPayXqp<_%G@e?P9)GW*_*_gG3Q*Jwjv zY*X=z(Hl~g5#zOuu)HX5Rhd8yL|v+C>KJ-O8FpO|9QR8=G_xo_Uv8>&-y6(aySzNh z*9d^zb-`!o1@J>MfPg*^z-Pz54w}4FOE58~MeQ*eC*FryI$zVzO3#iZ=^IXJEpg-e zlB;a05G+(l@@_cc$oVF(gta?&n1VZLQq6r9bMO4p6^s%O}4@I=!XPDIdXiI-Yqs*O?ij%8U#pJ)FXAq zv3en&93(W~qD78EOw|XSjbEvuD@L3-K%zqKL)@u(;5x{ zX_)Fh%@E3f!*kAOwCO z$KAHGbB6S&zbKw)js!s56f6Vj*P>-vXs%e{WhxCLoav5ov(Drt?5|<_7FeNOU?6g| zr9{4Orh)gkILza4E&jZc-3J|@OIx`?oV14bB~yF&g)r>c*fG-93~6b1!hqKk!iC)< z*Rk9dOcREy!{WGI!e=2aD@XvV!E^F*L7Lib#PaI$d0${po2=a`1rnsp0a(zJ1omeC z5Qr{)iPcOmiHB!>hO;jeTx(QY(%$>93!el zMvp~z)lC`E!=F&UEonJ3Lt&zeYjyp^;|{wwEcqfh+$c`4r?&T*>~t+qvQ ztL6jC6RwBwV!{-0Yk95g0Zo3r)&tqY>fKLDF*16LIz>lRcIz=4q*8OjfwMZZ zvdyA2D;XF;#ni%HKa+AxphJ9e1^|HoA_)U`?Em_h`+LLj&s`A~y6Kq+*8SbWBPw9z zfFH(wb9F^PMEHRYUs?K!yelAJqwd3A8_GkI?^S4gT9}7luN0`&Bx>9>JJrZfzmX7Y zcXp!J5(fC!u`fX}sac`S5=lzD>9KWh$RD>Sh;-827yQakMk`5qt|!H`c#j;!#F#(5 zvfGtg!-?N6#7j3cHfD&7C&>lO3eM^({f1vJ&&LU$04vCH9Gm3J7v`-Wq}}{}ei1fv zu0Es*#+)N|o;ObKmZ4q${GGpM2zWTSlt ziZF4@3o>Ve%Tc{=b6Ts0QK&~&w8m`?HHP{NkGz8&MtkvI-5j)>uVAyXa!|+Yi(MBa z0P_n|V-t(bDuS;q#Ck5Qnio7;pB{Q9b~#^K$m<*#vXNvDq#>iK*YmCd^qD<7OZGh7!JyKPGn#fF??$_WypqY~y9fVrI%w*W9Q$jf@kg zT4*MssdIJemIWohUpZq*J||hEnZgdYZ{M~_+2vu5d}7AXh{c7bYtx#wJ*PD;kjm8= z3Zg{eM(h^!x}Dfat%T(8g=tLeqNW5cm`_dQ(_ki{_HlOcyvTKvxHLC1jKsV=f;$yV zKIcRgmkYxl%bAIF#JL%7+h0vf!wovK=0l6`yFTKW+NH0>#FRY<6~9Y!>J0WV-BL19 z6*S3EF`@M<9*C0hTW6-kKuLcz-zioUao29*gL-80cUhi0j)LxwTqqHV3Dr)HIy zaq3mSKADE~7H@PWV#1N7HmNc`cg=Em z=SloH%kSSwKaOSUo12YqQ*S?-8#6Qfz*;ioR;SRlylts_(R8l|YdqN4$#s69)d;s7 zb4gLP(j{Lhg!Mt@(oba`OEojE!;5MAV4`mxwrVvgo!2%&UXCt6epHjN8u(5D>gvLd zo2R%)+%HefO^t&PA?$mN;g2QlO(`(QsPzh7rTKdg>F;lpdD%6Io}SOPUxbJtP4u#l zaSi{apYWCvm$sA_9&vSHg41G?gLU<|f|-R!z@?i-<-x;muPHY9(%%q>KTos@E$_n9 zzFY=N@3t+A4wcQJi>v74+ytxENyx;Y-EbxwK;(u0?>(`sRwWfxH~gX)`V9dtj>l2I I9`sNB4>Q-eY5)KL diff --git a/PVSystems/Resources/Images/SimpleBatteryVerificationResults.png b/PVSystems/Resources/Images/SimpleBatteryVerificationResults.png new file mode 100644 index 0000000000000000000000000000000000000000..41a700c1052b17b431de64c2cc5ec78f727b4cde GIT binary patch literal 6342 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 af{s5@FOIZ0$ASM504z*xOe&1M;{F3q)`AuQ literal 0 HcmV?d00001 diff --git a/PVSystems/Resources/Images/SwitchingCPMVerificationResults.png b/PVSystems/Resources/Images/SwitchingCPMVerificationResults.png new file mode 100644 index 0000000000000000000000000000000000000000..58909865de1d8ebc66490b219af7d5db0efe3cb8 GIT binary patch literal 11185 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 literal 0 HcmV?d00001 diff --git a/PVSystems/Resources/Images/SwitchingPWMVerificationResults.png b/PVSystems/Resources/Images/SwitchingPWMVerificationResults.png new file mode 100644 index 0000000000000000000000000000000000000000..c3825a864cf293a20c322af1378cd98b03815eea GIT binary patch literal 6278 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 T^mFjV0(8*X&FSGcC%^koBQs&p literal 0 HcmV?d00001