From 11430ae7e028664250990380b4a7fa2a14ca4155 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Wed, 2 Oct 2019 00:39:32 -0600 Subject: [PATCH 01/10] Include test cases I/O --- Tune_Cases/Cp_Ct_Cq.txt | 105 + Tune_Cases/DISCON.IN | 103 + Tune_Cases/DISCON_NREL15MW.IN | 103 + Tune_Cases/NREL15MW_turbine.p | Bin 0 -> 139770 bytes Tune_Cases/fort.85 | 4921 +++++++++++++++++++++++++++++++++ Tune_Cases/tune_NREL15MW.py | 92 + 6 files changed, 5324 insertions(+) create mode 100644 Tune_Cases/Cp_Ct_Cq.txt create mode 100644 Tune_Cases/DISCON.IN create mode 100644 Tune_Cases/DISCON_NREL15MW.IN create mode 100644 Tune_Cases/NREL15MW_turbine.p create mode 100644 Tune_Cases/fort.85 create mode 100644 Tune_Cases/tune_NREL15MW.py diff --git a/Tune_Cases/Cp_Ct_Cq.txt b/Tune_Cases/Cp_Ct_Cq.txt new file mode 100644 index 000000000..01972f4f2 --- /dev/null +++ b/Tune_Cases/Cp_Ct_Cq.txt @@ -0,0 +1,105 @@ +# Pitch angle vector - x axis (matrix columns) (deg) +-1.00 -0.50 0.00 0.50 1.00 1.50 2.00 2.50 3.00 3.50 4.00 4.50 5.00 5.50 6.00 6.50 7.00 7.50 8.00 8.50 9.00 9.50 10.00 10.50 11.00 11.50 12.00 12.50 13.00 13.50 14.00 14.50 15.00 15.50 16.00 16.50 17.00 17.50 18.00 18.50 19.00 19.50 20.00 20.50 21.00 21.50 22.00 22.50 23.00 23.50 24.00 24.50 +# TSR vector - y axis (matrix rows) (-) +0.50 1.00 1.50 2.00 2.50 3.00 3.50 4.00 4.50 5.00 5.50 6.00 6.50 7.00 7.50 8.00 8.50 9.00 9.50 10.00 10.50 11.00 11.50 12.00 12.50 13.00 13.50 14.00 14.50 +# Wind speed vector - z axis (m/s) +3.00 + +# Power coefficient + +0.00192 0.00206 0.00220 0.00234 0.00248 0.00262 0.00276 0.00290 0.00304 0.00318 0.00331 0.00345 0.00358 0.00372 0.00385 0.00398 0.00411 0.00424 0.00437 0.00449 0.00462 0.00474 0.00486 0.00498 0.00510 0.00522 0.00534 0.00545 0.00556 0.00567 0.00578 0.00589 0.00600 0.00610 0.00621 0.00631 0.00641 0.00650 0.00660 0.00670 0.00679 0.00688 0.00697 0.00706 0.00714 0.00723 0.00731 0.00740 0.00748 0.00756 0.00764 0.00772 +0.00415 0.00448 0.00480 0.00512 0.00544 0.00576 0.00607 0.00638 0.00669 0.00700 0.00731 0.00761 0.00791 0.00821 0.00851 0.00880 0.00910 0.00939 0.00969 0.00998 0.01027 0.01057 0.01087 0.01117 0.01147 0.01178 0.01209 0.01240 0.01273 0.01306 0.01340 0.01374 0.01410 0.01447 0.01485 0.01523 0.01564 0.01605 0.01648 0.01692 0.01737 0.01784 0.01831 0.01880 0.01930 0.01981 0.02033 0.02086 0.02139 0.02193 0.02247 0.02301 +0.00743 0.00811 0.00880 0.00950 0.01021 0.01094 0.01167 0.01243 0.01319 0.01398 0.01479 0.01561 0.01646 0.01733 0.01823 0.01915 0.02009 0.02106 0.02205 0.02306 0.02410 0.02516 0.02624 0.02733 0.02844 0.02956 0.03069 0.03183 0.03297 0.03410 0.03523 0.03635 0.03746 0.03855 0.03962 0.04067 0.04169 0.04268 0.04363 0.04454 0.04541 0.04623 0.04700 0.04772 0.04838 0.04898 0.04953 0.05001 0.05043 0.05079 0.05107 0.05130 +0.01726 0.01902 0.02082 0.02267 0.02457 0.02650 0.02846 0.03047 0.03250 0.03455 0.03662 0.03870 0.04079 0.04288 0.04496 0.04702 0.04907 0.05109 0.05307 0.05501 0.05690 0.05875 0.06053 0.06225 0.06390 0.06547 0.06696 0.06837 0.06969 0.07091 0.07203 0.07305 0.07396 0.07476 0.07545 0.07602 0.07648 0.07683 0.07706 0.07718 0.07718 0.07707 0.07684 0.07649 0.07604 0.07548 0.07483 0.07407 0.07322 0.07228 0.07125 0.07013 +0.04260 0.04607 0.04954 0.05300 0.05644 0.05983 0.06318 0.06648 0.06970 0.07285 0.07592 0.07889 0.08177 0.08453 0.08718 0.08971 0.09211 0.09438 0.09650 0.09846 0.10026 0.10189 0.10335 0.10463 0.10572 0.10664 0.10737 0.10791 0.10827 0.10845 0.10843 0.10824 0.10787 0.10733 0.10663 0.10577 0.10476 0.10360 0.10230 0.10084 0.09924 0.09747 0.09554 0.09344 0.09116 0.08869 0.08603 0.08318 0.08016 0.07696 0.07359 0.07007 +0.08322 0.08806 0.09277 0.09734 0.10177 0.10604 0.11014 0.11407 0.11782 0.12137 0.12471 0.12784 0.13073 0.13338 0.13578 0.13791 0.13977 0.14135 0.14266 0.14370 0.14446 0.14494 0.14516 0.14511 0.14480 0.14424 0.14344 0.14240 0.14113 0.13963 0.13789 0.13592 0.13370 0.13123 0.12848 0.12544 0.12212 0.11852 0.11465 0.11051 0.10613 0.10150 0.09665 0.09158 0.08630 0.08081 0.07513 0.06927 0.06325 0.05711 0.05084 0.04446 +0.13323 0.13894 0.14440 0.14959 0.15452 0.15915 0.16347 0.16747 0.17112 0.17440 0.17730 0.17983 0.18198 0.18375 0.18515 0.18617 0.18681 0.18707 0.18694 0.18643 0.18556 0.18434 0.18278 0.18086 0.17859 0.17593 0.17286 0.16937 0.16548 0.16119 0.15652 0.15147 0.14607 0.14032 0.13423 0.12781 0.12107 0.11404 0.10676 0.09924 0.09151 0.08359 0.07550 0.06725 0.05887 0.05036 0.04174 0.03302 0.02420 0.01530 0.00631 -0.00274 +0.18876 0.19502 0.20088 0.20631 0.21128 0.21579 0.21983 0.22338 0.22644 0.22900 0.23103 0.23251 0.23344 0.23380 0.23362 0.23290 0.23164 0.22982 0.22744 0.22447 0.22092 0.21684 0.21220 0.20704 0.20137 0.19521 0.18857 0.18145 0.17387 0.16589 0.15754 0.14884 0.13982 0.13050 0.12089 0.11103 0.10093 0.09061 0.08009 0.06940 0.05853 0.04751 0.03636 0.02507 0.01367 0.00214 -0.00950 -0.02125 -0.03309 -0.04501 -0.05698 -0.06898 +0.24795 0.25464 0.26077 0.26629 0.27116 0.27536 0.27882 0.28152 0.28341 0.28446 0.28465 0.28396 0.28238 0.27996 0.27676 0.27280 0.26812 0.26278 0.25677 0.25011 0.24281 0.23493 0.22652 0.21760 0.20822 0.19839 0.18814 0.17747 0.16642 0.15499 0.14320 0.13107 0.11862 0.10589 0.09289 0.07964 0.06618 0.05251 0.03866 0.02465 0.01046 -0.00388 -0.01839 -0.03308 -0.04792 -0.06292 -0.07803 -0.09322 -0.10843 -0.12361 -0.13873 -0.15373 +0.31164 0.31867 0.32473 0.32970 0.33348 0.33597 0.33710 0.33692 0.33551 0.33295 0.32937 0.32487 0.31950 0.31329 0.30631 0.29862 0.29027 0.28131 0.27176 0.26165 0.25099 0.23980 0.22809 0.21586 0.20312 0.18989 0.17617 0.16200 0.14739 0.13237 0.11697 0.10124 0.08519 0.06886 0.05227 0.03544 0.01838 0.00110 -0.01641 -0.03415 -0.05214 -0.07039 -0.08887 -0.10756 -0.12640 -0.14529 -0.16416 -0.18290 -0.20145 -0.21973 -0.23774 -0.25550 +0.37693 0.38214 0.38555 0.38711 0.38693 0.38520 0.38209 0.37776 0.37239 0.36613 0.35907 0.35125 0.34272 0.33348 0.32358 0.31301 0.30179 0.28992 0.27739 0.26422 0.25040 0.23594 0.22084 0.20513 0.18882 0.17193 0.15450 0.13657 0.11817 0.09934 0.08012 0.06054 0.04063 0.02041 -0.00012 -0.02095 -0.04210 -0.06358 -0.08542 -0.10762 -0.13016 -0.15298 -0.17599 -0.19906 -0.22203 -0.24475 -0.26713 -0.28907 -0.31059 -0.33176 -0.35278 -0.37390 +0.42841 0.42925 0.42814 0.42545 0.42149 0.41647 0.41054 0.40377 0.39617 0.38776 0.37855 0.36854 0.35775 0.34616 0.33379 0.32062 0.30665 0.29188 0.27629 0.25990 0.24271 0.22473 0.20599 0.18652 0.16634 0.14551 0.12408 0.10209 0.07959 0.05662 0.03322 0.00939 -0.01483 -0.03947 -0.06453 -0.09005 -0.11604 -0.14253 -0.16949 -0.19684 -0.22447 -0.25220 -0.27980 -0.30706 -0.33382 -0.35998 -0.38551 -0.41052 -0.43526 -0.46009 -0.48538 -0.51139 +0.45558 0.45407 0.45129 0.44740 0.44249 0.43658 0.42967 0.42176 0.41288 0.40302 0.39219 0.38038 0.36758 0.35379 0.33899 0.32317 0.30633 0.28846 0.26956 0.24966 0.22877 0.20693 0.18418 0.16057 0.13617 0.11104 0.08522 0.05879 0.03177 0.00421 -0.02388 -0.05251 -0.08168 -0.11145 -0.14184 -0.17286 -0.20451 -0.23672 -0.26937 -0.30223 -0.33505 -0.36753 -0.39940 -0.43048 -0.46070 -0.49013 -0.51902 -0.54782 -0.57705 -0.60724 -0.63871 -0.67140 +0.46594 0.46532 0.46348 0.46037 0.45593 0.45018 0.44311 0.43475 0.42510 0.41418 0.40197 0.38847 0.37369 0.35760 0.34020 0.32149 0.30147 0.28017 0.25759 0.23378 0.20879 0.18268 0.15553 0.12740 0.09836 0.06850 0.03787 0.00652 -0.02551 -0.05823 -0.09164 -0.12578 -0.16071 -0.19643 -0.23295 -0.27024 -0.30819 -0.34657 -0.38513 -0.42351 -0.46132 -0.49821 -0.53401 -0.56869 -0.60241 -0.63565 -0.66905 -0.70331 -0.73912 -0.77686 -0.81641 -0.85729 +0.46660 0.46835 0.46864 0.46730 0.46426 0.45943 0.45280 0.44440 0.43424 0.42236 0.40878 0.39352 0.37657 0.35796 0.33767 0.31574 0.29219 0.26705 0.24039 0.21227 0.18277 0.15200 0.12002 0.08693 0.05282 0.01777 -0.01817 -0.05498 -0.09265 -0.13122 -0.17073 -0.21122 -0.25270 -0.29516 -0.33854 -0.38268 -0.42730 -0.47209 -0.51659 -0.56028 -0.60273 -0.64377 -0.68340 -0.72193 -0.76004 -0.79857 -0.83838 -0.88036 -0.92508 -0.97245 -1.02186 -1.07203 +0.46121 0.46588 0.46883 0.46984 0.46868 0.46524 0.45942 0.45121 0.44067 0.42785 0.41283 0.39564 0.37632 0.35489 0.33140 0.30589 0.27842 0.24907 0.21792 0.18510 0.15069 0.11481 0.07756 0.03906 -0.00061 -0.04138 -0.08323 -0.12615 -0.17020 -0.21542 -0.26184 -0.30948 -0.35829 -0.40819 -0.45900 -0.51040 -0.56199 -0.61323 -0.66346 -0.71215 -0.75907 -0.80429 -0.84824 -0.89178 -0.93590 -0.98163 -1.03016 -1.08237 -1.13832 -1.19729 -1.25762 -1.31711 +0.45175 0.45925 0.46502 0.46860 0.46962 0.46784 0.46310 0.45530 0.44448 0.43072 0.41415 0.39486 0.37291 0.34839 0.32136 0.29191 0.26015 0.22620 0.19018 0.15222 0.11245 0.07101 0.02802 -0.01640 -0.06219 -0.10929 -0.15772 -0.20752 -0.25875 -0.31144 -0.36558 -0.42113 -0.47798 -0.53594 -0.59465 -0.65365 -0.71231 -0.76984 -0.82555 -0.87917 -0.93075 -0.98082 -1.03035 -1.08043 -1.13235 -1.18762 -1.24755 -1.31258 -1.38206 -1.45391 -1.52519 -1.59322 +0.44026 0.44977 0.45793 0.46400 0.46732 0.46739 0.46391 0.45670 0.44569 0.43098 0.41275 0.39116 0.36635 0.33843 0.30753 0.27379 0.23737 0.19842 0.15709 0.11355 0.06795 0.02046 -0.02880 -0.07972 -0.13224 -0.18636 -0.24214 -0.29964 -0.35887 -0.41985 -0.48249 -0.54669 -0.61223 -0.67877 -0.74578 -0.81257 -0.87822 -0.94190 -1.00317 -1.06205 -1.11903 -1.17511 -1.23154 -1.28985 -1.35186 -1.41951 -1.49385 -1.57439 -1.65884 -1.74349 -1.82493 -1.90097 +0.42765 0.43872 0.44855 0.45662 0.46208 0.46404 0.46194 0.45541 0.44430 0.42862 0.40862 0.38455 0.35660 0.32499 0.28989 0.25150 0.21002 0.16564 0.11856 0.06896 0.01703 -0.03705 -0.09314 -0.15118 -0.21114 -0.27306 -0.33702 -0.40304 -0.47111 -0.54117 -0.61306 -0.68661 -0.76145 -0.83704 -0.91264 -0.98727 -1.05993 -1.12994 -1.19719 -1.26201 -1.32534 -1.38857 -1.45346 -1.52222 -1.59738 -1.68081 -1.77243 -1.87010 -1.96954 -2.06638 -2.15758 -2.24220 +0.41382 0.42649 0.43766 0.44717 0.45430 0.45800 0.45726 0.45149 0.44031 0.42366 0.40176 0.37499 0.34366 0.30805 0.26841 0.22499 0.17803 0.12778 0.07445 0.01828 -0.04051 -0.10174 -0.16531 -0.23116 -0.29933 -0.36988 -0.44285 -0.51824 -0.59597 -0.67588 -0.75778 -0.84134 -0.92602 -1.01106 -1.09549 -1.17815 -1.25809 -1.33492 -1.40870 -1.48017 -1.55079 -1.62258 -1.69814 -1.78051 -1.87239 -1.97455 -2.08537 -2.20056 -2.31465 -2.42343 -2.52484 -2.61933 +0.39858 0.41296 0.42549 0.43611 0.44445 0.44951 0.45001 0.44496 0.43373 0.41606 0.39215 0.36249 0.32751 0.28758 0.24303 0.19417 0.14129 0.08468 0.02461 -0.03865 -0.10488 -0.17390 -0.24563 -0.32007 -0.39728 -0.47730 -0.56015 -0.64574 -0.73392 -0.82447 -0.91709 -1.01129 -1.10633 -1.20126 -1.29486 -1.38595 -1.47369 -1.55776 -1.63853 -1.71740 -1.79660 -1.87913 -1.96847 -2.06797 -2.17961 -2.30272 -2.43374 -2.56642 -2.69507 -2.81609 -2.92890 -3.03469 +0.38179 0.39801 0.41193 0.42361 0.43282 0.43885 0.44029 0.43585 0.42453 0.40581 0.37976 0.34700 0.30810 0.26352 0.21368 0.15895 0.09968 0.03621 -0.03114 -0.10206 -0.17635 -0.25383 -0.33448 -0.41833 -0.50543 -0.59579 -0.68937 -0.78599 -0.88543 -0.98739 -1.09144 -1.19692 -1.30292 -1.40825 -1.51156 -1.61160 -1.70748 -1.79906 -1.88738 -1.97480 -2.06467 -2.16088 -2.26730 -2.38704 -2.52092 -2.66665 -2.81831 -2.96862 -3.11209 -3.24634 -3.37192 -3.49051 +0.36331 0.38148 0.39686 0.40962 0.41955 0.42622 0.42826 0.42421 0.41272 0.39288 0.36457 0.32849 0.28537 0.23578 0.18024 0.11919 0.05305 -0.01780 -0.09298 -0.17218 -0.25519 -0.34189 -0.43226 -0.52636 -0.62422 -0.72581 -0.83096 -0.93945 -1.05097 -1.16512 -1.28134 -1.39881 -1.51645 -1.63286 -1.74648 -1.85580 -1.95997 -2.05939 -2.15625 -2.25414 -2.35738 -2.47034 -2.59689 -2.73956 -2.89783 -3.06732 -3.24004 -3.40835 -3.56739 -3.71617 -3.85601 -3.98895 +0.34306 0.36328 0.38018 0.39402 0.40461 0.41171 0.41406 0.41011 0.39829 0.37723 0.34654 0.30690 0.25925 0.20429 0.14263 0.07478 0.00125 -0.07752 -0.16113 -0.24927 -0.34172 -0.43841 -0.53935 -0.64459 -0.75411 -0.86778 -0.98537 -1.10658 -1.23100 -1.35815 -1.48736 -1.61766 -1.74776 -1.87598 -2.00029 -2.11900 -2.23158 -2.33962 -2.44669 -2.55750 -2.67694 -2.80952 -2.95901 -3.12705 -3.31156 -3.50572 -3.70011 -3.88706 -4.06282 -4.22759 -4.38323 -4.53215 +0.32095 0.34328 0.36179 0.37673 0.38795 0.39534 0.39774 0.39361 0.38123 0.35884 0.32560 0.28218 0.22967 0.16894 0.10070 0.02558 -0.05588 -0.14316 -0.23584 -0.33360 -0.43626 -0.54377 -0.65615 -0.77342 -0.89549 -1.02214 -1.15305 -1.28784 -1.42604 -1.56709 -1.71022 -1.85431 -1.99775 -2.13829 -2.27343 -2.40152 -2.52304 -2.64109 -2.76053 -2.88683 -3.02519 -3.18012 -3.35516 -3.55090 -3.76327 -3.98306 -4.19989 -4.40641 -4.60026 -4.78255 -4.95561 -5.12216 +0.29704 0.32142 0.34158 0.35764 0.36950 0.37707 0.37934 0.37476 0.36154 0.33766 0.30172 0.25424 0.19653 0.12962 0.05435 -0.02857 -0.11851 -0.21492 -0.31734 -0.42547 -0.53914 -0.65833 -0.78305 -0.91327 -1.04879 -1.18932 -1.33446 -1.48374 -1.63664 -1.79259 -1.95072 -2.10962 -2.26712 -2.42026 -2.56619 -2.70394 -2.83546 -2.96535 -3.09948 -3.24382 -3.40369 -3.58361 -3.78674 -4.01243 -4.25419 -4.50066 -4.74080 -4.96812 -5.18157 -5.38301 -5.57514 -5.76104 +0.27144 0.29765 0.31946 0.33666 0.34916 0.35683 0.35884 0.35356 0.33923 0.31365 0.27482 0.22300 0.15974 0.08623 0.00344 -0.08782 -0.18684 -0.29303 -0.40591 -0.52517 -0.65069 -0.78245 -0.92044 -1.06452 -1.21443 -1.36977 -1.53007 -1.69479 -1.86345 -2.03544 -2.20971 -2.38437 -2.55642 -2.72217 -2.87900 -3.02714 -3.17017 -3.31391 -3.46509 -3.62996 -3.81384 -4.02136 -4.25516 -4.51295 -4.78563 -5.05990 -5.32441 -5.57393 -5.80861 -6.03086 -6.24376 -6.45082 +0.24428 0.27207 0.29537 0.31371 0.32686 0.33457 0.33620 0.33000 0.31430 0.28677 0.24484 0.18840 0.11919 0.03863 -0.05219 -0.15235 -0.26107 -0.37772 -0.50179 -0.63301 -0.77125 -0.91650 -1.06869 -1.22759 -1.39283 -1.56395 -1.74037 -1.92160 -2.10717 -2.29643 -2.48798 -2.67914 -2.86596 -3.04439 -3.21257 -3.37225 -3.52845 -3.68819 -3.85879 -4.04660 -4.25699 -4.49473 -4.76178 -5.05383 -5.35896 -5.66215 -5.95230 -6.22561 -6.48321 -6.72799 -6.96343 -7.19363 +0.21596 0.24474 0.26929 0.28873 0.30251 0.31023 0.31138 0.30409 0.28673 0.25695 0.21170 0.15033 0.07480 -0.01328 -0.11267 -0.22233 -0.34141 -0.46922 -0.60527 -0.74928 -0.90116 -1.06085 -1.22820 -1.40288 -1.58444 -1.77230 -1.96590 -2.16478 -2.36855 -2.57637 -2.78622 -2.99440 -3.19607 -3.38744 -3.56780 -3.74038 -3.91158 -4.08953 -4.28189 -4.49498 -4.73442 -5.00507 -5.30801 -5.63645 -5.97553 -6.30884 -6.62610 -6.92490 -7.20719 -7.47626 -7.73613 -7.99166 + + +# Thrust coefficient + +0.06742 0.06741 0.06739 0.06736 0.06732 0.06727 0.06721 0.06714 0.06706 0.06696 0.06686 0.06674 0.06662 0.06648 0.06633 0.06617 0.06600 0.06582 0.06563 0.06543 0.06522 0.06500 0.06476 0.06452 0.06427 0.06400 0.06373 0.06345 0.06315 0.06285 0.06253 0.06221 0.06188 0.06153 0.06118 0.06082 0.06045 0.06007 0.05968 0.05929 0.05888 0.05846 0.05804 0.05761 0.05717 0.05673 0.05628 0.05582 0.05535 0.05488 0.05440 0.05391 +0.07812 0.07796 0.07779 0.07760 0.07741 0.07720 0.07698 0.07675 0.07650 0.07625 0.07598 0.07571 0.07542 0.07513 0.07482 0.07450 0.07418 0.07385 0.07351 0.07316 0.07281 0.07245 0.07209 0.07172 0.07135 0.07099 0.07062 0.07025 0.06988 0.06951 0.06915 0.06880 0.06845 0.06811 0.06777 0.06744 0.06712 0.06681 0.06651 0.06622 0.06594 0.06566 0.06539 0.06513 0.06487 0.06462 0.06437 0.06412 0.06388 0.06363 0.06337 0.06311 +0.09346 0.09320 0.09295 0.09269 0.09244 0.09220 0.09197 0.09174 0.09153 0.09134 0.09116 0.09100 0.09085 0.09073 0.09062 0.09054 0.09047 0.09043 0.09040 0.09039 0.09040 0.09042 0.09045 0.09049 0.09053 0.09058 0.09062 0.09066 0.09069 0.09071 0.09070 0.09068 0.09063 0.09056 0.09045 0.09031 0.09013 0.08990 0.08964 0.08933 0.08897 0.08856 0.08811 0.08760 0.08703 0.08642 0.08575 0.08503 0.08426 0.08344 0.08257 0.08166 +0.11855 0.11879 0.11907 0.11939 0.11975 0.12013 0.12055 0.12098 0.12144 0.12190 0.12237 0.12283 0.12328 0.12371 0.12412 0.12449 0.12482 0.12510 0.12533 0.12550 0.12561 0.12564 0.12561 0.12549 0.12530 0.12502 0.12466 0.12422 0.12369 0.12307 0.12236 0.12157 0.12069 0.11973 0.11869 0.11758 0.11639 0.11513 0.11381 0.11243 0.11100 0.10950 0.10795 0.10634 0.10468 0.10297 0.10120 0.09937 0.09748 0.09554 0.09353 0.09147 +0.16154 0.16257 0.16356 0.16451 0.16541 0.16624 0.16700 0.16766 0.16823 0.16870 0.16905 0.16928 0.16940 0.16938 0.16924 0.16896 0.16855 0.16800 0.16732 0.16651 0.16557 0.16450 0.16330 0.16199 0.16057 0.15905 0.15743 0.15571 0.15391 0.15203 0.15007 0.14804 0.14593 0.14374 0.14147 0.13911 0.13666 0.13412 0.13148 0.12873 0.12586 0.12286 0.11974 0.11647 0.11307 0.10950 0.10578 0.10191 0.09789 0.09373 0.08945 0.08507 +0.21940 0.22030 0.22103 0.22158 0.22194 0.22212 0.22209 0.22187 0.22146 0.22084 0.22004 0.21904 0.21786 0.21650 0.21498 0.21330 0.21147 0.20951 0.20742 0.20522 0.20293 0.20053 0.19805 0.19548 0.19280 0.19002 0.18712 0.18409 0.18091 0.17757 0.17405 0.17035 0.16644 0.16232 0.15797 0.15337 0.14852 0.14344 0.13815 0.13265 0.12696 0.12110 0.11508 0.10891 0.10261 0.09617 0.08961 0.08293 0.07617 0.06933 0.06244 0.05549 +0.28388 0.28364 0.28314 0.28236 0.28132 0.28002 0.27849 0.27673 0.27475 0.27259 0.27024 0.26776 0.26515 0.26243 0.25962 0.25672 0.25371 0.25058 0.24731 0.24388 0.24025 0.23643 0.23236 0.22803 0.22341 0.21845 0.21312 0.20741 0.20135 0.19495 0.18823 0.18122 0.17393 0.16639 0.15861 0.15061 0.14240 0.13400 0.12544 0.11675 0.10794 0.09903 0.09004 0.08098 0.07186 0.06270 0.05350 0.04428 0.03505 0.02582 0.01659 0.00737 +0.34990 0.34797 0.34576 0.34331 0.34064 0.33782 0.33487 0.33182 0.32869 0.32548 0.32215 0.31869 0.31507 0.31124 0.30718 0.30284 0.29817 0.29309 0.28753 0.28143 0.27480 0.26767 0.26004 0.25195 0.24344 0.23455 0.22528 0.21566 0.20571 0.19550 0.18504 0.17439 0.16355 0.15255 0.14142 0.13016 0.11880 0.10734 0.09581 0.08421 0.07256 0.06086 0.04914 0.03741 0.02566 0.01393 0.00220 -0.00951 -0.02119 -0.03284 -0.04443 -0.05595 +0.41659 0.41337 0.41007 0.40673 0.40332 0.39981 0.39616 0.39233 0.38825 0.38385 0.37906 0.37373 0.36775 0.36106 0.35367 0.34557 0.33678 0.32738 0.31741 0.30687 0.29580 0.28427 0.27235 0.26009 0.24752 0.23469 0.22161 0.20832 0.19485 0.18120 0.16739 0.15345 0.13938 0.12520 0.11093 0.09659 0.08217 0.06772 0.05322 0.03871 0.02420 0.00968 -0.00482 -0.01931 -0.03377 -0.04819 -0.06255 -0.07684 -0.09102 -0.10505 -0.11890 -0.13252 +0.48931 0.48578 0.48207 0.47809 0.47374 0.46885 0.46324 0.45683 0.44955 0.44133 0.43219 0.42221 0.41139 0.39978 0.38746 0.37451 0.36102 0.34706 0.33268 0.31793 0.30284 0.28744 0.27177 0.25585 0.23969 0.22332 0.20675 0.19001 0.17311 0.15607 0.13891 0.12165 0.10430 0.08688 0.06941 0.05190 0.03437 0.01683 -0.00071 -0.01824 -0.03576 -0.05325 -0.07070 -0.08809 -0.10538 -0.12254 -0.13951 -0.15624 -0.17267 -0.18871 -0.20432 -0.21940 +0.57079 0.56550 0.55935 0.55217 0.54387 0.53445 0.52391 0.51227 0.49962 0.48609 0.47180 0.45682 0.44124 0.42511 0.40850 0.39144 0.37397 0.35614 0.33796 0.31945 0.30065 0.28158 0.26225 0.24270 0.22293 0.20298 0.18286 0.16259 0.14219 0.12168 0.10107 0.08040 0.05967 0.03890 0.01811 -0.00269 -0.02350 -0.04431 -0.06511 -0.08588 -0.10660 -0.12722 -0.14770 -0.16798 -0.18798 -0.20763 -0.22686 -0.24558 -0.26372 -0.28120 -0.29791 -0.31369 +0.64958 0.63945 0.62793 0.61515 0.60129 0.58645 0.57074 0.55423 0.53701 0.51913 0.50065 0.48162 0.46208 0.44206 0.42161 0.40075 0.37950 0.35789 0.33594 0.31369 0.29115 0.26834 0.24530 0.22203 0.19857 0.17494 0.15115 0.12723 0.10320 0.07908 0.05489 0.03065 0.00637 -0.01794 -0.04227 -0.06661 -0.09095 -0.11527 -0.13953 -0.16367 -0.18763 -0.21131 -0.23464 -0.25753 -0.27988 -0.30162 -0.32267 -0.34292 -0.36226 -0.38053 -0.39753 -0.41304 +0.71352 0.69827 0.68202 0.66483 0.64676 0.62786 0.60820 0.58782 0.56677 0.54511 0.52288 0.50010 0.47681 0.45304 0.42882 0.40417 0.37912 0.35370 0.32794 0.30185 0.27547 0.24882 0.22193 0.19482 0.16751 0.14003 0.11240 0.08466 0.05682 0.02890 0.00092 -0.02711 -0.05518 -0.08329 -0.11143 -0.13956 -0.16763 -0.19559 -0.22333 -0.25076 -0.27777 -0.30426 -0.33014 -0.35531 -0.37967 -0.40314 -0.42557 -0.44682 -0.46667 -0.48489 -0.50118 -0.51525 +0.76495 0.74631 0.72675 0.70629 0.68492 0.66269 0.63965 0.61585 0.59133 0.56613 0.54029 0.51386 0.48685 0.45932 0.43128 0.40278 0.37384 0.34450 0.31478 0.28472 0.25434 0.22367 0.19275 0.16161 0.13026 0.09875 0.06709 0.03532 0.00346 -0.02850 -0.06052 -0.09262 -0.12478 -0.15696 -0.18911 -0.22116 -0.25301 -0.28454 -0.31561 -0.34612 -0.37595 -0.40499 -0.43315 -0.46030 -0.48633 -0.51108 -0.53437 -0.55595 -0.57556 -0.59287 -0.60753 -0.61913 +0.80848 0.78721 0.76507 0.74198 0.71792 0.69285 0.66681 0.63983 0.61198 0.58332 0.55391 0.52379 0.49302 0.46164 0.42968 0.39720 0.36423 0.33080 0.29696 0.26274 0.22818 0.19330 0.15816 0.12277 0.08719 0.05143 0.01552 -0.02052 -0.05667 -0.09294 -0.12931 -0.16575 -0.20221 -0.23863 -0.27488 -0.31084 -0.34636 -0.38130 -0.41553 -0.44892 -0.48135 -0.51270 -0.54285 -0.57166 -0.59896 -0.62454 -0.64816 -0.66952 -0.68825 -0.70393 -0.71608 -0.72431 +0.84679 0.82318 0.79875 0.77338 0.74691 0.71930 0.69048 0.66049 0.62941 0.59731 0.56429 0.53044 0.49580 0.46046 0.42445 0.38783 0.35065 0.31297 0.27481 0.23624 0.19729 0.15800 0.11841 0.07858 0.03853 -0.00172 -0.04214 -0.08271 -0.12344 -0.16431 -0.20528 -0.24626 -0.28717 -0.32786 -0.36817 -0.40794 -0.44700 -0.48521 -0.52242 -0.55850 -0.59332 -0.62674 -0.65862 -0.68877 -0.71701 -0.74308 -0.76665 -0.78730 -0.80453 -0.81780 -0.82661 -0.83068 +0.88156 0.85551 0.82883 0.80125 0.77254 0.74252 0.71110 0.67824 0.64399 0.60847 0.57182 0.53414 0.49553 0.45609 0.41587 0.37495 0.33339 0.29125 0.24858 0.20544 0.16189 0.11797 0.07373 0.02921 -0.01556 -0.06055 -0.10576 -0.15117 -0.19675 -0.24246 -0.28820 -0.33384 -0.37922 -0.42415 -0.46844 -0.51191 -0.55439 -0.59572 -0.63576 -0.67436 -0.71139 -0.74668 -0.78009 -0.81141 -0.84040 -0.86669 -0.88981 -0.90918 -0.92419 -0.93423 -0.93895 -0.93825 +0.91442 0.88532 0.85606 0.82617 0.79524 0.76291 0.72898 0.69337 0.65603 0.61710 0.57675 0.53516 0.49246 0.44876 0.40417 0.35877 0.31263 0.26583 0.21845 0.17054 0.12216 0.07339 0.02425 -0.02520 -0.07495 -0.12497 -0.17526 -0.22577 -0.27644 -0.32715 -0.37777 -0.42810 -0.47793 -0.52705 -0.57524 -0.62232 -0.66810 -0.71244 -0.75519 -0.79619 -0.83531 -0.87239 -0.90726 -0.93965 -0.96919 -0.99537 -1.01751 -1.03494 -1.04697 -1.05312 -1.05319 -1.04733 +0.94638 0.91378 0.88134 0.84874 0.81543 0.78078 0.74441 0.70609 0.66574 0.62339 0.57930 0.53370 0.48678 0.43868 0.38954 0.33946 0.28855 0.23689 0.18457 0.13166 0.07824 0.02437 -0.02992 -0.08457 -0.13958 -0.19491 -0.25054 -0.30637 -0.36228 -0.41812 -0.47367 -0.52869 -0.58294 -0.63619 -0.68821 -0.73881 -0.78782 -0.83510 -0.88050 -0.92387 -0.96508 -1.00396 -1.04027 -1.07360 -1.10341 -1.12897 -1.14955 -1.16439 -1.17284 -1.17457 -1.16960 -1.15850 +0.97776 0.94146 0.90544 0.86965 0.83356 0.79645 0.75760 0.71662 0.67328 0.62754 0.57965 0.52994 0.47865 0.42599 0.37212 0.31718 0.26128 0.20454 0.14707 0.08894 0.03023 -0.02900 -0.08869 -0.14882 -0.20937 -0.27027 -0.33145 -0.39277 -0.45406 -0.51509 -0.57560 -0.63531 -0.69396 -0.75129 -0.80708 -0.86116 -0.91339 -0.96361 -1.01169 -1.05749 -1.10087 -1.14158 -1.17923 -1.21325 -1.24289 -1.26735 -1.28582 -1.29752 -1.30190 -1.29881 -1.28861 -1.27230 +1.00869 0.96856 0.92879 0.88940 0.85015 0.81026 0.76882 0.72514 0.67882 0.62969 0.57794 0.52400 0.46821 0.41081 0.35203 0.29201 0.23093 0.16889 0.10603 0.04244 -0.02180 -0.08663 -0.15201 -0.21789 -0.28422 -0.35091 -0.41784 -0.48480 -0.55156 -0.61783 -0.68332 -0.74771 -0.81072 -0.87211 -0.93168 -0.98928 -1.04477 -1.09801 -1.14889 -1.19724 -1.24285 -1.28532 -1.32411 -1.35847 -1.38754 -1.41045 -1.42633 -1.43442 -1.43431 -1.42611 -1.41063 -1.38920 +1.03929 0.99521 0.95150 0.90834 0.86555 0.82255 0.77828 0.73181 0.68249 0.62995 0.57429 0.51601 0.45556 0.39325 0.32936 0.26407 0.19758 0.13003 0.06155 -0.00774 -0.07777 -0.14848 -0.21980 -0.29168 -0.36403 -0.43672 -0.50956 -0.58227 -0.65458 -0.72614 -0.79662 -0.86569 -0.93308 -0.99856 -1.06198 -1.12318 -1.18205 -1.23846 -1.29227 -1.34326 -1.39107 -1.43516 -1.47483 -1.50920 -1.53733 -1.55829 -1.57115 -1.57521 -1.57025 -1.55677 -1.53600 -1.50960 +1.06966 1.02148 0.97370 0.92660 0.88002 0.83361 0.78622 0.73679 0.68441 0.62843 0.56880 0.50606 0.44079 0.37340 0.30420 0.23343 0.16131 0.08802 0.01369 -0.06156 -0.13763 -0.21447 -0.29199 -0.37012 -0.44871 -0.52758 -0.60646 -0.68503 -0.76295 -0.83985 -0.91535 -0.98913 -1.06095 -1.13063 -1.19800 -1.26295 -1.32536 -1.38512 -1.44197 -1.49561 -1.54552 -1.59105 -1.63134 -1.66542 -1.69229 -1.71092 -1.72034 -1.71998 -1.70990 -1.69106 -1.66502 -1.63378 +1.09984 1.04744 0.99545 0.94426 0.89372 0.84363 0.79288 0.74027 0.68470 0.62523 0.56155 0.49423 0.42399 0.35133 0.27662 0.20016 0.12220 0.04292 -0.03750 -0.11895 -0.20134 -0.28456 -0.36853 -0.45313 -0.53816 -0.62337 -0.70842 -0.79294 -0.87655 -0.95882 -1.03940 -1.11798 -1.19435 -1.26835 -1.33983 -1.40872 -1.47487 -1.53809 -1.59804 -1.65427 -1.70618 -1.75296 -1.79364 -1.82717 -1.85244 -1.86835 -1.87394 -1.86882 -1.85345 -1.82918 -1.79794 -1.76199 +1.12984 1.07314 1.01682 0.96138 0.90674 0.85277 0.79840 0.74237 0.68346 0.62041 0.55262 0.48060 0.40522 0.32710 0.24668 0.16432 0.08028 -0.00521 -0.09198 -0.17989 -0.26883 -0.35869 -0.44935 -0.54064 -0.63230 -0.72399 -0.81533 -0.90590 -0.99526 -1.08299 -1.16874 -1.25224 -1.33331 -1.41180 -1.48760 -1.56062 -1.63067 -1.69744 -1.76047 -1.81924 -1.87301 -1.92086 -1.96173 -1.99444 -2.01781 -2.03062 -2.03202 -2.02186 -2.00106 -1.97133 -1.93492 -1.89440 +1.15951 1.09859 1.03782 0.97800 0.91913 0.86109 0.80291 0.74325 0.68078 0.61407 0.54209 0.46522 0.38454 0.30077 0.21444 0.12595 0.03561 -0.05634 -0.14970 -0.24432 -0.34007 -0.43682 -0.53440 -0.63259 -0.73103 -0.82935 -0.92709 -1.02381 -1.11903 -1.21232 -1.30338 -1.39197 -1.47791 -1.56108 -1.64142 -1.71876 -1.79281 -1.86315 -1.92926 -1.99048 -2.04600 -2.09478 -2.13563 -2.16727 -2.18839 -2.19775 -2.19462 -2.17922 -2.15287 -2.11765 -2.07612 -2.03113 +1.18862 1.12373 1.05850 0.99416 0.93093 0.86866 0.80651 0.74299 0.67677 0.60626 0.52999 0.44816 0.36200 0.27239 0.17993 0.08509 -0.01179 -0.11043 -0.21063 -0.31222 -0.41502 -0.51890 -0.62363 -0.72890 -0.83429 -0.93937 -1.04366 -1.14664 -1.24783 -1.34683 -1.44336 -1.53720 -1.62821 -1.71631 -1.80138 -1.88318 -1.96131 -2.03524 -2.10438 -2.16801 -2.22517 -2.27473 -2.31535 -2.34563 -2.36418 -2.36975 -2.36181 -2.34099 -2.30900 -2.26827 -2.22163 -2.17230 +1.21694 1.14839 1.07885 1.00990 0.94219 0.87554 0.80925 0.74168 0.67151 0.59704 0.51639 0.42945 0.33764 0.24199 0.14319 0.04178 -0.06187 -0.16746 -0.27475 -0.38354 -0.49366 -0.60490 -0.71699 -0.82952 -0.94203 -1.05403 -1.16498 -1.27435 -1.38166 -1.48653 -1.58871 -1.68801 -1.78432 -1.87756 -1.96754 -2.05390 -2.13615 -2.21368 -2.28584 -2.35180 -2.41052 -2.46070 -2.50088 -2.52955 -2.54521 -2.54667 -2.53367 -2.50727 -2.46954 -2.42325 -2.37156 -2.31804 +1.24397 1.17246 1.09881 1.02523 0.95292 0.88177 0.81120 0.73941 0.66507 0.58646 0.50132 0.40914 0.31150 0.20960 0.10425 -0.00396 -0.11462 -0.22739 -0.34202 -0.45827 -0.57595 -0.69479 -0.81444 -0.93441 -1.05421 -1.17327 -1.29104 -1.40695 -1.52054 -1.63147 -1.73950 -1.84447 -1.94631 -2.04489 -2.13991 -2.23092 -2.31732 -2.39846 -2.47362 -2.54187 -2.60205 -2.65269 -2.69222 -2.71901 -2.73147 -2.72853 -2.71026 -2.67812 -2.63458 -2.58267 -2.52599 -2.46851 + + +# Torque coefficient + +0.00384 0.00412 0.00441 0.00469 0.00497 0.00525 0.00553 0.00581 0.00609 0.00636 0.00664 0.00691 0.00718 0.00744 0.00771 0.00797 0.00823 0.00849 0.00874 0.00899 0.00924 0.00949 0.00973 0.00998 0.01021 0.01045 0.01068 0.01091 0.01114 0.01136 0.01158 0.01179 0.01201 0.01222 0.01242 0.01263 0.01283 0.01302 0.01321 0.01340 0.01359 0.01377 0.01395 0.01413 0.01430 0.01447 0.01464 0.01481 0.01497 0.01514 0.01530 0.01546 +0.00416 0.00448 0.00481 0.00513 0.00545 0.00576 0.00608 0.00639 0.00670 0.00701 0.00731 0.00762 0.00792 0.00822 0.00851 0.00881 0.00911 0.00940 0.00969 0.00999 0.01028 0.01058 0.01088 0.01118 0.01148 0.01179 0.01210 0.01242 0.01274 0.01307 0.01341 0.01376 0.01411 0.01448 0.01486 0.01525 0.01565 0.01607 0.01649 0.01693 0.01739 0.01785 0.01833 0.01882 0.01932 0.01983 0.02035 0.02088 0.02141 0.02195 0.02249 0.02304 +0.00496 0.00541 0.00587 0.00634 0.00682 0.00730 0.00779 0.00829 0.00880 0.00933 0.00987 0.01042 0.01098 0.01157 0.01216 0.01278 0.01341 0.01405 0.01471 0.01539 0.01608 0.01679 0.01751 0.01824 0.01898 0.01973 0.02048 0.02124 0.02200 0.02276 0.02351 0.02426 0.02500 0.02573 0.02644 0.02714 0.02782 0.02848 0.02911 0.02972 0.03030 0.03085 0.03136 0.03184 0.03228 0.03269 0.03305 0.03337 0.03365 0.03389 0.03408 0.03423 +0.00864 0.00952 0.01042 0.01135 0.01229 0.01326 0.01425 0.01525 0.01626 0.01729 0.01833 0.01937 0.02042 0.02146 0.02250 0.02353 0.02456 0.02557 0.02656 0.02753 0.02848 0.02940 0.03029 0.03115 0.03198 0.03277 0.03351 0.03422 0.03488 0.03549 0.03605 0.03656 0.03702 0.03742 0.03776 0.03805 0.03828 0.03845 0.03857 0.03863 0.03863 0.03857 0.03845 0.03828 0.03806 0.03778 0.03745 0.03707 0.03665 0.03617 0.03566 0.03510 +0.01705 0.01845 0.01984 0.02122 0.02260 0.02396 0.02530 0.02662 0.02791 0.02917 0.03040 0.03159 0.03274 0.03385 0.03491 0.03592 0.03688 0.03779 0.03864 0.03942 0.04014 0.04080 0.04138 0.04189 0.04233 0.04270 0.04299 0.04321 0.04335 0.04342 0.04341 0.04334 0.04319 0.04297 0.04269 0.04235 0.04194 0.04148 0.04096 0.04038 0.03973 0.03903 0.03825 0.03741 0.03650 0.03551 0.03444 0.03330 0.03209 0.03081 0.02946 0.02806 +0.02777 0.02938 0.03095 0.03248 0.03396 0.03538 0.03675 0.03806 0.03931 0.04049 0.04161 0.04265 0.04362 0.04450 0.04530 0.04601 0.04663 0.04716 0.04760 0.04795 0.04820 0.04836 0.04843 0.04842 0.04831 0.04813 0.04786 0.04751 0.04709 0.04659 0.04601 0.04535 0.04461 0.04378 0.04287 0.04185 0.04075 0.03954 0.03825 0.03687 0.03541 0.03387 0.03225 0.03056 0.02879 0.02696 0.02507 0.02311 0.02111 0.01905 0.01696 0.01483 +0.03810 0.03974 0.04130 0.04278 0.04419 0.04551 0.04675 0.04789 0.04894 0.04988 0.05071 0.05143 0.05204 0.05255 0.05295 0.05324 0.05343 0.05350 0.05346 0.05332 0.05307 0.05272 0.05227 0.05172 0.05107 0.05031 0.04944 0.04844 0.04732 0.04610 0.04476 0.04332 0.04177 0.04013 0.03839 0.03655 0.03462 0.03261 0.03053 0.02838 0.02617 0.02391 0.02159 0.01923 0.01684 0.01440 0.01194 0.00944 0.00692 0.00437 0.00181 -0.00078 +0.04723 0.04880 0.05027 0.05163 0.05287 0.05400 0.05501 0.05590 0.05666 0.05730 0.05781 0.05818 0.05842 0.05851 0.05846 0.05828 0.05796 0.05751 0.05691 0.05617 0.05528 0.05426 0.05310 0.05181 0.05039 0.04885 0.04719 0.04540 0.04351 0.04151 0.03942 0.03725 0.03499 0.03266 0.03025 0.02778 0.02526 0.02267 0.02004 0.01737 0.01465 0.01189 0.00910 0.00627 0.00342 0.00054 -0.00238 -0.00532 -0.00828 -0.01126 -0.01426 -0.01726 +0.05515 0.05664 0.05800 0.05923 0.06032 0.06125 0.06202 0.06262 0.06304 0.06327 0.06332 0.06316 0.06281 0.06227 0.06156 0.06068 0.05964 0.05845 0.05712 0.05563 0.05401 0.05226 0.05038 0.04840 0.04632 0.04413 0.04185 0.03948 0.03702 0.03447 0.03185 0.02915 0.02639 0.02355 0.02066 0.01772 0.01472 0.01168 0.00860 0.00548 0.00233 -0.00086 -0.00409 -0.00736 -0.01066 -0.01400 -0.01736 -0.02073 -0.02412 -0.02750 -0.03086 -0.03420 +0.06239 0.06379 0.06501 0.06600 0.06676 0.06726 0.06748 0.06745 0.06717 0.06665 0.06594 0.06504 0.06396 0.06272 0.06132 0.05978 0.05811 0.05631 0.05440 0.05238 0.05025 0.04801 0.04566 0.04321 0.04066 0.03801 0.03527 0.03243 0.02951 0.02650 0.02342 0.02027 0.01705 0.01379 0.01046 0.00709 0.00368 0.00022 -0.00329 -0.00684 -0.01044 -0.01409 -0.01779 -0.02153 -0.02530 -0.02909 -0.03286 -0.03662 -0.04033 -0.04399 -0.04759 -0.05115 +0.06860 0.06955 0.07017 0.07045 0.07042 0.07010 0.06954 0.06875 0.06777 0.06663 0.06535 0.06393 0.06237 0.06069 0.05889 0.05696 0.05492 0.05276 0.05048 0.04809 0.04557 0.04294 0.04019 0.03733 0.03436 0.03129 0.02812 0.02485 0.02151 0.01808 0.01458 0.01102 0.00739 0.00371 -0.00002 -0.00381 -0.00766 -0.01157 -0.01555 -0.01959 -0.02369 -0.02784 -0.03203 -0.03623 -0.04041 -0.04454 -0.04861 -0.05261 -0.05652 -0.06038 -0.06420 -0.06805 +0.07147 0.07161 0.07143 0.07098 0.07031 0.06948 0.06849 0.06736 0.06609 0.06469 0.06315 0.06148 0.05968 0.05775 0.05568 0.05349 0.05116 0.04869 0.04609 0.04336 0.04049 0.03749 0.03437 0.03112 0.02775 0.02428 0.02070 0.01703 0.01328 0.00945 0.00554 0.00157 -0.00247 -0.00658 -0.01077 -0.01502 -0.01936 -0.02378 -0.02827 -0.03284 -0.03745 -0.04207 -0.04668 -0.05123 -0.05569 -0.06005 -0.06431 -0.06849 -0.07261 -0.07675 -0.08097 -0.08531 +0.07016 0.06992 0.06949 0.06890 0.06814 0.06723 0.06617 0.06495 0.06358 0.06206 0.06039 0.05858 0.05660 0.05448 0.05220 0.04977 0.04717 0.04442 0.04151 0.03845 0.03523 0.03187 0.02836 0.02473 0.02097 0.01710 0.01312 0.00905 0.00489 0.00065 -0.00368 -0.00809 -0.01258 -0.01716 -0.02184 -0.02662 -0.03149 -0.03645 -0.04148 -0.04654 -0.05159 -0.05660 -0.06150 -0.06629 -0.07094 -0.07548 -0.07992 -0.08436 -0.08886 -0.09351 -0.09836 -0.10339 +0.06663 0.06654 0.06627 0.06583 0.06519 0.06437 0.06336 0.06217 0.06079 0.05922 0.05748 0.05555 0.05343 0.05113 0.04865 0.04597 0.04311 0.04006 0.03683 0.03343 0.02986 0.02612 0.02224 0.01822 0.01407 0.00979 0.00542 0.00093 -0.00365 -0.00833 -0.01310 -0.01799 -0.02298 -0.02809 -0.03331 -0.03864 -0.04407 -0.04956 -0.05507 -0.06056 -0.06597 -0.07124 -0.07636 -0.08132 -0.08614 -0.09089 -0.09567 -0.10057 -0.10569 -0.11109 -0.11674 -0.12259 +0.06227 0.06251 0.06255 0.06237 0.06196 0.06132 0.06043 0.05931 0.05795 0.05637 0.05456 0.05252 0.05026 0.04777 0.04507 0.04214 0.03900 0.03564 0.03208 0.02833 0.02439 0.02029 0.01602 0.01160 0.00705 0.00237 -0.00243 -0.00734 -0.01237 -0.01751 -0.02279 -0.02819 -0.03373 -0.03939 -0.04518 -0.05107 -0.05703 -0.06300 -0.06894 -0.07477 -0.08044 -0.08592 -0.09121 -0.09635 -0.10144 -0.10658 -0.11189 -0.11749 -0.12346 -0.12978 -0.13638 -0.14307 +0.05771 0.05829 0.05866 0.05879 0.05864 0.05821 0.05748 0.05646 0.05514 0.05353 0.05165 0.04950 0.04708 0.04440 0.04146 0.03827 0.03484 0.03116 0.02727 0.02316 0.01885 0.01436 0.00970 0.00489 -0.00008 -0.00518 -0.01041 -0.01578 -0.02129 -0.02695 -0.03276 -0.03872 -0.04483 -0.05107 -0.05743 -0.06386 -0.07032 -0.07673 -0.08301 -0.08910 -0.09497 -0.10063 -0.10613 -0.11158 -0.11710 -0.12282 -0.12889 -0.13542 -0.14243 -0.14980 -0.15735 -0.16480 +0.05320 0.05408 0.05476 0.05518 0.05530 0.05509 0.05453 0.05362 0.05234 0.05072 0.04877 0.04650 0.04391 0.04103 0.03784 0.03438 0.03064 0.02664 0.02240 0.01793 0.01324 0.00836 0.00330 -0.00193 -0.00732 -0.01287 -0.01857 -0.02444 -0.03047 -0.03667 -0.04305 -0.04959 -0.05629 -0.06311 -0.07003 -0.07697 -0.08388 -0.09066 -0.09722 -0.10353 -0.10960 -0.11550 -0.12133 -0.12723 -0.13334 -0.13985 -0.14691 -0.15457 -0.16275 -0.17121 -0.17960 -0.18762 +0.04896 0.05002 0.05093 0.05160 0.05197 0.05198 0.05159 0.05079 0.04957 0.04793 0.04590 0.04350 0.04074 0.03764 0.03420 0.03045 0.02640 0.02207 0.01747 0.01263 0.00756 0.00228 -0.00320 -0.00887 -0.01471 -0.02073 -0.02693 -0.03332 -0.03991 -0.04669 -0.05366 -0.06080 -0.06809 -0.07549 -0.08294 -0.09037 -0.09767 -0.10476 -0.11157 -0.11812 -0.12446 -0.13069 -0.13697 -0.14345 -0.15035 -0.15787 -0.16614 -0.17510 -0.18449 -0.19391 -0.20296 -0.21142 +0.04506 0.04623 0.04726 0.04811 0.04869 0.04889 0.04867 0.04798 0.04681 0.04516 0.04305 0.04052 0.03757 0.03424 0.03054 0.02650 0.02213 0.01745 0.01249 0.00727 0.00179 -0.00390 -0.00981 -0.01593 -0.02225 -0.02877 -0.03551 -0.04247 -0.04964 -0.05702 -0.06459 -0.07234 -0.08023 -0.08819 -0.09616 -0.10402 -0.11168 -0.11905 -0.12614 -0.13297 -0.13964 -0.14630 -0.15314 -0.16039 -0.16831 -0.17710 -0.18675 -0.19704 -0.20752 -0.21772 -0.22733 -0.23625 +0.04142 0.04269 0.04381 0.04476 0.04547 0.04584 0.04577 0.04519 0.04407 0.04241 0.04021 0.03754 0.03440 0.03083 0.02687 0.02252 0.01782 0.01279 0.00745 0.00183 -0.00405 -0.01018 -0.01655 -0.02314 -0.02996 -0.03702 -0.04433 -0.05187 -0.05965 -0.06765 -0.07585 -0.08421 -0.09269 -0.10120 -0.10965 -0.11793 -0.12593 -0.13362 -0.14100 -0.14816 -0.15523 -0.16241 -0.16998 -0.17822 -0.18742 -0.19764 -0.20874 -0.22027 -0.23169 -0.24257 -0.25272 -0.26218 +0.03800 0.03937 0.04056 0.04157 0.04237 0.04285 0.04290 0.04242 0.04135 0.03966 0.03738 0.03456 0.03122 0.02741 0.02317 0.01851 0.01347 0.00807 0.00235 -0.00368 -0.01000 -0.01658 -0.02342 -0.03051 -0.03787 -0.04550 -0.05340 -0.06156 -0.06996 -0.07860 -0.08743 -0.09641 -0.10547 -0.11451 -0.12344 -0.13212 -0.14048 -0.14850 -0.15620 -0.16372 -0.17127 -0.17914 -0.18765 -0.19714 -0.20778 -0.21952 -0.23201 -0.24465 -0.25692 -0.26845 -0.27921 -0.28929 +0.03474 0.03622 0.03748 0.03855 0.03939 0.03993 0.04006 0.03966 0.03863 0.03693 0.03456 0.03158 0.02804 0.02398 0.01944 0.01446 0.00907 0.00329 -0.00283 -0.00929 -0.01605 -0.02310 -0.03044 -0.03807 -0.04599 -0.05421 -0.06273 -0.07152 -0.08057 -0.08985 -0.09932 -0.10891 -0.11856 -0.12814 -0.13755 -0.14665 -0.15537 -0.16371 -0.17174 -0.17970 -0.18788 -0.19663 -0.20631 -0.21721 -0.22939 -0.24265 -0.25645 -0.27013 -0.28319 -0.29540 -0.30683 -0.31762 +0.03162 0.03320 0.03454 0.03565 0.03652 0.03710 0.03728 0.03692 0.03592 0.03420 0.03173 0.02859 0.02484 0.02052 0.01569 0.01037 0.00462 -0.00155 -0.00809 -0.01499 -0.02221 -0.02976 -0.03762 -0.04581 -0.05433 -0.06317 -0.07233 -0.08177 -0.09148 -0.10141 -0.11153 -0.12175 -0.13199 -0.14212 -0.15201 -0.16153 -0.17059 -0.17925 -0.18768 -0.19620 -0.20518 -0.21502 -0.22603 -0.23845 -0.25223 -0.26698 -0.28201 -0.29666 -0.31050 -0.32345 -0.33562 -0.34720 +0.02862 0.03030 0.03171 0.03287 0.03375 0.03434 0.03454 0.03421 0.03322 0.03147 0.02891 0.02560 0.02162 0.01704 0.01190 0.00624 0.00010 -0.00647 -0.01344 -0.02079 -0.02850 -0.03657 -0.04499 -0.05377 -0.06290 -0.07238 -0.08219 -0.09230 -0.10268 -0.11329 -0.12406 -0.13493 -0.14579 -0.15648 -0.16685 -0.17675 -0.18614 -0.19515 -0.20409 -0.21333 -0.22329 -0.23435 -0.24682 -0.26084 -0.27623 -0.29242 -0.30864 -0.32423 -0.33889 -0.35263 -0.36562 -0.37804 +0.02570 0.02749 0.02897 0.03017 0.03107 0.03166 0.03185 0.03152 0.03053 0.02873 0.02607 0.02260 0.01839 0.01353 0.00806 0.00205 -0.00447 -0.01146 -0.01889 -0.02671 -0.03493 -0.04354 -0.05254 -0.06193 -0.07171 -0.08185 -0.09233 -0.10313 -0.11419 -0.12549 -0.13695 -0.14849 -0.15997 -0.17123 -0.18205 -0.19230 -0.20204 -0.21149 -0.22105 -0.23117 -0.24225 -0.25465 -0.26867 -0.28434 -0.30135 -0.31895 -0.33631 -0.35285 -0.36837 -0.38297 -0.39683 -0.41016 +0.02287 0.02475 0.02630 0.02754 0.02845 0.02903 0.02921 0.02885 0.02784 0.02600 0.02323 0.01958 0.01513 0.00998 0.00418 -0.00220 -0.00912 -0.01655 -0.02443 -0.03276 -0.04151 -0.05069 -0.06029 -0.07032 -0.08075 -0.09157 -0.10275 -0.11424 -0.12602 -0.13802 -0.15020 -0.16243 -0.17456 -0.18635 -0.19759 -0.20819 -0.21832 -0.22832 -0.23865 -0.24976 -0.26207 -0.27592 -0.29157 -0.30894 -0.32756 -0.34653 -0.36502 -0.38253 -0.39896 -0.41447 -0.42927 -0.44358 +0.02013 0.02207 0.02369 0.02496 0.02589 0.02646 0.02661 0.02621 0.02515 0.02326 0.02038 0.01653 0.01184 0.00639 0.00025 -0.00651 -0.01385 -0.02173 -0.03010 -0.03894 -0.04825 -0.05801 -0.06825 -0.07893 -0.09004 -0.10156 -0.11345 -0.12566 -0.13817 -0.15092 -0.16384 -0.17679 -0.18954 -0.20183 -0.21346 -0.22445 -0.23505 -0.24571 -0.25692 -0.26914 -0.28278 -0.29816 -0.31550 -0.33461 -0.35483 -0.37516 -0.39478 -0.41328 -0.43068 -0.44716 -0.46294 -0.47829 +0.01747 0.01945 0.02112 0.02243 0.02337 0.02392 0.02404 0.02359 0.02247 0.02050 0.01751 0.01347 0.00852 0.00276 -0.00373 -0.01089 -0.01867 -0.02701 -0.03588 -0.04526 -0.05514 -0.06553 -0.07641 -0.08777 -0.09958 -0.11182 -0.12443 -0.13739 -0.15066 -0.16419 -0.17788 -0.19155 -0.20491 -0.21766 -0.22969 -0.24110 -0.25227 -0.26369 -0.27589 -0.28932 -0.30436 -0.32136 -0.34045 -0.36133 -0.38315 -0.40482 -0.42557 -0.44511 -0.46353 -0.48103 -0.49786 -0.51432 +0.01491 0.01689 0.01859 0.01993 0.02088 0.02142 0.02150 0.02099 0.01979 0.01774 0.01461 0.01038 0.00516 -0.00092 -0.00778 -0.01535 -0.02357 -0.03239 -0.04178 -0.05172 -0.06221 -0.07323 -0.08478 -0.09684 -0.10938 -0.12234 -0.13571 -0.14944 -0.16350 -0.17785 -0.19234 -0.20671 -0.22063 -0.23384 -0.24629 -0.25820 -0.27002 -0.28231 -0.29558 -0.31029 -0.32682 -0.34551 -0.36642 -0.38909 -0.41250 -0.43551 -0.45741 -0.47803 -0.49752 -0.51610 -0.53403 -0.55167 + diff --git a/Tune_Cases/DISCON.IN b/Tune_Cases/DISCON.IN new file mode 100644 index 000000000..1684aa6dd --- /dev/null +++ b/Tune_Cases/DISCON.IN @@ -0,0 +1,103 @@ +! Controller parameter input file for the 5MW_Land wind turbine +! - File written using NREL Baseline Controller tuning logic on 10/02/19 + +!------- DEBUG ------------------------------------------------------------ +1 ! LoggingLevel - {0: write no debug files, 1: write standard output .dbg-file, 2: write standard output .dbg-file and complete avrSWAP-array .dbg2-file + +!------- CONTROLLER FLAGS ------------------------------------------------- +1 ! F_LPFType - {1: first-order low-pass filter, 2: second-order low-pass filter}, [rad/s] (currently filters generator speed and pitch control signals) +0 ! F_NotchType - Notch on the measured generator speed {0: disable, 1: enable} +0 ! IPC_ControlMode - Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution) {0: off, 1: 1P reductions, 2: 1P+2P reductions} +2 ! VS_ControlMode - Generator torque control mode in above rated conditions {0: constant torque, 1: constant power, 2: TSR tracking PI control} +1 ! PC_ControlMode - Blade pitch control mode {0: No pitch, fix to fine pitch, 1: active PI blade pitch control} +0 ! Y_ControlMode - Yaw control mode {0: no yaw control, 1: yaw rate control, 2: yaw-by-IPC} +1 ! SS_Mode - Setpoint Smoother mode {0: no setpoint smoothing, 1: introduce setpoint smoothing} +2 ! WE_Mode - Wind speed estimator mode {0: One-second low pass filtered hub height wind speed, 1: Imersion and Invariance Estimator (Ortega et al.)} +1 ! PS_Mode - Peak shaving mode {0: no peak shaving, 1: implement peak shaving} + +!------- FILTERS ---------------------------------------------------------- +4.630253480546613 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz] +0 ! F_LPFDamping - Damping coefficient [used only when F_FilterType = 2] +0 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s] +0 0 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-] +0.5 ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [Hz]. + +!------- BLADE PITCH CONTROL ---------------------------------------------- +136 ! PC_GS_n - Amount of gain-scheduling table entries +0. 0.02213546 0.03529397 0.04532979 0.05390455 0.06152115 0.06834772 0.07463941 0.0805748 0.0861644 0.09140002 0.09649561 0.10126524 0.10593769 0.11038267 0.11473751 0.11890645 0.12302122 0.12695386 0.13088595 0.13461563 0.13834687 0.14196041 0.14551431 0.14903823 0.1524332 0.15583161 0.15913855 0.16239386 0.16565304 0.16878668 0.1719182 0.17503408 0.17805189 0.18107507 0.18407263 0.18699401 0.18992101 0.1928231 0.19565677 0.1984955 0.20131828 0.20407024 0.2068263 0.20958195 0.21225736 0.21493607 0.21761843 0.2202399 0.22284822 0.22546056 0.22804367 0.23058995 0.2331405 0.2356938 0.23818454 0.2406792 0.2431782 0.24564725 0.24808951 0.25053514 0.25298442 0.25537868 0.25777304 0.26016986 0.2625513 0.2648963 0.26724271 0.26959085 0.27190982 0.27420946 0.27651057 0.27881363 0.28108029 0.28333948 0.28560068 0.28786443 0.29008857 0.29231251 0.29453891 0.29676708 0.29895701 0.30114904 0.30334354 0.30553887 0.30769817 0.30985921 0.31202215 0.31418655 0.31631398 0.31844196 0.32057064 0.32270018 0.32479655 0.32688959 0.32898275 0.33107635 0.33314453 0.33520364 0.33726287 0.33932258 0.34136653 0.34339459 0.34542303 0.34745227 0.34947646 0.35147715 0.35347864 0.35548136 0.35748577 0.35946701 0.36144502 0.36342469 0.36540647 0.36737816 0.36933562 0.37129481 0.37325592 0.37521913 0.37715585 0.37909299 0.38103103 0.38297013 0.38489667 0.38680872 0.38872069 0.39063275 0.39254504 0.39443197 0.39631595 0.39819934 0.40008235 0.40195758 0.40381318 0.4056679 0.40752199 ! PC_GS_angles - Gain-schedule table: pitch angles +-0.02253679 -0.02175039 -0.02101063 -0.02031347 -0.01965535 -0.01903307 -0.01844378 -0.01788493 -0.01735422 -0.01684957 -0.01636911 -0.01591114 -0.01547412 -0.01505665 -0.01465744 -0.01427531 -0.0139092 -0.01355812 -0.01322116 -0.01289748 -0.01258633 -0.01228697 -0.01199876 -0.01172108 -0.01145337 -0.0111951 -0.01094578 -0.01070495 -0.01047218 -0.01024708 -0.01002927 -0.00981841 -0.00961417 -0.00941624 -0.00922433 -0.00903818 -0.00885752 -0.00868212 -0.00851175 -0.0083462 -0.00818526 -0.00802875 -0.00787649 -0.0077283 -0.00758403 -0.00744352 -0.00730662 -0.0071732 -0.00704313 -0.00691628 -0.00679253 -0.00667178 -0.00655391 -0.00643882 -0.00632642 -0.00621662 -0.00610931 -0.00600442 -0.00590187 -0.00580159 -0.00570349 -0.0056075 -0.00551356 -0.00542161 -0.00533158 -0.00524341 -0.00515704 -0.00507243 -0.00498951 -0.00490824 -0.00482856 -0.00475044 -0.00467382 -0.00459867 -0.00452493 -0.00445258 -0.00438158 -0.00431188 -0.00424344 -0.00417625 -0.00411026 -0.00404544 -0.00398176 -0.00391919 -0.0038577 -0.00379726 -0.00373785 -0.00367945 -0.00362201 -0.00356553 -0.00350998 -0.00345533 -0.00340157 -0.00334867 -0.00329661 -0.00324537 -0.00319493 -0.00314528 -0.00309639 -0.00304825 -0.00300084 -0.00295415 -0.00290815 -0.00286284 -0.0028182 -0.0027742 -0.00273085 -0.00268812 -0.00264601 -0.00260449 -0.00256356 -0.0025232 -0.0024834 -0.00244415 -0.00240545 -0.00236727 -0.0023296 -0.00229245 -0.00225578 -0.00221961 -0.00218391 -0.00214868 -0.00211391 -0.00207959 -0.00204571 -0.00201226 -0.00197923 -0.00194663 -0.00191443 -0.00188263 -0.00185122 -0.0018202 -0.00178956 -0.00175929 -0.00172938 -0.00169984 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains +-0.00978033 -0.00948145 -0.00920029 -0.00893533 -0.0086852 -0.00844869 -0.00822472 -0.00801232 -0.00781062 -0.00761882 -0.00743621 -0.00726216 -0.00709606 -0.00693739 -0.00678566 -0.00664043 -0.00650129 -0.00636785 -0.00623979 -0.00611677 -0.00599851 -0.00588473 -0.00577519 -0.00566966 -0.00556791 -0.00546975 -0.00537499 -0.00528346 -0.00519499 -0.00510944 -0.00502666 -0.00494652 -0.00486889 -0.00479367 -0.00472073 -0.00464998 -0.00458132 -0.00451465 -0.0044499 -0.00438698 -0.00432582 -0.00426633 -0.00420846 -0.00415214 -0.00409731 -0.0040439 -0.00399187 -0.00394117 -0.00389173 -0.00384352 -0.00379649 -0.00375059 -0.0037058 -0.00366206 -0.00361934 -0.0035776 -0.00353682 -0.00349695 -0.00345798 -0.00341986 -0.00338258 -0.0033461 -0.0033104 -0.00327545 -0.00324123 -0.00320772 -0.00317489 -0.00314273 -0.00311122 -0.00308033 -0.00305005 -0.00302036 -0.00299124 -0.00296267 -0.00293465 -0.00290715 -0.00288017 -0.00285368 -0.00282767 -0.00280213 -0.00277705 -0.00275241 -0.00272821 -0.00270443 -0.00268106 -0.00265809 -0.00263551 -0.00261331 -0.00259148 -0.00257002 -0.0025489 -0.00252813 -0.0025077 -0.00248759 -0.00246781 -0.00244833 -0.00242916 -0.00241029 -0.00239171 -0.00237342 -0.0023554 -0.00233765 -0.00232017 -0.00230295 -0.00228598 -0.00226926 -0.00225278 -0.00223654 -0.00222054 -0.00220476 -0.0021892 -0.00217386 -0.00215874 -0.00214382 -0.00212911 -0.0021146 -0.00210028 -0.00208616 -0.00207223 -0.00205848 -0.00204491 -0.00203152 -0.00201831 -0.00200526 -0.00199238 -0.00197967 -0.00196712 -0.00195473 -0.00194249 -0.0019304 -0.00191847 -0.00190668 -0.00189503 -0.00188353 -0.00187216 -0.00186093 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains +0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_KD - Gain-schedule table: pitch controller kd gains +0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) +1.5707 ! PC_MaxPit - Maximum physical pitch limit, [rad]. +-0.087266 ! PC_MinPit - Minimum physical pitch limit, [rad]. +0.13962 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. +-0.13962 ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. +122.90957658394467 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. +0.0 ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad] +0.003490658 ! PC_Switch - Angle above lowest minimum pitch angle for switch, [rad] +0 ! Z_EnableSine - Enable/disable sine pitch excitation, used to validate for dynamic induction control, will be removed later, [-] +0.0349066 ! Z_PitchAmplitude - Amplitude of sine pitch excitation, [rad] +0 ! Z_PitchFrequency - Frequency of sine pitch excitation, [rad/s] + +!------- INDIVIDUAL PITCH CONTROL ----------------------------------------- +0.0 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] +0.0 0.0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] +0.0 0.0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. +0.0 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] + +!------- VS TORQUE CONTROL ------------------------------------------------ +100.0 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-] +40680.312624664395 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] +150000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. +44748.34388713084 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. +0.0 ! VS_MinTq - Minimum generator (HSS side), [Nm]. +0.0 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] +0.0 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] +5000000 ! VS_RtPwr - Wind turbine rated power [W] +40680.312624664395 ! VS_RtTq - Rated torque, [Nm]. +122.90957658394467 ! VS_RefSpd - Rated generator speed [rad/s] +1 ! VS_n - Number of generator PI torque controller gains +-1545.1137906906267 ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-387.1039217727707 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) + +!------- SETPOINT SMOOTHER --------------------------------------------- +30 ! SS_VSGainBias - Variable speed torque controller gain bias, [(rad/s)/rad]. +0.001 ! SS_PCGainBias - Collective pitch controller gain bias, [(rad/s)/Nm]. + +!------- WIND SPEED ESTIMATOR --------------------------------------------- +63.0 ! WE_BladeRadius - Blade length [m] +4 ! WE_CP_n - Amount of parameters in the Cp array +0.0 0.0 0.0 0.0 ! WE_CP - Parameters that define the parameterized CP(lambda) function +0.0 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] +97.0 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] +40469564.444 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2] +1.225 ! WE_RhoAir - Air density, [kg m^-3] +"Cp_Ct_Cq.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) +52 29 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios +210 ! WE_FOPoles_N - Number of first-order system poles used in EKF + 4. 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5. 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6. 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7. 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8. 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9. 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10. 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11. 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 12. 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 13. 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9 14. 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 14.9 15. 15.1 15.2 15.3 15.4 15.5 15.6 15.7 15.8 15.9 16. 16.1 16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 17. 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 18. 18.1 18.2 18.3 18.4 18.5 18.6 18.7 18.8 18.9 19. 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9 20. 20.1 20.2 20.3 20.4 20.5 20.6 20.7 20.8 20.9 21. 21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8 21.9 22. 22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8 22.9 23. 23.1 23.2 23.3 23.4 23.5 23.6 23.7 23.8 23.9 24. 24.1 24.2 24.3 24.4 24.5 24.6 24.7 24.8 24.9 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] +-0.02151068 -0.02204845 -0.02258622 -0.02312398 -0.02366175 -0.02419952 -0.02473728 -0.02527505 -0.02581282 -0.02635059 -0.02688835 -0.02742612 -0.02796389 -0.02850165 -0.02903942 -0.02957719 -0.03011495 -0.03065272 -0.03119049 -0.03172826 -0.03226602 -0.03280379 -0.03334156 -0.03387932 -0.03441709 -0.03495486 -0.03549263 -0.03603039 -0.03656816 -0.03710593 -0.03764369 -0.03818146 -0.03871923 -0.03925699 -0.03979476 -0.04033253 -0.0408703 -0.04140806 -0.04194583 -0.0424836 -0.04302136 -0.04355913 -0.0440969 -0.04463467 -0.04517243 -0.0457102 -0.04624797 -0.04678573 -0.0473235 -0.04786127 -0.04839903 -0.0489368 -0.04947457 -0.05001234 -0.0505501 -0.05108787 -0.05162564 -0.0521634 -0.05270117 -0.05323894 -0.05377671 -0.05431447 -0.05485224 -0.05539001 -0.05592777 -0.05646554 -0.05700331 -0.05754107 -0.05807884 -0.05861661 -0.05915438 -0.05969214 -0.06022991 -0.06076768 -0.05963612 -0.05145035 -0.04909405 -0.0485834 -0.04902569 -0.05005874 -0.05144802 -0.05311374 -0.05502931 -0.05711571 -0.05929327 -0.06166595 -0.06405049 -0.06660033 -0.06917487 -0.07187559 -0.07458689 -0.07742473 -0.08023317 -0.08319769 -0.08606723 -0.08906988 -0.09205042 -0.09507362 -0.0981755 -0.10121676 -0.10437601 -0.10751541 -0.11068545 -0.11396523 -0.11715034 -0.12042454 -0.12376312 -0.12702382 -0.1303688 -0.13374267 -0.13705361 -0.14043952 -0.14384645 -0.14719472 -0.15061701 -0.15407716 -0.15747246 -0.16094386 -0.1644846 -0.16793784 -0.1714649 -0.17506487 -0.17860157 -0.18216573 -0.18578893 -0.18939841 -0.19297407 -0.1966009 -0.2002752 -0.20385363 -0.20748051 -0.21115806 -0.21481043 -0.21844447 -0.22212957 -0.22586827 -0.22952503 -0.23322878 -0.23698715 -0.24075826 -0.2444901 -0.24827307 -0.25210748 -0.25591535 -0.25971844 -0.26356709 -0.26746119 -0.27130046 -0.27515629 -0.27905147 -0.28298579 -0.28684611 -0.29073464 -0.29465827 -0.29861516 -0.30249672 -0.30641233 -0.31036412 -0.31434897 -0.31826506 -0.32221836 -0.32621119 -0.3302442 -0.33420809 -0.3382106 -0.34225298 -0.34633637 -0.35036028 -0.35441217 -0.35850248 -0.36263212 -0.36672218 -0.37082111 -0.37495654 -0.37912941 -0.38328856 -0.38743211 -0.39161008 -0.39582301 -0.40005114 -0.40423353 -0.40844727 -0.41269335 -0.41697296 -0.42120348 -0.42544951 -0.42972681 -0.43403657 -0.43833714 -0.44261364 -0.44692107 -0.45126129 -0.45563597 -0.45994653 -0.46428732 -0.46866181 -0.47307211 -0.47747123 -0.48185249 -0.48626774 -0.49071804 -0.49520442 -0.49963345 -0.50408588 -0.50856997 -0.51308593 -0.51760547 -0.5220828 -0.52658674 -0.53111728 ! WE_FOPoles - First order system poles + +!------- YAW CONTROL ------------------------------------------------------ +0.0 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] +0.0 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] +1 ! Y_IPC_n - Number of controller gains (yaw-by-IPC) +0.0 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp +0.0 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki +0.0 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. +0.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. +0.0 ! Y_MErrSet - Yaw alignment error, set point [rad] +0.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] +0.0 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] +0.0 ! Y_Rate - Yaw rate [rad/s] + +!------- TOWER FORE-AFT DAMPING ------------------------------------------- +-1 ! FA_KI - Integral gain for the fore-aft tower damper controller, -1 = off / >0 = on [rad s/m] - !NJA - Make this a flag +0.0 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] +0.0 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] + +!------- PEAK SHAVING ------------------------------------------- +210 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) + 4. 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5. 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6. 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7. 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8. 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9. 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10. 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11. 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 12. 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 13. 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9 14. 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 14.9 15. 15.1 15.2 15.3 15.4 15.5 15.6 15.7 15.8 15.9 16. 16.1 16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 17. 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 18. 18.1 18.2 18.3 18.4 18.5 18.6 18.7 18.8 18.9 19. 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9 20. 20.1 20.2 20.3 20.4 20.5 20.6 20.7 20.8 20.9 21. 21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8 21.9 22. 22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8 22.9 23. 23.1 23.2 23.3 23.4 23.5 23.6 23.7 23.8 23.9 24. 24.1 24.2 24.3 24.4 24.5 24.6 24.7 24.8 24.9 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] +-0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01481359 -0.00852004 -0.00261207 0.00300263 0.00835639 0.01335417 0.01816144 0.02266468 0.02700407 0.03107901 0.03503503 0.03873668 0.04233691 0.04576122 0.0490487 0.05224851 0.05526934 0.04650657 0.04921601 0.05191682 0.05454926 0.05716279 0.05977029 0.06234054 0.06487328 0.06740249 0.0699266 0.07239142 0.07485469 0.0773173 0.07975141 0.08215689 0.08456229 0.08696831 0.08932766 0.09168042 0.09403387 0.09638001 0.09868437 0.10098989 0.10329739 0.10558875 0.107852 0.11011795 0.11238745 0.11463538 0.11686407 0.11909634 0.12133285 0.12354431 0.12574081 0.12793997 0.13014217 0.13231708 0.1344781 0.13664176 0.13880903 0.14095272 0.14308312 0.14521797 0.14735847 0.14948186 0.15159016 0.15370444 0.15582544 0.15793469 0.16002168 0.16211269 0.16420811 0.16629762 0.16835609 0.17041755 0.17248274 0.17455211 0.17658169 0.17861473 0.1806522 0.1826952 0.18471218 0.18672192 0.18873761 0.1907605 0.19277392 0.19476714 0.19676698 0.19877416 0.20078773 0.20276435 0.20474671 0.20673544 0.20873123 0.2107031 0.21266276 0.21462751 0.21659806 0.21856498 0.22049786 0.22243509 0.22437749 0.22632594 0.2282473 0.23015988 0.23207809 0.23400295 0.23592811 0.23782196 0.23972214 0.24162947 0.24354474 0.24544163 0.2473258 0.24921658 0.25111458 0.2530204 0.25488953 0.25676337 0.2586437 0.26053106 0.26241124 0.26426775 0.2661302 0.26799913 0.2698751 0.2717283 0.27357125 0.27542013 0.27727554 0.2791381 0.28096271 0.28278987 0.28462312 0.2864631 0.28830169 0.29010619 0.29191673 0.29373402 0.29555876 0.29737371 0.29916551 0.30096387 0.30276933 0.30458242 0.30637934 0.30816157 0.30995024 0.31174576 0.31354853 0.31532916 0.31710053 0.31887775 0.32066115 0.32245108 0.32421484 ! PS_BldPitchMin - Minimum blade pitch angles [rad] diff --git a/Tune_Cases/DISCON_NREL15MW.IN b/Tune_Cases/DISCON_NREL15MW.IN new file mode 100644 index 000000000..e06c1c9bb --- /dev/null +++ b/Tune_Cases/DISCON_NREL15MW.IN @@ -0,0 +1,103 @@ +! Controller parameter input file for the NREL15mw_OpenFAST_prelim_v4 wind turbine +! - File written using NREL Baseline Controller tuning logic on 10/01/19 + +!------- DEBUG ------------------------------------------------------------ +1 ! LoggingLevel - {0: write no debug files, 1: write standard output .dbg-file, 2: write standard output .dbg-file and complete avrSWAP-array .dbg2-file + +!------- CONTROLLER FLAGS ------------------------------------------------- +1 ! F_LPFType - {1: first-order low-pass filter, 2: second-order low-pass filter}, [rad/s] (currently filters generator speed and pitch control signals) +0 ! F_NotchType - Notch on the measured generator speed {0: disable, 1: enable} +0 ! IPC_ControlMode - Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution) {0: off, 1: 1P reductions, 2: 1P+2P reductions} +2 ! VS_ControlMode - Generator torque control mode in above rated conditions {0: constant torque, 1: constant power, 2: TSR tracking PI control} +1 ! PC_ControlMode - Blade pitch control mode {0: No pitch, fix to fine pitch, 1: active PI blade pitch control} +0 ! Y_ControlMode - Yaw control mode {0: no yaw control, 1: yaw rate control, 2: yaw-by-IPC} +1 ! SS_Mode - Setpoint Smoother mode {0: no setpoint smoothing, 1: introduce setpoint smoothing} +2 ! WE_Mode - Wind speed estimator mode {0: One-second low pass filtered hub height wind speed, 1: Imersion and Invariance Estimator (Ortega et al.)} +1 ! PS_Mode - Peak shaving mode {0: no peak shaving, 1: implement peak shaving} + +!------- FILTERS ---------------------------------------------------------- +1.570796326 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz] +0 ! F_LPFDamping - Damping coefficient [used only when F_FilterType = 2] +0 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s] +0 0 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-] +0.5 ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [Hz]. + +!------- BLADE PITCH CONTROL ---------------------------------------------- +136 ! PC_GS_n - Amount of gain-scheduling table entries +0. 0.020256 0.03332726 0.04384533 0.05285897 0.06098095 0.0683739 0.07527681 0.08180782 0.08804439 0.09393203 0.09959529 0.10510496 0.11035197 0.11548427 0.12046262 0.12529554 0.13003978 0.13462978 0.13916723 0.14355684 0.14791037 0.15213125 0.15631919 0.16039651 0.1644349 0.1683878 0.17228887 0.17613395 0.17990923 0.18366134 0.18732062 0.19096834 0.19454319 0.19808351 0.20159304 0.20503245 0.20846304 0.21183023 0.21516765 0.21849054 0.22174071 0.22498441 0.22819373 0.23135658 0.23451421 0.23762464 0.2407075 0.24378595 0.2468094 0.24981721 0.25282098 0.25576684 0.25870376 0.26163702 0.26451402 0.26738435 0.2702515 0.27306798 0.27587635 0.27868204 0.28144576 0.28419677 0.28694553 0.28966309 0.29236066 0.29505604 0.29773223 0.30037881 0.303023 0.3056614 0.30825919 0.31085446 0.3134475 0.31600991 0.31855897 0.32110571 0.32363936 0.32614484 0.32864796 0.33114905 0.33361989 0.33608194 0.33854196 0.34099154 0.34341533 0.3458371 0.34825716 0.35065537 0.35304125 0.35542509 0.35780697 0.36015841 0.36250745 0.36485432 0.3671914 0.36950687 0.3718198 0.37413044 0.37642575 0.37870606 0.38098377 0.38325913 0.38551585 0.38776234 0.39000628 0.39224794 0.39446964 0.39668423 0.39889642 0.40110649 0.40329679 0.40548162 0.40766422 0.40984486 0.41200694 0.41416387 0.41631855 0.41847115 0.42060682 0.42273639 0.42486345 0.42698821 0.42760567 0.42760567 0.42760567 0.42760567 0.42760567 0.42760567 0.42760567 0.42760567 0.42760567 0.42760567 0.42760567 0.42760567 0.42760567 ! PC_GS_angles - Gain-schedule table: pitch angles +-4.46003791 -4.32216423 -4.19157647 -4.06771197 -3.95006453 -3.83817755 -3.73163805 -3.63007161 -3.53313798 -3.44052725 -3.35195655 -3.26716715 -3.18592198 -3.10800334 -3.03321105 -2.96136063 -2.89228187 -2.82581742 -2.76182163 -2.70015946 -2.64070557 -2.58334341 -2.52796449 -2.47446773 -2.42275876 -2.37274944 -2.32435732 -2.27750521 -2.23212075 -2.18813604 -2.1454873 -2.10411458 -2.06396146 -2.02497479 -1.98710447 -1.95030323 -1.91452643 -1.87973187 -1.84587967 -1.81293204 -1.78085321 -1.74960926 -1.71916801 -1.68949893 -1.66057299 -1.63236264 -1.60484163 -1.57798501 -1.551769 -1.52617095 -1.50116927 -1.47674335 -1.45287354 -1.42954106 -1.40672796 -1.3844171 -1.36259206 -1.34123715 -1.32033735 -1.29987826 -1.27984607 -1.26022758 -1.24101009 -1.22218144 -1.20372994 -1.18564437 -1.16791395 -1.15052832 -1.13347753 -1.116752 -1.10034249 -1.08424015 -1.06843642 -1.05292307 -1.03769218 -1.0227361 -1.00804746 -0.99361915 -0.97944431 -0.96551632 -0.95182878 -0.93837553 -0.92515059 -0.91214821 -0.89936281 -0.88678901 -0.8744216 -0.86225553 -0.85028593 -0.83850809 -0.82691742 -0.8155095 -0.80428004 -0.79322489 -0.78234002 -0.77162153 -0.76106563 -0.75066864 -0.74042702 -0.73033729 -0.72039611 -0.71060022 -0.70094645 -0.69143175 -0.68205311 -0.67280765 -0.66369255 -0.65470508 -0.64584256 -0.63710241 -0.62848211 -0.61997922 -0.61159136 -0.60331619 -0.59515148 -0.58709502 -0.57914467 -0.57129835 -0.56355404 -0.55590975 -0.54836356 -0.54091359 -0.53355802 -0.52629506 -0.51912298 -0.51204007 -0.50504469 -0.49813523 -0.4913101 -0.48456778 -0.47790677 -0.47132561 -0.46482286 -0.45839714 -0.45204708 -0.44577136 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains +-1.89116623 -1.83984083 -1.79122773 -1.74511744 -1.70132155 -1.65967006 -1.62000925 -1.58219973 -1.54611484 -1.51163921 -1.47866753 -1.4471035 -1.41685886 -1.38785256 -1.36001009 -1.33326277 -1.30754724 -1.28280493 -1.2589816 -1.23602701 -1.21389447 -1.19254061 -1.17192504 -1.15201012 -1.13276074 -1.11414407 -1.09612943 -1.07868809 -1.06179309 -1.04541917 -1.02954258 -1.01414101 -0.99919345 -0.98468012 -0.97058237 -0.9568826 -0.94356419 -0.93061143 -0.91800948 -0.90574426 -0.89380247 -0.88217148 -0.8708393 -0.85979457 -0.84902649 -0.83852479 -0.82827971 -0.81828196 -0.80852269 -0.79899346 -0.78968624 -0.78059335 -0.77170748 -0.76302164 -0.75452915 -0.74622362 -0.73809894 -0.73014928 -0.72236904 -0.71475286 -0.7072956 -0.69999234 -0.69283837 -0.68582914 -0.67896031 -0.6722277 -0.66562731 -0.65915527 -0.65280788 -0.64658156 -0.6404729 -0.63447857 -0.62859542 -0.62282036 -0.61715045 -0.61158284 -0.60611479 -0.60074365 -0.59546687 -0.59028198 -0.5851866 -0.58017844 -0.57525528 -0.57041496 -0.56565542 -0.56097464 -0.5563707 -0.55184171 -0.54738587 -0.5430014 -0.53868661 -0.53443985 -0.53025953 -0.5261441 -0.52209206 -0.51810195 -0.51417237 -0.51030194 -0.50648936 -0.50273332 -0.49903257 -0.49538592 -0.49179217 -0.48825019 -0.48475886 -0.48131711 -0.47792389 -0.47457817 -0.47127898 -0.46802533 -0.46481631 -0.46165099 -0.45852849 -0.45544795 -0.45240852 -0.44940939 -0.44644976 -0.44352886 -0.44064593 -0.43780024 -0.43499106 -0.43221771 -0.4294795 -0.42677576 -0.42410585 -0.42146914 -0.41886501 -0.41629287 -0.41375212 -0.4112422 -0.40876254 -0.40631261 -0.40389188 -0.40149981 -0.39913592 -0.39679969 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains +0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_KD - Gain-schedule table: pitch controller kd gains +0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) +1.5707 ! PC_MaxPit - Maximum physical pitch limit, [rad]. +-0.087266 ! PC_MinPit - Minimum physical pitch limit, [rad]. +0.13962 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. +-0.13962 ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. +122.90957 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. +0.0 ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad] +0.003490658 ! PC_Switch - Angle above lowest minimum pitch angle for switch, [rad] +0 ! Z_EnableSine - Enable/disable sine pitch excitation, used to validate for dynamic induction control, will be removed later, [-] +0.0349066 ! Z_PitchAmplitude - Amplitude of sine pitch excitation, [rad] +0 ! Z_PitchFrequency - Frequency of sine pitch excitation, [rad/s] + +!------- INDIVIDUAL PITCH CONTROL ----------------------------------------- +0.087266 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] +1E-8 0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] +0.436332313 0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. +2.5 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] + +!------- VS TORQUE CONTROL ------------------------------------------------ +0.944 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-] +43093.55 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] +150000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. +48000.00 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. +0.0 ! VS_MinTq - Minimum generator (HSS side), [Nm]. +91.2109 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] +2.33228 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] +5.0E+06 ! VS_RtPwr - Wind turbine rated power [W] +43093.55 ! VS_RtTq - Rated torque, [Nm]. +120.113 ! VS_RefSpd - Rated generator speed [rad/s] +1 ! VS_n - Number of generator PI torque controller gains +-835 ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-164 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) + +!------- SETPOINT SMOOTHER --------------------------------------------- +30 ! SS_VSGainBias - Variable speed torque controller gain bias, [(rad/s)/rad]. +0.001 ! SS_PCGainBias - Collective pitch controller gain bias, [(rad/s)/Nm]. + +!------- WIND SPEED ESTIMATOR --------------------------------------------- +63.0 ! WE_BladeRadius - Blade length [m] +4 ! WE_CP_n - Amount of parameters in the Cp array +14.571319658214513 42.809556250371465 2.456512501523107 0.003127994078720 ! WE_CP - Parameters that define the parameterized CP(lambda) function +20 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] +97 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] +4.0469564E+07 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2] +1.225 ! WE_RhoAir - Air density, [kg m^-3] +"../5MW_Baseline/Cp_Ct_Cq.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) +320 40 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios +23 ! WE_FOPoles_N - Number of first-order system poles used in EKF +3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] +-0.0203 -0.0270 -0.0338 -0.0405 -0.0473 -0.0540 -0.0608 -0.0675 -0.0743 -0.0671 -0.0939 -0.1257 -0.1601 -0.1973 -0.2364 -0.2783 -0.3223 -0.3678 -0.4153 -0.4632 -0.5122 -0.5629 -0.6194 ! WE_FOPoles - First order system poles + +!------- YAW CONTROL ------------------------------------------------------ +1.745329252 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] +0.17453 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] +1 ! Y_IPC_n - Number of controller gains (yaw-by-IPC) +-0.064 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp +-0.0008 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki +0.6283185 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. +1.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. +0.00000 ! Y_MErrSet - Yaw alignment error, set point [rad] +1.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] +0.016667 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] +0.0034906 ! Y_Rate - Yaw rate [rad/s] + +!------- TOWER FORE-AFT DAMPING ------------------------------------------- +-1 ! FA_KI - Integral gain for the fore-aft tower damper controller, -1 = off / >0 = on [rad s/m] - !NJA - Make this a flag +0.1 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] +0.087266 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] + +!------- PEAK SHAVING ------------------------------------------- +210 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) + 4. 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5. 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6. 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7. 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8. 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9. 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10. 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11. 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 12. 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 13. 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9 14. 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 14.9 15. 15.1 15.2 15.3 15.4 15.5 15.6 15.7 15.8 15.9 16. 16.1 16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 17. 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 18. 18.1 18.2 18.3 18.4 18.5 18.6 18.7 18.8 18.9 19. 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9 20. 20.1 20.2 20.3 20.4 20.5 20.6 20.7 20.8 20.9 21. 21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8 21.9 22. 22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8 22.9 23. 23.1 23.2 23.3 23.4 23.5 23.6 23.7 23.8 23.9 24. 24.1 24.2 24.3 24.4 24.5 24.6 24.7 24.8 24.9 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] +0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.00210969 0.00829863 0.01412672 0.01969173 0.02498447 0.02996603 0.03475996 0.03922425 0.04355892 0.0476194 0.05156694 0.05530958 0.05892744 0.06241098 0. 0. 0. 0. 0. 0. 0.00083802 0.00375952 0.00669792 0.00960784 0.01242754 0.01526655 0.01809319 0.02082473 0.02357686 0.02634414 0.02899762 0.03167203 0.03437059 0.03698078 0.03958414 0.04221122 0.04480093 0.04733897 0.0499 0.05248032 0.05495785 0.05745744 0.05998167 0.06245845 0.06490078 0.06736653 0.06985598 0.07224489 0.07465609 0.07709188 0.07950281 0.08186268 0.08424543 0.08665316 0.08899472 0.09132689 0.09368224 0.09605936 0.09834389 0.10065008 0.10297987 0.10530466 0.10756529 0.10984822 0.11215534 0.1144365 0.11667541 0.11893661 0.12122177 0.12346473 0.12568171 0.12792057 0.13018287 0.13239229 0.13458701 0.13680324 0.13904252 0.14122376 0.14339678 0.14559122 0.14780877 0.14996817 0.15212176 0.15429696 0.15649522 0.1586386 0.16077418 0.16293093 0.16511013 0.1672407 0.16935778 0.17149525 0.1736543 0.17577418 0.17787164 0.17998863 0.18212628 0.18423762 0.18631464 0.18841046 0.19052617 0.19263176 0.19468874 0.19676436 0.19885985 0.20096441 0.20300387 0.20506181 0.20713929 0.20923738 0.2112696 0.21331071 0.21537071 0.21745054 0.21948885 0.22151272 0.22355459 0.22561531 0.22766021 0.22966583 0.23168844 0.23372885 0.23578053 0.23776673 0.23976895 0.24178795 0.2438245 0.24581279 0.247794 0.24979116 0.25180516 0.25380442 0.25576558 0.2577425 0.259736 0.26174694 0.26369244 0.26565116 0.26762603 0.26961781 0.27158165 0.27352338 0.27548063 0.27745407 0.2794366 0.28136146 0.28330104 0.28525593 0.28722677 0.28916414 ! PS_BldPitchMin - Minimum blade pitch angles [rad] diff --git a/Tune_Cases/NREL15MW_turbine.p b/Tune_Cases/NREL15MW_turbine.p new file mode 100644 index 0000000000000000000000000000000000000000..78e22dc544b4343bb1a6d4739f4015af03e58b53 GIT binary patch literal 139770 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�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

@MLhAsbQJrnMG}Un* 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 Date: Wed, 2 Oct 2019 00:40:03 -0600 Subject: [PATCH 02/10] Cleanup --- WTC_toolbox/controller.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/WTC_toolbox/controller.py b/WTC_toolbox/controller.py index b8fedd3e2..ea6d4fcf8 100644 --- a/WTC_toolbox/controller.py +++ b/WTC_toolbox/controller.py @@ -31,7 +31,7 @@ class Controller(): def __init__(self): pass - def controller_params(self): + def controller_params(self,turbine): # Hard coded controller parameters for turbine. Using this until read_param_file is good to go # - Coded for NREL 5MW @@ -44,8 +44,9 @@ def controller_params(self): self.omega_vs = 0.3 # Torque controller natural frequency (rad/s) # Other basic parameters - self.v_rated = 11.4 # Rated wind speed (m/s) - + # self.v_rated = turbine.RRspeed * turbine.RotorRad / turbine.TSR_initial[turbine.Cp.max_ind[0]] # Rated wind speed (m/s) + self.v_rated = 11.4 + def tune_controller(self, turbine): """ Given a turbine model, tune the controller parameters @@ -61,7 +62,7 @@ def tune_controller(self, turbine): # Load controller parameters # - should be self.read_param_file() eventually, hard coded for now - self.controller_params() + self.controller_params(turbine) # Re-define controller tuning parameters for shorthand zeta_pc = self.zeta_pc # Pitch controller damping ratio @@ -126,7 +127,7 @@ def tune_controller(self, turbine): # Wind Disturbance Input dlambda_dv = -(TSR_op/v) dtau_dv = dtau_dlambda*dlambda_dv - B_v = dtau_dv/J # wind speed input - currently unused + # B_v = dtau_dv/J # wind speed input - currently unused # separate and define below and above rated parameters @@ -259,9 +260,9 @@ def read_param_file(self, param_file): # Setpoint Smoother Parameters self.Kss_PC = param_file.Kss_PC # Pitch controller reference gain bias self.Kss_VS = param_file.Kss_VS # Torque controller reference gain bias - self.v_min = turbine.VS_Vmin # Cut-in wind speed (m/s) - self.v_rated = turbine.PC_Vrated # Rated wind speed (m/s) - self.v_max = turbine.PC_Vmax # Cut-out wind speed (m/s), -- Does not need to be exact + self.v_min = turbine.v_min # Cut-in wind speed (m/s) + self.v_rated = turbine.v_rated # Rated wind speed (m/s) + self.v_max = turbine.v_max # Cut-out wind speed (m/s), -- Does not need to be exact def write_param_file(self, param_file, turbine, controller, new_file=True): From 9b6560001e18368bc375b7aab8f579512c0e1d3d Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Wed, 2 Oct 2019 00:40:13 -0600 Subject: [PATCH 03/10] Automate write file --- WTC_toolbox/controller.py | 80 +++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/WTC_toolbox/controller.py b/WTC_toolbox/controller.py index ea6d4fcf8..cb8216e51 100644 --- a/WTC_toolbox/controller.py +++ b/WTC_toolbox/controller.py @@ -299,7 +299,7 @@ class containing file.write('1 ! PS_Mode - Peak shaving mode {0: no peak shaving, 1: implement peak shaving}\n') file.write('\n') file.write('!------- FILTERS ----------------------------------------------------------\n') - file.write('1.570796326 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz]\n') # this needs to be included as an input file + file.write('{} ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz]\n'.format(str(turbine.omega_dt))) # this needs to be included as an input file file.write('0 ! F_LPFDamping - Damping coefficient [used only when F_FilterType = 2]\n') file.write('0 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s]\n') file.write('0 0 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-]\n') @@ -312,11 +312,11 @@ class containing file.write('{} ! PC_GS_KI - Gain-schedule table: pitch controller ki gains\n'.format(str(controller.pc_gain_schedule.Ki).strip('[]').replace('\n',''))) file.write('{} ! PC_GS_KD - Gain-schedule table: pitch controller kd gains\n'.format(str(np.zeros(len(controller.pitch_op_pc))).strip('[]').replace('\n',''))) file.write('{} ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter)\n'.format(str(np.zeros(len(controller.pitch_op_pc))).strip('[]').replace('\n',''))) - file.write('1.5707 ! PC_MaxPit - Maximum physical pitch limit, [rad].\n') - file.write('-0.087266 ! PC_MinPit - Minimum physical pitch limit, [rad].\n') + file.write('{} ! PC_MaxPit - Maximum physical pitch limit, [rad].\n'.format(str(turbine.PC_MaxPit))) + file.write('{} ! PC_MinPit - Minimum physical pitch limit, [rad].\n'.format(str(turbine.PC_MinPit))) file.write('0.13962 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s].\n') file.write('-0.13962 ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s].\n') - file.write('122.90957 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s].\n') + file.write('{} ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s].\n'.format(str(turbine.RRspeed*turbine.Ng))) file.write('0.0 ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad]\n') file.write('0.003490658 ! PC_Switch - Angle above lowest minimum pitch angle for switch, [rad]\n') file.write('0 ! Z_EnableSine - Enable/disable sine pitch excitation, used to validate for dynamic induction control, will be removed later, [-]\n') @@ -324,61 +324,61 @@ class containing file.write('0 ! Z_PitchFrequency - Frequency of sine pitch excitation, [rad/s]\n') file.write('\n') file.write('!------- INDIVIDUAL PITCH CONTROL -----------------------------------------\n') - file.write('0.087266 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad]\n') - file.write('1E-8 0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-]\n') - file.write('0.436332313 0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. \n') - file.write('2.5 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s]\n') + file.write('0.0 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad]\n') + file.write('0.0 0.0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-]\n') + file.write('0.0 0.0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. \n') + file.write('0.0 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s]\n') file.write('\n') file.write('!------- VS TORQUE CONTROL ------------------------------------------------\n') - file.write('0.944 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-]\n') - file.write('43093.55 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm]\n') + file.write('{} ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-]\n'.format(str(turbine.GenEff))) + file.write('{} ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm]\n'.format(str(turbine.RatedTorque))) file.write('150000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s].\n') - file.write('48000.00 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm].\n') + file.write('{} ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm].\n'.format(str(turbine.RatedTorque*1.1))) file.write('0.0 ! VS_MinTq - Minimum generator (HSS side), [Nm].\n') - file.write('91.2109 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s]\n') - file.write('2.33228 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2]\n') - file.write('5.0E+06 ! VS_RtPwr - Wind turbine rated power [W]\n') - file.write('43093.55 ! VS_RtTq - Rated torque, [Nm].\n') - file.write('120.113 ! VS_RefSpd - Rated generator speed [rad/s]\n') + file.write('0.0 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s]\n') + file.write('0.0 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2]\n') + file.write('{} ! VS_RtPwr - Wind turbine rated power [W]\n'.format(str(turbine.RatedPower))) + file.write('{} ! VS_RtTq - Rated torque, [Nm].\n'.format(str(turbine.RatedTorque))) + file.write('{} ! VS_RefSpd - Rated generator speed [rad/s]\n'.format(str(turbine.RRspeed*turbine.Ng))) file.write('1 ! VS_n - Number of generator PI torque controller gains\n') - file.write('-835 ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2)\n') - file.write('-164 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2)\n') + file.write('{} ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2)\n'.format(str(controller.vs_gain_schedule.Kp[-1]))) + file.write('{} ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2)\n'.format(str(controller.vs_gain_schedule.Ki[-1]))) file.write('\n') file.write('!------- SETPOINT SMOOTHER ---------------------------------------------\n') file.write('30 ! SS_VSGainBias - Variable speed torque controller gain bias, [(rad/s)/rad].\n') file.write('0.001 ! SS_PCGainBias - Collective pitch controller gain bias, [(rad/s)/Nm].\n') file.write('\n') file.write('!------- WIND SPEED ESTIMATOR ---------------------------------------------\n') - file.write('63.0 ! WE_BladeRadius - Blade length [m]\n') + file.write('{} ! WE_BladeRadius - Blade length [m]\n'.format(str(turbine.RotorRad))) file.write('4 ! WE_CP_n - Amount of parameters in the Cp array\n') - file.write('14.571319658214513 42.809556250371465 2.456512501523107 0.003127994078720 ! WE_CP - Parameters that define the parameterized CP(lambda) function\n') - file.write('20 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad]\n') - file.write('97 ! WE_GearboxRatio - Gearbox ratio [>=1], [-]\n') - file.write('4.0469564E+07 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2]\n') + file.write('0.0 0.0 0.0 0.0 ! WE_CP - Parameters that define the parameterized CP(lambda) function\n') + file.write('0.0 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad]\n') + file.write('{} ! WE_GearboxRatio - Gearbox ratio [>=1], [-]\n'.format(str(turbine.Ng))) + file.write('{} ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2]\n'.format(str(turbine.J))) file.write('1.225 ! WE_RhoAir - Air density, [kg m^-3]\n') - file.write('"../5MW_Baseline/Cp_Ct_Cq.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq)\n') - file.write('320 40 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios\n') - file.write('23 ! WE_FOPoles_N - Number of first-order system poles used in EKF\n') - file.write('3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s]\n') - file.write('-0.0203 -0.0270 -0.0338 -0.0405 -0.0473 -0.0540 -0.0608 -0.0675 -0.0743 -0.0671 -0.0939 -0.1257 -0.1601 -0.1973 -0.2364 -0.2783 -0.3223 -0.3678 -0.4153 -0.4632 -0.5122 -0.5629 -0.6194 ! WE_FOPoles - First order system poles\n') + file.write('"Cp_Ct_Cq.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq)\n') + file.write('{} {} ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios\n'.format(str(len(turbine.Cp.pitch_initial_rad)),str(len(turbine.Cp.TSR_initial)))) + file.write('{} ! WE_FOPoles_N - Number of first-order system poles used in EKF\n'.format(str(len(controller.A)))) + file.write('{} ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s]\n'.format(str(controller.v).strip('[]').replace('\n',''))) + file.write('{} ! WE_FOPoles - First order system poles\n'.format(str(controller.A).strip('[]').replace('\n',''))) file.write('\n') file.write('!------- YAW CONTROL ------------------------------------------------------\n') - file.write('1.745329252 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s]\n') - file.write('0.17453 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad]\n') + file.write('0.0 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s]\n') + file.write('0.0 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad]\n') file.write('1 ! Y_IPC_n - Number of controller gains (yaw-by-IPC)\n') - file.write('-0.064 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp\n') - file.write('-0.0008 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki\n') - file.write('0.6283185 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s].\n') - file.write('1.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-].\n') - file.write('0.00000 ! Y_MErrSet - Yaw alignment error, set point [rad]\n') - file.write('1.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz]\n') - file.write('0.016667 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz]\n') - file.write('0.0034906 ! Y_Rate - Yaw rate [rad/s]\n') + file.write('0.0 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp\n') + file.write('0.0 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki\n') + file.write('0.0 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s].\n') + file.write('0.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-].\n') + file.write('0.0 ! Y_MErrSet - Yaw alignment error, set point [rad]\n') + file.write('0.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz]\n') + file.write('0.0 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz]\n') + file.write('0.0 ! Y_Rate - Yaw rate [rad/s]\n') file.write('\n') file.write('!------- TOWER FORE-AFT DAMPING -------------------------------------------\n') file.write('-1 ! FA_KI - Integral gain for the fore-aft tower damper controller, -1 = off / >0 = on [rad s/m] - !NJA - Make this a flag\n') - file.write('0.1 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s]\n') - file.write('0.087266 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad]\n') + file.write('0.0 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s]\n') + file.write('0.0 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad]\n') file.write('\n') file.write('!------- PEAK SHAVING -------------------------------------------\n') file.write('{} ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin)\n'.format(len(controller.ps.pitch_min))) From fda4be007bf9f640c4957d19ed4ca482faf42bc9 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Wed, 2 Oct 2019 00:40:53 -0600 Subject: [PATCH 04/10] Cleanup, include some NREL15MW hard code --- WTC_toolbox/turbine.py | 122 ++++++++++++++++++++++++++++------------- 1 file changed, 84 insertions(+), 38 deletions(-) diff --git a/WTC_toolbox/turbine.py b/WTC_toolbox/turbine.py index b554ede75..bb0242162 100644 --- a/WTC_toolbox/turbine.py +++ b/WTC_toolbox/turbine.py @@ -33,22 +33,29 @@ def __init__(self): This also lists what will need to be defined """ + # ------ Turbine Parameters------ + # Some of this should be loaded from a dictionary and cleaned up... + # self.J = None # Total rotor inertial (kg-m^2) + # self.rho = None # Air density (kg/m^3) + # self.RotorRad = None # Rotor radius (m) + # self.Ng = None # Gearbox ratio (-) + # self.RRspeed = 7.49*rpm2RadSec # Rated rotor speed (rad/s) + self.RRspeed = 12.1*rpm2RadSec # Rated rotor speed (rad/s) - # Turbine Parameters - self.J = None # Total rotor inertial (kg-m^2) - self.rho = None # Air density (kg/m^3) - self.RotorRad = None # Rotor radius (m) - self.Ng = None # Gearbox ratio (-) - self.RRspeed = None # Rated rotor speed (rad/s) self.v_min = 4. # Cut-in wind speed (m/s) (JUST ASSUME FOR NOW) self.v_rated = None # Rated wind speed (m/s) self.v_max = 25. # Cut-out wind speed (m/s), -- Does not need to be exact (JUST ASSUME FOR NOW) + # self.GenEff = None + # self.RatedPower = 15000000 + self.RatedPower = 5000000 + # Pitch controller + self.PC_MaxPit = 1.5707 # Maximum pitch angle (rad) + self.PC_MinPit = -0.087266 # Minimum pitch angle (rad) # Init the cc-blade rotor self.cc_rotor = None - # Pitch controller - self.PC_MinPit = -0.087266 # Minimum pitch angle (rad) + # Interp function versions self.cp_interp = None @@ -68,7 +75,7 @@ def __str__(self): # Save function def save(self,filename): - tuple_to_save = (self.J,self.rho,self.RotorRad, self.Ng,self.RRspeed,self.v_min,self.v_rated,self.v_max,self.cc_rotor,self.Cp,self.Ct,self.Cq ) + tuple_to_save = (self.J,self.rho,self.RotorRad, self.Ng,self.RRspeed,self.v_min,self.v_rated,self.v_max,self.cc_rotor,self.Cp_table,self.Ct_table,self.Cq_table,self.Cp,self.Ct,self.Cq ) pickle.dump( tuple_to_save, open( filename, "wb" ) ) # Load function @@ -115,16 +122,24 @@ def load_from_fast(self, FAST_InputFile,FAST_directory,drivetrain_inertia, FAST_ self.TipRad = fast.fst_vt['ElastoDyn']['TipRad'] self.Rhub = fast.fst_vt['ElastoDyn']['HubRad'] self.hubHt = fast.fst_vt['ElastoDyn']['TowerHt'] - self.shearExp = 0.2 #HARD CODED UNTIL FIND A SOLUTION TO READ OUTPUT + self.shearExp = 0.2 #HARD CODED FOR NOW self.rho = fast.fst_vt['AeroDyn15']['AirDens'] self.mu = fast.fst_vt['AeroDyn15']['KinVisc'] self.Ng = fast.fst_vt['ElastoDyn']['GBRatio'] - + self.GenEff = fast.fst_vt['ElastoDyn']['GBoxEff'] + self.DTTorSpr = fast.fst_vt['ElastoDyn']['DTTorSpr'] + self.RatedTorque = self.RatedPower/(self.RRspeed*self.Ng) + + # Some additional parameters to save self.RotorRad = self.TipRad + self.omega_dt = np.sqrt(self.DTTorSpr/self.J) + if self.RRspeed: + pass + else: + # Calculate rated rotor speed by scaling from NREL 5MW + self.RRspeed = (63. / self.TipRad) * 12.1 * rpm2RadSec - # Calculate rated rotor speed for now by scaling from NREL 5MW - self.RRspeed = (63. / self.TipRad) * 12.1 * rpm2RadSec # Load Cp, Ct, Cq tables if rot_source == 'txt': @@ -149,19 +164,6 @@ def load_from_ccblade(self,fast): af_idx = np.array(fast.fst_vt['AeroDynBlade']['BlAFID']).astype(int) - 1 #Reset to 0 index AFNames = fast.fst_vt['AeroDyn15']['AFNames'] - # # NEED A PRETTY SERIOUS HACK TO POINT AT OLD AIRFOIL TABLES - # ad14path = '/Users/pfleming/Desktop/git_tools/FLORIS/examples/5MW_AFFiles' - # AFNames_14 = [] - # for airfoil in AFNames: - # a_name = os.path.basename(airfoil) - # AFNames_14.append(os.path.join(ad14path,a_name)) - # print(fast.FAST_directory) - - # # Load in the airfoils - # afinit = CCAirfoil.initFromAerodynFile # just for shorthand - # airfoil_types = [] - # for airfoil in AFNames: - # airfoil_types.append(afinit(airfoil)) # Used airfoil data from FAST file read, assumes AeroDyn 15, assumes 1 Re num per airfoil af_dict = {} @@ -197,7 +199,7 @@ def load_from_ccblade(self,fast): fixed_rpm = 10 # RPM TSR_initial = np.arange(0.5,15,0.5) - pitch_initial = np.arange(0,25,0.5) + pitch_initial = np.arange(-1,25,0.5) pitch_initial_rad = pitch_initial * deg2rad ws_array = (fixed_rpm * (np.pi / 30.) * self.TipRad) / TSR_initial ws_mesh, pitch_mesh = np.meshgrid(ws_array, pitch_initial) @@ -207,7 +209,7 @@ def load_from_ccblade(self,fast): tsr_flat = (fixed_rpm * (np.pi / 30.) * self.TipRad) / ws_flat # Get values from cc-blade - print('Running cc_rotor aerodynamic analysis...') + print('Running cc_rotor aerodynamic analysis, this may take a second...') P, T, Q, M, CP, CT, CQ, CM = self.cc_rotor.evaluate(ws_flat, omega_flat, pitch_flat, coefficients=True) # Reshape Cp, Ct and Cq @@ -267,7 +269,52 @@ def load_from_txt(self,fast,txt_filename): self.Cp_table = Cp self.Ct_table = Ct self.Cq_table = Cq + + + def write_rotorperformance(self,txt_filename='Cp_Ct_Cq.txt'): + ''' + Write text file containing rotor performance data + Parameters: + ------------ + Fill this out... + ''' + + file = open(txt_filename,'w') + file.write('# Pitch angle vector - x axis (matrix columns) (deg)\n') + for i in range(len(self.Cp.pitch_initial_rad)): + file.write('%.2f ' % (self.Cp.pitch_initial_rad[i] * rad2deg)) + file.write('\n# TSR vector - y axis (matrix rows) (-)\n') + for i in range(len(self.TSR_initial)): + file.write('%.2f ' % self.Cp.TSR_initial[i]) + file.write('\n# Wind speed vector - z axis (m/s)\n') + # for i in range(n_U): + # --- write arbitrary wind speed for now... + file.write('%.2f ' % 3.0) + file.write('\n') + + file.write('\n# Power coefficient\n\n') + for i in range(len(self.Cp.TSR_initial)): + for j in range(len(self.Cp.pitch_initial_rad)): + file.write('%.5f ' % self.Cp_table[i,j]) + file.write('\n') + file.write('\n') + + file.write('\n# Thrust coefficient\n\n') + for i in range(len(self.Ct.TSR_initial)): + for j in range(len(self.Ct.pitch_initial_rad)): + file.write('%.5f ' % self.Ct_table[i,j]) + file.write('\n') + file.write('\n') + + file.write('\n# Torque coefficient\n\n') + for i in range(len(self.Cq.TSR_initial)): + for j in range(len(self.Cq.pitch_initial_rad)): + file.write('%.5f ' % self.Cq_table[i,j]) + file.write('\n') + file.write('\n') + + file.close() class RotorPerformance(): def __init__(self,performance_table, pitch_initial_rad, TSR_initial): @@ -304,14 +351,13 @@ def interp_gradient(self,pitch,TSR): return np.ndarray.flatten(grad) +# # NOT CERTAIN OF THESE ALTERNATIVES YET +# def load_from_sowfa(self, fast_folder): +# """ +# Load the parameter files directly from a SOWFA directory +# """ - # # NOT CERTAIN OF THESE ALTERNATIVES YET - # def load_from_sowfa(self, fast_folder): - # """ - # Load the parameter files directly from a SOWFA directory - # """ - - # def load_from_csv(self, fast_folder): - # """ - # Load from a simple CSV file containing the parameters - # """ \ No newline at end of file +# def load_from_csv(self, fast_folder): +# """ +# Load from a simple CSV file containing the parameters +# """ \ No newline at end of file From 1f87bda7a1271d84e16d2c2c9e7741bdccca7ac2 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Tue, 8 Oct 2019 00:47:01 -0600 Subject: [PATCH 05/10] Ignore matlab temp files --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 5195983e3..72d12a0ca 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,7 @@ _build # MATLAB files *.m~ +*slprj* # ide settings and files .idea From 1fcf157836bb3ad92b6d2f3858063652fad7a332 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Tue, 8 Oct 2019 00:47:38 -0600 Subject: [PATCH 06/10] Update DRC_Fortran from Nikhar's repo --- DRC_Fortran/DISCON/DISCON_glin64.so | Bin 64800 -> 64800 bytes DRC_Fortran/Source/ControllerBlocks.f90 | 9 +-- DRC_Fortran/Source/Controllers.f90 | 4 +- DRC_Fortran/Source/DISCON.f90 | 3 +- DRC_Fortran/Source/DRC_Types.f90 | 1 + DRC_Fortran/Source/ReadSetParameters.f90 | 73 +++++++++++++---------- 6 files changed, 50 insertions(+), 40 deletions(-) diff --git a/DRC_Fortran/DISCON/DISCON_glin64.so b/DRC_Fortran/DISCON/DISCON_glin64.so index 6cccc337f1f56e81f2b8d3393734a615cfb76b2f..b7101f08e6cfb5af52d1fdca64ddaa32d00ba8df 100755 GIT binary patch delta 22528 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 r{&8H?Ec9E`|JJ>@N=@U delta 22326 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 Q?xKZ@G0^>!@HW=}1C~~i{{R30 diff --git a/DRC_Fortran/Source/ControllerBlocks.f90 b/DRC_Fortran/Source/ControllerBlocks.f90 index 1b7861cfc..fee3d326f 100644 --- a/DRC_Fortran/Source/ControllerBlocks.f90 +++ b/DRC_Fortran/Source/ControllerBlocks.f90 @@ -148,7 +148,7 @@ SUBROUTINE WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData) ! Extended Kalman Filter (EKF) implementation ELSEIF (CntrPar%WE_Mode == 2) THEN ! Define contant values - L = 2.0 * CntrPar%WE_BladeRadius + L = 4.0 * CntrPar%WE_BladeRadius Ti = 0.2 R_m = 0.02 H = RESHAPE((/1.0 , 0.0 , 0.0/),(/1,3/)) @@ -185,10 +185,10 @@ SUBROUTINE WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData) F(2,3) = PI * v_t/(2.0*L) ! Update process noise covariance - Q(1,1) = 0.0001 + Q(1,1) = 0.00001 Q(2,2) =(PI * (v_m**3.0) * (Ti**2.0)) / L Q(3,3) = (2.0**2.0)/600.0 -\ + ! Prediction update ! Tau_r = 0.5 * CntrPar%WE_RhoAir * PI *CntrPar%WE_BladeRadius**3 * Cp_op * v_h**2 * 1.0/(lambda) Tau_r = AeroDynTorque(LocalVar,CntrPar,PerfData) @@ -215,6 +215,7 @@ SUBROUTINE WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData) v_h = v_t + v_m LocalVar%TestType = v_m + v_t LocalVar%WE_Vw = v_m + v_t + ! LocalVar%WE_Vw = LPFilter(v_m + v_t,LocalVar%DT,0.5,LocalVar%iStatus,.FALSE.,objInst%instLPF) ENDIF ELSE @@ -274,7 +275,7 @@ REAL FUNCTION PeakShaving(LocalVar, CntrPar, objInst) ! V_towertop = PIController(LocalVar%FA_Acc, 0.0, 1.0, -100.00, 100.00, LocalVar%DT, 0.0, .FALSE., objInst%instPI) Vhat = LocalVar%WE_Vw - Vhatf = LPFilter(Vhat,LocalVar%DT,0.04,LocalVar%iStatus,.FALSE.,objInst%instLPF) + Vhatf = LPFilter(Vhat,LocalVar%DT,0.2,LocalVar%iStatus,.FALSE.,objInst%instLPF) LocalVar%TestType = Vhatf ! Define minimum blade pitch angle as a function of estimated wind speed PeakShaving = interp1d(CntrPar%PS_WindSpeeds, CntrPar%PS_BldPitchMin, Vhatf) diff --git a/DRC_Fortran/Source/Controllers.f90 b/DRC_Fortran/Source/Controllers.f90 index 855d1bb2d..2c2169be1 100644 --- a/DRC_Fortran/Source/Controllers.f90 +++ b/DRC_Fortran/Source/Controllers.f90 @@ -118,12 +118,12 @@ SUBROUTINE VariableSpeedControl(avrSWAP, CntrPar, LocalVar, objInst) IF (LocalVar%VS_State >= 4) THEN VS_MaxTq = CntrPar%VS_RtTq ELSE - ! VS_MaxTq = CntrPar%VS_MaxTq + ! VS_MaxTq = CntrPar%VS_MaxTq ! NJA: May want to boost max torque VS_MaxTq = CntrPar%VS_RtTq ENDIF LocalVar%GenTq = PIController(LocalVar%VS_SpdErr, CntrPar%VS_KP(1), CntrPar%VS_KI(1), CntrPar%VS_MinTq, VS_MaxTq, LocalVar%DT, CntrPar%VS_MaxOMTq, .FALSE., objInst%instPI) - ! K*Omega^2 control law with PI torque control in transition regions + ! K*Omega^2 control law with PI torque control in transition regions ELSE ! Update PI loops for region 1.5 and 2.5 PI control ! LocalVar%GenArTq = PIController(LocalVar%VS_SpdErrAr, CntrPar%VS_KP(1), CntrPar%VS_KI(1), CntrPar%VS_MaxOMTq, CntrPar%VS_ArSatTq, LocalVar%DT, CntrPar%VS_RtTq, .TRUE., objInst%instPI) diff --git a/DRC_Fortran/Source/DISCON.f90 b/DRC_Fortran/Source/DISCON.f90 index 67f162149..de8df7b77 100644 --- a/DRC_Fortran/Source/DISCON.f90 +++ b/DRC_Fortran/Source/DISCON.f90 @@ -39,6 +39,7 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME TYPE(LocalVariables), SAVE :: LocalVar TYPE(ObjectInstances), SAVE :: objInst TYPE(PerformanceData), SAVE :: PerfData + !------------------------------------------------------------------------------------------------------------------------------ ! Main control calculations !------------------------------------------------------------------------------------------------------------------------------ @@ -48,7 +49,7 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME CALL PreFilterMeasuredSignals(CntrPar, LocalVar, objInst) IF ((LocalVar%iStatus >= 0) .AND. (aviFAIL >= 0)) THEN ! Only compute control calculations if no error has occurred and we are not on the last time step - CALL ComputeVariablesSetpoints(CntrPar, LocalVar) + CALL ComputeVariablesSetpoints(CntrPar, LocalVar, objInst) CALL StateMachine(CntrPar, LocalVar) CALL WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData) diff --git a/DRC_Fortran/Source/DRC_Types.f90 b/DRC_Fortran/Source/DRC_Types.f90 index 69b8af80f..325fffc3e 100644 --- a/DRC_Fortran/Source/DRC_Types.f90 +++ b/DRC_Fortran/Source/DRC_Types.f90 @@ -52,6 +52,7 @@ MODULE DRC_Types INTEGER(4) :: VS_n ! Number of controller gains REAL(4), DIMENSION(:), ALLOCATABLE :: VS_KP ! Proportional gain for generator PI torque controller, used in the transitional 2.5 region REAL(4), DIMENSION(:), ALLOCATABLE :: VS_KI ! Integral gain for generator PI torque controller, used in the transitional 2.5 region + REAL(4) :: VS_TSRopt ! Power-maximizing region 2 tip-speed ratio [rad] INTEGER(4) :: SS_Mode ! Setpoint Smoother mode {0: no setpoint smoothing, 1: introduce setpoint smoothing} REAL(4) :: SS_VSGainBias ! Variable speed torque controller gain bias, [(rad/s)/rad]. diff --git a/DRC_Fortran/Source/ReadSetParameters.f90 b/DRC_Fortran/Source/ReadSetParameters.f90 index 8d7a43720..fd97fe76e 100644 --- a/DRC_Fortran/Source/ReadSetParameters.f90 +++ b/DRC_Fortran/Source/ReadSetParameters.f90 @@ -104,6 +104,7 @@ SUBROUTINE ReadControlParameterFileSub(CntrPar) READ(UnControllerParameters,*) CntrPar%VS_KP ALLOCATE(CntrPar%VS_KI(CntrPar%VS_n)) READ(UnControllerParameters,*) CntrPar%VS_KI + READ(UnControllerParameters,*) CntrPar%VS_TSRopt READ(UnControllerParameters, *) !------- Setpoint Smoother -------------------------------- @@ -179,17 +180,20 @@ SUBROUTINE ReadControlParameterFileSub(CntrPar) END SUBROUTINE ReadControlParameterFileSub ! ----------------------------------------------------------------------------------- ! Calculate setpoints for primary control actions - SUBROUTINE ComputeVariablesSetpoints(CntrPar, LocalVar) - USE DRC_Types, ONLY : ControlParameters, LocalVariables + SUBROUTINE ComputeVariablesSetpoints(CntrPar, LocalVar, objInst) + USE DRC_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances ! Allocate variables TYPE(ControlParameters), INTENT(INOUT) :: CntrPar TYPE(LocalVariables), INTENT(INOUT) :: LocalVar + TYPE(ObjectInstances), INTENT(INOUT) :: objInst + REAL(4) :: VS_RefSpd ! Referece speed for variable speed torque controller, [rad/s] REAL(4) :: PC_RefSpd ! Referece speed for pitch controller, [rad/s] REAL(4) :: Omega_op ! Optimal TSR-tracking generator speed, [rad/s] + REAL(4) :: WE_Vw_f ! Filtered Wind Speed Estimate ! temp - REAL(4) :: VS_TSRop = 7.5 + ! REAL(4) :: VS_TSRop = 7.5 ! ----- Calculate yaw misalignment error ----- LocalVar%Y_MErr = LocalVar%Y_M + CntrPar%Y_MErrSet ! Yaw-alignment error @@ -207,7 +211,8 @@ SUBROUTINE ComputeVariablesSetpoints(CntrPar, LocalVar) ! ----- Torque controller reference errors ----- ! Define VS reference generator speed [rad/s] IF (CntrPar%VS_ControlMode == 2) THEN - VS_RefSpd = (VS_TSRop * LocalVar%WE_Vw / CntrPar%WE_BladeRadius) * CntrPar%WE_GearboxRatio + WE_Vw_f = LPFilter(LocalVar%We_Vw, LocalVar%DT, 0.1, LocalVar%iStatus, .FALSE., objInst%instLPF) + VS_RefSpd = (CntrPar%VS_TSRopt * WE_Vw_f / CntrPar%WE_BladeRadius) * CntrPar%WE_GearboxRatio VS_RefSpd = saturate(VS_RefSpd,CntrPar%VS_MinOMSpd, CntrPar%PC_RefSpd) ELSE VS_RefSpd = CntrPar%VS_RefSpd @@ -366,36 +371,38 @@ SUBROUTINE Assert(LocalVar, CntrPar, avrSWAP, aviFAIL, ErrMsg, size_avcMSG) ErrMsg = 'IPC_KI(2) must be zero or greater than zero.' ENDIF - IF (CntrPar%Y_IPC_omegaLP <= 0.0) THEN - aviFAIL = -1 - ErrMsg = 'Y_IPC_omegaLP must be greater than zero.' - ENDIF - - IF (CntrPar%Y_IPC_zetaLP <= 0.0) THEN - aviFAIL = -1 - ErrMsg = 'Y_IPC_zetaLP must be greater than zero.' - ENDIF - - IF (CntrPar%Y_ErrThresh <= 0.0) THEN - aviFAIL = -1 - ErrMsg = 'Y_ErrThresh must be greater than zero.' - ENDIF - - IF (CntrPar%Y_Rate <= 0.0) THEN - aviFAIL = -1 - ErrMsg = 'CntrPar%Y_Rate must be greater than zero.' - ENDIF - - IF (CntrPar%Y_omegaLPFast <= 0.0) THEN - aviFAIL = -1 - ErrMsg = 'Y_omegaLPFast must be greater than zero.' - ENDIF - - IF (CntrPar%Y_omegaLPSlow <= 0.0) THEN - aviFAIL = -1 - ErrMsg = 'Y_omegaLPSlow must be greater than zero.' + ! ---- Yaw Control ---- + IF (CntrPar%Y_ControlMode > 0) THEN + IF (CntrPar%Y_IPC_omegaLP <= 0.0) THEN + aviFAIL = -1 + ErrMsg = 'Y_IPC_omegaLP must be greater than zero.' + ENDIF + + IF (CntrPar%Y_IPC_zetaLP <= 0.0) THEN + aviFAIL = -1 + ErrMsg = 'Y_IPC_zetaLP must be greater than zero.' + ENDIF + + IF (CntrPar%Y_ErrThresh <= 0.0) THEN + aviFAIL = -1 + ErrMsg = 'Y_ErrThresh must be greater than zero.' + ENDIF + + IF (CntrPar%Y_Rate <= 0.0) THEN + aviFAIL = -1 + ErrMsg = 'CntrPar%Y_Rate must be greater than zero.' + ENDIF + + IF (CntrPar%Y_omegaLPFast <= 0.0) THEN + aviFAIL = -1 + ErrMsg = 'Y_omegaLPFast must be greater than zero.' + ENDIF + + IF (CntrPar%Y_omegaLPSlow <= 0.0) THEN + aviFAIL = -1 + ErrMsg = 'Y_omegaLPSlow must be greater than zero.' + ENDIF ENDIF - ! Abort if the user has not requested a pitch angle actuator (See Appendix A ! of Bladed User's Guide): IF (NINT(avrSWAP(10)) /= 0) THEN ! .TRUE. if a pitch angle actuator hasn't been requested From 503c7107320559852a2f727a6e517a9949a6984b Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Tue, 8 Oct 2019 00:48:02 -0600 Subject: [PATCH 07/10] Add above rated --- Matlab_Toolbox/Post_TestCases.m | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Matlab_Toolbox/Post_TestCases.m b/Matlab_Toolbox/Post_TestCases.m index 561af2487..3ff488a0a 100644 --- a/Matlab_Toolbox/Post_TestCases.m +++ b/Matlab_Toolbox/Post_TestCases.m @@ -44,8 +44,8 @@ % Will want to (un)comment desired cases to plot % Usable Plot types: - % - Step, Below Rated, Near Rated, Above Rated, Floating Steady, Floating Near Rated, Floating Mexican Hat -plottype = 'Floating Near Rated'; + % - Step, Below Rated, Near Rated, Above Rated, Floating Steady, Floating Near Rated, Floating Above Rated, Floating Mexican Hat +plottype = 'Near Rated'; close all % Below Rated @@ -62,6 +62,8 @@ Pl_FastPlots(fo.OC4_ARsteady_Legacy, fo.OC4_ARsteady_Baseline) case 'Floating Near Rated' Pl_FastPlots(fo.OC4_NR_Legacy, fo.OC4_NR_Baseline) + case 'Floating Above Rated' + Pl_FastPlots(fo.OC4_AR_Legacy, fo.OC4_AR_Baseline) case 'Floating Mexican Hat' Pl_FastPlots(fo.OC4_MH_Legacy, fo.OC4_MH_Baseline) end From dfcc576b15f417aa7cae625ec2b8b22d08afa41c Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Tue, 8 Oct 2019 00:49:22 -0600 Subject: [PATCH 08/10] Some housekeeping, hard-code NREL 15MW for now --- WTC_toolbox/controller.py | 19 ++++---- WTC_toolbox/sim.py | 2 +- WTC_toolbox/turbine.py | 21 ++++----- examples/DISCON.IN | 88 +++++++++++++++++----------------- examples/DISCON_TEST.IN | 99 ++++++++++++++++++++------------------- examples/Example_07.py | 4 +- examples/Run_TestCases.py | 18 +++---- 7 files changed, 125 insertions(+), 126 deletions(-) diff --git a/WTC_toolbox/controller.py b/WTC_toolbox/controller.py index cb8216e51..22e726d22 100644 --- a/WTC_toolbox/controller.py +++ b/WTC_toolbox/controller.py @@ -41,10 +41,11 @@ def controller_params(self,turbine): # Torque Controller Parameters self.zeta_vs = 0.7 # Torque controller damping ratio (-) - self.omega_vs = 0.3 # Torque controller natural frequency (rad/s) + self.omega_vs = 0.2 # Torque controller natural frequency (rad/s) # Other basic parameters # self.v_rated = turbine.RRspeed * turbine.RotorRad / turbine.TSR_initial[turbine.Cp.max_ind[0]] # Rated wind speed (m/s) + # self.v_rated = 10.75 self.v_rated = 11.4 def tune_controller(self, turbine): @@ -77,8 +78,8 @@ def tune_controller(self, turbine): TSR_rated = RRspeed*R/v_rated # TSR at rated # separate wind speeds by operation regions - v_below_rated = np.arange(v_min,v_rated,0.1) # below rated - v_above_rated = np.arange(v_rated,v_max,0.1) # above rated + v_below_rated = np.arange(v_min,v_rated,0.5) # below rated + v_above_rated = np.arange(v_rated+0.5,v_max,0.5) # above rated v = np.concatenate((v_below_rated, v_above_rated)) # separate TSRs by operations regions @@ -152,6 +153,7 @@ def tune_controller(self, turbine): self.TSR_op = TSR_op self.A = A self.B_beta = B_beta + self.B_tau = B_tau # Peak Shaving self.ps = ControllerBlocks() @@ -295,11 +297,11 @@ class containing file.write('1 ! PC_ControlMode - Blade pitch control mode {0: No pitch, fix to fine pitch, 1: active PI blade pitch control}\n') file.write('0 ! Y_ControlMode - Yaw control mode {0: no yaw control, 1: yaw rate control, 2: yaw-by-IPC}\n') file.write('1 ! SS_Mode - Setpoint Smoother mode {0: no setpoint smoothing, 1: introduce setpoint smoothing}\n') - file.write('2 ! WE_Mode - Wind speed estimator mode {0: One-second low pass filtered hub height wind speed, 1: Imersion and Invariance Estimator (Ortega et al.)}\n') + file.write('0 ! WE_Mode - Wind speed estimator mode {0: One-second low pass filtered hub height wind speed, 1: Imersion and Invariance Estimator (Ortega et al.)}\n') file.write('1 ! PS_Mode - Peak shaving mode {0: no peak shaving, 1: implement peak shaving}\n') file.write('\n') file.write('!------- FILTERS ----------------------------------------------------------\n') - file.write('{} ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz]\n'.format(str(turbine.omega_dt))) # this needs to be included as an input file + file.write('{} ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz]\n'.format(str(turbine.omega_dt * 1/3))) # this needs to be included as an input file file.write('0 ! F_LPFDamping - Damping coefficient [used only when F_FilterType = 2]\n') file.write('0 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s]\n') file.write('0 0 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-]\n') @@ -330,9 +332,9 @@ class containing file.write('0.0 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s]\n') file.write('\n') file.write('!------- VS TORQUE CONTROL ------------------------------------------------\n') - file.write('{} ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-]\n'.format(str(turbine.GenEff))) - file.write('{} ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm]\n'.format(str(turbine.RatedTorque))) - file.write('150000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s].\n') + file.write('{} ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-]\n'.format(turbine.GenEff)) + file.write('{} ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm]\n'.format(turbine.RatedTorque)) + file.write('1500000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s].\n') file.write('{} ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm].\n'.format(str(turbine.RatedTorque*1.1))) file.write('0.0 ! VS_MinTq - Minimum generator (HSS side), [Nm].\n') file.write('0.0 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s]\n') @@ -343,6 +345,7 @@ class containing file.write('1 ! VS_n - Number of generator PI torque controller gains\n') file.write('{} ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2)\n'.format(str(controller.vs_gain_schedule.Kp[-1]))) file.write('{} ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2)\n'.format(str(controller.vs_gain_schedule.Ki[-1]))) + file.write('{} ! VS_TSRopt - Power-maximizing region 2 tip-speed-ratio [rad].\n'.format(str(turbine.Cp.TSR_opt).strip('[]'))) file.write('\n') file.write('!------- SETPOINT SMOOTHER ---------------------------------------------\n') file.write('30 ! SS_VSGainBias - Variable speed torque controller gain bias, [(rad/s)/rad].\n') diff --git a/WTC_toolbox/sim.py b/WTC_toolbox/sim.py index bc5cc12a4..4cce3a52b 100644 --- a/WTC_toolbox/sim.py +++ b/WTC_toolbox/sim.py @@ -105,7 +105,7 @@ def sim_ws_series(self,t_array,ws_array,rotor_rpm_init=10,init_pitch=0.0, make_p gen_speed[i] = rot_speed[i] * self.turbine.Ng # Call the controller - gen_torque[i], bld_pitch[i] = self.controller_int.call_controller(t,dt,bld_pitch[i-1],gen_speed[i],rot_speed[i],ws) + gen_torque[i], bld_pitch[i] = self.controller_int.call_controller(t,dt,bld_pitch[i-1],gen_torque[i-1],gen_speed[i],rot_speed[i],ws) # Calculate the power gen_power[i] = gen_speed[i] * np.pi/30.0 * gen_torque[i] * self.gen_eff diff --git a/WTC_toolbox/turbine.py b/WTC_toolbox/turbine.py index bb0242162..6a56d34e2 100644 --- a/WTC_toolbox/turbine.py +++ b/WTC_toolbox/turbine.py @@ -20,6 +20,7 @@ deg2rad = np.deg2rad(1) rad2deg = np.rad2deg(1) rpm2RadSec = 2.0*(np.pi)/60.0 +RadSec2rpm = 60/(2.0 * np.pi) class Turbine(): """ @@ -34,20 +35,14 @@ def __init__(self): """ # ------ Turbine Parameters------ - # Some of this should be loaded from a dictionary and cleaned up... - # self.J = None # Total rotor inertial (kg-m^2) - # self.rho = None # Air density (kg/m^3) - # self.RotorRad = None # Rotor radius (m) - # self.Ng = None # Gearbox ratio (-) - # self.RRspeed = 7.49*rpm2RadSec # Rated rotor speed (rad/s) self.RRspeed = 12.1*rpm2RadSec # Rated rotor speed (rad/s) + # self.RRspeed = 7.5*rpm2RadSec # Rated rotor speed (rad/s) self.v_min = 4. # Cut-in wind speed (m/s) (JUST ASSUME FOR NOW) self.v_rated = None # Rated wind speed (m/s) self.v_max = 25. # Cut-out wind speed (m/s), -- Does not need to be exact (JUST ASSUME FOR NOW) - # self.GenEff = None - # self.RatedPower = 15000000 self.RatedPower = 5000000 + # self.RatedPower = 15000000 # Pitch controller self.PC_MaxPit = 1.5707 # Maximum pitch angle (rad) @@ -126,9 +121,9 @@ def load_from_fast(self, FAST_InputFile,FAST_directory,drivetrain_inertia, FAST_ self.rho = fast.fst_vt['AeroDyn15']['AirDens'] self.mu = fast.fst_vt['AeroDyn15']['KinVisc'] self.Ng = fast.fst_vt['ElastoDyn']['GBRatio'] - self.GenEff = fast.fst_vt['ElastoDyn']['GBoxEff'] + self.GenEff = fast.fst_vt['ServoDyn']['GenEff'] self.DTTorSpr = fast.fst_vt['ElastoDyn']['DTTorSpr'] - self.RatedTorque = self.RatedPower/(self.RRspeed*self.Ng) + self.RatedTorque = self.RatedPower/(self.GenEff/100*self.RRspeed*self.Ng) # Some additional parameters to save @@ -196,17 +191,17 @@ def load_from_ccblade(self,fast): print('CCBlade run succesfully') # Generate the look-up tables # Mesh the grid and flatten the arrays - fixed_rpm = 10 # RPM + fixed_rpm = self.RRspeed*RadSec2rpm # RPM TSR_initial = np.arange(0.5,15,0.5) pitch_initial = np.arange(-1,25,0.5) pitch_initial_rad = pitch_initial * deg2rad - ws_array = (fixed_rpm * (np.pi / 30.) * self.TipRad) / TSR_initial + ws_array = (fixed_rpm * rpm2RadSec * self.TipRad) / TSR_initial ws_mesh, pitch_mesh = np.meshgrid(ws_array, pitch_initial) ws_flat = ws_mesh.flatten() pitch_flat = pitch_mesh.flatten() omega_flat = np.ones_like(pitch_flat) * fixed_rpm - tsr_flat = (fixed_rpm * (np.pi / 30.) * self.TipRad) / ws_flat + tsr_flat = (fixed_rpm * rpm2RadSec * self.TipRad) / ws_flat # Get values from cc-blade print('Running cc_rotor aerodynamic analysis, this may take a second...') diff --git a/examples/DISCON.IN b/examples/DISCON.IN index 6093abeac..2026db1bb 100644 --- a/examples/DISCON.IN +++ b/examples/DISCON.IN @@ -1,5 +1,5 @@ ! Controller parameter input file for the 5MW_Land wind turbine -! - File written using NREL Baseline Controller tuning logic on 09/26/19 +! - File written using NREL Baseline Controller tuning logic on 10/02/19 !------- DEBUG ------------------------------------------------------------ 1 ! LoggingLevel - {0: write no debug files, 1: write standard output .dbg-file, 2: write standard output .dbg-file and complete avrSWAP-array .dbg2-file @@ -12,11 +12,11 @@ 1 ! PC_ControlMode - Blade pitch control mode {0: No pitch, fix to fine pitch, 1: active PI blade pitch control} 0 ! Y_ControlMode - Yaw control mode {0: no yaw control, 1: yaw rate control, 2: yaw-by-IPC} 1 ! SS_Mode - Setpoint Smoother mode {0: no setpoint smoothing, 1: introduce setpoint smoothing} -2 ! WE_Mode - Wind speed estimator mode {0: One-second low pass filtered hub height wind speed, 1: Imersion and Invariance Estimator (Ortega et al.)} +0 ! WE_Mode - Wind speed estimator mode {0: One-second low pass filtered hub height wind speed, 1: Imersion and Invariance Estimator (Ortega et al.)} 1 ! PS_Mode - Peak shaving mode {0: no peak shaving, 1: implement peak shaving} !------- FILTERS ---------------------------------------------------------- -1.570796326 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz] +4.630253480546613 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz] 0 ! F_LPFDamping - Damping coefficient [used only when F_FilterType = 2] 0 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s] 0 0 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-] @@ -30,10 +30,10 @@ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_KD - Gain-schedule table: pitch controller kd gains 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) 1.5707 ! PC_MaxPit - Maximum physical pitch limit, [rad]. --0.087266 ! PC_MinPit - Minimum physical pitch limit, [rad]. +-0.087266 ! PC_MinPit - Minimum physical pitch limit, [rad]. 0.13962 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. -0.13962 ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. -122.90957 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. +122.90957658394467 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. 0.0 ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad] 0.003490658 ! PC_Switch - Angle above lowest minimum pitch angle for switch, [rad] 0 ! Z_EnableSine - Enable/disable sine pitch excitation, used to validate for dynamic induction control, will be removed later, [-] @@ -41,63 +41,63 @@ 0 ! Z_PitchFrequency - Frequency of sine pitch excitation, [rad/s] !------- INDIVIDUAL PITCH CONTROL ----------------------------------------- -0.087266 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] -1E-8 0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] -0.436332313 0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. -2.5 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] +0.0 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] +0.0 0.0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] +0.0 0.0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. +0.0 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] !------- VS TORQUE CONTROL ------------------------------------------------ -0.944 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-] -43093.55 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] +100.0 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-] +40680.312624664395 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] 150000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. -48000.00 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. +44748.34388713084 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. 0.0 ! VS_MinTq - Minimum generator (HSS side), [Nm]. -91.2109 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] -2.33228 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] -5.0E+06 ! VS_RtPwr - Wind turbine rated power [W] -43093.55 ! VS_RtTq - Rated torque, [Nm]. -120.113 ! VS_RefSpd - Rated generator speed [rad/s] +0.0 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] +0.0 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] +5000000 ! VS_RtPwr - Wind turbine rated power [W] +40680.312624664395 ! VS_RtTq - Rated torque, [Nm]. +122.90957658394467 ! VS_RefSpd - Rated generator speed [rad/s] 1 ! VS_n - Number of generator PI torque controller gains --835 ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) --164 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-880.4968862680173 ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-172.0461874545648 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) !------- SETPOINT SMOOTHER --------------------------------------------- 30 ! SS_VSGainBias - Variable speed torque controller gain bias, [(rad/s)/rad]. 0.001 ! SS_PCGainBias - Collective pitch controller gain bias, [(rad/s)/Nm]. !------- WIND SPEED ESTIMATOR --------------------------------------------- -63.0 ! WE_BladeRadius - Blade length [m] +63.0 ! WE_BladeRadius - Blade length [m] 4 ! WE_CP_n - Amount of parameters in the Cp array -14.571319658214513 42.809556250371465 2.456512501523107 0.003127994078720 ! WE_CP - Parameters that define the parameterized CP(lambda) function -20 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] -97 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] -4.0469564E+07 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2] +0.0 0.0 0.0 0.0 ! WE_CP - Parameters that define the parameterized CP(lambda) function +0.0 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] +97.0 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] +40469564.444 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2] 1.225 ! WE_RhoAir - Air density, [kg m^-3] -"../5MW_Baseline/Cp_Ct_Cq.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) -320 40 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios -23 ! WE_FOPoles_N - Number of first-order system poles used in EKF -3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] --0.0203 -0.0270 -0.0338 -0.0405 -0.0473 -0.0540 -0.0608 -0.0675 -0.0743 -0.0671 -0.0939 -0.1257 -0.1601 -0.1973 -0.2364 -0.2783 -0.3223 -0.3678 -0.4153 -0.4632 -0.5122 -0.5629 -0.6194 ! WE_FOPoles - First order system poles +"Cp_Ct_Cq.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) +320 40 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios +210 ! WE_FOPoles_N - Number of first-order system poles used in EKF + 4. 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5. 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6. 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7. 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8. 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9. 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10. 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11. 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 12. 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 13. 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9 14. 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 14.9 15. 15.1 15.2 15.3 15.4 15.5 15.6 15.7 15.8 15.9 16. 16.1 16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 17. 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 18. 18.1 18.2 18.3 18.4 18.5 18.6 18.7 18.8 18.9 19. 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9 20. 20.1 20.2 20.3 20.4 20.5 20.6 20.7 20.8 20.9 21. 21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8 21.9 22. 22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8 22.9 23. 23.1 23.2 23.3 23.4 23.5 23.6 23.7 23.8 23.9 24. 24.1 24.2 24.3 24.4 24.5 24.6 24.7 24.8 24.9 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] +-0.02665071 -0.02731698 -0.02798324 -0.02864951 -0.02931578 -0.02998205 -0.03064832 -0.03131458 -0.03198085 -0.03264712 -0.03331339 -0.03397965 -0.03464592 -0.03531219 -0.03597846 -0.03664473 -0.03731099 -0.03797726 -0.03864353 -0.0393098 -0.03997606 -0.04064233 -0.0413086 -0.04197487 -0.04264113 -0.0433074 -0.04397367 -0.04463994 -0.04530621 -0.04597247 -0.04663874 -0.04730501 -0.04797128 -0.04863754 -0.04930381 -0.04997008 -0.05063635 -0.05130262 -0.05196888 -0.05263515 -0.05330142 -0.05396769 -0.05463395 -0.05530022 -0.05596649 -0.05663276 -0.05729903 -0.05796529 -0.05863156 -0.05929783 -0.0599641 -0.06063036 -0.06129663 -0.0619629 -0.06262917 -0.06329543 -0.0639617 -0.06462797 -0.06529424 -0.06596051 -0.06662677 -0.06729304 -0.06795931 -0.06862558 -0.06929184 -0.06995811 -0.07062438 -0.07129065 -0.07195692 -0.07262318 -0.07328945 -0.07395572 -0.07462199 -0.07528825 -0.06255511 -0.0590773 -0.05859702 -0.059213 -0.06046682 -0.06210984 -0.0640096 -0.06610529 -0.0683423 -0.070758 -0.07323646 -0.07579478 -0.07844852 -0.08117774 -0.08390076 -0.0867106 -0.08960184 -0.09248232 -0.09541253 -0.098372 -0.10140157 -0.10441711 -0.10750085 -0.11060438 -0.11367099 -0.11685112 -0.12002054 -0.12321879 -0.12640235 -0.12966799 -0.132903 -0.13621668 -0.1395384 -0.14281439 -0.14622953 -0.14958941 -0.15298377 -0.15638507 -0.15988069 -0.16329676 -0.16679199 -0.17037944 -0.17386309 -0.17745208 -0.18104322 -0.18466857 -0.18833013 -0.19198735 -0.19568612 -0.19938387 -0.20312384 -0.20690115 -0.21071128 -0.21450157 -0.21833127 -0.2222106 -0.22609574 -0.23000997 -0.23388144 -0.23778483 -0.24176819 -0.24576589 -0.24973822 -0.25381357 -0.25781468 -0.26187556 -0.26596023 -0.27007274 -0.27414513 -0.27829259 -0.28244011 -0.28663449 -0.29083777 -0.29504553 -0.29918656 -0.3034999 -0.30774012 -0.31201069 -0.31631541 -0.32066906 -0.32494706 -0.32937838 -0.33369654 -0.33813863 -0.34246103 -0.34692865 -0.35132272 -0.35584844 -0.36020693 -0.36470127 -0.36923585 -0.37376641 -0.37830693 -0.38281532 -0.38739609 -0.39195619 -0.39652309 -0.40114189 -0.40572653 -0.41034746 -0.41492639 -0.41950114 -0.42416759 -0.4288811 -0.43362846 -0.43828853 -0.44309586 -0.44791123 -0.45279619 -0.45764192 -0.46246564 -0.46734167 -0.47229982 -0.47714309 -0.48207132 -0.48696157 -0.49182628 -0.49668803 -0.5014653 -0.50621343 -0.51084796 -0.5155572 -0.5200901 -0.52468282 -0.52919625 -0.53370923 -0.53826826 -0.54301653 -0.54771549 -0.55247836 -0.55745576 -0.56258965 -0.5677368 -0.57324153 -0.57870428 -0.58462774 ! WE_FOPoles - First order system poles !------- YAW CONTROL ------------------------------------------------------ -1.745329252 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] -0.17453 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] +0.0 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] +0.0 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] 1 ! Y_IPC_n - Number of controller gains (yaw-by-IPC) --0.064 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp --0.0008 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki -0.6283185 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. -1.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. -0.00000 ! Y_MErrSet - Yaw alignment error, set point [rad] -1.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] -0.016667 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] -0.0034906 ! Y_Rate - Yaw rate [rad/s] +0.0 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp +0.0 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki +0.0 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. +0.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. +0.0 ! Y_MErrSet - Yaw alignment error, set point [rad] +0.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] +0.0 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] +0.0 ! Y_Rate - Yaw rate [rad/s] !------- TOWER FORE-AFT DAMPING ------------------------------------------- -1 ! FA_KI - Integral gain for the fore-aft tower damper controller, -1 = off / >0 = on [rad s/m] - !NJA - Make this a flag -0.1 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] -0.087266 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] +0.0 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] +0.0 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] !------- PEAK SHAVING ------------------------------------------- -23 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) -3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] - -0.0349 -0.0349 -0.0349 -0.0349 -0.0349 -0.0349 -0.0349 -0.0114 0.0356 0.0577 0.0825 0.1058 0.1282 0.1499 0.1708 0.1913 0.2114 0.2310 0.2502 0.2690 0.2874 0.3056 0.3239 ! PS_BldPitchMin - Minimum blade pitch angles [rad] +210 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) + 4. 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5. 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6. 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7. 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8. 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9. 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10. 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11. 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 12. 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 13. 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9 14. 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 14.9 15. 15.1 15.2 15.3 15.4 15.5 15.6 15.7 15.8 15.9 16. 16.1 16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 17. 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 18. 18.1 18.2 18.3 18.4 18.5 18.6 18.7 18.8 18.9 19. 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9 20. 20.1 20.2 20.3 20.4 20.5 20.6 20.7 20.8 20.9 21. 21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8 21.9 22. 22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8 22.9 23. 23.1 23.2 23.3 23.4 23.5 23.6 23.7 23.8 23.9 24. 24.1 24.2 24.3 24.4 24.5 24.6 24.7 24.8 24.9 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] +-0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.02962541 -0.02230897 -0.01548946 -0.00915689 -0.00323985 0.00231633 0.00755924 0.01252064 0.01723337 0.02171883 0.02600713 0.03010809 0.03403543 0.03780094 0.04141197 0.0448834 0.04301121 0.04572902 0.04841563 0.05107257 0.05370175 0.05630738 0.05888727 0.06144604 0.06398009 0.06649806 0.06899513 0.07147461 0.07393783 0.0763848 0.07881322 0.08122765 0.08363032 0.08601684 0.0883911 0.09075519 0.09310191 0.09543925 0.09776725 0.10008031 0.1023843 0.10467939 0.10696282 0.10923552 0.11150342 0.11375564 0.11600427 0.118243 0.12047296 0.12269376 0.12490488 0.12711415 0.12931036 0.13150096 0.13368154 0.13585982 0.13803009 0.14018961 0.14234359 0.14449503 0.14663648 0.14877236 0.15089947 0.15302471 0.155141 0.15725402 0.15935959 0.16145813 0.16355132 0.16563963 0.16772494 0.1698033 0.17187555 0.17394191 0.17600722 0.17806499 0.18011745 0.18216164 0.18420446 0.18624091 0.18827655 0.19030833 0.19233052 0.19434885 0.19636357 0.19837593 0.20037883 0.20238383 0.20438058 0.20637502 0.20836358 0.21034732 0.21232885 0.21430571 0.21627763 0.21824694 0.22021326 0.22217222 0.22412743 0.22608217 0.22803347 0.22998291 0.23192295 0.23385759 0.23579759 0.23772869 0.23965799 0.24157841 0.24349944 0.24541689 0.24733152 0.24924241 0.25115108 0.25305646 0.25495687 0.25685379 0.25874221 0.26063593 0.26252242 0.26440664 0.26628698 0.26816398 0.27004031 0.27191147 0.27377527 0.27564404 0.27750921 0.27935984 0.28121741 0.28306997 0.2849209 0.28676631 0.28860828 0.29045122 0.29229007 0.29412417 0.29595331 0.29778415 0.29960719 0.30142759 0.30324755 0.30506054 0.30687771 0.30869136 0.31049896 0.31230004 0.31410149 0.3159051 0.3177027 0.31949741 0.32128578 0.32306955 ! PS_BldPitchMin - Minimum blade pitch angles [rad] diff --git a/examples/DISCON_TEST.IN b/examples/DISCON_TEST.IN index 99dee3c36..ef7726c15 100644 --- a/examples/DISCON_TEST.IN +++ b/examples/DISCON_TEST.IN @@ -1,5 +1,5 @@ ! Controller parameter input file for the 5MW_Land wind turbine -! - File written using NREL Baseline Controller tuning logic on 10/01/19 +! - File written using NREL Baseline Controller tuning logic on 10/07/19 !------- DEBUG ------------------------------------------------------------ 1 ! LoggingLevel - {0: write no debug files, 1: write standard output .dbg-file, 2: write standard output .dbg-file and complete avrSWAP-array .dbg2-file @@ -16,24 +16,24 @@ 1 ! PS_Mode - Peak shaving mode {0: no peak shaving, 1: implement peak shaving} !------- FILTERS ---------------------------------------------------------- -1.570796326 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz] +1.543417826848871 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz] 0 ! F_LPFDamping - Damping coefficient [used only when F_FilterType = 2] 0 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s] 0 0 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-] 0.5 ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [Hz]. !------- BLADE PITCH CONTROL ---------------------------------------------- -136 ! PC_GS_n - Amount of gain-scheduling table entries -0. 0.01843267 0.03012466 0.03938211 0.0473159 0.05438725 0.0608399 0.06682165 0.07243603 0.07774601 0.08280179 0.08764533 0.0922973 0.09678511 0.10113084 0.10534505 0.10944741 0.11344459 0.11734245 0.12115249 0.12488383 0.12853954 0.13212927 0.13565125 0.13911823 0.1425236 0.14587973 0.1491875 0.15244657 0.15566288 0.15883986 0.16197375 0.16506986 0.16813214 0.17115907 0.17415428 0.17711497 0.18004808 0.18295399 0.1858281 0.1886768 0.19150248 0.19430239 0.19707534 0.19983015 0.2025582 0.20526628 0.20795513 0.21062023 0.21326861 0.2158935 0.21850484 0.2210941 0.22366803 0.22622254 0.22876498 0.2312836 0.23379345 0.23628255 0.23875941 0.24122279 0.24366729 0.24610036 0.24852176 0.25092855 0.25332325 0.2557023 0.25807209 0.26042559 0.26276748 0.26510036 0.26742092 0.26973036 0.27202782 0.27431492 0.27658881 0.27885401 0.28110964 0.28336045 0.2855962 0.28782076 0.29003745 0.29224346 0.29444004 0.29663204 0.2988061 0.30097858 0.30314198 0.30529447 0.30743825 0.30958 0.31170708 0.31382687 0.31593631 0.3180419 0.32013786 0.32222978 0.32431029 0.32638663 0.32845309 0.33051357 0.33256802 0.33461455 0.33665611 0.33868284 0.34071023 0.34272963 0.34474196 0.34674528 0.34875073 0.35074041 0.35272695 0.35470654 0.35668277 0.35864961 0.36061312 0.36256798 0.36452117 0.36646633 0.36840178 0.37033735 0.3722649 0.37418622 0.37609996 0.37801477 0.37991806 0.38181864 0.38371323 0.38560453 0.38749153 0.38937202 0.39124103 0.39310673 0.39497577 0.39683082 0.39868511 ! PC_GS_angles - Gain-schedule table: pitch angles --0.02019147 -0.01950333 -0.01885443 -0.0182415 -0.01766165 -0.01711225 -0.01659098 -0.01609573 -0.01562459 -0.01517585 -0.01474794 -0.01433946 -0.0139491 -0.01357569 -0.01321814 -0.01287547 -0.01254676 -0.01223119 -0.01192797 -0.0116364 -0.01135581 -0.01108561 -0.01082521 -0.01057411 -0.0103318 -0.01009784 -0.00987181 -0.00965329 -0.00944194 -0.00923739 -0.00903933 -0.00884745 -0.00866147 -0.00848112 -0.00830614 -0.00813631 -0.0079714 -0.00781119 -0.00765549 -0.00750411 -0.00735688 -0.00721362 -0.00707417 -0.0069384 -0.00680614 -0.00667728 -0.00655167 -0.0064292 -0.00630975 -0.00619322 -0.00607949 -0.00596846 -0.00586005 -0.00575415 -0.00565069 -0.00554957 -0.00545073 -0.00535408 -0.00525955 -0.00516708 -0.00507659 -0.00498803 -0.00490133 -0.00481644 -0.00473329 -0.00465184 -0.00457204 -0.00449383 -0.00441716 -0.004342 -0.0042683 -0.00419602 -0.00412511 -0.00405553 -0.00398726 -0.00392025 -0.00385447 -0.00378988 -0.00372646 -0.00366417 -0.00360298 -0.00354286 -0.00348379 -0.00342574 -0.00336868 -0.00331258 -0.00325743 -0.00320319 -0.00314985 -0.00309739 -0.00304578 -0.002995 -0.00294503 -0.00289585 -0.00284745 -0.00279981 -0.0027529 -0.00270671 -0.00266123 -0.00261644 -0.00257232 -0.00252886 -0.00248604 -0.00244385 -0.00240228 -0.00236131 -0.00232093 -0.00228112 -0.00224188 -0.0022032 -0.00216505 -0.00212743 -0.00209033 -0.00205374 -0.00201765 -0.00198204 -0.00194691 -0.00191225 -0.00187805 -0.0018443 -0.00181099 -0.00177811 -0.00174566 -0.00171362 -0.00168199 -0.00165076 -0.00161992 -0.00158947 -0.00155939 -0.00152969 -0.00150035 -0.00147137 -0.00144274 -0.00141446 -0.00138651 -0.0013589 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains --0.00882307 -0.00856411 -0.00831992 -0.00808927 -0.00787106 -0.00766432 -0.00746816 -0.00728178 -0.00710449 -0.00693562 -0.0067746 -0.00662088 -0.00647398 -0.00633346 -0.00619891 -0.00606996 -0.00594626 -0.00582751 -0.0057134 -0.00560368 -0.00549809 -0.00539641 -0.00529842 -0.00520393 -0.00511274 -0.0050247 -0.00493964 -0.00485741 -0.00477787 -0.0047009 -0.00462637 -0.00455416 -0.00448417 -0.0044163 -0.00435046 -0.00428655 -0.00422449 -0.0041642 -0.00410561 -0.00404864 -0.00399324 -0.00393933 -0.00388685 -0.00383576 -0.00378599 -0.00373749 -0.00369023 -0.00364414 -0.00359919 -0.00355534 -0.00351254 -0.00347076 -0.00342996 -0.00339011 -0.00335117 -0.00331312 -0.00327593 -0.00323956 -0.00320399 -0.00316919 -0.00313514 -0.00310181 -0.00306918 -0.00303724 -0.00300595 -0.0029753 -0.00294526 -0.00291583 -0.00288698 -0.0028587 -0.00283096 -0.00280376 -0.00277708 -0.0027509 -0.0027252 -0.00269999 -0.00267523 -0.00265093 -0.00262706 -0.00260362 -0.00258059 -0.00255797 -0.00253574 -0.0025139 -0.00249242 -0.00247131 -0.00245056 -0.00243015 -0.00241008 -0.00239033 -0.00237091 -0.0023518 -0.002333 -0.00231449 -0.00229628 -0.00227835 -0.0022607 -0.00224332 -0.0022262 -0.00220935 -0.00219274 -0.00217639 -0.00216028 -0.0021444 -0.00212876 -0.00211334 -0.00209814 -0.00208316 -0.0020684 -0.00205384 -0.00203948 -0.00202533 -0.00201136 -0.00199759 -0.00198401 -0.00197061 -0.00195739 -0.00194435 -0.00193148 -0.00191878 -0.00190624 -0.00189387 -0.00188166 -0.0018696 -0.0018577 -0.00184595 -0.00183434 -0.00182288 -0.00181157 -0.00180039 -0.00178935 -0.00177844 -0.00176767 -0.00175702 -0.00174651 -0.00173612 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains -0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_KD - Gain-schedule table: pitch controller kd gains -0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) +27 ! PC_GS_n - Amount of gain-scheduling table entries +0.05852874 0.08586931 0.10789716 0.1271165 0.14453395 0.16067791 0.17585826 0.19027256 0.20405942 0.21730904 0.23010311 0.24249689 0.2545414 0.26626371 0.27770397 0.28889173 0.29983774 0.31057221 0.32109644 0.33144053 0.34160524 0.35160739 0.36145513 0.37115299 0.38071093 0.3901412 0.39943831 ! PC_GS_angles - Gain-schedule table: pitch angles +-0.01603382 -0.01396602 -0.01229584 -0.01091865 -0.00976358 -0.00878088 -0.00793467 -0.00719835 -0.00655181 -0.00597959 -0.00546956 -0.00501211 -0.00459951 -0.00422546 -0.00388481 -0.00357328 -0.00328728 -0.0030238 -0.00278028 -0.00255453 -0.00234468 -0.00214911 -0.0019664 -0.00179533 -0.00163481 -0.00148391 -0.00134179 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains +-0.00715561 -0.00639445 -0.00577965 -0.00527271 -0.00484752 -0.00448579 -0.0041743 -0.00390326 -0.00366527 -0.00345463 -0.00326689 -0.0030985 -0.00294662 -0.00280893 -0.00268354 -0.00256886 -0.00246359 -0.0023666 -0.00227696 -0.00219386 -0.00211661 -0.00204462 -0.00197737 -0.0019144 -0.00185531 -0.00179976 -0.00174745 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains +0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_KD - Gain-schedule table: pitch controller kd gains +0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) 1.5707 ! PC_MaxPit - Maximum physical pitch limit, [rad]. --0.087266 ! PC_MinPit - Minimum physical pitch limit, [rad]. +-0.087266 ! PC_MinPit - Minimum physical pitch limit, [rad]. 0.13962 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. -0.13962 ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. -122.90957 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. +122.90957658394467 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. 0.0 ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad] 0.003490658 ! PC_Switch - Angle above lowest minimum pitch angle for switch, [rad] 0 ! Z_EnableSine - Enable/disable sine pitch excitation, used to validate for dynamic induction control, will be removed later, [-] @@ -41,63 +41,64 @@ 0 ! Z_PitchFrequency - Frequency of sine pitch excitation, [rad/s] !------- INDIVIDUAL PITCH CONTROL ----------------------------------------- -0.087266 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] -1E-8 0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] -0.436332313 0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. -2.5 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] +0.0 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] +0.0 0.0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] +0.0 0.0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. +0.0 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] !------- VS TORQUE CONTROL ------------------------------------------------ -0.944 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-] -43093.55 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] -150000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. -48000.00 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. +94.4 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-] +43093.55150917838 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] +1500000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. +47402.906660096225 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. 0.0 ! VS_MinTq - Minimum generator (HSS side), [Nm]. -91.2109 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] -2.33228 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] -5.0E+06 ! VS_RtPwr - Wind turbine rated power [W] -43093.55 ! VS_RtTq - Rated torque, [Nm]. -120.113 ! VS_RefSpd - Rated generator speed [rad/s] +0.0 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] +0.0 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] +5000000 ! VS_RtPwr - Wind turbine rated power [W] +43093.55150917838 ! VS_RtTq - Rated torque, [Nm]. +122.90957658394467 ! VS_RefSpd - Rated generator speed [rad/s] 1 ! VS_n - Number of generator PI torque controller gains --835 ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) --164 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-889.094048017944 ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-172.0461874545648 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +7.4 ! VS_TSRopt - Power-maximizing region 2 tip-speed-ratio [rad]. !------- SETPOINT SMOOTHER --------------------------------------------- 30 ! SS_VSGainBias - Variable speed torque controller gain bias, [(rad/s)/rad]. 0.001 ! SS_PCGainBias - Collective pitch controller gain bias, [(rad/s)/Nm]. !------- WIND SPEED ESTIMATOR --------------------------------------------- -63.0 ! WE_BladeRadius - Blade length [m] +63.0 ! WE_BladeRadius - Blade length [m] 4 ! WE_CP_n - Amount of parameters in the Cp array -14.571319658214513 42.809556250371465 2.456512501523107 0.003127994078720 ! WE_CP - Parameters that define the parameterized CP(lambda) function -20 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] -97 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] -4.0469564E+07 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2] +0.0 0.0 0.0 0.0 ! WE_CP - Parameters that define the parameterized CP(lambda) function +0.0 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] +97.0 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] +40469564.444 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2] 1.225 ! WE_RhoAir - Air density, [kg m^-3] "../5MW_Baseline/Cp_Ct_Cq.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) -320 40 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios -23 ! WE_FOPoles_N - Number of first-order system poles used in EKF -3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] --0.0203 -0.0270 -0.0338 -0.0405 -0.0473 -0.0540 -0.0608 -0.0675 -0.0743 -0.0671 -0.0939 -0.1257 -0.1601 -0.1973 -0.2364 -0.2783 -0.3223 -0.3678 -0.4153 -0.4632 -0.5122 -0.5629 -0.6194 ! WE_FOPoles - First order system poles +320 40 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios +42 ! WE_FOPoles_N - Number of first-order system poles used in EKF + 4. 4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5 9. 9.5 10. 10.5 11. 11.9 12.4 12.9 13.4 13.9 14.4 14.9 15.4 15.9 16.4 16.9 17.4 17.9 18.4 18.9 19.4 19.9 20.4 20.9 21.4 21.9 22.4 22.9 23.4 23.9 24.4 24.9 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] +-0.02665071 -0.02998205 -0.03331339 -0.03664473 -0.03997606 -0.0433074 -0.04663874 -0.04997008 -0.05330142 -0.05663276 -0.0599641 -0.06329543 -0.06662677 -0.06995811 -0.07328945 -0.06321278 -0.07469151 -0.08828579 -0.10297822 -0.11842623 -0.13448765 -0.15120764 -0.168455 -0.18635293 -0.20483641 -0.22395323 -0.24348262 -0.26365771 -0.2842596 -0.30535287 -0.32683352 -0.3487705 -0.37113879 -0.39376001 -0.41675049 -0.44017539 -0.46432564 -0.4888057 -0.51273708 -0.53554138 -0.55932133 -0.58645605 ! WE_FOPoles - First order system poles !------- YAW CONTROL ------------------------------------------------------ -1.745329252 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] -0.17453 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] +0.0 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] +0.0 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] 1 ! Y_IPC_n - Number of controller gains (yaw-by-IPC) --0.064 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp --0.0008 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki -0.6283185 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. -1.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. -0.00000 ! Y_MErrSet - Yaw alignment error, set point [rad] -1.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] -0.016667 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] -0.0034906 ! Y_Rate - Yaw rate [rad/s] +0.0 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp +0.0 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki +0.0 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. +0.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. +0.0 ! Y_MErrSet - Yaw alignment error, set point [rad] +0.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] +0.0 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] +0.0 ! Y_Rate - Yaw rate [rad/s] !------- TOWER FORE-AFT DAMPING ------------------------------------------- -1 ! FA_KI - Integral gain for the fore-aft tower damper controller, -1 = off / >0 = on [rad s/m] - !NJA - Make this a flag -0.1 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] -0.087266 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] +0.0 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] +0.0 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] !------- PEAK SHAVING ------------------------------------------- -210 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) - 4. 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5. 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6. 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7. 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8. 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9. 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10. 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11. 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 12. 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 13. 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9 14. 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 14.9 15. 15.1 15.2 15.3 15.4 15.5 15.6 15.7 15.8 15.9 16. 16.1 16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 17. 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 18. 18.1 18.2 18.3 18.4 18.5 18.6 18.7 18.8 18.9 19. 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9 20. 20.1 20.2 20.3 20.4 20.5 20.6 20.7 20.8 20.9 21. 21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8 21.9 22. 22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8 22.9 23. 23.1 23.2 23.3 23.4 23.5 23.6 23.7 23.8 23.9 24. 24.1 24.2 24.3 24.4 24.5 24.6 24.7 24.8 24.9 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] --0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.02962541 -0.02230897 -0.01548946 -0.00915689 -0.00323985 0.00231633 0.00755924 0.01252064 0.01723337 0.02171883 0.02600713 0.03010809 0.03403543 0.03780094 0.04141197 0.0448834 0.04301121 0.04572902 0.04841563 0.05107257 0.05370175 0.05630738 0.05888727 0.06144604 0.06398009 0.06649806 0.06899513 0.07147461 0.07393783 0.0763848 0.07881322 0.08122765 0.08363032 0.08601684 0.0883911 0.09075519 0.09310191 0.09543925 0.09776725 0.10008031 0.1023843 0.10467939 0.10696282 0.10923552 0.11150342 0.11375564 0.11600427 0.118243 0.12047296 0.12269376 0.12490488 0.12711415 0.12931036 0.13150096 0.13368154 0.13585982 0.13803009 0.14018961 0.14234359 0.14449503 0.14663648 0.14877236 0.15089947 0.15302471 0.155141 0.15725402 0.15935959 0.16145813 0.16355132 0.16563963 0.16772494 0.1698033 0.17187555 0.17394191 0.17600722 0.17806499 0.18011745 0.18216164 0.18420446 0.18624091 0.18827655 0.19030833 0.19233052 0.19434885 0.19636357 0.19837593 0.20037883 0.20238383 0.20438058 0.20637502 0.20836358 0.21034732 0.21232885 0.21430571 0.21627763 0.21824694 0.22021326 0.22217222 0.22412743 0.22608217 0.22803347 0.22998291 0.23192295 0.23385759 0.23579759 0.23772869 0.23965799 0.24157841 0.24349944 0.24541689 0.24733152 0.24924241 0.25115108 0.25305646 0.25495687 0.25685379 0.25874221 0.26063593 0.26252242 0.26440664 0.26628698 0.26816398 0.27004031 0.27191147 0.27377527 0.27564404 0.27750921 0.27935984 0.28121741 0.28306997 0.2849209 0.28676631 0.28860828 0.29045122 0.29229007 0.29412417 0.29595331 0.29778415 0.29960719 0.30142759 0.30324755 0.30506054 0.30687771 0.30869136 0.31049896 0.31230004 0.31410149 0.3159051 0.3177027 0.31949741 0.32128578 0.32306955 ! PS_BldPitchMin - Minimum blade pitch angles [rad] +42 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) + 4. 4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5 9. 9.5 10. 10.5 11. 11.9 12.4 12.9 13.4 13.9 14.4 14.9 15.4 15.9 16.4 16.9 17.4 17.9 18.4 18.9 19.4 19.9 20.4 20.9 21.4 21.9 22.4 22.9 23.4 23.9 24.4 24.9 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] +-0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03275873 0.00083377 0.02543348 0.0448834 0.0667768 0.07915202 0.09113854 0.10280435 0.11420819 0.12538567 0.13636556 0.14716567 0.15780447 0.1683014 0.178663 0.18889865 0.19901765 0.20902392 0.21892797 0.22873221 0.23844548 0.24806675 0.25759734 0.26705022 0.27641741 0.2857055 0.29491896 0.3040543 0.31311378 0.32210299 0.33103247 ! PS_BldPitchMin - Minimum blade pitch angles [rad] diff --git a/examples/Example_07.py b/examples/Example_07.py index e346543e7..8319260c4 100644 --- a/examples/Example_07.py +++ b/examples/Example_07.py @@ -1,7 +1,7 @@ # Example_07 # Load gain schedules, write_paramter input file, plot gains - +#%% import numpy as np from scipy import interpolate @@ -47,4 +47,4 @@ pl.ylabel('Integral Gain') pl.show() -#%% + diff --git a/examples/Run_TestCases.py b/examples/Run_TestCases.py index 959ce7e11..d8f459ff0 100644 --- a/examples/Run_TestCases.py +++ b/examples/Run_TestCases.py @@ -10,21 +10,21 @@ # define folder names in Test_Cases to run testcases = [ - '5MW_Step_Legacy', # Below Rated - '5MW_Step_Baseline', - '5MW_BR_Legacy', # Below Rated + # '5MW_Step_Legacy', # Below Rated + # '5MW_Step_Baseline', + # '5MW_BR_Legacy', # Below Rated '5MW_BR_Baseline', - '5MW_NR_Legacy', # Near Rated + # '5MW_NR_Legacy', # Near Rated '5MW_NR_Baseline', - '5MW_AR_Legacy', # Above Rated + # '5MW_AR_Legacy', # Above Rated '5MW_AR_Baseline', - '5MW_OC4_ARsteady_Legacy', # OC4 Hywind + # '5MW_OC4_ARsteady_Legacy', # OC4 Hywind '5MW_OC4_ARsteady_Baseline', # OC4 Hywind - '5MW_OC4_NR_Legacy', # OC4 Hywind + # '5MW_OC4_NR_Legacy', # OC4 Hywind '5MW_OC4_NR_Baseline', # OC4 Hywind - '5MW_OC4_AR_Legacy', # OC4 Hywind + # '5MW_OC4_AR_Legacy', # OC4 Hywind '5MW_OC4_AR_Baseline', # OC4 Hywind - '5MW_OC4_MH_Legacy', # OC4 Hywind + # '5MW_OC4_MH_Legacy', # OC4 Hywind '5MW_OC4_MH_Baseline', # OC4 Hywind ] From 4a4ff5f417ffe33899d17903df58745ef157e6be Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Tue, 8 Oct 2019 00:50:31 -0600 Subject: [PATCH 09/10] Update Test Case I/O --- Test_Cases/5MW_AR_Baseline/DISCON.IN | 99 +++++++++--------- Test_Cases/5MW_BR_Baseline/DISCON.IN | 99 +++++++++--------- Test_Cases/5MW_Baseline/DISCON.IN | 99 +++++++++--------- Test_Cases/5MW_Baseline/DISCON/DISCON.dll | Bin 801452 -> 795444 bytes .../5MW_Baseline/DISCON/DISCON_glin64.so | Bin 64800 -> 64800 bytes Test_Cases/5MW_NR_Baseline/DISCON.IN | 99 +++++++++--------- Test_Cases/5MW_OC4_AR_Baseline/DISCON.IN | 99 +++++++++--------- .../5MW_OC4_ARsteady_Baseline/DISCON.IN | 99 +++++++++--------- ...shrBsline5MW_OC4DeepCwindSemi_ServoDyn.dat | 2 +- Test_Cases/5MW_OC4_MH_Baseline/DISCON.IN | 99 +++++++++--------- ...shrBsline5MW_OC4DeepCwindSemi_ServoDyn.dat | 2 +- Test_Cases/5MW_OC4_NR_Baseline/DISCON.IN | 99 +++++++++--------- ...shrBsline5MW_OC4DeepCwindSemi_ServoDyn.dat | 2 +- Test_Cases/5MW_Step_Baseline/DISCON.IN | 99 +++++++++--------- 14 files changed, 453 insertions(+), 444 deletions(-) diff --git a/Test_Cases/5MW_AR_Baseline/DISCON.IN b/Test_Cases/5MW_AR_Baseline/DISCON.IN index 99dee3c36..ef7726c15 100644 --- a/Test_Cases/5MW_AR_Baseline/DISCON.IN +++ b/Test_Cases/5MW_AR_Baseline/DISCON.IN @@ -1,5 +1,5 @@ ! Controller parameter input file for the 5MW_Land wind turbine -! - File written using NREL Baseline Controller tuning logic on 10/01/19 +! - File written using NREL Baseline Controller tuning logic on 10/07/19 !------- DEBUG ------------------------------------------------------------ 1 ! LoggingLevel - {0: write no debug files, 1: write standard output .dbg-file, 2: write standard output .dbg-file and complete avrSWAP-array .dbg2-file @@ -16,24 +16,24 @@ 1 ! PS_Mode - Peak shaving mode {0: no peak shaving, 1: implement peak shaving} !------- FILTERS ---------------------------------------------------------- -1.570796326 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz] +1.543417826848871 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz] 0 ! F_LPFDamping - Damping coefficient [used only when F_FilterType = 2] 0 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s] 0 0 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-] 0.5 ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [Hz]. !------- BLADE PITCH CONTROL ---------------------------------------------- -136 ! PC_GS_n - Amount of gain-scheduling table entries -0. 0.01843267 0.03012466 0.03938211 0.0473159 0.05438725 0.0608399 0.06682165 0.07243603 0.07774601 0.08280179 0.08764533 0.0922973 0.09678511 0.10113084 0.10534505 0.10944741 0.11344459 0.11734245 0.12115249 0.12488383 0.12853954 0.13212927 0.13565125 0.13911823 0.1425236 0.14587973 0.1491875 0.15244657 0.15566288 0.15883986 0.16197375 0.16506986 0.16813214 0.17115907 0.17415428 0.17711497 0.18004808 0.18295399 0.1858281 0.1886768 0.19150248 0.19430239 0.19707534 0.19983015 0.2025582 0.20526628 0.20795513 0.21062023 0.21326861 0.2158935 0.21850484 0.2210941 0.22366803 0.22622254 0.22876498 0.2312836 0.23379345 0.23628255 0.23875941 0.24122279 0.24366729 0.24610036 0.24852176 0.25092855 0.25332325 0.2557023 0.25807209 0.26042559 0.26276748 0.26510036 0.26742092 0.26973036 0.27202782 0.27431492 0.27658881 0.27885401 0.28110964 0.28336045 0.2855962 0.28782076 0.29003745 0.29224346 0.29444004 0.29663204 0.2988061 0.30097858 0.30314198 0.30529447 0.30743825 0.30958 0.31170708 0.31382687 0.31593631 0.3180419 0.32013786 0.32222978 0.32431029 0.32638663 0.32845309 0.33051357 0.33256802 0.33461455 0.33665611 0.33868284 0.34071023 0.34272963 0.34474196 0.34674528 0.34875073 0.35074041 0.35272695 0.35470654 0.35668277 0.35864961 0.36061312 0.36256798 0.36452117 0.36646633 0.36840178 0.37033735 0.3722649 0.37418622 0.37609996 0.37801477 0.37991806 0.38181864 0.38371323 0.38560453 0.38749153 0.38937202 0.39124103 0.39310673 0.39497577 0.39683082 0.39868511 ! PC_GS_angles - Gain-schedule table: pitch angles --0.02019147 -0.01950333 -0.01885443 -0.0182415 -0.01766165 -0.01711225 -0.01659098 -0.01609573 -0.01562459 -0.01517585 -0.01474794 -0.01433946 -0.0139491 -0.01357569 -0.01321814 -0.01287547 -0.01254676 -0.01223119 -0.01192797 -0.0116364 -0.01135581 -0.01108561 -0.01082521 -0.01057411 -0.0103318 -0.01009784 -0.00987181 -0.00965329 -0.00944194 -0.00923739 -0.00903933 -0.00884745 -0.00866147 -0.00848112 -0.00830614 -0.00813631 -0.0079714 -0.00781119 -0.00765549 -0.00750411 -0.00735688 -0.00721362 -0.00707417 -0.0069384 -0.00680614 -0.00667728 -0.00655167 -0.0064292 -0.00630975 -0.00619322 -0.00607949 -0.00596846 -0.00586005 -0.00575415 -0.00565069 -0.00554957 -0.00545073 -0.00535408 -0.00525955 -0.00516708 -0.00507659 -0.00498803 -0.00490133 -0.00481644 -0.00473329 -0.00465184 -0.00457204 -0.00449383 -0.00441716 -0.004342 -0.0042683 -0.00419602 -0.00412511 -0.00405553 -0.00398726 -0.00392025 -0.00385447 -0.00378988 -0.00372646 -0.00366417 -0.00360298 -0.00354286 -0.00348379 -0.00342574 -0.00336868 -0.00331258 -0.00325743 -0.00320319 -0.00314985 -0.00309739 -0.00304578 -0.002995 -0.00294503 -0.00289585 -0.00284745 -0.00279981 -0.0027529 -0.00270671 -0.00266123 -0.00261644 -0.00257232 -0.00252886 -0.00248604 -0.00244385 -0.00240228 -0.00236131 -0.00232093 -0.00228112 -0.00224188 -0.0022032 -0.00216505 -0.00212743 -0.00209033 -0.00205374 -0.00201765 -0.00198204 -0.00194691 -0.00191225 -0.00187805 -0.0018443 -0.00181099 -0.00177811 -0.00174566 -0.00171362 -0.00168199 -0.00165076 -0.00161992 -0.00158947 -0.00155939 -0.00152969 -0.00150035 -0.00147137 -0.00144274 -0.00141446 -0.00138651 -0.0013589 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains --0.00882307 -0.00856411 -0.00831992 -0.00808927 -0.00787106 -0.00766432 -0.00746816 -0.00728178 -0.00710449 -0.00693562 -0.0067746 -0.00662088 -0.00647398 -0.00633346 -0.00619891 -0.00606996 -0.00594626 -0.00582751 -0.0057134 -0.00560368 -0.00549809 -0.00539641 -0.00529842 -0.00520393 -0.00511274 -0.0050247 -0.00493964 -0.00485741 -0.00477787 -0.0047009 -0.00462637 -0.00455416 -0.00448417 -0.0044163 -0.00435046 -0.00428655 -0.00422449 -0.0041642 -0.00410561 -0.00404864 -0.00399324 -0.00393933 -0.00388685 -0.00383576 -0.00378599 -0.00373749 -0.00369023 -0.00364414 -0.00359919 -0.00355534 -0.00351254 -0.00347076 -0.00342996 -0.00339011 -0.00335117 -0.00331312 -0.00327593 -0.00323956 -0.00320399 -0.00316919 -0.00313514 -0.00310181 -0.00306918 -0.00303724 -0.00300595 -0.0029753 -0.00294526 -0.00291583 -0.00288698 -0.0028587 -0.00283096 -0.00280376 -0.00277708 -0.0027509 -0.0027252 -0.00269999 -0.00267523 -0.00265093 -0.00262706 -0.00260362 -0.00258059 -0.00255797 -0.00253574 -0.0025139 -0.00249242 -0.00247131 -0.00245056 -0.00243015 -0.00241008 -0.00239033 -0.00237091 -0.0023518 -0.002333 -0.00231449 -0.00229628 -0.00227835 -0.0022607 -0.00224332 -0.0022262 -0.00220935 -0.00219274 -0.00217639 -0.00216028 -0.0021444 -0.00212876 -0.00211334 -0.00209814 -0.00208316 -0.0020684 -0.00205384 -0.00203948 -0.00202533 -0.00201136 -0.00199759 -0.00198401 -0.00197061 -0.00195739 -0.00194435 -0.00193148 -0.00191878 -0.00190624 -0.00189387 -0.00188166 -0.0018696 -0.0018577 -0.00184595 -0.00183434 -0.00182288 -0.00181157 -0.00180039 -0.00178935 -0.00177844 -0.00176767 -0.00175702 -0.00174651 -0.00173612 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains -0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_KD - Gain-schedule table: pitch controller kd gains -0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) +27 ! PC_GS_n - Amount of gain-scheduling table entries +0.05852874 0.08586931 0.10789716 0.1271165 0.14453395 0.16067791 0.17585826 0.19027256 0.20405942 0.21730904 0.23010311 0.24249689 0.2545414 0.26626371 0.27770397 0.28889173 0.29983774 0.31057221 0.32109644 0.33144053 0.34160524 0.35160739 0.36145513 0.37115299 0.38071093 0.3901412 0.39943831 ! PC_GS_angles - Gain-schedule table: pitch angles +-0.01603382 -0.01396602 -0.01229584 -0.01091865 -0.00976358 -0.00878088 -0.00793467 -0.00719835 -0.00655181 -0.00597959 -0.00546956 -0.00501211 -0.00459951 -0.00422546 -0.00388481 -0.00357328 -0.00328728 -0.0030238 -0.00278028 -0.00255453 -0.00234468 -0.00214911 -0.0019664 -0.00179533 -0.00163481 -0.00148391 -0.00134179 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains +-0.00715561 -0.00639445 -0.00577965 -0.00527271 -0.00484752 -0.00448579 -0.0041743 -0.00390326 -0.00366527 -0.00345463 -0.00326689 -0.0030985 -0.00294662 -0.00280893 -0.00268354 -0.00256886 -0.00246359 -0.0023666 -0.00227696 -0.00219386 -0.00211661 -0.00204462 -0.00197737 -0.0019144 -0.00185531 -0.00179976 -0.00174745 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains +0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_KD - Gain-schedule table: pitch controller kd gains +0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) 1.5707 ! PC_MaxPit - Maximum physical pitch limit, [rad]. --0.087266 ! PC_MinPit - Minimum physical pitch limit, [rad]. +-0.087266 ! PC_MinPit - Minimum physical pitch limit, [rad]. 0.13962 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. -0.13962 ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. -122.90957 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. +122.90957658394467 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. 0.0 ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad] 0.003490658 ! PC_Switch - Angle above lowest minimum pitch angle for switch, [rad] 0 ! Z_EnableSine - Enable/disable sine pitch excitation, used to validate for dynamic induction control, will be removed later, [-] @@ -41,63 +41,64 @@ 0 ! Z_PitchFrequency - Frequency of sine pitch excitation, [rad/s] !------- INDIVIDUAL PITCH CONTROL ----------------------------------------- -0.087266 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] -1E-8 0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] -0.436332313 0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. -2.5 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] +0.0 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] +0.0 0.0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] +0.0 0.0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. +0.0 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] !------- VS TORQUE CONTROL ------------------------------------------------ -0.944 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-] -43093.55 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] -150000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. -48000.00 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. +94.4 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-] +43093.55150917838 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] +1500000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. +47402.906660096225 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. 0.0 ! VS_MinTq - Minimum generator (HSS side), [Nm]. -91.2109 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] -2.33228 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] -5.0E+06 ! VS_RtPwr - Wind turbine rated power [W] -43093.55 ! VS_RtTq - Rated torque, [Nm]. -120.113 ! VS_RefSpd - Rated generator speed [rad/s] +0.0 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] +0.0 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] +5000000 ! VS_RtPwr - Wind turbine rated power [W] +43093.55150917838 ! VS_RtTq - Rated torque, [Nm]. +122.90957658394467 ! VS_RefSpd - Rated generator speed [rad/s] 1 ! VS_n - Number of generator PI torque controller gains --835 ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) --164 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-889.094048017944 ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-172.0461874545648 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +7.4 ! VS_TSRopt - Power-maximizing region 2 tip-speed-ratio [rad]. !------- SETPOINT SMOOTHER --------------------------------------------- 30 ! SS_VSGainBias - Variable speed torque controller gain bias, [(rad/s)/rad]. 0.001 ! SS_PCGainBias - Collective pitch controller gain bias, [(rad/s)/Nm]. !------- WIND SPEED ESTIMATOR --------------------------------------------- -63.0 ! WE_BladeRadius - Blade length [m] +63.0 ! WE_BladeRadius - Blade length [m] 4 ! WE_CP_n - Amount of parameters in the Cp array -14.571319658214513 42.809556250371465 2.456512501523107 0.003127994078720 ! WE_CP - Parameters that define the parameterized CP(lambda) function -20 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] -97 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] -4.0469564E+07 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2] +0.0 0.0 0.0 0.0 ! WE_CP - Parameters that define the parameterized CP(lambda) function +0.0 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] +97.0 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] +40469564.444 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2] 1.225 ! WE_RhoAir - Air density, [kg m^-3] "../5MW_Baseline/Cp_Ct_Cq.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) -320 40 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios -23 ! WE_FOPoles_N - Number of first-order system poles used in EKF -3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] --0.0203 -0.0270 -0.0338 -0.0405 -0.0473 -0.0540 -0.0608 -0.0675 -0.0743 -0.0671 -0.0939 -0.1257 -0.1601 -0.1973 -0.2364 -0.2783 -0.3223 -0.3678 -0.4153 -0.4632 -0.5122 -0.5629 -0.6194 ! WE_FOPoles - First order system poles +320 40 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios +42 ! WE_FOPoles_N - Number of first-order system poles used in EKF + 4. 4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5 9. 9.5 10. 10.5 11. 11.9 12.4 12.9 13.4 13.9 14.4 14.9 15.4 15.9 16.4 16.9 17.4 17.9 18.4 18.9 19.4 19.9 20.4 20.9 21.4 21.9 22.4 22.9 23.4 23.9 24.4 24.9 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] +-0.02665071 -0.02998205 -0.03331339 -0.03664473 -0.03997606 -0.0433074 -0.04663874 -0.04997008 -0.05330142 -0.05663276 -0.0599641 -0.06329543 -0.06662677 -0.06995811 -0.07328945 -0.06321278 -0.07469151 -0.08828579 -0.10297822 -0.11842623 -0.13448765 -0.15120764 -0.168455 -0.18635293 -0.20483641 -0.22395323 -0.24348262 -0.26365771 -0.2842596 -0.30535287 -0.32683352 -0.3487705 -0.37113879 -0.39376001 -0.41675049 -0.44017539 -0.46432564 -0.4888057 -0.51273708 -0.53554138 -0.55932133 -0.58645605 ! WE_FOPoles - First order system poles !------- YAW CONTROL ------------------------------------------------------ -1.745329252 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] -0.17453 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] +0.0 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] +0.0 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] 1 ! Y_IPC_n - Number of controller gains (yaw-by-IPC) --0.064 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp --0.0008 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki -0.6283185 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. -1.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. -0.00000 ! Y_MErrSet - Yaw alignment error, set point [rad] -1.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] -0.016667 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] -0.0034906 ! Y_Rate - Yaw rate [rad/s] +0.0 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp +0.0 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki +0.0 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. +0.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. +0.0 ! Y_MErrSet - Yaw alignment error, set point [rad] +0.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] +0.0 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] +0.0 ! Y_Rate - Yaw rate [rad/s] !------- TOWER FORE-AFT DAMPING ------------------------------------------- -1 ! FA_KI - Integral gain for the fore-aft tower damper controller, -1 = off / >0 = on [rad s/m] - !NJA - Make this a flag -0.1 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] -0.087266 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] +0.0 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] +0.0 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] !------- PEAK SHAVING ------------------------------------------- -210 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) - 4. 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5. 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6. 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7. 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8. 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9. 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10. 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11. 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 12. 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 13. 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9 14. 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 14.9 15. 15.1 15.2 15.3 15.4 15.5 15.6 15.7 15.8 15.9 16. 16.1 16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 17. 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 18. 18.1 18.2 18.3 18.4 18.5 18.6 18.7 18.8 18.9 19. 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9 20. 20.1 20.2 20.3 20.4 20.5 20.6 20.7 20.8 20.9 21. 21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8 21.9 22. 22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8 22.9 23. 23.1 23.2 23.3 23.4 23.5 23.6 23.7 23.8 23.9 24. 24.1 24.2 24.3 24.4 24.5 24.6 24.7 24.8 24.9 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] --0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.02962541 -0.02230897 -0.01548946 -0.00915689 -0.00323985 0.00231633 0.00755924 0.01252064 0.01723337 0.02171883 0.02600713 0.03010809 0.03403543 0.03780094 0.04141197 0.0448834 0.04301121 0.04572902 0.04841563 0.05107257 0.05370175 0.05630738 0.05888727 0.06144604 0.06398009 0.06649806 0.06899513 0.07147461 0.07393783 0.0763848 0.07881322 0.08122765 0.08363032 0.08601684 0.0883911 0.09075519 0.09310191 0.09543925 0.09776725 0.10008031 0.1023843 0.10467939 0.10696282 0.10923552 0.11150342 0.11375564 0.11600427 0.118243 0.12047296 0.12269376 0.12490488 0.12711415 0.12931036 0.13150096 0.13368154 0.13585982 0.13803009 0.14018961 0.14234359 0.14449503 0.14663648 0.14877236 0.15089947 0.15302471 0.155141 0.15725402 0.15935959 0.16145813 0.16355132 0.16563963 0.16772494 0.1698033 0.17187555 0.17394191 0.17600722 0.17806499 0.18011745 0.18216164 0.18420446 0.18624091 0.18827655 0.19030833 0.19233052 0.19434885 0.19636357 0.19837593 0.20037883 0.20238383 0.20438058 0.20637502 0.20836358 0.21034732 0.21232885 0.21430571 0.21627763 0.21824694 0.22021326 0.22217222 0.22412743 0.22608217 0.22803347 0.22998291 0.23192295 0.23385759 0.23579759 0.23772869 0.23965799 0.24157841 0.24349944 0.24541689 0.24733152 0.24924241 0.25115108 0.25305646 0.25495687 0.25685379 0.25874221 0.26063593 0.26252242 0.26440664 0.26628698 0.26816398 0.27004031 0.27191147 0.27377527 0.27564404 0.27750921 0.27935984 0.28121741 0.28306997 0.2849209 0.28676631 0.28860828 0.29045122 0.29229007 0.29412417 0.29595331 0.29778415 0.29960719 0.30142759 0.30324755 0.30506054 0.30687771 0.30869136 0.31049896 0.31230004 0.31410149 0.3159051 0.3177027 0.31949741 0.32128578 0.32306955 ! PS_BldPitchMin - Minimum blade pitch angles [rad] +42 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) + 4. 4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5 9. 9.5 10. 10.5 11. 11.9 12.4 12.9 13.4 13.9 14.4 14.9 15.4 15.9 16.4 16.9 17.4 17.9 18.4 18.9 19.4 19.9 20.4 20.9 21.4 21.9 22.4 22.9 23.4 23.9 24.4 24.9 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] +-0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03275873 0.00083377 0.02543348 0.0448834 0.0667768 0.07915202 0.09113854 0.10280435 0.11420819 0.12538567 0.13636556 0.14716567 0.15780447 0.1683014 0.178663 0.18889865 0.19901765 0.20902392 0.21892797 0.22873221 0.23844548 0.24806675 0.25759734 0.26705022 0.27641741 0.2857055 0.29491896 0.3040543 0.31311378 0.32210299 0.33103247 ! PS_BldPitchMin - Minimum blade pitch angles [rad] diff --git a/Test_Cases/5MW_BR_Baseline/DISCON.IN b/Test_Cases/5MW_BR_Baseline/DISCON.IN index 99dee3c36..ef7726c15 100644 --- a/Test_Cases/5MW_BR_Baseline/DISCON.IN +++ b/Test_Cases/5MW_BR_Baseline/DISCON.IN @@ -1,5 +1,5 @@ ! Controller parameter input file for the 5MW_Land wind turbine -! - File written using NREL Baseline Controller tuning logic on 10/01/19 +! - File written using NREL Baseline Controller tuning logic on 10/07/19 !------- DEBUG ------------------------------------------------------------ 1 ! LoggingLevel - {0: write no debug files, 1: write standard output .dbg-file, 2: write standard output .dbg-file and complete avrSWAP-array .dbg2-file @@ -16,24 +16,24 @@ 1 ! PS_Mode - Peak shaving mode {0: no peak shaving, 1: implement peak shaving} !------- FILTERS ---------------------------------------------------------- -1.570796326 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz] +1.543417826848871 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz] 0 ! F_LPFDamping - Damping coefficient [used only when F_FilterType = 2] 0 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s] 0 0 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-] 0.5 ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [Hz]. !------- BLADE PITCH CONTROL ---------------------------------------------- -136 ! PC_GS_n - Amount of gain-scheduling table entries -0. 0.01843267 0.03012466 0.03938211 0.0473159 0.05438725 0.0608399 0.06682165 0.07243603 0.07774601 0.08280179 0.08764533 0.0922973 0.09678511 0.10113084 0.10534505 0.10944741 0.11344459 0.11734245 0.12115249 0.12488383 0.12853954 0.13212927 0.13565125 0.13911823 0.1425236 0.14587973 0.1491875 0.15244657 0.15566288 0.15883986 0.16197375 0.16506986 0.16813214 0.17115907 0.17415428 0.17711497 0.18004808 0.18295399 0.1858281 0.1886768 0.19150248 0.19430239 0.19707534 0.19983015 0.2025582 0.20526628 0.20795513 0.21062023 0.21326861 0.2158935 0.21850484 0.2210941 0.22366803 0.22622254 0.22876498 0.2312836 0.23379345 0.23628255 0.23875941 0.24122279 0.24366729 0.24610036 0.24852176 0.25092855 0.25332325 0.2557023 0.25807209 0.26042559 0.26276748 0.26510036 0.26742092 0.26973036 0.27202782 0.27431492 0.27658881 0.27885401 0.28110964 0.28336045 0.2855962 0.28782076 0.29003745 0.29224346 0.29444004 0.29663204 0.2988061 0.30097858 0.30314198 0.30529447 0.30743825 0.30958 0.31170708 0.31382687 0.31593631 0.3180419 0.32013786 0.32222978 0.32431029 0.32638663 0.32845309 0.33051357 0.33256802 0.33461455 0.33665611 0.33868284 0.34071023 0.34272963 0.34474196 0.34674528 0.34875073 0.35074041 0.35272695 0.35470654 0.35668277 0.35864961 0.36061312 0.36256798 0.36452117 0.36646633 0.36840178 0.37033735 0.3722649 0.37418622 0.37609996 0.37801477 0.37991806 0.38181864 0.38371323 0.38560453 0.38749153 0.38937202 0.39124103 0.39310673 0.39497577 0.39683082 0.39868511 ! PC_GS_angles - Gain-schedule table: pitch angles --0.02019147 -0.01950333 -0.01885443 -0.0182415 -0.01766165 -0.01711225 -0.01659098 -0.01609573 -0.01562459 -0.01517585 -0.01474794 -0.01433946 -0.0139491 -0.01357569 -0.01321814 -0.01287547 -0.01254676 -0.01223119 -0.01192797 -0.0116364 -0.01135581 -0.01108561 -0.01082521 -0.01057411 -0.0103318 -0.01009784 -0.00987181 -0.00965329 -0.00944194 -0.00923739 -0.00903933 -0.00884745 -0.00866147 -0.00848112 -0.00830614 -0.00813631 -0.0079714 -0.00781119 -0.00765549 -0.00750411 -0.00735688 -0.00721362 -0.00707417 -0.0069384 -0.00680614 -0.00667728 -0.00655167 -0.0064292 -0.00630975 -0.00619322 -0.00607949 -0.00596846 -0.00586005 -0.00575415 -0.00565069 -0.00554957 -0.00545073 -0.00535408 -0.00525955 -0.00516708 -0.00507659 -0.00498803 -0.00490133 -0.00481644 -0.00473329 -0.00465184 -0.00457204 -0.00449383 -0.00441716 -0.004342 -0.0042683 -0.00419602 -0.00412511 -0.00405553 -0.00398726 -0.00392025 -0.00385447 -0.00378988 -0.00372646 -0.00366417 -0.00360298 -0.00354286 -0.00348379 -0.00342574 -0.00336868 -0.00331258 -0.00325743 -0.00320319 -0.00314985 -0.00309739 -0.00304578 -0.002995 -0.00294503 -0.00289585 -0.00284745 -0.00279981 -0.0027529 -0.00270671 -0.00266123 -0.00261644 -0.00257232 -0.00252886 -0.00248604 -0.00244385 -0.00240228 -0.00236131 -0.00232093 -0.00228112 -0.00224188 -0.0022032 -0.00216505 -0.00212743 -0.00209033 -0.00205374 -0.00201765 -0.00198204 -0.00194691 -0.00191225 -0.00187805 -0.0018443 -0.00181099 -0.00177811 -0.00174566 -0.00171362 -0.00168199 -0.00165076 -0.00161992 -0.00158947 -0.00155939 -0.00152969 -0.00150035 -0.00147137 -0.00144274 -0.00141446 -0.00138651 -0.0013589 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains --0.00882307 -0.00856411 -0.00831992 -0.00808927 -0.00787106 -0.00766432 -0.00746816 -0.00728178 -0.00710449 -0.00693562 -0.0067746 -0.00662088 -0.00647398 -0.00633346 -0.00619891 -0.00606996 -0.00594626 -0.00582751 -0.0057134 -0.00560368 -0.00549809 -0.00539641 -0.00529842 -0.00520393 -0.00511274 -0.0050247 -0.00493964 -0.00485741 -0.00477787 -0.0047009 -0.00462637 -0.00455416 -0.00448417 -0.0044163 -0.00435046 -0.00428655 -0.00422449 -0.0041642 -0.00410561 -0.00404864 -0.00399324 -0.00393933 -0.00388685 -0.00383576 -0.00378599 -0.00373749 -0.00369023 -0.00364414 -0.00359919 -0.00355534 -0.00351254 -0.00347076 -0.00342996 -0.00339011 -0.00335117 -0.00331312 -0.00327593 -0.00323956 -0.00320399 -0.00316919 -0.00313514 -0.00310181 -0.00306918 -0.00303724 -0.00300595 -0.0029753 -0.00294526 -0.00291583 -0.00288698 -0.0028587 -0.00283096 -0.00280376 -0.00277708 -0.0027509 -0.0027252 -0.00269999 -0.00267523 -0.00265093 -0.00262706 -0.00260362 -0.00258059 -0.00255797 -0.00253574 -0.0025139 -0.00249242 -0.00247131 -0.00245056 -0.00243015 -0.00241008 -0.00239033 -0.00237091 -0.0023518 -0.002333 -0.00231449 -0.00229628 -0.00227835 -0.0022607 -0.00224332 -0.0022262 -0.00220935 -0.00219274 -0.00217639 -0.00216028 -0.0021444 -0.00212876 -0.00211334 -0.00209814 -0.00208316 -0.0020684 -0.00205384 -0.00203948 -0.00202533 -0.00201136 -0.00199759 -0.00198401 -0.00197061 -0.00195739 -0.00194435 -0.00193148 -0.00191878 -0.00190624 -0.00189387 -0.00188166 -0.0018696 -0.0018577 -0.00184595 -0.00183434 -0.00182288 -0.00181157 -0.00180039 -0.00178935 -0.00177844 -0.00176767 -0.00175702 -0.00174651 -0.00173612 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains -0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_KD - Gain-schedule table: pitch controller kd gains -0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) +27 ! PC_GS_n - Amount of gain-scheduling table entries +0.05852874 0.08586931 0.10789716 0.1271165 0.14453395 0.16067791 0.17585826 0.19027256 0.20405942 0.21730904 0.23010311 0.24249689 0.2545414 0.26626371 0.27770397 0.28889173 0.29983774 0.31057221 0.32109644 0.33144053 0.34160524 0.35160739 0.36145513 0.37115299 0.38071093 0.3901412 0.39943831 ! PC_GS_angles - Gain-schedule table: pitch angles +-0.01603382 -0.01396602 -0.01229584 -0.01091865 -0.00976358 -0.00878088 -0.00793467 -0.00719835 -0.00655181 -0.00597959 -0.00546956 -0.00501211 -0.00459951 -0.00422546 -0.00388481 -0.00357328 -0.00328728 -0.0030238 -0.00278028 -0.00255453 -0.00234468 -0.00214911 -0.0019664 -0.00179533 -0.00163481 -0.00148391 -0.00134179 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains +-0.00715561 -0.00639445 -0.00577965 -0.00527271 -0.00484752 -0.00448579 -0.0041743 -0.00390326 -0.00366527 -0.00345463 -0.00326689 -0.0030985 -0.00294662 -0.00280893 -0.00268354 -0.00256886 -0.00246359 -0.0023666 -0.00227696 -0.00219386 -0.00211661 -0.00204462 -0.00197737 -0.0019144 -0.00185531 -0.00179976 -0.00174745 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains +0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_KD - Gain-schedule table: pitch controller kd gains +0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) 1.5707 ! PC_MaxPit - Maximum physical pitch limit, [rad]. --0.087266 ! PC_MinPit - Minimum physical pitch limit, [rad]. +-0.087266 ! PC_MinPit - Minimum physical pitch limit, [rad]. 0.13962 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. -0.13962 ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. -122.90957 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. +122.90957658394467 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. 0.0 ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad] 0.003490658 ! PC_Switch - Angle above lowest minimum pitch angle for switch, [rad] 0 ! Z_EnableSine - Enable/disable sine pitch excitation, used to validate for dynamic induction control, will be removed later, [-] @@ -41,63 +41,64 @@ 0 ! Z_PitchFrequency - Frequency of sine pitch excitation, [rad/s] !------- INDIVIDUAL PITCH CONTROL ----------------------------------------- -0.087266 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] -1E-8 0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] -0.436332313 0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. -2.5 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] +0.0 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] +0.0 0.0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] +0.0 0.0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. +0.0 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] !------- VS TORQUE CONTROL ------------------------------------------------ -0.944 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-] -43093.55 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] -150000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. -48000.00 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. +94.4 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-] +43093.55150917838 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] +1500000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. +47402.906660096225 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. 0.0 ! VS_MinTq - Minimum generator (HSS side), [Nm]. -91.2109 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] -2.33228 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] -5.0E+06 ! VS_RtPwr - Wind turbine rated power [W] -43093.55 ! VS_RtTq - Rated torque, [Nm]. -120.113 ! VS_RefSpd - Rated generator speed [rad/s] +0.0 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] +0.0 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] +5000000 ! VS_RtPwr - Wind turbine rated power [W] +43093.55150917838 ! VS_RtTq - Rated torque, [Nm]. +122.90957658394467 ! VS_RefSpd - Rated generator speed [rad/s] 1 ! VS_n - Number of generator PI torque controller gains --835 ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) --164 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-889.094048017944 ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-172.0461874545648 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +7.4 ! VS_TSRopt - Power-maximizing region 2 tip-speed-ratio [rad]. !------- SETPOINT SMOOTHER --------------------------------------------- 30 ! SS_VSGainBias - Variable speed torque controller gain bias, [(rad/s)/rad]. 0.001 ! SS_PCGainBias - Collective pitch controller gain bias, [(rad/s)/Nm]. !------- WIND SPEED ESTIMATOR --------------------------------------------- -63.0 ! WE_BladeRadius - Blade length [m] +63.0 ! WE_BladeRadius - Blade length [m] 4 ! WE_CP_n - Amount of parameters in the Cp array -14.571319658214513 42.809556250371465 2.456512501523107 0.003127994078720 ! WE_CP - Parameters that define the parameterized CP(lambda) function -20 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] -97 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] -4.0469564E+07 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2] +0.0 0.0 0.0 0.0 ! WE_CP - Parameters that define the parameterized CP(lambda) function +0.0 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] +97.0 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] +40469564.444 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2] 1.225 ! WE_RhoAir - Air density, [kg m^-3] "../5MW_Baseline/Cp_Ct_Cq.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) -320 40 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios -23 ! WE_FOPoles_N - Number of first-order system poles used in EKF -3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] --0.0203 -0.0270 -0.0338 -0.0405 -0.0473 -0.0540 -0.0608 -0.0675 -0.0743 -0.0671 -0.0939 -0.1257 -0.1601 -0.1973 -0.2364 -0.2783 -0.3223 -0.3678 -0.4153 -0.4632 -0.5122 -0.5629 -0.6194 ! WE_FOPoles - First order system poles +320 40 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios +42 ! WE_FOPoles_N - Number of first-order system poles used in EKF + 4. 4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5 9. 9.5 10. 10.5 11. 11.9 12.4 12.9 13.4 13.9 14.4 14.9 15.4 15.9 16.4 16.9 17.4 17.9 18.4 18.9 19.4 19.9 20.4 20.9 21.4 21.9 22.4 22.9 23.4 23.9 24.4 24.9 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] +-0.02665071 -0.02998205 -0.03331339 -0.03664473 -0.03997606 -0.0433074 -0.04663874 -0.04997008 -0.05330142 -0.05663276 -0.0599641 -0.06329543 -0.06662677 -0.06995811 -0.07328945 -0.06321278 -0.07469151 -0.08828579 -0.10297822 -0.11842623 -0.13448765 -0.15120764 -0.168455 -0.18635293 -0.20483641 -0.22395323 -0.24348262 -0.26365771 -0.2842596 -0.30535287 -0.32683352 -0.3487705 -0.37113879 -0.39376001 -0.41675049 -0.44017539 -0.46432564 -0.4888057 -0.51273708 -0.53554138 -0.55932133 -0.58645605 ! WE_FOPoles - First order system poles !------- YAW CONTROL ------------------------------------------------------ -1.745329252 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] -0.17453 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] +0.0 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] +0.0 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] 1 ! Y_IPC_n - Number of controller gains (yaw-by-IPC) --0.064 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp --0.0008 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki -0.6283185 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. -1.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. -0.00000 ! Y_MErrSet - Yaw alignment error, set point [rad] -1.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] -0.016667 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] -0.0034906 ! Y_Rate - Yaw rate [rad/s] +0.0 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp +0.0 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki +0.0 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. +0.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. +0.0 ! Y_MErrSet - Yaw alignment error, set point [rad] +0.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] +0.0 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] +0.0 ! Y_Rate - Yaw rate [rad/s] !------- TOWER FORE-AFT DAMPING ------------------------------------------- -1 ! FA_KI - Integral gain for the fore-aft tower damper controller, -1 = off / >0 = on [rad s/m] - !NJA - Make this a flag -0.1 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] -0.087266 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] +0.0 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] +0.0 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] !------- PEAK SHAVING ------------------------------------------- -210 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) - 4. 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5. 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6. 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7. 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8. 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9. 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10. 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11. 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 12. 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 13. 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9 14. 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 14.9 15. 15.1 15.2 15.3 15.4 15.5 15.6 15.7 15.8 15.9 16. 16.1 16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 17. 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 18. 18.1 18.2 18.3 18.4 18.5 18.6 18.7 18.8 18.9 19. 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9 20. 20.1 20.2 20.3 20.4 20.5 20.6 20.7 20.8 20.9 21. 21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8 21.9 22. 22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8 22.9 23. 23.1 23.2 23.3 23.4 23.5 23.6 23.7 23.8 23.9 24. 24.1 24.2 24.3 24.4 24.5 24.6 24.7 24.8 24.9 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] --0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.02962541 -0.02230897 -0.01548946 -0.00915689 -0.00323985 0.00231633 0.00755924 0.01252064 0.01723337 0.02171883 0.02600713 0.03010809 0.03403543 0.03780094 0.04141197 0.0448834 0.04301121 0.04572902 0.04841563 0.05107257 0.05370175 0.05630738 0.05888727 0.06144604 0.06398009 0.06649806 0.06899513 0.07147461 0.07393783 0.0763848 0.07881322 0.08122765 0.08363032 0.08601684 0.0883911 0.09075519 0.09310191 0.09543925 0.09776725 0.10008031 0.1023843 0.10467939 0.10696282 0.10923552 0.11150342 0.11375564 0.11600427 0.118243 0.12047296 0.12269376 0.12490488 0.12711415 0.12931036 0.13150096 0.13368154 0.13585982 0.13803009 0.14018961 0.14234359 0.14449503 0.14663648 0.14877236 0.15089947 0.15302471 0.155141 0.15725402 0.15935959 0.16145813 0.16355132 0.16563963 0.16772494 0.1698033 0.17187555 0.17394191 0.17600722 0.17806499 0.18011745 0.18216164 0.18420446 0.18624091 0.18827655 0.19030833 0.19233052 0.19434885 0.19636357 0.19837593 0.20037883 0.20238383 0.20438058 0.20637502 0.20836358 0.21034732 0.21232885 0.21430571 0.21627763 0.21824694 0.22021326 0.22217222 0.22412743 0.22608217 0.22803347 0.22998291 0.23192295 0.23385759 0.23579759 0.23772869 0.23965799 0.24157841 0.24349944 0.24541689 0.24733152 0.24924241 0.25115108 0.25305646 0.25495687 0.25685379 0.25874221 0.26063593 0.26252242 0.26440664 0.26628698 0.26816398 0.27004031 0.27191147 0.27377527 0.27564404 0.27750921 0.27935984 0.28121741 0.28306997 0.2849209 0.28676631 0.28860828 0.29045122 0.29229007 0.29412417 0.29595331 0.29778415 0.29960719 0.30142759 0.30324755 0.30506054 0.30687771 0.30869136 0.31049896 0.31230004 0.31410149 0.3159051 0.3177027 0.31949741 0.32128578 0.32306955 ! PS_BldPitchMin - Minimum blade pitch angles [rad] +42 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) + 4. 4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5 9. 9.5 10. 10.5 11. 11.9 12.4 12.9 13.4 13.9 14.4 14.9 15.4 15.9 16.4 16.9 17.4 17.9 18.4 18.9 19.4 19.9 20.4 20.9 21.4 21.9 22.4 22.9 23.4 23.9 24.4 24.9 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] +-0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03275873 0.00083377 0.02543348 0.0448834 0.0667768 0.07915202 0.09113854 0.10280435 0.11420819 0.12538567 0.13636556 0.14716567 0.15780447 0.1683014 0.178663 0.18889865 0.19901765 0.20902392 0.21892797 0.22873221 0.23844548 0.24806675 0.25759734 0.26705022 0.27641741 0.2857055 0.29491896 0.3040543 0.31311378 0.32210299 0.33103247 ! PS_BldPitchMin - Minimum blade pitch angles [rad] diff --git a/Test_Cases/5MW_Baseline/DISCON.IN b/Test_Cases/5MW_Baseline/DISCON.IN index 99dee3c36..ef7726c15 100644 --- a/Test_Cases/5MW_Baseline/DISCON.IN +++ b/Test_Cases/5MW_Baseline/DISCON.IN @@ -1,5 +1,5 @@ ! Controller parameter input file for the 5MW_Land wind turbine -! - File written using NREL Baseline Controller tuning logic on 10/01/19 +! - File written using NREL Baseline Controller tuning logic on 10/07/19 !------- DEBUG ------------------------------------------------------------ 1 ! LoggingLevel - {0: write no debug files, 1: write standard output .dbg-file, 2: write standard output .dbg-file and complete avrSWAP-array .dbg2-file @@ -16,24 +16,24 @@ 1 ! PS_Mode - Peak shaving mode {0: no peak shaving, 1: implement peak shaving} !------- FILTERS ---------------------------------------------------------- -1.570796326 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz] +1.543417826848871 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz] 0 ! F_LPFDamping - Damping coefficient [used only when F_FilterType = 2] 0 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s] 0 0 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-] 0.5 ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [Hz]. !------- BLADE PITCH CONTROL ---------------------------------------------- -136 ! PC_GS_n - Amount of gain-scheduling table entries -0. 0.01843267 0.03012466 0.03938211 0.0473159 0.05438725 0.0608399 0.06682165 0.07243603 0.07774601 0.08280179 0.08764533 0.0922973 0.09678511 0.10113084 0.10534505 0.10944741 0.11344459 0.11734245 0.12115249 0.12488383 0.12853954 0.13212927 0.13565125 0.13911823 0.1425236 0.14587973 0.1491875 0.15244657 0.15566288 0.15883986 0.16197375 0.16506986 0.16813214 0.17115907 0.17415428 0.17711497 0.18004808 0.18295399 0.1858281 0.1886768 0.19150248 0.19430239 0.19707534 0.19983015 0.2025582 0.20526628 0.20795513 0.21062023 0.21326861 0.2158935 0.21850484 0.2210941 0.22366803 0.22622254 0.22876498 0.2312836 0.23379345 0.23628255 0.23875941 0.24122279 0.24366729 0.24610036 0.24852176 0.25092855 0.25332325 0.2557023 0.25807209 0.26042559 0.26276748 0.26510036 0.26742092 0.26973036 0.27202782 0.27431492 0.27658881 0.27885401 0.28110964 0.28336045 0.2855962 0.28782076 0.29003745 0.29224346 0.29444004 0.29663204 0.2988061 0.30097858 0.30314198 0.30529447 0.30743825 0.30958 0.31170708 0.31382687 0.31593631 0.3180419 0.32013786 0.32222978 0.32431029 0.32638663 0.32845309 0.33051357 0.33256802 0.33461455 0.33665611 0.33868284 0.34071023 0.34272963 0.34474196 0.34674528 0.34875073 0.35074041 0.35272695 0.35470654 0.35668277 0.35864961 0.36061312 0.36256798 0.36452117 0.36646633 0.36840178 0.37033735 0.3722649 0.37418622 0.37609996 0.37801477 0.37991806 0.38181864 0.38371323 0.38560453 0.38749153 0.38937202 0.39124103 0.39310673 0.39497577 0.39683082 0.39868511 ! PC_GS_angles - Gain-schedule table: pitch angles --0.02019147 -0.01950333 -0.01885443 -0.0182415 -0.01766165 -0.01711225 -0.01659098 -0.01609573 -0.01562459 -0.01517585 -0.01474794 -0.01433946 -0.0139491 -0.01357569 -0.01321814 -0.01287547 -0.01254676 -0.01223119 -0.01192797 -0.0116364 -0.01135581 -0.01108561 -0.01082521 -0.01057411 -0.0103318 -0.01009784 -0.00987181 -0.00965329 -0.00944194 -0.00923739 -0.00903933 -0.00884745 -0.00866147 -0.00848112 -0.00830614 -0.00813631 -0.0079714 -0.00781119 -0.00765549 -0.00750411 -0.00735688 -0.00721362 -0.00707417 -0.0069384 -0.00680614 -0.00667728 -0.00655167 -0.0064292 -0.00630975 -0.00619322 -0.00607949 -0.00596846 -0.00586005 -0.00575415 -0.00565069 -0.00554957 -0.00545073 -0.00535408 -0.00525955 -0.00516708 -0.00507659 -0.00498803 -0.00490133 -0.00481644 -0.00473329 -0.00465184 -0.00457204 -0.00449383 -0.00441716 -0.004342 -0.0042683 -0.00419602 -0.00412511 -0.00405553 -0.00398726 -0.00392025 -0.00385447 -0.00378988 -0.00372646 -0.00366417 -0.00360298 -0.00354286 -0.00348379 -0.00342574 -0.00336868 -0.00331258 -0.00325743 -0.00320319 -0.00314985 -0.00309739 -0.00304578 -0.002995 -0.00294503 -0.00289585 -0.00284745 -0.00279981 -0.0027529 -0.00270671 -0.00266123 -0.00261644 -0.00257232 -0.00252886 -0.00248604 -0.00244385 -0.00240228 -0.00236131 -0.00232093 -0.00228112 -0.00224188 -0.0022032 -0.00216505 -0.00212743 -0.00209033 -0.00205374 -0.00201765 -0.00198204 -0.00194691 -0.00191225 -0.00187805 -0.0018443 -0.00181099 -0.00177811 -0.00174566 -0.00171362 -0.00168199 -0.00165076 -0.00161992 -0.00158947 -0.00155939 -0.00152969 -0.00150035 -0.00147137 -0.00144274 -0.00141446 -0.00138651 -0.0013589 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains --0.00882307 -0.00856411 -0.00831992 -0.00808927 -0.00787106 -0.00766432 -0.00746816 -0.00728178 -0.00710449 -0.00693562 -0.0067746 -0.00662088 -0.00647398 -0.00633346 -0.00619891 -0.00606996 -0.00594626 -0.00582751 -0.0057134 -0.00560368 -0.00549809 -0.00539641 -0.00529842 -0.00520393 -0.00511274 -0.0050247 -0.00493964 -0.00485741 -0.00477787 -0.0047009 -0.00462637 -0.00455416 -0.00448417 -0.0044163 -0.00435046 -0.00428655 -0.00422449 -0.0041642 -0.00410561 -0.00404864 -0.00399324 -0.00393933 -0.00388685 -0.00383576 -0.00378599 -0.00373749 -0.00369023 -0.00364414 -0.00359919 -0.00355534 -0.00351254 -0.00347076 -0.00342996 -0.00339011 -0.00335117 -0.00331312 -0.00327593 -0.00323956 -0.00320399 -0.00316919 -0.00313514 -0.00310181 -0.00306918 -0.00303724 -0.00300595 -0.0029753 -0.00294526 -0.00291583 -0.00288698 -0.0028587 -0.00283096 -0.00280376 -0.00277708 -0.0027509 -0.0027252 -0.00269999 -0.00267523 -0.00265093 -0.00262706 -0.00260362 -0.00258059 -0.00255797 -0.00253574 -0.0025139 -0.00249242 -0.00247131 -0.00245056 -0.00243015 -0.00241008 -0.00239033 -0.00237091 -0.0023518 -0.002333 -0.00231449 -0.00229628 -0.00227835 -0.0022607 -0.00224332 -0.0022262 -0.00220935 -0.00219274 -0.00217639 -0.00216028 -0.0021444 -0.00212876 -0.00211334 -0.00209814 -0.00208316 -0.0020684 -0.00205384 -0.00203948 -0.00202533 -0.00201136 -0.00199759 -0.00198401 -0.00197061 -0.00195739 -0.00194435 -0.00193148 -0.00191878 -0.00190624 -0.00189387 -0.00188166 -0.0018696 -0.0018577 -0.00184595 -0.00183434 -0.00182288 -0.00181157 -0.00180039 -0.00178935 -0.00177844 -0.00176767 -0.00175702 -0.00174651 -0.00173612 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains -0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_KD - Gain-schedule table: pitch controller kd gains -0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) +27 ! PC_GS_n - Amount of gain-scheduling table entries +0.05852874 0.08586931 0.10789716 0.1271165 0.14453395 0.16067791 0.17585826 0.19027256 0.20405942 0.21730904 0.23010311 0.24249689 0.2545414 0.26626371 0.27770397 0.28889173 0.29983774 0.31057221 0.32109644 0.33144053 0.34160524 0.35160739 0.36145513 0.37115299 0.38071093 0.3901412 0.39943831 ! PC_GS_angles - Gain-schedule table: pitch angles +-0.01603382 -0.01396602 -0.01229584 -0.01091865 -0.00976358 -0.00878088 -0.00793467 -0.00719835 -0.00655181 -0.00597959 -0.00546956 -0.00501211 -0.00459951 -0.00422546 -0.00388481 -0.00357328 -0.00328728 -0.0030238 -0.00278028 -0.00255453 -0.00234468 -0.00214911 -0.0019664 -0.00179533 -0.00163481 -0.00148391 -0.00134179 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains +-0.00715561 -0.00639445 -0.00577965 -0.00527271 -0.00484752 -0.00448579 -0.0041743 -0.00390326 -0.00366527 -0.00345463 -0.00326689 -0.0030985 -0.00294662 -0.00280893 -0.00268354 -0.00256886 -0.00246359 -0.0023666 -0.00227696 -0.00219386 -0.00211661 -0.00204462 -0.00197737 -0.0019144 -0.00185531 -0.00179976 -0.00174745 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains +0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_KD - Gain-schedule table: pitch controller kd gains +0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) 1.5707 ! PC_MaxPit - Maximum physical pitch limit, [rad]. --0.087266 ! PC_MinPit - Minimum physical pitch limit, [rad]. +-0.087266 ! PC_MinPit - Minimum physical pitch limit, [rad]. 0.13962 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. -0.13962 ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. -122.90957 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. +122.90957658394467 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. 0.0 ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad] 0.003490658 ! PC_Switch - Angle above lowest minimum pitch angle for switch, [rad] 0 ! Z_EnableSine - Enable/disable sine pitch excitation, used to validate for dynamic induction control, will be removed later, [-] @@ -41,63 +41,64 @@ 0 ! Z_PitchFrequency - Frequency of sine pitch excitation, [rad/s] !------- INDIVIDUAL PITCH CONTROL ----------------------------------------- -0.087266 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] -1E-8 0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] -0.436332313 0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. -2.5 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] +0.0 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] +0.0 0.0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] +0.0 0.0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. +0.0 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] !------- VS TORQUE CONTROL ------------------------------------------------ -0.944 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-] -43093.55 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] -150000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. -48000.00 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. +94.4 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-] +43093.55150917838 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] +1500000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. +47402.906660096225 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. 0.0 ! VS_MinTq - Minimum generator (HSS side), [Nm]. -91.2109 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] -2.33228 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] -5.0E+06 ! VS_RtPwr - Wind turbine rated power [W] -43093.55 ! VS_RtTq - Rated torque, [Nm]. -120.113 ! VS_RefSpd - Rated generator speed [rad/s] +0.0 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] +0.0 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] +5000000 ! VS_RtPwr - Wind turbine rated power [W] +43093.55150917838 ! VS_RtTq - Rated torque, [Nm]. +122.90957658394467 ! VS_RefSpd - Rated generator speed [rad/s] 1 ! VS_n - Number of generator PI torque controller gains --835 ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) --164 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-889.094048017944 ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-172.0461874545648 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +7.4 ! VS_TSRopt - Power-maximizing region 2 tip-speed-ratio [rad]. !------- SETPOINT SMOOTHER --------------------------------------------- 30 ! SS_VSGainBias - Variable speed torque controller gain bias, [(rad/s)/rad]. 0.001 ! SS_PCGainBias - Collective pitch controller gain bias, [(rad/s)/Nm]. !------- WIND SPEED ESTIMATOR --------------------------------------------- -63.0 ! WE_BladeRadius - Blade length [m] +63.0 ! WE_BladeRadius - Blade length [m] 4 ! WE_CP_n - Amount of parameters in the Cp array -14.571319658214513 42.809556250371465 2.456512501523107 0.003127994078720 ! WE_CP - Parameters that define the parameterized CP(lambda) function -20 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] -97 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] -4.0469564E+07 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2] +0.0 0.0 0.0 0.0 ! WE_CP - Parameters that define the parameterized CP(lambda) function +0.0 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] +97.0 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] +40469564.444 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2] 1.225 ! WE_RhoAir - Air density, [kg m^-3] "../5MW_Baseline/Cp_Ct_Cq.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) -320 40 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios -23 ! WE_FOPoles_N - Number of first-order system poles used in EKF -3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] --0.0203 -0.0270 -0.0338 -0.0405 -0.0473 -0.0540 -0.0608 -0.0675 -0.0743 -0.0671 -0.0939 -0.1257 -0.1601 -0.1973 -0.2364 -0.2783 -0.3223 -0.3678 -0.4153 -0.4632 -0.5122 -0.5629 -0.6194 ! WE_FOPoles - First order system poles +320 40 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios +42 ! WE_FOPoles_N - Number of first-order system poles used in EKF + 4. 4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5 9. 9.5 10. 10.5 11. 11.9 12.4 12.9 13.4 13.9 14.4 14.9 15.4 15.9 16.4 16.9 17.4 17.9 18.4 18.9 19.4 19.9 20.4 20.9 21.4 21.9 22.4 22.9 23.4 23.9 24.4 24.9 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] +-0.02665071 -0.02998205 -0.03331339 -0.03664473 -0.03997606 -0.0433074 -0.04663874 -0.04997008 -0.05330142 -0.05663276 -0.0599641 -0.06329543 -0.06662677 -0.06995811 -0.07328945 -0.06321278 -0.07469151 -0.08828579 -0.10297822 -0.11842623 -0.13448765 -0.15120764 -0.168455 -0.18635293 -0.20483641 -0.22395323 -0.24348262 -0.26365771 -0.2842596 -0.30535287 -0.32683352 -0.3487705 -0.37113879 -0.39376001 -0.41675049 -0.44017539 -0.46432564 -0.4888057 -0.51273708 -0.53554138 -0.55932133 -0.58645605 ! WE_FOPoles - First order system poles !------- YAW CONTROL ------------------------------------------------------ -1.745329252 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] -0.17453 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] +0.0 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] +0.0 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] 1 ! Y_IPC_n - Number of controller gains (yaw-by-IPC) --0.064 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp --0.0008 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki -0.6283185 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. -1.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. -0.00000 ! Y_MErrSet - Yaw alignment error, set point [rad] -1.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] -0.016667 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] -0.0034906 ! Y_Rate - Yaw rate [rad/s] +0.0 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp +0.0 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki +0.0 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. +0.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. +0.0 ! Y_MErrSet - Yaw alignment error, set point [rad] +0.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] +0.0 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] +0.0 ! Y_Rate - Yaw rate [rad/s] !------- TOWER FORE-AFT DAMPING ------------------------------------------- -1 ! FA_KI - Integral gain for the fore-aft tower damper controller, -1 = off / >0 = on [rad s/m] - !NJA - Make this a flag -0.1 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] -0.087266 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] +0.0 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] +0.0 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] !------- PEAK SHAVING ------------------------------------------- -210 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) - 4. 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5. 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6. 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7. 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8. 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9. 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10. 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11. 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 12. 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 13. 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9 14. 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 14.9 15. 15.1 15.2 15.3 15.4 15.5 15.6 15.7 15.8 15.9 16. 16.1 16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 17. 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 18. 18.1 18.2 18.3 18.4 18.5 18.6 18.7 18.8 18.9 19. 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9 20. 20.1 20.2 20.3 20.4 20.5 20.6 20.7 20.8 20.9 21. 21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8 21.9 22. 22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8 22.9 23. 23.1 23.2 23.3 23.4 23.5 23.6 23.7 23.8 23.9 24. 24.1 24.2 24.3 24.4 24.5 24.6 24.7 24.8 24.9 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] --0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.02962541 -0.02230897 -0.01548946 -0.00915689 -0.00323985 0.00231633 0.00755924 0.01252064 0.01723337 0.02171883 0.02600713 0.03010809 0.03403543 0.03780094 0.04141197 0.0448834 0.04301121 0.04572902 0.04841563 0.05107257 0.05370175 0.05630738 0.05888727 0.06144604 0.06398009 0.06649806 0.06899513 0.07147461 0.07393783 0.0763848 0.07881322 0.08122765 0.08363032 0.08601684 0.0883911 0.09075519 0.09310191 0.09543925 0.09776725 0.10008031 0.1023843 0.10467939 0.10696282 0.10923552 0.11150342 0.11375564 0.11600427 0.118243 0.12047296 0.12269376 0.12490488 0.12711415 0.12931036 0.13150096 0.13368154 0.13585982 0.13803009 0.14018961 0.14234359 0.14449503 0.14663648 0.14877236 0.15089947 0.15302471 0.155141 0.15725402 0.15935959 0.16145813 0.16355132 0.16563963 0.16772494 0.1698033 0.17187555 0.17394191 0.17600722 0.17806499 0.18011745 0.18216164 0.18420446 0.18624091 0.18827655 0.19030833 0.19233052 0.19434885 0.19636357 0.19837593 0.20037883 0.20238383 0.20438058 0.20637502 0.20836358 0.21034732 0.21232885 0.21430571 0.21627763 0.21824694 0.22021326 0.22217222 0.22412743 0.22608217 0.22803347 0.22998291 0.23192295 0.23385759 0.23579759 0.23772869 0.23965799 0.24157841 0.24349944 0.24541689 0.24733152 0.24924241 0.25115108 0.25305646 0.25495687 0.25685379 0.25874221 0.26063593 0.26252242 0.26440664 0.26628698 0.26816398 0.27004031 0.27191147 0.27377527 0.27564404 0.27750921 0.27935984 0.28121741 0.28306997 0.2849209 0.28676631 0.28860828 0.29045122 0.29229007 0.29412417 0.29595331 0.29778415 0.29960719 0.30142759 0.30324755 0.30506054 0.30687771 0.30869136 0.31049896 0.31230004 0.31410149 0.3159051 0.3177027 0.31949741 0.32128578 0.32306955 ! PS_BldPitchMin - Minimum blade pitch angles [rad] +42 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) + 4. 4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5 9. 9.5 10. 10.5 11. 11.9 12.4 12.9 13.4 13.9 14.4 14.9 15.4 15.9 16.4 16.9 17.4 17.9 18.4 18.9 19.4 19.9 20.4 20.9 21.4 21.9 22.4 22.9 23.4 23.9 24.4 24.9 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] +-0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03275873 0.00083377 0.02543348 0.0448834 0.0667768 0.07915202 0.09113854 0.10280435 0.11420819 0.12538567 0.13636556 0.14716567 0.15780447 0.1683014 0.178663 0.18889865 0.19901765 0.20902392 0.21892797 0.22873221 0.23844548 0.24806675 0.25759734 0.26705022 0.27641741 0.2857055 0.29491896 0.3040543 0.31311378 0.32210299 0.33103247 ! PS_BldPitchMin - Minimum blade pitch angles [rad] diff --git a/Test_Cases/5MW_Baseline/DISCON/DISCON.dll b/Test_Cases/5MW_Baseline/DISCON/DISCON.dll index 1064eab3024d8c366b7f5042163cc618ba57e32c..24d3c864ae833f6af8abf7a889a846d588862bd7 100755 GIT binary patch delta 29025 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 r{&8H?Ec9E`|JJ>@N=@U delta 22326 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 Q?xKZ@G0^>!@HW=}1C~~i{{R30 diff --git a/Test_Cases/5MW_NR_Baseline/DISCON.IN b/Test_Cases/5MW_NR_Baseline/DISCON.IN index 99dee3c36..ef7726c15 100644 --- a/Test_Cases/5MW_NR_Baseline/DISCON.IN +++ b/Test_Cases/5MW_NR_Baseline/DISCON.IN @@ -1,5 +1,5 @@ ! Controller parameter input file for the 5MW_Land wind turbine -! - File written using NREL Baseline Controller tuning logic on 10/01/19 +! - File written using NREL Baseline Controller tuning logic on 10/07/19 !------- DEBUG ------------------------------------------------------------ 1 ! LoggingLevel - {0: write no debug files, 1: write standard output .dbg-file, 2: write standard output .dbg-file and complete avrSWAP-array .dbg2-file @@ -16,24 +16,24 @@ 1 ! PS_Mode - Peak shaving mode {0: no peak shaving, 1: implement peak shaving} !------- FILTERS ---------------------------------------------------------- -1.570796326 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz] +1.543417826848871 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz] 0 ! F_LPFDamping - Damping coefficient [used only when F_FilterType = 2] 0 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s] 0 0 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-] 0.5 ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [Hz]. !------- BLADE PITCH CONTROL ---------------------------------------------- -136 ! PC_GS_n - Amount of gain-scheduling table entries -0. 0.01843267 0.03012466 0.03938211 0.0473159 0.05438725 0.0608399 0.06682165 0.07243603 0.07774601 0.08280179 0.08764533 0.0922973 0.09678511 0.10113084 0.10534505 0.10944741 0.11344459 0.11734245 0.12115249 0.12488383 0.12853954 0.13212927 0.13565125 0.13911823 0.1425236 0.14587973 0.1491875 0.15244657 0.15566288 0.15883986 0.16197375 0.16506986 0.16813214 0.17115907 0.17415428 0.17711497 0.18004808 0.18295399 0.1858281 0.1886768 0.19150248 0.19430239 0.19707534 0.19983015 0.2025582 0.20526628 0.20795513 0.21062023 0.21326861 0.2158935 0.21850484 0.2210941 0.22366803 0.22622254 0.22876498 0.2312836 0.23379345 0.23628255 0.23875941 0.24122279 0.24366729 0.24610036 0.24852176 0.25092855 0.25332325 0.2557023 0.25807209 0.26042559 0.26276748 0.26510036 0.26742092 0.26973036 0.27202782 0.27431492 0.27658881 0.27885401 0.28110964 0.28336045 0.2855962 0.28782076 0.29003745 0.29224346 0.29444004 0.29663204 0.2988061 0.30097858 0.30314198 0.30529447 0.30743825 0.30958 0.31170708 0.31382687 0.31593631 0.3180419 0.32013786 0.32222978 0.32431029 0.32638663 0.32845309 0.33051357 0.33256802 0.33461455 0.33665611 0.33868284 0.34071023 0.34272963 0.34474196 0.34674528 0.34875073 0.35074041 0.35272695 0.35470654 0.35668277 0.35864961 0.36061312 0.36256798 0.36452117 0.36646633 0.36840178 0.37033735 0.3722649 0.37418622 0.37609996 0.37801477 0.37991806 0.38181864 0.38371323 0.38560453 0.38749153 0.38937202 0.39124103 0.39310673 0.39497577 0.39683082 0.39868511 ! PC_GS_angles - Gain-schedule table: pitch angles --0.02019147 -0.01950333 -0.01885443 -0.0182415 -0.01766165 -0.01711225 -0.01659098 -0.01609573 -0.01562459 -0.01517585 -0.01474794 -0.01433946 -0.0139491 -0.01357569 -0.01321814 -0.01287547 -0.01254676 -0.01223119 -0.01192797 -0.0116364 -0.01135581 -0.01108561 -0.01082521 -0.01057411 -0.0103318 -0.01009784 -0.00987181 -0.00965329 -0.00944194 -0.00923739 -0.00903933 -0.00884745 -0.00866147 -0.00848112 -0.00830614 -0.00813631 -0.0079714 -0.00781119 -0.00765549 -0.00750411 -0.00735688 -0.00721362 -0.00707417 -0.0069384 -0.00680614 -0.00667728 -0.00655167 -0.0064292 -0.00630975 -0.00619322 -0.00607949 -0.00596846 -0.00586005 -0.00575415 -0.00565069 -0.00554957 -0.00545073 -0.00535408 -0.00525955 -0.00516708 -0.00507659 -0.00498803 -0.00490133 -0.00481644 -0.00473329 -0.00465184 -0.00457204 -0.00449383 -0.00441716 -0.004342 -0.0042683 -0.00419602 -0.00412511 -0.00405553 -0.00398726 -0.00392025 -0.00385447 -0.00378988 -0.00372646 -0.00366417 -0.00360298 -0.00354286 -0.00348379 -0.00342574 -0.00336868 -0.00331258 -0.00325743 -0.00320319 -0.00314985 -0.00309739 -0.00304578 -0.002995 -0.00294503 -0.00289585 -0.00284745 -0.00279981 -0.0027529 -0.00270671 -0.00266123 -0.00261644 -0.00257232 -0.00252886 -0.00248604 -0.00244385 -0.00240228 -0.00236131 -0.00232093 -0.00228112 -0.00224188 -0.0022032 -0.00216505 -0.00212743 -0.00209033 -0.00205374 -0.00201765 -0.00198204 -0.00194691 -0.00191225 -0.00187805 -0.0018443 -0.00181099 -0.00177811 -0.00174566 -0.00171362 -0.00168199 -0.00165076 -0.00161992 -0.00158947 -0.00155939 -0.00152969 -0.00150035 -0.00147137 -0.00144274 -0.00141446 -0.00138651 -0.0013589 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains --0.00882307 -0.00856411 -0.00831992 -0.00808927 -0.00787106 -0.00766432 -0.00746816 -0.00728178 -0.00710449 -0.00693562 -0.0067746 -0.00662088 -0.00647398 -0.00633346 -0.00619891 -0.00606996 -0.00594626 -0.00582751 -0.0057134 -0.00560368 -0.00549809 -0.00539641 -0.00529842 -0.00520393 -0.00511274 -0.0050247 -0.00493964 -0.00485741 -0.00477787 -0.0047009 -0.00462637 -0.00455416 -0.00448417 -0.0044163 -0.00435046 -0.00428655 -0.00422449 -0.0041642 -0.00410561 -0.00404864 -0.00399324 -0.00393933 -0.00388685 -0.00383576 -0.00378599 -0.00373749 -0.00369023 -0.00364414 -0.00359919 -0.00355534 -0.00351254 -0.00347076 -0.00342996 -0.00339011 -0.00335117 -0.00331312 -0.00327593 -0.00323956 -0.00320399 -0.00316919 -0.00313514 -0.00310181 -0.00306918 -0.00303724 -0.00300595 -0.0029753 -0.00294526 -0.00291583 -0.00288698 -0.0028587 -0.00283096 -0.00280376 -0.00277708 -0.0027509 -0.0027252 -0.00269999 -0.00267523 -0.00265093 -0.00262706 -0.00260362 -0.00258059 -0.00255797 -0.00253574 -0.0025139 -0.00249242 -0.00247131 -0.00245056 -0.00243015 -0.00241008 -0.00239033 -0.00237091 -0.0023518 -0.002333 -0.00231449 -0.00229628 -0.00227835 -0.0022607 -0.00224332 -0.0022262 -0.00220935 -0.00219274 -0.00217639 -0.00216028 -0.0021444 -0.00212876 -0.00211334 -0.00209814 -0.00208316 -0.0020684 -0.00205384 -0.00203948 -0.00202533 -0.00201136 -0.00199759 -0.00198401 -0.00197061 -0.00195739 -0.00194435 -0.00193148 -0.00191878 -0.00190624 -0.00189387 -0.00188166 -0.0018696 -0.0018577 -0.00184595 -0.00183434 -0.00182288 -0.00181157 -0.00180039 -0.00178935 -0.00177844 -0.00176767 -0.00175702 -0.00174651 -0.00173612 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains -0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_KD - Gain-schedule table: pitch controller kd gains -0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) +27 ! PC_GS_n - Amount of gain-scheduling table entries +0.05852874 0.08586931 0.10789716 0.1271165 0.14453395 0.16067791 0.17585826 0.19027256 0.20405942 0.21730904 0.23010311 0.24249689 0.2545414 0.26626371 0.27770397 0.28889173 0.29983774 0.31057221 0.32109644 0.33144053 0.34160524 0.35160739 0.36145513 0.37115299 0.38071093 0.3901412 0.39943831 ! PC_GS_angles - Gain-schedule table: pitch angles +-0.01603382 -0.01396602 -0.01229584 -0.01091865 -0.00976358 -0.00878088 -0.00793467 -0.00719835 -0.00655181 -0.00597959 -0.00546956 -0.00501211 -0.00459951 -0.00422546 -0.00388481 -0.00357328 -0.00328728 -0.0030238 -0.00278028 -0.00255453 -0.00234468 -0.00214911 -0.0019664 -0.00179533 -0.00163481 -0.00148391 -0.00134179 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains +-0.00715561 -0.00639445 -0.00577965 -0.00527271 -0.00484752 -0.00448579 -0.0041743 -0.00390326 -0.00366527 -0.00345463 -0.00326689 -0.0030985 -0.00294662 -0.00280893 -0.00268354 -0.00256886 -0.00246359 -0.0023666 -0.00227696 -0.00219386 -0.00211661 -0.00204462 -0.00197737 -0.0019144 -0.00185531 -0.00179976 -0.00174745 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains +0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_KD - Gain-schedule table: pitch controller kd gains +0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) 1.5707 ! PC_MaxPit - Maximum physical pitch limit, [rad]. --0.087266 ! PC_MinPit - Minimum physical pitch limit, [rad]. +-0.087266 ! PC_MinPit - Minimum physical pitch limit, [rad]. 0.13962 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. -0.13962 ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. -122.90957 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. +122.90957658394467 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. 0.0 ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad] 0.003490658 ! PC_Switch - Angle above lowest minimum pitch angle for switch, [rad] 0 ! Z_EnableSine - Enable/disable sine pitch excitation, used to validate for dynamic induction control, will be removed later, [-] @@ -41,63 +41,64 @@ 0 ! Z_PitchFrequency - Frequency of sine pitch excitation, [rad/s] !------- INDIVIDUAL PITCH CONTROL ----------------------------------------- -0.087266 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] -1E-8 0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] -0.436332313 0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. -2.5 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] +0.0 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] +0.0 0.0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] +0.0 0.0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. +0.0 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] !------- VS TORQUE CONTROL ------------------------------------------------ -0.944 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-] -43093.55 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] -150000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. -48000.00 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. +94.4 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-] +43093.55150917838 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] +1500000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. +47402.906660096225 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. 0.0 ! VS_MinTq - Minimum generator (HSS side), [Nm]. -91.2109 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] -2.33228 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] -5.0E+06 ! VS_RtPwr - Wind turbine rated power [W] -43093.55 ! VS_RtTq - Rated torque, [Nm]. -120.113 ! VS_RefSpd - Rated generator speed [rad/s] +0.0 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] +0.0 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] +5000000 ! VS_RtPwr - Wind turbine rated power [W] +43093.55150917838 ! VS_RtTq - Rated torque, [Nm]. +122.90957658394467 ! VS_RefSpd - Rated generator speed [rad/s] 1 ! VS_n - Number of generator PI torque controller gains --835 ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) --164 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-889.094048017944 ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-172.0461874545648 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +7.4 ! VS_TSRopt - Power-maximizing region 2 tip-speed-ratio [rad]. !------- SETPOINT SMOOTHER --------------------------------------------- 30 ! SS_VSGainBias - Variable speed torque controller gain bias, [(rad/s)/rad]. 0.001 ! SS_PCGainBias - Collective pitch controller gain bias, [(rad/s)/Nm]. !------- WIND SPEED ESTIMATOR --------------------------------------------- -63.0 ! WE_BladeRadius - Blade length [m] +63.0 ! WE_BladeRadius - Blade length [m] 4 ! WE_CP_n - Amount of parameters in the Cp array -14.571319658214513 42.809556250371465 2.456512501523107 0.003127994078720 ! WE_CP - Parameters that define the parameterized CP(lambda) function -20 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] -97 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] -4.0469564E+07 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2] +0.0 0.0 0.0 0.0 ! WE_CP - Parameters that define the parameterized CP(lambda) function +0.0 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] +97.0 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] +40469564.444 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2] 1.225 ! WE_RhoAir - Air density, [kg m^-3] "../5MW_Baseline/Cp_Ct_Cq.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) -320 40 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios -23 ! WE_FOPoles_N - Number of first-order system poles used in EKF -3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] --0.0203 -0.0270 -0.0338 -0.0405 -0.0473 -0.0540 -0.0608 -0.0675 -0.0743 -0.0671 -0.0939 -0.1257 -0.1601 -0.1973 -0.2364 -0.2783 -0.3223 -0.3678 -0.4153 -0.4632 -0.5122 -0.5629 -0.6194 ! WE_FOPoles - First order system poles +320 40 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios +42 ! WE_FOPoles_N - Number of first-order system poles used in EKF + 4. 4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5 9. 9.5 10. 10.5 11. 11.9 12.4 12.9 13.4 13.9 14.4 14.9 15.4 15.9 16.4 16.9 17.4 17.9 18.4 18.9 19.4 19.9 20.4 20.9 21.4 21.9 22.4 22.9 23.4 23.9 24.4 24.9 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] +-0.02665071 -0.02998205 -0.03331339 -0.03664473 -0.03997606 -0.0433074 -0.04663874 -0.04997008 -0.05330142 -0.05663276 -0.0599641 -0.06329543 -0.06662677 -0.06995811 -0.07328945 -0.06321278 -0.07469151 -0.08828579 -0.10297822 -0.11842623 -0.13448765 -0.15120764 -0.168455 -0.18635293 -0.20483641 -0.22395323 -0.24348262 -0.26365771 -0.2842596 -0.30535287 -0.32683352 -0.3487705 -0.37113879 -0.39376001 -0.41675049 -0.44017539 -0.46432564 -0.4888057 -0.51273708 -0.53554138 -0.55932133 -0.58645605 ! WE_FOPoles - First order system poles !------- YAW CONTROL ------------------------------------------------------ -1.745329252 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] -0.17453 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] +0.0 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] +0.0 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] 1 ! Y_IPC_n - Number of controller gains (yaw-by-IPC) --0.064 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp --0.0008 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki -0.6283185 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. -1.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. -0.00000 ! Y_MErrSet - Yaw alignment error, set point [rad] -1.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] -0.016667 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] -0.0034906 ! Y_Rate - Yaw rate [rad/s] +0.0 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp +0.0 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki +0.0 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. +0.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. +0.0 ! Y_MErrSet - Yaw alignment error, set point [rad] +0.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] +0.0 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] +0.0 ! Y_Rate - Yaw rate [rad/s] !------- TOWER FORE-AFT DAMPING ------------------------------------------- -1 ! FA_KI - Integral gain for the fore-aft tower damper controller, -1 = off / >0 = on [rad s/m] - !NJA - Make this a flag -0.1 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] -0.087266 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] +0.0 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] +0.0 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] !------- PEAK SHAVING ------------------------------------------- -210 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) - 4. 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5. 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6. 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7. 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8. 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9. 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10. 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11. 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 12. 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 13. 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9 14. 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 14.9 15. 15.1 15.2 15.3 15.4 15.5 15.6 15.7 15.8 15.9 16. 16.1 16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 17. 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 18. 18.1 18.2 18.3 18.4 18.5 18.6 18.7 18.8 18.9 19. 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9 20. 20.1 20.2 20.3 20.4 20.5 20.6 20.7 20.8 20.9 21. 21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8 21.9 22. 22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8 22.9 23. 23.1 23.2 23.3 23.4 23.5 23.6 23.7 23.8 23.9 24. 24.1 24.2 24.3 24.4 24.5 24.6 24.7 24.8 24.9 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] --0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.02962541 -0.02230897 -0.01548946 -0.00915689 -0.00323985 0.00231633 0.00755924 0.01252064 0.01723337 0.02171883 0.02600713 0.03010809 0.03403543 0.03780094 0.04141197 0.0448834 0.04301121 0.04572902 0.04841563 0.05107257 0.05370175 0.05630738 0.05888727 0.06144604 0.06398009 0.06649806 0.06899513 0.07147461 0.07393783 0.0763848 0.07881322 0.08122765 0.08363032 0.08601684 0.0883911 0.09075519 0.09310191 0.09543925 0.09776725 0.10008031 0.1023843 0.10467939 0.10696282 0.10923552 0.11150342 0.11375564 0.11600427 0.118243 0.12047296 0.12269376 0.12490488 0.12711415 0.12931036 0.13150096 0.13368154 0.13585982 0.13803009 0.14018961 0.14234359 0.14449503 0.14663648 0.14877236 0.15089947 0.15302471 0.155141 0.15725402 0.15935959 0.16145813 0.16355132 0.16563963 0.16772494 0.1698033 0.17187555 0.17394191 0.17600722 0.17806499 0.18011745 0.18216164 0.18420446 0.18624091 0.18827655 0.19030833 0.19233052 0.19434885 0.19636357 0.19837593 0.20037883 0.20238383 0.20438058 0.20637502 0.20836358 0.21034732 0.21232885 0.21430571 0.21627763 0.21824694 0.22021326 0.22217222 0.22412743 0.22608217 0.22803347 0.22998291 0.23192295 0.23385759 0.23579759 0.23772869 0.23965799 0.24157841 0.24349944 0.24541689 0.24733152 0.24924241 0.25115108 0.25305646 0.25495687 0.25685379 0.25874221 0.26063593 0.26252242 0.26440664 0.26628698 0.26816398 0.27004031 0.27191147 0.27377527 0.27564404 0.27750921 0.27935984 0.28121741 0.28306997 0.2849209 0.28676631 0.28860828 0.29045122 0.29229007 0.29412417 0.29595331 0.29778415 0.29960719 0.30142759 0.30324755 0.30506054 0.30687771 0.30869136 0.31049896 0.31230004 0.31410149 0.3159051 0.3177027 0.31949741 0.32128578 0.32306955 ! PS_BldPitchMin - Minimum blade pitch angles [rad] +42 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) + 4. 4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5 9. 9.5 10. 10.5 11. 11.9 12.4 12.9 13.4 13.9 14.4 14.9 15.4 15.9 16.4 16.9 17.4 17.9 18.4 18.9 19.4 19.9 20.4 20.9 21.4 21.9 22.4 22.9 23.4 23.9 24.4 24.9 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] +-0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03275873 0.00083377 0.02543348 0.0448834 0.0667768 0.07915202 0.09113854 0.10280435 0.11420819 0.12538567 0.13636556 0.14716567 0.15780447 0.1683014 0.178663 0.18889865 0.19901765 0.20902392 0.21892797 0.22873221 0.23844548 0.24806675 0.25759734 0.26705022 0.27641741 0.2857055 0.29491896 0.3040543 0.31311378 0.32210299 0.33103247 ! PS_BldPitchMin - Minimum blade pitch angles [rad] diff --git a/Test_Cases/5MW_OC4_AR_Baseline/DISCON.IN b/Test_Cases/5MW_OC4_AR_Baseline/DISCON.IN index 99dee3c36..ef7726c15 100644 --- a/Test_Cases/5MW_OC4_AR_Baseline/DISCON.IN +++ b/Test_Cases/5MW_OC4_AR_Baseline/DISCON.IN @@ -1,5 +1,5 @@ ! Controller parameter input file for the 5MW_Land wind turbine -! - File written using NREL Baseline Controller tuning logic on 10/01/19 +! - File written using NREL Baseline Controller tuning logic on 10/07/19 !------- DEBUG ------------------------------------------------------------ 1 ! LoggingLevel - {0: write no debug files, 1: write standard output .dbg-file, 2: write standard output .dbg-file and complete avrSWAP-array .dbg2-file @@ -16,24 +16,24 @@ 1 ! PS_Mode - Peak shaving mode {0: no peak shaving, 1: implement peak shaving} !------- FILTERS ---------------------------------------------------------- -1.570796326 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz] +1.543417826848871 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz] 0 ! F_LPFDamping - Damping coefficient [used only when F_FilterType = 2] 0 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s] 0 0 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-] 0.5 ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [Hz]. !------- BLADE PITCH CONTROL ---------------------------------------------- -136 ! PC_GS_n - Amount of gain-scheduling table entries -0. 0.01843267 0.03012466 0.03938211 0.0473159 0.05438725 0.0608399 0.06682165 0.07243603 0.07774601 0.08280179 0.08764533 0.0922973 0.09678511 0.10113084 0.10534505 0.10944741 0.11344459 0.11734245 0.12115249 0.12488383 0.12853954 0.13212927 0.13565125 0.13911823 0.1425236 0.14587973 0.1491875 0.15244657 0.15566288 0.15883986 0.16197375 0.16506986 0.16813214 0.17115907 0.17415428 0.17711497 0.18004808 0.18295399 0.1858281 0.1886768 0.19150248 0.19430239 0.19707534 0.19983015 0.2025582 0.20526628 0.20795513 0.21062023 0.21326861 0.2158935 0.21850484 0.2210941 0.22366803 0.22622254 0.22876498 0.2312836 0.23379345 0.23628255 0.23875941 0.24122279 0.24366729 0.24610036 0.24852176 0.25092855 0.25332325 0.2557023 0.25807209 0.26042559 0.26276748 0.26510036 0.26742092 0.26973036 0.27202782 0.27431492 0.27658881 0.27885401 0.28110964 0.28336045 0.2855962 0.28782076 0.29003745 0.29224346 0.29444004 0.29663204 0.2988061 0.30097858 0.30314198 0.30529447 0.30743825 0.30958 0.31170708 0.31382687 0.31593631 0.3180419 0.32013786 0.32222978 0.32431029 0.32638663 0.32845309 0.33051357 0.33256802 0.33461455 0.33665611 0.33868284 0.34071023 0.34272963 0.34474196 0.34674528 0.34875073 0.35074041 0.35272695 0.35470654 0.35668277 0.35864961 0.36061312 0.36256798 0.36452117 0.36646633 0.36840178 0.37033735 0.3722649 0.37418622 0.37609996 0.37801477 0.37991806 0.38181864 0.38371323 0.38560453 0.38749153 0.38937202 0.39124103 0.39310673 0.39497577 0.39683082 0.39868511 ! PC_GS_angles - Gain-schedule table: pitch angles --0.02019147 -0.01950333 -0.01885443 -0.0182415 -0.01766165 -0.01711225 -0.01659098 -0.01609573 -0.01562459 -0.01517585 -0.01474794 -0.01433946 -0.0139491 -0.01357569 -0.01321814 -0.01287547 -0.01254676 -0.01223119 -0.01192797 -0.0116364 -0.01135581 -0.01108561 -0.01082521 -0.01057411 -0.0103318 -0.01009784 -0.00987181 -0.00965329 -0.00944194 -0.00923739 -0.00903933 -0.00884745 -0.00866147 -0.00848112 -0.00830614 -0.00813631 -0.0079714 -0.00781119 -0.00765549 -0.00750411 -0.00735688 -0.00721362 -0.00707417 -0.0069384 -0.00680614 -0.00667728 -0.00655167 -0.0064292 -0.00630975 -0.00619322 -0.00607949 -0.00596846 -0.00586005 -0.00575415 -0.00565069 -0.00554957 -0.00545073 -0.00535408 -0.00525955 -0.00516708 -0.00507659 -0.00498803 -0.00490133 -0.00481644 -0.00473329 -0.00465184 -0.00457204 -0.00449383 -0.00441716 -0.004342 -0.0042683 -0.00419602 -0.00412511 -0.00405553 -0.00398726 -0.00392025 -0.00385447 -0.00378988 -0.00372646 -0.00366417 -0.00360298 -0.00354286 -0.00348379 -0.00342574 -0.00336868 -0.00331258 -0.00325743 -0.00320319 -0.00314985 -0.00309739 -0.00304578 -0.002995 -0.00294503 -0.00289585 -0.00284745 -0.00279981 -0.0027529 -0.00270671 -0.00266123 -0.00261644 -0.00257232 -0.00252886 -0.00248604 -0.00244385 -0.00240228 -0.00236131 -0.00232093 -0.00228112 -0.00224188 -0.0022032 -0.00216505 -0.00212743 -0.00209033 -0.00205374 -0.00201765 -0.00198204 -0.00194691 -0.00191225 -0.00187805 -0.0018443 -0.00181099 -0.00177811 -0.00174566 -0.00171362 -0.00168199 -0.00165076 -0.00161992 -0.00158947 -0.00155939 -0.00152969 -0.00150035 -0.00147137 -0.00144274 -0.00141446 -0.00138651 -0.0013589 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains --0.00882307 -0.00856411 -0.00831992 -0.00808927 -0.00787106 -0.00766432 -0.00746816 -0.00728178 -0.00710449 -0.00693562 -0.0067746 -0.00662088 -0.00647398 -0.00633346 -0.00619891 -0.00606996 -0.00594626 -0.00582751 -0.0057134 -0.00560368 -0.00549809 -0.00539641 -0.00529842 -0.00520393 -0.00511274 -0.0050247 -0.00493964 -0.00485741 -0.00477787 -0.0047009 -0.00462637 -0.00455416 -0.00448417 -0.0044163 -0.00435046 -0.00428655 -0.00422449 -0.0041642 -0.00410561 -0.00404864 -0.00399324 -0.00393933 -0.00388685 -0.00383576 -0.00378599 -0.00373749 -0.00369023 -0.00364414 -0.00359919 -0.00355534 -0.00351254 -0.00347076 -0.00342996 -0.00339011 -0.00335117 -0.00331312 -0.00327593 -0.00323956 -0.00320399 -0.00316919 -0.00313514 -0.00310181 -0.00306918 -0.00303724 -0.00300595 -0.0029753 -0.00294526 -0.00291583 -0.00288698 -0.0028587 -0.00283096 -0.00280376 -0.00277708 -0.0027509 -0.0027252 -0.00269999 -0.00267523 -0.00265093 -0.00262706 -0.00260362 -0.00258059 -0.00255797 -0.00253574 -0.0025139 -0.00249242 -0.00247131 -0.00245056 -0.00243015 -0.00241008 -0.00239033 -0.00237091 -0.0023518 -0.002333 -0.00231449 -0.00229628 -0.00227835 -0.0022607 -0.00224332 -0.0022262 -0.00220935 -0.00219274 -0.00217639 -0.00216028 -0.0021444 -0.00212876 -0.00211334 -0.00209814 -0.00208316 -0.0020684 -0.00205384 -0.00203948 -0.00202533 -0.00201136 -0.00199759 -0.00198401 -0.00197061 -0.00195739 -0.00194435 -0.00193148 -0.00191878 -0.00190624 -0.00189387 -0.00188166 -0.0018696 -0.0018577 -0.00184595 -0.00183434 -0.00182288 -0.00181157 -0.00180039 -0.00178935 -0.00177844 -0.00176767 -0.00175702 -0.00174651 -0.00173612 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains -0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_KD - Gain-schedule table: pitch controller kd gains -0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) +27 ! PC_GS_n - Amount of gain-scheduling table entries +0.05852874 0.08586931 0.10789716 0.1271165 0.14453395 0.16067791 0.17585826 0.19027256 0.20405942 0.21730904 0.23010311 0.24249689 0.2545414 0.26626371 0.27770397 0.28889173 0.29983774 0.31057221 0.32109644 0.33144053 0.34160524 0.35160739 0.36145513 0.37115299 0.38071093 0.3901412 0.39943831 ! PC_GS_angles - Gain-schedule table: pitch angles +-0.01603382 -0.01396602 -0.01229584 -0.01091865 -0.00976358 -0.00878088 -0.00793467 -0.00719835 -0.00655181 -0.00597959 -0.00546956 -0.00501211 -0.00459951 -0.00422546 -0.00388481 -0.00357328 -0.00328728 -0.0030238 -0.00278028 -0.00255453 -0.00234468 -0.00214911 -0.0019664 -0.00179533 -0.00163481 -0.00148391 -0.00134179 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains +-0.00715561 -0.00639445 -0.00577965 -0.00527271 -0.00484752 -0.00448579 -0.0041743 -0.00390326 -0.00366527 -0.00345463 -0.00326689 -0.0030985 -0.00294662 -0.00280893 -0.00268354 -0.00256886 -0.00246359 -0.0023666 -0.00227696 -0.00219386 -0.00211661 -0.00204462 -0.00197737 -0.0019144 -0.00185531 -0.00179976 -0.00174745 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains +0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_KD - Gain-schedule table: pitch controller kd gains +0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) 1.5707 ! PC_MaxPit - Maximum physical pitch limit, [rad]. --0.087266 ! PC_MinPit - Minimum physical pitch limit, [rad]. +-0.087266 ! PC_MinPit - Minimum physical pitch limit, [rad]. 0.13962 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. -0.13962 ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. -122.90957 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. +122.90957658394467 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. 0.0 ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad] 0.003490658 ! PC_Switch - Angle above lowest minimum pitch angle for switch, [rad] 0 ! Z_EnableSine - Enable/disable sine pitch excitation, used to validate for dynamic induction control, will be removed later, [-] @@ -41,63 +41,64 @@ 0 ! Z_PitchFrequency - Frequency of sine pitch excitation, [rad/s] !------- INDIVIDUAL PITCH CONTROL ----------------------------------------- -0.087266 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] -1E-8 0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] -0.436332313 0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. -2.5 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] +0.0 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] +0.0 0.0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] +0.0 0.0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. +0.0 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] !------- VS TORQUE CONTROL ------------------------------------------------ -0.944 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-] -43093.55 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] -150000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. -48000.00 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. +94.4 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-] +43093.55150917838 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] +1500000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. +47402.906660096225 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. 0.0 ! VS_MinTq - Minimum generator (HSS side), [Nm]. -91.2109 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] -2.33228 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] -5.0E+06 ! VS_RtPwr - Wind turbine rated power [W] -43093.55 ! VS_RtTq - Rated torque, [Nm]. -120.113 ! VS_RefSpd - Rated generator speed [rad/s] +0.0 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] +0.0 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] +5000000 ! VS_RtPwr - Wind turbine rated power [W] +43093.55150917838 ! VS_RtTq - Rated torque, [Nm]. +122.90957658394467 ! VS_RefSpd - Rated generator speed [rad/s] 1 ! VS_n - Number of generator PI torque controller gains --835 ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) --164 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-889.094048017944 ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-172.0461874545648 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +7.4 ! VS_TSRopt - Power-maximizing region 2 tip-speed-ratio [rad]. !------- SETPOINT SMOOTHER --------------------------------------------- 30 ! SS_VSGainBias - Variable speed torque controller gain bias, [(rad/s)/rad]. 0.001 ! SS_PCGainBias - Collective pitch controller gain bias, [(rad/s)/Nm]. !------- WIND SPEED ESTIMATOR --------------------------------------------- -63.0 ! WE_BladeRadius - Blade length [m] +63.0 ! WE_BladeRadius - Blade length [m] 4 ! WE_CP_n - Amount of parameters in the Cp array -14.571319658214513 42.809556250371465 2.456512501523107 0.003127994078720 ! WE_CP - Parameters that define the parameterized CP(lambda) function -20 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] -97 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] -4.0469564E+07 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2] +0.0 0.0 0.0 0.0 ! WE_CP - Parameters that define the parameterized CP(lambda) function +0.0 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] +97.0 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] +40469564.444 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2] 1.225 ! WE_RhoAir - Air density, [kg m^-3] "../5MW_Baseline/Cp_Ct_Cq.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) -320 40 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios -23 ! WE_FOPoles_N - Number of first-order system poles used in EKF -3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] --0.0203 -0.0270 -0.0338 -0.0405 -0.0473 -0.0540 -0.0608 -0.0675 -0.0743 -0.0671 -0.0939 -0.1257 -0.1601 -0.1973 -0.2364 -0.2783 -0.3223 -0.3678 -0.4153 -0.4632 -0.5122 -0.5629 -0.6194 ! WE_FOPoles - First order system poles +320 40 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios +42 ! WE_FOPoles_N - Number of first-order system poles used in EKF + 4. 4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5 9. 9.5 10. 10.5 11. 11.9 12.4 12.9 13.4 13.9 14.4 14.9 15.4 15.9 16.4 16.9 17.4 17.9 18.4 18.9 19.4 19.9 20.4 20.9 21.4 21.9 22.4 22.9 23.4 23.9 24.4 24.9 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] +-0.02665071 -0.02998205 -0.03331339 -0.03664473 -0.03997606 -0.0433074 -0.04663874 -0.04997008 -0.05330142 -0.05663276 -0.0599641 -0.06329543 -0.06662677 -0.06995811 -0.07328945 -0.06321278 -0.07469151 -0.08828579 -0.10297822 -0.11842623 -0.13448765 -0.15120764 -0.168455 -0.18635293 -0.20483641 -0.22395323 -0.24348262 -0.26365771 -0.2842596 -0.30535287 -0.32683352 -0.3487705 -0.37113879 -0.39376001 -0.41675049 -0.44017539 -0.46432564 -0.4888057 -0.51273708 -0.53554138 -0.55932133 -0.58645605 ! WE_FOPoles - First order system poles !------- YAW CONTROL ------------------------------------------------------ -1.745329252 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] -0.17453 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] +0.0 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] +0.0 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] 1 ! Y_IPC_n - Number of controller gains (yaw-by-IPC) --0.064 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp --0.0008 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki -0.6283185 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. -1.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. -0.00000 ! Y_MErrSet - Yaw alignment error, set point [rad] -1.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] -0.016667 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] -0.0034906 ! Y_Rate - Yaw rate [rad/s] +0.0 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp +0.0 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki +0.0 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. +0.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. +0.0 ! Y_MErrSet - Yaw alignment error, set point [rad] +0.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] +0.0 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] +0.0 ! Y_Rate - Yaw rate [rad/s] !------- TOWER FORE-AFT DAMPING ------------------------------------------- -1 ! FA_KI - Integral gain for the fore-aft tower damper controller, -1 = off / >0 = on [rad s/m] - !NJA - Make this a flag -0.1 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] -0.087266 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] +0.0 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] +0.0 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] !------- PEAK SHAVING ------------------------------------------- -210 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) - 4. 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5. 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6. 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7. 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8. 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9. 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10. 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11. 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 12. 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 13. 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9 14. 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 14.9 15. 15.1 15.2 15.3 15.4 15.5 15.6 15.7 15.8 15.9 16. 16.1 16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 17. 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 18. 18.1 18.2 18.3 18.4 18.5 18.6 18.7 18.8 18.9 19. 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9 20. 20.1 20.2 20.3 20.4 20.5 20.6 20.7 20.8 20.9 21. 21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8 21.9 22. 22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8 22.9 23. 23.1 23.2 23.3 23.4 23.5 23.6 23.7 23.8 23.9 24. 24.1 24.2 24.3 24.4 24.5 24.6 24.7 24.8 24.9 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] --0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.02962541 -0.02230897 -0.01548946 -0.00915689 -0.00323985 0.00231633 0.00755924 0.01252064 0.01723337 0.02171883 0.02600713 0.03010809 0.03403543 0.03780094 0.04141197 0.0448834 0.04301121 0.04572902 0.04841563 0.05107257 0.05370175 0.05630738 0.05888727 0.06144604 0.06398009 0.06649806 0.06899513 0.07147461 0.07393783 0.0763848 0.07881322 0.08122765 0.08363032 0.08601684 0.0883911 0.09075519 0.09310191 0.09543925 0.09776725 0.10008031 0.1023843 0.10467939 0.10696282 0.10923552 0.11150342 0.11375564 0.11600427 0.118243 0.12047296 0.12269376 0.12490488 0.12711415 0.12931036 0.13150096 0.13368154 0.13585982 0.13803009 0.14018961 0.14234359 0.14449503 0.14663648 0.14877236 0.15089947 0.15302471 0.155141 0.15725402 0.15935959 0.16145813 0.16355132 0.16563963 0.16772494 0.1698033 0.17187555 0.17394191 0.17600722 0.17806499 0.18011745 0.18216164 0.18420446 0.18624091 0.18827655 0.19030833 0.19233052 0.19434885 0.19636357 0.19837593 0.20037883 0.20238383 0.20438058 0.20637502 0.20836358 0.21034732 0.21232885 0.21430571 0.21627763 0.21824694 0.22021326 0.22217222 0.22412743 0.22608217 0.22803347 0.22998291 0.23192295 0.23385759 0.23579759 0.23772869 0.23965799 0.24157841 0.24349944 0.24541689 0.24733152 0.24924241 0.25115108 0.25305646 0.25495687 0.25685379 0.25874221 0.26063593 0.26252242 0.26440664 0.26628698 0.26816398 0.27004031 0.27191147 0.27377527 0.27564404 0.27750921 0.27935984 0.28121741 0.28306997 0.2849209 0.28676631 0.28860828 0.29045122 0.29229007 0.29412417 0.29595331 0.29778415 0.29960719 0.30142759 0.30324755 0.30506054 0.30687771 0.30869136 0.31049896 0.31230004 0.31410149 0.3159051 0.3177027 0.31949741 0.32128578 0.32306955 ! PS_BldPitchMin - Minimum blade pitch angles [rad] +42 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) + 4. 4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5 9. 9.5 10. 10.5 11. 11.9 12.4 12.9 13.4 13.9 14.4 14.9 15.4 15.9 16.4 16.9 17.4 17.9 18.4 18.9 19.4 19.9 20.4 20.9 21.4 21.9 22.4 22.9 23.4 23.9 24.4 24.9 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] +-0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03275873 0.00083377 0.02543348 0.0448834 0.0667768 0.07915202 0.09113854 0.10280435 0.11420819 0.12538567 0.13636556 0.14716567 0.15780447 0.1683014 0.178663 0.18889865 0.19901765 0.20902392 0.21892797 0.22873221 0.23844548 0.24806675 0.25759734 0.26705022 0.27641741 0.2857055 0.29491896 0.3040543 0.31311378 0.32210299 0.33103247 ! PS_BldPitchMin - Minimum blade pitch angles [rad] diff --git a/Test_Cases/5MW_OC4_ARsteady_Baseline/DISCON.IN b/Test_Cases/5MW_OC4_ARsteady_Baseline/DISCON.IN index 99dee3c36..ef7726c15 100644 --- a/Test_Cases/5MW_OC4_ARsteady_Baseline/DISCON.IN +++ b/Test_Cases/5MW_OC4_ARsteady_Baseline/DISCON.IN @@ -1,5 +1,5 @@ ! Controller parameter input file for the 5MW_Land wind turbine -! - File written using NREL Baseline Controller tuning logic on 10/01/19 +! - File written using NREL Baseline Controller tuning logic on 10/07/19 !------- DEBUG ------------------------------------------------------------ 1 ! LoggingLevel - {0: write no debug files, 1: write standard output .dbg-file, 2: write standard output .dbg-file and complete avrSWAP-array .dbg2-file @@ -16,24 +16,24 @@ 1 ! PS_Mode - Peak shaving mode {0: no peak shaving, 1: implement peak shaving} !------- FILTERS ---------------------------------------------------------- -1.570796326 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz] +1.543417826848871 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz] 0 ! F_LPFDamping - Damping coefficient [used only when F_FilterType = 2] 0 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s] 0 0 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-] 0.5 ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [Hz]. !------- BLADE PITCH CONTROL ---------------------------------------------- -136 ! PC_GS_n - Amount of gain-scheduling table entries -0. 0.01843267 0.03012466 0.03938211 0.0473159 0.05438725 0.0608399 0.06682165 0.07243603 0.07774601 0.08280179 0.08764533 0.0922973 0.09678511 0.10113084 0.10534505 0.10944741 0.11344459 0.11734245 0.12115249 0.12488383 0.12853954 0.13212927 0.13565125 0.13911823 0.1425236 0.14587973 0.1491875 0.15244657 0.15566288 0.15883986 0.16197375 0.16506986 0.16813214 0.17115907 0.17415428 0.17711497 0.18004808 0.18295399 0.1858281 0.1886768 0.19150248 0.19430239 0.19707534 0.19983015 0.2025582 0.20526628 0.20795513 0.21062023 0.21326861 0.2158935 0.21850484 0.2210941 0.22366803 0.22622254 0.22876498 0.2312836 0.23379345 0.23628255 0.23875941 0.24122279 0.24366729 0.24610036 0.24852176 0.25092855 0.25332325 0.2557023 0.25807209 0.26042559 0.26276748 0.26510036 0.26742092 0.26973036 0.27202782 0.27431492 0.27658881 0.27885401 0.28110964 0.28336045 0.2855962 0.28782076 0.29003745 0.29224346 0.29444004 0.29663204 0.2988061 0.30097858 0.30314198 0.30529447 0.30743825 0.30958 0.31170708 0.31382687 0.31593631 0.3180419 0.32013786 0.32222978 0.32431029 0.32638663 0.32845309 0.33051357 0.33256802 0.33461455 0.33665611 0.33868284 0.34071023 0.34272963 0.34474196 0.34674528 0.34875073 0.35074041 0.35272695 0.35470654 0.35668277 0.35864961 0.36061312 0.36256798 0.36452117 0.36646633 0.36840178 0.37033735 0.3722649 0.37418622 0.37609996 0.37801477 0.37991806 0.38181864 0.38371323 0.38560453 0.38749153 0.38937202 0.39124103 0.39310673 0.39497577 0.39683082 0.39868511 ! PC_GS_angles - Gain-schedule table: pitch angles --0.02019147 -0.01950333 -0.01885443 -0.0182415 -0.01766165 -0.01711225 -0.01659098 -0.01609573 -0.01562459 -0.01517585 -0.01474794 -0.01433946 -0.0139491 -0.01357569 -0.01321814 -0.01287547 -0.01254676 -0.01223119 -0.01192797 -0.0116364 -0.01135581 -0.01108561 -0.01082521 -0.01057411 -0.0103318 -0.01009784 -0.00987181 -0.00965329 -0.00944194 -0.00923739 -0.00903933 -0.00884745 -0.00866147 -0.00848112 -0.00830614 -0.00813631 -0.0079714 -0.00781119 -0.00765549 -0.00750411 -0.00735688 -0.00721362 -0.00707417 -0.0069384 -0.00680614 -0.00667728 -0.00655167 -0.0064292 -0.00630975 -0.00619322 -0.00607949 -0.00596846 -0.00586005 -0.00575415 -0.00565069 -0.00554957 -0.00545073 -0.00535408 -0.00525955 -0.00516708 -0.00507659 -0.00498803 -0.00490133 -0.00481644 -0.00473329 -0.00465184 -0.00457204 -0.00449383 -0.00441716 -0.004342 -0.0042683 -0.00419602 -0.00412511 -0.00405553 -0.00398726 -0.00392025 -0.00385447 -0.00378988 -0.00372646 -0.00366417 -0.00360298 -0.00354286 -0.00348379 -0.00342574 -0.00336868 -0.00331258 -0.00325743 -0.00320319 -0.00314985 -0.00309739 -0.00304578 -0.002995 -0.00294503 -0.00289585 -0.00284745 -0.00279981 -0.0027529 -0.00270671 -0.00266123 -0.00261644 -0.00257232 -0.00252886 -0.00248604 -0.00244385 -0.00240228 -0.00236131 -0.00232093 -0.00228112 -0.00224188 -0.0022032 -0.00216505 -0.00212743 -0.00209033 -0.00205374 -0.00201765 -0.00198204 -0.00194691 -0.00191225 -0.00187805 -0.0018443 -0.00181099 -0.00177811 -0.00174566 -0.00171362 -0.00168199 -0.00165076 -0.00161992 -0.00158947 -0.00155939 -0.00152969 -0.00150035 -0.00147137 -0.00144274 -0.00141446 -0.00138651 -0.0013589 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains --0.00882307 -0.00856411 -0.00831992 -0.00808927 -0.00787106 -0.00766432 -0.00746816 -0.00728178 -0.00710449 -0.00693562 -0.0067746 -0.00662088 -0.00647398 -0.00633346 -0.00619891 -0.00606996 -0.00594626 -0.00582751 -0.0057134 -0.00560368 -0.00549809 -0.00539641 -0.00529842 -0.00520393 -0.00511274 -0.0050247 -0.00493964 -0.00485741 -0.00477787 -0.0047009 -0.00462637 -0.00455416 -0.00448417 -0.0044163 -0.00435046 -0.00428655 -0.00422449 -0.0041642 -0.00410561 -0.00404864 -0.00399324 -0.00393933 -0.00388685 -0.00383576 -0.00378599 -0.00373749 -0.00369023 -0.00364414 -0.00359919 -0.00355534 -0.00351254 -0.00347076 -0.00342996 -0.00339011 -0.00335117 -0.00331312 -0.00327593 -0.00323956 -0.00320399 -0.00316919 -0.00313514 -0.00310181 -0.00306918 -0.00303724 -0.00300595 -0.0029753 -0.00294526 -0.00291583 -0.00288698 -0.0028587 -0.00283096 -0.00280376 -0.00277708 -0.0027509 -0.0027252 -0.00269999 -0.00267523 -0.00265093 -0.00262706 -0.00260362 -0.00258059 -0.00255797 -0.00253574 -0.0025139 -0.00249242 -0.00247131 -0.00245056 -0.00243015 -0.00241008 -0.00239033 -0.00237091 -0.0023518 -0.002333 -0.00231449 -0.00229628 -0.00227835 -0.0022607 -0.00224332 -0.0022262 -0.00220935 -0.00219274 -0.00217639 -0.00216028 -0.0021444 -0.00212876 -0.00211334 -0.00209814 -0.00208316 -0.0020684 -0.00205384 -0.00203948 -0.00202533 -0.00201136 -0.00199759 -0.00198401 -0.00197061 -0.00195739 -0.00194435 -0.00193148 -0.00191878 -0.00190624 -0.00189387 -0.00188166 -0.0018696 -0.0018577 -0.00184595 -0.00183434 -0.00182288 -0.00181157 -0.00180039 -0.00178935 -0.00177844 -0.00176767 -0.00175702 -0.00174651 -0.00173612 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains -0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_KD - Gain-schedule table: pitch controller kd gains -0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) +27 ! PC_GS_n - Amount of gain-scheduling table entries +0.05852874 0.08586931 0.10789716 0.1271165 0.14453395 0.16067791 0.17585826 0.19027256 0.20405942 0.21730904 0.23010311 0.24249689 0.2545414 0.26626371 0.27770397 0.28889173 0.29983774 0.31057221 0.32109644 0.33144053 0.34160524 0.35160739 0.36145513 0.37115299 0.38071093 0.3901412 0.39943831 ! PC_GS_angles - Gain-schedule table: pitch angles +-0.01603382 -0.01396602 -0.01229584 -0.01091865 -0.00976358 -0.00878088 -0.00793467 -0.00719835 -0.00655181 -0.00597959 -0.00546956 -0.00501211 -0.00459951 -0.00422546 -0.00388481 -0.00357328 -0.00328728 -0.0030238 -0.00278028 -0.00255453 -0.00234468 -0.00214911 -0.0019664 -0.00179533 -0.00163481 -0.00148391 -0.00134179 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains +-0.00715561 -0.00639445 -0.00577965 -0.00527271 -0.00484752 -0.00448579 -0.0041743 -0.00390326 -0.00366527 -0.00345463 -0.00326689 -0.0030985 -0.00294662 -0.00280893 -0.00268354 -0.00256886 -0.00246359 -0.0023666 -0.00227696 -0.00219386 -0.00211661 -0.00204462 -0.00197737 -0.0019144 -0.00185531 -0.00179976 -0.00174745 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains +0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_KD - Gain-schedule table: pitch controller kd gains +0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) 1.5707 ! PC_MaxPit - Maximum physical pitch limit, [rad]. --0.087266 ! PC_MinPit - Minimum physical pitch limit, [rad]. +-0.087266 ! PC_MinPit - Minimum physical pitch limit, [rad]. 0.13962 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. -0.13962 ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. -122.90957 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. +122.90957658394467 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. 0.0 ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad] 0.003490658 ! PC_Switch - Angle above lowest minimum pitch angle for switch, [rad] 0 ! Z_EnableSine - Enable/disable sine pitch excitation, used to validate for dynamic induction control, will be removed later, [-] @@ -41,63 +41,64 @@ 0 ! Z_PitchFrequency - Frequency of sine pitch excitation, [rad/s] !------- INDIVIDUAL PITCH CONTROL ----------------------------------------- -0.087266 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] -1E-8 0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] -0.436332313 0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. -2.5 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] +0.0 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] +0.0 0.0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] +0.0 0.0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. +0.0 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] !------- VS TORQUE CONTROL ------------------------------------------------ -0.944 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-] -43093.55 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] -150000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. -48000.00 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. +94.4 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-] +43093.55150917838 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] +1500000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. +47402.906660096225 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. 0.0 ! VS_MinTq - Minimum generator (HSS side), [Nm]. -91.2109 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] -2.33228 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] -5.0E+06 ! VS_RtPwr - Wind turbine rated power [W] -43093.55 ! VS_RtTq - Rated torque, [Nm]. -120.113 ! VS_RefSpd - Rated generator speed [rad/s] +0.0 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] +0.0 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] +5000000 ! VS_RtPwr - Wind turbine rated power [W] +43093.55150917838 ! VS_RtTq - Rated torque, [Nm]. +122.90957658394467 ! VS_RefSpd - Rated generator speed [rad/s] 1 ! VS_n - Number of generator PI torque controller gains --835 ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) --164 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-889.094048017944 ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-172.0461874545648 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +7.4 ! VS_TSRopt - Power-maximizing region 2 tip-speed-ratio [rad]. !------- SETPOINT SMOOTHER --------------------------------------------- 30 ! SS_VSGainBias - Variable speed torque controller gain bias, [(rad/s)/rad]. 0.001 ! SS_PCGainBias - Collective pitch controller gain bias, [(rad/s)/Nm]. !------- WIND SPEED ESTIMATOR --------------------------------------------- -63.0 ! WE_BladeRadius - Blade length [m] +63.0 ! WE_BladeRadius - Blade length [m] 4 ! WE_CP_n - Amount of parameters in the Cp array -14.571319658214513 42.809556250371465 2.456512501523107 0.003127994078720 ! WE_CP - Parameters that define the parameterized CP(lambda) function -20 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] -97 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] -4.0469564E+07 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2] +0.0 0.0 0.0 0.0 ! WE_CP - Parameters that define the parameterized CP(lambda) function +0.0 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] +97.0 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] +40469564.444 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2] 1.225 ! WE_RhoAir - Air density, [kg m^-3] "../5MW_Baseline/Cp_Ct_Cq.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) -320 40 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios -23 ! WE_FOPoles_N - Number of first-order system poles used in EKF -3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] --0.0203 -0.0270 -0.0338 -0.0405 -0.0473 -0.0540 -0.0608 -0.0675 -0.0743 -0.0671 -0.0939 -0.1257 -0.1601 -0.1973 -0.2364 -0.2783 -0.3223 -0.3678 -0.4153 -0.4632 -0.5122 -0.5629 -0.6194 ! WE_FOPoles - First order system poles +320 40 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios +42 ! WE_FOPoles_N - Number of first-order system poles used in EKF + 4. 4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5 9. 9.5 10. 10.5 11. 11.9 12.4 12.9 13.4 13.9 14.4 14.9 15.4 15.9 16.4 16.9 17.4 17.9 18.4 18.9 19.4 19.9 20.4 20.9 21.4 21.9 22.4 22.9 23.4 23.9 24.4 24.9 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] +-0.02665071 -0.02998205 -0.03331339 -0.03664473 -0.03997606 -0.0433074 -0.04663874 -0.04997008 -0.05330142 -0.05663276 -0.0599641 -0.06329543 -0.06662677 -0.06995811 -0.07328945 -0.06321278 -0.07469151 -0.08828579 -0.10297822 -0.11842623 -0.13448765 -0.15120764 -0.168455 -0.18635293 -0.20483641 -0.22395323 -0.24348262 -0.26365771 -0.2842596 -0.30535287 -0.32683352 -0.3487705 -0.37113879 -0.39376001 -0.41675049 -0.44017539 -0.46432564 -0.4888057 -0.51273708 -0.53554138 -0.55932133 -0.58645605 ! WE_FOPoles - First order system poles !------- YAW CONTROL ------------------------------------------------------ -1.745329252 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] -0.17453 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] +0.0 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] +0.0 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] 1 ! Y_IPC_n - Number of controller gains (yaw-by-IPC) --0.064 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp --0.0008 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki -0.6283185 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. -1.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. -0.00000 ! Y_MErrSet - Yaw alignment error, set point [rad] -1.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] -0.016667 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] -0.0034906 ! Y_Rate - Yaw rate [rad/s] +0.0 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp +0.0 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki +0.0 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. +0.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. +0.0 ! Y_MErrSet - Yaw alignment error, set point [rad] +0.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] +0.0 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] +0.0 ! Y_Rate - Yaw rate [rad/s] !------- TOWER FORE-AFT DAMPING ------------------------------------------- -1 ! FA_KI - Integral gain for the fore-aft tower damper controller, -1 = off / >0 = on [rad s/m] - !NJA - Make this a flag -0.1 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] -0.087266 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] +0.0 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] +0.0 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] !------- PEAK SHAVING ------------------------------------------- -210 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) - 4. 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5. 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6. 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7. 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8. 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9. 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10. 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11. 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 12. 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 13. 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9 14. 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 14.9 15. 15.1 15.2 15.3 15.4 15.5 15.6 15.7 15.8 15.9 16. 16.1 16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 17. 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 18. 18.1 18.2 18.3 18.4 18.5 18.6 18.7 18.8 18.9 19. 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9 20. 20.1 20.2 20.3 20.4 20.5 20.6 20.7 20.8 20.9 21. 21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8 21.9 22. 22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8 22.9 23. 23.1 23.2 23.3 23.4 23.5 23.6 23.7 23.8 23.9 24. 24.1 24.2 24.3 24.4 24.5 24.6 24.7 24.8 24.9 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] --0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.02962541 -0.02230897 -0.01548946 -0.00915689 -0.00323985 0.00231633 0.00755924 0.01252064 0.01723337 0.02171883 0.02600713 0.03010809 0.03403543 0.03780094 0.04141197 0.0448834 0.04301121 0.04572902 0.04841563 0.05107257 0.05370175 0.05630738 0.05888727 0.06144604 0.06398009 0.06649806 0.06899513 0.07147461 0.07393783 0.0763848 0.07881322 0.08122765 0.08363032 0.08601684 0.0883911 0.09075519 0.09310191 0.09543925 0.09776725 0.10008031 0.1023843 0.10467939 0.10696282 0.10923552 0.11150342 0.11375564 0.11600427 0.118243 0.12047296 0.12269376 0.12490488 0.12711415 0.12931036 0.13150096 0.13368154 0.13585982 0.13803009 0.14018961 0.14234359 0.14449503 0.14663648 0.14877236 0.15089947 0.15302471 0.155141 0.15725402 0.15935959 0.16145813 0.16355132 0.16563963 0.16772494 0.1698033 0.17187555 0.17394191 0.17600722 0.17806499 0.18011745 0.18216164 0.18420446 0.18624091 0.18827655 0.19030833 0.19233052 0.19434885 0.19636357 0.19837593 0.20037883 0.20238383 0.20438058 0.20637502 0.20836358 0.21034732 0.21232885 0.21430571 0.21627763 0.21824694 0.22021326 0.22217222 0.22412743 0.22608217 0.22803347 0.22998291 0.23192295 0.23385759 0.23579759 0.23772869 0.23965799 0.24157841 0.24349944 0.24541689 0.24733152 0.24924241 0.25115108 0.25305646 0.25495687 0.25685379 0.25874221 0.26063593 0.26252242 0.26440664 0.26628698 0.26816398 0.27004031 0.27191147 0.27377527 0.27564404 0.27750921 0.27935984 0.28121741 0.28306997 0.2849209 0.28676631 0.28860828 0.29045122 0.29229007 0.29412417 0.29595331 0.29778415 0.29960719 0.30142759 0.30324755 0.30506054 0.30687771 0.30869136 0.31049896 0.31230004 0.31410149 0.3159051 0.3177027 0.31949741 0.32128578 0.32306955 ! PS_BldPitchMin - Minimum blade pitch angles [rad] +42 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) + 4. 4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5 9. 9.5 10. 10.5 11. 11.9 12.4 12.9 13.4 13.9 14.4 14.9 15.4 15.9 16.4 16.9 17.4 17.9 18.4 18.9 19.4 19.9 20.4 20.9 21.4 21.9 22.4 22.9 23.4 23.9 24.4 24.9 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] +-0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03275873 0.00083377 0.02543348 0.0448834 0.0667768 0.07915202 0.09113854 0.10280435 0.11420819 0.12538567 0.13636556 0.14716567 0.15780447 0.1683014 0.178663 0.18889865 0.19901765 0.20902392 0.21892797 0.22873221 0.23844548 0.24806675 0.25759734 0.26705022 0.27641741 0.2857055 0.29491896 0.3040543 0.31311378 0.32210299 0.33103247 ! PS_BldPitchMin - Minimum blade pitch angles [rad] diff --git a/Test_Cases/5MW_OC4_ARsteady_Legacy/NRELOffshrBsline5MW_OC4DeepCwindSemi_ServoDyn.dat b/Test_Cases/5MW_OC4_ARsteady_Legacy/NRELOffshrBsline5MW_OC4DeepCwindSemi_ServoDyn.dat index cf8909fc0..26d16dbeb 100644 --- a/Test_Cases/5MW_OC4_ARsteady_Legacy/NRELOffshrBsline5MW_OC4DeepCwindSemi_ServoDyn.dat +++ b/Test_Cases/5MW_OC4_ARsteady_Legacy/NRELOffshrBsline5MW_OC4DeepCwindSemi_ServoDyn.dat @@ -63,7 +63,7 @@ False CompNTMD - Compute nacelle tuned mass damper {true/false} (fla False CompTTMD - Compute tower tuned mass damper {true/false} (flag) "unused" TTMDfile - Name of the file for tower tuned mass damper (quoted string) [unused when CompTTMD is false] ---------------------- BLADED INTERFACE ---------------------------------------- [used only with Bladed Interface] -"../5MW_Baseline/DISCON/DISCON_OC3Hywind.dll" DLL_FileName - Name/location of the dynamic library {.dll [Windows] or .so [Linux]} in the Bladed-DLL format (-) [used only with Bladed Interface] +"../5MW_Baseline/DISCON/DISCON.dll" DLL_FileName - Name/location of the dynamic library {.dll [Windows] or .so [Linux]} in the Bladed-DLL format (-) [used only with Bladed Interface] "DISCON.IN" DLL_InFile - Name of input file sent to the DLL (-) [used only with Bladed Interface] "DISCON" DLL_ProcName - Name of procedure in DLL to be called (-) [case sensitive; used only with DLL Interface] "default" DLL_DT - Communication interval for dynamic library (s) (or "default") [used only with Bladed Interface] diff --git a/Test_Cases/5MW_OC4_MH_Baseline/DISCON.IN b/Test_Cases/5MW_OC4_MH_Baseline/DISCON.IN index 99dee3c36..ef7726c15 100644 --- a/Test_Cases/5MW_OC4_MH_Baseline/DISCON.IN +++ b/Test_Cases/5MW_OC4_MH_Baseline/DISCON.IN @@ -1,5 +1,5 @@ ! Controller parameter input file for the 5MW_Land wind turbine -! - File written using NREL Baseline Controller tuning logic on 10/01/19 +! - File written using NREL Baseline Controller tuning logic on 10/07/19 !------- DEBUG ------------------------------------------------------------ 1 ! LoggingLevel - {0: write no debug files, 1: write standard output .dbg-file, 2: write standard output .dbg-file and complete avrSWAP-array .dbg2-file @@ -16,24 +16,24 @@ 1 ! PS_Mode - Peak shaving mode {0: no peak shaving, 1: implement peak shaving} !------- FILTERS ---------------------------------------------------------- -1.570796326 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz] +1.543417826848871 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz] 0 ! F_LPFDamping - Damping coefficient [used only when F_FilterType = 2] 0 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s] 0 0 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-] 0.5 ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [Hz]. !------- BLADE PITCH CONTROL ---------------------------------------------- -136 ! PC_GS_n - Amount of gain-scheduling table entries -0. 0.01843267 0.03012466 0.03938211 0.0473159 0.05438725 0.0608399 0.06682165 0.07243603 0.07774601 0.08280179 0.08764533 0.0922973 0.09678511 0.10113084 0.10534505 0.10944741 0.11344459 0.11734245 0.12115249 0.12488383 0.12853954 0.13212927 0.13565125 0.13911823 0.1425236 0.14587973 0.1491875 0.15244657 0.15566288 0.15883986 0.16197375 0.16506986 0.16813214 0.17115907 0.17415428 0.17711497 0.18004808 0.18295399 0.1858281 0.1886768 0.19150248 0.19430239 0.19707534 0.19983015 0.2025582 0.20526628 0.20795513 0.21062023 0.21326861 0.2158935 0.21850484 0.2210941 0.22366803 0.22622254 0.22876498 0.2312836 0.23379345 0.23628255 0.23875941 0.24122279 0.24366729 0.24610036 0.24852176 0.25092855 0.25332325 0.2557023 0.25807209 0.26042559 0.26276748 0.26510036 0.26742092 0.26973036 0.27202782 0.27431492 0.27658881 0.27885401 0.28110964 0.28336045 0.2855962 0.28782076 0.29003745 0.29224346 0.29444004 0.29663204 0.2988061 0.30097858 0.30314198 0.30529447 0.30743825 0.30958 0.31170708 0.31382687 0.31593631 0.3180419 0.32013786 0.32222978 0.32431029 0.32638663 0.32845309 0.33051357 0.33256802 0.33461455 0.33665611 0.33868284 0.34071023 0.34272963 0.34474196 0.34674528 0.34875073 0.35074041 0.35272695 0.35470654 0.35668277 0.35864961 0.36061312 0.36256798 0.36452117 0.36646633 0.36840178 0.37033735 0.3722649 0.37418622 0.37609996 0.37801477 0.37991806 0.38181864 0.38371323 0.38560453 0.38749153 0.38937202 0.39124103 0.39310673 0.39497577 0.39683082 0.39868511 ! PC_GS_angles - Gain-schedule table: pitch angles --0.02019147 -0.01950333 -0.01885443 -0.0182415 -0.01766165 -0.01711225 -0.01659098 -0.01609573 -0.01562459 -0.01517585 -0.01474794 -0.01433946 -0.0139491 -0.01357569 -0.01321814 -0.01287547 -0.01254676 -0.01223119 -0.01192797 -0.0116364 -0.01135581 -0.01108561 -0.01082521 -0.01057411 -0.0103318 -0.01009784 -0.00987181 -0.00965329 -0.00944194 -0.00923739 -0.00903933 -0.00884745 -0.00866147 -0.00848112 -0.00830614 -0.00813631 -0.0079714 -0.00781119 -0.00765549 -0.00750411 -0.00735688 -0.00721362 -0.00707417 -0.0069384 -0.00680614 -0.00667728 -0.00655167 -0.0064292 -0.00630975 -0.00619322 -0.00607949 -0.00596846 -0.00586005 -0.00575415 -0.00565069 -0.00554957 -0.00545073 -0.00535408 -0.00525955 -0.00516708 -0.00507659 -0.00498803 -0.00490133 -0.00481644 -0.00473329 -0.00465184 -0.00457204 -0.00449383 -0.00441716 -0.004342 -0.0042683 -0.00419602 -0.00412511 -0.00405553 -0.00398726 -0.00392025 -0.00385447 -0.00378988 -0.00372646 -0.00366417 -0.00360298 -0.00354286 -0.00348379 -0.00342574 -0.00336868 -0.00331258 -0.00325743 -0.00320319 -0.00314985 -0.00309739 -0.00304578 -0.002995 -0.00294503 -0.00289585 -0.00284745 -0.00279981 -0.0027529 -0.00270671 -0.00266123 -0.00261644 -0.00257232 -0.00252886 -0.00248604 -0.00244385 -0.00240228 -0.00236131 -0.00232093 -0.00228112 -0.00224188 -0.0022032 -0.00216505 -0.00212743 -0.00209033 -0.00205374 -0.00201765 -0.00198204 -0.00194691 -0.00191225 -0.00187805 -0.0018443 -0.00181099 -0.00177811 -0.00174566 -0.00171362 -0.00168199 -0.00165076 -0.00161992 -0.00158947 -0.00155939 -0.00152969 -0.00150035 -0.00147137 -0.00144274 -0.00141446 -0.00138651 -0.0013589 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains --0.00882307 -0.00856411 -0.00831992 -0.00808927 -0.00787106 -0.00766432 -0.00746816 -0.00728178 -0.00710449 -0.00693562 -0.0067746 -0.00662088 -0.00647398 -0.00633346 -0.00619891 -0.00606996 -0.00594626 -0.00582751 -0.0057134 -0.00560368 -0.00549809 -0.00539641 -0.00529842 -0.00520393 -0.00511274 -0.0050247 -0.00493964 -0.00485741 -0.00477787 -0.0047009 -0.00462637 -0.00455416 -0.00448417 -0.0044163 -0.00435046 -0.00428655 -0.00422449 -0.0041642 -0.00410561 -0.00404864 -0.00399324 -0.00393933 -0.00388685 -0.00383576 -0.00378599 -0.00373749 -0.00369023 -0.00364414 -0.00359919 -0.00355534 -0.00351254 -0.00347076 -0.00342996 -0.00339011 -0.00335117 -0.00331312 -0.00327593 -0.00323956 -0.00320399 -0.00316919 -0.00313514 -0.00310181 -0.00306918 -0.00303724 -0.00300595 -0.0029753 -0.00294526 -0.00291583 -0.00288698 -0.0028587 -0.00283096 -0.00280376 -0.00277708 -0.0027509 -0.0027252 -0.00269999 -0.00267523 -0.00265093 -0.00262706 -0.00260362 -0.00258059 -0.00255797 -0.00253574 -0.0025139 -0.00249242 -0.00247131 -0.00245056 -0.00243015 -0.00241008 -0.00239033 -0.00237091 -0.0023518 -0.002333 -0.00231449 -0.00229628 -0.00227835 -0.0022607 -0.00224332 -0.0022262 -0.00220935 -0.00219274 -0.00217639 -0.00216028 -0.0021444 -0.00212876 -0.00211334 -0.00209814 -0.00208316 -0.0020684 -0.00205384 -0.00203948 -0.00202533 -0.00201136 -0.00199759 -0.00198401 -0.00197061 -0.00195739 -0.00194435 -0.00193148 -0.00191878 -0.00190624 -0.00189387 -0.00188166 -0.0018696 -0.0018577 -0.00184595 -0.00183434 -0.00182288 -0.00181157 -0.00180039 -0.00178935 -0.00177844 -0.00176767 -0.00175702 -0.00174651 -0.00173612 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains -0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_KD - Gain-schedule table: pitch controller kd gains -0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) +27 ! PC_GS_n - Amount of gain-scheduling table entries +0.05852874 0.08586931 0.10789716 0.1271165 0.14453395 0.16067791 0.17585826 0.19027256 0.20405942 0.21730904 0.23010311 0.24249689 0.2545414 0.26626371 0.27770397 0.28889173 0.29983774 0.31057221 0.32109644 0.33144053 0.34160524 0.35160739 0.36145513 0.37115299 0.38071093 0.3901412 0.39943831 ! PC_GS_angles - Gain-schedule table: pitch angles +-0.01603382 -0.01396602 -0.01229584 -0.01091865 -0.00976358 -0.00878088 -0.00793467 -0.00719835 -0.00655181 -0.00597959 -0.00546956 -0.00501211 -0.00459951 -0.00422546 -0.00388481 -0.00357328 -0.00328728 -0.0030238 -0.00278028 -0.00255453 -0.00234468 -0.00214911 -0.0019664 -0.00179533 -0.00163481 -0.00148391 -0.00134179 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains +-0.00715561 -0.00639445 -0.00577965 -0.00527271 -0.00484752 -0.00448579 -0.0041743 -0.00390326 -0.00366527 -0.00345463 -0.00326689 -0.0030985 -0.00294662 -0.00280893 -0.00268354 -0.00256886 -0.00246359 -0.0023666 -0.00227696 -0.00219386 -0.00211661 -0.00204462 -0.00197737 -0.0019144 -0.00185531 -0.00179976 -0.00174745 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains +0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_KD - Gain-schedule table: pitch controller kd gains +0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) 1.5707 ! PC_MaxPit - Maximum physical pitch limit, [rad]. --0.087266 ! PC_MinPit - Minimum physical pitch limit, [rad]. +-0.087266 ! PC_MinPit - Minimum physical pitch limit, [rad]. 0.13962 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. -0.13962 ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. -122.90957 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. +122.90957658394467 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. 0.0 ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad] 0.003490658 ! PC_Switch - Angle above lowest minimum pitch angle for switch, [rad] 0 ! Z_EnableSine - Enable/disable sine pitch excitation, used to validate for dynamic induction control, will be removed later, [-] @@ -41,63 +41,64 @@ 0 ! Z_PitchFrequency - Frequency of sine pitch excitation, [rad/s] !------- INDIVIDUAL PITCH CONTROL ----------------------------------------- -0.087266 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] -1E-8 0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] -0.436332313 0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. -2.5 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] +0.0 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] +0.0 0.0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] +0.0 0.0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. +0.0 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] !------- VS TORQUE CONTROL ------------------------------------------------ -0.944 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-] -43093.55 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] -150000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. -48000.00 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. +94.4 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-] +43093.55150917838 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] +1500000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. +47402.906660096225 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. 0.0 ! VS_MinTq - Minimum generator (HSS side), [Nm]. -91.2109 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] -2.33228 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] -5.0E+06 ! VS_RtPwr - Wind turbine rated power [W] -43093.55 ! VS_RtTq - Rated torque, [Nm]. -120.113 ! VS_RefSpd - Rated generator speed [rad/s] +0.0 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] +0.0 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] +5000000 ! VS_RtPwr - Wind turbine rated power [W] +43093.55150917838 ! VS_RtTq - Rated torque, [Nm]. +122.90957658394467 ! VS_RefSpd - Rated generator speed [rad/s] 1 ! VS_n - Number of generator PI torque controller gains --835 ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) --164 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-889.094048017944 ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-172.0461874545648 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +7.4 ! VS_TSRopt - Power-maximizing region 2 tip-speed-ratio [rad]. !------- SETPOINT SMOOTHER --------------------------------------------- 30 ! SS_VSGainBias - Variable speed torque controller gain bias, [(rad/s)/rad]. 0.001 ! SS_PCGainBias - Collective pitch controller gain bias, [(rad/s)/Nm]. !------- WIND SPEED ESTIMATOR --------------------------------------------- -63.0 ! WE_BladeRadius - Blade length [m] +63.0 ! WE_BladeRadius - Blade length [m] 4 ! WE_CP_n - Amount of parameters in the Cp array -14.571319658214513 42.809556250371465 2.456512501523107 0.003127994078720 ! WE_CP - Parameters that define the parameterized CP(lambda) function -20 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] -97 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] -4.0469564E+07 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2] +0.0 0.0 0.0 0.0 ! WE_CP - Parameters that define the parameterized CP(lambda) function +0.0 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] +97.0 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] +40469564.444 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2] 1.225 ! WE_RhoAir - Air density, [kg m^-3] "../5MW_Baseline/Cp_Ct_Cq.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) -320 40 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios -23 ! WE_FOPoles_N - Number of first-order system poles used in EKF -3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] --0.0203 -0.0270 -0.0338 -0.0405 -0.0473 -0.0540 -0.0608 -0.0675 -0.0743 -0.0671 -0.0939 -0.1257 -0.1601 -0.1973 -0.2364 -0.2783 -0.3223 -0.3678 -0.4153 -0.4632 -0.5122 -0.5629 -0.6194 ! WE_FOPoles - First order system poles +320 40 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios +42 ! WE_FOPoles_N - Number of first-order system poles used in EKF + 4. 4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5 9. 9.5 10. 10.5 11. 11.9 12.4 12.9 13.4 13.9 14.4 14.9 15.4 15.9 16.4 16.9 17.4 17.9 18.4 18.9 19.4 19.9 20.4 20.9 21.4 21.9 22.4 22.9 23.4 23.9 24.4 24.9 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] +-0.02665071 -0.02998205 -0.03331339 -0.03664473 -0.03997606 -0.0433074 -0.04663874 -0.04997008 -0.05330142 -0.05663276 -0.0599641 -0.06329543 -0.06662677 -0.06995811 -0.07328945 -0.06321278 -0.07469151 -0.08828579 -0.10297822 -0.11842623 -0.13448765 -0.15120764 -0.168455 -0.18635293 -0.20483641 -0.22395323 -0.24348262 -0.26365771 -0.2842596 -0.30535287 -0.32683352 -0.3487705 -0.37113879 -0.39376001 -0.41675049 -0.44017539 -0.46432564 -0.4888057 -0.51273708 -0.53554138 -0.55932133 -0.58645605 ! WE_FOPoles - First order system poles !------- YAW CONTROL ------------------------------------------------------ -1.745329252 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] -0.17453 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] +0.0 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] +0.0 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] 1 ! Y_IPC_n - Number of controller gains (yaw-by-IPC) --0.064 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp --0.0008 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki -0.6283185 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. -1.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. -0.00000 ! Y_MErrSet - Yaw alignment error, set point [rad] -1.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] -0.016667 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] -0.0034906 ! Y_Rate - Yaw rate [rad/s] +0.0 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp +0.0 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki +0.0 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. +0.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. +0.0 ! Y_MErrSet - Yaw alignment error, set point [rad] +0.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] +0.0 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] +0.0 ! Y_Rate - Yaw rate [rad/s] !------- TOWER FORE-AFT DAMPING ------------------------------------------- -1 ! FA_KI - Integral gain for the fore-aft tower damper controller, -1 = off / >0 = on [rad s/m] - !NJA - Make this a flag -0.1 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] -0.087266 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] +0.0 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] +0.0 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] !------- PEAK SHAVING ------------------------------------------- -210 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) - 4. 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5. 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6. 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7. 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8. 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9. 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10. 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11. 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 12. 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 13. 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9 14. 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 14.9 15. 15.1 15.2 15.3 15.4 15.5 15.6 15.7 15.8 15.9 16. 16.1 16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 17. 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 18. 18.1 18.2 18.3 18.4 18.5 18.6 18.7 18.8 18.9 19. 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9 20. 20.1 20.2 20.3 20.4 20.5 20.6 20.7 20.8 20.9 21. 21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8 21.9 22. 22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8 22.9 23. 23.1 23.2 23.3 23.4 23.5 23.6 23.7 23.8 23.9 24. 24.1 24.2 24.3 24.4 24.5 24.6 24.7 24.8 24.9 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] --0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.02962541 -0.02230897 -0.01548946 -0.00915689 -0.00323985 0.00231633 0.00755924 0.01252064 0.01723337 0.02171883 0.02600713 0.03010809 0.03403543 0.03780094 0.04141197 0.0448834 0.04301121 0.04572902 0.04841563 0.05107257 0.05370175 0.05630738 0.05888727 0.06144604 0.06398009 0.06649806 0.06899513 0.07147461 0.07393783 0.0763848 0.07881322 0.08122765 0.08363032 0.08601684 0.0883911 0.09075519 0.09310191 0.09543925 0.09776725 0.10008031 0.1023843 0.10467939 0.10696282 0.10923552 0.11150342 0.11375564 0.11600427 0.118243 0.12047296 0.12269376 0.12490488 0.12711415 0.12931036 0.13150096 0.13368154 0.13585982 0.13803009 0.14018961 0.14234359 0.14449503 0.14663648 0.14877236 0.15089947 0.15302471 0.155141 0.15725402 0.15935959 0.16145813 0.16355132 0.16563963 0.16772494 0.1698033 0.17187555 0.17394191 0.17600722 0.17806499 0.18011745 0.18216164 0.18420446 0.18624091 0.18827655 0.19030833 0.19233052 0.19434885 0.19636357 0.19837593 0.20037883 0.20238383 0.20438058 0.20637502 0.20836358 0.21034732 0.21232885 0.21430571 0.21627763 0.21824694 0.22021326 0.22217222 0.22412743 0.22608217 0.22803347 0.22998291 0.23192295 0.23385759 0.23579759 0.23772869 0.23965799 0.24157841 0.24349944 0.24541689 0.24733152 0.24924241 0.25115108 0.25305646 0.25495687 0.25685379 0.25874221 0.26063593 0.26252242 0.26440664 0.26628698 0.26816398 0.27004031 0.27191147 0.27377527 0.27564404 0.27750921 0.27935984 0.28121741 0.28306997 0.2849209 0.28676631 0.28860828 0.29045122 0.29229007 0.29412417 0.29595331 0.29778415 0.29960719 0.30142759 0.30324755 0.30506054 0.30687771 0.30869136 0.31049896 0.31230004 0.31410149 0.3159051 0.3177027 0.31949741 0.32128578 0.32306955 ! PS_BldPitchMin - Minimum blade pitch angles [rad] +42 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) + 4. 4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5 9. 9.5 10. 10.5 11. 11.9 12.4 12.9 13.4 13.9 14.4 14.9 15.4 15.9 16.4 16.9 17.4 17.9 18.4 18.9 19.4 19.9 20.4 20.9 21.4 21.9 22.4 22.9 23.4 23.9 24.4 24.9 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] +-0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03275873 0.00083377 0.02543348 0.0448834 0.0667768 0.07915202 0.09113854 0.10280435 0.11420819 0.12538567 0.13636556 0.14716567 0.15780447 0.1683014 0.178663 0.18889865 0.19901765 0.20902392 0.21892797 0.22873221 0.23844548 0.24806675 0.25759734 0.26705022 0.27641741 0.2857055 0.29491896 0.3040543 0.31311378 0.32210299 0.33103247 ! PS_BldPitchMin - Minimum blade pitch angles [rad] diff --git a/Test_Cases/5MW_OC4_MH_Legacy/NRELOffshrBsline5MW_OC4DeepCwindSemi_ServoDyn.dat b/Test_Cases/5MW_OC4_MH_Legacy/NRELOffshrBsline5MW_OC4DeepCwindSemi_ServoDyn.dat index cf8909fc0..26d16dbeb 100644 --- a/Test_Cases/5MW_OC4_MH_Legacy/NRELOffshrBsline5MW_OC4DeepCwindSemi_ServoDyn.dat +++ b/Test_Cases/5MW_OC4_MH_Legacy/NRELOffshrBsline5MW_OC4DeepCwindSemi_ServoDyn.dat @@ -63,7 +63,7 @@ False CompNTMD - Compute nacelle tuned mass damper {true/false} (fla False CompTTMD - Compute tower tuned mass damper {true/false} (flag) "unused" TTMDfile - Name of the file for tower tuned mass damper (quoted string) [unused when CompTTMD is false] ---------------------- BLADED INTERFACE ---------------------------------------- [used only with Bladed Interface] -"../5MW_Baseline/DISCON/DISCON_OC3Hywind.dll" DLL_FileName - Name/location of the dynamic library {.dll [Windows] or .so [Linux]} in the Bladed-DLL format (-) [used only with Bladed Interface] +"../5MW_Baseline/DISCON/DISCON.dll" DLL_FileName - Name/location of the dynamic library {.dll [Windows] or .so [Linux]} in the Bladed-DLL format (-) [used only with Bladed Interface] "DISCON.IN" DLL_InFile - Name of input file sent to the DLL (-) [used only with Bladed Interface] "DISCON" DLL_ProcName - Name of procedure in DLL to be called (-) [case sensitive; used only with DLL Interface] "default" DLL_DT - Communication interval for dynamic library (s) (or "default") [used only with Bladed Interface] diff --git a/Test_Cases/5MW_OC4_NR_Baseline/DISCON.IN b/Test_Cases/5MW_OC4_NR_Baseline/DISCON.IN index 99dee3c36..ef7726c15 100644 --- a/Test_Cases/5MW_OC4_NR_Baseline/DISCON.IN +++ b/Test_Cases/5MW_OC4_NR_Baseline/DISCON.IN @@ -1,5 +1,5 @@ ! Controller parameter input file for the 5MW_Land wind turbine -! - File written using NREL Baseline Controller tuning logic on 10/01/19 +! - File written using NREL Baseline Controller tuning logic on 10/07/19 !------- DEBUG ------------------------------------------------------------ 1 ! LoggingLevel - {0: write no debug files, 1: write standard output .dbg-file, 2: write standard output .dbg-file and complete avrSWAP-array .dbg2-file @@ -16,24 +16,24 @@ 1 ! PS_Mode - Peak shaving mode {0: no peak shaving, 1: implement peak shaving} !------- FILTERS ---------------------------------------------------------- -1.570796326 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz] +1.543417826848871 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz] 0 ! F_LPFDamping - Damping coefficient [used only when F_FilterType = 2] 0 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s] 0 0 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-] 0.5 ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [Hz]. !------- BLADE PITCH CONTROL ---------------------------------------------- -136 ! PC_GS_n - Amount of gain-scheduling table entries -0. 0.01843267 0.03012466 0.03938211 0.0473159 0.05438725 0.0608399 0.06682165 0.07243603 0.07774601 0.08280179 0.08764533 0.0922973 0.09678511 0.10113084 0.10534505 0.10944741 0.11344459 0.11734245 0.12115249 0.12488383 0.12853954 0.13212927 0.13565125 0.13911823 0.1425236 0.14587973 0.1491875 0.15244657 0.15566288 0.15883986 0.16197375 0.16506986 0.16813214 0.17115907 0.17415428 0.17711497 0.18004808 0.18295399 0.1858281 0.1886768 0.19150248 0.19430239 0.19707534 0.19983015 0.2025582 0.20526628 0.20795513 0.21062023 0.21326861 0.2158935 0.21850484 0.2210941 0.22366803 0.22622254 0.22876498 0.2312836 0.23379345 0.23628255 0.23875941 0.24122279 0.24366729 0.24610036 0.24852176 0.25092855 0.25332325 0.2557023 0.25807209 0.26042559 0.26276748 0.26510036 0.26742092 0.26973036 0.27202782 0.27431492 0.27658881 0.27885401 0.28110964 0.28336045 0.2855962 0.28782076 0.29003745 0.29224346 0.29444004 0.29663204 0.2988061 0.30097858 0.30314198 0.30529447 0.30743825 0.30958 0.31170708 0.31382687 0.31593631 0.3180419 0.32013786 0.32222978 0.32431029 0.32638663 0.32845309 0.33051357 0.33256802 0.33461455 0.33665611 0.33868284 0.34071023 0.34272963 0.34474196 0.34674528 0.34875073 0.35074041 0.35272695 0.35470654 0.35668277 0.35864961 0.36061312 0.36256798 0.36452117 0.36646633 0.36840178 0.37033735 0.3722649 0.37418622 0.37609996 0.37801477 0.37991806 0.38181864 0.38371323 0.38560453 0.38749153 0.38937202 0.39124103 0.39310673 0.39497577 0.39683082 0.39868511 ! PC_GS_angles - Gain-schedule table: pitch angles --0.02019147 -0.01950333 -0.01885443 -0.0182415 -0.01766165 -0.01711225 -0.01659098 -0.01609573 -0.01562459 -0.01517585 -0.01474794 -0.01433946 -0.0139491 -0.01357569 -0.01321814 -0.01287547 -0.01254676 -0.01223119 -0.01192797 -0.0116364 -0.01135581 -0.01108561 -0.01082521 -0.01057411 -0.0103318 -0.01009784 -0.00987181 -0.00965329 -0.00944194 -0.00923739 -0.00903933 -0.00884745 -0.00866147 -0.00848112 -0.00830614 -0.00813631 -0.0079714 -0.00781119 -0.00765549 -0.00750411 -0.00735688 -0.00721362 -0.00707417 -0.0069384 -0.00680614 -0.00667728 -0.00655167 -0.0064292 -0.00630975 -0.00619322 -0.00607949 -0.00596846 -0.00586005 -0.00575415 -0.00565069 -0.00554957 -0.00545073 -0.00535408 -0.00525955 -0.00516708 -0.00507659 -0.00498803 -0.00490133 -0.00481644 -0.00473329 -0.00465184 -0.00457204 -0.00449383 -0.00441716 -0.004342 -0.0042683 -0.00419602 -0.00412511 -0.00405553 -0.00398726 -0.00392025 -0.00385447 -0.00378988 -0.00372646 -0.00366417 -0.00360298 -0.00354286 -0.00348379 -0.00342574 -0.00336868 -0.00331258 -0.00325743 -0.00320319 -0.00314985 -0.00309739 -0.00304578 -0.002995 -0.00294503 -0.00289585 -0.00284745 -0.00279981 -0.0027529 -0.00270671 -0.00266123 -0.00261644 -0.00257232 -0.00252886 -0.00248604 -0.00244385 -0.00240228 -0.00236131 -0.00232093 -0.00228112 -0.00224188 -0.0022032 -0.00216505 -0.00212743 -0.00209033 -0.00205374 -0.00201765 -0.00198204 -0.00194691 -0.00191225 -0.00187805 -0.0018443 -0.00181099 -0.00177811 -0.00174566 -0.00171362 -0.00168199 -0.00165076 -0.00161992 -0.00158947 -0.00155939 -0.00152969 -0.00150035 -0.00147137 -0.00144274 -0.00141446 -0.00138651 -0.0013589 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains --0.00882307 -0.00856411 -0.00831992 -0.00808927 -0.00787106 -0.00766432 -0.00746816 -0.00728178 -0.00710449 -0.00693562 -0.0067746 -0.00662088 -0.00647398 -0.00633346 -0.00619891 -0.00606996 -0.00594626 -0.00582751 -0.0057134 -0.00560368 -0.00549809 -0.00539641 -0.00529842 -0.00520393 -0.00511274 -0.0050247 -0.00493964 -0.00485741 -0.00477787 -0.0047009 -0.00462637 -0.00455416 -0.00448417 -0.0044163 -0.00435046 -0.00428655 -0.00422449 -0.0041642 -0.00410561 -0.00404864 -0.00399324 -0.00393933 -0.00388685 -0.00383576 -0.00378599 -0.00373749 -0.00369023 -0.00364414 -0.00359919 -0.00355534 -0.00351254 -0.00347076 -0.00342996 -0.00339011 -0.00335117 -0.00331312 -0.00327593 -0.00323956 -0.00320399 -0.00316919 -0.00313514 -0.00310181 -0.00306918 -0.00303724 -0.00300595 -0.0029753 -0.00294526 -0.00291583 -0.00288698 -0.0028587 -0.00283096 -0.00280376 -0.00277708 -0.0027509 -0.0027252 -0.00269999 -0.00267523 -0.00265093 -0.00262706 -0.00260362 -0.00258059 -0.00255797 -0.00253574 -0.0025139 -0.00249242 -0.00247131 -0.00245056 -0.00243015 -0.00241008 -0.00239033 -0.00237091 -0.0023518 -0.002333 -0.00231449 -0.00229628 -0.00227835 -0.0022607 -0.00224332 -0.0022262 -0.00220935 -0.00219274 -0.00217639 -0.00216028 -0.0021444 -0.00212876 -0.00211334 -0.00209814 -0.00208316 -0.0020684 -0.00205384 -0.00203948 -0.00202533 -0.00201136 -0.00199759 -0.00198401 -0.00197061 -0.00195739 -0.00194435 -0.00193148 -0.00191878 -0.00190624 -0.00189387 -0.00188166 -0.0018696 -0.0018577 -0.00184595 -0.00183434 -0.00182288 -0.00181157 -0.00180039 -0.00178935 -0.00177844 -0.00176767 -0.00175702 -0.00174651 -0.00173612 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains -0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_KD - Gain-schedule table: pitch controller kd gains -0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) +27 ! PC_GS_n - Amount of gain-scheduling table entries +0.05852874 0.08586931 0.10789716 0.1271165 0.14453395 0.16067791 0.17585826 0.19027256 0.20405942 0.21730904 0.23010311 0.24249689 0.2545414 0.26626371 0.27770397 0.28889173 0.29983774 0.31057221 0.32109644 0.33144053 0.34160524 0.35160739 0.36145513 0.37115299 0.38071093 0.3901412 0.39943831 ! PC_GS_angles - Gain-schedule table: pitch angles +-0.01603382 -0.01396602 -0.01229584 -0.01091865 -0.00976358 -0.00878088 -0.00793467 -0.00719835 -0.00655181 -0.00597959 -0.00546956 -0.00501211 -0.00459951 -0.00422546 -0.00388481 -0.00357328 -0.00328728 -0.0030238 -0.00278028 -0.00255453 -0.00234468 -0.00214911 -0.0019664 -0.00179533 -0.00163481 -0.00148391 -0.00134179 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains +-0.00715561 -0.00639445 -0.00577965 -0.00527271 -0.00484752 -0.00448579 -0.0041743 -0.00390326 -0.00366527 -0.00345463 -0.00326689 -0.0030985 -0.00294662 -0.00280893 -0.00268354 -0.00256886 -0.00246359 -0.0023666 -0.00227696 -0.00219386 -0.00211661 -0.00204462 -0.00197737 -0.0019144 -0.00185531 -0.00179976 -0.00174745 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains +0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_KD - Gain-schedule table: pitch controller kd gains +0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) 1.5707 ! PC_MaxPit - Maximum physical pitch limit, [rad]. --0.087266 ! PC_MinPit - Minimum physical pitch limit, [rad]. +-0.087266 ! PC_MinPit - Minimum physical pitch limit, [rad]. 0.13962 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. -0.13962 ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. -122.90957 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. +122.90957658394467 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. 0.0 ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad] 0.003490658 ! PC_Switch - Angle above lowest minimum pitch angle for switch, [rad] 0 ! Z_EnableSine - Enable/disable sine pitch excitation, used to validate for dynamic induction control, will be removed later, [-] @@ -41,63 +41,64 @@ 0 ! Z_PitchFrequency - Frequency of sine pitch excitation, [rad/s] !------- INDIVIDUAL PITCH CONTROL ----------------------------------------- -0.087266 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] -1E-8 0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] -0.436332313 0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. -2.5 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] +0.0 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] +0.0 0.0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] +0.0 0.0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. +0.0 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] !------- VS TORQUE CONTROL ------------------------------------------------ -0.944 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-] -43093.55 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] -150000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. -48000.00 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. +94.4 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-] +43093.55150917838 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] +1500000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. +47402.906660096225 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. 0.0 ! VS_MinTq - Minimum generator (HSS side), [Nm]. -91.2109 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] -2.33228 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] -5.0E+06 ! VS_RtPwr - Wind turbine rated power [W] -43093.55 ! VS_RtTq - Rated torque, [Nm]. -120.113 ! VS_RefSpd - Rated generator speed [rad/s] +0.0 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] +0.0 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] +5000000 ! VS_RtPwr - Wind turbine rated power [W] +43093.55150917838 ! VS_RtTq - Rated torque, [Nm]. +122.90957658394467 ! VS_RefSpd - Rated generator speed [rad/s] 1 ! VS_n - Number of generator PI torque controller gains --835 ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) --164 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-889.094048017944 ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-172.0461874545648 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +7.4 ! VS_TSRopt - Power-maximizing region 2 tip-speed-ratio [rad]. !------- SETPOINT SMOOTHER --------------------------------------------- 30 ! SS_VSGainBias - Variable speed torque controller gain bias, [(rad/s)/rad]. 0.001 ! SS_PCGainBias - Collective pitch controller gain bias, [(rad/s)/Nm]. !------- WIND SPEED ESTIMATOR --------------------------------------------- -63.0 ! WE_BladeRadius - Blade length [m] +63.0 ! WE_BladeRadius - Blade length [m] 4 ! WE_CP_n - Amount of parameters in the Cp array -14.571319658214513 42.809556250371465 2.456512501523107 0.003127994078720 ! WE_CP - Parameters that define the parameterized CP(lambda) function -20 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] -97 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] -4.0469564E+07 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2] +0.0 0.0 0.0 0.0 ! WE_CP - Parameters that define the parameterized CP(lambda) function +0.0 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] +97.0 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] +40469564.444 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2] 1.225 ! WE_RhoAir - Air density, [kg m^-3] "../5MW_Baseline/Cp_Ct_Cq.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) -320 40 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios -23 ! WE_FOPoles_N - Number of first-order system poles used in EKF -3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] --0.0203 -0.0270 -0.0338 -0.0405 -0.0473 -0.0540 -0.0608 -0.0675 -0.0743 -0.0671 -0.0939 -0.1257 -0.1601 -0.1973 -0.2364 -0.2783 -0.3223 -0.3678 -0.4153 -0.4632 -0.5122 -0.5629 -0.6194 ! WE_FOPoles - First order system poles +320 40 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios +42 ! WE_FOPoles_N - Number of first-order system poles used in EKF + 4. 4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5 9. 9.5 10. 10.5 11. 11.9 12.4 12.9 13.4 13.9 14.4 14.9 15.4 15.9 16.4 16.9 17.4 17.9 18.4 18.9 19.4 19.9 20.4 20.9 21.4 21.9 22.4 22.9 23.4 23.9 24.4 24.9 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] +-0.02665071 -0.02998205 -0.03331339 -0.03664473 -0.03997606 -0.0433074 -0.04663874 -0.04997008 -0.05330142 -0.05663276 -0.0599641 -0.06329543 -0.06662677 -0.06995811 -0.07328945 -0.06321278 -0.07469151 -0.08828579 -0.10297822 -0.11842623 -0.13448765 -0.15120764 -0.168455 -0.18635293 -0.20483641 -0.22395323 -0.24348262 -0.26365771 -0.2842596 -0.30535287 -0.32683352 -0.3487705 -0.37113879 -0.39376001 -0.41675049 -0.44017539 -0.46432564 -0.4888057 -0.51273708 -0.53554138 -0.55932133 -0.58645605 ! WE_FOPoles - First order system poles !------- YAW CONTROL ------------------------------------------------------ -1.745329252 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] -0.17453 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] +0.0 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] +0.0 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] 1 ! Y_IPC_n - Number of controller gains (yaw-by-IPC) --0.064 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp --0.0008 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki -0.6283185 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. -1.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. -0.00000 ! Y_MErrSet - Yaw alignment error, set point [rad] -1.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] -0.016667 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] -0.0034906 ! Y_Rate - Yaw rate [rad/s] +0.0 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp +0.0 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki +0.0 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. +0.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. +0.0 ! Y_MErrSet - Yaw alignment error, set point [rad] +0.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] +0.0 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] +0.0 ! Y_Rate - Yaw rate [rad/s] !------- TOWER FORE-AFT DAMPING ------------------------------------------- -1 ! FA_KI - Integral gain for the fore-aft tower damper controller, -1 = off / >0 = on [rad s/m] - !NJA - Make this a flag -0.1 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] -0.087266 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] +0.0 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] +0.0 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] !------- PEAK SHAVING ------------------------------------------- -210 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) - 4. 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5. 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6. 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7. 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8. 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9. 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10. 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11. 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 12. 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 13. 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9 14. 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 14.9 15. 15.1 15.2 15.3 15.4 15.5 15.6 15.7 15.8 15.9 16. 16.1 16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 17. 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 18. 18.1 18.2 18.3 18.4 18.5 18.6 18.7 18.8 18.9 19. 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9 20. 20.1 20.2 20.3 20.4 20.5 20.6 20.7 20.8 20.9 21. 21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8 21.9 22. 22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8 22.9 23. 23.1 23.2 23.3 23.4 23.5 23.6 23.7 23.8 23.9 24. 24.1 24.2 24.3 24.4 24.5 24.6 24.7 24.8 24.9 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] --0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.02962541 -0.02230897 -0.01548946 -0.00915689 -0.00323985 0.00231633 0.00755924 0.01252064 0.01723337 0.02171883 0.02600713 0.03010809 0.03403543 0.03780094 0.04141197 0.0448834 0.04301121 0.04572902 0.04841563 0.05107257 0.05370175 0.05630738 0.05888727 0.06144604 0.06398009 0.06649806 0.06899513 0.07147461 0.07393783 0.0763848 0.07881322 0.08122765 0.08363032 0.08601684 0.0883911 0.09075519 0.09310191 0.09543925 0.09776725 0.10008031 0.1023843 0.10467939 0.10696282 0.10923552 0.11150342 0.11375564 0.11600427 0.118243 0.12047296 0.12269376 0.12490488 0.12711415 0.12931036 0.13150096 0.13368154 0.13585982 0.13803009 0.14018961 0.14234359 0.14449503 0.14663648 0.14877236 0.15089947 0.15302471 0.155141 0.15725402 0.15935959 0.16145813 0.16355132 0.16563963 0.16772494 0.1698033 0.17187555 0.17394191 0.17600722 0.17806499 0.18011745 0.18216164 0.18420446 0.18624091 0.18827655 0.19030833 0.19233052 0.19434885 0.19636357 0.19837593 0.20037883 0.20238383 0.20438058 0.20637502 0.20836358 0.21034732 0.21232885 0.21430571 0.21627763 0.21824694 0.22021326 0.22217222 0.22412743 0.22608217 0.22803347 0.22998291 0.23192295 0.23385759 0.23579759 0.23772869 0.23965799 0.24157841 0.24349944 0.24541689 0.24733152 0.24924241 0.25115108 0.25305646 0.25495687 0.25685379 0.25874221 0.26063593 0.26252242 0.26440664 0.26628698 0.26816398 0.27004031 0.27191147 0.27377527 0.27564404 0.27750921 0.27935984 0.28121741 0.28306997 0.2849209 0.28676631 0.28860828 0.29045122 0.29229007 0.29412417 0.29595331 0.29778415 0.29960719 0.30142759 0.30324755 0.30506054 0.30687771 0.30869136 0.31049896 0.31230004 0.31410149 0.3159051 0.3177027 0.31949741 0.32128578 0.32306955 ! PS_BldPitchMin - Minimum blade pitch angles [rad] +42 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) + 4. 4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5 9. 9.5 10. 10.5 11. 11.9 12.4 12.9 13.4 13.9 14.4 14.9 15.4 15.9 16.4 16.9 17.4 17.9 18.4 18.9 19.4 19.9 20.4 20.9 21.4 21.9 22.4 22.9 23.4 23.9 24.4 24.9 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] +-0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03275873 0.00083377 0.02543348 0.0448834 0.0667768 0.07915202 0.09113854 0.10280435 0.11420819 0.12538567 0.13636556 0.14716567 0.15780447 0.1683014 0.178663 0.18889865 0.19901765 0.20902392 0.21892797 0.22873221 0.23844548 0.24806675 0.25759734 0.26705022 0.27641741 0.2857055 0.29491896 0.3040543 0.31311378 0.32210299 0.33103247 ! PS_BldPitchMin - Minimum blade pitch angles [rad] diff --git a/Test_Cases/5MW_OC4_NR_Legacy/NRELOffshrBsline5MW_OC4DeepCwindSemi_ServoDyn.dat b/Test_Cases/5MW_OC4_NR_Legacy/NRELOffshrBsline5MW_OC4DeepCwindSemi_ServoDyn.dat index cf8909fc0..26d16dbeb 100644 --- a/Test_Cases/5MW_OC4_NR_Legacy/NRELOffshrBsline5MW_OC4DeepCwindSemi_ServoDyn.dat +++ b/Test_Cases/5MW_OC4_NR_Legacy/NRELOffshrBsline5MW_OC4DeepCwindSemi_ServoDyn.dat @@ -63,7 +63,7 @@ False CompNTMD - Compute nacelle tuned mass damper {true/false} (fla False CompTTMD - Compute tower tuned mass damper {true/false} (flag) "unused" TTMDfile - Name of the file for tower tuned mass damper (quoted string) [unused when CompTTMD is false] ---------------------- BLADED INTERFACE ---------------------------------------- [used only with Bladed Interface] -"../5MW_Baseline/DISCON/DISCON_OC3Hywind.dll" DLL_FileName - Name/location of the dynamic library {.dll [Windows] or .so [Linux]} in the Bladed-DLL format (-) [used only with Bladed Interface] +"../5MW_Baseline/DISCON/DISCON.dll" DLL_FileName - Name/location of the dynamic library {.dll [Windows] or .so [Linux]} in the Bladed-DLL format (-) [used only with Bladed Interface] "DISCON.IN" DLL_InFile - Name of input file sent to the DLL (-) [used only with Bladed Interface] "DISCON" DLL_ProcName - Name of procedure in DLL to be called (-) [case sensitive; used only with DLL Interface] "default" DLL_DT - Communication interval for dynamic library (s) (or "default") [used only with Bladed Interface] diff --git a/Test_Cases/5MW_Step_Baseline/DISCON.IN b/Test_Cases/5MW_Step_Baseline/DISCON.IN index 99dee3c36..ef7726c15 100644 --- a/Test_Cases/5MW_Step_Baseline/DISCON.IN +++ b/Test_Cases/5MW_Step_Baseline/DISCON.IN @@ -1,5 +1,5 @@ ! Controller parameter input file for the 5MW_Land wind turbine -! - File written using NREL Baseline Controller tuning logic on 10/01/19 +! - File written using NREL Baseline Controller tuning logic on 10/07/19 !------- DEBUG ------------------------------------------------------------ 1 ! LoggingLevel - {0: write no debug files, 1: write standard output .dbg-file, 2: write standard output .dbg-file and complete avrSWAP-array .dbg2-file @@ -16,24 +16,24 @@ 1 ! PS_Mode - Peak shaving mode {0: no peak shaving, 1: implement peak shaving} !------- FILTERS ---------------------------------------------------------- -1.570796326 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz] +1.543417826848871 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [Hz] 0 ! F_LPFDamping - Damping coefficient [used only when F_FilterType = 2] 0 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s] 0 0 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-] 0.5 ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [Hz]. !------- BLADE PITCH CONTROL ---------------------------------------------- -136 ! PC_GS_n - Amount of gain-scheduling table entries -0. 0.01843267 0.03012466 0.03938211 0.0473159 0.05438725 0.0608399 0.06682165 0.07243603 0.07774601 0.08280179 0.08764533 0.0922973 0.09678511 0.10113084 0.10534505 0.10944741 0.11344459 0.11734245 0.12115249 0.12488383 0.12853954 0.13212927 0.13565125 0.13911823 0.1425236 0.14587973 0.1491875 0.15244657 0.15566288 0.15883986 0.16197375 0.16506986 0.16813214 0.17115907 0.17415428 0.17711497 0.18004808 0.18295399 0.1858281 0.1886768 0.19150248 0.19430239 0.19707534 0.19983015 0.2025582 0.20526628 0.20795513 0.21062023 0.21326861 0.2158935 0.21850484 0.2210941 0.22366803 0.22622254 0.22876498 0.2312836 0.23379345 0.23628255 0.23875941 0.24122279 0.24366729 0.24610036 0.24852176 0.25092855 0.25332325 0.2557023 0.25807209 0.26042559 0.26276748 0.26510036 0.26742092 0.26973036 0.27202782 0.27431492 0.27658881 0.27885401 0.28110964 0.28336045 0.2855962 0.28782076 0.29003745 0.29224346 0.29444004 0.29663204 0.2988061 0.30097858 0.30314198 0.30529447 0.30743825 0.30958 0.31170708 0.31382687 0.31593631 0.3180419 0.32013786 0.32222978 0.32431029 0.32638663 0.32845309 0.33051357 0.33256802 0.33461455 0.33665611 0.33868284 0.34071023 0.34272963 0.34474196 0.34674528 0.34875073 0.35074041 0.35272695 0.35470654 0.35668277 0.35864961 0.36061312 0.36256798 0.36452117 0.36646633 0.36840178 0.37033735 0.3722649 0.37418622 0.37609996 0.37801477 0.37991806 0.38181864 0.38371323 0.38560453 0.38749153 0.38937202 0.39124103 0.39310673 0.39497577 0.39683082 0.39868511 ! PC_GS_angles - Gain-schedule table: pitch angles --0.02019147 -0.01950333 -0.01885443 -0.0182415 -0.01766165 -0.01711225 -0.01659098 -0.01609573 -0.01562459 -0.01517585 -0.01474794 -0.01433946 -0.0139491 -0.01357569 -0.01321814 -0.01287547 -0.01254676 -0.01223119 -0.01192797 -0.0116364 -0.01135581 -0.01108561 -0.01082521 -0.01057411 -0.0103318 -0.01009784 -0.00987181 -0.00965329 -0.00944194 -0.00923739 -0.00903933 -0.00884745 -0.00866147 -0.00848112 -0.00830614 -0.00813631 -0.0079714 -0.00781119 -0.00765549 -0.00750411 -0.00735688 -0.00721362 -0.00707417 -0.0069384 -0.00680614 -0.00667728 -0.00655167 -0.0064292 -0.00630975 -0.00619322 -0.00607949 -0.00596846 -0.00586005 -0.00575415 -0.00565069 -0.00554957 -0.00545073 -0.00535408 -0.00525955 -0.00516708 -0.00507659 -0.00498803 -0.00490133 -0.00481644 -0.00473329 -0.00465184 -0.00457204 -0.00449383 -0.00441716 -0.004342 -0.0042683 -0.00419602 -0.00412511 -0.00405553 -0.00398726 -0.00392025 -0.00385447 -0.00378988 -0.00372646 -0.00366417 -0.00360298 -0.00354286 -0.00348379 -0.00342574 -0.00336868 -0.00331258 -0.00325743 -0.00320319 -0.00314985 -0.00309739 -0.00304578 -0.002995 -0.00294503 -0.00289585 -0.00284745 -0.00279981 -0.0027529 -0.00270671 -0.00266123 -0.00261644 -0.00257232 -0.00252886 -0.00248604 -0.00244385 -0.00240228 -0.00236131 -0.00232093 -0.00228112 -0.00224188 -0.0022032 -0.00216505 -0.00212743 -0.00209033 -0.00205374 -0.00201765 -0.00198204 -0.00194691 -0.00191225 -0.00187805 -0.0018443 -0.00181099 -0.00177811 -0.00174566 -0.00171362 -0.00168199 -0.00165076 -0.00161992 -0.00158947 -0.00155939 -0.00152969 -0.00150035 -0.00147137 -0.00144274 -0.00141446 -0.00138651 -0.0013589 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains --0.00882307 -0.00856411 -0.00831992 -0.00808927 -0.00787106 -0.00766432 -0.00746816 -0.00728178 -0.00710449 -0.00693562 -0.0067746 -0.00662088 -0.00647398 -0.00633346 -0.00619891 -0.00606996 -0.00594626 -0.00582751 -0.0057134 -0.00560368 -0.00549809 -0.00539641 -0.00529842 -0.00520393 -0.00511274 -0.0050247 -0.00493964 -0.00485741 -0.00477787 -0.0047009 -0.00462637 -0.00455416 -0.00448417 -0.0044163 -0.00435046 -0.00428655 -0.00422449 -0.0041642 -0.00410561 -0.00404864 -0.00399324 -0.00393933 -0.00388685 -0.00383576 -0.00378599 -0.00373749 -0.00369023 -0.00364414 -0.00359919 -0.00355534 -0.00351254 -0.00347076 -0.00342996 -0.00339011 -0.00335117 -0.00331312 -0.00327593 -0.00323956 -0.00320399 -0.00316919 -0.00313514 -0.00310181 -0.00306918 -0.00303724 -0.00300595 -0.0029753 -0.00294526 -0.00291583 -0.00288698 -0.0028587 -0.00283096 -0.00280376 -0.00277708 -0.0027509 -0.0027252 -0.00269999 -0.00267523 -0.00265093 -0.00262706 -0.00260362 -0.00258059 -0.00255797 -0.00253574 -0.0025139 -0.00249242 -0.00247131 -0.00245056 -0.00243015 -0.00241008 -0.00239033 -0.00237091 -0.0023518 -0.002333 -0.00231449 -0.00229628 -0.00227835 -0.0022607 -0.00224332 -0.0022262 -0.00220935 -0.00219274 -0.00217639 -0.00216028 -0.0021444 -0.00212876 -0.00211334 -0.00209814 -0.00208316 -0.0020684 -0.00205384 -0.00203948 -0.00202533 -0.00201136 -0.00199759 -0.00198401 -0.00197061 -0.00195739 -0.00194435 -0.00193148 -0.00191878 -0.00190624 -0.00189387 -0.00188166 -0.0018696 -0.0018577 -0.00184595 -0.00183434 -0.00182288 -0.00181157 -0.00180039 -0.00178935 -0.00177844 -0.00176767 -0.00175702 -0.00174651 -0.00173612 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains -0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_KD - Gain-schedule table: pitch controller kd gains -0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) +27 ! PC_GS_n - Amount of gain-scheduling table entries +0.05852874 0.08586931 0.10789716 0.1271165 0.14453395 0.16067791 0.17585826 0.19027256 0.20405942 0.21730904 0.23010311 0.24249689 0.2545414 0.26626371 0.27770397 0.28889173 0.29983774 0.31057221 0.32109644 0.33144053 0.34160524 0.35160739 0.36145513 0.37115299 0.38071093 0.3901412 0.39943831 ! PC_GS_angles - Gain-schedule table: pitch angles +-0.01603382 -0.01396602 -0.01229584 -0.01091865 -0.00976358 -0.00878088 -0.00793467 -0.00719835 -0.00655181 -0.00597959 -0.00546956 -0.00501211 -0.00459951 -0.00422546 -0.00388481 -0.00357328 -0.00328728 -0.0030238 -0.00278028 -0.00255453 -0.00234468 -0.00214911 -0.0019664 -0.00179533 -0.00163481 -0.00148391 -0.00134179 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains +-0.00715561 -0.00639445 -0.00577965 -0.00527271 -0.00484752 -0.00448579 -0.0041743 -0.00390326 -0.00366527 -0.00345463 -0.00326689 -0.0030985 -0.00294662 -0.00280893 -0.00268354 -0.00256886 -0.00246359 -0.0023666 -0.00227696 -0.00219386 -0.00211661 -0.00204462 -0.00197737 -0.0019144 -0.00185531 -0.00179976 -0.00174745 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains +0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_KD - Gain-schedule table: pitch controller kd gains +0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) 1.5707 ! PC_MaxPit - Maximum physical pitch limit, [rad]. --0.087266 ! PC_MinPit - Minimum physical pitch limit, [rad]. +-0.087266 ! PC_MinPit - Minimum physical pitch limit, [rad]. 0.13962 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. -0.13962 ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. -122.90957 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. +122.90957658394467 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. 0.0 ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad] 0.003490658 ! PC_Switch - Angle above lowest minimum pitch angle for switch, [rad] 0 ! Z_EnableSine - Enable/disable sine pitch excitation, used to validate for dynamic induction control, will be removed later, [-] @@ -41,63 +41,64 @@ 0 ! Z_PitchFrequency - Frequency of sine pitch excitation, [rad/s] !------- INDIVIDUAL PITCH CONTROL ----------------------------------------- -0.087266 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] -1E-8 0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] -0.436332313 0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. -2.5 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] +0.0 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] +0.0 0.0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] +0.0 0.0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. +0.0 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] !------- VS TORQUE CONTROL ------------------------------------------------ -0.944 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-] -43093.55 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] -150000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. -48000.00 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. +94.4 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-] +43093.55150917838 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] +1500000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. +47402.906660096225 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. 0.0 ! VS_MinTq - Minimum generator (HSS side), [Nm]. -91.2109 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] -2.33228 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] -5.0E+06 ! VS_RtPwr - Wind turbine rated power [W] -43093.55 ! VS_RtTq - Rated torque, [Nm]. -120.113 ! VS_RefSpd - Rated generator speed [rad/s] +0.0 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] +0.0 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] +5000000 ! VS_RtPwr - Wind turbine rated power [W] +43093.55150917838 ! VS_RtTq - Rated torque, [Nm]. +122.90957658394467 ! VS_RefSpd - Rated generator speed [rad/s] 1 ! VS_n - Number of generator PI torque controller gains --835 ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) --164 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-889.094048017944 ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-172.0461874545648 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +7.4 ! VS_TSRopt - Power-maximizing region 2 tip-speed-ratio [rad]. !------- SETPOINT SMOOTHER --------------------------------------------- 30 ! SS_VSGainBias - Variable speed torque controller gain bias, [(rad/s)/rad]. 0.001 ! SS_PCGainBias - Collective pitch controller gain bias, [(rad/s)/Nm]. !------- WIND SPEED ESTIMATOR --------------------------------------------- -63.0 ! WE_BladeRadius - Blade length [m] +63.0 ! WE_BladeRadius - Blade length [m] 4 ! WE_CP_n - Amount of parameters in the Cp array -14.571319658214513 42.809556250371465 2.456512501523107 0.003127994078720 ! WE_CP - Parameters that define the parameterized CP(lambda) function -20 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] -97 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] -4.0469564E+07 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2] +0.0 0.0 0.0 0.0 ! WE_CP - Parameters that define the parameterized CP(lambda) function +0.0 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] +97.0 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] +40469564.444 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2] 1.225 ! WE_RhoAir - Air density, [kg m^-3] "../5MW_Baseline/Cp_Ct_Cq.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) -320 40 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios -23 ! WE_FOPoles_N - Number of first-order system poles used in EKF -3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] --0.0203 -0.0270 -0.0338 -0.0405 -0.0473 -0.0540 -0.0608 -0.0675 -0.0743 -0.0671 -0.0939 -0.1257 -0.1601 -0.1973 -0.2364 -0.2783 -0.3223 -0.3678 -0.4153 -0.4632 -0.5122 -0.5629 -0.6194 ! WE_FOPoles - First order system poles +320 40 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios +42 ! WE_FOPoles_N - Number of first-order system poles used in EKF + 4. 4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5 9. 9.5 10. 10.5 11. 11.9 12.4 12.9 13.4 13.9 14.4 14.9 15.4 15.9 16.4 16.9 17.4 17.9 18.4 18.9 19.4 19.9 20.4 20.9 21.4 21.9 22.4 22.9 23.4 23.9 24.4 24.9 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] +-0.02665071 -0.02998205 -0.03331339 -0.03664473 -0.03997606 -0.0433074 -0.04663874 -0.04997008 -0.05330142 -0.05663276 -0.0599641 -0.06329543 -0.06662677 -0.06995811 -0.07328945 -0.06321278 -0.07469151 -0.08828579 -0.10297822 -0.11842623 -0.13448765 -0.15120764 -0.168455 -0.18635293 -0.20483641 -0.22395323 -0.24348262 -0.26365771 -0.2842596 -0.30535287 -0.32683352 -0.3487705 -0.37113879 -0.39376001 -0.41675049 -0.44017539 -0.46432564 -0.4888057 -0.51273708 -0.53554138 -0.55932133 -0.58645605 ! WE_FOPoles - First order system poles !------- YAW CONTROL ------------------------------------------------------ -1.745329252 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] -0.17453 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] +0.0 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] +0.0 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] 1 ! Y_IPC_n - Number of controller gains (yaw-by-IPC) --0.064 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp --0.0008 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki -0.6283185 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. -1.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. -0.00000 ! Y_MErrSet - Yaw alignment error, set point [rad] -1.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] -0.016667 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] -0.0034906 ! Y_Rate - Yaw rate [rad/s] +0.0 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp +0.0 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki +0.0 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. +0.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. +0.0 ! Y_MErrSet - Yaw alignment error, set point [rad] +0.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] +0.0 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] +0.0 ! Y_Rate - Yaw rate [rad/s] !------- TOWER FORE-AFT DAMPING ------------------------------------------- -1 ! FA_KI - Integral gain for the fore-aft tower damper controller, -1 = off / >0 = on [rad s/m] - !NJA - Make this a flag -0.1 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] -0.087266 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] +0.0 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] +0.0 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] !------- PEAK SHAVING ------------------------------------------- -210 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) - 4. 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5. 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6. 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7. 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8. 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9. 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10. 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11. 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 12. 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 13. 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9 14. 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 14.9 15. 15.1 15.2 15.3 15.4 15.5 15.6 15.7 15.8 15.9 16. 16.1 16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 17. 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 18. 18.1 18.2 18.3 18.4 18.5 18.6 18.7 18.8 18.9 19. 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9 20. 20.1 20.2 20.3 20.4 20.5 20.6 20.7 20.8 20.9 21. 21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8 21.9 22. 22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8 22.9 23. 23.1 23.2 23.3 23.4 23.5 23.6 23.7 23.8 23.9 24. 24.1 24.2 24.3 24.4 24.5 24.6 24.7 24.8 24.9 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] --0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.02962541 -0.02230897 -0.01548946 -0.00915689 -0.00323985 0.00231633 0.00755924 0.01252064 0.01723337 0.02171883 0.02600713 0.03010809 0.03403543 0.03780094 0.04141197 0.0448834 0.04301121 0.04572902 0.04841563 0.05107257 0.05370175 0.05630738 0.05888727 0.06144604 0.06398009 0.06649806 0.06899513 0.07147461 0.07393783 0.0763848 0.07881322 0.08122765 0.08363032 0.08601684 0.0883911 0.09075519 0.09310191 0.09543925 0.09776725 0.10008031 0.1023843 0.10467939 0.10696282 0.10923552 0.11150342 0.11375564 0.11600427 0.118243 0.12047296 0.12269376 0.12490488 0.12711415 0.12931036 0.13150096 0.13368154 0.13585982 0.13803009 0.14018961 0.14234359 0.14449503 0.14663648 0.14877236 0.15089947 0.15302471 0.155141 0.15725402 0.15935959 0.16145813 0.16355132 0.16563963 0.16772494 0.1698033 0.17187555 0.17394191 0.17600722 0.17806499 0.18011745 0.18216164 0.18420446 0.18624091 0.18827655 0.19030833 0.19233052 0.19434885 0.19636357 0.19837593 0.20037883 0.20238383 0.20438058 0.20637502 0.20836358 0.21034732 0.21232885 0.21430571 0.21627763 0.21824694 0.22021326 0.22217222 0.22412743 0.22608217 0.22803347 0.22998291 0.23192295 0.23385759 0.23579759 0.23772869 0.23965799 0.24157841 0.24349944 0.24541689 0.24733152 0.24924241 0.25115108 0.25305646 0.25495687 0.25685379 0.25874221 0.26063593 0.26252242 0.26440664 0.26628698 0.26816398 0.27004031 0.27191147 0.27377527 0.27564404 0.27750921 0.27935984 0.28121741 0.28306997 0.2849209 0.28676631 0.28860828 0.29045122 0.29229007 0.29412417 0.29595331 0.29778415 0.29960719 0.30142759 0.30324755 0.30506054 0.30687771 0.30869136 0.31049896 0.31230004 0.31410149 0.3159051 0.3177027 0.31949741 0.32128578 0.32306955 ! PS_BldPitchMin - Minimum blade pitch angles [rad] +42 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) + 4. 4.5 5. 5.5 6. 6.5 7. 7.5 8. 8.5 9. 9.5 10. 10.5 11. 11.9 12.4 12.9 13.4 13.9 14.4 14.9 15.4 15.9 16.4 16.9 17.4 17.9 18.4 18.9 19.4 19.9 20.4 20.9 21.4 21.9 22.4 22.9 23.4 23.9 24.4 24.9 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] +-0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03490659 -0.03275873 0.00083377 0.02543348 0.0448834 0.0667768 0.07915202 0.09113854 0.10280435 0.11420819 0.12538567 0.13636556 0.14716567 0.15780447 0.1683014 0.178663 0.18889865 0.19901765 0.20902392 0.21892797 0.22873221 0.23844548 0.24806675 0.25759734 0.26705022 0.27641741 0.2857055 0.29491896 0.3040543 0.31311378 0.32210299 0.33103247 ! PS_BldPitchMin - Minimum blade pitch angles [rad] From b431a4b615ec8394c598f60b3aba0ab8be1cdea2 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Tue, 8 Oct 2019 00:50:49 -0600 Subject: [PATCH 10/10] Communicate torque to dll --- WTC_toolbox/control_interface.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/WTC_toolbox/control_interface.py b/WTC_toolbox/control_interface.py index a729a0a3b..ef3b5bf58 100644 --- a/WTC_toolbox/control_interface.py +++ b/WTC_toolbox/control_interface.py @@ -91,7 +91,7 @@ def call_discon(self): self.avrSWAP = data - def call_controller(self,t,dt,pitch,genspeed,rotspeed,ws): + def call_controller(self,t,dt,pitch,torque,genspeed,rotspeed,ws): ''' Runs the controller. Passes current turbine state to the controller, and returns control inputs back @@ -115,6 +115,7 @@ def call_controller(self,t,dt,pitch,genspeed,rotspeed,ws): self.avrSWAP[1] = t self.avrSWAP[2] = dt self.avrSWAP[3] = self.pitch + self.avrSWAP[22] = torque self.avrSWAP[19] = genspeed self.avrSWAP[20] = rotspeed self.avrSWAP[26] = ws