\doxysubsection{Modbus Registers Map }
\hypertarget{group___m_o_d_b_u_s___d_a_t_a}{}\label{group___m_o_d_b_u_s___d_a_t_a}\index{Modbus Registers Map@{Modbus Registers Map}}


Определение карты регистров и коилов  


Collaboration diagram for Modbus Registers Map\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{group___m_o_d_b_u_s___d_a_t_a}
\end{center}
\end{figure}
\doxysubsubsubsection*{Topics}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{group___m_o_d_b_u_s___d_a_t_a___r_e_r_i_s_t_e_r_s___d_e_f_i_n_e_s}{Registers structures}}
\begin{DoxyCompactList}\small\item\em Стуруктура регистров (входных и хранения) \end{DoxyCompactList}\item 
\mbox{\hyperlink{group___m_o_d_b_u_s___d_a_t_a___c_o_i_l_s___d_e_f_i_n_e_s}{Coils Structure}}
\begin{DoxyCompactList}\small\item\em Структура коилов \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsubsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{struct_m_b___data_structure_type_def}{MB\+\_\+\+Data\+Structure\+Type\+Def}}
\begin{DoxyCompactList}\small\item\em Структура со всеми регистрами и коилами модбас \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsubsection{Detailed Description}
Определение карты регистров и коилов 

Файл содержит объявления структур данных, доступных через Modbus\+:
\begin{DoxyItemize}
\item Holding Registers (R/W) -\/ регистры хранения
\item Input Registers (R/O) -\/ входные регистры ~\newline

\item Coils (R/W) -\/ дискретные выходы
\end{DoxyItemize}\hypertarget{group___m_o_d_b_u_s___d_a_t_a_datinit}{}\doxysubsubsection{\texorpdfstring{Базовая настройка под устройство\+:}{Базовая настройка под устройство\+:}}\label{group___m_o_d_b_u_s___d_a_t_a_datinit}

\begin{DoxyEnumerate}
\item Настроить диапазоны адресов
\begin{DoxyItemize}
\item \doxylink{modbus__data_8h_a22bd1273e01d32f90a279b517d1737b6}{R\+\_\+\+INPUT\+\_\+\+ADDR} и \doxylink{modbus__data_8h_a97c0b1e20498bca34f6dfe0ac0d97b30}{R\+\_\+\+INPUT\+\_\+\+QNT} для входных регистров
\item \doxylink{modbus__data_8h_a791dfd31cc06338acdd8a2eb3b7032e6}{R\+\_\+\+HOLDING\+\_\+\+ADDR} и \doxylink{modbus__data_8h_acf40437374a3227e661db1a18bcef7d7}{R\+\_\+\+HOLDING\+\_\+\+QNT} для регистров хр анения
\item \doxylink{modbus__data_8h_a5057c379abcae88db30ad094eceb952d}{C\+\_\+\+COILS\+\_\+\+ADDR} и \doxylink{modbus__data_8h_a5057c379abcae88db30ad094eceb952d}{C\+\_\+\+COILS\+\_\+\+ADDR} для коилов
\end{DoxyItemize}
\item Настроить структуры данных\+:
\begin{DoxyItemize}
\item \doxylink{struct_m_b___data_in_regs_type_def}{MB\+\_\+\+Data\+In\+Regs\+Type\+Def}
\item \doxylink{struct_m_b___data_hold_regs_type_def}{MB\+\_\+\+Data\+Hold\+Regs\+Type\+Def}
\item \doxylink{struct_m_b___data_coils_type_def}{MB\+\_\+\+Data\+Coils\+Type\+Def}
\end{DoxyItemize}
\end{DoxyEnumerate}\hypertarget{group___m_o_d_b_u_s___d_a_t_a_datexpert}{}\doxysubsubsection{\texorpdfstring{Расширенная настройка под устройство\+:}{Расширенная настройка под устройство\+:}}\label{group___m_o_d_b_u_s___d_a_t_a_datexpert}

\begin{DoxyEnumerate}
\item Добавить новый массив с нужными данными.
\item Добавить дефайны для определения его начального адреса и количества элементов
\item Добавить проверку адресов в MB\+\_\+\+Define\+Registers\+Address/\+MB\+\_\+\+Define\+Coils\+Address.

Пример\+: 
\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{preprocessor}{\#define\ \ \ R\_USER\_ADDR\ \ \ \ \ \ \ \ 555}}
\DoxyCodeLine{\textcolor{preprocessor}{\#define\ \ \ R\_USER\_QNT\ \ \ \ \ \ \ \ \ 16}}
\DoxyCodeLine{uint16\_t\ \ user\_regs[16];}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{comment}{//...}}
\DoxyCodeLine{\textcolor{keywordflow}{else}\ \textcolor{keywordflow}{if}(\mbox{\hyperlink{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_ga278ca9791c69aef8adeb9e7c4b273c50}{MB\_Check\_Address\_For\_Arr}}(Addr,\ Qnt,\ R\_USER\_ADDR,\ R\_USER\_QNT)\ ==\ \mbox{\hyperlink{group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s_gga4ade64cb3fabf37f010c1e297489980caa6980c7a8d924dd975b8fa06a300eb74}{ET\_NO\_ERRORS}})}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ *pRegs\ =\ \mbox{\hyperlink{group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s_ga938b632e20454741b2a7f97928583776}{MB\_Set\_Register\_Ptr}}(\&user\_regs,\ Addr-\/R\_USER\_ADDR);\ \textcolor{comment}{//\ ВАЖНО!}}
\DoxyCodeLine{\ \ \textcolor{comment}{//\ -\/R\_USER\_ADDR\ нужен\ чтобы\ взять\ адрес\ относительно\ начала\ массива}}
\DoxyCodeLine{\}}
\DoxyCodeLine{\textcolor{keywordflow}{else}\ \ }
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \textcolor{keywordflow}{return}\ \mbox{\hyperlink{group___m_o_d_b_u_s___m_e_s_s_a_g_e___d_e_f_i_n_e_s_gga4ade64cb3fabf37f010c1e297489980caea312adaf18aa7ebd17aca8883550425}{ET\_ILLEGAL\_DATA\_ADDRESS}};}
\DoxyCodeLine{\}}

\end{DoxyCode}
 
\end{DoxyEnumerate}\input{group___m_o_d_b_u_s___d_a_t_a___r_e_r_i_s_t_e_r_s___d_e_f_i_n_e_s}
\input{group___m_o_d_b_u_s___d_a_t_a___c_o_i_l_s___d_e_f_i_n_e_s}
