diff --git a/docs/_static/images/piGainSweep.png b/docs/_static/images/piGainSweep.png index 4412a9462..5a8799328 100644 Binary files a/docs/_static/images/piGainSweep.png and b/docs/_static/images/piGainSweep.png differ diff --git a/docs/_static/images/piPTOSimulink.png b/docs/_static/images/piPTOSimulink.png new file mode 100644 index 000000000..ebe0fe78a Binary files /dev/null and b/docs/_static/images/piPTOSimulink.png differ diff --git a/docs/_static/images/reactiveWithPTOCC.png b/docs/_static/images/reactiveWithPTOCC.png new file mode 100644 index 000000000..05a4fb3c2 Binary files /dev/null and b/docs/_static/images/reactiveWithPTOCC.png differ diff --git a/docs/_static/images/reactiveWithPTOCCPower.png b/docs/_static/images/reactiveWithPTOCCPower.png new file mode 100644 index 000000000..7131b9681 Binary files /dev/null and b/docs/_static/images/reactiveWithPTOCCPower.png differ diff --git a/docs/_static/images/reactiveWithPTOOpt.png b/docs/_static/images/reactiveWithPTOOpt.png new file mode 100644 index 000000000..8d8e6c8c8 Binary files /dev/null and b/docs/_static/images/reactiveWithPTOOpt.png differ diff --git a/docs/_static/images/reactiveWithPTOOptPower.png b/docs/_static/images/reactiveWithPTOOptPower.png new file mode 100644 index 000000000..f07d4e2ff Binary files /dev/null and b/docs/_static/images/reactiveWithPTOOptPower.png differ diff --git a/docs/_static/images/reactiveWithPTOSweep.png b/docs/_static/images/reactiveWithPTOSweep.png new file mode 100644 index 000000000..c53c5a229 Binary files /dev/null and b/docs/_static/images/reactiveWithPTOSweep.png differ diff --git a/docs/refs/WEC-Sim_Adv_Features.bib b/docs/refs/WEC-Sim_Adv_Features.bib index 8df0ff70d..7dd93f77b 100644 --- a/docs/refs/WEC-Sim_Adv_Features.bib +++ b/docs/refs/WEC-Sim_Adv_Features.bib @@ -58,4 +58,16 @@ @inproceedings{so2017development pages={1--5}, year={2017}, organization={IEEE} -} \ No newline at end of file +} + +@misc{allied, + title={Megaflux™ Frameless Direct Drive Torque Motors}, + author={}, + journal={}, + volume={28}, + number={2}, + pages={77--91}, + year={2006}, + publisher={Allied Motion}, + url={https://www.alliedmotion.com/brushless-motors/brushless-direct-drive-torque-motors/megaflux-frameless-direct-drive-torque-motors/} +} diff --git a/docs/user/advanced_features.rst b/docs/user/advanced_features.rst index 93c2002b5..9d1cbc234 100644 --- a/docs/user/advanced_features.rst +++ b/docs/user/advanced_features.rst @@ -903,7 +903,8 @@ own controls. +--------------------------------+-------------------------------------------+ | Model Predictive Control | Sphere with model predictive control | +--------------------------------+-------------------------------------------+ - + | Reactive with PTO | Sphere with reactive control and DD PTO | + +--------------------------------+-------------------------------------------+ Examples: Sphere Float with Various Controllers @@ -1243,6 +1244,69 @@ computation time and complex setup. | Avg Mechanical Power (kW) | N/A | 300 | 241 | +----------------------------+--------------+-------------+------------+ +.. _control-reactive-with-PTO: + +Reactive Control with Direct Drive Power Take-Off +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The previous controllers only considered the mechanical power output. Although maximization +of mechanical power allows for the maximum energy transfer from waves to body, it often does +not lead to maximum electrical power. The previous controller examples demonstrate the +controller types and energy transfer from waves to body, but the important consideration of +electrical power requires a PTO model. This example applies a reactive controller to the +sphere body with a simplified direct drive PTO model to maximize electrical power. Within +the Simulink subsystem for determining the PTO force, the controller prescribes the ideal or +desired force which is fed into the direct drive PTO. The current in the generator is then +used to control the applied force. + +.. figure:: /_static/images/piPTOSimulink.png + :width: 500pt + :align: center + +The PTO parameters used for this example are defined in the ``wecSimInputFile.m`` and correspond to +the Allied Motion Megaflux Frameless Brushless Torque Motors–MF0310 :cite:`allied`. The +results in terms of capture width (ratio of absorbed power (W) to wave power (W/m)) and resultant power for the +applied gains from Section :ref:`control-reactive` are shown in the figures +below for a regular wave with a period of 9.6664 s and a height of 2.5 m. The "Controller (Ideal)" +power is the ideal power absorbed according to the applied controller gains. +The "Mechanical (Drivetrain)" power is the actual mechanical power absorbed by +the PTO system including the inertial, damping, and shaft torque power. Lastly, the +"Electrical (Generator)" power is the electrical power absorbed by the +generator including the product of induced current and voltage (based on shaft torque and velocity, +respectively) and the resultant generator losses (product of current squared and winding resistance). +Mechanical power maximization requires significant net input electrical power +(signified by red bar) which leads to an extremely negative capture width. Thus, +instead of harvesting electrical power, power would need to be taken from the grid or energy +storage component to achieve mechanical power maximization. + +.. figure:: /_static/images/reactiveWithPTOCCPower.png + :width: 300pt + :align: center + +.. figure:: /_static/images/reactiveWithPTOCC.png + :width: 300pt + :align: center + +On the other hand, by testing different controller gains in the same wave conditions +(regular wave: period = 9.6664 s, height = 2.5 m), the gains which optimize for +maximum electrical power can be found as shown below. Increasing the proportional gain +and decreasing the integral gain magnitude leads to a maximum power of about 84 kW and capture width of about +1.5 m. The resultant motion is almost ten times smaller than for the mechanical power +maximization which leads to a lower current and much lower generator power losses +(product of current squared and winding resistance). + +.. figure:: /_static/images/reactiveWithPTOSweep.png + :width: 300pt + :align: center + +.. figure:: /_static/images/reactiveWithPTOOptPower.png + :width: 300pt + :align: center + +.. figure:: /_static/images/reactiveWithPTOOpt.png + :width: 300pt + :align: center + .. _user-advanced-features-cable: @@ -1257,7 +1321,7 @@ class in the ``wecSimInputFile.m`` along with the base and follower connections cable(i) = cableClass('cableName','baseConnection','followerConnection'); where ``baseConnection`` is a PTO or constraint block that defines the cable connection on the base side, and ``followerConnection`` -is a PTO or constraint block that defineds the connection on the follower side. +is a PTO or constraint block that defineds the connection on the follower side. It is necessary to define, at a minimum: ::