{ "cells": [ { "cell_type": "markdown", "id": "c6d9ba8c", "metadata": {}, "source": [ "# Problema 7.10\n", "\n", "\n", "\n", "Considerar una lazo cerrado con las funciones de transferencia siguientes:\n", "\n", "$$\\begin{align}\n", " G_c &= 5\\\\\n", " G_f &= 1\\\\\n", " G_p &= \\frac{2}{(s+1)(3s+1)}\\\\\n", " G_d &= \\frac{1}{(s+1)(3s+1)}\\\\\n", " G_m &= 1\n", "\\end{align}$$\n", "\n", "Para un cambio en el _set point_ de magnitud 2, contestar a las siguientes preguntas:\n", "\n", "1. Derivar una expresión en el dominio de Laplace para la respuesta de lazo cerrado.\n", "\n", "2. Obtener la respuesta del lazo cerrado en tiempo real.\n", "\n", "3. Calcular el valor máximo de $y(t)$ y establecer cuando ocurre.\n", "\n", "4. Calcular el _offset_.\n", "\n", "5. Calcular el periodo de oscilación de la respuesta de lazo cerrado.\n", "\n", "6. Dibujar cualitativamente la respuesta en tiempo real.\n", "\n", "---\n", "\n", "**Solución**\n", "\n", "a) En este problema se propone el siguiente lazo de control:" ] }, { "cell_type": "code", "execution_count": 1, "id": "b2ee047e", "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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Nd779PDhwybJ1q1bF5hWWVlpnTt3tpSUFEtJSbFZs2a59lqupFY3MZ62X/UBqf6Wmppq9957r23evLnVY0q4jli5FpAqKystKSnJNm/ebHPnzrXBgwc32M2+bNkyGzZsmOXk5Ng3vvENMzPLz8+3u+++24YPH279+/e3nTt3ulWO65wbdP0tKSnJvva1r9mPfvSjwLRHH320yXZaugZHYxv1nDlzXNmYzcyqq6stKSnJJNngwYPb3I4bWurTV199lT88QQpln5oF369Tp061gQMH2oIFC9r0euK9T1977TWT1OBT78WLF+3gwYN24MAB69Spky1dutTV1xMLfcp4Gr+cAenzt379+tm//uu/tngILlxHrFw9i2348OE2c+ZMS05ObnBKZllZmd1www1WW1trZmaffvqpmV3aSOovsrVy5coGiTCSTp8+bXfffbd17dq1yTeyudvChQubbLs1V3F1btRubcz1unXrFhgswqWtfer1evnD04Rw96lZcP26c+dO+9u//dsreo3x3qdr1qwxSXbs2LHL5v35z382SbZ161Yzc+8DZaz0KeNpfHj22WctPz8/6Pf9tttua/K7jOE6YpUoF40cOVJLlizR+PHjNW7cuMD0xMREnTlzRgUFBbr33nuVk5Oj8+fPq7q6WrNnz5YkZWdn69e//nWj7RYVFWnevHlhO0ugrq5OJ0+ebPPz9+3bF7i/YMECLViwIPC4srJSH374oR544IHAtNdff1233npr4HH92RhDhw7V6dOnA9Nnz57dqrMrWpKcnCxJOnr0qDIyMq64vdZoa5/WX4CtsrIyqOfV/19JSEgITEtMTFT//v116NAhVVVVaciQIZKkI0eO6J/+6Z90/PhxXbx4UW+++aZ8Pl/QtdbXWFpaGpZ+DXefSq3v148++kh33nmnPB6PRo8erffeey/odX2+xnjt00GDBkmS3n//fU2aNKnBvD179sjj8Sg3N1eStGvXLk2fPl0vvfSSVq1apZ/+9KdasWJF0LXGSp/WYzx1z7lz53ThwgWlpKSoc+fOYVnnp59+qoqKiqCf98477ygnJ0eFhYWaOHFig3nDhw9XQkKCduzYobfeektdu3bVt7/9bbdK/n9upq3nn3/ekpKSbP/+/ZfN++yzz+yFF16wrKwse+211+yDDz6wL3/5y4H5S5cutR/+8IeNtnvjjTe2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evXVV0O2zrNnz+qHP/yhTp8+HZiWn5/f4BRYAIg1jKcINwJSiPXq1UsHDx4MfPI5deqU/u7v/k7f+ta3dObMGVfX9frrr2vQoEFasWJFYNqcOXP061//2tX1AEAkMJ4inAhIYdC7d2998MEHGj9+fGDamjVrlJOTo6eeekp/+ctf2ty2mWnLli36+7//e915550qKSmRdOnw3IoVK/TEE09whVcAcYPxFOFCQAqTbt26aePGjXrhhRd09dVXS5I++eQTFRQUKCMjQ/fcc482b96sioqKFtsyMx07dkxLly7V4MGDNXr0aL388suB+bfffrv27NmjadOmhejVAEDkMJ4iHBIjXUB74vF4NGXKFI0bN04PPvigfvWrX0mSqqurtXr1aq1evVoJCQkaOHCg8vLylJ2drZSUFCUmJqqqqkqnT5/W9u3btX379gbHxOtde+21+slPfqLvfOc7fMoBENcYTxFqHjOzSBfRXn388cdatmyZli9frk8//bTN7dxyyy2aMWOGJk6cqI4dO7pYYeRlZGSopKREXq9X6enpkS6nWaWlpfL7/fL5fDp+/Hiky2kSfeo++jTyGE9bVv//NN7e+1AhIEWByspKFRUVafPmzdq+fbv27Nmjurq6Jpfv2rWr8vLylJeXp7vvvltDhw4NX7Fhlp2drf3790e6jKBkZWVp3759kS6jSfSp++jT6MF42jQCUnAISFGoqqpKu3bt0uTJk3Xw4MHA9Dlz5ui+++5T7969280u35dffllz585VeXl5pEtplbS0NBUWFmrixImRLqVJ9Kn76NPoVT+eHj16VJWVlbp48aKSk5OVlpam3NzcdjWeEpCCQ0CKUvv371d2dnaDafn5+XrllVciUxAAIKYRkILDWWxRatWqVZdN27Rpk06dOhWBagAAaF8ISFGorq5OL7zwwmXTa2trtWbNmghUBABA+0JAikJvvfWWTpw40ei8lStXhrcYAADaIQJSFGouBBUXF2vnzp1hqwUAgPaIgBRlzp492+Jv/bAXCQCA0CIgRZmXXnpJ1dXVzS7z4osvqqamJkwVAQDQ/hCQosybb74pn88nn8932bz66R07dtSWLVsiUB0AAO0Dv8UWZTZs2BC4v2XLFo0ePTrwmOtWAAAQHuxBAgAAcCAgRbHP/1Bie7kUPgAA0YCAFMW6dOkSuB9vvyoNAEA0IyBF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", "image/svg+xml": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2021-05-06T16:38:34.840072\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.3.4, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "PyObject " ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "using PyCall, LaTeXStrings\n", "\n", "schemdraw = pyimport(\"schemdraw\")\n", "dsp = pyimport(\"schemdraw.dsp\")\n", "\n", "d = schemdraw.Drawing(unit=1, fontsize=10)\n", "\n", "d.add(dsp.Arrow().right().label(L\"y_{sp}\", \"left\"))\n", "comp = d.add(dsp.Mixer(W=\"+\", S=\"-\").anchor(\"W\"))\n", "d.add(dsp.Arrow().right().at(comp.E))\n", "control = d.add(dsp.Box(h=1, w=1).anchor(\"W\").label(L\"G_c\"))\n", "d.add(dsp.Arrow().right().at(control.E))\n", "efc = d.add(dsp.Box(w=1, h=1).anchor(\"W\").label(L\"G_f\"))\n", "d.add(dsp.Arrow().right().at(efc.E))\n", "proc = d.add(dsp.Box(h=1, w=1).anchor(\"W\").label(L\"G_p\"))\n", "d.add(dsp.Arrow().right().at(proc.E))\n", "suma = d.add(dsp.Mixer(W=\"+\", N=\"+\").anchor(\"W\"))\n", "d.push()\n", "d.add(dsp.Arrow().up().reverse().at(suma.N))\n", "pert = d.add(dsp.Box(h=1, w=1).anchor(\"S\").label(L\"G_d\"))\n", "d.add(dsp.Arrow().up().reverse().at(pert.N).label(L\"d\", \"right\"))\n", "d.pop()\n", "d.add(dsp.Line().right().at(suma.E))\n", "dot = d.add(dsp.Dot(radius=0))\n", "d.push()\n", "d.add(dsp.Arrow().right().at(dot.center).label(L\"y\", \"right\"))\n", "d.pop()\n", "d.add(dsp.Line().down().length(1.5).at(dot.center))\n", "d.add(dsp.Arrow().left().length(4))\n", "sensor = d.add(dsp.Box(h=1, w=1).anchor(\"E\").label(L\"G_m\"))\n", "d.add(dsp.Line().at(sensor.W).tox(comp.S).left())\n", "d.add(dsp.Arrow().up().to(comp.S))\n", "\n", "d.draw(show=false)" ] }, { "cell_type": "markdown", "id": "ecc6d1e0", "metadata": {}, "source": [ "La respuesta de este sistema en el dominio de Laplace para un cambio en la consigna es:\n", "\n", "$$y = \\frac{G_c G_f G_p}{1 + G_c G_f G_p} y_{sp}$$\n", "\n", "Sustituyendo se encuentra:\n", "\n", "$$y = \\frac{\\frac{10}{11}}{\\frac{3}{11} s^2 + \\frac{4}{11} s + 1} \n", " \\frac{2}{s}$$\n", "\n", "b) A partir del conocimiento de las ecuaciones de la respuesta de un proceso de segundo orden para una entrada en escalón se puede obtener la respuesta en tiempo real fácilmente. En función del coeficiente de amortiguamiento se elije una de las ecuaciones. Se puede calcular el coeficiente de amortiguamiento sabiendo:\n", "\n", "$$\\left\\{\\begin{array}{l}\n", " \\tau^2 = \\frac{3}{11}\\\\\n", " 2 \\tau \\zeta = \\frac{4}{11}\n", " \\end{array}\\right.$$\n", " \n", "Resolviendo la ecuación anterior se encuentra:\n", "\n", "$$\\left\\{\\begin{array}{l}\n", " \\tau = 0.5222\\\\\n", " \\zeta = 0.3482\n", " \\end{array}\\right.$$\n", " \n", "El coeficiente de amortiguamiento es menor que la unidad, lo que significa que se trata de un sistema subamortiguado. La respuesta será:\n", "\n", "$$y (t) = K_p M \\left[ 1 - \\frac{1}{\\sqrt[]{1 - \\zeta^2}} e^{- \\zeta\n", " \\frac{t}{\\tau}} \\sin \\left( \\frac{1}{\\sqrt[]{1 - \\zeta^2}} \n", " \\frac{t}{\\tau} + \\mathrm{atan} \\frac{\\sqrt[]{1 - \\zeta^2}}{\\zeta} \\right)\n", " \\right]$$\n", " \n", "donde:\n", "\n", "- $K_p$ es la ganancia del proceso. En este caso\n", " $K_p = \\frac{10}{11}$.\n", "\n", "- *M* es la altura del escalón ($M = 2$).\n", "\n", "Por tanto la respuesta en tiempo real es:\n", "\n", "$$y (t) = 1.818 [1 - 1.067 \\mathrm{e}^{- 0.6667 t} \\sin (2.043 t + 1.215)]$$\n", "\n", "c) Si se representa la función anterior se obtiene:" ] }, { "cell_type": "code", "execution_count": 1, "id": "dd3f7026", "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "using Plots, SymPy, Roots, ForwardDiff\n", "\n", "@syms t, s\n", "\n", "# Definimos las funciones de transferencia\n", "Gc = 5\n", "Gf= 1\n", "Gp = 2/((s+1)*(3s+1))\n", "Gm = 1\n", "\n", "# Función de transferencia del lazo de control\n", "G = Gc*Gf*Gp/(1+Gc*Gf*Gp*Gm)\n", "\n", "# Cambio en la consigna\n", "Csp = 2/s\n", "\n", "# Cálculo de y(s)\n", "C_s = G*Csp\n", "\n", "# Cálculo de y(t)\n", "C = sympy.inverse_laplace_transform(C_s, s, t)\n", "\n", "# Transformamos C(t) para que se pueda realizar la diferenciación\n", "# automática con ForwardDiff\n", "C_t(t) = real(lambdify(C)(t))\n", "\n", "# Valor de C(t) cuando t tiende a infinito\n", "B = limit(s*C_s, s, 0)\n", "\n", "# Valor máximo de C(t), buscamos el máximo\n", "tmax = fzero(x->ForwardDiff.derivative(C_t, x), 1)\n", "Cmax = C_t(tmax)\n", "\n", "plot(C, -1, 10, xlabel=\"t\", ylabel=\"C(t)\", legend=false, lw=2)\n", "plot!(B*Heaviside(t), lw=2)\n", "plot!([tmax, tmax], [B, Cmax], marker=:circle, msw=0,\n", " annotations=(2.1, 2, text(\"A\")))\n", "plot!([tmax, tmax], [0, B], marker=:circle, msw=0,\n", " annotations=(2.1, 0.9, text(\"B\")))\n", "\n", "# NOTA: El problema 7.9 resuelve un problema similar pero sin utilizar\n", "# un método numérico para calcular la derivada." ] }, { "cell_type": "markdown", "id": "4058c302", "metadata": {}, "source": [ "En la gráfica se puede observar claramente que el valor máximo de la\n", "respuesta tiene el valor de $A + B$. El valor de $B$ es el valor\n", "estacionario que alcanza el lazo de control, es decir:\n", "\n", "$$B = \\lim_{t \\to \\infty} y (t) = \\lim_{s \\to 0} s y (s)$$\n", "\n", "Para poder calcular el valor de $A$ sólo hay que recordar la definición de *overshoot*:\n", "\n", "$$\\mathrm{Overshoot} = \\frac{A}{B}$$\n", "\n", "Por tanto el valor máximo de $y (t)$ es:\n", "\n", "$$y_{\\max} = A + B = (\\mathrm{overshoot} + 1) B$$\n", "\n", "El *overshoot* es:\n", "\n", "$$\\mathrm{Overshoot} = \\exp \\left( \\frac{- \\pi \\zeta}{\\sqrt[]{1 - \\zeta^2}}\n", " \\right) = 0.3113$$\n", " \n", "El valor de _B_ es:\n", "\n", "$$B = \\lim_{s \\to 0} s \\frac{\\frac{10}{11}}{\\frac{3}{11}\n", " s^2 + \\frac{4}{11} s + 1} \\frac{2}{s} = \\frac{20}{11}$$\n", " \n", "Por tanto el valor máximo de la respuesta es:\n", "\n", "$$y_{\\max} = (0.3113 + 1) \\frac{10}{11} = 2.384$$\n", "\n", "Para encontrar en que instante se produce este valor máximo de respuesta hay que resolver la siguiente ecuación:\n", "\n", "$$y_{\\max} = 2.384 = 1.818 [1 - 1.067 \\mathrm{e}^{- 0.6667 t_{\\max}} \\sin\n", " (2.043 t_{\\max} + 1.215)]$$\n", " \n", "El resultado es:\n", "\n", "$$t_{\\max} = 1.75$$\n", "\n", "La estrategia para encontrar la posición del máximo utilizada para dibujar la gráfica anterior es diferente. En este caso de ha buscado el primer punto para el que la derivada de la respuesta es cero. No ha sido necesario calcular el _overshoot_.\n", "\n", "d) El periodo de osiclación es:\n", "\n", "$$T = \\frac{2 \\pi \\tau}{\\sqrt[]{1 - \\zeta^2}}$$\n", "\n", "Sustituyendo se obtiene:\n", "\n", "$$T = 3.50$$\n", "\n", "e) La respuesta en tiempo real está dibujada más arriba." ] }, { "cell_type": "code", "execution_count": null, "id": "663deed1", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "@webio": { "lastCommId": null, "lastKernelId": null }, "celltoolbar": "Tags", "kernelspec": { "display_name": "Julia 1.6.0", "language": "julia", "name": "julia-1.6" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.6.1" } }, "nbformat": 4, "nbformat_minor": 5 }