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

384 lines
62 KiB
HTML
Raw 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.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_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.c</div></div>
</div><!--header-->
<div class="contents">
<a href="modbus_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.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">Файл содержит реализацию функций работы с Modbus.</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"></span> </div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">@section mbapi Функции и макросы</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">### Инициализация:</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">- MODBUS_FirstInit() — Инициализация Modbus (подключение UART, TIM)</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">- MODBUS_Config() — Конфигурацмя Modbus (ID, Timeout).</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">- MODBUS_SlaveStart() — Запуск Modbus как Slave.</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">- MODBUS_MasterRequest() — Отправить запрос в MODBUS как Master.</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"></span> </div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">### Функции для работы с RS (UART):</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">- RS_Parse_Message() / RS_Collect_Message() — Парсинг и сборка сообщения.</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment">- RS_Response() — Отправка ответа.</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment">******************************************************************************/</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor">#include &quot;<a class="code" href="modbus_8h.html">modbus.h</a>&quot;</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> </div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment">/* MODBUS HANDLES */</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"><a class="line" href="group___r_s___t_o_o_l_s.html#gadaef5cb7e494d0fd139199f5b6cbeb86"> 24</a></span><a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> <a class="code hl_variable" href="group___r_s___t_o_o_l_s.html#gadaef5cb7e494d0fd139199f5b6cbeb86">hmodbus1</a>; <span class="comment">///&lt; Default Handle for Modbus</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"><a class="line" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#ga679c526f339999281b97010876e7a295"> 25</a></span><a class="code hl_struct" href="struct_r_s___msg_type_def.html">RS_MsgTypeDef</a> <a class="code hl_variable" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#ga679c526f339999281b97010876e7a295">MODBUS_MSG</a>; <span class="comment">///&lt; Default Message Struct for Modbus</span></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">/* DEFINE DATA FOR MODBUS */</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><a class="code hl_struct" href="struct_m_b___data_structure_type_def.html">MB_DataStructureTypeDef</a> MB_DATA = {0};; <span class="comment">///&lt; Coils &amp; Registers</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> </div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="modbus_8c.html#ae7c4bdaeae2e9deb8422ae0a0fc64cb4">MB_DefaultCallback</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hmodbus, <a class="code hl_struct" href="struct_r_s___msg_type_def.html">RS_MsgTypeDef</a> *modbus_msg);</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="comment">//-------------------------------------------------------------------</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="comment">//-----------------------------FOR USER------------------------------</span><span class="comment"></span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="comment">/** </span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="comment"> * @brief Инициализация периферии модбас.</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="comment"> * @param hmodbus Указатель на хендлер RS</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="comment"> * @param huart Указатель на хендлер UART</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment"> * @param htim Указатель на хендлер TIM</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="comment"> * @details Подключает хендлы периферии к hmodbus</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="comment"> * Конфигурация выставляется по умолчанию из modbus_config.h</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00042" data-start="{" data-end="}">
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"><a class="line" href="group___m_o_d_b_u_s___f_u_n_c_t_i_o_n_s.html#ga9e787c3454aab3293dec6e6795f687f5"> 42</a></span>HAL_StatusTypeDef <a class="code hl_function" href="group___m_o_d_b_u_s___f_u_n_c_t_i_o_n_s.html#ga9e787c3454aab3293dec6e6795f687f5">MODBUS_FirstInit</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hmodbus, UART_HandleTypeDef *huart, TIM_HandleTypeDef *htim)</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span>{</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keywordflow">if</span>((hmodbus == NULL) || (huart == NULL))</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> {</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> }</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <a class="code hl_function" href="group___m_o_d_b_u_s___d_e_v_i_d.html#ga2b93352920bf3c6da0f67cfbaef3d572">MB_DeviceInentificationInit</a>();</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> <span class="comment">//-----------SETUP MODBUS-------------</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// set up modbus: MB_RX_Size_NotConst and Timeout enable</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a01e2c95a23aa3eed1f002e2329a10942">ID</a> = <a class="code hl_define" href="group___m_o_d_b_u_s___c_o_n_f_i_g_s.html#gab9b18e108b98b225a52c5ccca58e7f2b">MODBUS_DEVICE_ID</a>;</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#aa6da72b8ad446f76484783ca8af0e565">sRS_Timeout</a> = <a class="code hl_define" href="group___m_o_d_b_u_s___c_o_n_f_i_g_s.html#ga66f7c59a25c8cca6d5b0991895c26b69">MODBUS_TIMEOUT</a>;</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a82f0ad79cd234cd26076bfcfbc5c1194">sRS_Mode</a> = <a class="code hl_enumvalue" href="group___r_s___t_o_o_l_s.html#gga13e1c056947b06c7dc29b90d22f683a7aee8cfd8ce9edacc055a195ed454a49dc">RS_SLAVE_ALWAYS_WAIT</a>;</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="comment">// INIT</span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a8bbcb263ae7a61790b559bcb55cd9aa9">RS_STATUS</a> = <a class="code hl_function" href="group___r_s___t_o_o_l_s.html#gaa261bb0d37e7f18f04fb4353aa0f5c45">RS_Init</a>(hmodbus, huart, htim, 0); </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> </div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <a class="code hl_define" href="group___r_s___t_o_o_l_s.html#gae0f359f0af89adf45bac275a3f5ee34d">RS_EnableReceive</a>();</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <span class="keywordflow">if</span>(hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a8bbcb263ae7a61790b559bcb55cd9aa9">RS_STATUS</a> == RS_OK)</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="keywordflow">return</span> HAL_OK;</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span>}<span class="comment"></span></div>
</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="comment">/** </span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="comment"> * @brief Программная конфигурация модбас.</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="comment"> * @param hmodbus указатель на хендлер RS</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="comment"> * @param Timeout Время тишины между двумя байтами после которых перезапускается прием</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="comment"> * @param master Режим мастер (пока не сделан)</span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="comment"> * @details Конфигурирует ID, таймаут и режим hmodbus</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00072" data-start="{" data-end="}">
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"><a class="line" href="group___m_o_d_b_u_s___f_u_n_c_t_i_o_n_s.html#ga460466907693a256487d31f09b16edfe"> 72</a></span>HAL_StatusTypeDef <a class="code hl_function" href="group___m_o_d_b_u_s___f_u_n_c_t_i_o_n_s.html#ga460466907693a256487d31f09b16edfe">MODBUS_Config</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hmodbus, uint8_t ID, uint16_t Timeout, uint8_t master)</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span>{</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="keywordflow">if</span>(hmodbus == NULL)</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> {</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> }</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="keywordflow">if</span>(!master)</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="keywordflow">if</span>((ID &lt; 1) || (ID &gt; 247))</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> {</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> }</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a01e2c95a23aa3eed1f002e2329a10942">ID</a> = ID;</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">else</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a01e2c95a23aa3eed1f002e2329a10942">ID</a> = 0;</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> </div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#aa6da72b8ad446f76484783ca8af0e565">sRS_Timeout</a> = Timeout;</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <span class="keywordflow">if</span>(master)</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a82f0ad79cd234cd26076bfcfbc5c1194">sRS_Mode</a> = <a class="code hl_enumvalue" href="group___r_s___t_o_o_l_s.html#gga13e1c056947b06c7dc29b90d22f683a7a15953c59b7f547b318edab14070873c5">RS_MASTER_REQUEST</a>;</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a82f0ad79cd234cd26076bfcfbc5c1194">sRS_Mode</a> = <a class="code hl_enumvalue" href="group___r_s___t_o_o_l_s.html#gga13e1c056947b06c7dc29b90d22f683a7aee8cfd8ce9edacc055a195ed454a49dc">RS_SLAVE_ALWAYS_WAIT</a>;</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">return</span> HAL_OK;</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span>}</div>
</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span><span class="comment"></span> </div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="comment">/** </span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="comment"> * @brief Запуск слейв модбас.</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="comment"> * @param hmodbus Указатель на хендлер RS.</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="comment"> * @param modbus_msg Указатель на структуру сообщения. </span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span><span class="comment"> (NULL чтобы использовать дефолтную)</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span><span class="comment"> * @details Конфигурирует ID, таймаут и режим hmodbus</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00105" data-start="{" data-end="}">
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"><a class="line" href="group___m_o_d_b_u_s___f_u_n_c_t_i_o_n_s.html#ga9a17402983188566254b7096342ba69e"> 105</a></span>HAL_StatusTypeDef <a class="code hl_function" href="group___m_o_d_b_u_s___f_u_n_c_t_i_o_n_s.html#ga9a17402983188566254b7096342ba69e">MODBUS_SlaveStart</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hmodbus, <a class="code hl_struct" href="struct_r_s___msg_type_def.html">RS_MsgTypeDef</a> *modbus_msg)</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span>{</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <span class="keywordflow">if</span>(hmodbus == NULL)</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> {</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> }</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> </div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="keywordflow">if</span>(hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a82f0ad79cd234cd26076bfcfbc5c1194">sRS_Mode</a> &gt;= <a class="code hl_define" href="group___r_s___t_o_o_l_s.html#ga9560ee688d4bcdd90a47c110be4ecf92">RS_MASTER_MODE_START</a>)</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> {</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="keywordflow">return</span> HAL_ERROR;</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> <a class="code hl_function" href="group___m_o_d_b_u_s___d_i_a_g.html#ga9b61a6d4139bac318868e93f03cd82c7">MB_DiagnosticsInit</a>();</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> </div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <span class="keywordflow">if</span>(modbus_msg)</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a8bbcb263ae7a61790b559bcb55cd9aa9">RS_STATUS</a> = <a class="code hl_function" href="group___r_s___t_o_o_l_s.html#ga1b59697f4b7fad81f9d5fd9fffebac2f">RS_Receive_IT</a>(hmodbus, modbus_msg);</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a8bbcb263ae7a61790b559bcb55cd9aa9">RS_STATUS</a> = <a class="code hl_function" href="group___r_s___t_o_o_l_s.html#ga1b59697f4b7fad81f9d5fd9fffebac2f">RS_Receive_IT</a>(hmodbus, &amp;<a class="code hl_variable" href="group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s.html#ga679c526f339999281b97010876e7a295">MODBUS_MSG</a>);</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> </div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <span class="keywordflow">if</span>(hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a8bbcb263ae7a61790b559bcb55cd9aa9">RS_STATUS</a> == RS_OK)</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <span class="keywordflow">return</span> HAL_OK;</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span>}</div>
</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span><span class="comment"></span> </div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span><span class="comment">/** </span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span><span class="comment"> * @brief Реквест мастера модбас.</span></div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span><span class="comment"> * @param hmodbus Указатель на хендлер RS.</span></div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span><span class="comment"> * @param modbus_msg Указатель на структуру сообщения</span></div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span><span class="comment"> * @details Конфигурирует ID, таймаут и режим hmodbus</span></div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00136" data-start="{" data-end="}">
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"><a class="line" href="group___m_o_d_b_u_s___f_u_n_c_t_i_o_n_s.html#ga19090cabfba2345391e37398125a2f55"> 136</a></span>HAL_StatusTypeDef <a class="code hl_function" href="group___m_o_d_b_u_s___f_u_n_c_t_i_o_n_s.html#ga19090cabfba2345391e37398125a2f55">MODBUS_MasterRequest</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hmodbus, <a class="code hl_struct" href="struct_r_s___msg_type_def.html">RS_MsgTypeDef</a> *modbus_msg, <span class="keywordtype">void</span> (*pClbk)(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a>*, <a class="code hl_struct" href="struct_r_s___msg_type_def.html">RS_MsgTypeDef</a>*))</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span>{</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> <span class="keywordflow">if</span>(hmodbus == NULL)</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> {</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> }</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <span class="keywordflow">if</span>(modbus_msg == NULL)</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> {</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> <span class="keywordflow">return</span> HAL_ERROR;</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">if</span>(hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a82f0ad79cd234cd26076bfcfbc5c1194">sRS_Mode</a> &lt; <a class="code hl_define" href="group___r_s___t_o_o_l_s.html#ga9560ee688d4bcdd90a47c110be4ecf92">RS_MASTER_MODE_START</a>)</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> {</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> }</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> </div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> <span class="keywordflow">if</span>(hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">f</a>.<a class="code hl_variable" href="struct_r_s___flags_type_def.html#a9371c9de732e4669b16cfdc69f4aaca9">RS_Busy</a>)</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <span class="keywordflow">return</span> HAL_BUSY;</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> </div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> <span class="keywordflow">if</span>(pClbk) <span class="comment">// если задан используем пользовательский коллбек</span></div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6e584c7559c702d3382dbb9aa572b71b">pCallback</a> = (void (*)(<span class="keywordtype">void</span>*, <span class="keywordtype">void</span>*))(pClbk);</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="keywordflow">else</span> <span class="comment">// иначе дефолтный</span></div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a6e584c7559c702d3382dbb9aa572b71b">pCallback</a> = (void (*)(<span class="keywordtype">void</span>*, <span class="keywordtype">void</span>*))(&amp;<a class="code hl_function" href="modbus_8c.html#ae7c4bdaeae2e9deb8422ae0a0fc64cb4">MB_DefaultCallback</a>);</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> </div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a8bbcb263ae7a61790b559bcb55cd9aa9">RS_STATUS</a> = <a class="code hl_function" href="group___r_s___t_o_o_l_s.html#ga2e69a97a8b6e0b5855116d88c0e17cb9">RS_Transmit_IT</a>(hmodbus, modbus_msg);</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> </div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> <span class="keywordflow">if</span>(hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a8bbcb263ae7a61790b559bcb55cd9aa9">RS_STATUS</a> == RS_OK)</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <span class="keywordflow">return</span> HAL_OK;</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> <span class="keywordflow">return</span> HAL_ERROR;</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span>}</div>
</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> </div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span><span class="comment">//-------------------------------------------------------------------</span></div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span><span class="comment">//-----------------------------INTERNAL------------------------------</span></div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span><span class="comment"></span> </div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span><span class="comment">/** </span></div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span><span class="comment"> * @brief Дефолтный коллбек для мастера.</span></div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span><span class="comment"> * @param hmodbus Указатель на хендлер RS</span></div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span><span class="comment"> * @param modbus_msg Указатель на структуру сообщения</span></div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span><span class="comment"> * @details В этот коллбек попадут все запросы, с NULL-коллбеком</span></div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span><span class="comment"> */</span></div>
<div class="foldopen" id="foldopen00176" data-start="{" data-end="}">
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"><a class="line" href="modbus_8c.html#ae7c4bdaeae2e9deb8422ae0a0fc64cb4"> 176</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="modbus_8c.html#ae7c4bdaeae2e9deb8422ae0a0fc64cb4">MB_DefaultCallback</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hmodbus, <a class="code hl_struct" href="struct_r_s___msg_type_def.html">RS_MsgTypeDef</a> *modbus_msg)</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span>{</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> __NOP();</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span>}</div>
</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> </div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span><span class="comment">/* Реализация функций из rs_message.c для протокола */</span></div>
<div class="foldopen" id="foldopen00184" data-start="{" data-end="}">
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"><a class="line" href="group___r_s___t_o_o_l_s.html#ga8b7bcc84cb8192a58fe87b662fbd9690"> 184</a></span><a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289">RS_StatusTypeDef</a> <a class="code hl_function" href="group___r_s___t_o_o_l_s.html#ga8b7bcc84cb8192a58fe87b662fbd9690">RS_Response</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hmodbus, <a class="code hl_struct" href="struct_r_s___msg_type_def.html">RS_MsgTypeDef</a> *modbus_msg)</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span>{</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> <span class="keywordflow">if</span>(hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a82f0ad79cd234cd26076bfcfbc5c1194">sRS_Mode</a> &gt;= <a class="code hl_define" href="group___r_s___t_o_o_l_s.html#ga9560ee688d4bcdd90a47c110be4ecf92">RS_MASTER_MODE_START</a>)</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">return</span> RS_ERR;</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> }</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <span class="keywordflow">return</span> <a class="code hl_function" href="group___m_o_d_b_u_s___s_l_a_v_e.html#gacb44db7ef6ef32b08f4ffe0178eabee8">MB_Slave_Response</a>(hmodbus, modbus_msg);</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span>}</div>
</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> </div>
<div class="foldopen" id="foldopen00193" data-start="{" data-end="}">
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"><a class="line" href="group___r_s___t_o_o_l_s.html#ga1cd98c55f6f359e3ab93d0f9cf912ab5"> 193</a></span><a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289">RS_StatusTypeDef</a> <a class="code hl_function" href="group___r_s___t_o_o_l_s.html#ga1cd98c55f6f359e3ab93d0f9cf912ab5">RS_Collect_Message</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hmodbus, <a class="code hl_struct" href="struct_r_s___msg_type_def.html">RS_MsgTypeDef</a> *modbus_msg, uint8_t *modbus_uart_buff)</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span>{</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> <span class="keywordflow">if</span>(hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a82f0ad79cd234cd26076bfcfbc5c1194">sRS_Mode</a> &lt; <a class="code hl_define" href="group___r_s___t_o_o_l_s.html#ga9560ee688d4bcdd90a47c110be4ecf92">RS_MASTER_MODE_START</a>)</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> {</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> <span class="keywordflow">return</span> <a class="code hl_function" href="group___m_o_d_b_u_s___s_l_a_v_e.html#ga1c73cfdcbe7bc6076f62a4ec9c211eee">MB_Slave_Collect_Message</a>(hmodbus, modbus_msg, modbus_uart_buff);</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> }</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> {</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> <span class="keywordflow">return</span> <a class="code hl_function" href="group___m_o_d_b_u_s___m_a_s_t_e_r.html#ga096d2790ab887eb815e17d8cd9ede125">MB_Master_Collect_Message</a>(hmodbus, modbus_msg, modbus_uart_buff);</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>}</div>
</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> </div>
<div class="foldopen" id="foldopen00205" data-start="{" data-end="}">
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"><a class="line" href="group___r_s___t_o_o_l_s.html#ga3500b3fa91d05a94cf8da5cc5ce338f5"> 205</a></span><a class="code hl_enumeration" href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289">RS_StatusTypeDef</a> <a class="code hl_function" href="group___r_s___t_o_o_l_s.html#ga3500b3fa91d05a94cf8da5cc5ce338f5">RS_Parse_Message</a>(<a class="code hl_struct" href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a> *hmodbus, <a class="code hl_struct" href="struct_r_s___msg_type_def.html">RS_MsgTypeDef</a> *modbus_msg, uint8_t *modbus_uart_buff)</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span>{</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> <span class="keywordflow">if</span>(hmodbus-&gt;<a class="code hl_variable" href="struct_r_s___handle_type_def.html#a82f0ad79cd234cd26076bfcfbc5c1194">sRS_Mode</a> &lt; <a class="code hl_define" href="group___r_s___t_o_o_l_s.html#ga9560ee688d4bcdd90a47c110be4ecf92">RS_MASTER_MODE_START</a>)</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> <a class="code hl_function" href="group___m_o_d_b_u_s___s_l_a_v_e.html#gadc281b1044c4ae345d10db6497846cef">MB_Slave_Parse_Message</a>(hmodbus, modbus_msg, modbus_uart_buff);</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> }</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> {</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> <span class="keywordflow">return</span> <a class="code hl_function" href="group___m_o_d_b_u_s___m_a_s_t_e_r.html#ga461e77fe31ce64c7ee5f1a932dc1183f">MB_Master_Parse_Message</a>(hmodbus, modbus_msg, modbus_uart_buff);</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> }</div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span>}</div>
</div>
<div class="ttc" id="agroup___m_o_d_b_u_s___c_o_n_f_i_g_s_html_ga66f7c59a25c8cca6d5b0991895c26b69"><div class="ttname"><a href="group___m_o_d_b_u_s___c_o_n_f_i_g_s.html#ga66f7c59a25c8cca6d5b0991895c26b69">MODBUS_TIMEOUT</a></div><div class="ttdeci">#define MODBUS_TIMEOUT</div><div class="ttdoc">Таймаут в тиках таймера</div><div class="ttdef"><b>Definition</b> <a href="modbus__config_8h_source.html#l00026">modbus_config.h:26</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___c_o_n_f_i_g_s_html_gab9b18e108b98b225a52c5ccca58e7f2b"><div class="ttname"><a href="group___m_o_d_b_u_s___c_o_n_f_i_g_s.html#gab9b18e108b98b225a52c5ccca58e7f2b">MODBUS_DEVICE_ID</a></div><div class="ttdeci">#define MODBUS_DEVICE_ID</div><div class="ttdoc">Адрес устройства в сети Modbus.</div><div class="ttdef"><b>Definition</b> <a href="modbus__config_8h_source.html#l00025">modbus_config.h:25</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___d_e_v_i_d_html_ga2b93352920bf3c6da0f67cfbaef3d572"><div class="ttname"><a href="group___m_o_d_b_u_s___d_e_v_i_d.html#ga2b93352920bf3c6da0f67cfbaef3d572">MB_DeviceInentificationInit</a></div><div class="ttdeci">void MB_DeviceInentificationInit(void)</div><div class="ttdoc">Инициализация идентификаторов.</div><div class="ttdef"><b>Definition</b> <a href="modbus__devid_8c_source.html#l00177">modbus_devid.c:177</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="modbus__diag_8c_source.html#l00022">modbus_diag.c:22</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___f_u_n_c_t_i_o_n_s_html_ga19090cabfba2345391e37398125a2f55"><div class="ttname"><a href="group___m_o_d_b_u_s___f_u_n_c_t_i_o_n_s.html#ga19090cabfba2345391e37398125a2f55">MODBUS_MasterRequest</a></div><div class="ttdeci">HAL_StatusTypeDef MODBUS_MasterRequest(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *modbus_msg, void(*pClbk)(RS_HandleTypeDef *, RS_MsgTypeDef *))</div><div class="ttdoc">Реквест мастера модбас.</div><div class="ttdef"><b>Definition</b> <a href="#l00136">modbus.c:136</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___f_u_n_c_t_i_o_n_s_html_ga460466907693a256487d31f09b16edfe"><div class="ttname"><a href="group___m_o_d_b_u_s___f_u_n_c_t_i_o_n_s.html#ga460466907693a256487d31f09b16edfe">MODBUS_Config</a></div><div class="ttdeci">HAL_StatusTypeDef MODBUS_Config(RS_HandleTypeDef *hmodbus, uint8_t ID, uint16_t Timeout, uint8_t master)</div><div class="ttdoc">Программная конфигурация модбас.</div><div class="ttdef"><b>Definition</b> <a href="#l00072">modbus.c:72</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___f_u_n_c_t_i_o_n_s_html_ga9a17402983188566254b7096342ba69e"><div class="ttname"><a href="group___m_o_d_b_u_s___f_u_n_c_t_i_o_n_s.html#ga9a17402983188566254b7096342ba69e">MODBUS_SlaveStart</a></div><div class="ttdeci">HAL_StatusTypeDef MODBUS_SlaveStart(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *modbus_msg)</div><div class="ttdoc">Запуск слейв модбас.</div><div class="ttdef"><b>Definition</b> <a href="#l00105">modbus.c:105</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___f_u_n_c_t_i_o_n_s_html_ga9e787c3454aab3293dec6e6795f687f5"><div class="ttname"><a href="group___m_o_d_b_u_s___f_u_n_c_t_i_o_n_s.html#ga9e787c3454aab3293dec6e6795f687f5">MODBUS_FirstInit</a></div><div class="ttdeci">HAL_StatusTypeDef MODBUS_FirstInit(RS_HandleTypeDef *hmodbus, UART_HandleTypeDef *huart, TIM_HandleTypeDef *htim)</div><div class="ttdoc">Инициализация периферии модбас.</div><div class="ttdef"><b>Definition</b> <a href="#l00042">modbus.c:42</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___m_a_s_t_e_r_html_ga096d2790ab887eb815e17d8cd9ede125"><div class="ttname"><a href="group___m_o_d_b_u_s___m_a_s_t_e_r.html#ga096d2790ab887eb815e17d8cd9ede125">MB_Master_Collect_Message</a></div><div class="ttdeci">RS_StatusTypeDef MB_Master_Collect_Message(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *modbus_msg, uint8_t *modbus_uart_buff)</div><div class="ttdoc">Сбор сообщения в буфер UART в режиме мастер (фрейм мастера из msg -&gt; uart).</div><div class="ttdef"><b>Definition</b> <a href="modbus__master_8c_source.html#l00388">modbus_master.c:388</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___m_a_s_t_e_r_html_ga461e77fe31ce64c7ee5f1a932dc1183f"><div class="ttname"><a href="group___m_o_d_b_u_s___m_a_s_t_e_r.html#ga461e77fe31ce64c7ee5f1a932dc1183f">MB_Master_Parse_Message</a></div><div class="ttdeci">RS_StatusTypeDef MB_Master_Parse_Message(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *modbus_msg, uint8_t *modbus_uart_buff)</div><div class="ttdoc">Парс сообщения в режиме мастер (фрейм слейва из uart -&gt; msg).</div><div class="ttdef"><b>Definition</b> <a href="modbus__master_8c_source.html#l00469">modbus_master.c:469</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_ga679c526f339999281b97010876e7a295"><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#ga679c526f339999281b97010876e7a295">MODBUS_MSG</a></div><div class="ttdeci">RS_MsgTypeDef MODBUS_MSG</div><div class="ttdoc">Default Message Struct for Modbus.</div><div class="ttdef"><b>Definition</b> <a href="#l00025">modbus.c:25</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___s_l_a_v_e_html_ga1c73cfdcbe7bc6076f62a4ec9c211eee"><div class="ttname"><a href="group___m_o_d_b_u_s___s_l_a_v_e.html#ga1c73cfdcbe7bc6076f62a4ec9c211eee">MB_Slave_Collect_Message</a></div><div class="ttdeci">RS_StatusTypeDef MB_Slave_Collect_Message(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *modbus_msg, uint8_t *modbus_uart_buff)</div><div class="ttdoc">Сбор сообщения в буфер UART в режиме слейв (фрейм слейва из msg -&gt; uart).</div><div class="ttdef"><b>Definition</b> <a href="modbus__slave_8c_source.html#l00167">modbus_slave.c:167</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___s_l_a_v_e_html_gacb44db7ef6ef32b08f4ffe0178eabee8"><div class="ttname"><a href="group___m_o_d_b_u_s___s_l_a_v_e.html#gacb44db7ef6ef32b08f4ffe0178eabee8">MB_Slave_Response</a></div><div class="ttdeci">RS_StatusTypeDef MB_Slave_Response(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *modbus_msg)</div><div class="ttdoc">Ответ на сообщение в режиме слейва.</div><div class="ttdef"><b>Definition</b> <a href="modbus__slave_8c_source.html#l00024">modbus_slave.c:24</a></div></div>
<div class="ttc" id="agroup___m_o_d_b_u_s___s_l_a_v_e_html_gadc281b1044c4ae345d10db6497846cef"><div class="ttname"><a href="group___m_o_d_b_u_s___s_l_a_v_e.html#gadc281b1044c4ae345d10db6497846cef">MB_Slave_Parse_Message</a></div><div class="ttdeci">RS_StatusTypeDef MB_Slave_Parse_Message(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *modbus_msg, uint8_t *modbus_uart_buff)</div><div class="ttdoc">Парс сообщения в режиме слейв (фрейм мастера из uart -&gt; msg).</div><div class="ttdef"><b>Definition</b> <a href="modbus__slave_8c_source.html#l00330">modbus_slave.c:330</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_ga1b59697f4b7fad81f9d5fd9fffebac2f"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#ga1b59697f4b7fad81f9d5fd9fffebac2f">RS_Receive_IT</a></div><div class="ttdeci">RS_StatusTypeDef RS_Receive_IT(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)</div><div class="ttdoc">Начать прием по прерываниям.</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8c_source.html#l00043">rs_message.c:43</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_ga1cd98c55f6f359e3ab93d0f9cf912ab5"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#ga1cd98c55f6f359e3ab93d0f9cf912ab5">RS_Collect_Message</a></div><div class="ttdeci">RS_StatusTypeDef RS_Collect_Message(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg, uint8_t *msg_uart_buff)</div><div class="ttdoc">Пользовательская функция для сбора сообщения в буфер UART.</div><div class="ttdef"><b>Definition</b> <a href="#l00193">modbus.c:193</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_ga2e69a97a8b6e0b5855116d88c0e17cb9"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#ga2e69a97a8b6e0b5855116d88c0e17cb9">RS_Transmit_IT</a></div><div class="ttdeci">RS_StatusTypeDef RS_Transmit_IT(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)</div><div class="ttdoc">Начать передачу по прерываниям.</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8c_source.html#l00091">rs_message.c:91</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_ga3500b3fa91d05a94cf8da5cc5ce338f5"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#ga3500b3fa91d05a94cf8da5cc5ce338f5">RS_Parse_Message</a></div><div class="ttdeci">RS_StatusTypeDef RS_Parse_Message(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg, uint8_t *msg_uart_buff)</div><div class="ttdoc">Пользовательская функция для парса сообщения из буфера UART.</div><div class="ttdef"><b>Definition</b> <a href="#l00205">modbus.c:205</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_ga727154b368397b4796aa892de12a2289"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#ga727154b368397b4796aa892de12a2289">RS_StatusTypeDef</a></div><div class="ttdeci">RS_StatusTypeDef</div><div class="ttdoc">Enums for respond CMD about RS status.</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00163">rs_message.h:164</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_ga8b7bcc84cb8192a58fe87b662fbd9690"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#ga8b7bcc84cb8192a58fe87b662fbd9690">RS_Response</a></div><div class="ttdeci">RS_StatusTypeDef RS_Response(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)</div><div class="ttdoc">Пользовательская функция для ответа на запрос по UART.</div><div class="ttdef"><b>Definition</b> <a href="#l00184">modbus.c:184</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_ga9560ee688d4bcdd90a47c110be4ecf92"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#ga9560ee688d4bcdd90a47c110be4ecf92">RS_MASTER_MODE_START</a></div><div class="ttdeci">#define RS_MASTER_MODE_START</div><div class="ttdoc">Начало режимов мастера (до него - режим слейв)</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00181">rs_message.h:181</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_gaa261bb0d37e7f18f04fb4353aa0f5c45"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#gaa261bb0d37e7f18f04fb4353aa0f5c45">RS_Init</a></div><div class="ttdeci">RS_StatusTypeDef RS_Init(RS_HandleTypeDef *hRS, UART_HandleTypeDef *huart, TIM_HandleTypeDef *htim, uint8_t *pRS_BufferPtr)</div><div class="ttdoc">Инициалазация структуры RS_HandleTypeDef.</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8c_source.html#l00156">rs_message.c:156</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_gadaef5cb7e494d0fd139199f5b6cbeb86"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#gadaef5cb7e494d0fd139199f5b6cbeb86">hmodbus1</a></div><div class="ttdeci">RS_HandleTypeDef hmodbus1</div><div class="ttdoc">Default Handle for Modbus.</div><div class="ttdef"><b>Definition</b> <a href="#l00024">modbus.c:24</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_gae0f359f0af89adf45bac275a3f5ee34d"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#gae0f359f0af89adf45bac275a3f5ee34d">RS_EnableReceive</a></div><div class="ttdeci">#define RS_EnableReceive()</div><div class="ttdoc">Функция изменения направления передачи на ПРИЕМ для RS-485.</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00150">rs_message.h:150</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_gga13e1c056947b06c7dc29b90d22f683a7a15953c59b7f547b318edab14070873c5"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#gga13e1c056947b06c7dc29b90d22f683a7a15953c59b7f547b318edab14070873c5">RS_MASTER_REQUEST</a></div><div class="ttdeci">@ RS_MASTER_REQUEST</div><div class="ttdoc">Мастер с ручным запросом</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00187">rs_message.h:187</a></div></div>
<div class="ttc" id="agroup___r_s___t_o_o_l_s_html_gga13e1c056947b06c7dc29b90d22f683a7aee8cfd8ce9edacc055a195ed454a49dc"><div class="ttname"><a href="group___r_s___t_o_o_l_s.html#gga13e1c056947b06c7dc29b90d22f683a7aee8cfd8ce9edacc055a195ed454a49dc">RS_SLAVE_ALWAYS_WAIT</a></div><div class="ttdeci">@ RS_SLAVE_ALWAYS_WAIT</div><div class="ttdoc">Слейв в постоянном ожидании</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00185">rs_message.h:185</a></div></div>
<div class="ttc" id="amodbus_8c_html_ae7c4bdaeae2e9deb8422ae0a0fc64cb4"><div class="ttname"><a href="modbus_8c.html#ae7c4bdaeae2e9deb8422ae0a0fc64cb4">MB_DefaultCallback</a></div><div class="ttdeci">static void MB_DefaultCallback(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *modbus_msg)</div><div class="ttdoc">Coils &amp; Registers.</div><div class="ttdef"><b>Definition</b> <a href="#l00176">modbus.c:176</a></div></div>
<div class="ttc" id="amodbus_8h_html"><div class="ttname"><a href="modbus_8h.html">modbus.h</a></div><div class="ttdoc">Главный заголовочный файл Modbus библиотеки</div></div>
<div class="ttc" id="astruct_m_b___data_structure_type_def_html"><div class="ttname"><a href="struct_m_b___data_structure_type_def.html">MB_DataStructureTypeDef</a></div><div class="ttdoc">Структура со всеми регистрами и коилами модбас</div><div class="ttdef"><b>Definition</b> <a href="modbus__data_8h_source.html#l00145">modbus_data.h:146</a></div></div>
<div class="ttc" id="astruct_r_s___flags_type_def_html_a9371c9de732e4669b16cfdc69f4aaca9"><div class="ttname"><a href="struct_r_s___flags_type_def.html#a9371c9de732e4669b16cfdc69f4aaca9">RS_FlagsTypeDef::RS_Busy</a></div><div class="ttdeci">unsigned RS_Busy</div><div class="ttdoc">1 - RS занят, 0 - RS свободен</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00204">rs_message.h:204</a></div></div>
<div class="ttc" id="astruct_r_s___handle_type_def_html"><div class="ttname"><a href="struct_r_s___handle_type_def.html">RS_HandleTypeDef</a></div><div class="ttdoc">Handle for RS communication.</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00227">rs_message.h:228</a></div></div>
<div class="ttc" id="astruct_r_s___handle_type_def_html_a01e2c95a23aa3eed1f002e2329a10942"><div class="ttname"><a href="struct_r_s___handle_type_def.html#a01e2c95a23aa3eed1f002e2329a10942">RS_HandleTypeDef::ID</a></div><div class="ttdeci">uint8_t ID</div><div class="ttdoc">ID хендла</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00230">rs_message.h:230</a></div></div>
<div class="ttc" id="astruct_r_s___handle_type_def_html_a6e584c7559c702d3382dbb9aa572b71b"><div class="ttname"><a href="struct_r_s___handle_type_def.html#a6e584c7559c702d3382dbb9aa572b71b">RS_HandleTypeDef::pCallback</a></div><div class="ttdeci">void(* pCallback)(void *, void *)</div><div class="ttdoc">Указатель на коллбек: принят ответ в режиме мастер</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00240">rs_message.h:240</a></div></div>
<div class="ttc" id="astruct_r_s___handle_type_def_html_a6fa98c2955d01e07dc59f73d072bb37e"><div class="ttname"><a href="struct_r_s___handle_type_def.html#a6fa98c2955d01e07dc59f73d072bb37e">RS_HandleTypeDef::f</a></div><div class="ttdeci">RS_FlagsTypeDef f</div><div class="ttdoc">Флаги для контроля приема/передачи</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00243">rs_message.h:243</a></div></div>
<div class="ttc" id="astruct_r_s___handle_type_def_html_a82f0ad79cd234cd26076bfcfbc5c1194"><div class="ttname"><a href="struct_r_s___handle_type_def.html#a82f0ad79cd234cd26076bfcfbc5c1194">RS_HandleTypeDef::sRS_Mode</a></div><div class="ttdeci">RS_ModeTypeDef sRS_Mode</div><div class="ttdoc">Настройка: слейв/мастер RS_ModeTypeDef.</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00238">rs_message.h:238</a></div></div>
<div class="ttc" id="astruct_r_s___handle_type_def_html_a8bbcb263ae7a61790b559bcb55cd9aa9"><div class="ttname"><a href="struct_r_s___handle_type_def.html#a8bbcb263ae7a61790b559bcb55cd9aa9">RS_HandleTypeDef::RS_STATUS</a></div><div class="ttdeci">RS_StatusTypeDef RS_STATUS</div><div class="ttdoc">Статус RS.</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00247">rs_message.h:247</a></div></div>
<div class="ttc" id="astruct_r_s___handle_type_def_html_aa6da72b8ad446f76484783ca8af0e565"><div class="ttname"><a href="struct_r_s___handle_type_def.html#aa6da72b8ad446f76484783ca8af0e565">RS_HandleTypeDef::sRS_Timeout</a></div><div class="ttdeci">uint16_t sRS_Timeout</div><div class="ttdoc">Настройка: Таймаут в тиках таймера</div><div class="ttdef"><b>Definition</b> <a href="rs__message_8h_source.html#l00239">rs_message.h:239</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><!-- 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_8c.html">modbus.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>