Files
UKSI_TEST/AllLibs/Modbus/Doc/html/modbus__diag_8c_source.html
2025-12-16 17:57:59 +03:00

461 lines
73 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Modbus: E:/.WORK/STM32/Diod_Test/diode_tester/Core/Modbus/Src/modbus_diag.c Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js"></script>
<script type="text/javascript" src="darkmode_toggle.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">Modbus<span id="projectnumber">&#160;0.3</span>
</div>
<div id="projectbrief">Библиотека Modbus для STM</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search/",'.html');
</script>
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search',true);
$(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(function(){initNavTree('modbus__diag_8c_source.html','',''); });
</script>
<div id="container">
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">modbus_diag.c</div></div>
</div><!--header-->
<div class="contents">
<a href="modbus__diag_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/**</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">*******************************************************************************</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">* @file modbus_diag.c</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">* @brief Реализация диагностики устройства Modbus</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">*******************************************************************************</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">* @details</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">Модуль обработки запросов диагностической информации (0x08):</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">- Полная поддержка всех подфункций диагностики согласно спецификации Modbus</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">- Выставление любого бита в Diagnostics Register</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">- Сбор статистики работы устройства</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">- Управление режимами работы (Normal/Listen Only)</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">******************************************************************************/</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#include &quot;<a class="code" href="modbus__diag_8h.html">modbus_diag.h</a>&quot;</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> </div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#ifdef MODBUS_ENABLE_DIAGNOSTICS</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> </div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"><a class="line" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936"> 17</a></span><a class="code hl_struct" href="struct_m_b___diagnostics_info_type_def.html">MB_DiagnosticsInfoTypeDef</a> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a> = {0}; <span class="comment">///&lt; Глобальная структура диагностики</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment"></span> </div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">/**</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment"> * @brief Инициализация диагностических счетчиков</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00022" data-start="{" data-end="}">
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"><a class="line" href="group___m_o_d_b_u_s___d_i_a_g.html#ga9b61a6d4139bac318868e93f03cd82c7"> 22</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="group___m_o_d_b_u_s___d_i_a_g.html#ga9b61a6d4139bac318868e93f03cd82c7">MB_DiagnosticsInit</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span>{</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.DiagnosticRegister = 0;</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.DeviceMode = MODBUS_NORMAL_MODE;</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> </div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> <span class="comment">// Инициализация счетчиков</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.BusMessage = 0;</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.BusCommunicationErr = 0;</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.BusExceptionErr = 0;</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.SlaveMessage = 0;</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.SlaveNoResponse = 0;</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.SlaveNAK = 0;</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.SlaveBusy = 0;</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.BusCharacterOverrun = 0;</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span>}</div>
</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment"></span> </div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="comment">/**</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="comment"> * @brief Выставить бит в регистре диагностике</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="comment"> * @param bit_num Номер бита для выставления (1-15, 0 бит нельзя выставить)</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="comment"> * @param bit_state Состояние бита для выставления (Выставить/Сбросить)</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="comment"> * @return &gt;0 - номер выставленного бита, 0 - ошибка</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00045" data-start="{" data-end="}">
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#gab1237f28e2db2cd2e8a93b31cd9a61be"> 45</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#gab1237f28e2db2cd2e8a93b31cd9a61be">MB_Diagnostics_WriteBit</a>(<span class="keywordtype">int</span> bit_num, <span class="keywordtype">int</span> bit_state)</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span>{</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keywordflow">if</span>(bit_num == 0 || bit_num &gt; 15)</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> </div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="keywordflow">if</span>(bit_state)</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.DiagnosticRegister |= (1 &lt;&lt; bit_num);</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.DiagnosticRegister &amp;= ~(1 &lt;&lt; bit_num);</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> </div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <span class="keywordflow">return</span> bit_num;</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span>}<span class="comment"></span></div>
</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="comment">/**</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="comment"> * @brief Прочитать состояние бита диагностического регистра</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="comment"> * @param bit_num Номер бита (0-15)</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="comment"> * @return 1 - бит установлен, 0 - бит сброшен или ошибка</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00062" data-start="{" data-end="}">
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"><a class="line" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga5588ddb15ee2580e7659701e5e671e8f"> 62</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga5588ddb15ee2580e7659701e5e671e8f">MB_Diagnostics_GetBit</a>(<span class="keywordtype">int</span> bit_num)</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span>{</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="keywordflow">if</span>(bit_num &lt; 0 || bit_num &gt; 15)</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> </div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <span class="keywordflow">return</span> (<a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.DiagnosticRegister &gt;&gt; bit_num) &amp; 0x01;</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span>}</div>
</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="comment"></span> </div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="comment">/**</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="comment"> * @brief Обработать функцию Diagnostics (Serial Line only) (0x08)</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="comment"> * @param modbus_msg Указатель на структуру сообщения modbus</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="comment"> * @return fMessageHandled Статус обработки команды</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00075" data-start="{" data-end="}">
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"><a class="line" href="group___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga6bbfc53b20b4698a08d79851b5db65f0"> 75</a></span>uint8_t <a class="code hl_function" href="group___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga6bbfc53b20b4698a08d79851b5db65f0">MB_Process_Diagnostics</a>(<a class="code hl_struct" href="struct_r_s___msg_type_def.html">RS_MsgTypeDef</a> *modbus_msg)</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span>{</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> uint16_t sub_function = modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[0];</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> uint16_t request_data = modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[1];</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> </div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="comment">// Если устройство в режиме Listen Only, отвечаем только на sub-function 0x01</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.DeviceMode == MODBUS_LISTEN_ONLY_MODE &amp;&amp; sub_function != 0x0001)</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> {</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="keywordflow">return</span> 0; <span class="comment">// Не отвечаем в режиме Listen Only</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> }</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> </div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keywordflow">switch</span>(sub_function)</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> {</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="keywordflow">case</span> 0x0000: <span class="comment">// Return Query Data</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="comment">// Эхо-ответ с теми же данными</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[0] = sub_function;</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[1] = request_data;</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a5c69bf212dc5e7dc2eaa50971e27e2a6">ByteCnt</a> = 4;</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> </div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="keywordflow">case</span> 0x0001: <span class="comment">// Restart Communications</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="comment">// Перезапуск коммуникаций - выходим из Listen Only режима</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.DeviceMode = MODBUS_NORMAL_MODE;</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> </div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="comment">// Если request_data = 0xFF00, очищаем лог событий</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keywordflow">if</span> (request_data == 0xFF00)</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> {</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <a class="code hl_function" href="group___m_o_d_b_u_s___d_i_a_g.html#ga9b61a6d4139bac318868e93f03cd82c7">MB_DiagnosticsInit</a>(); <span class="comment">// Полный сброс</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> }</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> {</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <span class="comment">// Очищаем только счетчики, но не регистр диагностики</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.BusMessage = 0;</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.BusCommunicationErr = 0;</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.BusExceptionErr = 0;</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.SlaveMessage = 0;</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.SlaveNoResponse = 0;</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.SlaveNAK = 0;</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.SlaveBusy = 0;</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.BusCharacterOverrun = 0;</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> }</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> </div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[0] = sub_function;</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[1] = request_data;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a5c69bf212dc5e7dc2eaa50971e27e2a6">ByteCnt</a> = 4;</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> </div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> <span class="keywordflow">case</span> 0x0002: <span class="comment">// Return Diagnostic Register</span></div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[0] = sub_function;</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[1] = <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.DiagnosticRegister;</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a5c69bf212dc5e7dc2eaa50971e27e2a6">ByteCnt</a> = 4;</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> </div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <span class="keywordflow">case</span> 0x0003: <span class="comment">// Change ASCII Input Delimiter</span></div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <span class="comment">// В RTU режиме не поддерживается</span></div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a176d779ab0d7fd06a4303e6e6acb6ca9">FuncCode</a> |= <a class="code hl_define" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#ga822b0fd9ae9ff25dfa6748473e8e8627">FC_ERR_VALUES_START</a>;</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a3dab5eaf3a1dd5719b8bfec1adad0d39">Except_Code</a> = <a class="code hl_enumvalue" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gga4ade64cb3fabf37f010c1e297489980cae81af967ab54904738ee391eb7478ad1">ET_ILLEGAL_FUNCTION</a>;</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> </div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="keywordflow">case</span> 0x0004: <span class="comment">// Force Listen Only Mode</span></div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.DeviceMode = MODBUS_LISTEN_ONLY_MODE;</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <span class="comment">// В режиме Listen Only не отправляем ответ</span></div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> </div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="keywordflow">case</span> 0x000A: <span class="comment">// Clear Counters and Diagnostic Register</span></div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <a class="code hl_function" href="group___m_o_d_b_u_s___d_i_a_g.html#ga9b61a6d4139bac318868e93f03cd82c7">MB_DiagnosticsInit</a>(); <span class="comment">// Полный сброс</span></div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[0] = sub_function;</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[1] = 0;</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a5c69bf212dc5e7dc2eaa50971e27e2a6">ByteCnt</a> = 4;</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> </div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <span class="keywordflow">case</span> 0x000B: <span class="comment">// Return Bus Message Count</span></div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[0] = sub_function;</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[1] = <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.BusMessage;</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a5c69bf212dc5e7dc2eaa50971e27e2a6">ByteCnt</a> = 4;</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> </div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <span class="keywordflow">case</span> 0x000C: <span class="comment">// Return Bus Communication Error Count</span></div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[0] = sub_function;</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[1] = <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.BusCommunicationErr;</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a5c69bf212dc5e7dc2eaa50971e27e2a6">ByteCnt</a> = 4;</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> </div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> <span class="keywordflow">case</span> 0x000D: <span class="comment">// Return Bus Exception Error Count</span></div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[0] = sub_function;</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[1] = <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.BusExceptionErr;</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a5c69bf212dc5e7dc2eaa50971e27e2a6">ByteCnt</a> = 4;</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> </div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> <span class="keywordflow">case</span> 0x000E: <span class="comment">// Return Server Message Count</span></div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[0] = sub_function;</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[1] = <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.SlaveMessage;</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a5c69bf212dc5e7dc2eaa50971e27e2a6">ByteCnt</a> = 4;</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> </div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> <span class="keywordflow">case</span> 0x000F: <span class="comment">// Return Slave No Response Count</span></div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[0] = sub_function;</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[1] = <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.SlaveNoResponse;</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a5c69bf212dc5e7dc2eaa50971e27e2a6">ByteCnt</a> = 4;</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> </div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> <span class="keywordflow">case</span> 0x0010: <span class="comment">// Return Slave NAK Count</span></div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[0] = sub_function;</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[1] = <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.SlaveNAK;</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a5c69bf212dc5e7dc2eaa50971e27e2a6">ByteCnt</a> = 4;</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> </div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> <span class="keywordflow">case</span> 0x0011: <span class="comment">// Return Slave Busy Count</span></div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[0] = sub_function;</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[1] = <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.SlaveBusy;</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a5c69bf212dc5e7dc2eaa50971e27e2a6">ByteCnt</a> = 4;</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> </div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> <span class="keywordflow">case</span> 0x0012: <span class="comment">// Return Bus Character Overrun Count</span></div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[0] = sub_function;</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[1] = <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.BusCharacterOverrun;</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a5c69bf212dc5e7dc2eaa50971e27e2a6">ByteCnt</a> = 4;</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> </div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> <span class="keywordflow">case</span> 0x0014: <span class="comment">// Clear Overrun Counter and Flag</span></div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.BusCharacterOverrun = 0;</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> <span class="comment">// Сбрасываем флаг переполнения в DiagnosticRegister</span></div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.DiagnosticRegister &amp;= ~(1&lt;&lt;0);</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[0] = sub_function;</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">MbData</a>[1] = 0;</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a5c69bf212dc5e7dc2eaa50971e27e2a6">ByteCnt</a> = 4;</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> </div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a176d779ab0d7fd06a4303e6e6acb6ca9">FuncCode</a> |= <a class="code hl_define" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#ga822b0fd9ae9ff25dfa6748473e8e8627">FC_ERR_VALUES_START</a>;</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> modbus_msg-&gt;<a class="code hl_variable" href="struct_r_s___msg_type_def.html#a3dab5eaf3a1dd5719b8bfec1adad0d39">Except_Code</a> = <a class="code hl_enumvalue" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gga4ade64cb3fabf37f010c1e297489980cae81af967ab54904738ee391eb7478ad1">ET_ILLEGAL_FUNCTION</a>;</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> }</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> </div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> <span class="keywordflow">return</span> 1;</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span>}</div>
</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span><span class="comment"></span> </div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span><span class="comment">/**</span></div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span><span class="comment"> * @brief Увеличивает счетчик сообщений на шине</span></div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00215" data-start="{" data-end="}">
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"><a class="line" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#gae379458fa9cea50d5e313a68e716cb83"> 215</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#gae379458fa9cea50d5e313a68e716cb83">MB_Diagnostics_BusMessageCnt</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span>{</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.BusMessage++;</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span>}</div>
</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span><span class="comment"></span> </div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span><span class="comment">/**</span></div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span><span class="comment"> * @brief Увеличивает счетчик ошибок связи</span></div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00223" data-start="{" data-end="}">
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"><a class="line" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga10f9e4dd9f3dda4bb0f66c323d6b29d7"> 223</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga10f9e4dd9f3dda4bb0f66c323d6b29d7">MB_Diagnostics_CommunicationErrorCnt</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span>{</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.BusCommunicationErr &lt; 0xFFFF)</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.BusCommunicationErr++;</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span>}</div>
</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span><span class="comment"></span> </div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span><span class="comment">/**</span></div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span><span class="comment"> * @brief Увеличивает счетчик исключений</span></div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00232" data-start="{" data-end="}">
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"><a class="line" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga82e0bf0c4452c25bf3f05a20abb7cc74"> 232</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga82e0bf0c4452c25bf3f05a20abb7cc74">MB_Diagnostics_ExceptionErrorCnt</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span>{</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.BusExceptionErr &lt; 0xFFFF)</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.BusExceptionErr++;</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span>}</div>
</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span><span class="comment"></span> </div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span><span class="comment">/**</span></div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span><span class="comment"> * @brief Увеличивает счетчик переполнения символов</span></div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00241" data-start="{" data-end="}">
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"><a class="line" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#gaff7c464d7d66399232770bac78b653a4"> 241</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#gaff7c464d7d66399232770bac78b653a4">MB_Diagnostics_CharacterOverrunCnt</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span>{</div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.BusCharacterOverrun &lt; 0xFFFF)</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> {</div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.BusCharacterOverrun++;</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> <span class="comment">// Устанавливаем флаг переполнения в DiagnosticRegister</span></div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.DiagnosticRegister |= (1 &lt;&lt; 0);</div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> }</div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span>}</div>
</div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span><span class="comment"></span> </div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span><span class="comment">/**</span></div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span><span class="comment"> * @brief Увеличивает счетчик отсутствия ответов</span></div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00254" data-start="{" data-end="}">
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"><a class="line" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga22a48a04ef64f74b5974c4fdb1445936"> 254</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga22a48a04ef64f74b5974c4fdb1445936">MB_Diagnostics_SlaveMessageCnt</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span>{</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.SlaveMessage &lt; 0xFFFF)</div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.SlaveMessage++;</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span>}</div>
</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span><span class="comment"></span> </div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span><span class="comment">/**</span></div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span><span class="comment"> * @brief Увеличивает счетчик отсутствия ответов</span></div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00263" data-start="{" data-end="}">
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"><a class="line" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#gabf80c0e24a0ed3736338218c003d001d"> 263</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#gabf80c0e24a0ed3736338218c003d001d">MB_Diagnostics_SlaveNoResponseCnt</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span>{</div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.SlaveNoResponse &lt; 0xFFFF)</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.SlaveNoResponse++;</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span>}</div>
</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span><span class="comment"></span> </div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span><span class="comment">/**</span></div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span><span class="comment"> * @brief Увеличивает счетчик NAK ответов</span></div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00272" data-start="{" data-end="}">
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"><a class="line" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga2585ebac184f7fa56059c81419c614b9"> 272</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga2585ebac184f7fa56059c81419c614b9">MB_Diagnostics_SlaveNAKCnt</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span>{</div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.SlaveNAK &lt; 0xFFFF)</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.SlaveNAK++;</div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span>}</div>
</div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span><span class="comment"></span> </div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span><span class="comment">/**</span></div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span><span class="comment"> * @brief Увеличивает счетчик занятости устройства</span></div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00281" data-start="{" data-end="}">
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"><a class="line" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga4baad1102ba3f09cf3cc121b8d548ddb"> 281</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga4baad1102ba3f09cf3cc121b8d548ddb">MB_Diagnostics_SlaveBusyCnt</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span>{</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.SlaveBusy &lt; 0xFFFF)</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.Counters.SlaveBusy++;</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span>}</div>
</div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span><span class="comment"></span> </div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span><span class="comment">/**</span></div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span><span class="comment"> * @brief Получение текущего режима устройства</span></div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span><span class="comment"> * @return Текущий режим работы устройства</span></div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00291" data-start="{" data-end="}">
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"><a class="line" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#gae7b613f24e9e3d9d95a789c404a3a485"> 291</a></span><a class="code hl_enumeration" href="group___m_o_d_b_u_s___d_i_a_g.html#ga9d139168bb88bfa1ba1597eeff9ebf6a">MB_DeviceModeTypeDef</a> <a class="code hl_function" href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#gae7b613f24e9e3d9d95a789c404a3a485">MB_GetDeviceMode</a>(<span class="keywordtype">void</span>)</div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span>{</div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a>.DeviceMode;</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span>}</div>
</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> </div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span><span class="preprocessor">#endif </span><span class="comment">//MODBUS_ENABLE_DIAGNOSTICS</span></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s_html_ga6bbfc53b20b4698a08d79851b5db65f0"><div class="ttname"><a href="group___m_o_d_b_u_s___c_m_d___p_r_o_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga6bbfc53b20b4698a08d79851b5db65f0">MB_Process_Diagnostics</a></div><div class="ttdeci">uint8_t MB_Process_Diagnostics(RS_MsgTypeDef *modbus_msg)</div><div class="ttdoc">Обработать функцию Diagnostics (Serial Line only) (0x08)</div><div class="ttdef"><b>Definition</b> <a href="#l00075">modbus_diag.c:75</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s_html_ga10f9e4dd9f3dda4bb0f66c323d6b29d7"><div class="ttname"><a href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga10f9e4dd9f3dda4bb0f66c323d6b29d7">MB_Diagnostics_CommunicationErrorCnt</a></div><div class="ttdeci">void MB_Diagnostics_CommunicationErrorCnt(void)</div><div class="ttdoc">Увеличивает счетчик ошибок связи</div><div class="ttdef"><b>Definition</b> <a href="#l00223">modbus_diag.c:223</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s_html_ga22a48a04ef64f74b5974c4fdb1445936"><div class="ttname"><a href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga22a48a04ef64f74b5974c4fdb1445936">MB_Diagnostics_SlaveMessageCnt</a></div><div class="ttdeci">void MB_Diagnostics_SlaveMessageCnt(void)</div><div class="ttdoc">Увеличивает счетчик отсутствия ответов</div><div class="ttdef"><b>Definition</b> <a href="#l00254">modbus_diag.c:254</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s_html_ga2585ebac184f7fa56059c81419c614b9"><div class="ttname"><a href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga2585ebac184f7fa56059c81419c614b9">MB_Diagnostics_SlaveNAKCnt</a></div><div class="ttdeci">void MB_Diagnostics_SlaveNAKCnt(void)</div><div class="ttdoc">Увеличивает счетчик NAK ответов</div><div class="ttdef"><b>Definition</b> <a href="#l00272">modbus_diag.c:272</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s_html_ga4baad1102ba3f09cf3cc121b8d548ddb"><div class="ttname"><a href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga4baad1102ba3f09cf3cc121b8d548ddb">MB_Diagnostics_SlaveBusyCnt</a></div><div class="ttdeci">void MB_Diagnostics_SlaveBusyCnt(void)</div><div class="ttdoc">Увеличивает счетчик занятости устройства</div><div class="ttdef"><b>Definition</b> <a href="#l00281">modbus_diag.c:281</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s_html_ga5588ddb15ee2580e7659701e5e671e8f"><div class="ttname"><a href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga5588ddb15ee2580e7659701e5e671e8f">MB_Diagnostics_GetBit</a></div><div class="ttdeci">int MB_Diagnostics_GetBit(int bit_num)</div><div class="ttdoc">Прочитать состояние бита диагностического регистра</div><div class="ttdef"><b>Definition</b> <a href="#l00062">modbus_diag.c:62</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s_html_ga82e0bf0c4452c25bf3f05a20abb7cc74"><div class="ttname"><a href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#ga82e0bf0c4452c25bf3f05a20abb7cc74">MB_Diagnostics_ExceptionErrorCnt</a></div><div class="ttdeci">void MB_Diagnostics_ExceptionErrorCnt(void)</div><div class="ttdoc">Увеличивает счетчик исключений</div><div class="ttdef"><b>Definition</b> <a href="#l00232">modbus_diag.c:232</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s_html_gab1237f28e2db2cd2e8a93b31cd9a61be"><div class="ttname"><a href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#gab1237f28e2db2cd2e8a93b31cd9a61be">MB_Diagnostics_WriteBit</a></div><div class="ttdeci">int MB_Diagnostics_WriteBit(int bit_num, int bit_state)</div><div class="ttdoc">Выставить бит в регистре диагностике</div><div class="ttdef"><b>Definition</b> <a href="#l00045">modbus_diag.c:45</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s_html_gabf80c0e24a0ed3736338218c003d001d"><div class="ttname"><a href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#gabf80c0e24a0ed3736338218c003d001d">MB_Diagnostics_SlaveNoResponseCnt</a></div><div class="ttdeci">void MB_Diagnostics_SlaveNoResponseCnt(void)</div><div class="ttdoc">Увеличивает счетчик отсутствия ответов</div><div class="ttdef"><b>Definition</b> <a href="#l00263">modbus_diag.c:263</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s_html_gae379458fa9cea50d5e313a68e716cb83"><div class="ttname"><a href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#gae379458fa9cea50d5e313a68e716cb83">MB_Diagnostics_BusMessageCnt</a></div><div class="ttdeci">void MB_Diagnostics_BusMessageCnt(void)</div><div class="ttdoc">Увеличивает счетчик сообщений на шине</div><div class="ttdef"><b>Definition</b> <a href="#l00215">modbus_diag.c:215</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s_html_gae7b613f24e9e3d9d95a789c404a3a485"><div class="ttname"><a href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#gae7b613f24e9e3d9d95a789c404a3a485">MB_GetDeviceMode</a></div><div class="ttdeci">MB_DeviceModeTypeDef MB_GetDeviceMode(void)</div><div class="ttdoc">Получение текущего режима устройства</div><div class="ttdef"><b>Definition</b> <a href="#l00291">modbus_diag.c:291</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s_html_gaff7c464d7d66399232770bac78b653a4"><div class="ttname"><a href="group___m_o_d_b_u_s___d_a_t_a___a_c_c_e_s_s___f_u_n_c_t_i_o_n_s.html#gaff7c464d7d66399232770bac78b653a4">MB_Diagnostics_CharacterOverrunCnt</a></div><div class="ttdeci">void MB_Diagnostics_CharacterOverrunCnt(void)</div><div class="ttdoc">Увеличивает счетчик переполнения символов</div><div class="ttdef"><b>Definition</b> <a href="#l00241">modbus_diag.c:241</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___d_i_a_g_html_ga4ba6111ac80e342396f9703239323936"><div class="ttname"><a href="group___m_o_d_b_u_s___d_i_a_g.html#ga4ba6111ac80e342396f9703239323936">MB_DIAG</a></div><div class="ttdeci">MB_DiagnosticsInfoTypeDef MB_DIAG</div><div class="ttdoc">Глобальная структура диагностики</div><div class="ttdef"><b>Definition</b> <a href="#l00017">modbus_diag.c:17</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___d_i_a_g_html_ga9b61a6d4139bac318868e93f03cd82c7"><div class="ttname"><a href="group___m_o_d_b_u_s___d_i_a_g.html#ga9b61a6d4139bac318868e93f03cd82c7">MB_DiagnosticsInit</a></div><div class="ttdeci">void MB_DiagnosticsInit(void)</div><div class="ttdoc">Инициализация диагностических счетчиков</div><div class="ttdef"><b>Definition</b> <a href="#l00022">modbus_diag.c:22</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___d_i_a_g_html_ga9d139168bb88bfa1ba1597eeff9ebf6a"><div class="ttname"><a href="group___m_o_d_b_u_s___d_i_a_g.html#ga9d139168bb88bfa1ba1597eeff9ebf6a">MB_DeviceModeTypeDef</a></div><div class="ttdeci">MB_DeviceModeTypeDef</div><div class="ttdoc">Режимы работы устройства</div><div class="ttdef"><b>Definition</b> <a href="modbus__diag_8h_source.html#l00030">modbus_diag.h:31</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s_html_ga822b0fd9ae9ff25dfa6748473e8e8627"><div class="ttname"><a href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#ga822b0fd9ae9ff25dfa6748473e8e8627">FC_ERR_VALUES_START</a></div><div class="ttdeci">#define FC_ERR_VALUES_START</div><div class="ttdoc">from this value starts error func codes</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00088">modbus_core.h:88</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s_html_gga4ade64cb3fabf37f010c1e297489980cae81af967ab54904738ee391eb7478ad1"><div class="ttname"><a href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#gga4ade64cb3fabf37f010c1e297489980cae81af967ab54904738ee391eb7478ad1">ET_ILLEGAL_FUNCTION</a></div><div class="ttdeci">@ ET_ILLEGAL_FUNCTION</div><div class="ttdoc">Принятый код функции не может быть обработан</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00079">modbus_core.h:79</a></div></div>
<div class="ttc" id="amodbus__diag_8h_html"><div class="ttname"><a href="modbus__diag_8h.html">modbus_diag.h</a></div><div class="ttdoc">Диагностика устройства Modbus.</div></div>
<div class="ttc" id="astruct_m_b___diagnostics_info_type_def_html"><div class="ttname"><a href="struct_m_b___diagnostics_info_type_def.html">MB_DiagnosticsInfoTypeDef</a></div><div class="ttdoc">Структура со диагностической информацией устройства модбас</div><div class="ttdef"><b>Definition</b> <a href="modbus__diag_8h_source.html#l00038">modbus_diag.h:39</a></div></div>
<div class="ttc" id="astruct_r_s___msg_type_def_html"><div class="ttname"><a href="struct_r_s___msg_type_def.html">RS_MsgTypeDef</a></div><div class="ttdoc">Structure for modbus messsage.</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00176">modbus_core.h:177</a></div></div>
<div class="ttc" id="astruct_r_s___msg_type_def_html_a176d779ab0d7fd06a4303e6e6acb6ca9"><div class="ttname"><a href="struct_r_s___msg_type_def.html#a176d779ab0d7fd06a4303e6e6acb6ca9">RS_MsgTypeDef::FuncCode</a></div><div class="ttdeci">MB_FunctonTypeDef FuncCode</div><div class="ttdoc">Modbus Function Code.</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00185">modbus_core.h:185</a></div></div>
<div class="ttc" id="astruct_r_s___msg_type_def_html_a3dab5eaf3a1dd5719b8bfec1adad0d39"><div class="ttname"><a href="struct_r_s___msg_type_def.html#a3dab5eaf3a1dd5719b8bfec1adad0d39">RS_MsgTypeDef::Except_Code</a></div><div class="ttdeci">MB_ExceptionTypeDef Except_Code</div><div class="ttdoc">Exception Code for the command.</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00192">modbus_core.h:192</a></div></div>
<div class="ttc" id="astruct_r_s___msg_type_def_html_a5c69bf212dc5e7dc2eaa50971e27e2a6"><div class="ttname"><a href="struct_r_s___msg_type_def.html#a5c69bf212dc5e7dc2eaa50971e27e2a6">RS_MsgTypeDef::ByteCnt</a></div><div class="ttdeci">uint8_t ByteCnt</div><div class="ttdoc">Quantity of bytes of data in message to transmit/receive.</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00189">modbus_core.h:189</a></div></div>
<div class="ttc" id="astruct_r_s___msg_type_def_html_aacbc6754621bd84742cd6c2ba65ad094"><div class="ttname"><a href="struct_r_s___msg_type_def.html#aacbc6754621bd84742cd6c2ba65ad094">RS_MsgTypeDef::MbData</a></div><div class="ttdeci">uint16_t MbData[DATA_SIZE]</div><div class="ttdoc">Modbus Data.</div><div class="ttdef"><b>Definition</b> <a href="modbus__core_8h_source.html#l00191">modbus_core.h:191</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
</div><!-- container -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a href="dir_413f4e031a85da0d68269c6fd2f76e1c.html">Src</a></li><li class="navelem"><a href="modbus__diag_8c.html">modbus_diag.c</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0 </li>
</ul>
</div>
</body>
</html>