source: firmware/FSC/doc/FSC.tex@ 10669

Last change on this file since 10669 was 10668, checked in by neise, 14 years ago
File size: 15.5 KB
Line 
1\documentclass[a4paper]{article}
2
3\setlength{\topmargin}{0mm} %1 inch is always there!
4\setlength{\oddsidemargin}{0mm} %1 inch is always there!
5\setlength{\evensidemargin}{0mm} %1 inch is always there!
6
7\setlength{\textwidth}{16cm}
8\setlength{\textheight}{25cm}
9
10
11\setlength{\headheight}{0mm}
12\setlength{\headsep}{0mm}
13
14
15
16%um die deutschen Umlaute eingeben zu können
17% müssen diese 3 Pakete eingebunden werden.
18% welches der Pakete was macht, weiss ich nicht.
19\usepackage[T1]{fontenc}
20\usepackage[latin1]{inputenc}
21%\usepackage{ngerman} % nur wenn z.B. 'Inhaltsverzeichnis' auch deutsch sein soll.
22
23\usepackage{graphicx} % for pictures
24\usepackage{float} % for figures with english descriptions
25
26\restylefloat{figure} % can nor force it with H
27\restylefloat{table} % can nor force it with H
28
29\title{FSC - facts about the board}
30\author{D. Neise}
31\date{07.02.2011}
32
33\begin{document}
34
35%title page contains TOC
36\maketitle
37\tableofcontents
38%\newpage
39
40%\listoffigures
41%\listoftables
42
43\section{Basic Facts and Purpose}
44% no pictures in SVN repos ... no space.
45%\emph{picture here - 3D model of FSC}
46
47This document presents electronic facts and figures of FACTs FSC board. FSC stands for {\bf F}act {\bf S}low {\bf C}ontrol. The name is a bit misleading, since the boards sole purpose is to monitor slowly changing parameters, such as:
48\begin{itemize}
49 \item up to 64 temperatures (RTD sensors, e.g. Pt1000 or Pt100),
50 \item up to 4 humidities (designed for Honeywell HIH-40xx family),
51 \item the DC levels of all 36 FACT low voltage supply channels,
52 \item the current consumption on each LV-channel (actually a dc-voltage\footnote{see FLV specs for further details}).
53\end{itemize}
54
55FSC uses an 8MHz ATmega32L micro controller(MCU) to readout the muxed 24bit sigma delta ADC (AD7719) which is connected to the RTDs. In addition the ATmegas internal 10bit ADC is used to monitor the humidity, LV-voltages and LV-currents.
56The muxers on FSC belong to analog devices ADG77xx family, and are controlled by the MCU.
57The User has access to FSC via Ethernet Interface, provided by WIZNETs W5100, the younger brother of W5300, which is used on FACTs FAD boards.
58
59AD7719 and W5100 communicate with the MCU via an SPI bus, which results in the fact, that a lot of user interaction might slow down temperature measurement or vice versa. Additionally the user should be aware, that sigma delta ADCs have a prolonged settling time, when muxed. Redout of all 64 temperature channels takes about 13s, while one single channel might be readout with at a rate of 10Hz. In addition FSC runs a 32bit timer, counting miliseconds since timer init. The timer is initialized to zero, when FSC is powered. User may synchronize FSCs timer to Unix time.
60
61\subsection{Measuring}
62\label{sec_measuring}
63The user may send a command telling FSC, what to measure. FSC will measure it and return the result, right after the measurement was finished. It is possible to tell FSC to measure several sensors at a time.
64Users may issue an 'activate' command (see table \ref{tbl_FSC_CMDS}), to specify which channel should be measured during the next measurement phase. In case one is not sure which channel was activated beforehand users may issue a 'status' command, to gather information about FSCs current status. Whenever the user completed the channel activation process the 'measure' commands may be issued. Since the high resolution ADC AD7719 used for resistance measurement and the 10bit ADC used for voltage measurement run independently on different time scales, different 'measure' commands are defined. 'measure resistances' will start a measurement possibly taking some seconds, while 'measure voltages' will be ready almost instantaneosly.
65Since a measurement might take some time, FSC generates an answer, once the 'measure' command received, informing the user about the command reception. The results are then submitted in a single message to the user, which is called a telegram.
66During a 'measure resistance' FSC is not checking for incoming commands. So incoming commands will pile up in W5100 input FIFO. Which means, sending a lot of on demand commands will delay FSCs reaction to the following commands consecutivly.
67The W5100 transmission FIFO can recieve 4kbyte. I am not sure what happens in case this FIFO is completely full, but I guess W5100 will reject incoming TCP/IP packets and the user side PC will constantly keep on (re)sending them. Since a typical command consists of less than 10bytes it is necessary to send a lot of commands without receiving any answer before the FSC FIFO is full.
68The theoretical limit for data readout from the W5100 FIFO into the ATmega microncontroller is about 98kbyte/s.
69
70\subsubsection{RTD switching}
71FSCs high resolution ADC AD7719 only bears one single input channel. So the RTDs are beeing multiplexed during the resistance measurement. This multplexing includes the RTDs current supply of about $400\,{\mu}A$. In case the RTDs are near to FACTs G-APD signal lines, low frequency crosstalk might be induced due to these switching processes.
72In case of FACT there might be two families of RTDs. About 30 pieces will be mounted next to the G-APDs, while a smaller number of sensors will be mounted in the electronics compartement, where this kind of noise will not contribute much.
73Maybe this swithcing noise can be completely cancelled by parallel capacities of $C_P \approx 10\,{\mu}F$.
74
75
76\subsection{The Telegram}
77As previously outlined the results of a measurement will be submitted in a single message called telegram. The format of this telegram is given in table (\ref{tbl_telegram}). Despite the fact that the measurement of several RTDs might take several seconds, the storage and transmission of the time of each temperature measurement is regarded as too much overhead, hence the time of the last measurement taken for a telegram is submitted within. Subsequent all activated sensor measurement results are beeing transmitted. A result always consists of a sensor ID and the actual data. Detailed information about the composition of the sensor ID can be found in table (\ref{tdl_sensor_id}). The data might be either 3 byte in case of an RTD or 2 byte in case of all other sensors. For detailed information of sensor data see section \ref{sec_sensor_data}.
78\begin{table}[htpb]
79\begin{tabular}{|l|l|l|}
80\hline
81address & mnemonic & description \\
82\hline
83byte 0 & 0x00 & special telegram header \\
84byte 1..2 & length & length of telegram in byte \\
85byte 3...6 & time & time, when measurement was finished.\\
86byte 7 & sensor ID 0 & \\
87byte 8..x & data 0 & data field is eigther 2 or 3 byte wide. \\
88 & & depending of sensor type. \\
89\hline
90byte ... & ... & sensor IDs and data until end.\\
91\hline
92\end{tabular}
93\caption{composition of FSC telegram}
94\label{tbl_telegram}
95\end{table}
96
97\begin{table}[htpb]
98\begin{tabular}{|l|l|l|}
99\hline
100ID bits & meaning \\
101\hline
10200pp.psss & temperatur sensor no. sss on port ppp \\
10301vv.vvvv & voltage sensor no. vvvvvv (between 0..35) \\
10410cc.cccc & current sensor no. cccccc (between 0..35)\\
1051100.0hhh & humidity sensor no. hhh \\
106&\\
107... & to be completed \\
108\hline
109\end{tabular}
110\caption{composition of the sensor ID - ad exemplum}
111\label{tdl_sensor_id}
112\end{table}
113
114\subsection{Sensor Data}
115\label{sec_sensor_data}
116FSC supports many different sensors. The first type is any resistive sensor, such as RTDs. The second type is any sensor outputting a voltage between 0VDC and 4.096VDC. In order to keep the firmware independent from the sensors and to keep it as simple as possible, the measured data is treated as less as possible before beeing output.
117
118Since the resistance measurement is perfomed in a ratiometric manner, the resistance is measured as a 24bit fraction of an onboard fix reference resistor of $\mathrm{R_{ref}} \approx 6.25 \mathrm{k\Omega}$ (see table \ref{tbl_REG_overview}). The value of $\mathrm{R_{ref}}$ is not stored as a constant value, so the user should measure its value once and submit it to the FSC. In case no value is submitted, $\mathrm{R_{ref}} = 6.25\,k\Omega$ is assumed.
119FSC does not multiply the measured fraction with the reference resistance. Hence the resistance is unknown on FSC and cannot be transformed into a temperature. Similarly the current of the low voltage supply channels, which is converted into a voltage level and measured by FSC is not beeing treated in any way by the MCU but directly transmitted to the user via ethernet.
120The format of each sensor data is given in table \ref{tbl_sensor_data_format}.
121\begin{table}[htpb]
122\begin{tabular}{|l|l|l|l|l|l|}
123\hline
124sensor name & actual physical value & resolution & width & format & unit \\
125\hline
126temperature & resistance &24 or 16 bit & 24 & unsigned int & fraction of $\mathrm{R_{ref}}$ \\
127humidity & voltage & 10 bit & 16 & unsigned int & V \\
128voltage & voltage & 10 bit & 16 & unsigned int & V \\
129current & voltage & 10 bit & 16 & unsigned int & V \\
130\hline
131\end{tabular}
132\caption{sensor data format}
133\label{tbl_sensor_data_format}
134\end{table}
135
136
137
138
139\section{Ethernet Interface}
140FSC runs as a TCP/IP server, this means after W5100 was initialized, FSC will listen on a Port, but will not attempt to connect to any server. Since W5100 does not support DHCP, FSC has a fix IP\footnote{see FACT Elogbook / doc}. The Port is defined as 5000.
141For simplicity of firmware coding, the UI is non human readable. Table (\ref{tbl_FSC_CMDS}) shows which commands are defined (so far).
142Some commands need parameters others don't. Table (\ref{tbl_FSC_CMD_PACKAGE}) shows how a message containing a command is defined.
143Since TCP/IP packages on the ethernet might be delayed up to minutes timescale it is handy to identify command packages by a (nearly-)unique ID instead of its time only. So when the user receives an answer of the FSC, it is possible to relate it to a specific command.
144Generally FSC copies the package ID of a given command package into its answer.
145
146The following commands are defined:
147\begin{table}[htpb]
148\begin{tabular}{|l|l|l|}
149\hline
150command & function & description \\
151\hline
1520x00 & -reserved- & -reserved- \\
1530x01 & status & returns entire FSC registers. see table (\ref{tbl_REG_overview}) \\
1540x02 & write reg(U8 addr, U8 data) & write data to register address \\
1550x03 & read reg(U8 addr) & return only specified register \\
1560x04 & measure active R-channels & see see \ref{sec_measuring} \\
1570x05 & measure active V-channels & see ... \\
1580x06 & measure all active channels & see ... \\
1590x07 & set timer(U32 data) & set internal timer \\
1600x08 & start timer & start timer after setting. see \ref{sec_time_register}\\
1610x09 & stop timer & stop timer before setting. \\
162&&\\
163... & ... & to be completed \\
164&& \\
1650xFF & reset & reset all internal registers and peripherals \\
166\hline
167\end{tabular}
168\caption{FSC commands}
169\label{tbl_FSC_CMDS}
170\end{table}
171
172\begin{table}[htpb]
173\begin{tabular}{|l|l|l|}
174\hline
175address & mnemonic & description \\
176\hline
177byte 0 & command & see table\ref{tbl_FSC_CMDS}\\
178byte 1 & package ID & (nearly-)unique package identifier \\
179byte 2 & length & length of data section - if apropriate\\
180byte 3..1k & data & parameters for command - if apropriate\\
181\hline
182\end{tabular}
183\caption{composition of FSC commands}
184\label{tbl_FSC_CMD_PACKAGE}
185\end{table}
186
187FSC answers with a short acknowledgement to any command. An acknowledgement contains the command in the first byte and the (nearly-)unique package ID of the command package in the second byte.
188\begin{table}[htpb]
189\begin{tabular}{|l|l|l|}
190\hline
191address & mnemonic & description \\
192\hline
193byte 0 & command & command, which caused this acknowledgement \\
194byte 1 & package ID & package ID of the command package \\
195\hline
196\end{tabular}
197\caption{composition of FSCs acknowledgement}
198\label{tbl_FSC_ACK}
199\end{table}
200
201If the user issued a measurement command, a telegram is beeing send whenever the measurement is done. In case of free running mode even several telegrams will be submitted. In order to distinguish a telegram from a command acknowledgement, the first byte is always 0x00, see table (\ref{tbl_telegram}).
202
203%\newpage
204\subsection{FSC Registers}
205Table \ref{tbl_REG_overview} shows an overview of the FSC registers. Most registers may be read and written. Only the first two registers are readonly. Detailed descriptions of the register contents (will) follow. All registers are 8bit wide.
206\begin{table}[htpb]
207\begin{tabular}{|l|l|l|}
208\hline
209{\bf address} & {\bf name} & {\bf description } \\
210\hline
2110x00 & status3 & status register. TBR \\
2120x01 & status2 & see \ref{sec_status_register} \\
2130x02 & status1 & \\
2140x03 & status0 & \\
2150x02 & time\_s3 & current time in secondsMSB\\
2160x03 & time\_s2 & see \ref{sec_time_register}\\
2170x04 & time\_s1 & \\
2180x05 & time\_s0 & current time in seconds LSB\\
2190x08 & time\_ms1 & current time, fraction of miliseconds MSB\\
2200x09 & time\_ms0 & -the same- LSB\\
2210x0A & FRperiod1 & time in seconds between two free running measurements MSB\\
2220x0B & FRperiod0 & -the same- LSB\\
2230x0C & RREF1 & reference resistor value in ohms (MSB) \\
2240x0D & RREF0 & reference resistor value in ohms (LSB) \\
2250x10 & TempEn7 & \\
2260x11 & TempEn6 & \\
2270x12 & TempEn5 & \\
2280x13 & TempEn4 & \\
2290x14 & TempEn3 & \\
2300x15 & TempEn2 & \\
2310x16 & TempEn1 & \\
2320x17 & TempEn0 & bitmap defining which channel \\
2330x18 & HumiEn0 & is activated\\
2340x19 & VoltEn4 & \\
2350x1A & VoltEn3 & \\
2360x1B & VoltEn2 & \\
2370x1C & VoltEn1 & \\
2380x1D & VoltEn0 & \\
2390x1E & CurrEn4 & \\
2400x1F & CurrEn3 & \\
2410x20 & CurrEn2 & \\
2420x21 & CurrEn1 & \\
2430x22 & CurrEn0 & \\
2440x30 & TempDone7 & \\
2450x31 & TempDone6 & \\
2460x32 & TempDone5 & \\
2470x33 & TempDone4 & \\
2480x34 & TempDone3 & \\
2490x35 & TempDone2 & \\
2500x36 & TempDone1 & \\
2510x37 & TempDone0 & bitmap defining which channel \\
2520x38 & HumiDone0 & is already measured\\
2530x39 & VoltDone4 & \\
2540x3A & VoltDone3 & \\
2550x3B & VoltDone2 & \\
2560x3C & VoltDone1 & \\
2570x3D & VoltDone0 & \\
2580x3E & CurrDone4 & \\
2590x3F & CurrDone3 & \\
2600x40 & CurrDone2 & \\
2610x41 & CurrDone1 & \\
2620x42 & CurrDone0 & \\
263... & ... & to be completed \\
264 \hline
265\end{tabular}
266\caption{FSC registers}
267\label{tbl_REG_overview}
268\end{table}
269
270\subsubsection{Status Registers}
271\label{sec_status_register}
272Apart from the possibility of crosstalk due to RTD channel switching, it is of course possible to let FSC monitor all of its active channels an in case one channel exceeds a its threshold, a message is generated.
273In this case these thresholds need to be stored and this modus needs to be switched on or off.
274Some additional information might be stored here, such as:
275\begin{itemize}
276\item Timer enabled/disabled
277\item SPI interface adjusted for: AD7719 / W5100
278\item ...
279\end{itemize}
280
281\subsubsection{Time Registers}
282\label{sec_time_register}
283Here the current time is stored. Four registers are used to store the current time in seconds, so the current unix time might be
284transfered to FSC after power up. Additionaly two registers store the current time in milisenconds. This register cannot be set by the user.
285When the user wants to synchronize FSC to the current time, first the timer should be stopped by issuing the 'stop timer' command. Then the Time Registers should be written and finally the 'start timer' command should be sent, causing the milisecond registers to be reset as well.
286
287\subsubsection{The Enable Registers}
288\label{sec_enable_registers}
289Most probably not every input channel will be connected to a sensor. In order not to measure unconnected channels, the user may define, which sensor is active, by writing to the registers, TempEnx, HumiEnx, AcceEnx, VoltEnx and CurrEnx the apropriate bitpattern.
290
291\subsubsection{Ideas for more registers}
292\label{sec_register_ideas}
293
294%\appendix
295\end{document}
Note: See TracBrowser for help on using the repository browser.