Added Modbus registers to datasheet

This commit is contained in:
Jan Mrna 2022-05-29 15:05:07 +02:00
parent 6571095fd3
commit 7f56487fcc
2 changed files with 31 additions and 19 deletions

View File

@ -79,12 +79,12 @@ Fully open-source ecosystem: sensor hardware, case, firmware and connected Pytho
\begin{tabular}{|p{5cm}|p{2cm}|p{1cm}|p{1cm}|p{1cm}|p{1cm}|} \begin{tabular}{|p{5cm}|p{2cm}|p{1cm}|p{1cm}|p{1cm}|p{1cm}|}
\hline \hline
\rowcolor{lightgray}\textbf{Parameter} & \textbf{Symbol} & \textbf{Min.} & \textbf{Typ.} & \textbf{Max.} & \textbf{Unit} \\ \hline \rowcolor{lightgray}\textbf{Parameter} & \textbf{Symbol} & \textbf{Min.} & \textbf{Typ.} & \textbf{Max.} & \textbf{Unit} \\ \hline
Input voltage & $V_{DD}$ & 5 & 12 & 24 & V \\ \hline Input voltage & $\mathrm{V_{DD}}$ & 5 & 12 & 24 & V \\ \hline
Average supply current & $I_{DD}$ & & 50 & & mA \\ \hline Average supply current & $\mathrm{I_{DD}}$ & & 50 & & mA \\ \hline
RS485 Single-Ended Output High & $V_{OH}$ & 2.2 & & & V \\ \hline RS485 Single-Ended Output High & $\mathrm{V_{OH}}$ & 2.2 & & & V \\ \hline
RS485 Single-Ended Output Low & $V_{OL}$ & & & 0.8 & V \\ \hline RS485 Single-Ended Output Low & $\mathrm{V_{OL}}$ & & & 0.8 & V \\ \hline
RS485 Differential Output & $V_{OD}$ & 2.0 & & & V \\ \hline RS485 Differential Output & $\mathrm{V_{OD}}$ & 2.0 & & & V \\ \hline
RS485 Receiver Differential Threshold Voltage & $V_{TH}$ & -200 & -105 & -10 & mV \\ \hline RS485 Receiver Differential Threshold Voltage & $\mathrm{V_{TH}}$ & -200 & -105 & -10 & mV \\ \hline
\end{tabular} \end{tabular}
\normalsize \normalsize
\caption{Electrical Specifications} \caption{Electrical Specifications}
@ -178,7 +178,7 @@ Stop Bits & 1 \\ \hli
\section{Communication Specification} \section{Communication Specification}
For physical layer RS-485 is used. This enables communication to be robust and resistant to EMI (electro-magnetic interference). As a data link layer, Modbus RTU is used. This protocol is widely supported by number of PLCs and other devices. To interface with PC (or any computer with USB port) USB to RS485 converter may be used in comjunction with Veles Sensors python library. For physical layer RS-485 is used. This enables communication to be robust and resistant to EMI (electro-magnetic interference). On top of physical layer Modbus RTU is used as a data link layer. This protocol is widely supported by number of PLCs and other devices. To interface with PC (or any computer with USB port) USB to RS485 converter may be used in conjunction with Veles Sensors python library.
\subsection{Physical Layer - RS485} \subsection{Physical Layer - RS485}
@ -190,6 +190,8 @@ Modbus is well-tested, openly-published and royalty free data communications pro
Limitation of Modbus-based buses is that there is no arbitration in case of address conflict. This means that nodes should be either added one by one or node addresses should be configured beforehand. Limitation of Modbus-based buses is that there is no arbitration in case of address conflict. This means that nodes should be either added one by one or node addresses should be configured beforehand.
Address 0 can be used as a broadcast message (e.g. instructing all sensors to turn off LED). No slave response is generated.
(TODO note: random address assignment command?) (TODO note: random address assignment command?)
\subsubsection{Modbus register space} \subsubsection{Modbus register space}
@ -227,18 +229,18 @@ Input registers contain measured values. They are read-only and 16-bit in size.
Temperature & 30011 & °F & \\ \hline Temperature & 30011 & °F & \\ \hline
Relative humidity & 30012 & \% & \\ \hline Relative humidity & 30012 & \% & \\ \hline
$\mathrm{CO_2}$ concentration & 30013 & ppm & \\ \hline $\mathrm{CO_2}$ concentration & 30013 & ppm & \\ \hline
VOC index & 30014 & VOC index & see Note 1 \\ \hline VOC index & 30014 & VOC index & see \hyperref[inputReg:note1]{Note 1} \\ \hline
VOC ticks & 30015 & raw VOC ticks & Raw value from VOC sensor \\ \hline VOC ticks & 30015 & raw VOC ticks & Raw value from VOC sensor \\ \hline
Temperature from $\mathrm{CO_2}$ sensor & 30028 & °C & \\ \hline Temperature from $\mathrm{CO_2}$ sensor & 30028 & °C & \\ \hline
Temperature from $\mathrm{CO_2}$ sensor & 30029 & °F & \\ \hline Temperature from $\mathrm{CO_2}$ sensor & 30029 & °F & \\ \hline
RH from $\mathrm{CO_2}$ sensor & 30030 & \% & \\ \hline RH from $\mathrm{CO_2}$ sensor & 30030 & \% & \\ \hline
\end{tabular} \end{tabular}
\caption{Modbus register space} \caption{Modbus input registers for \sensor{}}
\label{tab:modbus_register_space} \label{tab:modbus_input_registers}
\end{table} \end{table}
\paragraph{Note 1} \paragraph{Note 1}
\label{inputReg:note1}
VOC index has range 1-500 with 100 being the average. After sensor start-up VOC index is 0 until sufficient amount of data has been measured. VOC index has range 1-500 with 100 being the average. After sensor start-up VOC index is 0 until sufficient amount of data has been measured.
\subsubsection{Holding registers} \subsubsection{Holding registers}
@ -248,36 +250,46 @@ Holding registers can be written to by master node. Sensor \sensor{} offers foll
\begin{table}[h] \begin{table}[h]
\scriptsize \scriptsize
\centering \centering
\begin{tabular}{|p{4cm}|p{2cm}|p{4cm}|} \begin{tabular}{|p{4cm}|p{2cm}|p{6.5cm}|}
\hline \hline
\rowcolor{lightgray} \textbf{Register name} & \textbf{Register address} & \textbf{Note} \\ \hline \rowcolor{lightgray} \textbf{Register name} & \textbf{Address} & \textbf{Note} \\ \hline
LED on & 40001 & set to 0 to turn off LED; set to 1 to turn LED on \\ \hline LED on & 40001 & set to 0 to turn off LED; set to 1 to turn LED on \\ \hline
LED brightness & 40002 & range from 0 (off) to 100 (full intensity) \\ \hline LED brightness & 40002 & range from 0 (off) to 100 (full intensity) \\ \hline
LED smooth & 40003 & see \hyperref[holdingReg:note1]{Note 1} \\ \hline LED smooth & 40003 & see \hyperref[holdingReg:note1]{Note 1} \\ \hline
$\mathrm{CO_2}$ alert limit 1 & 40004 & see \hyperref[holdingReg:note2]{Note 2} \\ \hline $\mathrm{CO_2}$ alert limit 1 & 40004 & see \hyperref[holdingReg:note2]{Note 2} \\ \hline
$\mathrm{CO_2}$ alert limit 2 & 40005 & see \hyperref[holdingReg:note2]{Note 2} \\ \hline $\mathrm{CO_2}$ alert limit 2 & 40005 & see \hyperref[holdingReg:note2]{Note 2} \\ \hline
SCD4x temperature offset & 40006 & see \hyperref[holdingReg:note2]{Note 3} \\ \hline $\mathrm{CO_2}$ temperature offset & 40006 & see \hyperref[holdingReg:note2]{Note 3} \\ \hline
Device Modbus address & 40007 & see \hyperref[holdingReg:note2]{Note 4} \\ \hline Device Modbus address & 40007 & see \hyperref[holdingReg:note2]{Note 4} \\ \hline
Modbus baudrate & 40008 & see \hyperref[holdingReg:note2]{Note 5} \\ \hline Modbus baudrate & 40008 & see \hyperref[holdingReg:note2]{Note 5} \\ \hline
Reset device & 40100 & see \hyperref[holdingReg:note2]{Note 6} \\ \hline Reset device & 40100 & see \hyperref[holdingReg:note2]{Note 6} \\ \hline
\end{tabular} \end{tabular}
\caption{Modbus register space} \caption{Modbus holding registers for \sensor{}}
\label{tab:modbus_register_space} \label{tab:modbus_holding_registers}
\end{table} \end{table}
\paragraph{Note 1} \paragraph{Note 1}
\label{holdingReg:note1} \label{holdingReg:note1}
Setting LED smooth register to 1 will turn on LED color interpolation, meaning LED will have color in continuous spectrum from green to red according to $\mathrm{CO_2}$ level. Setting this register to 0 will turn off interpolation and set LED to semaphore (tri-state) mode. Depending on $\mathrm{CO_2}$ level LED color will than be either green, yellow or red. Setting LED smooth register to 1 will turn on LED color interpolation, meaning LED will have color in continuous spectrum from green to red according to $\mathrm{CO_2}$ level. Setting this register to 0 will turn off interpolation and set LED to semaphore (tri-state) mode. Depending on $\mathrm{CO_2}$ level LED color will then be either green, yellow or red.
\paragraph{Note 2} \paragraph{Note 2}
\label{holdingReg:note2} \label{holdingReg:note2}
Registers $\mathrm{CO_2}$ alert limit 1 and 2 set threshold for LED color change (see \ref[holdingReg:note1]{Note 1}). Limit 1 is threshold between green and yellow color, limit 2 is threshold betweek yellow and red color. Registers $\mathrm{CO_2}$ alert limit 1 and 2 set threshold for LED color change (see \hyperref[holdingReg:note1]{Note 1}). Limit 1 is threshold between green and yellow color, limit 2 is threshold betweek yellow and red color.
\paragraph{Note 3} \paragraph{Note 3}
\label{holdingReg:note3} \label{holdingReg:note3}
SCD4x is $\mathrm{CO_2}$ sensor SCD41 is $\mathrm{CO_2}$ sensing device used in \sensor{} sensor. It is also able to measure temperature, however it may be subject to offset due to internal heating of SCD41. This register allows user to compensate this offset.
\paragraph{Note 4}
\label{holdingReg:note4}
Device Modbus address may be changed by writing to this register. Allowed values are in range from 1 to 247. Device will start using new address immediately and cease to respond at previous address. Reset is not needed. It is the responsibility of a user to prevent address collisions on a bus.
\paragraph{Note 5}
\label{holdingReg:note5}
Modbus baudrate in bits/s. May be one of: 4800, 9600, 14400, 19200, 28800, 38400, 57600, 76800, 115200. Please be aware that lower baudrates are more reliable for long distance communication.
\paragraph{Note 6}
\label{holdingReg:note6}
Writing magical constant 0xABCD to this device will instruct device to soft-reset.
\section{Mechanical Dimesions} \section{Mechanical Dimesions}
\end{document} \end{document}