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
Diff: html/html/rtwdemo_pmsmfoc_c.html
- Revision:
- 2:bbc155b0b886
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/html/html/rtwdemo_pmsmfoc_c.html Tue Nov 25 07:52:02 2014 +0000 @@ -0,0 +1,2688 @@ +<!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>