{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Compatibility of wind turbines with RAS" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## License\n", "\n", "```\n", "Wind turbine compatibility with RAS observations.\n", "Copyright (C) 2015+ Benjamin Winkel (bwinkel@mpifr.de)\n", "\n", "This program is free software; you can redistribute it and/or\n", "modify it under the terms of the GNU General Public License\n", "as published by the Free Software Foundation; either version 2\n", "of the License, or (at your option) any later version.\n", "\n", "This program is distributed in the hope that it will be useful,\n", "but WITHOUT ANY WARRANTY; without even the implied warranty of\n", "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n", "GNU General Public License for more details.\n", "\n", "You should have received a copy of the GNU General Public License\n", "along with this program; if not, write to the Free Software\n", "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n", "```" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import itertools\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from pycraf import conversions as cnv\n", "from pycraf import pathprof, protection\n", "from astropy import units as u" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Introduction\n", "Wind turbines are not radio services in the strict sense, because they don't emit wanted radio emission. However, having large heights they are visible over large distances and electrical devices (e.g., the generator, or digital control units) may be placed in the hub. Even when radio telescopes are put to a remote location, ideally well-shielded by terrain, the wind turbine might be above the local horizon. In this example, we will show how one can calculate separation distances (aka exclusion zones) to protect RAS observations from emission.\n", "\n", "For a case, where no frequency allocation is applicable, we have to find some other way to define protection criteria. For industrial devices there is CISPR standard, which contains permitted emission limits." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### CISPR-11\n", "\n", "For an industrial plant the electrical field limits are defined for a reference distance of 30 m; see Table 17 of the European standard CISPR-11 (= EN 55011 in Germany) for devices of group 1 class A:\n", "\n", "$$\n", "E_\\mathrm{lim}~\\left[\\mathrm{dB}_{\\mu \\mathrm{V} / \\mathrm{m}}\\right]= \\begin{cases}\n", "30 & \\text{for}\\,~ f < 230~\\mathrm{MHz} \\\\\n", "37 & \\text{for}\\,~ 230~\\mathrm{MHz} < f < 1~\\mathrm{GHz}\n", "\\end{cases}\n", "$$\n", "\n", "No limits are provided for $f > 1~\\mathrm{GHz}$, unfortunately. Therefore, we will simply use the limit of $37~\\mathrm{dB(\\mu V/m)}$ for all $f > 1~\\mathrm{GHz}$.\n", "\n", "The CISPR standard detector is a quasi-peak (QP) detector with a bandwidth of 120 kHz. How the QP detector converts to an RMS (which is more suitable to compare with the RA.769 thresholds) or AV (average) detector depends strongly on the input signal. For a continouus-wave signal (CW), the QP and RMS produce the same results. For stochastic signals, to convert to an RMS detector one has to subtract 5.5 dB. As we have no further information, we assume that the signals are CW-like, which is the expectation for the kind of equipment used in wind turbines." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note, that the CISPR detector has only a bandwidth of 120 kHz in contrast to the RAS bandwidths of several MHz (continuum). This would be OK, if we assumed that only one peak would be present in the protected bands (which may be reasonable for wind turbine equipment, which could be more of a line spectrum). However, there is the possibility that the full RAS band is polluted and we will assume this for our calculations of the separation distances, as a worst-case scenario. It would be straight-forward to calculate the limits for a one-channel (120 kHz) interference." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Minimal coupling loss\n", "We will start by calculating the *minimal coupling loss*, i.e., the least amount of path attenuation (propagation loss), which would be necessary to ensure compatibility. Since the path attenuation is dependend on the distance between interferer and victim service, the MCL translates to a separation distance, which we will infer further below." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, we query the RA.769 limits for continuum in the lower-frequency bands. It is unlikely, that a wind turbine will be problematic at high frequencies only, so we restrict ourselves to the low frequencies for now." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "<Table length=5>\n", "
| frequency | bandwidth | T_A | T_rx | T_rms | P_rms_nu | Plim | Plim_nu | Slim | Slim_nu | Efield | Efield_norm |
|---|---|---|---|---|---|---|---|---|---|---|---|
| MHz | MHz | K | K | mK | dB(W / Hz) | dB(W) | dB(W / Hz) | dB(W / m2) | dB(W / (Hz m2)) | dB(uV2 / m2) | dB(uV2 / m2) |
| float64 | float64 | float64 | float64 | float64 | float64 | float64 | float64 | float64 | float64 | float64 | float64 |
| 325 | 7 | 40 | 60 | 0.870 | -259.2 | -201.0 | -269.2 | -189.3 | -257.5 | -43.5 | -51.7 |
| 408 | 4 | 25 | 60 | 0.962 | -258.8 | -202.9 | -268.8 | -189.2 | -255.1 | -43.4 | -49.3 |
| 611 | 6 | 20 | 60 | 0.730 | -260.0 | -202.2 | -270.0 | -185.0 | -252.8 | -39.2 | -47.0 |
| 1414 | 27 | 12 | 10 | 0.095 | -268.8 | -204.5 | -278.8 | -180.1 | -254.4 | -34.3 | -48.6 |
| 1665 | 10 | 12 | 10 | 0.156 | -266.7 | -206.7 | -276.7 | -180.8 | -250.8 | -35.0 | -45.0 |