From 97a94bac2902782c38bdcd69a1a4610bf7408cfb Mon Sep 17 00:00:00 2001 From: jaseg Date: Fri, 3 Apr 2020 17:00:28 +0200 Subject: thesis: Add grid frequency measurement plots --- ma/resources/nbexport.tplx | 14 +++++++++++- ma/safety_reset.bib | 56 +++++++++++++++++++++++++++++++++------------- ma/safety_reset.tex | 52 +++++++++++++++++++++++++++++++++++++++++- 3 files changed, 104 insertions(+), 18 deletions(-) (limited to 'ma') diff --git a/ma/resources/nbexport.tplx b/ma/resources/nbexport.tplx index a279827..f3f47bc 100644 --- a/ma/resources/nbexport.tplx +++ b/ma/resources/nbexport.tplx @@ -9,5 +9,17 @@ ((*- endblock header -*)) -((* block maketitle *))\vspace*{3cm}((* endblock maketitle *)) +((* block maketitle *))\vspace*{1cm}((* endblock maketitle *)) + +((* block stream *)) + ((*- if output.name != 'stderr' -*)) + ((( super() ))) + ((*- endif -*)) +((* endblock stream *)) + +((* block data_text *)) + ((*- if 'application/vnd.jupyter.widget-view+json' not in output.data -*)) + ((( super() ))) + ((*- endif -*)) +((* endblock data_text *)) diff --git a/ma/safety_reset.bib b/ma/safety_reset.bib index cbec74b..1614345 100644 --- a/ma/safety_reset.bib +++ b/ma/safety_reset.bib @@ -472,14 +472,14 @@ x-color = {#cc3300}, year = {2018} } - -@techreport{entsoe01, - author = {ENTSO-E System Protection Dynamics and WG}, - month = mar, - title = {Oscillation Event 03.12.2017}, - url = {https://docstore.entsoe.eu/Documents/SOC%20documents/Regional_Groups_Continental_Europe/OSCILLATION_REPORT_SPD.pdf}, - year = {2018} -} + +@TechReport{entsoe01, + author = {{ENTSO-E System Protection Dynamics and WG}}, + title = {Oscillation Event 03.12.2017}, + url = {https://docstore.entsoe.eu/Documents/SOC%20documents/Regional_Groups_Continental_Europe/OSCILLATION_REPORT_SPD.pdf}, + month = mar, + year = {2018}, +} @article{leveson01, author = {Nancy G. Leveson and Clark S. Turner}, @@ -540,14 +540,14 @@ title = {Smart meters in smart grid: An overview}, year = {2013} } - -@techreport{cenelec01, - author = {The CEN/CENELEC/ETSI Joint Working Group Standards Smart on for Grids}, - month = may, - organization = {CEN/CENELEC/ETSI}, - title = {Final report of the CEN/CENELEC/ETSI Joint Working Group on Standards for Smart Grids}, - year = {2011} -} + +@TechReport{cenelec01, + author = {{The CEN/CENELEC/ETSI Joint Working Group Standards Smart on for Grids}}, + title = {Final report of the CEN/CENELEC/ETSI Joint Working Group on Standards for Smart Grids}, + month = may, + organization = {CEN/CENELEC/ETSI}, + year = {2011}, +} @techreport{pariente01, author = {Dillon Pariente and Emmanuel Ledinot}, @@ -820,4 +820,28 @@ year = {2016}, } +@Article{perrin01, + author = {Perrin, Trevor}, + title = {The Noise protocol framework, 2015}, + journal = {URL http://noiseprotocol. org/noise. pdf}, + year = {2016}, +} + +@Article{kabalci01, + author = {Yasin Kabalci}, + title = {A survey on smart metering and smart grid communication}, + doi = {10.1016/j.rser.2015.12.114}, + issn = {1364-0321}, + pages = {302-318}, + volume = {57}, + year = {2016}, +} + +@Thesis{gasior02, + author = {Gasior, Marek}, + title = {{Improving frequency resolution of discrete spectra: algorithms of three-node interpolation}}, + url = {https://cds.cern.ch/record/1346070}, + year = {2006}, +} + @Comment{jabref-meta: databaseType:biblatex;} diff --git a/ma/safety_reset.tex b/ma/safety_reset.tex index a292458..f8c97f6 100644 --- a/ma/safety_reset.tex +++ b/ma/safety_reset.tex @@ -889,7 +889,7 @@ despite numerous distortions. \begin{figure} \centering \includegraphics{../lab-windows/fig_out/mains_voltage_spectrum} - \caption{Fourier transform of an 8 hour capture of mains voltage. Data was captured using our frequency measurement + \caption{Fourier transform of a 24 hour capture of mains voltage. Data was captured using our frequency measurement sensor described in section \ref{sec-fsensor} and FFT'ed after applying a blackman window. Vertical lines indicate $50 \text{Hz}$ and odd harmonics.} \label{mains_voltage_spectrum} @@ -1055,6 +1055,44 @@ interface and its good tolerance of system resets due to unexpected power loss. \subsection{Frequency sensor measurement results} +\begin{figure} + \centering + \includegraphics{../lab-windows/fig_out/freq_meas_trace_24h} + \caption{Trace of grid frequency over a 24 hour window. One clearly visible feature are large positive and negative + transients at full hours. Times shown are UTC. Note that the european continental synchronous area that this + sensor is placed in covers several time zones which may result in images of daily load peaks appearing in 1 hour + intervals. Fig.\ \ref{freq_meas_trace_mag} contains two magnified intervals from this plot.} + \label{freq_meas_trace} +\end{figure} +\begin{figure} + \begin{subfigure}{\textwidth} + \centering + \includegraphics{../lab-windows/fig_out/freq_meas_trace_2h_1} + \caption{A 2 hour window around 00:00 UTC.} + \end{subfigure} + \begin{subfigure}{\textwidth} + \centering + \includegraphics{../lab-windows/fig_out/freq_meas_trace_2h_2} + \caption{A 2 hour window around 18:30 UTC.} + \end{subfigure} + \caption{Two magnified 2 hour windows of the trace from fig.\ \ref{freq_meas_trace}.} + \label{freq_meas_trace_mag} +\end{figure} + +\begin{figure} + \centering + \includegraphics{../lab-windows/fig_out/freq_meas_spectrum} + \caption{Fourier transform of the 24 hour grid frequency trace in fig. \ref{freq_meas_trace} with some notable peaks + annotated with the corresponding period in seconds. The $\frac{1}{f}$ line indicates a pink noise spectrum. We can + clearly see the noise spectrum flattens below some frequency around $\frac{1}{120 \text{s}}$. This effect is due to + primary control actively regulating grid frequency over such time intervals. Beyond the $\frac{1}{f}$ slope starting + at around $1 \text{Hz}$ we can make out a white noise floor in the order of $\frac{\mu\text{Hz}}{\text{Hz}}$. + % TODO: where does this noise floor come from? Is it a fundamental property of the grid? Is it due to limitations of + % our measurement setup (such as ocxo stability/phase noise) ??? + } + \label{freq_meas_spectrum} +\end{figure} + Captured raw waveform data is processed in the Jupyter Lab environment\cite{kluyver01} and grid frequency estimates are extracted as described in sec. \ref{frequency_estimation} using the \textcite{gasior01} technique. Appendix \ref{grid_freq_estimation_notebook} contains the Jupyter notebook we used for frequency measurement. @@ -1063,6 +1101,16 @@ extracted as described in sec. \ref{frequency_estimation} using the \textcite{ga \section{Channel simulation and parameter validation} +To validate all layers of our communication stack from modulation scheme to cryptography we built a prototype +implementation in python. Implementing all components in a high-level language builds up familiartiy with the concepts +while taking away much of the implementation complexity. For our demonstrator we will not be able to use python since +our target platform is a cheap low-end microcontroller. Our demonstrator firmware will have to be written in a low-level +language such as C or rust. For prototyping these languages lack flexibility compared to python. +% FIXME introduce project outline, specs -> proto -> demo above! + +To validate our modulation scheme we performed a series of simulations. We produced modulated frequency data that we +superimposed with either of simulated pink noise or an actual grid frequency measurement series. +% FIXME do test series with simulated noise emulating measured noise spectrum \section{Implementation of a demonstrator unit} @@ -1070,6 +1118,8 @@ extracted as described in sec. \ref{frequency_estimation} using the \textcite{ga \section{Lessons learned} + + \chapter{Future work} \section{Technical standardization} The description of a safety reset system provided in this work could be translated into a formalized technical standard -- cgit