An example of importing Embedded Coder code into the mbed IDE. Currently doesn't connect IO to PWM, ADC, and Encoder, instead provides random inputs and measures execution time.
Dependencies: mbed-dsp mbed Nucleo_pmsmfoc
html/html/rtwdemo_pmsmfoc_c.html
- Committer:
- paulcox
- Date:
- 2014-11-25
- Revision:
- 2:bbc155b0b886
File content as of revision 2:bbc155b0b886:
<!DOCTYPE html> <html> <head> <script type="text/javascript" src="./js/coder_app.js"></script> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="./rtwreport_utils.js"></script> <script type="text/javascript" src="./rtwannotate.js"></script> <link rel="stylesheet" type="text/css" href="./css/coder_app.css"/> </head> <body onload="srcFileOnload();"> <pre id="code"> <table class="code" id="codeTbl"> <tr name="1" id="1"> <td>1</td><td><span class="ct">/*</span></td></tr> <tr name="2" id="2"> <td>2</td><td><span class="ct"> * File: rtwdemo_pmsmfoc.c</span></td></tr> <tr name="3" id="3"> <td>3</td><td><span class="ct"> *</span></td></tr> <tr name="4" id="4"> <td>4</td><td><span class="ct"> * Code generated for Simulink model 'rtwdemo_pmsmfoc'.</span></td></tr> <tr name="5" id="5"> <td>5</td><td><span class="ct"> *</span></td></tr> <tr name="6" id="6"> <td>6</td><td><span class="ct"> * Model version : 1.2949</span></td></tr> <tr name="7" id="7"> <td>7</td><td><span class="ct"> * Simulink Coder version : 8.7 (R2014b) 11-Aug-2014</span></td></tr> <tr name="8" id="8"> <td>8</td><td><span class="ct"> * C/C++ source code generated on : Sat Oct 11 02:05:41 2014</span></td></tr> <tr name="9" id="9"> <td>9</td><td><span class="ct"> *</span></td></tr> <tr name="10" id="10"> <td>10</td><td><span class="ct"> * Target selection: ert.tlc</span></td></tr> <tr name="11" id="11"> <td>11</td><td><span class="ct"> * Embedded hardware selection: ARM Compatible->ARM Cortex</span></td></tr> <tr name="12" id="12"> <td>12</td><td><span class="ct"> * Code generation objective: Execution efficiency</span></td></tr> <tr name="13" id="13"> <td>13</td><td><span class="ct"> * Validation result: Not run</span></td></tr> <tr name="14" id="14"> <td>14</td><td><span class="ct"> */</span></td></tr> <tr name="15" id="15"> <td>15</td><td></td></tr> <tr name="16" id="16"> <td>16</td><td><span class="pp">#include "rtwdemo_pmsmfoc.h"</span></td></tr> <tr name="17" id="17"> <td>17</td><td></td></tr> <tr name="18" id="18"> <td>18</td><td><span class="ct">/* Named constants for Chart: '<a class="ct blk" blk_line="18"><S1>/Controller_Mode_Scheduler</a>' */</span></td></tr> <tr name="19" id="19"> <td>19</td><td><span class="pp">#define</span> <a id="19c9" class="tk">IN_Motor_Control</a> ((<a id="19c42" class="tk">uint8_T</a>)1U)</td></tr> <tr name="20" id="20"> <td>20</td><td><span class="pp">#define</span> <a id="20c9" class="tk">IN_Motor_On</a> ((<a id="20c42" class="tk">uint8_T</a>)1U)</td></tr> <tr name="21" id="21"> <td>21</td><td><span class="pp">#define</span> <a id="21c9" class="tk">IN_NO_ACTIVE_CHILD</a> ((<a id="21c42" class="tk">uint8_T</a>)0U)</td></tr> <tr name="22" id="22"> <td>22</td><td><span class="pp">#define</span> <a id="22c9" class="tk">IN_Position_Control</a> ((<a id="22c42" class="tk">uint8_T</a>)1U)</td></tr> <tr name="23" id="23"> <td>23</td><td><span class="pp">#define</span> <a id="23c9" class="tk">IN_Ramp_To_Stop</a> ((<a id="23c42" class="tk">uint8_T</a>)2U)</td></tr> <tr name="24" id="24"> <td>24</td><td><span class="pp">#define</span> <a id="24c9" class="tk">IN_Stand_By</a> ((<a id="24c42" class="tk">uint8_T</a>)2U)</td></tr> <tr name="25" id="25"> <td>25</td><td><span class="pp">#define</span> <a id="25c9" class="tk">IN_Startup_Open_Loop_Control</a> ((<a id="25c42" class="tk">uint8_T</a>)2U)</td></tr> <tr name="26" id="26"> <td>26</td><td><span class="pp">#define</span> <a id="26c9" class="tk">IN_Torque_Control</a> ((<a id="26c42" class="tk">uint8_T</a>)3U)</td></tr> <tr name="27" id="27"> <td>27</td><td><span class="pp">#define</span> <a id="27c9" class="tk">IN_Velocity_Control</a> ((<a id="27c42" class="tk">uint8_T</a>)4U)</td></tr> <tr name="28" id="28"> <td>28</td><td></td></tr> <tr name="29" id="29"> <td>29</td><td><span class="ct">/* Named constants for Chart: '<a class="ct blk" blk_line="29"><S49>/Wait_For_Valid_Position</a>' */</span></td></tr> <tr name="30" id="30"> <td>30</td><td><span class="pp">#define</span> <a id="30c9" class="tk">IN_Position_Valid</a> ((<a id="30c42" class="tk">uint8_T</a>)1U)</td></tr> <tr name="31" id="31"> <td>31</td><td><span class="pp">#define</span> <a id="31c9" class="tk">IN_Wait_For_Valid_Position</a> ((<a id="31c42" class="tk">uint8_T</a>)2U)</td></tr> <tr name="32" id="32"> <td>32</td><td><span class="pp">#define</span> <a id="32c9" class="tk">IN_Wait_For_Valid_Velocity</a> ((<a id="32c42" class="tk">uint8_T</a>)3U)</td></tr> <tr name="33" id="33"> <td>33</td><td><span class="pp">#define</span> <a id="33c9" class="tk">WaitForValidVelocityTicks</a> (124)</td></tr> <tr name="34" id="34"> <td>34</td><td></td></tr> <tr name="35" id="35"> <td>35</td><td><span class="ct">/* Exported block signals */</span></td></tr> <tr name="36" id="36"> <td>36</td><td><a id="36c1" class="tk">real32_T</a> <a id="36c10" class="tk">phase_currents</a>[2]; <span class="ct">/* '<a class="ct blk" blk_line="36"><S48>/Product</a>' */</span></td></tr> <tr name="37" id="37"> <td>37</td><td><a id="37c1" class="tk">real32_T</a> <a id="37c10" class="tk">rotor_position</a>; <span class="ct">/* '<a class="ct blk" blk_line="37"><S49>/Add</a>' */</span></td></tr> <tr name="38" id="38"> <td>38</td><td><a id="38c1" class="tk">real32_T</a> <a id="38c10" class="tk">velocity_measured</a>; <span class="ct">/* '<a class="ct blk" blk_line="38"><S55>/Scale_Output</a>' */</span></td></tr> <tr name="39" id="39"> <td>39</td><td><a id="39c1" class="tk">real32_T</a> <a id="39c10" class="tk">d_current_error</a>; <span class="ct">/* '<a class="ct blk" blk_line="39"><S12>/Sum2</a>' */</span></td></tr> <tr name="40" id="40"> <td>40</td><td><a id="40c1" class="tk">real32_T</a> <a id="40c10" class="tk">q_current_command</a>; <span class="ct">/* '<a class="ct blk" blk_line="40"><S5>/Lo_to_Hi_Rate_Transition1</a>' */</span></td></tr> <tr name="41" id="41"> <td>41</td><td><a id="41c1" class="tk">real32_T</a> <a id="41c10" class="tk">q_current_measured</a>; <span class="ct">/* '<a class="ct blk" blk_line="41"><S22>/Add</a>' */</span></td></tr> <tr name="42" id="42"> <td>42</td><td><a id="42c1" class="tk">real32_T</a> <a id="42c10" class="tk">q_current_error</a>; <span class="ct">/* '<a class="ct blk" blk_line="42"><S12>/Sum</a>' */</span></td></tr> <tr name="43" id="43"> <td>43</td><td><a id="43c1" class="tk">real32_T</a> <a id="43c10" class="tk">phase_voltages</a>[3]; <span class="ct">/* '<a class="ct blk" blk_line="43"><S27>/Select_Sector</a>' */</span></td></tr> <tr name="44" id="44"> <td>44</td><td><a id="44c1" class="tk">real32_T</a> <a id="44c10" class="tk">velocity_error</a>; <span class="ct">/* '<a class="ct blk" blk_line="44"><S11>/Sum2</a>' */</span></td></tr> <tr name="45" id="45"> <td>45</td><td><a id="45c1" class="tk">EnumControllerMode</a> <a id="45c20" class="tk">controller_mode</a>; <span class="ct">/* '<a class="ct blk" blk_line="45"><S1>/Controller_Mode_Scheduler</a>' */</span></td></tr> <tr name="46" id="46"> <td>46</td><td></td></tr> <tr name="47" id="47"> <td>47</td><td><span class="ct">/* Exported block parameters */</span></td></tr> <tr name="48" id="48"> <td>48</td><td><a id="48c1" class="tk">CTRLPARAMS_STRUCT</a> <a id="48c19" class="tk">ctrlParams</a> = <span class="br">{</span></td></tr> <tr name="49" id="49"> <td>49</td><td> 10.0F,</td></tr> <tr name="50" id="50"> <td>50</td><td> 10000.0F,</td></tr> <tr name="51" id="51"> <td>51</td><td> 0.005F,</td></tr> <tr name="52" id="52"> <td>52</td><td> 0.015F,</td></tr> <tr name="53" id="53"> <td>53</td><td> 0.1F,</td></tr> <tr name="54" id="54"> <td>54</td><td> 0.6F,</td></tr> <tr name="55" id="55"> <td>55</td><td> 1.0F,</td></tr> <tr name="56" id="56"> <td>56</td><td> 0.2F,</td></tr> <tr name="57" id="57"> <td>57</td><td> 20.0F,</td></tr> <tr name="58" id="58"> <td>58</td><td> 2252.25F,</td></tr> <tr name="59" id="59"> <td>59</td><td> 0.00488400506F,</td></tr> <tr name="60" id="60"> <td>60</td><td> -0.0F,</td></tr> <tr name="61" id="61"> <td>61</td><td> 4.0F</td></tr> <tr name="62" id="62"> <td>62</td><td><span class="br">}</span> ; <span class="ct">/* Variable: ctrlParams</span></td></tr> <tr name="63" id="63"> <td>63</td><td><span class="ct"> * Referenced by:</span></td></tr> <tr name="64" id="64"> <td>64</td><td><span class="ct"> * '<a class="ct blk" blk_line="64"><S1>/Controller_Mode_Scheduler</a>'</span></td></tr> <tr name="65" id="65"> <td>65</td><td><span class="ct"> * '<a class="ct blk" blk_line="65"><S48>/ADC_Driver_Units_To_Amps</a>'</span></td></tr> <tr name="66" id="66"> <td>66</td><td><span class="ct"> * '<a class="ct blk" blk_line="66"><S48>/ADC_Zero_Offset</a>'</span></td></tr> <tr name="67" id="67"> <td>67</td><td><span class="ct"> * '<a class="ct blk" blk_line="67"><S49>/Offset_Between_Encoder_Zero_And_Mechanical_Zero</a>'</span></td></tr> <tr name="68" id="68"> <td>68</td><td><span class="ct"> * '<a class="ct blk" blk_line="68"><S14>/number_of_pole_pairs</a>'</span></td></tr> <tr name="69" id="69"> <td>69</td><td><span class="ct"> * '<a class="ct blk" blk_line="69"><S42>/Integral Gain</a>'</span></td></tr> <tr name="70" id="70"> <td>70</td><td><span class="ct"> * '<a class="ct blk" blk_line="70"><S42>/Proportional Gain</a>'</span></td></tr> <tr name="71" id="71"> <td>71</td><td><span class="ct"> * '<a class="ct blk" blk_line="71"><S45>/Integral Gain</a>'</span></td></tr> <tr name="72" id="72"> <td>72</td><td><span class="ct"> * '<a class="ct blk" blk_line="72"><S45>/Proportional Gain</a>'</span></td></tr> <tr name="73" id="73"> <td>73</td><td><span class="ct"> * '<a class="ct blk" blk_line="73"><S65>/Startup_Acceleration_Constant</a>'</span></td></tr> <tr name="74" id="74"> <td>74</td><td><span class="ct"> * '<a class="ct blk" blk_line="74"><S17>/Integral Gain</a>'</span></td></tr> <tr name="75" id="75"> <td>75</td><td><span class="ct"> * '<a class="ct blk" blk_line="75"><S17>/Proportional Gain</a>'</span></td></tr> <tr name="76" id="76"> <td>76</td><td><span class="ct"> * '<a class="ct blk" blk_line="76"><S18>/Integral Gain</a>'</span></td></tr> <tr name="77" id="77"> <td>77</td><td><span class="ct"> * '<a class="ct blk" blk_line="77"><S18>/Proportional Gain</a>'</span></td></tr> <tr name="78" id="78"> <td>78</td><td><span class="ct"> */</span></td></tr> <tr name="79" id="79"> <td>79</td><td></td></tr> <tr name="80" id="80"> <td>80</td><td><span class="ct">/* Constant parameters (auto storage) */</span></td></tr> <tr name="81" id="81"> <td>81</td><td><span class="kw">const</span> <a id="81c7" class="tk">ConstParam</a> <a id="81c18" class="tk">ConstP</a> = <span class="br">{</span></td></tr> <tr name="82" id="82"> <td>82</td><td> <span class="ct">/* Computed Parameter: Lookup_Table_table</span></td></tr> <tr name="83" id="83"> <td>83</td><td><span class="ct"> * Referenced by: '<a class="ct blk" blk_line="83"><S28>/Lookup_Table</a>'</span></td></tr> <tr name="84" id="84"> <td>84</td><td><span class="ct"> */</span></td></tr> <tr name="85" id="85"> <td>85</td><td> <span class="br">{</span> 2U, 2U, 6U, 1U, 4U, 3U, 5U <span class="br">}</span></td></tr> <tr name="86" id="86"> <td>86</td><td><span class="br">}</span>;</td></tr> <tr name="87" id="87"> <td>87</td><td></td></tr> <tr name="88" id="88"> <td>88</td><td><span class="ct">/* Block signals and states (auto storage) */</span></td></tr> <tr name="89" id="89"> <td>89</td><td><a id="89c1" class="tk">D_Work</a> <a id="89c8" class="tk">DWork</a>;</td></tr> <tr name="90" id="90"> <td>90</td><td></td></tr> <tr name="91" id="91"> <td>91</td><td><span class="ct">/* Real-time model */</span></td></tr> <tr name="92" id="92"> <td>92</td><td><a id="92c1" class="tk">RT_MODEL</a> <a id="92c10" class="tk">M_</a>;</td></tr> <tr name="93" id="93"> <td>93</td><td><a id="93c1" class="tk">RT_MODEL</a> *<span class="kw">const</span> <a id="93c17" class="tk">M</a> = &<a id="93c22" class="tk">M_</a>;</td></tr> <tr name="94" id="94"> <td>94</td><td><span class="kw">extern</span> <a id="94c8" class="tk">real32_T</a> <a id="94c17" class="tk">rt_roundf</a>(<a id="94c27" class="tk">real32_T</a> <a id="94c36" class="tk">u</a>);</td></tr> <tr name="95" id="95"> <td>95</td><td><span class="kw">extern</span> <a id="95c8" class="tk">real32_T</a> <a id="95c17" class="tk">rt_modf</a>(<a id="95c25" class="tk">real32_T</a> <a id="95c34" class="tk">u0</a>, <a id="95c38" class="tk">real32_T</a> <a id="95c47" class="tk">u1</a>);</td></tr> <tr name="96" id="96"> <td>96</td><td><span class="kw">static</span> <span class="kw">void</span> <a id="96c13" class="tk">rate_scheduler</a>(<span class="kw">void</span>);</td></tr> <tr name="97" id="97"> <td>97</td><td></td></tr> <tr name="98" id="98"> <td>98</td><td><span class="ct">/*</span></td></tr> <tr name="99" id="99"> <td>99</td><td><span class="ct"> * This function updates active task flag for each subrate.</span></td></tr> <tr name="100" id="100"> <td>100</td><td><span class="ct"> * The function is called at model base rate, hence the</span></td></tr> <tr name="101" id="101"> <td>101</td><td><span class="ct"> * generated code self-manages all its subrates.</span></td></tr> <tr name="102" id="102"> <td>102</td><td><span class="ct"> */</span></td></tr> <tr name="103" id="103"> <td>103</td><td><span class="kw">static</span> <span class="kw">void</span> <a id="103c13" class="tk">rate_scheduler</a>(<span class="kw">void</span>)</td></tr> <tr name="104" id="104"> <td>104</td><td><span class="br">{</span></td></tr> <tr name="105" id="105"> <td>105</td><td> <span class="ct">/* Compute which subrates run during the next base time step. Subrates</span></td></tr> <tr name="106" id="106"> <td>106</td><td><span class="ct"> * are an integer multiple of the base rate counter. Therefore, the subtask</span></td></tr> <tr name="107" id="107"> <td>107</td><td><span class="ct"> * counter is reset when it reaches its limit (zero means run).</span></td></tr> <tr name="108" id="108"> <td>108</td><td><span class="ct"> */</span></td></tr> <tr name="109" id="109"> <td>109</td><td> (<a id="109c4" class="tk">M</a>-><a id="109c7" class="tk">Timing</a>.<a id="109c14" class="tk">TaskCounters</a>.<a id="109c27" class="tk">TID</a>[1])++;</td></tr> <tr name="110" id="110"> <td>110</td><td> <span class="kw">if</span> ((<a id="110c8" class="tk">M</a>-><a id="110c11" class="tk">Timing</a>.<a id="110c18" class="tk">TaskCounters</a>.<a id="110c31" class="tk">TID</a>[1]) > 124) <span class="br">{</span><span class="ct">/* Sample time: [0.005s, 0.0s] */</span></td></tr> <tr name="111" id="111"> <td>111</td><td> <a id="111c5" class="tk">M</a>-><a id="111c8" class="tk">Timing</a>.<a id="111c15" class="tk">TaskCounters</a>.<a id="111c28" class="tk">TID</a>[1] = 0;</td></tr> <tr name="112" id="112"> <td>112</td><td> <span class="br">}</span></td></tr> <tr name="113" id="113"> <td>113</td><td><span class="br">}</span></td></tr> <tr name="114" id="114"> <td>114</td><td></td></tr> <tr name="115" id="115"> <td>115</td><td><a id="115c1" class="tk">real32_T</a> <a id="115c10" class="tk">rt_roundf</a>(<a id="115c20" class="tk">real32_T</a> <a id="115c29" class="tk">u</a>)</td></tr> <tr name="116" id="116"> <td>116</td><td><span class="br">{</span></td></tr> <tr name="117" id="117"> <td>117</td><td> <a id="117c3" class="tk">real32_T</a> <a id="117c12" class="tk">y</a>;</td></tr> <tr name="118" id="118"> <td>118</td><td> <span class="kw">if</span> (((<a id="118c9" class="tk">real32_T</a>)<a id="118c18" class="tk">fabs</a>(<a id="118c23" class="tk">u</a>)) < 8.388608E+6F) <span class="br">{</span></td></tr> <tr name="119" id="119"> <td>119</td><td> <span class="kw">if</span> (<a id="119c9" class="tk">u</a> >= 0.5F) <span class="br">{</span></td></tr> <tr name="120" id="120"> <td>120</td><td> <a id="120c7" class="tk">y</a> = (<a id="120c12" class="tk">real32_T</a>)<a id="120c21" class="tk">floor</a>(<a id="120c27" class="tk">u</a> + 0.5F);</td></tr> <tr name="121" id="121"> <td>121</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="121c16" class="tk">u</a> > -0.5F) <span class="br">{</span></td></tr> <tr name="122" id="122"> <td>122</td><td> <a id="122c7" class="tk">y</a> = 0.0F;</td></tr> <tr name="123" id="123"> <td>123</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="124" id="124"> <td>124</td><td> <a id="124c7" class="tk">y</a> = (<a id="124c12" class="tk">real32_T</a>)<a id="124c21" class="tk">ceil</a>(<a id="124c26" class="tk">u</a> - 0.5F);</td></tr> <tr name="125" id="125"> <td>125</td><td> <span class="br">}</span></td></tr> <tr name="126" id="126"> <td>126</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="127" id="127"> <td>127</td><td> <a id="127c5" class="tk">y</a> = <a id="127c9" class="tk">u</a>;</td></tr> <tr name="128" id="128"> <td>128</td><td> <span class="br">}</span></td></tr> <tr name="129" id="129"> <td>129</td><td></td></tr> <tr name="130" id="130"> <td>130</td><td> <span class="kw">return</span> <a id="130c10" class="tk">y</a>;</td></tr> <tr name="131" id="131"> <td>131</td><td><span class="br">}</span></td></tr> <tr name="132" id="132"> <td>132</td><td></td></tr> <tr name="133" id="133"> <td>133</td><td><a id="133c1" class="tk">real32_T</a> <a id="133c10" class="tk">rt_modf</a>(<a id="133c18" class="tk">real32_T</a> <a id="133c27" class="tk">u0</a>, <a id="133c31" class="tk">real32_T</a> <a id="133c40" class="tk">u1</a>)</td></tr> <tr name="134" id="134"> <td>134</td><td><span class="br">{</span></td></tr> <tr name="135" id="135"> <td>135</td><td> <a id="135c3" class="tk">real32_T</a> <a id="135c12" class="tk">y</a>;</td></tr> <tr name="136" id="136"> <td>136</td><td> <a id="136c3" class="tk">real32_T</a> <a id="136c12" class="tk">tmp</a>;</td></tr> <tr name="137" id="137"> <td>137</td><td> <span class="kw">if</span> (<a id="137c7" class="tk">u1</a> == 0.0F) <span class="br">{</span></td></tr> <tr name="138" id="138"> <td>138</td><td> <a id="138c5" class="tk">y</a> = <a id="138c9" class="tk">u0</a>;</td></tr> <tr name="139" id="139"> <td>139</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="140" id="140"> <td>140</td><td> <a id="140c5" class="tk">tmp</a> = <a id="140c11" class="tk">u0</a> / <a id="140c16" class="tk">u1</a>;</td></tr> <tr name="141" id="141"> <td>141</td><td> <span class="kw">if</span> (<a id="141c9" class="tk">u1</a> <= ((<a id="141c17" class="tk">real32_T</a>)<a id="141c26" class="tk">floor</a>(<a id="141c32" class="tk">u1</a>))) <span class="br">{</span></td></tr> <tr name="142" id="142"> <td>142</td><td> <a id="142c7" class="tk">y</a> = <a id="142c11" class="tk">u0</a> - (((<a id="142c19" class="tk">real32_T</a>)<a id="142c28" class="tk">floor</a>(<a id="142c34" class="tk">tmp</a>)) * <a id="142c42" class="tk">u1</a>);</td></tr> <tr name="143" id="143"> <td>143</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (((<a id="143c18" class="tk">real32_T</a>)<a id="143c27" class="tk">fabs</a>(<a id="143c32" class="tk">tmp</a> - <a id="143c38" class="tk">rt_roundf</a>(<a id="143c48" class="tk">tmp</a>))) <= (<a id="143c59" class="tk">FLT_EPSILON</a> *</td></tr> <tr name="144" id="144"> <td>144</td><td> ((<a id="144c19" class="tk">real32_T</a>)<a id="144c28" class="tk">fabs</a>(<a id="144c33" class="tk">tmp</a>)))) <span class="br">{</span></td></tr> <tr name="145" id="145"> <td>145</td><td> <a id="145c7" class="tk">y</a> = 0.0F;</td></tr> <tr name="146" id="146"> <td>146</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="147" id="147"> <td>147</td><td> <a id="147c7" class="tk">y</a> = (<a id="147c12" class="tk">tmp</a> - ((<a id="147c20" class="tk">real32_T</a>)<a id="147c29" class="tk">floor</a>(<a id="147c35" class="tk">tmp</a>))) * <a id="147c44" class="tk">u1</a>;</td></tr> <tr name="148" id="148"> <td>148</td><td> <span class="br">}</span></td></tr> <tr name="149" id="149"> <td>149</td><td> <span class="br">}</span></td></tr> <tr name="150" id="150"> <td>150</td><td></td></tr> <tr name="151" id="151"> <td>151</td><td> <span class="kw">return</span> <a id="151c10" class="tk">y</a>;</td></tr> <tr name="152" id="152"> <td>152</td><td><span class="br">}</span></td></tr> <tr name="153" id="153"> <td>153</td><td></td></tr> <tr name="154" id="154"> <td>154</td><td><span class="ct">/* Model step function */</span></td></tr> <tr name="155" id="155"> <td>155</td><td><a id="155c1" class="tk">EnumErrorType</a> <a id="155c15" class="tk">Controller</a>(<a id="155c26" class="tk">uint16_T</a> <a id="155c35" class="tk">motor_on</a>, <a id="155c45" class="tk">EnumCommandType</a> <a id="155c61" class="tk">command_type</a>,</td></tr> <tr name="156" id="156"> <td>156</td><td> <a id="156c3" class="tk">real32_T</a> <a id="156c12" class="tk">current_request</a>, <a id="156c29" class="tk">SENSORS_STRUCT</a> *<a id="156c45" class="tk">sensors</a>, <a id="156c54" class="tk">uint16_T</a> <a id="156c63" class="tk">pwm_compare</a>[3])</td></tr> <tr name="157" id="157"> <td>157</td><td><span class="br">{</span></td></tr> <tr name="158" id="158"> <td>158</td><td> <a id="158c3" class="tk">real32_T</a> <a id="158c12" class="tk">sin_coefficient</a>;</td></tr> <tr name="159" id="159"> <td>159</td><td> <a id="159c3" class="tk">int32_T</a> <a id="159c11" class="tk">Wrap_To_Pi</a>;</td></tr> <tr name="160" id="160"> <td>160</td><td> <a id="160c3" class="tk">real32_T</a> <a id="160c12" class="tk">electrical_angle</a>;</td></tr> <tr name="161" id="161"> <td>161</td><td> <a id="161c3" class="tk">real32_T</a> <a id="161c12" class="tk">cos_coefficient</a>;</td></tr> <tr name="162" id="162"> <td>162</td><td> <a id="162c3" class="tk">real32_T</a> <a id="162c12" class="tk">SignDeltaU_b</a>;</td></tr> <tr name="163" id="163"> <td>163</td><td> <a id="163c3" class="tk">int16_T</a> <a id="163c11" class="tk">Enum_To_Int</a>;</td></tr> <tr name="164" id="164"> <td>164</td><td> <a id="164c3" class="tk">uint8_T</a> <a id="164c11" class="tk">FixPtRelationalOperator</a>;</td></tr> <tr name="165" id="165"> <td>165</td><td> <a id="165c3" class="tk">real32_T</a> <a id="165c12" class="tk">SignDeltaU</a>;</td></tr> <tr name="166" id="166"> <td>166</td><td> <a id="166c3" class="tk">real32_T</a> <a id="166c12" class="tk">Gain1</a>;</td></tr> <tr name="167" id="167"> <td>167</td><td> <a id="167c3" class="tk">int8_T</a> <a id="167c10" class="tk">rtPrevAction</a>;</td></tr> <tr name="168" id="168"> <td>168</td><td> <a id="168c3" class="tk">real32_T</a> <a id="168c12" class="tk">alpha_voltage</a>;</td></tr> <tr name="169" id="169"> <td>169</td><td> <a id="169c3" class="tk">real32_T</a> <a id="169c12" class="tk">SignPreIntegrator_f</a>;</td></tr> <tr name="170" id="170"> <td>170</td><td> <a id="170c3" class="tk">real32_T</a> <a id="170c12" class="tk">IntegralGain_j</a>;</td></tr> <tr name="171" id="171"> <td>171</td><td> <a id="171c3" class="tk">boolean_T</a> <a id="171c13" class="tk">RelationalOperator</a>;</td></tr> <tr name="172" id="172"> <td>172</td><td> <a id="172c3" class="tk">boolean_T</a> <a id="172c13" class="tk">NotEqual_b</a>;</td></tr> <tr name="173" id="173"> <td>173</td><td> <a id="173c3" class="tk">real32_T</a> <a id="173c12" class="tk">Switch_fr</a>;</td></tr> <tr name="174" id="174"> <td>174</td><td> <a id="174c3" class="tk">real32_T</a> <a id="174c12" class="tk">Sectors_2_and_5_idx_1</a>;</td></tr> <tr name="175" id="175"> <td>175</td><td> <a id="175c3" class="tk">real32_T</a> <a id="175c12" class="tk">Sectors_2_and_5_idx_2</a>;</td></tr> <tr name="176" id="176"> <td>176</td><td> <a id="176c3" class="tk">int16_T</a> <a id="176c11" class="tk">u0</a>;</td></tr> <tr name="177" id="177"> <td>177</td><td></td></tr> <tr name="178" id="178"> <td>178</td><td> <span class="ct">/* specified return value */</span></td></tr> <tr name="179" id="179"> <td>179</td><td> <a id="179c3" class="tk">EnumErrorType</a> <a id="179c17" class="tk">error</a>;</td></tr> <tr name="180" id="180"> <td>180</td><td></td></tr> <tr name="181" id="181"> <td>181</td><td> <span class="ct">/* Product: '<a class="ct blk" blk_line="181"><S48>/Product</a>' incorporates:</span></td></tr> <tr name="182" id="182"> <td>182</td><td><span class="ct"> * Constant: '<a class="ct blk" blk_line="182"><S48>/ADC_Driver_Units_To_Amps</a>'</span></td></tr> <tr name="183" id="183"> <td>183</td><td><span class="ct"> * Constant: '<a class="ct blk" blk_line="183"><S48>/ADC_Zero_Offset</a>'</span></td></tr> <tr name="184" id="184"> <td>184</td><td><span class="ct"> * Inport: '<a class="ct blk" blk_line="184"><Root>/sensors</a>'</span></td></tr> <tr name="185" id="185"> <td>185</td><td><span class="ct"> * Sum: '<a class="ct blk" blk_line="185"><S48>/Add</a>'</span></td></tr> <tr name="186" id="186"> <td>186</td><td><span class="ct"> */</span></td></tr> <tr name="187" id="187"> <td>187</td><td> <a id="187c3" class="tk">phase_currents</a>[0] = (((<a id="187c26" class="tk">real32_T</a>)<a id="187c35" class="tk">sensors</a>-><a id="187c44" class="tk">adc_phase_currents</a>[0]) -</td></tr> <tr name="188" id="188"> <td>188</td><td> <a id="188c24" class="tk">ctrlParams</a>.<a id="188c35" class="tk">AdcZeroOffsetDriverUnits</a>) *</td></tr> <tr name="189" id="189"> <td>189</td><td> <a id="189c5" class="tk">ctrlParams</a>.<a id="189c16" class="tk">AdcDriverUnitsToAmps</a>;</td></tr> <tr name="190" id="190"> <td>190</td><td> <a id="190c3" class="tk">phase_currents</a>[1] = (((<a id="190c26" class="tk">real32_T</a>)<a id="190c35" class="tk">sensors</a>-><a id="190c44" class="tk">adc_phase_currents</a>[1]) -</td></tr> <tr name="191" id="191"> <td>191</td><td> <a id="191c24" class="tk">ctrlParams</a>.<a id="191c35" class="tk">AdcZeroOffsetDriverUnits</a>) *</td></tr> <tr name="192" id="192"> <td>192</td><td> <a id="192c5" class="tk">ctrlParams</a>.<a id="192c16" class="tk">AdcDriverUnitsToAmps</a>;</td></tr> <tr name="193" id="193"> <td>193</td><td></td></tr> <tr name="194" id="194"> <td>194</td><td> <span class="ct">/* Chart: '<a class="ct blk" blk_line="194"><S49>/Wait_For_Valid_Position</a>' incorporates:</span></td></tr> <tr name="195" id="195"> <td>195</td><td><span class="ct"> * Inport: '<a class="ct blk" blk_line="195"><Root>/sensors</a>'</span></td></tr> <tr name="196" id="196"> <td>196</td><td><span class="ct"> */</span></td></tr> <tr name="197" id="197"> <td>197</td><td> <span class="ct">/* Gateway: Motor_Control/Sensors_To_Engineering_Units/Encoder_To_Position/Wait_For_Valid_Position */</span></td></tr> <tr name="198" id="198"> <td>198</td><td> <span class="kw">if</span> (<a id="198c7" class="tk">DWork</a>.<a id="198c13" class="tk">temporalCounter_i1</a> < 127U) <span class="br">{</span></td></tr> <tr name="199" id="199"> <td>199</td><td> <a id="199c5" class="tk">DWork</a>.<a id="199c11" class="tk">temporalCounter_i1</a>++;</td></tr> <tr name="200" id="200"> <td>200</td><td> <span class="br">}</span></td></tr> <tr name="201" id="201"> <td>201</td><td></td></tr> <tr name="202" id="202"> <td>202</td><td> <span class="ct">/* During: Motor_Control/Sensors_To_Engineering_Units/Encoder_To_Position/Wait_For_Valid_Position */</span></td></tr> <tr name="203" id="203"> <td>203</td><td> <span class="kw">if</span> (<a id="203c7" class="tk">DWork</a>.<a id="203c13" class="tk">is_active_c2_rtwdemo_pmsmfoc</a> == 0U) <span class="br">{</span></td></tr> <tr name="204" id="204"> <td>204</td><td> <span class="ct">/* Entry: Motor_Control/Sensors_To_Engineering_Units/Encoder_To_Position/Wait_For_Valid_Position */</span></td></tr> <tr name="205" id="205"> <td>205</td><td> <a id="205c5" class="tk">DWork</a>.<a id="205c11" class="tk">is_active_c2_rtwdemo_pmsmfoc</a> = 1U;</td></tr> <tr name="206" id="206"> <td>206</td><td></td></tr> <tr name="207" id="207"> <td>207</td><td> <span class="ct">/* Entry Internal: Motor_Control/Sensors_To_Engineering_Units/Encoder_To_Position/Wait_For_Valid_Position */</span></td></tr> <tr name="208" id="208"> <td>208</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="208"><S52>:113</a>' */</span></td></tr> <tr name="209" id="209"> <td>209</td><td> <span class="kw">if</span> (<a id="209c9" class="tk">sensors</a>-><a id="209c18" class="tk">encoder_valid</a> == 0) <span class="br">{</span></td></tr> <tr name="210" id="210"> <td>210</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="210"><S52>:114</a>' */</span></td></tr> <tr name="211" id="211"> <td>211</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="211"><S52>:115</a>' */</span></td></tr> <tr name="212" id="212"> <td>212</td><td> <a id="212c7" class="tk">DWork</a>.<a id="212c13" class="tk">is_c2_rtwdemo_pmsmfoc</a> = <a id="212c37" class="tk">IN_Wait_For_Valid_Position</a>;</td></tr> <tr name="213" id="213"> <td>213</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="214" id="214"> <td>214</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="214"><S52>:120</a>' */</span></td></tr> <tr name="215" id="215"> <td>215</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="215"><S52>:119</a>' */</span></td></tr> <tr name="216" id="216"> <td>216</td><td> <a id="216c7" class="tk">DWork</a>.<a id="216c13" class="tk">is_c2_rtwdemo_pmsmfoc</a> = <a id="216c37" class="tk">IN_Position_Valid</a>;</td></tr> <tr name="217" id="217"> <td>217</td><td> <a id="217c7" class="tk">DWork</a>.<a id="217c13" class="tk">Position_Valid</a> = 1U;</td></tr> <tr name="218" id="218"> <td>218</td><td> <span class="br">}</span></td></tr> <tr name="219" id="219"> <td>219</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="220" id="220"> <td>220</td><td> <span class="kw">switch</span> (<a id="220c13" class="tk">DWork</a>.<a id="220c19" class="tk">is_c2_rtwdemo_pmsmfoc</a>) <span class="br">{</span></td></tr> <tr name="221" id="221"> <td>221</td><td> <span class="kw">case</span> <a id="221c11" class="tk">IN_Position_Valid</a>:</td></tr> <tr name="222" id="222"> <td>222</td><td> <span class="ct">/* During 'Position_Valid': '<a class="ct blk" blk_line="222"><S52>:25</a>' */</span></td></tr> <tr name="223" id="223"> <td>223</td><td> <span class="kw">break</span>;</td></tr> <tr name="224" id="224"> <td>224</td><td></td></tr> <tr name="225" id="225"> <td>225</td><td> <span class="kw">case</span> <a id="225c11" class="tk">IN_Wait_For_Valid_Position</a>:</td></tr> <tr name="226" id="226"> <td>226</td><td> <span class="ct">/* During 'Wait_For_Valid_Position': '<a class="ct blk" blk_line="226"><S52>:99</a>' */</span></td></tr> <tr name="227" id="227"> <td>227</td><td> <span class="kw">if</span> (<a id="227c11" class="tk">sensors</a>-><a id="227c20" class="tk">encoder_valid</a> != 0) <span class="br">{</span></td></tr> <tr name="228" id="228"> <td>228</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="228"><S52>:100</a>' */</span></td></tr> <tr name="229" id="229"> <td>229</td><td> <a id="229c9" class="tk">DWork</a>.<a id="229c15" class="tk">is_c2_rtwdemo_pmsmfoc</a> = <a id="229c39" class="tk">IN_Wait_For_Valid_Velocity</a>;</td></tr> <tr name="230" id="230"> <td>230</td><td> <a id="230c9" class="tk">DWork</a>.<a id="230c15" class="tk">temporalCounter_i1</a> = 0U;</td></tr> <tr name="231" id="231"> <td>231</td><td> <span class="br">}</span></td></tr> <tr name="232" id="232"> <td>232</td><td> <span class="kw">break</span>;</td></tr> <tr name="233" id="233"> <td>233</td><td></td></tr> <tr name="234" id="234"> <td>234</td><td> <span class="kw">default</span>:</td></tr> <tr name="235" id="235"> <td>235</td><td> <span class="ct">/* During 'Wait_For_Valid_Velocity': '<a class="ct blk" blk_line="235"><S52>:101</a>' */</span></td></tr> <tr name="236" id="236"> <td>236</td><td> <span class="kw">if</span> (<a id="236c11" class="tk">DWork</a>.<a id="236c17" class="tk">temporalCounter_i1</a> >= <a id="236c39" class="tk">WaitForValidVelocityTicks</a>) <span class="br">{</span></td></tr> <tr name="237" id="237"> <td>237</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="237"><S52>:102</a>' */</span></td></tr> <tr name="238" id="238"> <td>238</td><td> <a id="238c9" class="tk">DWork</a>.<a id="238c15" class="tk">is_c2_rtwdemo_pmsmfoc</a> = <a id="238c39" class="tk">IN_Position_Valid</a>;</td></tr> <tr name="239" id="239"> <td>239</td><td> <a id="239c9" class="tk">DWork</a>.<a id="239c15" class="tk">Position_Valid</a> = 1U;</td></tr> <tr name="240" id="240"> <td>240</td><td> <span class="br">}</span></td></tr> <tr name="241" id="241"> <td>241</td><td> <span class="kw">break</span>;</td></tr> <tr name="242" id="242"> <td>242</td><td> <span class="br">}</span></td></tr> <tr name="243" id="243"> <td>243</td><td> <span class="br">}</span></td></tr> <tr name="244" id="244"> <td>244</td><td></td></tr> <tr name="245" id="245"> <td>245</td><td> <span class="ct">/* End of Chart: '<a class="ct blk" blk_line="245"><S49>/Wait_For_Valid_Position</a>' */</span></td></tr> <tr name="246" id="246"> <td>246</td><td></td></tr> <tr name="247" id="247"> <td>247</td><td> <span class="ct">/* Sum: '<a class="ct blk" blk_line="247"><S49>/Add</a>' incorporates:</span></td></tr> <tr name="248" id="248"> <td>248</td><td><span class="ct"> * Constant: '<a class="ct blk" blk_line="248"><S49>/Offset_Between_Encoder_Zero_And_Mechanical_Zero</a>'</span></td></tr> <tr name="249" id="249"> <td>249</td><td><span class="ct"> * Gain: '<a class="ct blk" blk_line="249"><S49>/radians_per_counts</a>'</span></td></tr> <tr name="250" id="250"> <td>250</td><td><span class="ct"> * Inport: '<a class="ct blk" blk_line="250"><Root>/sensors</a>'</span></td></tr> <tr name="251" id="251"> <td>251</td><td><span class="ct"> */</span></td></tr> <tr name="252" id="252"> <td>252</td><td> <a id="252c3" class="tk">rotor_position</a> = (0.000785398181F * ((<a id="252c41" class="tk">real32_T</a>)<a id="252c50" class="tk">sensors</a>-><a id="252c59" class="tk">encoder_counter</a>)) +</td></tr> <tr name="253" id="253"> <td>253</td><td> <a id="253c5" class="tk">ctrlParams</a>.<a id="253c16" class="tk">EncoderToMechanicalZeroOffsetRads</a>;</td></tr> <tr name="254" id="254"> <td>254</td><td> <span class="kw">if</span> (<a id="254c7" class="tk">M</a>-><a id="254c10" class="tk">Timing</a>.<a id="254c17" class="tk">TaskCounters</a>.<a id="254c30" class="tk">TID</a>[1] == 0) <span class="br">{</span></td></tr> <tr name="255" id="255"> <td>255</td><td> <span class="ct">/* Gain: '<a class="ct blk" blk_line="255"><S55>/Wrap_To_Pi</a>' incorporates:</span></td></tr> <tr name="256" id="256"> <td>256</td><td><span class="ct"> * DataTypeConversion: '<a class="ct blk" blk_line="256"><S55>/Convert_to_Uint32</a>'</span></td></tr> <tr name="257" id="257"> <td>257</td><td><span class="ct"> * Gain: '<a class="ct blk" blk_line="257"><S55>/Scale_Input</a>'</span></td></tr> <tr name="258" id="258"> <td>258</td><td><span class="ct"> */</span></td></tr> <tr name="259" id="259"> <td>259</td><td> <a id="259c5" class="tk">Wrap_To_Pi</a> = (((<a id="259c21" class="tk">int32_T</a>)(1.70891312E+8F * <a id="259c47" class="tk">rotor_position</a>)) << 2);</td></tr> <tr name="260" id="260"> <td>260</td><td></td></tr> <tr name="261" id="261"> <td>261</td><td> <span class="ct">/* Gain: '<a class="ct blk" blk_line="261"><S55>/Scale_Output</a>' incorporates:</span></td></tr> <tr name="262" id="262"> <td>262</td><td><span class="ct"> * DataTypeConversion: '<a class="ct blk" blk_line="262"><S55>/Difference_to_Single</a>'</span></td></tr> <tr name="263" id="263"> <td>263</td><td><span class="ct"> * Delay: '<a class="ct blk" blk_line="263"><S55>/Position_Delay</a>'</span></td></tr> <tr name="264" id="264"> <td>264</td><td><span class="ct"> * Sum: '<a class="ct blk" blk_line="264"><S55>/Difference_Wrap</a>'</span></td></tr> <tr name="265" id="265"> <td>265</td><td><span class="ct"> */</span></td></tr> <tr name="266" id="266"> <td>266</td><td> <a id="266c5" class="tk">velocity_measured</a> = ((<a id="266c27" class="tk">real32_T</a>)(<a id="266c37" class="tk">Wrap_To_Pi</a> - <a id="266c50" class="tk">DWork</a>.<a id="266c56" class="tk">Position_Delay_DSTATE</a>)) *</td></tr> <tr name="267" id="267"> <td>267</td><td> 2.92583621E-7F;</td></tr> <tr name="268" id="268"> <td>268</td><td></td></tr> <tr name="269" id="269"> <td>269</td><td> <span class="ct">/* Chart: '<a class="ct blk" blk_line="269"><S1>/Controller_Mode_Scheduler</a>' incorporates:</span></td></tr> <tr name="270" id="270"> <td>270</td><td><span class="ct"> * Inport: '<a class="ct blk" blk_line="270"><Root>/command_type</a>'</span></td></tr> <tr name="271" id="271"> <td>271</td><td><span class="ct"> * Inport: '<a class="ct blk" blk_line="271"><Root>/command_value</a>'</span></td></tr> <tr name="272" id="272"> <td>272</td><td><span class="ct"> * Inport: '<a class="ct blk" blk_line="272"><Root>/motor_on</a>'</span></td></tr> <tr name="273" id="273"> <td>273</td><td><span class="ct"> */</span></td></tr> <tr name="274" id="274"> <td>274</td><td> <span class="ct">/* Gateway: Mode_Scheduler/Controller_Mode_Scheduler */</span></td></tr> <tr name="275" id="275"> <td>275</td><td> <span class="ct">/* During: Mode_Scheduler/Controller_Mode_Scheduler */</span></td></tr> <tr name="276" id="276"> <td>276</td><td> <span class="kw">if</span> (<a id="276c9" class="tk">DWork</a>.<a id="276c15" class="tk">is_c1_rtwdemo_pmsmfoc</a> == <a id="276c40" class="tk">IN_Motor_On</a>) <span class="br">{</span></td></tr> <tr name="277" id="277"> <td>277</td><td> <span class="ct">/* During 'Motor_On': '<a class="ct blk" blk_line="277"><S4>:338</a>' */</span></td></tr> <tr name="278" id="278"> <td>278</td><td> <span class="kw">if</span> (<a id="278c11" class="tk">DWork</a>.<a id="278c17" class="tk">error_l</a> != 0) <span class="br">{</span></td></tr> <tr name="279" id="279"> <td>279</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="279"><S4>:339</a>' */</span></td></tr> <tr name="280" id="280"> <td>280</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="280"><S4>:353</a>' */</span></td></tr> <tr name="281" id="281"> <td>281</td><td> <span class="ct">/* Exit Internal 'Motor_On': '<a class="ct blk" blk_line="281"><S4>:338</a>' */</span></td></tr> <tr name="282" id="282"> <td>282</td><td> <span class="ct">/* Exit Internal 'Motor_Control': '<a class="ct blk" blk_line="282"><S4>:344</a>' */</span></td></tr> <tr name="283" id="283"> <td>283</td><td> <a id="283c9" class="tk">DWork</a>.<a id="283c15" class="tk">is_Motor_Control</a> = <a id="283c34" class="tk">IN_NO_ACTIVE_CHILD</a>;</td></tr> <tr name="284" id="284"> <td>284</td><td> <a id="284c9" class="tk">DWork</a>.<a id="284c15" class="tk">is_Motor_On</a> = <a id="284c29" class="tk">IN_NO_ACTIVE_CHILD</a>;</td></tr> <tr name="285" id="285"> <td>285</td><td> <a id="285c9" class="tk">DWork</a>.<a id="285c15" class="tk">is_c1_rtwdemo_pmsmfoc</a> = <a id="285c39" class="tk">IN_Stand_By</a>;</td></tr> <tr name="286" id="286"> <td>286</td><td></td></tr> <tr name="287" id="287"> <td>287</td><td> <span class="ct">/* Entry 'Stand_By': '<a class="ct blk" blk_line="287"><S4>:154</a>' */</span></td></tr> <tr name="288" id="288"> <td>288</td><td> <a id="288c9" class="tk">controller_mode</a> = <a id="288c27" class="tk">StandBy</a>;</td></tr> <tr name="289" id="289"> <td>289</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="289c18" class="tk">DWork</a>.<a id="289c24" class="tk">is_Motor_On</a> == <a id="289c39" class="tk">IN_Motor_Control</a>) <span class="br">{</span></td></tr> <tr name="290" id="290"> <td>290</td><td> <span class="ct">/* During 'Motor_Control': '<a class="ct blk" blk_line="290"><S4>:344</a>' */</span></td></tr> <tr name="291" id="291"> <td>291</td><td> <span class="kw">if</span> (!(<a id="291c15" class="tk">motor_on</a> != 0)) <span class="br">{</span></td></tr> <tr name="292" id="292"> <td>292</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="292"><S4>:282</a>' */</span></td></tr> <tr name="293" id="293"> <td>293</td><td> <span class="ct">/* Exit Internal 'Motor_Control': '<a class="ct blk" blk_line="293"><S4>:344</a>' */</span></td></tr> <tr name="294" id="294"> <td>294</td><td> <a id="294c11" class="tk">DWork</a>.<a id="294c17" class="tk">is_Motor_Control</a> = <a id="294c36" class="tk">IN_NO_ACTIVE_CHILD</a>;</td></tr> <tr name="295" id="295"> <td>295</td><td> <a id="295c11" class="tk">DWork</a>.<a id="295c17" class="tk">is_Motor_On</a> = <a id="295c31" class="tk">IN_Ramp_To_Stop</a>;</td></tr> <tr name="296" id="296"> <td>296</td><td></td></tr> <tr name="297" id="297"> <td>297</td><td> <span class="ct">/* Entry 'Ramp_To_Stop': '<a class="ct blk" blk_line="297"><S4>:270</a>' */</span></td></tr> <tr name="298" id="298"> <td>298</td><td> <a id="298c11" class="tk">controller_mode</a> = <a id="298c29" class="tk">VelocityControl</a>;</td></tr> <tr name="299" id="299"> <td>299</td><td> <a id="299c11" class="tk">DWork</a>.<a id="299c17" class="tk">velocity_command</a> = 0.0F;</td></tr> <tr name="300" id="300"> <td>300</td><td> <a id="300c11" class="tk">DWork</a>.<a id="300c17" class="tk">torque_command</a> = 0.0F;</td></tr> <tr name="301" id="301"> <td>301</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="302" id="302"> <td>302</td><td> <span class="kw">switch</span> (<a id="302c19" class="tk">DWork</a>.<a id="302c25" class="tk">is_Motor_Control</a>) <span class="br">{</span></td></tr> <tr name="303" id="303"> <td>303</td><td> <span class="kw">case</span> <a id="303c17" class="tk">IN_Position_Control</a>:</td></tr> <tr name="304" id="304"> <td>304</td><td> <span class="ct">/* During 'Position_Control': '<a class="ct blk" blk_line="304"><S4>:226</a>' */</span></td></tr> <tr name="305" id="305"> <td>305</td><td> <a id="305c13" class="tk">DWork</a>.<a id="305c19" class="tk">position_command</a> = <a id="305c38" class="tk">current_request</a>;</td></tr> <tr name="306" id="306"> <td>306</td><td> <span class="kw">break</span>;</td></tr> <tr name="307" id="307"> <td>307</td><td></td></tr> <tr name="308" id="308"> <td>308</td><td> <span class="kw">case</span> <a id="308c17" class="tk">IN_Startup_Open_Loop_Control</a>:</td></tr> <tr name="309" id="309"> <td>309</td><td> <span class="ct">/* During 'Startup_Open_Loop_Control': '<a class="ct blk" blk_line="309"><S4>:103</a>' */</span></td></tr> <tr name="310" id="310"> <td>310</td><td> <span class="kw">if</span> (<a id="310c17" class="tk">DWork</a>.<a id="310c23" class="tk">Position_Valid</a> != 0) <span class="br">{</span></td></tr> <tr name="311" id="311"> <td>311</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="311"><S4>:157</a>' */</span></td></tr> <tr name="312" id="312"> <td>312</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="312"><S4>:233</a>' */</span></td></tr> <tr name="313" id="313"> <td>313</td><td> <span class="kw">switch</span> (<a id="313c23" class="tk">command_type</a>) <span class="br">{</span></td></tr> <tr name="314" id="314"> <td>314</td><td> <span class="kw">case</span> <a id="314c21" class="tk">Velocity</a>:</td></tr> <tr name="315" id="315"> <td>315</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="315"><S4>:162</a>' */</span></td></tr> <tr name="316" id="316"> <td>316</td><td> <a id="316c17" class="tk">DWork</a>.<a id="316c23" class="tk">is_Motor_Control</a> = <a id="316c42" class="tk">IN_Velocity_Control</a>;</td></tr> <tr name="317" id="317"> <td>317</td><td></td></tr> <tr name="318" id="318"> <td>318</td><td> <span class="ct">/* Entry 'Velocity_Control': '<a class="ct blk" blk_line="318"><S4>:108</a>' */</span></td></tr> <tr name="319" id="319"> <td>319</td><td> <a id="319c17" class="tk">controller_mode</a> = <a id="319c35" class="tk">VelocityControl</a>;</td></tr> <tr name="320" id="320"> <td>320</td><td> <a id="320c17" class="tk">DWork</a>.<a id="320c23" class="tk">velocity_command</a> = <a id="320c42" class="tk">current_request</a>;</td></tr> <tr name="321" id="321"> <td>321</td><td> <span class="kw">break</span>;</td></tr> <tr name="322" id="322"> <td>322</td><td></td></tr> <tr name="323" id="323"> <td>323</td><td> <span class="kw">case</span> <a id="323c21" class="tk">Position</a>:</td></tr> <tr name="324" id="324"> <td>324</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="324"><S4>:235</a>' */</span></td></tr> <tr name="325" id="325"> <td>325</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="325"><S4>:234</a>' */</span></td></tr> <tr name="326" id="326"> <td>326</td><td> <a id="326c17" class="tk">DWork</a>.<a id="326c23" class="tk">is_Motor_Control</a> = <a id="326c42" class="tk">IN_Position_Control</a>;</td></tr> <tr name="327" id="327"> <td>327</td><td></td></tr> <tr name="328" id="328"> <td>328</td><td> <span class="ct">/* Entry 'Position_Control': '<a class="ct blk" blk_line="328"><S4>:226</a>' */</span></td></tr> <tr name="329" id="329"> <td>329</td><td> <a id="329c17" class="tk">controller_mode</a> = <a id="329c35" class="tk">PositionControl</a>;</td></tr> <tr name="330" id="330"> <td>330</td><td> <a id="330c17" class="tk">DWork</a>.<a id="330c23" class="tk">position_command</a> = <a id="330c42" class="tk">current_request</a>;</td></tr> <tr name="331" id="331"> <td>331</td><td> <span class="kw">break</span>;</td></tr> <tr name="332" id="332"> <td>332</td><td></td></tr> <tr name="333" id="333"> <td>333</td><td> <span class="kw">default</span>:</td></tr> <tr name="334" id="334"> <td>334</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="334"><S4>:237</a>' */</span></td></tr> <tr name="335" id="335"> <td>335</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="335"><S4>:158</a>' */</span></td></tr> <tr name="336" id="336"> <td>336</td><td> <span class="ct">/* [command_type==Torque] */</span></td></tr> <tr name="337" id="337"> <td>337</td><td> <a id="337c17" class="tk">DWork</a>.<a id="337c23" class="tk">is_Motor_Control</a> = <a id="337c42" class="tk">IN_Torque_Control</a>;</td></tr> <tr name="338" id="338"> <td>338</td><td></td></tr> <tr name="339" id="339"> <td>339</td><td> <span class="ct">/* Entry 'Torque_Control': '<a class="ct blk" blk_line="339"><S4>:220</a>' */</span></td></tr> <tr name="340" id="340"> <td>340</td><td> <a id="340c17" class="tk">controller_mode</a> = <a id="340c35" class="tk">TorqueControl</a>;</td></tr> <tr name="341" id="341"> <td>341</td><td> <a id="341c17" class="tk">DWork</a>.<a id="341c23" class="tk">torque_command</a> = <a id="341c40" class="tk">current_request</a>;</td></tr> <tr name="342" id="342"> <td>342</td><td> <span class="kw">break</span>;</td></tr> <tr name="343" id="343"> <td>343</td><td> <span class="br">}</span></td></tr> <tr name="344" id="344"> <td>344</td><td> <span class="br">}</span></td></tr> <tr name="345" id="345"> <td>345</td><td> <span class="kw">break</span>;</td></tr> <tr name="346" id="346"> <td>346</td><td></td></tr> <tr name="347" id="347"> <td>347</td><td> <span class="kw">case</span> <a id="347c17" class="tk">IN_Torque_Control</a>:</td></tr> <tr name="348" id="348"> <td>348</td><td> <span class="ct">/* During 'Torque_Control': '<a class="ct blk" blk_line="348"><S4>:220</a>' */</span></td></tr> <tr name="349" id="349"> <td>349</td><td> <a id="349c13" class="tk">DWork</a>.<a id="349c19" class="tk">torque_command</a> = <a id="349c36" class="tk">current_request</a>;</td></tr> <tr name="350" id="350"> <td>350</td><td> <span class="kw">break</span>;</td></tr> <tr name="351" id="351"> <td>351</td><td></td></tr> <tr name="352" id="352"> <td>352</td><td> <span class="kw">default</span>:</td></tr> <tr name="353" id="353"> <td>353</td><td> <span class="ct">/* During 'Velocity_Control': '<a class="ct blk" blk_line="353"><S4>:108</a>' */</span></td></tr> <tr name="354" id="354"> <td>354</td><td> <a id="354c13" class="tk">DWork</a>.<a id="354c19" class="tk">velocity_command</a> = <a id="354c38" class="tk">current_request</a>;</td></tr> <tr name="355" id="355"> <td>355</td><td> <span class="kw">break</span>;</td></tr> <tr name="356" id="356"> <td>356</td><td> <span class="br">}</span></td></tr> <tr name="357" id="357"> <td>357</td><td> <span class="br">}</span></td></tr> <tr name="358" id="358"> <td>358</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="359" id="359"> <td>359</td><td> <span class="ct">/* During 'Ramp_To_Stop': '<a class="ct blk" blk_line="359"><S4>:270</a>' */</span></td></tr> <tr name="360" id="360"> <td>360</td><td> <span class="kw">if</span> (((<a id="360c15" class="tk">real32_T</a>)<a id="360c24" class="tk">fabs</a>(<a id="360c29" class="tk">velocity_measured</a>)) < <a id="360c51" class="tk">ctrlParams</a>.<a id="360c62" class="tk">RampToStopVelocity</a>)</td></tr> <tr name="361" id="361"> <td>361</td><td> <span class="br">{</span></td></tr> <tr name="362" id="362"> <td>362</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="362"><S4>:169</a>' */</span></td></tr> <tr name="363" id="363"> <td>363</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="363"><S4>:355</a>' */</span></td></tr> <tr name="364" id="364"> <td>364</td><td> <a id="364c11" class="tk">DWork</a>.<a id="364c17" class="tk">is_Motor_On</a> = <a id="364c31" class="tk">IN_NO_ACTIVE_CHILD</a>;</td></tr> <tr name="365" id="365"> <td>365</td><td> <a id="365c11" class="tk">DWork</a>.<a id="365c17" class="tk">is_c1_rtwdemo_pmsmfoc</a> = <a id="365c41" class="tk">IN_Stand_By</a>;</td></tr> <tr name="366" id="366"> <td>366</td><td></td></tr> <tr name="367" id="367"> <td>367</td><td> <span class="ct">/* Entry 'Stand_By': '<a class="ct blk" blk_line="367"><S4>:154</a>' */</span></td></tr> <tr name="368" id="368"> <td>368</td><td> <a id="368c11" class="tk">controller_mode</a> = <a id="368c29" class="tk">StandBy</a>;</td></tr> <tr name="369" id="369"> <td>369</td><td> <span class="br">}</span></td></tr> <tr name="370" id="370"> <td>370</td><td> <span class="br">}</span></td></tr> <tr name="371" id="371"> <td>371</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="372" id="372"> <td>372</td><td> <span class="ct">/* During 'Stand_By': '<a class="ct blk" blk_line="372"><S4>:154</a>' */</span></td></tr> <tr name="373" id="373"> <td>373</td><td> <span class="kw">if</span> ((<a id="373c12" class="tk">motor_on</a> != 0) && (!(<a id="373c33" class="tk">DWork</a>.<a id="373c39" class="tk">error_l</a> != 0))) <span class="br">{</span></td></tr> <tr name="374" id="374"> <td>374</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="374"><S4>:164</a>' */</span></td></tr> <tr name="375" id="375"> <td>375</td><td> <span class="kw">if</span> (!(<a id="375c15" class="tk">DWork</a>.<a id="375c21" class="tk">Position_Valid</a> != 0)) <span class="br">{</span></td></tr> <tr name="376" id="376"> <td>376</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="376"><S4>:133</a>' */</span></td></tr> <tr name="377" id="377"> <td>377</td><td> <a id="377c11" class="tk">DWork</a>.<a id="377c17" class="tk">is_c1_rtwdemo_pmsmfoc</a> = <a id="377c41" class="tk">IN_Motor_On</a>;</td></tr> <tr name="378" id="378"> <td>378</td><td> <a id="378c11" class="tk">DWork</a>.<a id="378c17" class="tk">is_Motor_On</a> = <a id="378c31" class="tk">IN_Motor_Control</a>;</td></tr> <tr name="379" id="379"> <td>379</td><td> <a id="379c11" class="tk">DWork</a>.<a id="379c17" class="tk">is_Motor_Control</a> = <a id="379c36" class="tk">IN_Startup_Open_Loop_Control</a>;</td></tr> <tr name="380" id="380"> <td>380</td><td></td></tr> <tr name="381" id="381"> <td>381</td><td> <span class="ct">/* Entry 'Startup_Open_Loop_Control': '<a class="ct blk" blk_line="381"><S4>:103</a>' */</span></td></tr> <tr name="382" id="382"> <td>382</td><td> <a id="382c11" class="tk">controller_mode</a> = <a id="382c29" class="tk">Startup</a>;</td></tr> <tr name="383" id="383"> <td>383</td><td> <a id="383c11" class="tk">DWork</a>.<a id="383c17" class="tk">torque_command</a> = <a id="383c34" class="tk">ctrlParams</a>.<a id="383c45" class="tk">StartupCurrent</a>;</td></tr> <tr name="384" id="384"> <td>384</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="385" id="385"> <td>385</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="385"><S4>:137</a>' */</span></td></tr> <tr name="386" id="386"> <td>386</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="386"><S4>:233</a>' */</span></td></tr> <tr name="387" id="387"> <td>387</td><td> <span class="kw">switch</span> (<a id="387c19" class="tk">command_type</a>) <span class="br">{</span></td></tr> <tr name="388" id="388"> <td>388</td><td> <span class="kw">case</span> <a id="388c17" class="tk">Velocity</a>:</td></tr> <tr name="389" id="389"> <td>389</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="389"><S4>:162</a>' */</span></td></tr> <tr name="390" id="390"> <td>390</td><td> <a id="390c13" class="tk">DWork</a>.<a id="390c19" class="tk">is_c1_rtwdemo_pmsmfoc</a> = <a id="390c43" class="tk">IN_Motor_On</a>;</td></tr> <tr name="391" id="391"> <td>391</td><td> <a id="391c13" class="tk">DWork</a>.<a id="391c19" class="tk">is_Motor_On</a> = <a id="391c33" class="tk">IN_Motor_Control</a>;</td></tr> <tr name="392" id="392"> <td>392</td><td> <a id="392c13" class="tk">DWork</a>.<a id="392c19" class="tk">is_Motor_Control</a> = <a id="392c38" class="tk">IN_Velocity_Control</a>;</td></tr> <tr name="393" id="393"> <td>393</td><td></td></tr> <tr name="394" id="394"> <td>394</td><td> <span class="ct">/* Entry 'Velocity_Control': '<a class="ct blk" blk_line="394"><S4>:108</a>' */</span></td></tr> <tr name="395" id="395"> <td>395</td><td> <a id="395c13" class="tk">controller_mode</a> = <a id="395c31" class="tk">VelocityControl</a>;</td></tr> <tr name="396" id="396"> <td>396</td><td> <a id="396c13" class="tk">DWork</a>.<a id="396c19" class="tk">velocity_command</a> = <a id="396c38" class="tk">current_request</a>;</td></tr> <tr name="397" id="397"> <td>397</td><td> <span class="kw">break</span>;</td></tr> <tr name="398" id="398"> <td>398</td><td></td></tr> <tr name="399" id="399"> <td>399</td><td> <span class="kw">case</span> <a id="399c17" class="tk">Position</a>:</td></tr> <tr name="400" id="400"> <td>400</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="400"><S4>:235</a>' */</span></td></tr> <tr name="401" id="401"> <td>401</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="401"><S4>:234</a>' */</span></td></tr> <tr name="402" id="402"> <td>402</td><td> <a id="402c13" class="tk">DWork</a>.<a id="402c19" class="tk">is_c1_rtwdemo_pmsmfoc</a> = <a id="402c43" class="tk">IN_Motor_On</a>;</td></tr> <tr name="403" id="403"> <td>403</td><td> <a id="403c13" class="tk">DWork</a>.<a id="403c19" class="tk">is_Motor_On</a> = <a id="403c33" class="tk">IN_Motor_Control</a>;</td></tr> <tr name="404" id="404"> <td>404</td><td> <a id="404c13" class="tk">DWork</a>.<a id="404c19" class="tk">is_Motor_Control</a> = <a id="404c38" class="tk">IN_Position_Control</a>;</td></tr> <tr name="405" id="405"> <td>405</td><td></td></tr> <tr name="406" id="406"> <td>406</td><td> <span class="ct">/* Entry 'Position_Control': '<a class="ct blk" blk_line="406"><S4>:226</a>' */</span></td></tr> <tr name="407" id="407"> <td>407</td><td> <a id="407c13" class="tk">controller_mode</a> = <a id="407c31" class="tk">PositionControl</a>;</td></tr> <tr name="408" id="408"> <td>408</td><td> <a id="408c13" class="tk">DWork</a>.<a id="408c19" class="tk">position_command</a> = <a id="408c38" class="tk">current_request</a>;</td></tr> <tr name="409" id="409"> <td>409</td><td> <span class="kw">break</span>;</td></tr> <tr name="410" id="410"> <td>410</td><td></td></tr> <tr name="411" id="411"> <td>411</td><td> <span class="kw">default</span>:</td></tr> <tr name="412" id="412"> <td>412</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="412"><S4>:237</a>' */</span></td></tr> <tr name="413" id="413"> <td>413</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="413"><S4>:158</a>' */</span></td></tr> <tr name="414" id="414"> <td>414</td><td> <span class="ct">/* [command_type==Torque] */</span></td></tr> <tr name="415" id="415"> <td>415</td><td> <a id="415c13" class="tk">DWork</a>.<a id="415c19" class="tk">is_c1_rtwdemo_pmsmfoc</a> = <a id="415c43" class="tk">IN_Motor_On</a>;</td></tr> <tr name="416" id="416"> <td>416</td><td> <a id="416c13" class="tk">DWork</a>.<a id="416c19" class="tk">is_Motor_On</a> = <a id="416c33" class="tk">IN_Motor_Control</a>;</td></tr> <tr name="417" id="417"> <td>417</td><td> <a id="417c13" class="tk">DWork</a>.<a id="417c19" class="tk">is_Motor_Control</a> = <a id="417c38" class="tk">IN_Torque_Control</a>;</td></tr> <tr name="418" id="418"> <td>418</td><td></td></tr> <tr name="419" id="419"> <td>419</td><td> <span class="ct">/* Entry 'Torque_Control': '<a class="ct blk" blk_line="419"><S4>:220</a>' */</span></td></tr> <tr name="420" id="420"> <td>420</td><td> <a id="420c13" class="tk">controller_mode</a> = <a id="420c31" class="tk">TorqueControl</a>;</td></tr> <tr name="421" id="421"> <td>421</td><td> <a id="421c13" class="tk">DWork</a>.<a id="421c19" class="tk">torque_command</a> = <a id="421c36" class="tk">current_request</a>;</td></tr> <tr name="422" id="422"> <td>422</td><td> <span class="kw">break</span>;</td></tr> <tr name="423" id="423"> <td>423</td><td> <span class="br">}</span></td></tr> <tr name="424" id="424"> <td>424</td><td> <span class="br">}</span></td></tr> <tr name="425" id="425"> <td>425</td><td> <span class="br">}</span></td></tr> <tr name="426" id="426"> <td>426</td><td> <span class="br">}</span></td></tr> <tr name="427" id="427"> <td>427</td><td></td></tr> <tr name="428" id="428"> <td>428</td><td> <span class="ct">/* End of Chart: '<a class="ct blk" blk_line="428"><S1>/Controller_Mode_Scheduler</a>' */</span></td></tr> <tr name="429" id="429"> <td>429</td><td></td></tr> <tr name="430" id="430"> <td>430</td><td> <span class="ct">/* RelationalOperator: '<a class="ct blk" blk_line="430"><S51>/Relational Operator</a>' incorporates:</span></td></tr> <tr name="431" id="431"> <td>431</td><td><span class="ct"> * Constant: '<a class="ct blk" blk_line="431"><S64>/Constant</a>'</span></td></tr> <tr name="432" id="432"> <td>432</td><td><span class="ct"> */</span></td></tr> <tr name="433" id="433"> <td>433</td><td> <a id="433c5" class="tk">DWork</a>.<a id="433c11" class="tk">RelationalOperator_a</a> = (<a id="433c35" class="tk">controller_mode</a> == <a id="433c54" class="tk">Startup</a>);</td></tr> <tr name="434" id="434"> <td>434</td><td> <span class="br">}</span></td></tr> <tr name="435" id="435"> <td>435</td><td></td></tr> <tr name="436" id="436"> <td>436</td><td> <span class="ct">/* Outputs for Enabled SubSystem: '<a class="ct blk" blk_line="436"><S51>/Open Loop Position</a>' incorporates:</span></td></tr> <tr name="437" id="437"> <td>437</td><td><span class="ct"> * EnablePort: '<a class="ct blk" blk_line="437"><S65>/Enable</a>'</span></td></tr> <tr name="438" id="438"> <td>438</td><td><span class="ct"> */</span></td></tr> <tr name="439" id="439"> <td>439</td><td> <span class="kw">if</span> (<a id="439c7" class="tk">DWork</a>.<a id="439c13" class="tk">RelationalOperator_a</a>) <span class="br">{</span></td></tr> <tr name="440" id="440"> <td>440</td><td> <span class="kw">if</span> (!<a id="440c10" class="tk">DWork</a>.<a id="440c16" class="tk">OpenLoopPosition_MODE</a>) <span class="br">{</span></td></tr> <tr name="441" id="441"> <td>441</td><td> <span class="ct">/* InitializeConditions for DiscreteIntegrator: '<a class="ct blk" blk_line="441"><S65>/Integrate_To_Position</a>' */</span></td></tr> <tr name="442" id="442"> <td>442</td><td> <a id="442c7" class="tk">DWork</a>.<a id="442c13" class="tk">Integrate_To_Position_DSTATE</a> = 0.0F;</td></tr> <tr name="443" id="443"> <td>443</td><td></td></tr> <tr name="444" id="444"> <td>444</td><td> <span class="ct">/* InitializeConditions for DiscreteIntegrator: '<a class="ct blk" blk_line="444"><S65>/Integrate_To_Velocity</a>' */</span></td></tr> <tr name="445" id="445"> <td>445</td><td> <a id="445c7" class="tk">DWork</a>.<a id="445c13" class="tk">Integrate_To_Velocity_DSTATE</a> = 0.0F;</td></tr> <tr name="446" id="446"> <td>446</td><td> <a id="446c7" class="tk">DWork</a>.<a id="446c13" class="tk">OpenLoopPosition_MODE</a> = true;</td></tr> <tr name="447" id="447"> <td>447</td><td> <span class="br">}</span></td></tr> <tr name="448" id="448"> <td>448</td><td></td></tr> <tr name="449" id="449"> <td>449</td><td> <span class="ct">/* DiscreteIntegrator: '<a class="ct blk" blk_line="449"><S65>/Integrate_To_Position</a>' */</span></td></tr> <tr name="450" id="450"> <td>450</td><td> <a id="450c5" class="tk">DWork</a>.<a id="450c11" class="tk">position</a> = <a id="450c22" class="tk">DWork</a>.<a id="450c28" class="tk">Integrate_To_Position_DSTATE</a>;</td></tr> <tr name="451" id="451"> <td>451</td><td></td></tr> <tr name="452" id="452"> <td>452</td><td> <span class="ct">/* Update for DiscreteIntegrator: '<a class="ct blk" blk_line="452"><S65>/Integrate_To_Position</a>' incorporates:</span></td></tr> <tr name="453" id="453"> <td>453</td><td><span class="ct"> * DiscreteIntegrator: '<a class="ct blk" blk_line="453"><S65>/Integrate_To_Velocity</a>'</span></td></tr> <tr name="454" id="454"> <td>454</td><td><span class="ct"> */</span></td></tr> <tr name="455" id="455"> <td>455</td><td> <a id="455c5" class="tk">DWork</a>.<a id="455c11" class="tk">Integrate_To_Position_DSTATE</a> += 4.0E-5F *</td></tr> <tr name="456" id="456"> <td>456</td><td> <a id="456c7" class="tk">DWork</a>.<a id="456c13" class="tk">Integrate_To_Velocity_DSTATE</a>;</td></tr> <tr name="457" id="457"> <td>457</td><td></td></tr> <tr name="458" id="458"> <td>458</td><td> <span class="ct">/* Update for DiscreteIntegrator: '<a class="ct blk" blk_line="458"><S65>/Integrate_To_Velocity</a>' incorporates:</span></td></tr> <tr name="459" id="459"> <td>459</td><td><span class="ct"> * Constant: '<a class="ct blk" blk_line="459"><S65>/Startup_Acceleration_Constant</a>'</span></td></tr> <tr name="460" id="460"> <td>460</td><td><span class="ct"> */</span></td></tr> <tr name="461" id="461"> <td>461</td><td> <a id="461c5" class="tk">DWork</a>.<a id="461c11" class="tk">Integrate_To_Velocity_DSTATE</a> += 4.0E-5F *</td></tr> <tr name="462" id="462"> <td>462</td><td> <a id="462c7" class="tk">ctrlParams</a>.<a id="462c18" class="tk">StartupAcceleration</a>;</td></tr> <tr name="463" id="463"> <td>463</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="464" id="464"> <td>464</td><td> <span class="kw">if</span> (<a id="464c9" class="tk">DWork</a>.<a id="464c15" class="tk">OpenLoopPosition_MODE</a>) <span class="br">{</span></td></tr> <tr name="465" id="465"> <td>465</td><td> <a id="465c7" class="tk">DWork</a>.<a id="465c13" class="tk">OpenLoopPosition_MODE</a> = false;</td></tr> <tr name="466" id="466"> <td>466</td><td> <span class="br">}</span></td></tr> <tr name="467" id="467"> <td>467</td><td> <span class="br">}</span></td></tr> <tr name="468" id="468"> <td>468</td><td></td></tr> <tr name="469" id="469"> <td>469</td><td> <span class="ct">/* End of Outputs for SubSystem: '<a class="ct blk" blk_line="469"><S51>/Open Loop Position</a>' */</span></td></tr> <tr name="470" id="470"> <td>470</td><td></td></tr> <tr name="471" id="471"> <td>471</td><td> <span class="ct">/* Switch: '<a class="ct blk" blk_line="471"><S51>/Switch</a>' */</span></td></tr> <tr name="472" id="472"> <td>472</td><td> <span class="kw">if</span> (<a id="472c7" class="tk">DWork</a>.<a id="472c13" class="tk">RelationalOperator_a</a>) <span class="br">{</span></td></tr> <tr name="473" id="473"> <td>473</td><td> <a id="473c5" class="tk">Switch_fr</a> = <a id="473c17" class="tk">DWork</a>.<a id="473c23" class="tk">position</a>;</td></tr> <tr name="474" id="474"> <td>474</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="475" id="475"> <td>475</td><td> <a id="475c5" class="tk">Switch_fr</a> = <a id="475c17" class="tk">rotor_position</a>;</td></tr> <tr name="476" id="476"> <td>476</td><td> <span class="br">}</span></td></tr> <tr name="477" id="477"> <td>477</td><td></td></tr> <tr name="478" id="478"> <td>478</td><td> <span class="ct">/* End of Switch: '<a class="ct blk" blk_line="478"><S51>/Switch</a>' */</span></td></tr> <tr name="479" id="479"> <td>479</td><td></td></tr> <tr name="480" id="480"> <td>480</td><td> <span class="ct">/* Gain: '<a class="ct blk" blk_line="480"><S14>/number_of_pole_pairs</a>' */</span></td></tr> <tr name="481" id="481"> <td>481</td><td> <a id="481c3" class="tk">electrical_angle</a> = <a id="481c22" class="tk">ctrlParams</a>.<a id="481c33" class="tk">PmsmPolePairs</a> * <a id="481c49" class="tk">Switch_fr</a>;</td></tr> <tr name="482" id="482"> <td>482</td><td></td></tr> <tr name="483" id="483"> <td>483</td><td> <span class="ct">/* Trigonometry: '<a class="ct blk" blk_line="483"><S14>/sine_cosine</a>' */</span></td></tr> <tr name="484" id="484"> <td>484</td><td> <a id="484c3" class="tk">sin_coefficient</a> = <a id="484c21" class="tk">arm_sin_f32</a>(<a id="484c33" class="tk">electrical_angle</a>);</td></tr> <tr name="485" id="485"> <td>485</td><td> <a id="485c3" class="tk">cos_coefficient</a> = <a id="485c21" class="tk">arm_cos_f32</a>(<a id="485c33" class="tk">electrical_angle</a>);</td></tr> <tr name="486" id="486"> <td>486</td><td></td></tr> <tr name="487" id="487"> <td>487</td><td> <span class="ct">/* Gain: '<a class="ct blk" blk_line="487"><S21>/Beta_Gain</a>' incorporates:</span></td></tr> <tr name="488" id="488"> <td>488</td><td><span class="ct"> * Gain: '<a class="ct blk" blk_line="488"><S21>/B_Gain</a>'</span></td></tr> <tr name="489" id="489"> <td>489</td><td><span class="ct"> * Sum: '<a class="ct blk" blk_line="489"><S21>/Add</a>'</span></td></tr> <tr name="490" id="490"> <td>490</td><td><span class="ct"> */</span></td></tr> <tr name="491" id="491"> <td>491</td><td> <a id="491c3" class="tk">SignDeltaU_b</a> = ((2.0F * <a id="491c27" class="tk">phase_currents</a>[1]) + <a id="491c48" class="tk">phase_currents</a>[0]) * 0.577350259F;</td></tr> <tr name="492" id="492"> <td>492</td><td></td></tr> <tr name="493" id="493"> <td>493</td><td> <span class="ct">/* Sum: '<a class="ct blk" blk_line="493"><S12>/Sum2</a>' incorporates:</span></td></tr> <tr name="494" id="494"> <td>494</td><td><span class="ct"> * Constant: '<a class="ct blk" blk_line="494"><S12>/d_current_command (A)</a>'</span></td></tr> <tr name="495" id="495"> <td>495</td><td><span class="ct"> * Product: '<a class="ct blk" blk_line="495"><S22>/Product2</a>'</span></td></tr> <tr name="496" id="496"> <td>496</td><td><span class="ct"> * Product: '<a class="ct blk" blk_line="496"><S22>/Product3</a>'</span></td></tr> <tr name="497" id="497"> <td>497</td><td><span class="ct"> * Sum: '<a class="ct blk" blk_line="497"><S22>/Add1</a>'</span></td></tr> <tr name="498" id="498"> <td>498</td><td><span class="ct"> */</span></td></tr> <tr name="499" id="499"> <td>499</td><td> <a id="499c3" class="tk">d_current_error</a> = 0.0F - ((<a id="499c30" class="tk">phase_currents</a>[0] * <a id="499c50" class="tk">cos_coefficient</a>) +</td></tr> <tr name="500" id="500"> <td>500</td><td> (<a id="500c6" class="tk">SignDeltaU_b</a> * <a id="500c21" class="tk">sin_coefficient</a>));</td></tr> <tr name="501" id="501"> <td>501</td><td></td></tr> <tr name="502" id="502"> <td>502</td><td> <span class="ct">/* DataTypeConversion: '<a class="ct blk" blk_line="502"><S8>/Enum_To_Int</a>' */</span></td></tr> <tr name="503" id="503"> <td>503</td><td> <a id="503c3" class="tk">Enum_To_Int</a> = (<a id="503c18" class="tk">int16_T</a>)<a id="503c26" class="tk">controller_mode</a>;</td></tr> <tr name="504" id="504"> <td>504</td><td></td></tr> <tr name="505" id="505"> <td>505</td><td> <span class="ct">/* RelationalOperator: '<a class="ct blk" blk_line="505"><S13>/FixPt Relational Operator</a>' incorporates:</span></td></tr> <tr name="506" id="506"> <td>506</td><td><span class="ct"> * UnitDelay: '<a class="ct blk" blk_line="506"><S13>/Delay Input1</a>'</span></td></tr> <tr name="507" id="507"> <td>507</td><td><span class="ct"> */</span></td></tr> <tr name="508" id="508"> <td>508</td><td> <a id="508c3" class="tk">FixPtRelationalOperator</a> = (<a id="508c30" class="tk">uint8_T</a>)(<a id="508c39" class="tk">Enum_To_Int</a> != <a id="508c54" class="tk">DWork</a>.<a id="508c60" class="tk">DelayInput1_DSTATE</a>);</td></tr> <tr name="509" id="509"> <td>509</td><td></td></tr> <tr name="510" id="510"> <td>510</td><td> <span class="ct">/* DiscreteIntegrator: '<a class="ct blk" blk_line="510"><S17>/Integrator</a>' */</span></td></tr> <tr name="511" id="511"> <td>511</td><td> <span class="kw">if</span> ((<a id="511c8" class="tk">FixPtRelationalOperator</a> != 0) || (<a id="511c42" class="tk">DWork</a>.<a id="511c48" class="tk">Integrator_PrevResetState</a> != 0))</td></tr> <tr name="512" id="512"> <td>512</td><td> <span class="br">{</span></td></tr> <tr name="513" id="513"> <td>513</td><td> <a id="513c5" class="tk">DWork</a>.<a id="513c11" class="tk">Integrator_DSTATE</a> = 0.0F;</td></tr> <tr name="514" id="514"> <td>514</td><td> <span class="br">}</span></td></tr> <tr name="515" id="515"> <td>515</td><td></td></tr> <tr name="516" id="516"> <td>516</td><td> <span class="ct">/* Sum: '<a class="ct blk" blk_line="516"><S17>/Sum</a>' incorporates:</span></td></tr> <tr name="517" id="517"> <td>517</td><td><span class="ct"> * DiscreteIntegrator: '<a class="ct blk" blk_line="517"><S17>/Integrator</a>'</span></td></tr> <tr name="518" id="518"> <td>518</td><td><span class="ct"> * Gain: '<a class="ct blk" blk_line="518"><S17>/Proportional Gain</a>'</span></td></tr> <tr name="519" id="519"> <td>519</td><td><span class="ct"> */</span></td></tr> <tr name="520" id="520"> <td>520</td><td> <a id="520c3" class="tk">SignDeltaU</a> = (<a id="520c17" class="tk">ctrlParams</a>.<a id="520c28" class="tk">Current_P</a> * <a id="520c40" class="tk">d_current_error</a>) +</td></tr> <tr name="521" id="521"> <td>521</td><td> <a id="521c5" class="tk">DWork</a>.<a id="521c11" class="tk">Integrator_DSTATE</a>;</td></tr> <tr name="522" id="522"> <td>522</td><td></td></tr> <tr name="523" id="523"> <td>523</td><td> <span class="ct">/* Saturate: '<a class="ct blk" blk_line="523"><S17>/Saturate</a>' */</span></td></tr> <tr name="524" id="524"> <td>524</td><td> <span class="kw">if</span> (<a id="524c7" class="tk">SignDeltaU</a> > 12.0F) <span class="br">{</span></td></tr> <tr name="525" id="525"> <td>525</td><td> <a id="525c5" class="tk">Gain1</a> = 12.0F;</td></tr> <tr name="526" id="526"> <td>526</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="526c14" class="tk">SignDeltaU</a> < -12.0F) <span class="br">{</span></td></tr> <tr name="527" id="527"> <td>527</td><td> <a id="527c5" class="tk">Gain1</a> = -12.0F;</td></tr> <tr name="528" id="528"> <td>528</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="529" id="529"> <td>529</td><td> <a id="529c5" class="tk">Gain1</a> = <a id="529c13" class="tk">SignDeltaU</a>;</td></tr> <tr name="530" id="530"> <td>530</td><td> <span class="br">}</span></td></tr> <tr name="531" id="531"> <td>531</td><td></td></tr> <tr name="532" id="532"> <td>532</td><td> <span class="ct">/* End of Saturate: '<a class="ct blk" blk_line="532"><S17>/Saturate</a>' */</span></td></tr> <tr name="533" id="533"> <td>533</td><td> <span class="kw">if</span> (<a id="533c7" class="tk">M</a>-><a id="533c10" class="tk">Timing</a>.<a id="533c17" class="tk">TaskCounters</a>.<a id="533c30" class="tk">TID</a>[1] == 0) <span class="br">{</span></td></tr> <tr name="534" id="534"> <td>534</td><td> <span class="ct">/* SwitchCase: '<a class="ct blk" blk_line="534"><S5>/Switch Case</a>' incorporates:</span></td></tr> <tr name="535" id="535"> <td>535</td><td><span class="ct"> * Inport: '<a class="ct blk" blk_line="535"><S10>/torque_command</a>'</span></td></tr> <tr name="536" id="536"> <td>536</td><td><span class="ct"> */</span></td></tr> <tr name="537" id="537"> <td>537</td><td> <a id="537c5" class="tk">rtPrevAction</a> = <a id="537c20" class="tk">DWork</a>.<a id="537c26" class="tk">SwitchCase_ActiveSubsystem</a>;</td></tr> <tr name="538" id="538"> <td>538</td><td> <span class="kw">switch</span> (<a id="538c13" class="tk">controller_mode</a>) <span class="br">{</span></td></tr> <tr name="539" id="539"> <td>539</td><td> <span class="kw">case</span> <a id="539c11" class="tk">VelocityControl</a>:</td></tr> <tr name="540" id="540"> <td>540</td><td> <a id="540c7" class="tk">DWork</a>.<a id="540c13" class="tk">SwitchCase_ActiveSubsystem</a> = 0;</td></tr> <tr name="541" id="541"> <td>541</td><td> <span class="kw">break</span>;</td></tr> <tr name="542" id="542"> <td>542</td><td></td></tr> <tr name="543" id="543"> <td>543</td><td> <span class="kw">case</span> <a id="543c11" class="tk">PositionControl</a>:</td></tr> <tr name="544" id="544"> <td>544</td><td> <a id="544c7" class="tk">DWork</a>.<a id="544c13" class="tk">SwitchCase_ActiveSubsystem</a> = 1;</td></tr> <tr name="545" id="545"> <td>545</td><td> <span class="kw">break</span>;</td></tr> <tr name="546" id="546"> <td>546</td><td></td></tr> <tr name="547" id="547"> <td>547</td><td> <span class="kw">default</span>:</td></tr> <tr name="548" id="548"> <td>548</td><td> <a id="548c7" class="tk">DWork</a>.<a id="548c13" class="tk">SwitchCase_ActiveSubsystem</a> = 2;</td></tr> <tr name="549" id="549"> <td>549</td><td> <span class="kw">break</span>;</td></tr> <tr name="550" id="550"> <td>550</td><td> <span class="br">}</span></td></tr> <tr name="551" id="551"> <td>551</td><td></td></tr> <tr name="552" id="552"> <td>552</td><td> <span class="kw">switch</span> (<a id="552c13" class="tk">DWork</a>.<a id="552c19" class="tk">SwitchCase_ActiveSubsystem</a>) <span class="br">{</span></td></tr> <tr name="553" id="553"> <td>553</td><td> <span class="kw">case</span> 0:</td></tr> <tr name="554" id="554"> <td>554</td><td> <span class="kw">if</span> (<a id="554c11" class="tk">DWork</a>.<a id="554c17" class="tk">SwitchCase_ActiveSubsystem</a> != <a id="554c47" class="tk">rtPrevAction</a>) <span class="br">{</span></td></tr> <tr name="555" id="555"> <td>555</td><td> <span class="ct">/* InitializeConditions for IfAction SubSystem: '<a class="ct blk" blk_line="555"><S5>/Velocity_Control</a>' incorporates:</span></td></tr> <tr name="556" id="556"> <td>556</td><td><span class="ct"> * InitializeConditions for ActionPort: '<a class="ct blk" blk_line="556"><S11>/Action Port</a>'</span></td></tr> <tr name="557" id="557"> <td>557</td><td><span class="ct"> */</span></td></tr> <tr name="558" id="558"> <td>558</td><td> <span class="ct">/* InitializeConditions for SwitchCase: '<a class="ct blk" blk_line="558"><S5>/Switch Case</a>' incorporates:</span></td></tr> <tr name="559" id="559"> <td>559</td><td><span class="ct"> * InitializeConditions for DiscreteIntegrator: '<a class="ct blk" blk_line="559"><S45>/Integrator</a>'</span></td></tr> <tr name="560" id="560"> <td>560</td><td><span class="ct"> */</span></td></tr> <tr name="561" id="561"> <td>561</td><td> <a id="561c9" class="tk">DWork</a>.<a id="561c15" class="tk">Integrator_DSTATE_f</a> = 0.0F;</td></tr> <tr name="562" id="562"> <td>562</td><td></td></tr> <tr name="563" id="563"> <td>563</td><td> <span class="ct">/* End of InitializeConditions for SubSystem: '<a class="ct blk" blk_line="563"><S5>/Velocity_Control</a>' */</span></td></tr> <tr name="564" id="564"> <td>564</td><td> <span class="br">}</span></td></tr> <tr name="565" id="565"> <td>565</td><td></td></tr> <tr name="566" id="566"> <td>566</td><td> <span class="ct">/* Outputs for IfAction SubSystem: '<a class="ct blk" blk_line="566"><S5>/Velocity_Control</a>' incorporates:</span></td></tr> <tr name="567" id="567"> <td>567</td><td><span class="ct"> * ActionPort: '<a class="ct blk" blk_line="567"><S11>/Action Port</a>'</span></td></tr> <tr name="568" id="568"> <td>568</td><td><span class="ct"> */</span></td></tr> <tr name="569" id="569"> <td>569</td><td> <span class="ct">/* Sum: '<a class="ct blk" blk_line="569"><S11>/Sum2</a>' */</span></td></tr> <tr name="570" id="570"> <td>570</td><td> <a id="570c7" class="tk">velocity_error</a> = <a id="570c24" class="tk">DWork</a>.<a id="570c30" class="tk">velocity_command</a> - <a id="570c49" class="tk">velocity_measured</a>;</td></tr> <tr name="571" id="571"> <td>571</td><td></td></tr> <tr name="572" id="572"> <td>572</td><td> <span class="ct">/* Sum: '<a class="ct blk" blk_line="572"><S45>/Sum</a>' incorporates:</span></td></tr> <tr name="573" id="573"> <td>573</td><td><span class="ct"> * DiscreteIntegrator: '<a class="ct blk" blk_line="573"><S45>/Integrator</a>'</span></td></tr> <tr name="574" id="574"> <td>574</td><td><span class="ct"> * Gain: '<a class="ct blk" blk_line="574"><S45>/Proportional Gain</a>'</span></td></tr> <tr name="575" id="575"> <td>575</td><td><span class="ct"> */</span></td></tr> <tr name="576" id="576"> <td>576</td><td> <a id="576c7" class="tk">electrical_angle</a> = (<a id="576c27" class="tk">ctrlParams</a>.<a id="576c38" class="tk">Velocity_P</a> * <a id="576c51" class="tk">velocity_error</a>) +</td></tr> <tr name="577" id="577"> <td>577</td><td> <a id="577c9" class="tk">DWork</a>.<a id="577c15" class="tk">Integrator_DSTATE_f</a>;</td></tr> <tr name="578" id="578"> <td>578</td><td></td></tr> <tr name="579" id="579"> <td>579</td><td> <span class="ct">/* Saturate: '<a class="ct blk" blk_line="579"><S45>/Saturate</a>' */</span></td></tr> <tr name="580" id="580"> <td>580</td><td> <span class="kw">if</span> (<a id="580c11" class="tk">electrical_angle</a> > 2.0F) <span class="br">{</span></td></tr> <tr name="581" id="581"> <td>581</td><td> <span class="ct">/* SignalConversion: '<a class="ct blk" blk_line="581"><S11>/Isolate_For_Merge</a>' */</span></td></tr> <tr name="582" id="582"> <td>582</td><td> <a id="582c9" class="tk">DWork</a>.<a id="582c15" class="tk">Merge</a> = 2.0F;</td></tr> <tr name="583" id="583"> <td>583</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="583c18" class="tk">electrical_angle</a> < -2.0F) <span class="br">{</span></td></tr> <tr name="584" id="584"> <td>584</td><td> <span class="ct">/* SignalConversion: '<a class="ct blk" blk_line="584"><S11>/Isolate_For_Merge</a>' */</span></td></tr> <tr name="585" id="585"> <td>585</td><td> <a id="585c9" class="tk">DWork</a>.<a id="585c15" class="tk">Merge</a> = -2.0F;</td></tr> <tr name="586" id="586"> <td>586</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="587" id="587"> <td>587</td><td> <span class="ct">/* SignalConversion: '<a class="ct blk" blk_line="587"><S11>/Isolate_For_Merge</a>' */</span></td></tr> <tr name="588" id="588"> <td>588</td><td> <a id="588c9" class="tk">DWork</a>.<a id="588c15" class="tk">Merge</a> = <a id="588c23" class="tk">electrical_angle</a>;</td></tr> <tr name="589" id="589"> <td>589</td><td> <span class="br">}</span></td></tr> <tr name="590" id="590"> <td>590</td><td></td></tr> <tr name="591" id="591"> <td>591</td><td> <span class="ct">/* End of Saturate: '<a class="ct blk" blk_line="591"><S45>/Saturate</a>' */</span></td></tr> <tr name="592" id="592"> <td>592</td><td></td></tr> <tr name="593" id="593"> <td>593</td><td> <span class="ct">/* DeadZone: '<a class="ct blk" blk_line="593"><S46>/DeadZone</a>' */</span></td></tr> <tr name="594" id="594"> <td>594</td><td> <span class="kw">if</span> (<a id="594c11" class="tk">electrical_angle</a> > 2.0F) <span class="br">{</span></td></tr> <tr name="595" id="595"> <td>595</td><td> <a id="595c9" class="tk">electrical_angle</a> -= 2.0F;</td></tr> <tr name="596" id="596"> <td>596</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="596c18" class="tk">electrical_angle</a> >= -2.0F) <span class="br">{</span></td></tr> <tr name="597" id="597"> <td>597</td><td> <a id="597c9" class="tk">electrical_angle</a> = 0.0F;</td></tr> <tr name="598" id="598"> <td>598</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="599" id="599"> <td>599</td><td> <a id="599c9" class="tk">electrical_angle</a> -= -2.0F;</td></tr> <tr name="600" id="600"> <td>600</td><td> <span class="br">}</span></td></tr> <tr name="601" id="601"> <td>601</td><td></td></tr> <tr name="602" id="602"> <td>602</td><td> <span class="ct">/* End of DeadZone: '<a class="ct blk" blk_line="602"><S46>/DeadZone</a>' */</span></td></tr> <tr name="603" id="603"> <td>603</td><td></td></tr> <tr name="604" id="604"> <td>604</td><td> <span class="ct">/* RelationalOperator: '<a class="ct blk" blk_line="604"><S46>/NotEqual</a>' */</span></td></tr> <tr name="605" id="605"> <td>605</td><td> <a id="605c7" class="tk">NotEqual_b</a> = (0.0F != <a id="605c29" class="tk">electrical_angle</a>);</td></tr> <tr name="606" id="606"> <td>606</td><td></td></tr> <tr name="607" id="607"> <td>607</td><td> <span class="ct">/* Signum: '<a class="ct blk" blk_line="607"><S46>/SignDeltaU</a>' */</span></td></tr> <tr name="608" id="608"> <td>608</td><td> <span class="kw">if</span> (<a id="608c11" class="tk">electrical_angle</a> < 0.0F) <span class="br">{</span></td></tr> <tr name="609" id="609"> <td>609</td><td> <a id="609c9" class="tk">electrical_angle</a> = -1.0F;</td></tr> <tr name="610" id="610"> <td>610</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="611" id="611"> <td>611</td><td> <span class="kw">if</span> (<a id="611c13" class="tk">electrical_angle</a> > 0.0F) <span class="br">{</span></td></tr> <tr name="612" id="612"> <td>612</td><td> <a id="612c11" class="tk">electrical_angle</a> = 1.0F;</td></tr> <tr name="613" id="613"> <td>613</td><td> <span class="br">}</span></td></tr> <tr name="614" id="614"> <td>614</td><td> <span class="br">}</span></td></tr> <tr name="615" id="615"> <td>615</td><td></td></tr> <tr name="616" id="616"> <td>616</td><td> <span class="ct">/* End of Signum: '<a class="ct blk" blk_line="616"><S46>/SignDeltaU</a>' */</span></td></tr> <tr name="617" id="617"> <td>617</td><td></td></tr> <tr name="618" id="618"> <td>618</td><td> <span class="ct">/* Gain: '<a class="ct blk" blk_line="618"><S45>/Integral Gain</a>' */</span></td></tr> <tr name="619" id="619"> <td>619</td><td> <a id="619c7" class="tk">Switch_fr</a> = <a id="619c19" class="tk">ctrlParams</a>.<a id="619c30" class="tk">Velocity_I</a> * <a id="619c43" class="tk">velocity_error</a>;</td></tr> <tr name="620" id="620"> <td>620</td><td></td></tr> <tr name="621" id="621"> <td>621</td><td> <span class="ct">/* DataTypeConversion: '<a class="ct blk" blk_line="621"><S46>/DataTypeConv1</a>' */</span></td></tr> <tr name="622" id="622"> <td>622</td><td> <span class="kw">if</span> (<a id="622c11" class="tk">electrical_angle</a> < 128.0F) <span class="br">{</span></td></tr> <tr name="623" id="623"> <td>623</td><td> <a id="623c9" class="tk">rtPrevAction</a> = (<a id="623c25" class="tk">int8_T</a>)<a id="623c32" class="tk">electrical_angle</a>;</td></tr> <tr name="624" id="624"> <td>624</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="625" id="625"> <td>625</td><td> <a id="625c9" class="tk">rtPrevAction</a> = <a id="625c24" class="tk">MAX_int8_T</a>;</td></tr> <tr name="626" id="626"> <td>626</td><td> <span class="br">}</span></td></tr> <tr name="627" id="627"> <td>627</td><td></td></tr> <tr name="628" id="628"> <td>628</td><td> <span class="ct">/* End of DataTypeConversion: '<a class="ct blk" blk_line="628"><S46>/DataTypeConv1</a>' */</span></td></tr> <tr name="629" id="629"> <td>629</td><td></td></tr> <tr name="630" id="630"> <td>630</td><td> <span class="ct">/* Signum: '<a class="ct blk" blk_line="630"><S46>/SignPreIntegrator</a>' */</span></td></tr> <tr name="631" id="631"> <td>631</td><td> <span class="kw">if</span> (<a id="631c11" class="tk">Switch_fr</a> < 0.0F) <span class="br">{</span></td></tr> <tr name="632" id="632"> <td>632</td><td> <a id="632c9" class="tk">electrical_angle</a> = -1.0F;</td></tr> <tr name="633" id="633"> <td>633</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="633c18" class="tk">Switch_fr</a> > 0.0F) <span class="br">{</span></td></tr> <tr name="634" id="634"> <td>634</td><td> <a id="634c9" class="tk">electrical_angle</a> = 1.0F;</td></tr> <tr name="635" id="635"> <td>635</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="636" id="636"> <td>636</td><td> <a id="636c9" class="tk">electrical_angle</a> = <a id="636c28" class="tk">Switch_fr</a>;</td></tr> <tr name="637" id="637"> <td>637</td><td> <span class="br">}</span></td></tr> <tr name="638" id="638"> <td>638</td><td></td></tr> <tr name="639" id="639"> <td>639</td><td> <span class="ct">/* Switch: '<a class="ct blk" blk_line="639"><S45>/Switch</a>' incorporates:</span></td></tr> <tr name="640" id="640"> <td>640</td><td><span class="ct"> * Constant: '<a class="ct blk" blk_line="640"><S45>/Constant</a>'</span></td></tr> <tr name="641" id="641"> <td>641</td><td><span class="ct"> * DataTypeConversion: '<a class="ct blk" blk_line="641"><S46>/DataTypeConv2</a>'</span></td></tr> <tr name="642" id="642"> <td>642</td><td><span class="ct"> * Logic: '<a class="ct blk" blk_line="642"><S46>/AND</a>'</span></td></tr> <tr name="643" id="643"> <td>643</td><td><span class="ct"> * RelationalOperator: '<a class="ct blk" blk_line="643"><S46>/Equal</a>'</span></td></tr> <tr name="644" id="644"> <td>644</td><td><span class="ct"> * Signum: '<a class="ct blk" blk_line="644"><S46>/SignPreIntegrator</a>'</span></td></tr> <tr name="645" id="645"> <td>645</td><td><span class="ct"> */</span></td></tr> <tr name="646" id="646"> <td>646</td><td> <span class="kw">if</span> (<a id="646c11" class="tk">NotEqual_b</a> && (<a id="646c26" class="tk">rtPrevAction</a> == ((<a id="646c44" class="tk">int8_T</a>)<a id="646c51" class="tk">electrical_angle</a>))) <span class="br">{</span></td></tr> <tr name="647" id="647"> <td>647</td><td> <a id="647c9" class="tk">Switch_fr</a> = 0.0F;</td></tr> <tr name="648" id="648"> <td>648</td><td> <span class="br">}</span></td></tr> <tr name="649" id="649"> <td>649</td><td></td></tr> <tr name="650" id="650"> <td>650</td><td> <span class="ct">/* End of Switch: '<a class="ct blk" blk_line="650"><S45>/Switch</a>' */</span></td></tr> <tr name="651" id="651"> <td>651</td><td></td></tr> <tr name="652" id="652"> <td>652</td><td> <span class="ct">/* Update for DiscreteIntegrator: '<a class="ct blk" blk_line="652"><S45>/Integrator</a>' */</span></td></tr> <tr name="653" id="653"> <td>653</td><td> <a id="653c7" class="tk">DWork</a>.<a id="653c13" class="tk">Integrator_DSTATE_f</a> += 0.005F * <a id="653c45" class="tk">Switch_fr</a>;</td></tr> <tr name="654" id="654"> <td>654</td><td></td></tr> <tr name="655" id="655"> <td>655</td><td> <span class="ct">/* End of Outputs for SubSystem: '<a class="ct blk" blk_line="655"><S5>/Velocity_Control</a>' */</span></td></tr> <tr name="656" id="656"> <td>656</td><td> <span class="kw">break</span>;</td></tr> <tr name="657" id="657"> <td>657</td><td></td></tr> <tr name="658" id="658"> <td>658</td><td> <span class="kw">case</span> 1:</td></tr> <tr name="659" id="659"> <td>659</td><td> <span class="kw">if</span> (<a id="659c11" class="tk">DWork</a>.<a id="659c17" class="tk">SwitchCase_ActiveSubsystem</a> != <a id="659c47" class="tk">rtPrevAction</a>) <span class="br">{</span></td></tr> <tr name="660" id="660"> <td>660</td><td> <span class="ct">/* InitializeConditions for IfAction SubSystem: '<a class="ct blk" blk_line="660"><S5>/Position_Control</a>' incorporates:</span></td></tr> <tr name="661" id="661"> <td>661</td><td><span class="ct"> * InitializeConditions for ActionPort: '<a class="ct blk" blk_line="661"><S9>/Action Port</a>'</span></td></tr> <tr name="662" id="662"> <td>662</td><td><span class="ct"> */</span></td></tr> <tr name="663" id="663"> <td>663</td><td> <span class="ct">/* InitializeConditions for SwitchCase: '<a class="ct blk" blk_line="663"><S5>/Switch Case</a>' incorporates:</span></td></tr> <tr name="664" id="664"> <td>664</td><td><span class="ct"> * InitializeConditions for DiscreteIntegrator: '<a class="ct blk" blk_line="664"><S42>/Integrator</a>'</span></td></tr> <tr name="665" id="665"> <td>665</td><td><span class="ct"> */</span></td></tr> <tr name="666" id="666"> <td>666</td><td> <a id="666c9" class="tk">DWork</a>.<a id="666c15" class="tk">Integrator_DSTATE_lc</a> = 0.0F;</td></tr> <tr name="667" id="667"> <td>667</td><td></td></tr> <tr name="668" id="668"> <td>668</td><td> <span class="ct">/* End of InitializeConditions for SubSystem: '<a class="ct blk" blk_line="668"><S5>/Position_Control</a>' */</span></td></tr> <tr name="669" id="669"> <td>669</td><td> <span class="br">}</span></td></tr> <tr name="670" id="670"> <td>670</td><td></td></tr> <tr name="671" id="671"> <td>671</td><td> <span class="ct">/* Outputs for IfAction SubSystem: '<a class="ct blk" blk_line="671"><S5>/Position_Control</a>' incorporates:</span></td></tr> <tr name="672" id="672"> <td>672</td><td><span class="ct"> * ActionPort: '<a class="ct blk" blk_line="672"><S9>/Action Port</a>'</span></td></tr> <tr name="673" id="673"> <td>673</td><td><span class="ct"> */</span></td></tr> <tr name="674" id="674"> <td>674</td><td> <span class="ct">/* Sum: '<a class="ct blk" blk_line="674"><S9>/Sum2</a>' */</span></td></tr> <tr name="675" id="675"> <td>675</td><td> <a id="675c7" class="tk">Switch_fr</a> = <a id="675c19" class="tk">DWork</a>.<a id="675c25" class="tk">position_command</a> - <a id="675c44" class="tk">Switch_fr</a>;</td></tr> <tr name="676" id="676"> <td>676</td><td></td></tr> <tr name="677" id="677"> <td>677</td><td> <span class="ct">/* Switch: '<a class="ct blk" blk_line="677"><S43>/Select_Angle</a>' incorporates:</span></td></tr> <tr name="678" id="678"> <td>678</td><td><span class="ct"> * Constant: '<a class="ct blk" blk_line="678"><S43>/Neg_Pi_Constant</a>'</span></td></tr> <tr name="679" id="679"> <td>679</td><td><span class="ct"> * Constant: '<a class="ct blk" blk_line="679"><S43>/Pi_Constant_1</a>'</span></td></tr> <tr name="680" id="680"> <td>680</td><td><span class="ct"> * Constant: '<a class="ct blk" blk_line="680"><S43>/Pi_Constant_2</a>'</span></td></tr> <tr name="681" id="681"> <td>681</td><td><span class="ct"> * Constant: '<a class="ct blk" blk_line="681"><S43>/Pi_Constant_3</a>'</span></td></tr> <tr name="682" id="682"> <td>682</td><td><span class="ct"> * Constant: '<a class="ct blk" blk_line="682"><S43>/Two_Pi_Constant</a>'</span></td></tr> <tr name="683" id="683"> <td>683</td><td><span class="ct"> * Logic: '<a class="ct blk" blk_line="683"><S43>/OR</a>'</span></td></tr> <tr name="684" id="684"> <td>684</td><td><span class="ct"> * Math: '<a class="ct blk" blk_line="684"><S43>/Modulus</a>'</span></td></tr> <tr name="685" id="685"> <td>685</td><td><span class="ct"> * RelationalOperator: '<a class="ct blk" blk_line="685"><S43>/Greater_Than</a>'</span></td></tr> <tr name="686" id="686"> <td>686</td><td><span class="ct"> * RelationalOperator: '<a class="ct blk" blk_line="686"><S43>/Less_Than</a>'</span></td></tr> <tr name="687" id="687"> <td>687</td><td><span class="ct"> * Sum: '<a class="ct blk" blk_line="687"><S43>/Add</a>'</span></td></tr> <tr name="688" id="688"> <td>688</td><td><span class="ct"> * Sum: '<a class="ct blk" blk_line="688"><S43>/Subtract</a>'</span></td></tr> <tr name="689" id="689"> <td>689</td><td><span class="ct"> */</span></td></tr> <tr name="690" id="690"> <td>690</td><td> <span class="kw">if</span> ((<a id="690c12" class="tk">Switch_fr</a> < -1.57079637F) || (<a id="690c42" class="tk">Switch_fr</a> >= 1.57079637F)) <span class="br">{</span></td></tr> <tr name="691" id="691"> <td>691</td><td> <a id="691c9" class="tk">Switch_fr</a> = <a id="691c21" class="tk">rt_modf</a>(<a id="691c29" class="tk">Switch_fr</a> + 1.57079637F, 3.14159274F) - 1.57079637F;</td></tr> <tr name="692" id="692"> <td>692</td><td> <span class="br">}</span></td></tr> <tr name="693" id="693"> <td>693</td><td></td></tr> <tr name="694" id="694"> <td>694</td><td> <span class="ct">/* End of Switch: '<a class="ct blk" blk_line="694"><S43>/Select_Angle</a>' */</span></td></tr> <tr name="695" id="695"> <td>695</td><td></td></tr> <tr name="696" id="696"> <td>696</td><td> <span class="ct">/* Sum: '<a class="ct blk" blk_line="696"><S42>/Sum</a>' incorporates:</span></td></tr> <tr name="697" id="697"> <td>697</td><td><span class="ct"> * DiscreteIntegrator: '<a class="ct blk" blk_line="697"><S42>/Integrator</a>'</span></td></tr> <tr name="698" id="698"> <td>698</td><td><span class="ct"> * Gain: '<a class="ct blk" blk_line="698"><S42>/Proportional Gain</a>'</span></td></tr> <tr name="699" id="699"> <td>699</td><td><span class="ct"> */</span></td></tr> <tr name="700" id="700"> <td>700</td><td> <a id="700c7" class="tk">electrical_angle</a> = (<a id="700c27" class="tk">ctrlParams</a>.<a id="700c38" class="tk">Position_P</a> * <a id="700c51" class="tk">Switch_fr</a>) +</td></tr> <tr name="701" id="701"> <td>701</td><td> <a id="701c9" class="tk">DWork</a>.<a id="701c15" class="tk">Integrator_DSTATE_lc</a>;</td></tr> <tr name="702" id="702"> <td>702</td><td></td></tr> <tr name="703" id="703"> <td>703</td><td> <span class="ct">/* Saturate: '<a class="ct blk" blk_line="703"><S42>/Saturate</a>' */</span></td></tr> <tr name="704" id="704"> <td>704</td><td> <span class="kw">if</span> (<a id="704c11" class="tk">electrical_angle</a> > 2.0F) <span class="br">{</span></td></tr> <tr name="705" id="705"> <td>705</td><td> <span class="ct">/* SignalConversion: '<a class="ct blk" blk_line="705"><S9>/Isolate_For_Merge</a>' */</span></td></tr> <tr name="706" id="706"> <td>706</td><td> <a id="706c9" class="tk">DWork</a>.<a id="706c15" class="tk">Merge</a> = 2.0F;</td></tr> <tr name="707" id="707"> <td>707</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="707c18" class="tk">electrical_angle</a> < -2.0F) <span class="br">{</span></td></tr> <tr name="708" id="708"> <td>708</td><td> <span class="ct">/* SignalConversion: '<a class="ct blk" blk_line="708"><S9>/Isolate_For_Merge</a>' */</span></td></tr> <tr name="709" id="709"> <td>709</td><td> <a id="709c9" class="tk">DWork</a>.<a id="709c15" class="tk">Merge</a> = -2.0F;</td></tr> <tr name="710" id="710"> <td>710</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="711" id="711"> <td>711</td><td> <span class="ct">/* SignalConversion: '<a class="ct blk" blk_line="711"><S9>/Isolate_For_Merge</a>' */</span></td></tr> <tr name="712" id="712"> <td>712</td><td> <a id="712c9" class="tk">DWork</a>.<a id="712c15" class="tk">Merge</a> = <a id="712c23" class="tk">electrical_angle</a>;</td></tr> <tr name="713" id="713"> <td>713</td><td> <span class="br">}</span></td></tr> <tr name="714" id="714"> <td>714</td><td></td></tr> <tr name="715" id="715"> <td>715</td><td> <span class="ct">/* End of Saturate: '<a class="ct blk" blk_line="715"><S42>/Saturate</a>' */</span></td></tr> <tr name="716" id="716"> <td>716</td><td></td></tr> <tr name="717" id="717"> <td>717</td><td> <span class="ct">/* DeadZone: '<a class="ct blk" blk_line="717"><S44>/DeadZone</a>' */</span></td></tr> <tr name="718" id="718"> <td>718</td><td> <span class="kw">if</span> (<a id="718c11" class="tk">electrical_angle</a> > 2.0F) <span class="br">{</span></td></tr> <tr name="719" id="719"> <td>719</td><td> <a id="719c9" class="tk">electrical_angle</a> -= 2.0F;</td></tr> <tr name="720" id="720"> <td>720</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="720c18" class="tk">electrical_angle</a> >= -2.0F) <span class="br">{</span></td></tr> <tr name="721" id="721"> <td>721</td><td> <a id="721c9" class="tk">electrical_angle</a> = 0.0F;</td></tr> <tr name="722" id="722"> <td>722</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="723" id="723"> <td>723</td><td> <a id="723c9" class="tk">electrical_angle</a> -= -2.0F;</td></tr> <tr name="724" id="724"> <td>724</td><td> <span class="br">}</span></td></tr> <tr name="725" id="725"> <td>725</td><td></td></tr> <tr name="726" id="726"> <td>726</td><td> <span class="ct">/* End of DeadZone: '<a class="ct blk" blk_line="726"><S44>/DeadZone</a>' */</span></td></tr> <tr name="727" id="727"> <td>727</td><td></td></tr> <tr name="728" id="728"> <td>728</td><td> <span class="ct">/* RelationalOperator: '<a class="ct blk" blk_line="728"><S44>/NotEqual</a>' */</span></td></tr> <tr name="729" id="729"> <td>729</td><td> <a id="729c7" class="tk">NotEqual_b</a> = (0.0F != <a id="729c29" class="tk">electrical_angle</a>);</td></tr> <tr name="730" id="730"> <td>730</td><td></td></tr> <tr name="731" id="731"> <td>731</td><td> <span class="ct">/* Signum: '<a class="ct blk" blk_line="731"><S44>/SignDeltaU</a>' */</span></td></tr> <tr name="732" id="732"> <td>732</td><td> <span class="kw">if</span> (<a id="732c11" class="tk">electrical_angle</a> < 0.0F) <span class="br">{</span></td></tr> <tr name="733" id="733"> <td>733</td><td> <a id="733c9" class="tk">electrical_angle</a> = -1.0F;</td></tr> <tr name="734" id="734"> <td>734</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="735" id="735"> <td>735</td><td> <span class="kw">if</span> (<a id="735c13" class="tk">electrical_angle</a> > 0.0F) <span class="br">{</span></td></tr> <tr name="736" id="736"> <td>736</td><td> <a id="736c11" class="tk">electrical_angle</a> = 1.0F;</td></tr> <tr name="737" id="737"> <td>737</td><td> <span class="br">}</span></td></tr> <tr name="738" id="738"> <td>738</td><td> <span class="br">}</span></td></tr> <tr name="739" id="739"> <td>739</td><td></td></tr> <tr name="740" id="740"> <td>740</td><td> <span class="ct">/* End of Signum: '<a class="ct blk" blk_line="740"><S44>/SignDeltaU</a>' */</span></td></tr> <tr name="741" id="741"> <td>741</td><td></td></tr> <tr name="742" id="742"> <td>742</td><td> <span class="ct">/* Gain: '<a class="ct blk" blk_line="742"><S42>/Integral Gain</a>' */</span></td></tr> <tr name="743" id="743"> <td>743</td><td> <a id="743c7" class="tk">Switch_fr</a> *= <a id="743c20" class="tk">ctrlParams</a>.<a id="743c31" class="tk">Position_I</a>;</td></tr> <tr name="744" id="744"> <td>744</td><td></td></tr> <tr name="745" id="745"> <td>745</td><td> <span class="ct">/* DataTypeConversion: '<a class="ct blk" blk_line="745"><S44>/DataTypeConv1</a>' */</span></td></tr> <tr name="746" id="746"> <td>746</td><td> <span class="kw">if</span> (<a id="746c11" class="tk">electrical_angle</a> < 128.0F) <span class="br">{</span></td></tr> <tr name="747" id="747"> <td>747</td><td> <a id="747c9" class="tk">rtPrevAction</a> = (<a id="747c25" class="tk">int8_T</a>)<a id="747c32" class="tk">electrical_angle</a>;</td></tr> <tr name="748" id="748"> <td>748</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="749" id="749"> <td>749</td><td> <a id="749c9" class="tk">rtPrevAction</a> = <a id="749c24" class="tk">MAX_int8_T</a>;</td></tr> <tr name="750" id="750"> <td>750</td><td> <span class="br">}</span></td></tr> <tr name="751" id="751"> <td>751</td><td></td></tr> <tr name="752" id="752"> <td>752</td><td> <span class="ct">/* End of DataTypeConversion: '<a class="ct blk" blk_line="752"><S44>/DataTypeConv1</a>' */</span></td></tr> <tr name="753" id="753"> <td>753</td><td></td></tr> <tr name="754" id="754"> <td>754</td><td> <span class="ct">/* Signum: '<a class="ct blk" blk_line="754"><S44>/SignPreIntegrator</a>' */</span></td></tr> <tr name="755" id="755"> <td>755</td><td> <span class="kw">if</span> (<a id="755c11" class="tk">Switch_fr</a> < 0.0F) <span class="br">{</span></td></tr> <tr name="756" id="756"> <td>756</td><td> <a id="756c9" class="tk">electrical_angle</a> = -1.0F;</td></tr> <tr name="757" id="757"> <td>757</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="757c18" class="tk">Switch_fr</a> > 0.0F) <span class="br">{</span></td></tr> <tr name="758" id="758"> <td>758</td><td> <a id="758c9" class="tk">electrical_angle</a> = 1.0F;</td></tr> <tr name="759" id="759"> <td>759</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="760" id="760"> <td>760</td><td> <a id="760c9" class="tk">electrical_angle</a> = <a id="760c28" class="tk">Switch_fr</a>;</td></tr> <tr name="761" id="761"> <td>761</td><td> <span class="br">}</span></td></tr> <tr name="762" id="762"> <td>762</td><td></td></tr> <tr name="763" id="763"> <td>763</td><td> <span class="ct">/* Switch: '<a class="ct blk" blk_line="763"><S42>/Switch</a>' incorporates:</span></td></tr> <tr name="764" id="764"> <td>764</td><td><span class="ct"> * Constant: '<a class="ct blk" blk_line="764"><S42>/Constant</a>'</span></td></tr> <tr name="765" id="765"> <td>765</td><td><span class="ct"> * DataTypeConversion: '<a class="ct blk" blk_line="765"><S44>/DataTypeConv2</a>'</span></td></tr> <tr name="766" id="766"> <td>766</td><td><span class="ct"> * Logic: '<a class="ct blk" blk_line="766"><S44>/AND</a>'</span></td></tr> <tr name="767" id="767"> <td>767</td><td><span class="ct"> * RelationalOperator: '<a class="ct blk" blk_line="767"><S44>/Equal</a>'</span></td></tr> <tr name="768" id="768"> <td>768</td><td><span class="ct"> * Signum: '<a class="ct blk" blk_line="768"><S44>/SignPreIntegrator</a>'</span></td></tr> <tr name="769" id="769"> <td>769</td><td><span class="ct"> */</span></td></tr> <tr name="770" id="770"> <td>770</td><td> <span class="kw">if</span> (<a id="770c11" class="tk">NotEqual_b</a> && (<a id="770c26" class="tk">rtPrevAction</a> == ((<a id="770c44" class="tk">int8_T</a>)<a id="770c51" class="tk">electrical_angle</a>))) <span class="br">{</span></td></tr> <tr name="771" id="771"> <td>771</td><td> <a id="771c9" class="tk">Switch_fr</a> = 0.0F;</td></tr> <tr name="772" id="772"> <td>772</td><td> <span class="br">}</span></td></tr> <tr name="773" id="773"> <td>773</td><td></td></tr> <tr name="774" id="774"> <td>774</td><td> <span class="ct">/* End of Switch: '<a class="ct blk" blk_line="774"><S42>/Switch</a>' */</span></td></tr> <tr name="775" id="775"> <td>775</td><td></td></tr> <tr name="776" id="776"> <td>776</td><td> <span class="ct">/* Update for DiscreteIntegrator: '<a class="ct blk" blk_line="776"><S42>/Integrator</a>' */</span></td></tr> <tr name="777" id="777"> <td>777</td><td> <a id="777c7" class="tk">DWork</a>.<a id="777c13" class="tk">Integrator_DSTATE_lc</a> += 0.005F * <a id="777c46" class="tk">Switch_fr</a>;</td></tr> <tr name="778" id="778"> <td>778</td><td></td></tr> <tr name="779" id="779"> <td>779</td><td> <span class="ct">/* End of Outputs for SubSystem: '<a class="ct blk" blk_line="779"><S5>/Position_Control</a>' */</span></td></tr> <tr name="780" id="780"> <td>780</td><td> <span class="kw">break</span>;</td></tr> <tr name="781" id="781"> <td>781</td><td></td></tr> <tr name="782" id="782"> <td>782</td><td> <span class="kw">case</span> 2:</td></tr> <tr name="783" id="783"> <td>783</td><td> <span class="ct">/* Outputs for IfAction SubSystem: '<a class="ct blk" blk_line="783"><S5>/Torque_Control</a>' incorporates:</span></td></tr> <tr name="784" id="784"> <td>784</td><td><span class="ct"> * ActionPort: '<a class="ct blk" blk_line="784"><S10>/Action Port</a>'</span></td></tr> <tr name="785" id="785"> <td>785</td><td><span class="ct"> */</span></td></tr> <tr name="786" id="786"> <td>786</td><td> <a id="786c7" class="tk">DWork</a>.<a id="786c13" class="tk">Merge</a> = <a id="786c21" class="tk">DWork</a>.<a id="786c27" class="tk">torque_command</a>;</td></tr> <tr name="787" id="787"> <td>787</td><td></td></tr> <tr name="788" id="788"> <td>788</td><td> <span class="ct">/* End of Outputs for SubSystem: '<a class="ct blk" blk_line="788"><S5>/Torque_Control</a>' */</span></td></tr> <tr name="789" id="789"> <td>789</td><td> <span class="kw">break</span>;</td></tr> <tr name="790" id="790"> <td>790</td><td> <span class="br">}</span></td></tr> <tr name="791" id="791"> <td>791</td><td></td></tr> <tr name="792" id="792"> <td>792</td><td> <span class="ct">/* End of SwitchCase: '<a class="ct blk" blk_line="792"><S5>/Switch Case</a>' */</span></td></tr> <tr name="793" id="793"> <td>793</td><td> <span class="br">}</span></td></tr> <tr name="794" id="794"> <td>794</td><td></td></tr> <tr name="795" id="795"> <td>795</td><td> <span class="ct">/* RateTransition: '<a class="ct blk" blk_line="795"><S5>/Lo_to_Hi_Rate_Transition1</a>' */</span></td></tr> <tr name="796" id="796"> <td>796</td><td> <a id="796c3" class="tk">q_current_command</a> = <a id="796c23" class="tk">DWork</a>.<a id="796c29" class="tk">Merge</a>;</td></tr> <tr name="797" id="797"> <td>797</td><td></td></tr> <tr name="798" id="798"> <td>798</td><td> <span class="ct">/* Sum: '<a class="ct blk" blk_line="798"><S22>/Add</a>' incorporates:</span></td></tr> <tr name="799" id="799"> <td>799</td><td><span class="ct"> * Product: '<a class="ct blk" blk_line="799"><S22>/Product</a>'</span></td></tr> <tr name="800" id="800"> <td>800</td><td><span class="ct"> * Product: '<a class="ct blk" blk_line="800"><S22>/Product1</a>'</span></td></tr> <tr name="801" id="801"> <td>801</td><td><span class="ct"> */</span></td></tr> <tr name="802" id="802"> <td>802</td><td> <a id="802c3" class="tk">q_current_measured</a> = (<a id="802c25" class="tk">SignDeltaU_b</a> * <a id="802c40" class="tk">cos_coefficient</a>) - (<a id="802c60" class="tk">phase_currents</a>[0] *</td></tr> <tr name="803" id="803"> <td>803</td><td> <a id="803c5" class="tk">sin_coefficient</a>);</td></tr> <tr name="804" id="804"> <td>804</td><td></td></tr> <tr name="805" id="805"> <td>805</td><td> <span class="ct">/* Sum: '<a class="ct blk" blk_line="805"><S12>/Sum</a>' */</span></td></tr> <tr name="806" id="806"> <td>806</td><td> <a id="806c3" class="tk">q_current_error</a> = <a id="806c21" class="tk">q_current_command</a> - <a id="806c41" class="tk">q_current_measured</a>;</td></tr> <tr name="807" id="807"> <td>807</td><td></td></tr> <tr name="808" id="808"> <td>808</td><td> <span class="ct">/* DiscreteIntegrator: '<a class="ct blk" blk_line="808"><S18>/Integrator</a>' */</span></td></tr> <tr name="809" id="809"> <td>809</td><td> <span class="kw">if</span> ((<a id="809c8" class="tk">FixPtRelationalOperator</a> != 0) || (<a id="809c42" class="tk">DWork</a>.<a id="809c48" class="tk">Integrator_PrevResetState_c</a> != 0))</td></tr> <tr name="810" id="810"> <td>810</td><td> <span class="br">{</span></td></tr> <tr name="811" id="811"> <td>811</td><td> <a id="811c5" class="tk">DWork</a>.<a id="811c11" class="tk">Integrator_DSTATE_l</a> = 0.0F;</td></tr> <tr name="812" id="812"> <td>812</td><td> <span class="br">}</span></td></tr> <tr name="813" id="813"> <td>813</td><td></td></tr> <tr name="814" id="814"> <td>814</td><td> <span class="ct">/* Sum: '<a class="ct blk" blk_line="814"><S18>/Sum</a>' incorporates:</span></td></tr> <tr name="815" id="815"> <td>815</td><td><span class="ct"> * DiscreteIntegrator: '<a class="ct blk" blk_line="815"><S18>/Integrator</a>'</span></td></tr> <tr name="816" id="816"> <td>816</td><td><span class="ct"> * Gain: '<a class="ct blk" blk_line="816"><S18>/Proportional Gain</a>'</span></td></tr> <tr name="817" id="817"> <td>817</td><td><span class="ct"> */</span></td></tr> <tr name="818" id="818"> <td>818</td><td> <a id="818c3" class="tk">SignDeltaU_b</a> = (<a id="818c19" class="tk">ctrlParams</a>.<a id="818c30" class="tk">Current_P</a> * <a id="818c42" class="tk">q_current_error</a>) +</td></tr> <tr name="819" id="819"> <td>819</td><td> <a id="819c5" class="tk">DWork</a>.<a id="819c11" class="tk">Integrator_DSTATE_l</a>;</td></tr> <tr name="820" id="820"> <td>820</td><td></td></tr> <tr name="821" id="821"> <td>821</td><td> <span class="ct">/* Saturate: '<a class="ct blk" blk_line="821"><S18>/Saturate</a>' */</span></td></tr> <tr name="822" id="822"> <td>822</td><td> <span class="kw">if</span> (<a id="822c7" class="tk">SignDeltaU_b</a> > 12.0F) <span class="br">{</span></td></tr> <tr name="823" id="823"> <td>823</td><td> <a id="823c5" class="tk">alpha_voltage</a> = 12.0F;</td></tr> <tr name="824" id="824"> <td>824</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="824c14" class="tk">SignDeltaU_b</a> < -12.0F) <span class="br">{</span></td></tr> <tr name="825" id="825"> <td>825</td><td> <a id="825c5" class="tk">alpha_voltage</a> = -12.0F;</td></tr> <tr name="826" id="826"> <td>826</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="827" id="827"> <td>827</td><td> <a id="827c5" class="tk">alpha_voltage</a> = <a id="827c21" class="tk">SignDeltaU_b</a>;</td></tr> <tr name="828" id="828"> <td>828</td><td> <span class="br">}</span></td></tr> <tr name="829" id="829"> <td>829</td><td></td></tr> <tr name="830" id="830"> <td>830</td><td> <span class="ct">/* End of Saturate: '<a class="ct blk" blk_line="830"><S18>/Saturate</a>' */</span></td></tr> <tr name="831" id="831"> <td>831</td><td></td></tr> <tr name="832" id="832"> <td>832</td><td> <span class="ct">/* Sum: '<a class="ct blk" blk_line="832"><S24>/Add</a>' incorporates:</span></td></tr> <tr name="833" id="833"> <td>833</td><td><span class="ct"> * Product: '<a class="ct blk" blk_line="833"><S24>/Product</a>'</span></td></tr> <tr name="834" id="834"> <td>834</td><td><span class="ct"> * Product: '<a class="ct blk" blk_line="834"><S24>/Product1</a>'</span></td></tr> <tr name="835" id="835"> <td>835</td><td><span class="ct"> */</span></td></tr> <tr name="836" id="836"> <td>836</td><td> <a id="836c3" class="tk">SignPreIntegrator_f</a> = (<a id="836c26" class="tk">Gain1</a> * <a id="836c34" class="tk">sin_coefficient</a>) + (<a id="836c54" class="tk">alpha_voltage</a> *</td></tr> <tr name="837" id="837"> <td>837</td><td> <a id="837c5" class="tk">cos_coefficient</a>);</td></tr> <tr name="838" id="838"> <td>838</td><td></td></tr> <tr name="839" id="839"> <td>839</td><td> <span class="ct">/* Gain: '<a class="ct blk" blk_line="839"><S29>/Gain</a>' */</span></td></tr> <tr name="840" id="840"> <td>840</td><td> <a id="840c3" class="tk">IntegralGain_j</a> = 0.5F * <a id="840c27" class="tk">SignPreIntegrator_f</a>;</td></tr> <tr name="841" id="841"> <td>841</td><td></td></tr> <tr name="842" id="842"> <td>842</td><td> <span class="ct">/* Sum: '<a class="ct blk" blk_line="842"><S24>/Add1</a>' incorporates:</span></td></tr> <tr name="843" id="843"> <td>843</td><td><span class="ct"> * Product: '<a class="ct blk" blk_line="843"><S24>/Product2</a>'</span></td></tr> <tr name="844" id="844"> <td>844</td><td><span class="ct"> * Product: '<a class="ct blk" blk_line="844"><S24>/Product3</a>'</span></td></tr> <tr name="845" id="845"> <td>845</td><td><span class="ct"> */</span></td></tr> <tr name="846" id="846"> <td>846</td><td> <a id="846c3" class="tk">alpha_voltage</a> = (<a id="846c20" class="tk">Gain1</a> * <a id="846c28" class="tk">cos_coefficient</a>) - (<a id="846c48" class="tk">alpha_voltage</a> * <a id="846c64" class="tk">sin_coefficient</a>);</td></tr> <tr name="847" id="847"> <td>847</td><td></td></tr> <tr name="848" id="848"> <td>848</td><td> <span class="ct">/* Gain: '<a class="ct blk" blk_line="848"><S29>/Gain1</a>' */</span></td></tr> <tr name="849" id="849"> <td>849</td><td> <a id="849c3" class="tk">Gain1</a> = 0.866025388F * <a id="849c26" class="tk">alpha_voltage</a>;</td></tr> <tr name="850" id="850"> <td>850</td><td></td></tr> <tr name="851" id="851"> <td>851</td><td> <span class="ct">/* Gain: '<a class="ct blk" blk_line="851"><S30>/Space_Vector_Gain</a>' incorporates:</span></td></tr> <tr name="852" id="852"> <td>852</td><td><span class="ct"> * Gain: '<a class="ct blk" blk_line="852"><S30>/Alpha_Gain</a>'</span></td></tr> <tr name="853" id="853"> <td>853</td><td><span class="ct"> * Sum: '<a class="ct blk" blk_line="853"><S30>/Add</a>'</span></td></tr> <tr name="854" id="854"> <td>854</td><td><span class="ct"> */</span></td></tr> <tr name="855" id="855"> <td>855</td><td> <a id="855c3" class="tk">electrical_angle</a> = (((1.73205078F * <a id="855c39" class="tk">alpha_voltage</a>) + 33.941124F) +</td></tr> <tr name="856" id="856"> <td>856</td><td> <a id="856c23" class="tk">SignPreIntegrator_f</a>) * 0.353553385F;</td></tr> <tr name="857" id="857"> <td>857</td><td></td></tr> <tr name="858" id="858"> <td>858</td><td> <span class="ct">/* Gain: '<a class="ct blk" blk_line="858"><S33>/Va_Gain</a>' incorporates:</span></td></tr> <tr name="859" id="859"> <td>859</td><td><span class="ct"> * Gain: '<a class="ct blk" blk_line="859"><S33>/Alpha_Gain</a>'</span></td></tr> <tr name="860" id="860"> <td>860</td><td><span class="ct"> * Gain: '<a class="ct blk" blk_line="860"><S33>/Beta_Gain</a>'</span></td></tr> <tr name="861" id="861"> <td>861</td><td><span class="ct"> * Sum: '<a class="ct blk" blk_line="861"><S33>/Add</a>'</span></td></tr> <tr name="862" id="862"> <td>862</td><td><span class="ct"> */</span></td></tr> <tr name="863" id="863"> <td>863</td><td> <a id="863c3" class="tk">Switch_fr</a> = ((33.941124F - (1.73205078F * <a id="863c45" class="tk">alpha_voltage</a>)) + (3.0F *</td></tr> <tr name="864" id="864"> <td>864</td><td> <a id="864c5" class="tk">SignPreIntegrator_f</a>)) * 0.353553385F;</td></tr> <tr name="865" id="865"> <td>865</td><td></td></tr> <tr name="866" id="866"> <td>866</td><td> <span class="ct">/* Gain: '<a class="ct blk" blk_line="866"><S36>/Space_Vector_Gain</a>' incorporates:</span></td></tr> <tr name="867" id="867"> <td>867</td><td><span class="ct"> * Gain: '<a class="ct blk" blk_line="867"><S36>/Alpha_Gain</a>'</span></td></tr> <tr name="868" id="868"> <td>868</td><td><span class="ct"> * Sum: '<a class="ct blk" blk_line="868"><S36>/Add</a>'</span></td></tr> <tr name="869" id="869"> <td>869</td><td><span class="ct"> */</span></td></tr> <tr name="870" id="870"> <td>870</td><td> <a id="870c3" class="tk">cos_coefficient</a> = ((33.941124F - (1.73205078F * <a id="870c51" class="tk">alpha_voltage</a>)) -</td></tr> <tr name="871" id="871"> <td>871</td><td> <a id="871c22" class="tk">SignPreIntegrator_f</a>) * 0.353553385F;</td></tr> <tr name="872" id="872"> <td>872</td><td></td></tr> <tr name="873" id="873"> <td>873</td><td> <span class="ct">/* Gain: '<a class="ct blk" blk_line="873"><S31>/Space_Vector_Gain</a>' incorporates:</span></td></tr> <tr name="874" id="874"> <td>874</td><td><span class="ct"> * Constant: '<a class="ct blk" blk_line="874"><S27>/Bus_Voltage</a>'</span></td></tr> <tr name="875" id="875"> <td>875</td><td><span class="ct"> * Gain: '<a class="ct blk" blk_line="875"><S31>/Alpha_Gain</a>'</span></td></tr> <tr name="876" id="876"> <td>876</td><td><span class="ct"> * Sum: '<a class="ct blk" blk_line="876"><S31>/Add</a>'</span></td></tr> <tr name="877" id="877"> <td>877</td><td><span class="ct"> */</span></td></tr> <tr name="878" id="878"> <td>878</td><td> <a id="878c3" class="tk">sin_coefficient</a> = ((2.44948983F * <a id="878c37" class="tk">alpha_voltage</a>) + 24.0F) * 0.5F;</td></tr> <tr name="879" id="879"> <td>879</td><td></td></tr> <tr name="880" id="880"> <td>880</td><td> <span class="ct">/* Gain: '<a class="ct blk" blk_line="880"><S34>/Va_Gain</a>' incorporates:</span></td></tr> <tr name="881" id="881"> <td>881</td><td><span class="ct"> * Constant: '<a class="ct blk" blk_line="881"><S27>/Bus_Voltage</a>'</span></td></tr> <tr name="882" id="882"> <td>882</td><td><span class="ct"> * Gain: '<a class="ct blk" blk_line="882"><S34>/Beta_Gain</a>'</span></td></tr> <tr name="883" id="883"> <td>883</td><td><span class="ct"> * Sum: '<a class="ct blk" blk_line="883"><S34>/Add</a>'</span></td></tr> <tr name="884" id="884"> <td>884</td><td><span class="ct"> */</span></td></tr> <tr name="885" id="885"> <td>885</td><td> <a id="885c3" class="tk">Sectors_2_and_5_idx_1</a> = ((1.41421354F * <a id="885c43" class="tk">SignPreIntegrator_f</a>) + 24.0F) * 0.5F;</td></tr> <tr name="886" id="886"> <td>886</td><td></td></tr> <tr name="887" id="887"> <td>887</td><td> <span class="ct">/* Gain: '<a class="ct blk" blk_line="887"><S37>/Space_Vector_Gain</a>' incorporates:</span></td></tr> <tr name="888" id="888"> <td>888</td><td><span class="ct"> * Constant: '<a class="ct blk" blk_line="888"><S27>/Bus_Voltage</a>'</span></td></tr> <tr name="889" id="889"> <td>889</td><td><span class="ct"> * Gain: '<a class="ct blk" blk_line="889"><S37>/Beta_Gain</a>'</span></td></tr> <tr name="890" id="890"> <td>890</td><td><span class="ct"> * Sum: '<a class="ct blk" blk_line="890"><S37>/Add</a>'</span></td></tr> <tr name="891" id="891"> <td>891</td><td><span class="ct"> */</span></td></tr> <tr name="892" id="892"> <td>892</td><td> <a id="892c3" class="tk">Sectors_2_and_5_idx_2</a> = (24.0F - (1.41421354F * <a id="892c51" class="tk">SignPreIntegrator_f</a>)) * 0.5F;</td></tr> <tr name="893" id="893"> <td>893</td><td></td></tr> <tr name="894" id="894"> <td>894</td><td> <span class="ct">/* Gain: '<a class="ct blk" blk_line="894"><S32>/Space_Vector_Gain</a>' incorporates:</span></td></tr> <tr name="895" id="895"> <td>895</td><td><span class="ct"> * Gain: '<a class="ct blk" blk_line="895"><S32>/Alpha_Gain</a>'</span></td></tr> <tr name="896" id="896"> <td>896</td><td><span class="ct"> * Sum: '<a class="ct blk" blk_line="896"><S32>/Add</a>'</span></td></tr> <tr name="897" id="897"> <td>897</td><td><span class="ct"> */</span></td></tr> <tr name="898" id="898"> <td>898</td><td> <a id="898c3" class="tk">phase_voltages</a>[0] = (((1.73205078F * <a id="898c40" class="tk">alpha_voltage</a>) + 33.941124F) -</td></tr> <tr name="899" id="899"> <td>899</td><td> <a id="899c24" class="tk">SignPreIntegrator_f</a>) * 0.353553385F;</td></tr> <tr name="900" id="900"> <td>900</td><td></td></tr> <tr name="901" id="901"> <td>901</td><td> <span class="ct">/* Gain: '<a class="ct blk" blk_line="901"><S35>/Va_Gain</a>' incorporates:</span></td></tr> <tr name="902" id="902"> <td>902</td><td><span class="ct"> * Gain: '<a class="ct blk" blk_line="902"><S35>/Alpha_Gain</a>'</span></td></tr> <tr name="903" id="903"> <td>903</td><td><span class="ct"> * Sum: '<a class="ct blk" blk_line="903"><S35>/Add</a>'</span></td></tr> <tr name="904" id="904"> <td>904</td><td><span class="ct"> */</span></td></tr> <tr name="905" id="905"> <td>905</td><td> <a id="905c3" class="tk">phase_voltages</a>[1] = ((33.941124F - (1.73205078F * <a id="905c53" class="tk">alpha_voltage</a>)) +</td></tr> <tr name="906" id="906"> <td>906</td><td> <a id="906c24" class="tk">SignPreIntegrator_f</a>) * 0.353553385F;</td></tr> <tr name="907" id="907"> <td>907</td><td></td></tr> <tr name="908" id="908"> <td>908</td><td> <span class="ct">/* Gain: '<a class="ct blk" blk_line="908"><S38>/Space_Vector_Gain</a>' incorporates:</span></td></tr> <tr name="909" id="909"> <td>909</td><td><span class="ct"> * Gain: '<a class="ct blk" blk_line="909"><S38>/Alpha_Gain</a>'</span></td></tr> <tr name="910" id="910"> <td>910</td><td><span class="ct"> * Gain: '<a class="ct blk" blk_line="910"><S38>/Beta_Gain</a>'</span></td></tr> <tr name="911" id="911"> <td>911</td><td><span class="ct"> * Sum: '<a class="ct blk" blk_line="911"><S38>/Add</a>'</span></td></tr> <tr name="912" id="912"> <td>912</td><td><span class="ct"> */</span></td></tr> <tr name="913" id="913"> <td>913</td><td> <a id="913c3" class="tk">phase_voltages</a>[2] = ((33.941124F - (1.73205078F * <a id="913c53" class="tk">alpha_voltage</a>)) - (3.0F *</td></tr> <tr name="914" id="914"> <td>914</td><td> <a id="914c5" class="tk">SignPreIntegrator_f</a>)) * 0.353553385F;</td></tr> <tr name="915" id="915"> <td>915</td><td></td></tr> <tr name="916" id="916"> <td>916</td><td> <span class="ct">/* LookupNDDirect: '<a class="ct blk" blk_line="916"><S28>/Lookup_Table</a>' incorporates:</span></td></tr> <tr name="917" id="917"> <td>917</td><td><span class="ct"> * Constant: '<a class="ct blk" blk_line="917"><S39>/Constant</a>'</span></td></tr> <tr name="918" id="918"> <td>918</td><td><span class="ct"> * Constant: '<a class="ct blk" blk_line="918"><S40>/Constant</a>'</span></td></tr> <tr name="919" id="919"> <td>919</td><td><span class="ct"> * Constant: '<a class="ct blk" blk_line="919"><S41>/Constant</a>'</span></td></tr> <tr name="920" id="920"> <td>920</td><td><span class="ct"> * Gain: '<a class="ct blk" blk_line="920"><S28>/Sector_Gain_VB</a>'</span></td></tr> <tr name="921" id="921"> <td>921</td><td><span class="ct"> * Gain: '<a class="ct blk" blk_line="921"><S28>/Sector_Gain_VC</a>'</span></td></tr> <tr name="922" id="922"> <td>922</td><td><span class="ct"> * RelationalOperator: '<a class="ct blk" blk_line="922"><S39>/Compare</a>'</span></td></tr> <tr name="923" id="923"> <td>923</td><td><span class="ct"> * RelationalOperator: '<a class="ct blk" blk_line="923"><S40>/Compare</a>'</span></td></tr> <tr name="924" id="924"> <td>924</td><td><span class="ct"> * RelationalOperator: '<a class="ct blk" blk_line="924"><S41>/Compare</a>'</span></td></tr> <tr name="925" id="925"> <td>925</td><td><span class="ct"> * Sum: '<a class="ct blk" blk_line="925"><S28>/Calculate_Phase_Advanced_Sector</a>'</span></td></tr> <tr name="926" id="926"> <td>926</td><td><span class="ct"> * Sum: '<a class="ct blk" blk_line="926"><S29>/Add</a>'</span></td></tr> <tr name="927" id="927"> <td>927</td><td><span class="ct"> * Sum: '<a class="ct blk" blk_line="927"><S29>/Add1</a>'</span></td></tr> <tr name="928" id="928"> <td>928</td><td><span class="ct"> *</span></td></tr> <tr name="929" id="929"> <td>929</td><td><span class="ct"> * About '<a class="ct blk" blk_line="929"><S28>/Lookup_Table</a>':</span></td></tr> <tr name="930" id="930"> <td>930</td><td><span class="ct"> * 1-dimensional Direct Look-Up returning a Scalar</span></td></tr> <tr name="931" id="931"> <td>931</td><td><span class="ct"> */</span></td></tr> <tr name="932" id="932"> <td>932</td><td> <a id="932c3" class="tk">u0</a> = (<a id="932c9" class="tk">int16_T</a>)(((((<a id="932c22" class="tk">Gain1</a> - <a id="932c30" class="tk">IntegralGain_j</a>) > 0.0F) << 1) +</td></tr> <tr name="933" id="933"> <td>933</td><td> (<a id="933c20" class="tk">SignPreIntegrator_f</a> > 0.0F)) + ((((0.0F - <a id="933c62" class="tk">IntegralGain_j</a>) -</td></tr> <tr name="934" id="934"> <td>934</td><td> <a id="934c5" class="tk">Gain1</a>) > 0.0F) << 2));</td></tr> <tr name="935" id="935"> <td>935</td><td> <span class="kw">if</span> (<a id="935c7" class="tk">u0</a> > 6) <span class="br">{</span></td></tr> <tr name="936" id="936"> <td>936</td><td> <a id="936c5" class="tk">u0</a> = 6;</td></tr> <tr name="937" id="937"> <td>937</td><td> <span class="br">}</span></td></tr> <tr name="938" id="938"> <td>938</td><td></td></tr> <tr name="939" id="939"> <td>939</td><td> <span class="ct">/* MultiPortSwitch: '<a class="ct blk" blk_line="939"><S27>/Select_Sector</a>' incorporates:</span></td></tr> <tr name="940" id="940"> <td>940</td><td><span class="ct"> * LookupNDDirect: '<a class="ct blk" blk_line="940"><S28>/Lookup_Table</a>'</span></td></tr> <tr name="941" id="941"> <td>941</td><td><span class="ct"> *</span></td></tr> <tr name="942" id="942"> <td>942</td><td><span class="ct"> * About '<a class="ct blk" blk_line="942"><S28>/Lookup_Table</a>':</span></td></tr> <tr name="943" id="943"> <td>943</td><td><span class="ct"> * 1-dimensional Direct Look-Up returning a Scalar</span></td></tr> <tr name="944" id="944"> <td>944</td><td><span class="ct"> */</span></td></tr> <tr name="945" id="945"> <td>945</td><td> <span class="kw">switch</span> (<a id="945c11" class="tk">ConstP</a>.<a id="945c18" class="tk">Lookup_Table_table</a>[<a id="945c37" class="tk">u0</a>]) <span class="br">{</span></td></tr> <tr name="946" id="946"> <td>946</td><td> <span class="kw">case</span> 1:</td></tr> <tr name="947" id="947"> <td>947</td><td> <a id="947c5" class="tk">phase_voltages</a>[0] = <a id="947c25" class="tk">electrical_angle</a>;</td></tr> <tr name="948" id="948"> <td>948</td><td> <a id="948c5" class="tk">phase_voltages</a>[1] = <a id="948c25" class="tk">Switch_fr</a>;</td></tr> <tr name="949" id="949"> <td>949</td><td> <a id="949c5" class="tk">phase_voltages</a>[2] = <a id="949c25" class="tk">cos_coefficient</a>;</td></tr> <tr name="950" id="950"> <td>950</td><td> <span class="kw">break</span>;</td></tr> <tr name="951" id="951"> <td>951</td><td></td></tr> <tr name="952" id="952"> <td>952</td><td> <span class="kw">case</span> 2:</td></tr> <tr name="953" id="953"> <td>953</td><td> <a id="953c5" class="tk">phase_voltages</a>[0] = <a id="953c25" class="tk">sin_coefficient</a>;</td></tr> <tr name="954" id="954"> <td>954</td><td> <a id="954c5" class="tk">phase_voltages</a>[1] = <a id="954c25" class="tk">Sectors_2_and_5_idx_1</a>;</td></tr> <tr name="955" id="955"> <td>955</td><td> <a id="955c5" class="tk">phase_voltages</a>[2] = <a id="955c25" class="tk">Sectors_2_and_5_idx_2</a>;</td></tr> <tr name="956" id="956"> <td>956</td><td> <span class="kw">break</span>;</td></tr> <tr name="957" id="957"> <td>957</td><td></td></tr> <tr name="958" id="958"> <td>958</td><td> <span class="kw">case</span> 3:</td></tr> <tr name="959" id="959"> <td>959</td><td> <span class="kw">break</span>;</td></tr> <tr name="960" id="960"> <td>960</td><td></td></tr> <tr name="961" id="961"> <td>961</td><td> <span class="kw">case</span> 4:</td></tr> <tr name="962" id="962"> <td>962</td><td> <a id="962c5" class="tk">phase_voltages</a>[0] = <a id="962c25" class="tk">electrical_angle</a>;</td></tr> <tr name="963" id="963"> <td>963</td><td> <a id="963c5" class="tk">phase_voltages</a>[1] = <a id="963c25" class="tk">Switch_fr</a>;</td></tr> <tr name="964" id="964"> <td>964</td><td> <a id="964c5" class="tk">phase_voltages</a>[2] = <a id="964c25" class="tk">cos_coefficient</a>;</td></tr> <tr name="965" id="965"> <td>965</td><td> <span class="kw">break</span>;</td></tr> <tr name="966" id="966"> <td>966</td><td></td></tr> <tr name="967" id="967"> <td>967</td><td> <span class="kw">case</span> 5:</td></tr> <tr name="968" id="968"> <td>968</td><td> <a id="968c5" class="tk">phase_voltages</a>[0] = <a id="968c25" class="tk">sin_coefficient</a>;</td></tr> <tr name="969" id="969"> <td>969</td><td> <a id="969c5" class="tk">phase_voltages</a>[1] = <a id="969c25" class="tk">Sectors_2_and_5_idx_1</a>;</td></tr> <tr name="970" id="970"> <td>970</td><td> <a id="970c5" class="tk">phase_voltages</a>[2] = <a id="970c25" class="tk">Sectors_2_and_5_idx_2</a>;</td></tr> <tr name="971" id="971"> <td>971</td><td> <span class="kw">break</span>;</td></tr> <tr name="972" id="972"> <td>972</td><td> <span class="br">}</span></td></tr> <tr name="973" id="973"> <td>973</td><td></td></tr> <tr name="974" id="974"> <td>974</td><td> <span class="ct">/* End of MultiPortSwitch: '<a class="ct blk" blk_line="974"><S27>/Select_Sector</a>' */</span></td></tr> <tr name="975" id="975"> <td>975</td><td></td></tr> <tr name="976" id="976"> <td>976</td><td> <span class="ct">/* Switch: '<a class="ct blk" blk_line="976"><S6>/Switch</a>' */</span></td></tr> <tr name="977" id="977"> <td>977</td><td> <span class="kw">if</span> (<a id="977c7" class="tk">DWork</a>.<a id="977c13" class="tk">Lo_to_Hi_Rate_Transition3_Buffe</a>) <span class="br">{</span></td></tr> <tr name="978" id="978"> <td>978</td><td> <span class="ct">/* Outport: '<a class="ct blk" blk_line="978"><Root>/pwm_compare</a>' */</span></td></tr> <tr name="979" id="979"> <td>979</td><td> <a id="979c5" class="tk">pwm_compare</a>[0] = 1500U;</td></tr> <tr name="980" id="980"> <td>980</td><td> <a id="980c5" class="tk">pwm_compare</a>[1] = 1500U;</td></tr> <tr name="981" id="981"> <td>981</td><td> <a id="981c5" class="tk">pwm_compare</a>[2] = 1500U;</td></tr> <tr name="982" id="982"> <td>982</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="983" id="983"> <td>983</td><td> <span class="ct">/* Gain: '<a class="ct blk" blk_line="983"><S6>/Voltage to PWM Compare Units</a>' */</span></td></tr> <tr name="984" id="984"> <td>984</td><td> <a id="984c5" class="tk">electrical_angle</a> = 125.0F * <a id="984c33" class="tk">phase_voltages</a>[0];</td></tr> <tr name="985" id="985"> <td>985</td><td></td></tr> <tr name="986" id="986"> <td>986</td><td> <span class="ct">/* Saturate: '<a class="ct blk" blk_line="986"><S6>/Saturation</a>' */</span></td></tr> <tr name="987" id="987"> <td>987</td><td> <span class="kw">if</span> (<a id="987c9" class="tk">electrical_angle</a> > 2999.0F) <span class="br">{</span></td></tr> <tr name="988" id="988"> <td>988</td><td> <span class="ct">/* Outport: '<a class="ct blk" blk_line="988"><Root>/pwm_compare</a>' incorporates:</span></td></tr> <tr name="989" id="989"> <td>989</td><td><span class="ct"> * DataTypeConversion: '<a class="ct blk" blk_line="989"><S6>/Quantize</a>'</span></td></tr> <tr name="990" id="990"> <td>990</td><td><span class="ct"> */</span></td></tr> <tr name="991" id="991"> <td>991</td><td> <a id="991c7" class="tk">pwm_compare</a>[0] = 2999U;</td></tr> <tr name="992" id="992"> <td>992</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="992c16" class="tk">electrical_angle</a> < 0.0F) <span class="br">{</span></td></tr> <tr name="993" id="993"> <td>993</td><td> <span class="ct">/* Outport: '<a class="ct blk" blk_line="993"><Root>/pwm_compare</a>' incorporates:</span></td></tr> <tr name="994" id="994"> <td>994</td><td><span class="ct"> * DataTypeConversion: '<a class="ct blk" blk_line="994"><S6>/Quantize</a>'</span></td></tr> <tr name="995" id="995"> <td>995</td><td><span class="ct"> */</span></td></tr> <tr name="996" id="996"> <td>996</td><td> <a id="996c7" class="tk">pwm_compare</a>[0] = 0U;</td></tr> <tr name="997" id="997"> <td>997</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="998" id="998"> <td>998</td><td> <span class="ct">/* Outport: '<a class="ct blk" blk_line="998"><Root>/pwm_compare</a>' incorporates:</span></td></tr> <tr name="999" id="999"> <td>999</td><td><span class="ct"> * DataTypeConversion: '<a class="ct blk" blk_line="999"><S6>/Quantize</a>'</span></td></tr> <tr name="1000" id="1000"> <td>1000</td><td><span class="ct"> */</span></td></tr> <tr name="1001" id="1001"> <td>1001</td><td> <a id="1001c7" class="tk">pwm_compare</a>[0] = (<a id="1001c25" class="tk">uint16_T</a>)<a id="1001c34" class="tk">electrical_angle</a>;</td></tr> <tr name="1002" id="1002"> <td>1002</td><td> <span class="br">}</span></td></tr> <tr name="1003" id="1003"> <td>1003</td><td></td></tr> <tr name="1004" id="1004"> <td>1004</td><td> <span class="ct">/* Gain: '<a class="ct blk" blk_line="1004"><S6>/Voltage to PWM Compare Units</a>' */</span></td></tr> <tr name="1005" id="1005"> <td>1005</td><td> <a id="1005c5" class="tk">electrical_angle</a> = 125.0F * <a id="1005c33" class="tk">phase_voltages</a>[1];</td></tr> <tr name="1006" id="1006"> <td>1006</td><td></td></tr> <tr name="1007" id="1007"> <td>1007</td><td> <span class="ct">/* Saturate: '<a class="ct blk" blk_line="1007"><S6>/Saturation</a>' */</span></td></tr> <tr name="1008" id="1008"> <td>1008</td><td> <span class="kw">if</span> (<a id="1008c9" class="tk">electrical_angle</a> > 2999.0F) <span class="br">{</span></td></tr> <tr name="1009" id="1009"> <td>1009</td><td> <span class="ct">/* Outport: '<a class="ct blk" blk_line="1009"><Root>/pwm_compare</a>' incorporates:</span></td></tr> <tr name="1010" id="1010"> <td>1010</td><td><span class="ct"> * DataTypeConversion: '<a class="ct blk" blk_line="1010"><S6>/Quantize</a>'</span></td></tr> <tr name="1011" id="1011"> <td>1011</td><td><span class="ct"> */</span></td></tr> <tr name="1012" id="1012"> <td>1012</td><td> <a id="1012c7" class="tk">pwm_compare</a>[1] = 2999U;</td></tr> <tr name="1013" id="1013"> <td>1013</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="1013c16" class="tk">electrical_angle</a> < 0.0F) <span class="br">{</span></td></tr> <tr name="1014" id="1014"> <td>1014</td><td> <span class="ct">/* Outport: '<a class="ct blk" blk_line="1014"><Root>/pwm_compare</a>' incorporates:</span></td></tr> <tr name="1015" id="1015"> <td>1015</td><td><span class="ct"> * DataTypeConversion: '<a class="ct blk" blk_line="1015"><S6>/Quantize</a>'</span></td></tr> <tr name="1016" id="1016"> <td>1016</td><td><span class="ct"> */</span></td></tr> <tr name="1017" id="1017"> <td>1017</td><td> <a id="1017c7" class="tk">pwm_compare</a>[1] = 0U;</td></tr> <tr name="1018" id="1018"> <td>1018</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="1019" id="1019"> <td>1019</td><td> <span class="ct">/* Outport: '<a class="ct blk" blk_line="1019"><Root>/pwm_compare</a>' incorporates:</span></td></tr> <tr name="1020" id="1020"> <td>1020</td><td><span class="ct"> * DataTypeConversion: '<a class="ct blk" blk_line="1020"><S6>/Quantize</a>'</span></td></tr> <tr name="1021" id="1021"> <td>1021</td><td><span class="ct"> */</span></td></tr> <tr name="1022" id="1022"> <td>1022</td><td> <a id="1022c7" class="tk">pwm_compare</a>[1] = (<a id="1022c25" class="tk">uint16_T</a>)<a id="1022c34" class="tk">electrical_angle</a>;</td></tr> <tr name="1023" id="1023"> <td>1023</td><td> <span class="br">}</span></td></tr> <tr name="1024" id="1024"> <td>1024</td><td></td></tr> <tr name="1025" id="1025"> <td>1025</td><td> <span class="ct">/* Gain: '<a class="ct blk" blk_line="1025"><S6>/Voltage to PWM Compare Units</a>' */</span></td></tr> <tr name="1026" id="1026"> <td>1026</td><td> <a id="1026c5" class="tk">electrical_angle</a> = 125.0F * <a id="1026c33" class="tk">phase_voltages</a>[2];</td></tr> <tr name="1027" id="1027"> <td>1027</td><td></td></tr> <tr name="1028" id="1028"> <td>1028</td><td> <span class="ct">/* Saturate: '<a class="ct blk" blk_line="1028"><S6>/Saturation</a>' */</span></td></tr> <tr name="1029" id="1029"> <td>1029</td><td> <span class="kw">if</span> (<a id="1029c9" class="tk">electrical_angle</a> > 2999.0F) <span class="br">{</span></td></tr> <tr name="1030" id="1030"> <td>1030</td><td> <span class="ct">/* Outport: '<a class="ct blk" blk_line="1030"><Root>/pwm_compare</a>' incorporates:</span></td></tr> <tr name="1031" id="1031"> <td>1031</td><td><span class="ct"> * DataTypeConversion: '<a class="ct blk" blk_line="1031"><S6>/Quantize</a>'</span></td></tr> <tr name="1032" id="1032"> <td>1032</td><td><span class="ct"> */</span></td></tr> <tr name="1033" id="1033"> <td>1033</td><td> <a id="1033c7" class="tk">pwm_compare</a>[2] = 2999U;</td></tr> <tr name="1034" id="1034"> <td>1034</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="1034c16" class="tk">electrical_angle</a> < 0.0F) <span class="br">{</span></td></tr> <tr name="1035" id="1035"> <td>1035</td><td> <span class="ct">/* Outport: '<a class="ct blk" blk_line="1035"><Root>/pwm_compare</a>' incorporates:</span></td></tr> <tr name="1036" id="1036"> <td>1036</td><td><span class="ct"> * DataTypeConversion: '<a class="ct blk" blk_line="1036"><S6>/Quantize</a>'</span></td></tr> <tr name="1037" id="1037"> <td>1037</td><td><span class="ct"> */</span></td></tr> <tr name="1038" id="1038"> <td>1038</td><td> <a id="1038c7" class="tk">pwm_compare</a>[2] = 0U;</td></tr> <tr name="1039" id="1039"> <td>1039</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="1040" id="1040"> <td>1040</td><td> <span class="ct">/* Outport: '<a class="ct blk" blk_line="1040"><Root>/pwm_compare</a>' incorporates:</span></td></tr> <tr name="1041" id="1041"> <td>1041</td><td><span class="ct"> * DataTypeConversion: '<a class="ct blk" blk_line="1041"><S6>/Quantize</a>'</span></td></tr> <tr name="1042" id="1042"> <td>1042</td><td><span class="ct"> */</span></td></tr> <tr name="1043" id="1043"> <td>1043</td><td> <a id="1043c7" class="tk">pwm_compare</a>[2] = (<a id="1043c25" class="tk">uint16_T</a>)<a id="1043c34" class="tk">electrical_angle</a>;</td></tr> <tr name="1044" id="1044"> <td>1044</td><td> <span class="br">}</span></td></tr> <tr name="1045" id="1045"> <td>1045</td><td> <span class="br">}</span></td></tr> <tr name="1046" id="1046"> <td>1046</td><td></td></tr> <tr name="1047" id="1047"> <td>1047</td><td> <span class="ct">/* End of Switch: '<a class="ct blk" blk_line="1047"><S6>/Switch</a>' */</span></td></tr> <tr name="1048" id="1048"> <td>1048</td><td></td></tr> <tr name="1049" id="1049"> <td>1049</td><td> <span class="ct">/* DeadZone: '<a class="ct blk" blk_line="1049"><S19>/DeadZone</a>' */</span></td></tr> <tr name="1050" id="1050"> <td>1050</td><td> <span class="kw">if</span> (<a id="1050c7" class="tk">SignDeltaU</a> > 12.0F) <span class="br">{</span></td></tr> <tr name="1051" id="1051"> <td>1051</td><td> <a id="1051c5" class="tk">SignDeltaU</a> -= 12.0F;</td></tr> <tr name="1052" id="1052"> <td>1052</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="1052c14" class="tk">SignDeltaU</a> >= -12.0F) <span class="br">{</span></td></tr> <tr name="1053" id="1053"> <td>1053</td><td> <a id="1053c5" class="tk">SignDeltaU</a> = 0.0F;</td></tr> <tr name="1054" id="1054"> <td>1054</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="1055" id="1055"> <td>1055</td><td> <a id="1055c5" class="tk">SignDeltaU</a> -= -12.0F;</td></tr> <tr name="1056" id="1056"> <td>1056</td><td> <span class="br">}</span></td></tr> <tr name="1057" id="1057"> <td>1057</td><td></td></tr> <tr name="1058" id="1058"> <td>1058</td><td> <span class="ct">/* End of DeadZone: '<a class="ct blk" blk_line="1058"><S19>/DeadZone</a>' */</span></td></tr> <tr name="1059" id="1059"> <td>1059</td><td></td></tr> <tr name="1060" id="1060"> <td>1060</td><td> <span class="ct">/* RelationalOperator: '<a class="ct blk" blk_line="1060"><S19>/NotEqual</a>' */</span></td></tr> <tr name="1061" id="1061"> <td>1061</td><td> <a id="1061c3" class="tk">NotEqual_b</a> = (0.0F != <a id="1061c25" class="tk">SignDeltaU</a>);</td></tr> <tr name="1062" id="1062"> <td>1062</td><td></td></tr> <tr name="1063" id="1063"> <td>1063</td><td> <span class="ct">/* Signum: '<a class="ct blk" blk_line="1063"><S19>/SignDeltaU</a>' */</span></td></tr> <tr name="1064" id="1064"> <td>1064</td><td> <span class="kw">if</span> (<a id="1064c7" class="tk">SignDeltaU</a> < 0.0F) <span class="br">{</span></td></tr> <tr name="1065" id="1065"> <td>1065</td><td> <a id="1065c5" class="tk">SignDeltaU</a> = -1.0F;</td></tr> <tr name="1066" id="1066"> <td>1066</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="1067" id="1067"> <td>1067</td><td> <span class="kw">if</span> (<a id="1067c9" class="tk">SignDeltaU</a> > 0.0F) <span class="br">{</span></td></tr> <tr name="1068" id="1068"> <td>1068</td><td> <a id="1068c7" class="tk">SignDeltaU</a> = 1.0F;</td></tr> <tr name="1069" id="1069"> <td>1069</td><td> <span class="br">}</span></td></tr> <tr name="1070" id="1070"> <td>1070</td><td> <span class="br">}</span></td></tr> <tr name="1071" id="1071"> <td>1071</td><td></td></tr> <tr name="1072" id="1072"> <td>1072</td><td> <span class="ct">/* End of Signum: '<a class="ct blk" blk_line="1072"><S19>/SignDeltaU</a>' */</span></td></tr> <tr name="1073" id="1073"> <td>1073</td><td></td></tr> <tr name="1074" id="1074"> <td>1074</td><td> <span class="ct">/* Gain: '<a class="ct blk" blk_line="1074"><S17>/Integral Gain</a>' */</span></td></tr> <tr name="1075" id="1075"> <td>1075</td><td> <a id="1075c3" class="tk">IntegralGain_j</a> = <a id="1075c20" class="tk">ctrlParams</a>.<a id="1075c31" class="tk">Current_I</a> * <a id="1075c43" class="tk">d_current_error</a>;</td></tr> <tr name="1076" id="1076"> <td>1076</td><td></td></tr> <tr name="1077" id="1077"> <td>1077</td><td> <span class="ct">/* DataTypeConversion: '<a class="ct blk" blk_line="1077"><S19>/DataTypeConv1</a>' */</span></td></tr> <tr name="1078" id="1078"> <td>1078</td><td> <span class="kw">if</span> (<a id="1078c7" class="tk">SignDeltaU</a> < 128.0F) <span class="br">{</span></td></tr> <tr name="1079" id="1079"> <td>1079</td><td> <a id="1079c5" class="tk">rtPrevAction</a> = (<a id="1079c21" class="tk">int8_T</a>)<a id="1079c28" class="tk">SignDeltaU</a>;</td></tr> <tr name="1080" id="1080"> <td>1080</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="1081" id="1081"> <td>1081</td><td> <a id="1081c5" class="tk">rtPrevAction</a> = <a id="1081c20" class="tk">MAX_int8_T</a>;</td></tr> <tr name="1082" id="1082"> <td>1082</td><td> <span class="br">}</span></td></tr> <tr name="1083" id="1083"> <td>1083</td><td></td></tr> <tr name="1084" id="1084"> <td>1084</td><td> <span class="ct">/* End of DataTypeConversion: '<a class="ct blk" blk_line="1084"><S19>/DataTypeConv1</a>' */</span></td></tr> <tr name="1085" id="1085"> <td>1085</td><td></td></tr> <tr name="1086" id="1086"> <td>1086</td><td> <span class="ct">/* Signum: '<a class="ct blk" blk_line="1086"><S19>/SignPreIntegrator</a>' */</span></td></tr> <tr name="1087" id="1087"> <td>1087</td><td> <span class="kw">if</span> (<a id="1087c7" class="tk">IntegralGain_j</a> < 0.0F) <span class="br">{</span></td></tr> <tr name="1088" id="1088"> <td>1088</td><td> <a id="1088c5" class="tk">electrical_angle</a> = -1.0F;</td></tr> <tr name="1089" id="1089"> <td>1089</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="1089c14" class="tk">IntegralGain_j</a> > 0.0F) <span class="br">{</span></td></tr> <tr name="1090" id="1090"> <td>1090</td><td> <a id="1090c5" class="tk">electrical_angle</a> = 1.0F;</td></tr> <tr name="1091" id="1091"> <td>1091</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="1092" id="1092"> <td>1092</td><td> <a id="1092c5" class="tk">electrical_angle</a> = <a id="1092c24" class="tk">IntegralGain_j</a>;</td></tr> <tr name="1093" id="1093"> <td>1093</td><td> <span class="br">}</span></td></tr> <tr name="1094" id="1094"> <td>1094</td><td></td></tr> <tr name="1095" id="1095"> <td>1095</td><td> <span class="ct">/* Switch: '<a class="ct blk" blk_line="1095"><S17>/Switch</a>' incorporates:</span></td></tr> <tr name="1096" id="1096"> <td>1096</td><td><span class="ct"> * Constant: '<a class="ct blk" blk_line="1096"><S17>/Constant</a>'</span></td></tr> <tr name="1097" id="1097"> <td>1097</td><td><span class="ct"> * DataTypeConversion: '<a class="ct blk" blk_line="1097"><S19>/DataTypeConv2</a>'</span></td></tr> <tr name="1098" id="1098"> <td>1098</td><td><span class="ct"> * Logic: '<a class="ct blk" blk_line="1098"><S19>/AND</a>'</span></td></tr> <tr name="1099" id="1099"> <td>1099</td><td><span class="ct"> * RelationalOperator: '<a class="ct blk" blk_line="1099"><S19>/Equal</a>'</span></td></tr> <tr name="1100" id="1100"> <td>1100</td><td><span class="ct"> * Signum: '<a class="ct blk" blk_line="1100"><S19>/SignPreIntegrator</a>'</span></td></tr> <tr name="1101" id="1101"> <td>1101</td><td><span class="ct"> */</span></td></tr> <tr name="1102" id="1102"> <td>1102</td><td> <span class="kw">if</span> (<a id="1102c7" class="tk">NotEqual_b</a> && (<a id="1102c22" class="tk">rtPrevAction</a> == ((<a id="1102c40" class="tk">int8_T</a>)<a id="1102c47" class="tk">electrical_angle</a>))) <span class="br">{</span></td></tr> <tr name="1103" id="1103"> <td>1103</td><td> <a id="1103c5" class="tk">electrical_angle</a> = 0.0F;</td></tr> <tr name="1104" id="1104"> <td>1104</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="1105" id="1105"> <td>1105</td><td> <a id="1105c5" class="tk">electrical_angle</a> = <a id="1105c24" class="tk">IntegralGain_j</a>;</td></tr> <tr name="1106" id="1106"> <td>1106</td><td> <span class="br">}</span></td></tr> <tr name="1107" id="1107"> <td>1107</td><td></td></tr> <tr name="1108" id="1108"> <td>1108</td><td> <span class="ct">/* End of Switch: '<a class="ct blk" blk_line="1108"><S17>/Switch</a>' */</span></td></tr> <tr name="1109" id="1109"> <td>1109</td><td></td></tr> <tr name="1110" id="1110"> <td>1110</td><td> <span class="ct">/* DeadZone: '<a class="ct blk" blk_line="1110"><S20>/DeadZone</a>' */</span></td></tr> <tr name="1111" id="1111"> <td>1111</td><td> <span class="kw">if</span> (<a id="1111c7" class="tk">SignDeltaU_b</a> > 12.0F) <span class="br">{</span></td></tr> <tr name="1112" id="1112"> <td>1112</td><td> <a id="1112c5" class="tk">SignDeltaU_b</a> -= 12.0F;</td></tr> <tr name="1113" id="1113"> <td>1113</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="1113c14" class="tk">SignDeltaU_b</a> >= -12.0F) <span class="br">{</span></td></tr> <tr name="1114" id="1114"> <td>1114</td><td> <a id="1114c5" class="tk">SignDeltaU_b</a> = 0.0F;</td></tr> <tr name="1115" id="1115"> <td>1115</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="1116" id="1116"> <td>1116</td><td> <a id="1116c5" class="tk">SignDeltaU_b</a> -= -12.0F;</td></tr> <tr name="1117" id="1117"> <td>1117</td><td> <span class="br">}</span></td></tr> <tr name="1118" id="1118"> <td>1118</td><td></td></tr> <tr name="1119" id="1119"> <td>1119</td><td> <span class="ct">/* End of DeadZone: '<a class="ct blk" blk_line="1119"><S20>/DeadZone</a>' */</span></td></tr> <tr name="1120" id="1120"> <td>1120</td><td></td></tr> <tr name="1121" id="1121"> <td>1121</td><td> <span class="ct">/* RelationalOperator: '<a class="ct blk" blk_line="1121"><S20>/NotEqual</a>' */</span></td></tr> <tr name="1122" id="1122"> <td>1122</td><td> <a id="1122c3" class="tk">NotEqual_b</a> = (0.0F != <a id="1122c25" class="tk">SignDeltaU_b</a>);</td></tr> <tr name="1123" id="1123"> <td>1123</td><td></td></tr> <tr name="1124" id="1124"> <td>1124</td><td> <span class="ct">/* Signum: '<a class="ct blk" blk_line="1124"><S20>/SignDeltaU</a>' */</span></td></tr> <tr name="1125" id="1125"> <td>1125</td><td> <span class="kw">if</span> (<a id="1125c7" class="tk">SignDeltaU_b</a> < 0.0F) <span class="br">{</span></td></tr> <tr name="1126" id="1126"> <td>1126</td><td> <a id="1126c5" class="tk">SignDeltaU_b</a> = -1.0F;</td></tr> <tr name="1127" id="1127"> <td>1127</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="1128" id="1128"> <td>1128</td><td> <span class="kw">if</span> (<a id="1128c9" class="tk">SignDeltaU_b</a> > 0.0F) <span class="br">{</span></td></tr> <tr name="1129" id="1129"> <td>1129</td><td> <a id="1129c7" class="tk">SignDeltaU_b</a> = 1.0F;</td></tr> <tr name="1130" id="1130"> <td>1130</td><td> <span class="br">}</span></td></tr> <tr name="1131" id="1131"> <td>1131</td><td> <span class="br">}</span></td></tr> <tr name="1132" id="1132"> <td>1132</td><td></td></tr> <tr name="1133" id="1133"> <td>1133</td><td> <span class="ct">/* End of Signum: '<a class="ct blk" blk_line="1133"><S20>/SignDeltaU</a>' */</span></td></tr> <tr name="1134" id="1134"> <td>1134</td><td></td></tr> <tr name="1135" id="1135"> <td>1135</td><td> <span class="ct">/* Gain: '<a class="ct blk" blk_line="1135"><S18>/Integral Gain</a>' */</span></td></tr> <tr name="1136" id="1136"> <td>1136</td><td> <a id="1136c3" class="tk">IntegralGain_j</a> = <a id="1136c20" class="tk">ctrlParams</a>.<a id="1136c31" class="tk">Current_I</a> * <a id="1136c43" class="tk">q_current_error</a>;</td></tr> <tr name="1137" id="1137"> <td>1137</td><td> <span class="kw">if</span> (<a id="1137c7" class="tk">M</a>-><a id="1137c10" class="tk">Timing</a>.<a id="1137c17" class="tk">TaskCounters</a>.<a id="1137c30" class="tk">TID</a>[1] == 0) <span class="br">{</span></td></tr> <tr name="1138" id="1138"> <td>1138</td><td> <span class="ct">/* RelationalOperator: '<a class="ct blk" blk_line="1138"><S6>/Relational Operator</a>' incorporates:</span></td></tr> <tr name="1139" id="1139"> <td>1139</td><td><span class="ct"> * Constant: '<a class="ct blk" blk_line="1139"><S47>/Constant</a>'</span></td></tr> <tr name="1140" id="1140"> <td>1140</td><td><span class="ct"> */</span></td></tr> <tr name="1141" id="1141"> <td>1141</td><td> <a id="1141c5" class="tk">RelationalOperator</a> = (<a id="1141c27" class="tk">controller_mode</a> == <a id="1141c46" class="tk">StandBy</a>);</td></tr> <tr name="1142" id="1142"> <td>1142</td><td></td></tr> <tr name="1143" id="1143"> <td>1143</td><td> <span class="ct">/* Outputs for Enabled SubSystem: '<a class="ct blk" blk_line="1143"><S60>/Generate_Error</a>' incorporates:</span></td></tr> <tr name="1144" id="1144"> <td>1144</td><td><span class="ct"> * EnablePort: '<a class="ct blk" blk_line="1144"><S62>/Enable</a>'</span></td></tr> <tr name="1145" id="1145"> <td>1145</td><td><span class="ct"> */</span></td></tr> <tr name="1146" id="1146"> <td>1146</td><td> <span class="ct">/* Logic: '<a class="ct blk" blk_line="1146"><S60>/AND</a>' incorporates:</span></td></tr> <tr name="1147" id="1147"> <td>1147</td><td><span class="ct"> * Abs: '<a class="ct blk" blk_line="1147"><S60>/Velocity_Abs</a>'</span></td></tr> <tr name="1148" id="1148"> <td>1148</td><td><span class="ct"> * Constant: '<a class="ct blk" blk_line="1148"><S60>/Max_Valid_Velocity_Change</a>'</span></td></tr> <tr name="1149" id="1149"> <td>1149</td><td><span class="ct"> * Constant: '<a class="ct blk" blk_line="1149"><S61>/Constant</a>'</span></td></tr> <tr name="1150" id="1150"> <td>1150</td><td><span class="ct"> * Delay: '<a class="ct blk" blk_line="1150"><S60>/Velocity_Delay</a>'</span></td></tr> <tr name="1151" id="1151"> <td>1151</td><td><span class="ct"> * RelationalOperator: '<a class="ct blk" blk_line="1151"><S60>/Excessive_Velocity_Change</a>'</span></td></tr> <tr name="1152" id="1152"> <td>1152</td><td><span class="ct"> * RelationalOperator: '<a class="ct blk" blk_line="1152"><S60>/Relational_Operator</a>'</span></td></tr> <tr name="1153" id="1153"> <td>1153</td><td><span class="ct"> * Sum: '<a class="ct blk" blk_line="1153"><S60>/Velocity_Difference</a>'</span></td></tr> <tr name="1154" id="1154"> <td>1154</td><td><span class="ct"> */</span></td></tr> <tr name="1155" id="1155"> <td>1155</td><td> <span class="kw">if</span> ((<a id="1155c10" class="tk">controller_mode</a> == <a id="1155c29" class="tk">VelocityControl</a>) && (((<a id="1155c52" class="tk">real32_T</a>)<a id="1155c61" class="tk">fabs</a></td></tr> <tr name="1156" id="1156"> <td>1156</td><td> (<a id="1156c12" class="tk">velocity_measured</a> - <a id="1156c32" class="tk">DWork</a>.<a id="1156c38" class="tk">Velocity_Delay_DSTATE</a>)) >= 628.318542F)) <span class="br">{</span></td></tr> <tr name="1157" id="1157"> <td>1157</td><td> <span class="ct">/* DataStoreWrite: '<a class="ct blk" blk_line="1157"><S62>/Data_Store_Write</a>' incorporates:</span></td></tr> <tr name="1158" id="1158"> <td>1158</td><td><span class="ct"> * Constant: '<a class="ct blk" blk_line="1158"><S63>/Constant</a>'</span></td></tr> <tr name="1159" id="1159"> <td>1159</td><td><span class="ct"> */</span></td></tr> <tr name="1160" id="1160"> <td>1160</td><td> <a id="1160c7" class="tk">DWork</a>.<a id="1160c13" class="tk">error_l</a> = <a id="1160c23" class="tk">MeasuredVelocityError</a>;</td></tr> <tr name="1161" id="1161"> <td>1161</td><td> <span class="br">}</span></td></tr> <tr name="1162" id="1162"> <td>1162</td><td></td></tr> <tr name="1163" id="1163"> <td>1163</td><td> <span class="ct">/* End of Logic: '<a class="ct blk" blk_line="1163"><S60>/AND</a>' */</span></td></tr> <tr name="1164" id="1164"> <td>1164</td><td> <span class="ct">/* End of Outputs for SubSystem: '<a class="ct blk" blk_line="1164"><S60>/Generate_Error</a>' */</span></td></tr> <tr name="1165" id="1165"> <td>1165</td><td> <span class="br">}</span></td></tr> <tr name="1166" id="1166"> <td>1166</td><td></td></tr> <tr name="1167" id="1167"> <td>1167</td><td> <span class="ct">/* Outport: '<a class="ct blk" blk_line="1167"><Root>/error</a>' incorporates:</span></td></tr> <tr name="1168" id="1168"> <td>1168</td><td><span class="ct"> * DataStoreRead: '<a class="ct blk" blk_line="1168"><Root>/Data Store Read</a>'</span></td></tr> <tr name="1169" id="1169"> <td>1169</td><td><span class="ct"> */</span></td></tr> <tr name="1170" id="1170"> <td>1170</td><td> <a id="1170c3" class="tk">error</a> = <a id="1170c11" class="tk">DWork</a>.<a id="1170c17" class="tk">error_l</a>;</td></tr> <tr name="1171" id="1171"> <td>1171</td><td></td></tr> <tr name="1172" id="1172"> <td>1172</td><td> <span class="ct">/* Update for RateTransition: '<a class="ct blk" blk_line="1172"><S6>/Lo_to_Hi_Rate_Transition3</a>' */</span></td></tr> <tr name="1173" id="1173"> <td>1173</td><td> <span class="kw">if</span> (<a id="1173c7" class="tk">M</a>-><a id="1173c10" class="tk">Timing</a>.<a id="1173c17" class="tk">TaskCounters</a>.<a id="1173c30" class="tk">TID</a>[1] == 0) <span class="br">{</span></td></tr> <tr name="1174" id="1174"> <td>1174</td><td> <a id="1174c5" class="tk">DWork</a>.<a id="1174c11" class="tk">Lo_to_Hi_Rate_Transition3_Buffe</a> = <a id="1174c45" class="tk">RelationalOperator</a>;</td></tr> <tr name="1175" id="1175"> <td>1175</td><td></td></tr> <tr name="1176" id="1176"> <td>1176</td><td> <span class="ct">/* Update for Delay: '<a class="ct blk" blk_line="1176"><S55>/Position_Delay</a>' */</span></td></tr> <tr name="1177" id="1177"> <td>1177</td><td> <a id="1177c5" class="tk">DWork</a>.<a id="1177c11" class="tk">Position_Delay_DSTATE</a> = <a id="1177c35" class="tk">Wrap_To_Pi</a>;</td></tr> <tr name="1178" id="1178"> <td>1178</td><td> <span class="br">}</span></td></tr> <tr name="1179" id="1179"> <td>1179</td><td></td></tr> <tr name="1180" id="1180"> <td>1180</td><td> <span class="ct">/* End of Update for RateTransition: '<a class="ct blk" blk_line="1180"><S6>/Lo_to_Hi_Rate_Transition3</a>' */</span></td></tr> <tr name="1181" id="1181"> <td>1181</td><td></td></tr> <tr name="1182" id="1182"> <td>1182</td><td> <span class="ct">/* Update for UnitDelay: '<a class="ct blk" blk_line="1182"><S13>/Delay Input1</a>' */</span></td></tr> <tr name="1183" id="1183"> <td>1183</td><td> <a id="1183c3" class="tk">DWork</a>.<a id="1183c9" class="tk">DelayInput1_DSTATE</a> = <a id="1183c30" class="tk">Enum_To_Int</a>;</td></tr> <tr name="1184" id="1184"> <td>1184</td><td></td></tr> <tr name="1185" id="1185"> <td>1185</td><td> <span class="ct">/* Update for DiscreteIntegrator: '<a class="ct blk" blk_line="1185"><S17>/Integrator</a>' */</span></td></tr> <tr name="1186" id="1186"> <td>1186</td><td> <span class="kw">if</span> (<a id="1186c7" class="tk">FixPtRelationalOperator</a> == 0) <span class="br">{</span></td></tr> <tr name="1187" id="1187"> <td>1187</td><td> <a id="1187c5" class="tk">DWork</a>.<a id="1187c11" class="tk">Integrator_DSTATE</a> += 4.0E-5F * <a id="1187c42" class="tk">electrical_angle</a>;</td></tr> <tr name="1188" id="1188"> <td>1188</td><td> <span class="br">}</span></td></tr> <tr name="1189" id="1189"> <td>1189</td><td></td></tr> <tr name="1190" id="1190"> <td>1190</td><td> <span class="kw">if</span> (<a id="1190c7" class="tk">FixPtRelationalOperator</a> > 0) <span class="br">{</span></td></tr> <tr name="1191" id="1191"> <td>1191</td><td> <a id="1191c5" class="tk">DWork</a>.<a id="1191c11" class="tk">Integrator_PrevResetState</a> = 1;</td></tr> <tr name="1192" id="1192"> <td>1192</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="1193" id="1193"> <td>1193</td><td> <a id="1193c5" class="tk">DWork</a>.<a id="1193c11" class="tk">Integrator_PrevResetState</a> = 0;</td></tr> <tr name="1194" id="1194"> <td>1194</td><td> <span class="br">}</span></td></tr> <tr name="1195" id="1195"> <td>1195</td><td></td></tr> <tr name="1196" id="1196"> <td>1196</td><td> <span class="ct">/* End of Update for DiscreteIntegrator: '<a class="ct blk" blk_line="1196"><S17>/Integrator</a>' */</span></td></tr> <tr name="1197" id="1197"> <td>1197</td><td></td></tr> <tr name="1198" id="1198"> <td>1198</td><td> <span class="ct">/* Update for DiscreteIntegrator: '<a class="ct blk" blk_line="1198"><S18>/Integrator</a>' */</span></td></tr> <tr name="1199" id="1199"> <td>1199</td><td> <span class="kw">if</span> (<a id="1199c7" class="tk">FixPtRelationalOperator</a> == 0) <span class="br">{</span></td></tr> <tr name="1200" id="1200"> <td>1200</td><td> <span class="ct">/* DataTypeConversion: '<a class="ct blk" blk_line="1200"><S20>/DataTypeConv1</a>' */</span></td></tr> <tr name="1201" id="1201"> <td>1201</td><td> <span class="kw">if</span> (<a id="1201c9" class="tk">SignDeltaU_b</a> < 128.0F) <span class="br">{</span></td></tr> <tr name="1202" id="1202"> <td>1202</td><td> <a id="1202c7" class="tk">rtPrevAction</a> = (<a id="1202c23" class="tk">int8_T</a>)<a id="1202c30" class="tk">SignDeltaU_b</a>;</td></tr> <tr name="1203" id="1203"> <td>1203</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="1204" id="1204"> <td>1204</td><td> <a id="1204c7" class="tk">rtPrevAction</a> = <a id="1204c22" class="tk">MAX_int8_T</a>;</td></tr> <tr name="1205" id="1205"> <td>1205</td><td> <span class="br">}</span></td></tr> <tr name="1206" id="1206"> <td>1206</td><td></td></tr> <tr name="1207" id="1207"> <td>1207</td><td> <span class="ct">/* End of DataTypeConversion: '<a class="ct blk" blk_line="1207"><S20>/DataTypeConv1</a>' */</span></td></tr> <tr name="1208" id="1208"> <td>1208</td><td></td></tr> <tr name="1209" id="1209"> <td>1209</td><td> <span class="ct">/* Signum: '<a class="ct blk" blk_line="1209"><S20>/SignPreIntegrator</a>' */</span></td></tr> <tr name="1210" id="1210"> <td>1210</td><td> <span class="kw">if</span> (<a id="1210c9" class="tk">IntegralGain_j</a> < 0.0F) <span class="br">{</span></td></tr> <tr name="1211" id="1211"> <td>1211</td><td> <a id="1211c7" class="tk">electrical_angle</a> = -1.0F;</td></tr> <tr name="1212" id="1212"> <td>1212</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="kw">if</span> (<a id="1212c16" class="tk">IntegralGain_j</a> > 0.0F) <span class="br">{</span></td></tr> <tr name="1213" id="1213"> <td>1213</td><td> <a id="1213c7" class="tk">electrical_angle</a> = 1.0F;</td></tr> <tr name="1214" id="1214"> <td>1214</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="1215" id="1215"> <td>1215</td><td> <a id="1215c7" class="tk">electrical_angle</a> = <a id="1215c26" class="tk">IntegralGain_j</a>;</td></tr> <tr name="1216" id="1216"> <td>1216</td><td> <span class="br">}</span></td></tr> <tr name="1217" id="1217"> <td>1217</td><td></td></tr> <tr name="1218" id="1218"> <td>1218</td><td> <span class="ct">/* Switch: '<a class="ct blk" blk_line="1218"><S18>/Switch</a>' incorporates:</span></td></tr> <tr name="1219" id="1219"> <td>1219</td><td><span class="ct"> * Constant: '<a class="ct blk" blk_line="1219"><S18>/Constant</a>'</span></td></tr> <tr name="1220" id="1220"> <td>1220</td><td><span class="ct"> * DataTypeConversion: '<a class="ct blk" blk_line="1220"><S20>/DataTypeConv2</a>'</span></td></tr> <tr name="1221" id="1221"> <td>1221</td><td><span class="ct"> * Logic: '<a class="ct blk" blk_line="1221"><S20>/AND</a>'</span></td></tr> <tr name="1222" id="1222"> <td>1222</td><td><span class="ct"> * RelationalOperator: '<a class="ct blk" blk_line="1222"><S20>/Equal</a>'</span></td></tr> <tr name="1223" id="1223"> <td>1223</td><td><span class="ct"> * Signum: '<a class="ct blk" blk_line="1223"><S20>/SignPreIntegrator</a>'</span></td></tr> <tr name="1224" id="1224"> <td>1224</td><td><span class="ct"> */</span></td></tr> <tr name="1225" id="1225"> <td>1225</td><td> <span class="kw">if</span> (<a id="1225c9" class="tk">NotEqual_b</a> && (<a id="1225c24" class="tk">rtPrevAction</a> == ((<a id="1225c42" class="tk">int8_T</a>)<a id="1225c49" class="tk">electrical_angle</a>))) <span class="br">{</span></td></tr> <tr name="1226" id="1226"> <td>1226</td><td> <a id="1226c7" class="tk">IntegralGain_j</a> = 0.0F;</td></tr> <tr name="1227" id="1227"> <td>1227</td><td> <span class="br">}</span></td></tr> <tr name="1228" id="1228"> <td>1228</td><td></td></tr> <tr name="1229" id="1229"> <td>1229</td><td> <span class="ct">/* End of Switch: '<a class="ct blk" blk_line="1229"><S18>/Switch</a>' */</span></td></tr> <tr name="1230" id="1230"> <td>1230</td><td> <a id="1230c5" class="tk">DWork</a>.<a id="1230c11" class="tk">Integrator_DSTATE_l</a> += 4.0E-5F * <a id="1230c44" class="tk">IntegralGain_j</a>;</td></tr> <tr name="1231" id="1231"> <td>1231</td><td> <span class="br">}</span></td></tr> <tr name="1232" id="1232"> <td>1232</td><td></td></tr> <tr name="1233" id="1233"> <td>1233</td><td> <span class="kw">if</span> (<a id="1233c7" class="tk">FixPtRelationalOperator</a> > 0) <span class="br">{</span></td></tr> <tr name="1234" id="1234"> <td>1234</td><td> <a id="1234c5" class="tk">DWork</a>.<a id="1234c11" class="tk">Integrator_PrevResetState_c</a> = 1;</td></tr> <tr name="1235" id="1235"> <td>1235</td><td> <span class="br">}</span> <span class="kw">else</span> <span class="br">{</span></td></tr> <tr name="1236" id="1236"> <td>1236</td><td> <a id="1236c5" class="tk">DWork</a>.<a id="1236c11" class="tk">Integrator_PrevResetState_c</a> = 0;</td></tr> <tr name="1237" id="1237"> <td>1237</td><td> <span class="br">}</span></td></tr> <tr name="1238" id="1238"> <td>1238</td><td></td></tr> <tr name="1239" id="1239"> <td>1239</td><td> <span class="ct">/* End of Update for DiscreteIntegrator: '<a class="ct blk" blk_line="1239"><S18>/Integrator</a>' */</span></td></tr> <tr name="1240" id="1240"> <td>1240</td><td> <span class="kw">if</span> (<a id="1240c7" class="tk">M</a>-><a id="1240c10" class="tk">Timing</a>.<a id="1240c17" class="tk">TaskCounters</a>.<a id="1240c30" class="tk">TID</a>[1] == 0) <span class="br">{</span></td></tr> <tr name="1241" id="1241"> <td>1241</td><td> <span class="ct">/* Update for Delay: '<a class="ct blk" blk_line="1241"><S60>/Velocity_Delay</a>' */</span></td></tr> <tr name="1242" id="1242"> <td>1242</td><td> <a id="1242c5" class="tk">DWork</a>.<a id="1242c11" class="tk">Velocity_Delay_DSTATE</a> = <a id="1242c35" class="tk">velocity_measured</a>;</td></tr> <tr name="1243" id="1243"> <td>1243</td><td> <span class="br">}</span></td></tr> <tr name="1244" id="1244"> <td>1244</td><td></td></tr> <tr name="1245" id="1245"> <td>1245</td><td> <a id="1245c3" class="tk">rate_scheduler</a>();</td></tr> <tr name="1246" id="1246"> <td>1246</td><td> <span class="kw">return</span> <a id="1246c10" class="tk">error</a>;</td></tr> <tr name="1247" id="1247"> <td>1247</td><td><span class="br">}</span></td></tr> <tr name="1248" id="1248"> <td>1248</td><td></td></tr> <tr name="1249" id="1249"> <td>1249</td><td><span class="ct">/* Model initialize function */</span></td></tr> <tr name="1250" id="1250"> <td>1250</td><td><span class="kw">void</span> <a id="1250c6" class="tk">Controller_Init</a>(<span class="kw">void</span>)</td></tr> <tr name="1251" id="1251"> <td>1251</td><td><span class="br">{</span></td></tr> <tr name="1252" id="1252"> <td>1252</td><td> <span class="ct">/* Registration code */</span></td></tr> <tr name="1253" id="1253"> <td>1253</td><td></td></tr> <tr name="1254" id="1254"> <td>1254</td><td> <span class="ct">/* initialize real-time model */</span></td></tr> <tr name="1255" id="1255"> <td>1255</td><td> (<span class="kw">void</span>) <a id="1255c10" class="tk">memset</a>((<span class="kw">void</span> *)<a id="1255c25" class="tk">M</a>, 0,</td></tr> <tr name="1256" id="1256"> <td>1256</td><td> <span class="kw">sizeof</span>(<a id="1256c24" class="tk">RT_MODEL</a>));</td></tr> <tr name="1257" id="1257"> <td>1257</td><td></td></tr> <tr name="1258" id="1258"> <td>1258</td><td> <span class="ct">/* block I/O */</span></td></tr> <tr name="1259" id="1259"> <td>1259</td><td></td></tr> <tr name="1260" id="1260"> <td>1260</td><td> <span class="ct">/* exported global signals */</span></td></tr> <tr name="1261" id="1261"> <td>1261</td><td> <a id="1261c3" class="tk">phase_currents</a>[0] = 0.0F;</td></tr> <tr name="1262" id="1262"> <td>1262</td><td> <a id="1262c3" class="tk">phase_currents</a>[1] = 0.0F;</td></tr> <tr name="1263" id="1263"> <td>1263</td><td> <a id="1263c3" class="tk">rotor_position</a> = 0.0F;</td></tr> <tr name="1264" id="1264"> <td>1264</td><td> <a id="1264c3" class="tk">velocity_measured</a> = 0.0F;</td></tr> <tr name="1265" id="1265"> <td>1265</td><td> <a id="1265c3" class="tk">d_current_error</a> = 0.0F;</td></tr> <tr name="1266" id="1266"> <td>1266</td><td> <a id="1266c3" class="tk">q_current_command</a> = 0.0F;</td></tr> <tr name="1267" id="1267"> <td>1267</td><td> <a id="1267c3" class="tk">q_current_measured</a> = 0.0F;</td></tr> <tr name="1268" id="1268"> <td>1268</td><td> <a id="1268c3" class="tk">q_current_error</a> = 0.0F;</td></tr> <tr name="1269" id="1269"> <td>1269</td><td> <a id="1269c3" class="tk">phase_voltages</a>[0] = 0.0F;</td></tr> <tr name="1270" id="1270"> <td>1270</td><td> <a id="1270c3" class="tk">phase_voltages</a>[1] = 0.0F;</td></tr> <tr name="1271" id="1271"> <td>1271</td><td> <a id="1271c3" class="tk">phase_voltages</a>[2] = 0.0F;</td></tr> <tr name="1272" id="1272"> <td>1272</td><td> <a id="1272c3" class="tk">velocity_error</a> = 0.0F;</td></tr> <tr name="1273" id="1273"> <td>1273</td><td> <a id="1273c3" class="tk">controller_mode</a> = <a id="1273c21" class="tk">StandBy</a>;</td></tr> <tr name="1274" id="1274"> <td>1274</td><td></td></tr> <tr name="1275" id="1275"> <td>1275</td><td> <span class="ct">/* states (dwork) */</span></td></tr> <tr name="1276" id="1276"> <td>1276</td><td> (<span class="kw">void</span>) <a id="1276c10" class="tk">memset</a>((<span class="kw">void</span> *)&<a id="1276c26" class="tk">DWork</a>, 0,</td></tr> <tr name="1277" id="1277"> <td>1277</td><td> <span class="kw">sizeof</span>(<a id="1277c24" class="tk">D_Work</a>));</td></tr> <tr name="1278" id="1278"> <td>1278</td><td></td></tr> <tr name="1279" id="1279"> <td>1279</td><td> <span class="ct">/* InitializeConditions for Enabled SubSystem: '<a class="ct blk" blk_line="1279"><S51>/Open Loop Position</a>' */</span></td></tr> <tr name="1280" id="1280"> <td>1280</td><td> <span class="ct">/* InitializeConditions for DiscreteIntegrator: '<a class="ct blk" blk_line="1280"><S65>/Integrate_To_Position</a>' */</span></td></tr> <tr name="1281" id="1281"> <td>1281</td><td> <a id="1281c3" class="tk">DWork</a>.<a id="1281c9" class="tk">Integrate_To_Position_DSTATE</a> = 0.0F;</td></tr> <tr name="1282" id="1282"> <td>1282</td><td></td></tr> <tr name="1283" id="1283"> <td>1283</td><td> <span class="ct">/* InitializeConditions for DiscreteIntegrator: '<a class="ct blk" blk_line="1283"><S65>/Integrate_To_Velocity</a>' */</span></td></tr> <tr name="1284" id="1284"> <td>1284</td><td> <a id="1284c3" class="tk">DWork</a>.<a id="1284c9" class="tk">Integrate_To_Velocity_DSTATE</a> = 0.0F;</td></tr> <tr name="1285" id="1285"> <td>1285</td><td></td></tr> <tr name="1286" id="1286"> <td>1286</td><td> <span class="ct">/* End of InitializeConditions for SubSystem: '<a class="ct blk" blk_line="1286"><S51>/Open Loop Position</a>' */</span></td></tr> <tr name="1287" id="1287"> <td>1287</td><td></td></tr> <tr name="1288" id="1288"> <td>1288</td><td> <span class="ct">/* Start for SwitchCase: '<a class="ct blk" blk_line="1288"><S5>/Switch Case</a>' */</span></td></tr> <tr name="1289" id="1289"> <td>1289</td><td> <a id="1289c3" class="tk">DWork</a>.<a id="1289c9" class="tk">SwitchCase_ActiveSubsystem</a> = -1;</td></tr> <tr name="1290" id="1290"> <td>1290</td><td></td></tr> <tr name="1291" id="1291"> <td>1291</td><td> <span class="ct">/* InitializeConditions for IfAction SubSystem: '<a class="ct blk" blk_line="1291"><S5>/Velocity_Control</a>' */</span></td></tr> <tr name="1292" id="1292"> <td>1292</td><td> <span class="ct">/* InitializeConditions for DiscreteIntegrator: '<a class="ct blk" blk_line="1292"><S45>/Integrator</a>' */</span></td></tr> <tr name="1293" id="1293"> <td>1293</td><td> <a id="1293c3" class="tk">DWork</a>.<a id="1293c9" class="tk">Integrator_DSTATE_f</a> = 0.0F;</td></tr> <tr name="1294" id="1294"> <td>1294</td><td></td></tr> <tr name="1295" id="1295"> <td>1295</td><td> <span class="ct">/* End of InitializeConditions for SubSystem: '<a class="ct blk" blk_line="1295"><S5>/Velocity_Control</a>' */</span></td></tr> <tr name="1296" id="1296"> <td>1296</td><td></td></tr> <tr name="1297" id="1297"> <td>1297</td><td> <span class="ct">/* InitializeConditions for IfAction SubSystem: '<a class="ct blk" blk_line="1297"><S5>/Position_Control</a>' */</span></td></tr> <tr name="1298" id="1298"> <td>1298</td><td> <span class="ct">/* InitializeConditions for DiscreteIntegrator: '<a class="ct blk" blk_line="1298"><S42>/Integrator</a>' */</span></td></tr> <tr name="1299" id="1299"> <td>1299</td><td> <a id="1299c3" class="tk">DWork</a>.<a id="1299c9" class="tk">Integrator_DSTATE_lc</a> = 0.0F;</td></tr> <tr name="1300" id="1300"> <td>1300</td><td></td></tr> <tr name="1301" id="1301"> <td>1301</td><td> <span class="ct">/* End of InitializeConditions for SubSystem: '<a class="ct blk" blk_line="1301"><S5>/Position_Control</a>' */</span></td></tr> <tr name="1302" id="1302"> <td>1302</td><td></td></tr> <tr name="1303" id="1303"> <td>1303</td><td> <span class="ct">/* InitializeConditions for Chart: '<a class="ct blk" blk_line="1303"><S49>/Wait_For_Valid_Position</a>' */</span></td></tr> <tr name="1304" id="1304"> <td>1304</td><td> <a id="1304c3" class="tk">DWork</a>.<a id="1304c9" class="tk">temporalCounter_i1</a> = 0U;</td></tr> <tr name="1305" id="1305"> <td>1305</td><td> <a id="1305c3" class="tk">DWork</a>.<a id="1305c9" class="tk">is_active_c2_rtwdemo_pmsmfoc</a> = 0U;</td></tr> <tr name="1306" id="1306"> <td>1306</td><td> <a id="1306c3" class="tk">DWork</a>.<a id="1306c9" class="tk">is_c2_rtwdemo_pmsmfoc</a> = <a id="1306c33" class="tk">IN_NO_ACTIVE_CHILD</a>;</td></tr> <tr name="1307" id="1307"> <td>1307</td><td> <a id="1307c3" class="tk">DWork</a>.<a id="1307c9" class="tk">Position_Valid</a> = 0U;</td></tr> <tr name="1308" id="1308"> <td>1308</td><td></td></tr> <tr name="1309" id="1309"> <td>1309</td><td> <span class="ct">/* InitializeConditions for Chart: '<a class="ct blk" blk_line="1309"><S1>/Controller_Mode_Scheduler</a>' */</span></td></tr> <tr name="1310" id="1310"> <td>1310</td><td> <a id="1310c3" class="tk">DWork</a>.<a id="1310c9" class="tk">is_Motor_On</a> = <a id="1310c23" class="tk">IN_NO_ACTIVE_CHILD</a>;</td></tr> <tr name="1311" id="1311"> <td>1311</td><td> <a id="1311c3" class="tk">DWork</a>.<a id="1311c9" class="tk">is_Motor_Control</a> = <a id="1311c28" class="tk">IN_NO_ACTIVE_CHILD</a>;</td></tr> <tr name="1312" id="1312"> <td>1312</td><td> <a id="1312c3" class="tk">DWork</a>.<a id="1312c9" class="tk">velocity_command</a> = 0.0F;</td></tr> <tr name="1313" id="1313"> <td>1313</td><td> <a id="1313c3" class="tk">DWork</a>.<a id="1313c9" class="tk">position_command</a> = 0.0F;</td></tr> <tr name="1314" id="1314"> <td>1314</td><td> <a id="1314c3" class="tk">DWork</a>.<a id="1314c9" class="tk">torque_command</a> = 0.0F;</td></tr> <tr name="1315" id="1315"> <td>1315</td><td></td></tr> <tr name="1316" id="1316"> <td>1316</td><td> <span class="ct">/* Entry: Mode_Scheduler/Controller_Mode_Scheduler */</span></td></tr> <tr name="1317" id="1317"> <td>1317</td><td> <span class="ct">/* Entry Internal: Mode_Scheduler/Controller_Mode_Scheduler */</span></td></tr> <tr name="1318" id="1318"> <td>1318</td><td> <span class="ct">/* Transition: '<a class="ct blk" blk_line="1318"><S4>:9</a>' */</span></td></tr> <tr name="1319" id="1319"> <td>1319</td><td> <a id="1319c3" class="tk">DWork</a>.<a id="1319c9" class="tk">is_c1_rtwdemo_pmsmfoc</a> = <a id="1319c33" class="tk">IN_Stand_By</a>;</td></tr> <tr name="1320" id="1320"> <td>1320</td><td></td></tr> <tr name="1321" id="1321"> <td>1321</td><td> <span class="ct">/* Entry 'Stand_By': '<a class="ct blk" blk_line="1321"><S4>:154</a>' */</span></td></tr> <tr name="1322" id="1322"> <td>1322</td><td> <a id="1322c3" class="tk">controller_mode</a> = <a id="1322c21" class="tk">StandBy</a>;</td></tr> <tr name="1323" id="1323"> <td>1323</td><td></td></tr> <tr name="1324" id="1324"> <td>1324</td><td> <span class="ct">/* InitializeConditions for DiscreteIntegrator: '<a class="ct blk" blk_line="1324"><S17>/Integrator</a>' */</span></td></tr> <tr name="1325" id="1325"> <td>1325</td><td> <a id="1325c3" class="tk">DWork</a>.<a id="1325c9" class="tk">Integrator_PrevResetState</a> = 0;</td></tr> <tr name="1326" id="1326"> <td>1326</td><td></td></tr> <tr name="1327" id="1327"> <td>1327</td><td> <span class="ct">/* InitializeConditions for DiscreteIntegrator: '<a class="ct blk" blk_line="1327"><S18>/Integrator</a>' */</span></td></tr> <tr name="1328" id="1328"> <td>1328</td><td> <a id="1328c3" class="tk">DWork</a>.<a id="1328c9" class="tk">Integrator_PrevResetState_c</a> = 0;</td></tr> <tr name="1329" id="1329"> <td>1329</td><td><span class="br">}</span></td></tr> <tr name="1330" id="1330"> <td>1330</td><td></td></tr> <tr name="1331" id="1331"> <td>1331</td><td><span class="ct">/*</span></td></tr> <tr name="1332" id="1332"> <td>1332</td><td><span class="ct"> * File trailer for generated code.</span></td></tr> <tr name="1333" id="1333"> <td>1333</td><td><span class="ct"> *</span></td></tr> <tr name="1334" id="1334"> <td>1334</td><td><span class="ct"> * [EOF]</span></td></tr> <tr name="1335" id="1335"> <td>1335</td><td><span class="ct"> */</span></td></tr> <tr name="1336" id="1336"> <td>1336</td><td></td></tr> </table> </pre> </body> </html>