{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 12章 ループ整形" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from control.matlab import *\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "#plt.rcParams['font.family'] ='sans-serif' #使用するフォント\n", "plt.rcParams['font.family'] = 'Times New Roman' # font familyの設定\n", "plt.rcParams['mathtext.fontset'] = 'cm' # math fontの設定\n", "plt.rcParams['xtick.direction'] = 'in' #x軸の目盛線が内向き('in')か外向き('out')か双方向か('inout')\n", "plt.rcParams['ytick.direction'] = 'in' #y軸の目盛線が内向き('in')か外向き('out')か双方向か('inout')\n", "plt.rcParams['xtick.major.width'] = 1.0 #x軸主目盛り線の線幅\n", "plt.rcParams['ytick.major.width'] = 1.0 #y軸主目盛り線の線幅\n", "plt.rcParams['font.size'] = 11 #フォントの大きさ\n", "plt.rcParams['axes.linewidth'] = 0.5 # 軸の線幅edge linewidth。囲みの太さ\n", "plt.rcParams['mathtext.default'] = 'it'#'regular'\n", "plt.rcParams['axes.xmargin'] = '0'\n", "plt.rcParams['axes.ymargin'] = '0.05'\n", "plt.rcParams['savefig.facecolor'] = 'None'\n", "plt.rcParams['savefig.edgecolor'] = 'None'\n", "\n", "plt.rcParams[\"legend.fancybox\"] = True # 丸角\n", "# plt.rcParams[\"legend.framealpha\"] = 1 # 透明度の指定、0で塗りつぶしなし\n", "# plt.rcParams[\"legend.edgecolor\"] = 'gray' # edgeの色を変更\n", "plt.rcParams[\"legend.handlelength\"] = 1.8 # 凡例の線の長さを調節\n", "plt.rcParams[\"legend.labelspacing\"] = 0.4 # 垂直方向(縦)の距離の各凡例の距離\n", "plt.rcParams[\"legend.handletextpad\"] = 0.7 # 凡例の線と文字の距離の長さ\n", "plt.rcParams[\"legend.markerscale\"] = 1.0 # 点がある場合のmarker scale" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def linestyle_generator():\n", " linestyle = ['-', '--', '-.', ':']\n", " lineID = 0\n", " while True:\n", " yield linestyle[lineID]\n", " lineID = (lineID + 1) % len(linestyle)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def plot_set(fig_ax, *args):\n", " fig_ax.set_xlabel(args[0])\n", " fig_ax.set_ylabel(args[1])\n", " fig_ax.grid(ls=':', lw=0.5)\n", " if len(args)==3:\n", " fig_ax.legend(loc=args[2])" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "def bodeplot_set(fig_ax, *args):\n", " fig_ax[0].grid(which=\"both\", ls=':', lw=0.5)\n", " fig_ax[0].set_ylabel('Gain [dB]')\n", "\n", " fig_ax[1].grid(which=\"both\", ls=':', lw=0.5)\n", " fig_ax[1].set_xlabel('$\\omega$ [rad/s]')\n", " fig_ax[1].set_ylabel('Phase [deg]')\n", " \n", " if len(args) > 0:\n", " fig_ax[1].legend(loc=args[0])\n", " if len(args) > 1:\n", " fig_ax[0].legend(loc=args[1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## PID制御" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### PI制御" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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t2Uv5IM2J58XCiaweJljyST1O41MRo4cydy5c9myZQvnnHMOd9xxB/vuuy933XUXDQ0Njsdn2u3q2cpW/bpBtw9dDVb2QtRm5XOyuS17IR+0Ofm84CmwiMhYp5fvkfUBZWVlnH322bz11lssWrSIdevWMX78eL73ve+xfv36vh6ewVAweJ24WARsBKyeT/YHpnjsOyvFxcW++8j84Z1dmyOPPJLHH3+czz//nAceeICTTz6Zfffdl9mzZzN9+vRucz6Z/drVs5V1xqU7bq/tdO2FqM3K52RzW/ZCPmhz8nnB66PQ75RSFymlvpvtBTzhe2QZ5OK5T2cCOLPNiBEjuOmmm/j444+ZNWsWP/vZzxg/fjx33nkndXV1WY+xq2cr52JiWrcPq3a69kLUZuVzsrkteyEftDn5vOD10/qUT79rducci06bsrIyTj31VFatWsUf//hHNm3axIQJE7j44ot56623bPsohHkIM8fS02bmWLzjKbAopepF5GQR+ZKIlIrIPSLyuIiMTvl9jyyPOfzww3n00UfZvHkz48eP5/zzz+fYY4/l6aefzkkANBgKHa+Tt3cAvwBeBR4CjgZagPtzN7Tu5GKOpayszFebTF9NTQ3//d//zfr167n66qv55S9/yT777MOCBQvYuXNn1uOylXXG5WfcOu107Xb1fNVm5XOyuS17IR+0Ofm84PVRaA8SE7QHAQcCxymlLgPW+h6RBfkYWFJUVFRw9tlns3LlSl566SW2b9/O/vvvz4UXXsg777xTEB8+E1h62kxg8Y7XwPJmMgXJLuA3SqnUZilbfY/Iglgs5ruP1H6iXttY+braJ02axPz58/nggw84+OCDOfvss5k6dSpPPPEEsVisW9tUWWdcfsat007XblfPV21WPieb27IX8kGbk88LXgPLJBE5TkSOA/btUv6y7xH1E4YOHcqcOXP48MMPufrqq3n00UfZa6+9+OlPf8qnn37a18MzGHYrXgPLN4F5ydfkLuVTdTsQkQoRWSsie4vIaBG5XUS+JyIzsrXP50chu9vK4uJizjjjDJYsWcLSpUvZtWsXBx98MDNnzmTNmjUopfLiccE8CvW0mUch73gNLGcppf4t8wWc6aKPH5DYkR/gPuBhpdQDwHnJFCHd6O0Fcm58uovIDjroIH75y1/y0UcfMWXKFC6//HImT57MwoULfW8H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oil1nNV1y7wOwWAwq4ZUH0OHDu3WPvM6lZeX097enm5XWlpqed1SY4lGo936yKYpFouxfft2tm3bxrZt2/jkk0/Yvn07n3/+OZ988gn19fXs2LGDtrY2hg4dytChQ6murmbo0KEMGTKEwYMHEwwG2WeffRg0aBADBw5kwIAB6X+j0ShjxoyhsrKSQCCAiGR9H3e1Zfqz+br+R+6WfAksfwSuSpb7W44WwxeAWCzGBx98wMaNG3n//ff55z//mX599tlnjBgxgjFjxjB69GhGjx7NuHHj+MpXvkIwGGS//fZj+PDhDBkyJH1Xm0m2QNHVlxk0+5q8CCxKqXdFJJXHZCxZ8piYORZ7zBxL782xtLa2snr1at59911Wr17Nxo0b+fjjjxkzZgwHHnggBxxwAEcccQQzZ85kn332YcyYMZbv33A4rPXYsTu1Ofm8kBeBBUApdZeD3/c5Ojs7fbWx8mXa7erZyjrjckK3D10NVvZC1Gblc7J1dnbS3t7O2rVrWbZsGatXr+bNN98kFAoxefJkDjvsME4//XRuueUWJkyY0OPRzO+Yddt51abr80JefN2sQ2oCzw+piTWvbax8mXa7erayzric0O1DV4OVvRC1Wfmy2UKhEOvWreOuu+7itNNOY4899uDiiy9m06ZNnHXWWbz++uts3ryZpUuXcvfddzN9+nQOOeQQT0HFacy67XS1WV0rJ58X8uaOxWDoKyKRCH/605947rnnWLx4MZWVlZx88slcfPHFPPfccwwePLjH5KbBnoIJLLmYY8n81sFtGytftm9orOrZyjrjckK3D10NVvZC1JbNF4lEWLZsGS+88AIvv/wykyZN4pvf/CY//OEPOeSQQ4DE3Us2HVZlL+wObTo23evolYIJLAZDLli3bh0PPvggCxcuZOLEicyYMYO7776bESNGAP9ad2LwR8HMsbS3t/vuQ+dNY9fGypdpt6tnK+fizazbh64GK3shaguHwzzwwAMcddRR6XmTv//97zzzzDNcdtll6aCS2Yfbshf8arPyOdl0r6NXzB2Lod/S2NjI/fffzy9+8QsmTZrETTfdxNe//nWKi4sBM1eyO7ENLCJyk1MHSqlbcjcca0pK/MdAnfUCdm2sfHYreTPr2cp+l0+76UNXg5W9ELRt376de+65h0cffZTp06ezbNky9tprrx7rM7L166THruwF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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "kp = 10\n", "T1 = 1\n", "K1 = tf([kp*T1, kp], [T1, 0])\n", "\n", "fig, ax = plt.subplots(2, 1, figsize=(4, 3.5)) \n", "\n", "gain, phase, w = bode(K1, logspace(-2,2), plot=False)\n", " \n", "ax[0].semilogx(w, 20*np.log10(gain), color='k', lw=1)\n", "ax[1].semilogx(w, phase*180/np.pi, color='k', lw=1)\n", "\n", "bodeplot_set(ax)\n", "ax[0].set_ylim(-1, 65)\n", "ax[0].set_yticks([0, 20, 40, 60])\n", "ax[1].set_ylim(-95, 5)\n", "ax[1].set_yticks([0, -45, -90])\n", "\n", "fig.tight_layout()\n", "#fig.savefig(\"PI_bode.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### PD制御" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "kp = 10\n", "T2 = 1\n", "K2 = tf([kp*T2, kp], [0, 1])\n", "\n", "fig, ax = plt.subplots(2, 1, figsize=(4, 3.5)) \n", "\n", "gain, phase, w = bode(K2, logspace(-2,2), plot=False)\n", " \n", "ax[0].semilogx(w, 20*np.log10(gain), color='k', lw=1)\n", "ax[1].semilogx(w, phase*180/np.pi, color='k', lw=1)\n", "\n", "bodeplot_set(ax)\n", "ax[0].set_ylim(-1, 65)\n", "ax[0].set_yticks([0, 20, 40, 60])\n", "ax[1].set_ylim(-5, 95)\n", "ax[1].set_yticks([0, 45, 90])\n", "\n", "fig.tight_layout()\n", "#fig.savefig(\"PD_bode.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 例12.1" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[-1.+3.j -1.-3.j]\n" ] } ], "source": [ "a1 = 2;\n", "a0 = 10;\n", "b0 = 8;\n", "\n", "P = tf( [0,b0], [1, a1, a0] )\n", "\n", "print(P.pole())" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "kP= 1\n", "(GM, PM, wpc, wgc)\n", "(inf, 65.7048110546354, nan, 3.6457513110645916)\n", "-----------------\n", "kP= 2\n", "(GM, PM, wpc, wgc)\n", "(inf, 36.67610510119843, nan, 4.77832575011283)\n", "-----------------\n", "kP= 5\n", "(GM, PM, wpc, wgc)\n", "(inf, 20.167955231621647, nan, 6.895465166801322)\n", "-----------------\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "LS = linestyle_generator()\n", "fig, ax = plt.subplots(2, 1, figsize=(4, 3.5)) \n", "\n", "kp = (1, 2, 5)\n", "for i in range(len(kp)):\n", " K = tf([0, kp[i]], [0, 1]) # P制御\n", " H = P * K # 開ループ系\n", " gain, phase, w = bode(H, logspace(-1,2), plot=False)\n", " \n", " # ゲイン線図と位相線図\n", " pltargs = {'ls':next(LS), 'label':'$k_P$='+str(kp[i]), 'c':'k', 'lw':1}\n", " ax[0].semilogx(w, 20*np.log10(gain), **pltargs)\n", " ax[1].semilogx(w, phase*180/np.pi, **pltargs)\n", " \n", " # ゲイン余裕,位相余裕,位相交差周波数,ゲイン交差周波数\n", " gm, pm, Wpc, Wgc = margin(H)\n", " ax[0].scatter(Wgc,0, c='k', alpha=0.5)\n", " \n", " print('kP=', kp[i])\n", " print('(GM, PM, wpc, wgc)')\n", " print(margin(H))\n", " print('-----------------')\n", " \n", "bodeplot_set(ax, 3)\n", " \n", "ax[0].set_ylim(-60,50)\n", "ax[0].set_yticks([-50,0,50])\n", "ax[1].set_ylim(-190,10)\n", "ax[1].set_yticks([-180,-90,0])\n", "\n", "fig.tight_layout()\n", "#fig.savefig(\"loop_pcont_bode.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "kP= 5 , kI= 0\n", "(GM, PM, wpc, wgc)\n", "(inf, 20.167955231621647, nan, 6.895465166801322)\n", "-----------------\n", "kP= 5 , kI= 5\n", "(GM, PM, wpc, wgc)\n", "(inf, 11.82769107947911, nan, 6.925816932331116)\n", "-----------------\n", "kP= 5 , kI= 10\n", "(GM, PM, wpc, wgc)\n", "(inf, 3.78117739690893, nan, 7.011454124020039)\n", "-----------------\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "cmap = plt.get_cmap(\"tab10\")\n", "\n", "LS = linestyle_generator()\n", "fig, ax = plt.subplots(2, 1, figsize=(4, 3.5)) \n", "\n", "kp = 5\n", "ki = (0, 5, 10)\n", "for i in range(3):\n", " K = tf([kp, ki[i]], [1, 0]) # PI制御\n", " H = P * K # 開ループ系\n", " gain, phase, w = bode(H, logspace(-1,2), plot=False)\n", "\n", " # ゲイン線図と位相線図\n", " pltargs = {'ls':next(LS), 'label':'$k_I$='+str(ki[i]), 'c':'k', 'lw':1}\n", " ax[0].semilogx(w, 20*np.log10(gain), **pltargs)\n", " ax[1].semilogx(w, phase*180/np.pi, **pltargs)\n", "\n", " # ゲイン余裕,位相余裕,位相交差周波数,ゲイン交差周波数\n", " gm, pm, Wpc, Wgc = margin(H)\n", " ax[0].scatter(Wgc,0, c='k', alpha=0.5)\n", " #if Wpc:\n", " # ax[1].scatter(Wpc,-180, c='k')\n", "\n", " print('kP=', kp, ', kI=', ki[i])\n", " print('(GM, PM, wpc, wgc)')\n", " print(margin(H))\n", " print('-----------------')\n", " \n", "bodeplot_set(ax, 3)\n", "\n", "ax[0].set_ylim(-60,50)\n", "ax[0].set_yticks([-50,0,50])\n", "ax[1].set_ylim(-210,10)\n", "ax[1].set_yticks([-180,-90,0])\n", "fig.tight_layout()\n", "#fig.savefig(\"loop_picont_bode.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "LS = linestyle_generator()\n", "fig, ax = plt.subplots(figsize=(3, 2.3))\n", "\n", "for i in range(3):\n", " K = tf([kp, ki[i]], [1, 0]) # PI制御\n", " Gyr = feedback(P*K, 1) # 閉ループ系\n", " y, t = step(Gyr, np.arange(0, 5, 0.01))\n", " \n", " pltargs = {'ls':next(LS), 'label':'$k_I$='+str(ki[i]), 'c':'k', 'lw':1} \n", " ax.plot(t, y, **pltargs)\n", "\n", "ax.axhline(1, color=\"k\", linewidth=0.5)\n", "ax.set_xlim(0,5)\n", "# ax.set_ylim(0,50)\n", "plot_set(ax, '$t$', '$y$', 3)\n", "\n", "#fig.savefig(\"loop_picont.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 例12.2" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "kP= 5 , kD= 0\n", "(GM, PM, wpc, wgc)\n", "(inf, 20.167955231621647, nan, 6.895465166801322)\n", "-----------------\n", "kP= 5 , kD= 0.2\n", "(GM, PM, wpc, wgc)\n", "(inf, 35.375402123035826, nan, 7.007574615624287)\n", "-----------------\n", "kP= 5 , kD= 0.5\n", "(GM, PM, wpc, wgc)\n", "(inf, 54.89410025599193, nan, 7.609510738510982)\n", "-----------------\n" ] }, { "data": { "image/png": "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eXl5jf0EkzmNS/rzgX7A9UAb4NUI+wsJdSukboVq0p0u/yQkJDB27FhWr17NN998Q3x8PJdeeilXXHEFb775JpMmTSI3N5fHH3+ciooK4uPjee+99xgxYgQvvPACu3btqvYKgf9Y4+Pj6dWrF40aNSI9Pd37qHvIkCGcd955fP/999x55500atSIc889l3/+858A/Pzzz9hstqD9Rssnka5jOQt3jpRuQCXubP0vR9inblRgUYGlJl1t8E/btm35xz/+waOPPsry5ct54403uO+++xg1ahQ333wz06ZNw2g08pe//AWz2cyqVauYPXs2y5YtIy4ujpUrV9K1a1f69OkT8HGw7/HOOecczjnnHMCdWyUlJYUdO3Z46/zjH/9g6tSpNGrUiBkzZpCVleWdv0lNTT19cyx+vAs0BhbhXnW7MOIRKRRnKCaTiWHDhvHJJ5+we/duzj77bMaPH0+/fv145plnABgzZgxz584lOzubrKwsrFYrGzdu5MorryQ9PZ21a9dSUVHBjz/+qGuBqMVi4bzzzuOCC9zPVV555RV69epFamoql1xyCQcOHGD69Om0aNGCdu3acdNNN3HixAmKiooiMzbceyjPB+gYaR/hfh588EEZC/zvS6PVRqtOoDI9Oi05HDv0oPyjTSj9ulwuuWLFCjlu3DhZv359OXr0aLls2TLpcDiq1SsrK5PZ2dmysLBQ/vrrr7J9+/YyNTVVXnbZZfKzzz6TUkppt9trHEcwfzgcDrl792751ltvycrKSvn5559HNMcS1q2QEOJJoBR4AZgshBgGOIG3pJSPRxbq9KPSJqi0CTXpart/hBD07duXSy+9lKKiIj788EMeeeQRJk2axIQJE7jxxhvJzMzE6XSSmZkJQP369dm7dy/Hjx/n66+/pn79+tjtdpo1a0ZWVhYXXHABw4cPp1evXjWOzSMbjUY6duxIixYtMJlM3veewiXcW6ESKeUTUsoSYC3u1AkX4w4upwy1QE4tkKtJVxf846lfv359br31VrZs2cKyZcsoKSmhd+/eXHLJJSxYsMCblNtDs2bNGD16NB07dsRisXD06FGefvppmjZtyoEDB7Db7Vx22WWMHj2ap556io0bN56yBXLhBhbf9SofSSl/k1L+BhyJfEgKhaJLly7Mnj2bw4cPc+utt7Jw4UIyMjKYPHky33//fcA2iYmJ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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "LS = linestyle_generator()\n", "fig, ax = plt.subplots(2, 1, figsize=(4, 3.5)) \n", "\n", "kp = 5\n", "kd = (0, 0.2, 0.5)\n", "for i in range(3):\n", " K = tf([kd[i], kp], [0,1]) # PD制御\n", " H = P * K # 開ループ系\n", " gain, phase, w = bode(H, logspace(-1,2), plot=False)\n", "\n", " # ゲイン線図と位相線図\n", " pltargs = {'ls':next(LS), 'label':'$k_D$='+str(kd[i]), 'c':'k', 'lw':1}\n", " ax[0].semilogx(w, 20*np.log10(gain), **pltargs)\n", " ax[1].semilogx(w, phase*180/np.pi, **pltargs)\n", "\n", " # ゲイン余裕,位相余裕,位相交差周波数,ゲイン交差周波数\n", " gm, pm, wpc, wgc = margin(H)\n", " ax[0].scatter(wgc,0, alpha=0.5, c='k')\n", " #if wpc:\n", " # ax[1].scatter(wpc,-180)\n", "\n", " print('kP=', kp, ',', 'kD=', kd[i])\n", " print('(GM, PM, wpc, wgc)')\n", " print(margin(H))\n", " print('-----------------')\n", " \n", "bodeplot_set(ax, 3)\n", "\n", "ax[0].set_ylim(-60,50)\n", "ax[0].set_yticks([-50,0,50])\n", "ax[1].set_ylim(-210,10)\n", "ax[1].set_yticks([-180,-90,0])\n", "ax[1].legend(loc=3)\n", "\n", "fig.tight_layout()\n", "#fig.savefig(\"loop_pdcont_bode.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "LS = linestyle_generator()\n", "fig, ax = plt.subplots(figsize=(3, 2.3))\n", "\n", "for i in range(3):\n", " K = tf([kd[i], kp], [0, 1]) # PD制御\n", " Gyr = feedback(P*K, 1) # 閉ループ系\n", " y, t = step(Gyr, np.arange(0, 5, 0.01))\n", " \n", " pltargs = {'ls':next(LS), 'label':'$k_D$='+str(kd[i]), 'c':'k', 'lw':1} \n", " ax.plot(t, y, **pltargs)\n", "\n", "ax.axhline(1, color=\"k\", linewidth=0.5)\n", "ax.set_xlim(0,5)\n", "# ax.set_ylim(0,50)\n", "plot_set(ax, '$t$', '$y$', 'best')\n", "\n", "#fig.savefig(\"loop_pdcont.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### PID制御" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "kP= 5 , kI= 10 , kD= 0.5\n", "(GM, PM, wpc, wgc)\n", "(inf, 42.71914588330711, nan, 7.1572968579798095)\n", "-----------------\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWkAAADyCAYAAACPrTR6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAABefklEQVR4nO2dd3xUxfbAv7PJpncSIAUhdEioQToBy9MH6iM2FAF5ICqIFTsqCCqKPgs+xaeiz47yFPSnD5GiKKKAAoEA0nsgkN77zu+PZPdtlmy5W5INzvfz2Q93zpmZnXPucHJ37r1zhJQShUKhUHgnuuYegEKhUCiso4K0QqFQeDEqSCsUCoUXo4K0QqFQeDEqSCsUCoUXo4K0QqFQeDEqSCsUCoUX49vcAzBHCNEG+BXwA1YAC4E7gKNAoZTys+YbnUKhUDQ9XhWkgVuBXlLKUgAhxFfALCnlISHEV0KIn6SUp5t3iAqFQtF0eM1yhxAiEBgFHBJCPCeE8AcuklIeqq9yALisucanUCgUzYHXXElLKcuBS4UQ4cAHwP1AsVmVCiDOvE1SUpLcs2ePqTx06FBGjRqFwWCgtrYWAL1ej5SSmpoaUxmguroaAF9fX4QQprKPjw9VVVX4+PiYykZZY2WdToevry/FxcX4+/ubytXV1UgpEUKg1+upqamhrKyMwMBAU9lgMABQW1uLn5+faczG49LSUgICAtDr9SabKioqCA0NNdlkLBttqqioICQkBCEExcXFBAQE4OPjg06na2CjIzYZbbAsV1VVERISYrLB3EajTUYbjGMOCwszlY3nwfw81dbW4u/v3+h5MrfJ3nkqKioy2ezj49PgvFRXV+Pr62uyybxsaYM9mxor6/V6ysrKTGN3dO45cp4qKioIDg52eO6Vl5efM9cqKysJDQ09p9zYeXruuefekVJOQ9HseE2QNiKlLBRC3A68C/ibqUKBI+Z109LS2L17t9vHYJzg7m5jrY4WuaXMVtkZOxxBa7+u+MaWTqt/7PnOHTT13LGmc3XuPPfccyc1GaHwGF6z3AEghBD1h62pu3G4UQjRoV7WFfjOvL7xCsfdGK983N3GWh0tckuZrbIzdjiC1n5d8Y0tnVb/2POdO2jquWNN5+rcUXgPXhOkhRB/AdKFEHOpu3n4NnAvcEf9lfWHUsoGf92NPzPdTWVlpUfaWKujRW4ps1V2xg5H0NqvK76xpdPqH3u+cwdNPXes6VydOwrvwWuWO6SUa4A+FrIjwEPNMyKFQqFofrzmStoZjDdi3E1wcLBH2liro0VuKbNVdsYOR9Daryu+saXT6h97vnMHTT13rOlcnTsK78FrrqSdYe3atXz++ef069eP/v37069fP/r160d0dLRL/Tqz1u1IG2t1tMgtZbbKnlqz19qvK76xpdPqH3u+cwdNPXes6VydOwrvoUVfSWdnZzNy5Ehat27N3r17eeaZZ+jcuTNXX301AP/3f//HkSNHkFKiJQNNeXm55rE40sZaHS1yS5mtsjN2OILWfl3xjS2dVv/Y8507aOq5Y03n6txReA8t+kq6d+/etG3blu3bt7N9+3ZKS0vp27cvsbGxfPjhh+zfv58OHTpw8OBBhgwZYrrSNn66dOlies5WoVAovJEWHaSTkpKYP3++qXz27FnS09PZvn07//3vf9m2bRsvvfQSycnJjB49mvDwcIqKivjss8947LHHyM7OJj09HR8fH3bs2MHYsWORUhIUFKR5LI60sVZHi9xSZqvsjB2OoLVfV3xjS6fVP/Z85w6aeu5Y07k6dxTeQ4sO0pa0bt2ayy67jMsu+9/b48XFxezYsYPt27ezbds2tm/fzr59++jUqRNjxoxhxYoVREVFUVhYCMAVV1xBZmYm/fv3N61z9+nTx/RWn0JxvlFRUUFGRgabN29m9+7dpKenN/eQFGa06DVp4+uztggNDWX48OHcdddd/Pvf/yY9PZ2CggI++OADLr/8co4dO8a7777LnDlzSExMRK/X06dPHwIDA9m8eTOzZs2ibdu2PPHEEwC89957FBQUnLPGXVZWZncs1upokVvKbJUdGZMzaO3XFd/Y0mn1jz3fuQNn+vSEf6zJjK+UL1u2jPT0dE6cOEFkZCTTpk3j559/pnv37ixcuFDD6BWe5ry6knYUf39/05WyEYPBwMGDB9m+fTsbN25k//79bN++HYPBwODBgyksLOSTTz7h119/JS0tjeXLl3P33XfTr18/+vbtS6dOnRg5ciSJiYn878VJhaJ5kFKSmZlpWv7bvn07W7dupUOHDqxfv960b0pCQgL5+fkEBASQk5Pj8pNRCvfTooO0r6/7hq/T6ejatStdu3blyiuvJDg4GCklp0+fZvv27aSnp7NixQq2b99OQkICSUlJjBo1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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "LS = linestyle_generator()\n", "fig, ax = plt.subplots(2, 1, figsize=(5.2, 3.5)) \n", "\n", "kp = 5\n", "ki = 10\n", "kd = 0.5\n", "\n", "K = tf([kd, kp, ki], [1,0]) # PID制御\n", "H = P * K # 開ループ系\n", "\n", "gain, phase, w = bode(H, logspace(-1,2), plot=False)\n", "pltargs = {'ls':next(LS), 'label':'$\\mathcal{H}=\\mathcal{PK}$', 'c':'k', 'lw':1}\n", "ax[0].semilogx(w, 20*np.log10(gain), **pltargs)\n", "ax[1].semilogx(w, phase*180/np.pi, **pltargs)\n", "\n", "gain, phase, w = bode(P, logspace(-1,2), plot=False)\n", "pltargs = {'ls':next(LS), 'label':'$\\mathcal{P}$', 'c':'k', 'lw':1}\n", "ax[0].semilogx(w, 20*np.log10(gain), **pltargs)\n", "ax[1].semilogx(w, phase*180/np.pi, **pltargs)\n", " \n", "gain, phase, w = bode(K, logspace(-1,2), plot=False)\n", "pltargs = {'ls':next(LS), 'label':'$\\mathcal{K}$', 'c':'k', 'lw':1}\n", "ax[0].semilogx(w, 20*np.log10(gain), **pltargs)\n", "ax[1].semilogx(w, phase*180/np.pi, **pltargs)\n", "\n", "# ゲイン余裕,位相余裕,位相交差周波数,ゲイン交差周波数\n", "gm, pm, wpc, wgc = margin(H)\n", "ax[0].scatter(wgc,0, alpha=0.5, c='k')\n", "\n", "print('kP=', kp, ', kI=', ki, ', kD=', kd)\n", "print('(GM, PM, wpc, wgc)')\n", "print(margin(H))\n", "print('-----------------')\n", " \n", "bodeplot_set(ax, 3)\n", "\n", "ax[0].set_ylim(-60,50)\n", "ax[0].set_yticks([-50,0,50])\n", "ax[1].set_ylim(-210,120)\n", "ax[1].set_yticks([-180,-90,0,90])\n", "ax[1].legend(loc=2)\n", "plt.legend(bbox_to_anchor=(1.05, 1.0), loc=2)\n", "\n", "fig.tight_layout()\n", "#fig.savefig(\"loop_pidcont_bode.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 位相遅れ・進み補償" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 位相遅れ" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "omegam= 3.162277660168379\n", "phim= -54.903198772415415\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "alpha = 10\n", "T1 = 0.1\n", "K1 = tf([alpha*T1, alpha], [alpha*T1, 1])\n", "\n", "fig, ax = plt.subplots(2, 1, figsize=(4, 3.5)) \n", "\n", "gain, phase, w = bode(K1, logspace(-2,3), plot=False)\n", " \n", "ax[0].semilogx(w, 20*np.log10(gain), color='k', lw=1)\n", "ax[1].semilogx(w, phase*180/np.pi, color='k', lw=1)\n", "\n", "bodeplot_set(ax)\n", "ax[0].set_ylim(-1, 25)\n", "ax[1].set_ylim(-65, 0)\n", "ax[1].set_yticks([0, -20, -40, -60])\n", "\n", "omegam = 1/T1/np.sqrt(alpha)\n", "phim = np.arcsin( (1-alpha)/(1+alpha) ) * 180/np.pi\n", "print('omegam=', omegam)\n", "print('phim=', phim)\n", "\n", "fig.tight_layout()\n", "#fig.savefig(\"lag_bode.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "omegam= 0.03162277660168379\n", "phim= -89.63763088074153\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "alpha = 100000\n", "T1 = 0.1\n", "K1 = tf([alpha*T1, alpha], [alpha*T1, 1])\n", "\n", "fig, ax = plt.subplots(2, 1, figsize=(4, 3.5)) \n", "\n", "gain, phase, w = bode(K1, logspace(-2,3), plot=False)\n", " \n", "ax[0].semilogx(w, 20*np.log10(gain), color='k', lw=1)\n", "ax[1].semilogx(w, phase*180/np.pi, color='k', lw=1)\n", "\n", "bodeplot_set(ax)\n", "omegam = 1/T1/np.sqrt(alpha)\n", "phim = np.arcsin( (1-alpha)/(1+alpha) ) * 180/np.pi\n", "print('omegam=', omegam)\n", "print('phim=', phim)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 位相進み" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "omegam= 3.162277660168379\n", "phim= 54.9031987724154\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "beta = 0.1\n", "T2 = 1\n", "K2 = tf([T2, 1],[beta*T2, 1])\n", "\n", "fig, ax = plt.subplots(2, 1, figsize=(4, 3.5)) \n", "\n", "gain, phase, w = bode(K2, logspace(-2,3), plot=False)\n", " \n", "ax[0].semilogx(w, 20*np.log10(gain), color='k', lw=1)\n", "ax[1].semilogx(w, phase*180/np.pi, color='k', lw=1)\n", "\n", "bodeplot_set(ax)\n", "\n", "omegam = 1/T2/np.sqrt(beta)\n", "phim = np.arcsin( (1-beta)/(1+beta) ) * 180/np.pi\n", "print('omegam=', omegam)\n", "print('phim=', phim)\n", "\n", "ax[0].set_ylim(-1, 25)\n", "ax[1].set_ylim(0, 65)\n", "ax[1].set_yticks([0, 20, 40, 60])\n", "\n", "fig.tight_layout()\n", "#fig.savefig(\"lead_bode.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "omegam= 1000.0\n", "phim= 89.88540847917132\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "beta = 0.000001\n", "T2 = 1\n", "K2 = tf([T2, 1],[beta*T2, 1])\n", "\n", "fig, ax = plt.subplots(2, 1, figsize=(4, 3.5)) \n", "\n", "gain, phase, w = bode(K2, logspace(-2,3), plot=False)\n", " \n", "ax[0].semilogx(w, 20*np.log10(gain), color='k', lw=1)\n", "ax[1].semilogx(w, phase*180/np.pi, color='k', lw=1)\n", "\n", "bodeplot_set(ax)\n", "\n", "omegam = 1/T2/np.sqrt(beta)\n", "phim = np.arcsin( (1-beta)/(1+beta) ) * 180/np.pi\n", "print('omegam=', omegam)\n", "print('phim=', phim)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 例12.3: 位相遅れ補償" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "P = tf(8,[1,2,0])" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(2, 1, figsize=(4, 3.5)) \n", "\n", "gain, phase, w = bode(P, logspace(-1,2), plot=False)\n", " \n", "ax[0].semilogx(w, 20*np.log10(gain), color='k')\n", "ax[1].semilogx(w, phase*180/np.pi, color='k')\n", "\n", "bodeplot_set(ax)\n", "\n", "fig.tight_layout()\n", "#fig.savefig(\"loop_leadlag_plant.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(GM, PM, wpc, wgc)\n", "(inf, 38.66828249253447, nan, 2.499242135375306)\n", "-----------------\n" ] } ], "source": [ "print('(GM, PM, wpc, wgc)')\n", "print(margin(P))\n", "print('-----------------')" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.4992421353753063" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.sqrt(-2+2*np.sqrt(17))" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/minami/opt/anaconda3/lib/python3.8/site-packages/control/timeresp.py:293: UserWarning: return_x specified for a transfer function system. Internal conversion to state space used; results may meaningless.\n", " warnings.warn(\n", "/Users/minami/opt/anaconda3/lib/python3.8/site-packages/control/timeresp.py:293: UserWarning: return_x specified for a transfer function system. Internal conversion to state space used; results may meaningless.\n", " warnings.warn(\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(3, 2.3))\n", "Gyr = feedback(P, 1) # 閉ループ系\n", "Td = np.arange(0, 5, 0.01)\n", "Ud = Td\n", "y, t, _ = lsim(Gyr, Td, Ud)\n", "ax.plot(t, y, label='$\\mathcal{P}$', lw=1, c='k', ls='--')\n", "\n", "K = tf([20, 10], [20, 1])\n", "Gyr = feedback(P*K, 1) # 閉ループ系\n", "y, t, _ = lsim(Gyr, Td, Ud)\n", "ax.plot(t, y, label='$\\mathcal{P}\\,\\mathcal{K}_1$', lw=1, c='k', ls='-')\n", "\n", "ax.plot(t, Ud, color=\"k\", linewidth=0.5)\n", "ax.set_xlim(0,5)\n", "ax.set_ylim(0,5)\n", "plot_set(ax, '$t$', '$y$', 'best')\n", "\n", "# fig.savefig(\"ex_loop_lag_lamp.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(GM, PM, wpc, wgc)\n", "(inf, 28.288172725122337, nan, 2.528833057669984)\n", "-----------------\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "LS = linestyle_generator()\n", "fig, ax = plt.subplots(2, 1, figsize=(5.2, 3.5)) \n", "\n", "H = P*K\n", "\n", "gain, phase, w = bode(H, logspace(-2,2), plot=False)\n", "pltargs = {'ls':next(LS), 'label':'$\\mathcal{L}=\\mathcal{P}\\,\\mathcal{K}_1$', 'c':'k', 'lw':1}\n", "ax[0].semilogx(w, 20*np.log10(gain), **pltargs)\n", "ax[1].semilogx(w, phase*180/np.pi, **pltargs)\n", "\n", "gain, phase, w = bode(P, logspace(-2,2), plot=False)\n", "pltargs = {'ls':next(LS), 'label':'$\\mathcal{P}$', 'c':'k', 'lw':1}\n", "ax[0].semilogx(w, 20*np.log10(gain), **pltargs)\n", "ax[1].semilogx(w, phase*180/np.pi, **pltargs)\n", " \n", "gain, phase, w = bode(K, logspace(-2,2), plot=False)\n", "pltargs = {'ls':next(LS), 'label':'$\\mathcal{K}_1$', 'c':'k', 'lw':1}\n", "ax[0].semilogx(w, 20*np.log10(gain), **pltargs)\n", "ax[1].semilogx(w, phase*180/np.pi, **pltargs)\n", "\n", "# ゲイン余裕,位相余裕,位相交差周波数,ゲイン交差周波数\n", "gm, pm, wpc, wgc = margin(H)\n", "ax[0].scatter(wgc,0, alpha=0.5, c='k')\n", "\n", "print('(GM, PM, wpc, wgc)')\n", "print(margin(H))\n", "print('-----------------')\n", " \n", "bodeplot_set(ax, 3)\n", "\n", "ax[0].set_ylim(-60,90)\n", "ax[0].set_yticks([-50,0,50])\n", "ax[1].set_ylim(-210,120)\n", "ax[1].set_yticks([-180,-90,0,90])\n", "ax[1].legend(loc=2)\n", "plt.legend(bbox_to_anchor=(1.05, 1.0), loc=2)\n", "\n", "fig.tight_layout()\n", "#fig.savefig(\"ex_loop_lag_bode.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$$\\frac{20 s + 10}{20 s + 1}$$" ], "text/plain": [ "TransferFunction(array([20, 10]), array([20, 1]))" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "K" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 例12.4: 位相進み補償" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.3333333333333333" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "phim = 30*np.pi/180\n", "beta = (1-np.sin(phim))/(1+np.sin(phim))\n", "beta" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3.4641016151377544" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "omegam = np.sqrt(-2+np.sqrt(4+64/beta))\n", "omegam" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5000000000000001" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "T2 = 1/omegam/np.sqrt(beta)\n", "T2" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(GM, PM, wpc, wgc)\n", "(inf, 60.0, nan, 3.464101615137757)\n", "-----------------\n" ] }, { "data": { "image/png": "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+/fHYrGQn59/3qcovWMkhCAjI4OpU6fy3XffcfToUW6//XZ++eUXevXqRefOnXn++edZt24dFRUVAT1GenPRicVisQTWak0XiZr/N6dzt3WtgvcOUEL13RyTPJiXR7Cur+Eueue0ncVp+R19rtpattF5dj39XcV4SpMznfVl5MiRLFiwgDNnzvDaa68RFBTECy+8QEpKCrfeeisffvghZrO5XmNk74+NjeXGG2/kzTff5OTJk7z99tsEBQUxefJkGjVqxE033cQ777zDsWPHAm6M9Oaik53Z2dmxqlDXD4vFIrKzs2OBnc5i6vricIuUchqAEOIBq1MIESOlLPRMmu5j9EuP0tJSXVcSzuK0/I4+V20tW29O9c1Vb4ynNDnT6Q7W/tZpkdmzZzNhwgS++uorli9fzo033siyZcvYvn07Q4cOpV+/fnU+tzMNffv2JT09nblz53Lq1CkWL17MN998w7Rp00hISGDYsGH07t2bUaNGERvr3s8FfGWM9Oaih8rKygmnTp1659SpU53QvwSyovoKemdlZeUEZwF1FenYmqVEAWLs7KuBC7LGs0Khh7S0NO69917uvfdeoPrWvwMHDjBr1ix+/vlntm/fTmRkJD/88APDhw93axGhlJQUbrrpJh588EEsFgvfffcdW7du5d133+W+++6jffv2DBw4kIEDBzJgwAASExM9LdNv6Nmz5xlglLfzCEiklE4fwBHgO43HYVf9LtZj+vTp0gjFxcWG4rT8jj5XbS1bb07O0NPfVYynNDnT6Q711VRcXCyrqqrkTz/9JPv37y+joqJkp06d5Pr162V5ebn89ddfZX5+fp0anNnFxcWyrKxMrl+/Xv7lL3+Rw4YNkzExMbJdu3Zy/Pjx8p///KfcunWrLC8v94gePceMvu6AGdIH3tPqcf6jrivp66SU2xydQoiunv1ToVB4Duvypr179+brr78mJCSEHTt2kJaWxvHjx7nuuus4ceIEnTp1YvLkydx0001s376djIyMWuuYuCIsLIz+/fvTv39/pk+fTmVlJbt27WLTpk389NNPvPHGGxw8eJCMjAy6detGt27d6NKlCx06dFA/IFHUC5dFWqtA1/h3XJh06ofR/dlKSkp07ZbsLE7L7+hz1day9eZU31z1xnhKkzOd7mBEU0lJCQ0bNuSSSy4Bqtch2b9/P5mZmRw7doyE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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "LS = linestyle_generator()\n", "fig, ax = plt.subplots(2, 1, figsize=(5.2, 3.5)) \n", "\n", "K2 = tf([T2, 1],[beta*T2, 1])\n", "H = P*K2\n", "\n", "gain, phase, w = bode(H, logspace(-2,2), plot=False)\n", "pltargs = {'ls':next(LS), 'label':'$\\mathcal{L}=\\mathcal{P}\\,\\mathcal{K}_2$', 'c':'k', 'lw':1}\n", "ax[0].semilogx(w, 20*np.log10(gain), **pltargs)\n", "ax[1].semilogx(w, phase*180/np.pi, **pltargs)\n", "\n", "gain, phase, w = bode(P, logspace(-2,2), plot=False)\n", "pltargs = {'ls':next(LS), 'label':'$\\mathcal{P}$', 'c':'k', 'lw':1}\n", "ax[0].semilogx(w, 20*np.log10(gain), **pltargs)\n", "ax[1].semilogx(w, phase*180/np.pi, **pltargs)\n", " \n", "gain, phase, w = bode(K2, logspace(-2,2), plot=False)\n", "pltargs = {'ls':next(LS), 'label':'$\\mathcal{K}_2$', 'c':'k', 'lw':1}\n", "ax[0].semilogx(w, 20*np.log10(gain), **pltargs)\n", "ax[1].semilogx(w, phase*180/np.pi+360, **pltargs)\n", "\n", "# ゲイン余裕,位相余裕,位相交差周波数,ゲイン交差周波数\n", "gm, pm, wpc, wgc = margin(H)\n", "ax[0].scatter(wgc,0, alpha=0.5, c='k')\n", "\n", "print('(GM, PM, wpc, wgc)')\n", "print(margin(H))\n", "print('-----------------')\n", " \n", "bodeplot_set(ax, 3)\n", "\n", "ax[0].set_ylim(-60,90)\n", "ax[0].set_yticks([-50,0,50])\n", "ax[1].set_ylim(-210,120)\n", "ax[1].set_yticks([-180,-90,0,90])\n", "ax[1].legend(loc=2)\n", "plt.legend(bbox_to_anchor=(1.05, 1.0), loc=2)\n", "\n", "fig.tight_layout()\n", "#fig.savefig(\"ex_loop_lead_bode.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$$\\frac{0.5 s + 1}{0.1667 s + 1}$$" ], "text/plain": [ "TransferFunction(array([0.5, 1. ]), array([0.16666667, 1. ]))" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "K2" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5000000000000001" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "T2" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(inf, 60.0, nan, 3.464101615137757)" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "margin(H)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 章末問題" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 章末問題7" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$$\\frac{10}{s^2 + 11 s + 10}$$" ], "text/plain": [ "TransferFunction(array([10]), array([ 1, 11, 10]))" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "P = tf([0, 10], [1, 11, 10]) # 伝達関数の記述 10/(s+1)(s+10) = 10/(s^2 + 11s + 10)\n", "P" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "制御対象のボード線図" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-----------------\n", "(GM, PM, wpc, wgc)\n", "(inf, inf, nan, nan)\n", "-----------------\n", "2 states have been removed from the model\n", "\n", " 10\n", "---------------\n", "s^2 + 11 s + 20\n", "\n", "error= 0.5\n" ] }, { "data": { "image/png": "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G+FwmMbGxsyxiUQiNDY2EovF6NGjB36/n+3btxMIBPD7/Rn3lpYWotFohzZVVlYSDAZpamqivb0dn89HOBympaWFRCKR2a6traWiosK0TelOPr0diURIJBLU1dURCARM29TS0kJ7e/subYrFYvTs2ZNEIkFbW1uHNjU0NADg9/sJBAI0NDSglMq83uk2pF8nqza1trbSp0+fDq9TRUVFhzYY21RRUUFlZWWHNjU1NaGUIhaL0adPnw5tCoVC+Hy+zOsUCASorKzMbPv9/l1eJ7M2pc+17Nepubk5c661tLTscu41NDQQDAaJRqPU1tbi8/mIxWL069eP+vp6RIQBAwYsVEotyOe9W+qfWGyXIbjsssu48cYbLSsrpTInSfpNun37dvx+Py0tLbS0tBCLxTIvRFNTEzt37qStrY2GhgYaGhrYsmULO3bsoLm5mZqaGmpra6mpqWH79u3U1dXRs2dP+vbty8CBAxk0aBD9+vVj6NCh9OnTh+HDhzNs2DD69OnDoEGDqKiooEePHkCyE8wmEAh02E7n6+vrCYVCyQOQqpumvb29QyzdwaTrpOtlb9fX12fq9OzZM1Our6+nd+/emXx628zJaru1tbWDT3absvdrJDue3aa2trYOfsY21NfX06dPnw7PnctxDQaDlm0yyxvbYLed/ptIJDKu4XC4Q5vSpF8nq+3s18msTdFotEM+GAzuckyM557P58tsh0KhjGMwGNzldcyHUu9YngUuTpV3WYagra3NtrKIZC6L0m+6iooK+vfvb1mnurp6l7xVrE+fPtTU1PDRRx+RSCT48ssv+eijj6ivr+e9997jueeeY/Pmzfzf//0fvXr1Ys8992Tfffdl5MiRfOtb32LkyJGMGDECv99v6ZP+3ziXnDGeve1UNv7Nhd3F1Spv52rmVQ6uXjkaKemORSn1joiklyH4OiW0ZAIkO6l+/fqhlMp0POlOKLsz+uqrr2hra+Odd95h69atvP/++zz00EO8//77fPbZZ4wePZrx48czYcIEJk6cyPjx46msLOmXRqOxpeTPXqXUrVa5qqqqnJ8vEonknHeKmZWzYz169CAUCtG7d+9dPuY2Njayfv161qxZw9tvv83dd9/N5s2bmTx5MjNmzOCggw5i+vTppm21aosx7uRq5u10nNzst1xdrfJ2rlY+pe7qlaORku9Y7Mhn4Dk9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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(2, 1, figsize=(4, 3.5)) \n", "\n", "gain, phase, w = bode(P, logspace(-2,3), plot=False) # 制御対象Pのボード線図の描画\n", " \n", "ax[0].semilogx(w, 20*np.log10(gain), lw=1, c='k')\n", "ax[1].semilogx(w, phase*180/np.pi, lw=1, c='k')\n", "\n", "bodeplot_set(ax)\n", "fig.tight_layout()\n", "\n", "print('-----------------')\n", "print('(GM, PM, wpc, wgc)')\n", "print(margin(P)) # ゲイン余裕,位相余裕,位相交差周波数,ゲイン交差周波数\n", "\n", "print('-----------------')\n", "Gyr = P/(1+P)\n", "print(minreal(Gyr))\n", "print('error=', 1-Gyr.dcgain()) # 定常偏差" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "低周波ゲインが0[dB] なので,このままフィードバック系を構築しても定常偏差(=0.5)が残る." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1.定常偏差を小さくするために,位相遅れ補償を設計する\n", "\n", "低周波ゲインを上げるために,$\\alpha=20$とする.そして,ゲインを上げる周波数は,$T_1$で決めるが,最終的なゲイン交差周波数(ゲイン交差周波数の設計値)の10分の1程度を$1/T_1$にするために,$T_1=0.5$とする($1/T_1=20/10=2$)." ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "K1= \n", "10 s + 20\n", "---------\n", "10 s + 1\n", "\n", "-----------------------\n", "phase at 20rad/s = -155.99666022403284\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "alpha = 20\n", "T1 = 0.5\n", "K1 = tf([alpha*T1, alpha], [alpha*T1, 1]) # 位相遅れ補償\n", "print('K1=', K1)\n", "\n", "fig, ax = plt.subplots(2, 1, figsize=(4,3.5)) \n", "H1 = P*K1\n", "gain, phase, w = bode(H1, logspace(-2,3), plot=False) # 開ループ系のボード線図\n", "ax[0].semilogx(w, 20*np.log10(gain), lw=1, c='k')\n", "ax[1].semilogx(w, phase*180/np.pi, lw=1, c='k')\n", "bodeplot_set(ax)\n", "fig.tight_layout()\n", "\n", "[mag], [phase], omega = freqresp(H1, [20]) # 20[rad/s]におけるゲインと位相\n", "phaseH1at20 = phase * (180/np.pi)\n", "print('-----------------------')\n", "print('phase at 20rad/s =', phaseH1at20)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "最終的にゲイン補償によって,ゲイン交差周波数を設計値の20[rad/s]まで上げるが,あげてしまうと,位相余裕が60[dB]を下回る.実際,20[rad/s]における位相は -155[deg]なので,位相余裕は 25[deg]程度になってしまう.したがって,20[rad/s]での位相を -120[deg] まで進ませておく." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "2. 位相進み補償の設計\n", "\n", "20[rad/s]において位相を進ませる量は 60 - (180-155) = 35[deg]程度とする." ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "K2= \n", "0.09812 s + 1\n", "-------------\n", "0.02548 s + 1\n", "\n", "-----------------------\n", "gain at 20rad/s = -27.121982029204407\n", "phase at 20rad/s = -119.99999999999999\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAARYAAADyCAYAAACI7+pvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAA73ElEQVR4nO2dd5xU1dn4v89smW0w9LYoiBQNXYiASBELGFEkVnxVJGCUiIqvgQRRccXIKxCDGk00avRnCbElaBQkGgRCURRpCkFRkCLCUnbZNsvunt8fU7J7uWXK3d0Z9nw/n/lw7vPMmfneO7MPc8/cOUeUUmg0Go2beOpbQKPRnHzowqLRaFxHFxaNRuM6urBoNBrX0YVFo9G4ji4sGo3GdVLrWyAerr/+etW5c+eo+pSUlJCVlRVV3ilm1naKueFrlTPGnVzNHBuyq1XeztXMKxlc7Rzz8vKeU0pNiko2hFIqaW/33HOPipaSkpKo804xs7ZTLFLs+ljljHEnVzPHhuxqlbdztfJJdFc7R+ABFePfZlJ/Ylm9ejVz585FRGrcPB5P+N/qt5SUFMrLy8nOziY1NZXU1FRSUlJIS0sL3yoqKmjSpAkZGRlkZmaSkZFBZWUlrVu3Jjs7GxEBoKKiIuxh1naKRYpdH6ucMe7kaubYkF2t8nauVj6J7uqWo5GkLizFxcUcPHjQtGJWVVWFb0opKisrqaqqori4mLS0NCorK6moqKCiooLjx4+Hb8XFxSilKCsro7S0lLKyMkpKSigpKaGsrIzs7GwaNWpEdnY2LVu2pHnz5mRnZ9OuXTvatGlDo0aN6NatG5mZmfTs2ZPs7Gz8fj+NGjUK/xsNdn2scsZ49W2ntna1ztu5mnklg6tbjkaSurAMHz6cuXPnRtUnPz+fFi1aRJUPxSorKykqKqKoqIidO3eilOLQoUPs3LmT8vJy9u/fz5o1a1i4cCG7d+9m3759+Hw+TjnlFLp27Urbtm3p168f3bt3p1u3bni93pj2W6NJdJK6sKSlpUXdJzs7O+p8KJaSkoLP58Pn89GsWTMyMzMBKC0tPaFdWlqK1+tl//79bN26lb1797J161befPNNZs+ezbfffkuHDh3o1asX/fr1C9+aNm0asa9Vzhivvu3UNv4bDSeLq1XeztXKJ9Fd3XI0ktSFRcXwA8qqqqqo804xs3ZVVRUej4d27drh8/nIzs6muLg4/KKVl5ezfft2Pv/8cz777DPy8vLYsGEDrVu35pxzzgnfOnbsGC5ake6LMe7kavS2e2w77Pokk6tV3s7VyifRXd1yNJLU17HEMshUWloadd4pZtZ2iqWnp9OjRw9uuOEGFixYwMqVKzl69CiLFi1iyJAhfPzxx1x11VW0b9+en/zkJ8ybN49169bV2GerfTHGnVzNHJ2OUyTPG0kuEV2t8nauVj6J7uqWo5Gk/sRyspGSkkL37t3p3r07N998MwDbtm3jiy++4KOPPmLChAns2bOHIUOGcNFFF9G/f3+aN28e/qZKo0kUkrqwxDLG4nRxklneKWbWdopFyqmnnsoZZ5zBFVdcAcCBAwdYtmwZS5cuDX/VftFFF3HxxRdz4YUX0rhx4xOex8nVzDEWV7s+VrlEdLXK27la+SS6q1uORpL6VKgh0qpVK6655hqee+45tm3bxj//+U969erFn/70J3JzcxkxYgQLFizgP//5T32rahowSV1Yjh8/HnWfkpKSqPNOMbO2UyxS7PqUlpbSrVs37rjjDpYsWcL+/fu566672L59O+effz7dunVj+vTpLFu2jMrKyqi83Xa1yhnjTn514WqVt3O18kl0V7ccjSR1YdHUJDs7m0svvZT58+eze/duXnnlFbxeL9OnT6ddu3bceuutLF++3JUrKzUaO5K6sKSmRj9EZPXVrV3eKWbWdopFil0fq1xmZiYiQv/+/Zk9ezaffPIJq1evplOnTsyZM4e2bdsyadIk1qxZEy4yRse6dLXajvQYu+1qlbdztfJJdFe3HI0kdWGJ5dsQj8d+l83yTjGztlMsUuz6WOWMcY/Hw+mnn8706dNZuXIl69at48wzzyQvL4/c3FymTJnC2rVrw9fe1LdrpO3acrXK27la+SS6q1uOJzx/3I9Qj8QyxlJcXBx13ilm1naKRYpdH6ucMW506dixI3fffTdLlixh1apVtGnThttuu43TTjuNe+65h23btiWMq127to6rVd7O1con0V3dcjSS1IVFEz+dO3fm3nvvZeXKlSxatAi/3895553HhRdeyOOPP05+fn59K2qSkJgKi4ic6nRzS1BEbhORm0Vklog0qZ5LSUmJ+vGcfvhnlneKmbWdYpFi18cqZ4w7uQJkZGTQp08fHnnkEfbs2cOsWbNYt24dnTt3ZuzYsSxatIjy8vKEcDUeT7ePq1XeztXKJ9Fd3XI0EusFcn8FtgJWgxzdgHNifOwwInIWMEApdaOInAvMAu4K5WM5F3Qa8DXLO8XM2k6xSLHrY5Uzxp1cjY4pKSmMHDmSyy+/nMLCQt544w0effRRbr75Zq677jpuuukm+vTpkxCuTs8brY9d3s7VyifRXd1yNCKx/JBPRG5TSj0Zaz6K53kQKFZKPSIiOcBmpdRpofyAAQPUJ598Er7/tGnTyMvLo6KiAr/fDwS+gq2qqgr//qGsrIxmzZqFv6vPzMzE4/GEzytLSkpo2bJleDs9PZ2ioiLS09PD216vlz179uDz+UhLS6O4uJiMjAyqqqooKiqiTZs2fP/99zRq1AiPx0NZWRlZWVkcOnSIpk2bkpWVhd/v5/jx44gIOTk5+P3+8CeCnJwcysvLKS8vp6CggHbt2pnu0/79+/H5fDWmGITA9S0tWrQw3aeCggJatmxJeno6e/fuxefzhffR6/Vy9OjRcN/QPqWmppKRkcGXX37JwoULWbhwIU2aNOHaa69l7NixtG7dmqysLPbv309OTo7pPpWXl4f3K7QPFRUVHDhwIPwjTeM+HT58mIyMjBP2qaCggFatWlFYWIjX662xT0VFRTVep6KiIpRSpKWl4fV6KSkpqfE6hbY9Hg9ZWVmUlZVRUVFBYWEh7dq1q/E6+f3+Gvtg3Ce/30/jxo1r7FN+fj6ZmZkUFBTQtm3bGvtkfO95vV5SU1NrvPeMr5PZPu3bt4/GjRuHX6eSkhKOHDkSfq+VlZWd8N7Lz8+nSZMm5OTksH//frKzsykoKCA3N5cDBw6QlZVFy5Yt85RSD8T0xxvLtHNA83jyUTzPM8DNwXYq4K+enzZt2glT8jlx8ODBqPNOMbO2UyxS7PpY5YxxJ1czR7vnraysVMuWLVPjx49XPp9PjR49Wr322mtq9+7dCecarY9d3s7VyifRXe0ciWNqypjGWJRSh0RkpIj0EpE0EXlURF4SkfahfExV7kR+AEI/XGgEHKiejGWMJfTJI5q8U8ys7RSLFLs+Vjlj3MnVzNHueT0eD8OHD+eFF15gz549XHXVVTz99NP06tWLW265hZUrV57w0/v6crXCjfeB1XYyubrlaCTWwds5wBPAEuBZYCBwDHgqbqOavAX0CbZ7Am9XT+rCUv9/rDk5Odx444188MEHfPzxx3Ts2JHJkydz2mmnMWPGDDZv3pwwrnbPG0leF5bIifXr5mYEBmh/BJwJDFVK/QLYELdRNZRSnwNfisgk4ALg3up5p28pzAidg0eTd4qZtZ1ikWLXxypnjDu5mjnG4tq0adNwMXnnnXeoqqriJz/5CT179iQvL4+vvvoqYVzdeB9YbSeTq1uORmId/l0TPAc7KiJ/VkqFfnzyXdxGBpRS89x+TE3tIiL06tWLXr16MWfOHFatWsULL7zAkCFDyM3N5ZprruHKK6+kU6dO9a2qqSVi/cTSW0SGishQoHO1dn8X3RzRp0KJf3rh8XgYMmQIv/vd79i7dy/z5s1jx44dDBo0iL59+/LYY4+xbdu2hHB1yutTociJ9RPLFfx37APgrOC/p8dlEyX6ArnkuejM6/WSkpLCiBEjGDFiBE899RT//ve/+etf/8r555+Pz+dj7NixXHLJJQwaNAgR0RfI1YGrW45GYv3EMlYpdZ7xBlwet1EU6DGWxBpjicY1JSWFYcOGMXv2bHbv3s3zzz9PRUUFN9xwAx06dOCOO+7gvffeC/8eLJnGLZLJ1S1HI1EXFhEZAmSHTn+q3YYTGGBNaJTDBYFmeaeYWdspFil2faxyxriTq5ljXbp6PB4GDhzII488wtq1a1m8eDGtWrXiwQcfpE2bNtxwww0sWrSIY8eO1YmrVd7uuFr5JLqrW45GYjkVmgkcBvzAYALfBIV+DtkWiG4FsTiI5ZJ+p3lyzfJOMbO2UyxS7PpY5YxxJ1czx/pyTU9PD08ofvvtt3Ps2DHeeecdXnnlFaZOncq5557LRRddxDXXXBO+4thtV6u83XGtvl2XxzVeV7ccjcRSWH6ulPoOQEQmKKX+HEqIyP1xG0VBLL9p0GMs9TfGEourz+dj8uTJTJgwAb/fz5IlS3jrrbd48MEHwz+QvPjii+ndu3dU8/PoMZYEG2MJFZUgrUTECyAiPwJ+GrdRFDT0OW+TaR5ZN1x9Ph/XXHMNf/jDH/jhhx/49a9/zb59+7jkkkvC8/uuXr06ogW39Jy37joaiXc+lkXAchHZD/wbeCBuoyiI5VywLldCtItFysmyuqDbrmlpaQwdOpQnnniCDRs2sHDhQrxeLz//+c/Jzc1l8uTJLF261HKAX6+EmIArIYpIKoBSaptSaiCBK3BbKqX+Xj1f2+hpE8xziTgVQW26pqWlcdZZZzF79my2bNnCihUrOO2007j//vtp27YtEyZM4L333qtRZPS0Ce46Gon1E8vPq28opQ4rpSqt8rVFLAcg9JP1aPJOMbO2UyxS7PpY5YxxJ1czx2R27dKlC9OnT2ft2rVs2LCBPn368PDDD9OmTRvGjx/P4sWLHa+BiuR9YLVdl8c1Xle3HI3EWlguEZH7LW6zgJ/EbRYBeoylYY2xxOJ6yimncOedd/Lvf/+bzZs3069fPx588EE6derE5MmTWbFihelHfz3GEh+xfuZx+kr5oxgfNyr0GEvDHWOJxTU3N5c77riDO+64g88++4ylS5dy2223cezYMW688UZuvPFGOnfubPmYeowlcmIqLEqp5XE/swvo5T+SZ0mNRHMNTeswY8YMNmzYwAsvvMDgwYPp2rUrEyZM4MILL4zK1cpHL/+RhDSEReFPloXWE9m1T58+LFiwgD179jBt2jQWLVpE7969+cUvfsHGjRsjcrXy0YvCu0BdfRsUIpalQsvKyqLOO8XM2k6xSLHrY5Uzxp1czRwbomtaWhqXXXYZixYtYuXKlbRu3ZrRo0czYMAAXn75ZQoLCyNyr8vjapW3O6614WgkrsIiIm1F5FoRuVFEbgQejdsoCmI5F3QqRmZ5p5hZ2ykWKXZ9rHLGuJOrmWNDdgVo3bo1s2bN4ttvv+Wee+7hz3/+M7169WL27NkcOHDA1r2uXSN5z0ZynONxNBLvJ5Z3CEyZcFrw1ipuoyjQYyyJNW5xsrhWz6empjJmzBg+/PBD3njjDb777ju6devGpEmT+Prrr0376DGW+AvLB0qp6UqpPKVUHvC/cRtFgR5jSdxxi2R2tcr379+fP/3pT3z11VeceuqpjBkzhrFjx7J27VpLHz3GEhtNRGRB6BoW6vhUKJaPbKG1eaLJO8XM2k6xSLHrY5Uzxp1czRwbsqtVPhRr0aIF999/Pxs2bOD8889n3LhxDBs2jPfffx+lVEK5RrLthqOReAvLEWATsCt4OxK3URTEMsbidFGdWd4pZtZ2ikWKXR+rnDHu5Grm2JBdrfLGWFpaGlOmTOGrr75i0qRJ/PKXv+Tcc88NF5hEco3kOMfjaCTewvKAUup5pdSLSqkXgYfjNqplnMZlzPJOMbO2UyxS7PpY5YxxJ1czx4bsapW3ck1NTeWGG25g1apVTJkyhfvuu49BgwaxZMkSS+f6cjXbduN4Gon662ERWQJcHJyl/zURaRRKAe2BLnFbRUgsk/7m5OREnXeKmbWdYpFi18cqZ4w7uZo5NmRXq7ydK4DP52PcuHFcfvnlvPPOO9x11100bdqUhx9+mEGDBiWUq9vH00gsn1jGq/9eS/834GZgAnATEPNETyLygYjsEZG1IpISXGHxIREZLyK/MutTWVlpFrZFj7HoMZZI+sQzbnH8+HGuvvpqtmzZwoQJE5g0aRIjR45kzZo1CedavV2vYyxKqR+qtV9QSu1QSu1SSu0isCRq1IjI5cBMpVR7pdTA4C+lpwDfBk+x0kRkjLFfLIXFaQJus7xTzKztFIsUuz5WOWPcydXMsSG7WuXtXM18UlJSGDt2LFu3bmXMmDFcc801XHvttXzxxRcJ42rmHcvxNBLXlbIiMhsYR6BAeYAioEcMD3UecIWIfAJMDhavscC0YH4DgSVHFlXvtHz58hrng9OmTSMvL4+Kiopw1c3OzqaqqorS0lIgcFVhSUlJ+BecmZmZeDweiosD0/aWlJRQWloa3k5PT6e8vJz8/PzwttfrpaCgAAgM4JWXl3P48GGqqqooKioiJycnPPGzx+OhvLyco0ePUlBQgMfjISsrC7/fz/HjxxERcnJy8Pv94Rc0JyeH8vJyysvLKSgoIDs723SfQg6hrwdD+1RaWlpjH6rvU0FBAenp6aSnp4f7h/bx0KFDFBQUnLBPqampZGRkUFJSQlVVVXgfysrKqKioCG+HZnc326fy8nIKCwvD26F9CjmY7VNZWVn4uFffp4KCArxeL36/n/z8/Br7FHIIvU5FRUUopUhLS8Pr9Yb3IfQ6We1TYWFheB9Cr5NxH4zbfr+fY8eO1din0PvusssuY/z48SxYsIDzzjuPESNGMGvWLDp27Bh+nbxeL6mpqTXee8bXyWyfQlcEV3+dqr/XysrKTnjvFRQUhF+n0PMVFBSEj0nouMdMrKvJB8+G7gLaAOcQKCy3Odz/AeBl4y2YSwHuA5YGt7cDXYLtC4D3jY83c+ZMFS2lpaVR551iZm2nWKTY9bHKGeNOrmaODdnVKm/nauVj5nr06FF13333qWbNmqmpU6eq/Pz8enO1clRKKQJfzsRUG+L9VigXaEdg8bJ+BMZa7IrYA0qp6423YK5SKTUbaBy8+w9A6EqdRsAB4+PpU6HkOb1IJlerfLSnQlauPp+PBx98kC+//JLy8nK6devGnDlzLOdBScZToXgLy4tAC+A1Alfd/jWWBxERT/DfDGBFMPwW0DfY7gm8beynC0vy/LEmk6tV3q3CEqJ169Y8+eSTrFmzhvXr19O1a1eef/75E97XDa6wKKU2A7uVUvlKqXEqhgXcRaQ5sEVEHgN+BswOpp4CuovIBKAceCMeV40mUenSpQuvv/46b775Ji+88AJ9+vRh8eLFriwcVl/ENHgrInMIDNQ+DkwRkdFAJfC8UuqhaB5LKXWIwGTcxrif/w7emhLLb4Wys7OjzjvFzNpOsUix62OVM8adXM0cG7KrVd7O1conGtcBAwawfPly3n77baZOncopp5zCvHnzOOOMM2rNNVrHSIn1E8sxpdRvlFLHgOXAMGAEgeJSZ+hpE5JnKoJkcrXKRzoVQTyuIsKYMWPYsmULV1xxBRdffDETJ05kz549teIai2MkxFpYql+v8oZSaqdSaiewN26jKNAXyCXPRWfJ5GqVj/SiMzdc09LSmDx5Mtu3b6d169b07t2be++9N3wZg1uu8TjaEWthaRpqKKWqf2zIjU9Ho9FUp3HjxsycOZMNGzawe/duunbtyh//+EdXPlXUJrEWlnYi0q96QERGAqfHrxQ5eowlecYtksnVKl/bYyx2Lqeccgovvvgi7777Ln/961/p3bs37733Hkqpk2qMZTbwrIh8JCKviMg64BkgL26jKIhl1Fwv/9Fwl/+I1NUqnwjLf5x11ln861//Ys6cOdx1111cdNFFbNq0KWZXtxyNxFRYlFJHgEHAq8BRYCHQUym1O26jKIjl42DoEuto8k4xs7ZTLFLs+ljljHEnVzPHhuxqlbdztfKpDVcR4bLLLmPLli2MGTOGSy+9lEmTJvH9999H7eqWo5GYr2NRSpUppZ5RSt2mlPqtUqrQuZdGo3GL0ERTa9asoWnTpvTo0YOHHnrIlZUM40WvKxRBXs9527BcrfKJuq5Q27ZtmTdvHuvWrWPTpk2cccYZ/P3vf69xSpNsc95qNJoEoVOnTrz22mv85S9/4emnn+bss89mxYoVzh1rgaQuLHpReL0ofG24WuWTZVH4wYMH8+6773L33Xdzww03cMUVV5wwB0xtLwqf1IVFo9GY4/F4GDduHNu2baNfv36MGjWKu+++myNH6ma++6QuLKmp0f/UKTMzM+q8U8ys7RSLFLs+Vjlj3MnVzLEhu1rl7VytfOrbNTMzk3vuuYd169Zx7NgxunXrxhNPPFHjb8cNRyNJXVj0SojJs7pgMrla5SNdXTARXdu2bcszzzzDBx98wNtvv83ZZ5/NO++8E5iUKQFXQqxXYhljCU3DF03eKWbWdopFil0fq5wx7uRq5tiQXa3ydq5WPonm2qtXL5YuXcoDDzzA9OnTufDCC/n444/jdjSS1IVFo9FEj4iEr9j96U9/ytVXX83NN9/MDz/ENBe+KUldWFJSUqLu4/V6o847xczaTrFIsetjlTPGnVzNHBuyq1XeztXKJ5Fd09LS+MUvfsFnn32Gz+dj6NChPPzww/V3SX+iEMu5oNOAr1neKWbWdopFil0fq5wx7uRq5tiQXa3ydq5WPonuCoG1qOfPn8+KFStYv349/fv359VXX43aszpJXVj0GEvyjFskk6tV/mQYYzHbDrVbt27NG2+8we9//3seffTRqD2rk9SFZdWqVfWtEBVz586tb4WI0a61QzK4nnPOOXzyyScAw2N9jKQuLKtXr466z4cffhh13ilm1jaLzZsX9Vzjtr5WOWPcybV6W7ta5+1czbySwdXM8cMPPwwNMwyLWjZIUheWWFi6dGnUeaeYWdsqHy12fa1yxriTa/W2drXO27laeSW6a/W2G64hJJmXGBCR9ZisN+RAVwKrLEaTd4qZtc1iw4GPXPS1yhnjTq5m3g3Z1Spv52rmlQyuZo6hfy9TSp0VpSuQ5IVFo9EkJg3uVEij0dQ+urBoNBrX0YVFo9G4ji4sGo3GdU66wiIiPUTkWRH5p4jEv0BKLSIiKSKSJyJD69vFDhFpIyJ3ishtEstcFXVMshxXSLr3a1cReVRE3nV6H5x0hQWoVEpNAj4Ezq1vGTuUUpXAThL/dbgV+Auwh8Aa3QlNEh1XSKL3K/C9Uup/CSz5Y/sDpmQ48FGhlNoaagInruSUeCTD9/1nAgcJrNndu55dIiUZjmtSvV+VUsdE5Gxgi1LK9od6J11hARCRLOCoUup7xztrIiFNBS54SsHhfypN9CTZ+3UH0FtETrG700lTWERkqoi8LCJnApcDz4lI9AsP1QEG12TgSxFpBbQFPq9vmZOQy0ng92t1lFKHgJeBHLv7JXxhEZEzROQdERlWLXabiNwsIrNEpAmAUmqBUup64DLgOuBF4NoEd90GdCFwCXWdE6kv8DhwFXAqgbGAeiFS3+DAYr0d16BDpK6/op7erzG4XiUitxH4BLvV6vGAwMLqiX4jsEb08GD7LOD/BdvnAr+rb79kddW+2rW2XBP+E0uQ8mrty4HQ6ksbgtuJRDK5gvatTRqsa7IUluq0AQ4H22VAu3p0cSKZXEH71iYNyjUZC8sPQGjV6kbAgXp0cSKZXEH71iYNyjUZC8tbQJ9guyfRz8dSlySTK2jf2qRBuSZ8YRGRDgRG9weLSKZS6nMCX39OAi4A7q1XwWokkyto39qkobvqiZ40Go3rJPwnFo1Gk3zowqLRaFxHFxaNRuM6urBoNBrX0YVFo9G4ji4sGo3GdXRh0Wg0rqMLi0ajcR1dWDQajevowqLRaFxHFxaNRuM6urBoNBrX0YVFo9G4ji4sGo3GdXRh0Wg0rqMLi0ajcZ2EX9UuuI5JOYEJfR9TSh2tXyONRuNEQhcWETkLGKCUulFEzgVmAXeF8hMmTFAdOnSI6jErKytJSUmJKu8UM2s7xdzwtcoZ406uZo4N2dUqb+dq5pUMrnaOeXl5z6nAgvVRk9BTU4rIg0CxUuoREckBNiulTgvlBwwYoD755JPw/adNm0ZeXh4VFRX4/X4AsrOzqaqqorS0FICysjKaNWtGSUkJAJmZmXg8HoqLiwEoKSmhZcuW4e309HSKiopIT08Pb3u9Xvbs2YPP5yMtLY3i4mIyMjKoqqqiqKiINm3a8P3339OoUSM8Hg9lZWVkZWVx6NAhmjZtSlZWFn6/n+PHjyMi5OTk4Pf7KS8PLO2Sk5NDeXk55eXlFBQU0K5dO9N92r9/Pz6fj6ysrLA7QGlpKS1atDDdp4KCAlq2bEl6ejp79+7F5/OF99Hr9XL06NFw39A+paamkpGRQUlJCVVVVXg8HrKysigrK6OioiK8vX//fnJyckz3qby8PLxfoX2oqKjgwIED+Hw+0306fPgwGRkZJ+xTQUEBrVq1orCwEK/XW2OfioqKarxORUVFKKVIS0vD6/WG9yH0OlntU2FhIe3atavxOvn9/hr7YNwnv99P48aNa+xTfn4+mZmZFBQU0LZt2xr7ZHzveb1eUlNTa7z3jK+T2T7t27ePxo0b13idjhw5En6vlZWVnfDey8/Pp0mTJuTk5LB//36ys7MpKCggNzeXAwcOkJWVRcuWLfOUUg/E9Mdb3yuwOazO9gxwc7CdCvir52fMmKGipaSkJOq8U8ys7RSLFLs+Vjlj3MnVzLEhu1rl7VytfBLd1c4ReEDF+Leb0KdCOKxvMnfuXN566y26dOkSvnXv3p2ePXvStGlT0wesqKiwfUKzvFPMrO0UixS7PlY5Y9zJ1cyxIbta5e1crXwS3dUtRyOJ/q2Q7fomd9xxB2+++SYTJ06kbdu2rF+/nl/96leceuqpdOjQgUsvvZT777+fJUuWcPToUYDw6YQVZnmnmFnbKRYpdn2scsa4k6uZY0N2tcrbuVr5JLqrW45GEvoTi1LqcxEJrW9yKob1TVJTU+nevTvdu3ev0a+qqopvvvmGTZs28emnn/LII4/w6aef0rFjR/r168fo0aO54IILaNKkSd3tjEbTgEjowgKglJpnlUtLSzONezweOnfuTOfOnfnpT38KwPHjx9m4cSPLli3j+eef52c/+xm9e/fm4osv5tJLL6Vnz55AYFDRiFPMrO0UixS7PlY5Y9zJ1cyxIbta5e1crXwS3dUtRyMJX1jsUFF8o5WWlkb//v0588wzmTZtGqWlpaxYsYLFixczevRoGjVqxLhx4xgzZgw9evSo0beqquqEx6seM2s7xSLFro9Vzhh3cjVzbMiuVnk7VyufRHd1y9FIoo+x2BLLIFPoa+fMzExGjhzJggUL+Pbbb3n66afZt28f5513HgMHDuSFF16grKysRh+zx7FqO8Wi9Y0mZ4w7uZo5NmRXq7ydq5VPoru65WgkqQuLW3g8HgYPHsyTTz7J5s2buffee3nttdc49dRTmTFjBrt3765vRY0mqUjqwmI1xmJH6GIyKxo3bszo0aN57733WLVqFWVlZVxwwQWMGzeOL7/80vRxzNpOMTd8rXLGuJOrmWNDdrXK27la+SS6q1uORpK6sNQ2Xbp04Xe/+x1ffvklvXv3Zvjw4Vx33XVs3bq1vtU0moQmqQvL8ePHo+4Tuuw9mnxKSgq//vWv2bFjB7169WLYsGGMHz8+fIpUvU+o7RRzw9cqZ4ybuTg5NmRXq7ydq5VPoru65WgkqQtLXdOoUaNwgenQoQN9+vQhLy/PlRdCozmZSOrCkpoa/bflmZmZUeeNsUaNGpGXl8f69evZunUrgwcPZuHChSilwvet3scs5oavVc4YN3NxcmzIrlZ5O1crn0R3dcvRiO1fpojc7/QASqkH47aIERGJuo/HY19LzfJWsQ4dOrBw4UI++OADpk+fznPPPceCBQvo3r17jT6httNzR+trlTPGzVys2trVOm/nauWT6K5uOZ7w/A75ZsBym5v5L/3qiFjGWEI/SY8m7xTr06cPn3zyCaNGjWLo0KHMnTuXgoKCE+7r9NzR+lrljPHq205t7Wqdt3O18kl0V7ccjTgVltVKqeVWN2BN3AYnCampqdx99928//77fPDBB1x44YWsX7++vrU0mnrBtrAopV4DEJEh1eMi0k1E/gd4oxbdHIl2Ji4ITKYTbd4pVr3drVs33n//faZMmcKoUaOYNWtW+JTN6bmj9bXKGeNWrmZt478N0dUqb+dq5ZPorm45Gon0ZOpPIrJWREKzt/0WWApMiNsgDmI5F3Qa8DXLO8WMbRHhxhtvZMOGDXz66aeMGDGCzZs3xzTYbNfHKmeM27ka28Z/G6KrVd7O1con0V3dcjQS6V/mh8CtwNDgdjul1EHgR3EbxEGijLFYna+2a9eOf/zjH0yYMIERI0bwm9/8JurfN50s4xbJ5GqV12MskRNpYVkF7AKaBLdD5yCnxm1wkiMiXH/99Xz66aesWLGCIUOG8NVXX9W3lkZTq0RaWNKBHcBQERkL7BaRW4GcWjOLgFjGWEKTYkeTd4qZtY2xDh068Pbbb3PdddcxaNAgfv/730f083Q7X6ucMe7kaubtdJxOZlervJ2rlU+iu7rlaCSiwqKUekEp1UwpdYVS6m9KqdHAIuC2uA3iIJkKC0BGRga33347q1at4qWXXmLkyJF89913Mfsm0x9rMrla5XVhiZyICouIjBeRBRLgahHpoZT6Xin1TdwGcRBadiEaQstDRJN3ipm17WLdunVj1apVDB8+nH79+vHss89aTlpl52uVM8adXM0cnY7TyexqlbdztfJJdFe3HI1Eeio0AtgUXC3gNeCPcT9zAyc1NZWZM2fyr3/9iz/84Q+MGjXK8dOLRpMsRFpY/gHkA4hIX6BzrRlFQbKdCpk9Ts+ePVm7di1Dhw6lX79+PPPMMzXGXk6W04tkcrXK61OhyIm0sBwGrhGRF4B/ATPifmYXSMQL5CK5SMpIWloaM2fOZNmyZTz33HMMHz48POfLyXLRWTK5WuX1BXKRE+ng7YfAFOBJoAuwOO5ndoFkHWOxokePHqxevZqrr76aoUOHMmvWLPLz86NyNYsnwrhFMrla5fUYS+RYXmInIk8CZr+f9gCtgJ/E/ez1gNPM/mZ5p5hZ2ylmRUpKClOmTOHyyy/njjvuYNiwYTz11FNcdNFFEXmZxZ1czRyjWQHBySfZXK3ydq5WPonu6pajEbtrd38APgbKgFuAl4HQJXkJUVRiuaTfaZ5cs7xTzKztFHOiffv2vPXWW/zlL39h8uTJ9OzZk0cffZROnTrZepnFnVzNHGOZT9iuTzK5WuXtXK18Et3VLUcjdn+Zs5VS7wd/xfw3pdR71X7V3DLuZ3aBWH7TkIhjLHaMHTuWL774ggEDBnD22Wczc+bM8EfVZBq3SCZXq7weY4kcy8Kian4e6ioiE0RkpIg8Apwe9zO7QF3NeesUq+05bzMyMpgxYwYbN25k165ddO3alaeffrrGnC92vokwj6ye8zYxXd1yNBLpucQjQGMCV9pmA9fE/cwuEMu5oBuryhljdbUSYm5uLi+//DJvv/02r732GoMHD+bNN9884Tgk4uqCeiXExHR1y9GIbWERkZ4ASqkKpdRjSqnLlFJTlFL7q+fri0SdNiGSWKSY9enfvz8ffPABjzzyCLNnz2bgwIG8//774QKTiFMR6GkTEtPVLUcjTn+ZQ+LM1yqxHICMjIyo804xs7ZTLFKs+ogIl1xyCevXr2fq1KlMnTqVwYMHs3Tp0hPOkZ1czRzddLXLGeOJ4GqVt3O18kl0V7ccjTgVlp+JyL8sbsuo54meGsoYi13O4/Ewbtw4tmzZwu23386dd97J8OHDWbJkSfgTTCKMW+gxlsR0dcvRiNPUlP2VUiMsbucppX4ct0EcNLQxFrtcSkpKuMBMnDiR6dOn07dvX1599dUaFxLqMRZnV6u8HmOJnKReV6i+l/+wa9fX8h8pKSlceeWVbNy4kTlz5vD0009z9tln8/jjj1NYWKiX/4jA1Sqvl/+InDotLCLSSkTmi8iMarE0EXkoODXDr6rFzxORXwdvvcwerzYWhY9kgW1jLBEXhRcRLr74YpYvX85LL73EypUr6dixI/fccw/btm1zdNSLwutF4eMh4sIiIs2C/8Y8a5xS6gCwHag+ujgF+FYp9SKQJiJjRCQDmEvga+7fAb8Xk48n0c4fC1BWVhZ13ilm1naKRYpdH6ucMd67d29ef/11Nm/eTOPGjRk+fDgXXHABr7zyCqWlpaaO9eXqdFzrwtUqb+dq5ZPorm45Gol0oqcngceDm0NEJJ7rWIy/HBwLbAm2NwCXA+cA+cH5X/xAFibz68ZyLuhUjMzyTjGztlMsUuz6WOWM8dB2bm4u06dPZ9euXUycOJFXXnmF3NxcJk6cyPLly6mqqkoY10jateVqlbdztfJJdFe3HI1E+n3tEeB9AKXUYhHZCvzV6s4i8gAmc7Yopa43uXsbAtMyQOB3Se0MserxXdU7Ll++vMY4y7Rp08jLy6OiogK/3w9AdnY2VVVV4f+Zy8vLKSkpCY98Z2Zm4vF4wjOTl5WVUVpaGt5OT0+noqIi/Cvj9PR0vF4vx44dAwKnYxUVFRw+fJiqqiqKi4vJyckJX3bv8XioqKjg6NGj4TGOrKws/H4/x48fR0TIycnB7/eHB1lzcnIoLy+nvLycwsJCsrOzTfepsLAQ+O9H19A++f3+GvtQfZ8KCwtJT09n7NixDBgwgJKSEv7+978zY8YMbrnlFoYNG8bo0aMZOHAgHo+HqqoqUlNTycjIoKSkhKqqqvA+lJWVUVFREd4uKSkhPz/fdJ8qKiooLCwMb4f2KbQPZvtUXl4ePu7V96mwsBCv18vx48fJz88P71N6enr4uIdep6KiIpRSpKWl4fV6w/sQep2s9qmoqCi8D6HXybgPxu3jx49z7NixGvvk9/vDjsZ9Mr73vF4vqampNd576enp4cez2qfQPld/naq/18rKyk547xUWFoZfp9LS0rBj9e24UEo53oArgMuC7VuArZH0s3ism4AHqm2vBHoH22OBl4DzCfw+KXSfjcDpxseaOXOmipbS0tKo804xs7ZTLFLs+ljljHEn11B7+/btav78+WrkyJEqJydHDR06VE2bNk29+uqrauvWraqioqJWXMvLy1VxcbEqLi5Whw4dUsXFxaq0tFSVlJTYetfWcbXK2x1XK59Ed7VzrP53Gu0t0k8s/wF+LSL/B5QCN8ZXzmrwFtA3WDx6Am8D/wbmAIiIFziulNph7BjLRza/3297AZBZ3ilm1naKueFrlTPGnVxD7S5dujBp0iTuvvtu9u3bx6ZNm/jss8948803mTlzJgcPHqRTp060adMmfGvevDmpqamkpKTg9/vD/0sXFxeHb8eOHSM/P5+SkhIKCgooLCykuLiYkpISiouLUUqdMGtZZWUlSil8Ph8+n4+cnBxOPfVUOnbsSOvWrTnzzDNp06YNZ599tuvH1Spvd1yrb9u99onm6pajkYgKi1JqC3A9hKem3GLfwxwRaQL8GGgjIq2VUj8ATwEPicgEAuMvbyillIg8EPyWKAW42ezxYhljcbqozizvFDNrO8Uixa6PVc4Yd3I1c0xPT2fUqFGMGjUqfJ8jR46wa9cu9u/fH74dOHCAyspKqqqqKCoqwuv14vV6yc7Oxufz0a5dO3JychARTjnlFHw+H40bNyYnJ4fs7GxKSkpo27Zt+JQ2Pz+fFi1aALB3717S0tIoKChg586dFBcXs3PnTrZu3cq6devYsmUL+/fv50c/+hEDBgzgxz/+Meeffz65ublxHVervN1xNTuGZjG33wPxurrlaCSiwiIi/wKmAuOB7sBnwMxon0wpdRTDkiEqMDg7zeS+7wHvRfscTjhd+2KWd4qZtZ1ikWLXxypnjDu5mjmaPXbTpk1p2rSppc+hQ4do3rx5VLnKykpLp4yMDJo3b06rVq1o1qxZuH/osQ4dOkRqaiofffQRX3/9Nf/4xz+46667yM3N5eKLL2bUqFGce+65ppcluPE+sNqO9rg6UZuubjkaifRU6FngKDCGQGFJiF83xzLpb06O/bflZnmnmFnbKRYpdn2scsa4k6uZY7K4er1eRo0aFf59VGVlJZ988gmLFy8OfwM2btw4xo8fT9++fcN/NG68D6y26/K4xuvqlqORSK9jaQ+8Dvwa6Ab8Mu5ndoHKysqo+4S+WYkm7xQzazvFIsWuj1XOGHdyNXNMVteUlBQGDRrEgw8+yLp161i9ejVNmjThiiuuoGfPnvz2t7/l6NGjrrwPrLbr8rjG6+qWo5FIJ9OeC5yjlHoD+AoYGfczu0AshcVpAm6zvFPMrO0UixS7PlY5Y9zJ1czxZHHt3LkzeXl57Nixg6eeeorPP/+cTp06hT/NRONr52rlU9vHNV5XtxyNRHqBXH8C3wrdD0wH/hz3M2s0dYjH42Ho0KG8/PLLbNq0ibS0NM466yyuvfZaNm/eXN96Jx2Rngr9AqgM3nYDq2rNKAr0GIseY4nFtX379sybN49vv/2W/v37c+GFF3L99dfz9ddf2/rqMZbIibSwrFFK/R+wSyn1PIG1heodfSqkT4XicW3cuDG//OUv+eqrrzjjjDMYOHAgt956K3v37tWnQnESaWHxichMYK+IbADOjPuZXUAXlsT7Y01G10aNGnHvvfeyfft2fD4fvXr14qGHHgpfWh+Jq5WPLiw2KKXmK6V+o5RaBpxL4IeCGs1JRbNmzXjkkUdYv349X3/9NWeccQYvv/yyKxMfNTQiHbwdLyLvisiHBC65/6hWrSIklvlYsrOzo847xczaTrFIsetjlTPGnVzNHBuya4cOHXjllVdYuHAhjz/+OIMGDeLjjz+2dbXyqW1Xq3ykrm45Gon0Arkbgdv570qIA+J+ZhfQ0yaY5xJxKoJkcg3lBw8ezNq1a3nppZcYO3YsI0aMYP78+bRp08bWXU+bEPkYy6vAdqXULqXULmBT3M/sAvoCOX2BXG24Vs97PB7Gjx/Ptm3baNq0KT169GD+/PmUl5frC+RssCwsIrJKRL4RkW+B+4Dd1bZXx/3MGk0S0bhxY2bNmsXq1atZtmwZPXr0qLESgqYmdp9Y5gFnKKVOU0p1VEq1VUp1UkqdBlxaR3626DGW5Bm3SCZXq3x2djZdu3bl3Xff5YknnuDhhx/mggsuYOPGjZY+DXWMxW7t5r8D7URkoYj8NjgPbSiXEBfIxfK/xcm6/IddPBGW1EgmV6t89djIkSNZs2YNV155JSNHjmTixIl89913CenqtF0fy388C5QApwB3xv1sLhPLIFNoispo8k4xs7ZTLFLs+ljljHEnVzPHhuxqlTfGjh8/zuTJk9m2bRutWrVi0KBBTJ06tcZvkBLFNZLjHI+jEafC8qlS6mdKqauBolBQRBrF/cwazUlCkyZNmDNnDitXrkQpxbnnnsuMGTPinzc2iXEqLD4RGSoiQ4FG1dr31oGbI3pdIfNcIq7Vk0yuVnmntXpOO+00HnvsMdauXcvhw4fp2rUrM2fOZMeOHQnnWt/rCv0EyAveRlZrJ8RETxpNItK+fXuefvppvvzyS3w+HwMGDOB//ud/WL16dYP5FsmpsIxVgTWaa9wIzCRX7+hF4ZNnofVkcrXKR7sofJs2bZg+fTo7d+6kf//+3HTTTfTr149HH32UgwcPJoSrmXddLAq/3iK+Me5n1mgaCDk5Odxyyy385z//Ye7cuWzcuJEuXbpw5ZVX8vrrr4fXBTqZSOpF4VNTI/1Fwn/JzMyMOu8UM2s7xSLFro9Vzhh3cjVzbMiuVnk7Vyuf6jER4fzzz+fFF19k165djBo1iueff5527doxZswYXnzxRdMB39p0NfOO5XgaSerCEsts4h6P/S6b5Z1iZm2nWKTY9bHKGeNOrmaODdnVKm/nauVj5erz+Zg0aRKLFy/mu+++46qrrmLRokWcfvrp9OnTh7vvvpv33nuPoqKiWnW1c4yHpC4ssYyxGOfYiCTvFDNrO8Uixa6PVc4Yd3I1c2zIrlZ5O1crn0hcmzRpwvXXX89bb71Ffn4+Tz31FE2aNGHu3Lm0bt2aH//4x/z85z/n2WefZdOmTSe87+NxjdQxWqI/l9BoNLVGWloa55xzDueccw733Xcffr+f5cuXs337dlasWMH8+fPZtWsXp59+Oj169KB79+7k5ubSt29fOnXqhM/nq+9dAJK8sKSkpETdJ7T+TDR5p5hZ2ykWKXZ9rHLGuJOrmWNDdrXK27la+cTr6vV6GTRoEBdddFE4VlpayrZt2/jiiy/44osv+Nvf/saCBQv45ptvyMjIoFOnTrRt25YOHTqQm5tL+/bt8fl8dOjQgVatWtG8eXPXj6eRpC4ssZwLOg34muWdYmZtp1ik2PWxyhnjTq5mjg3Z1Spv52rlUxuumZmZ9O3bl759+wKBQpOZmYlSioMHD7Jjxw6++eYbDh48yN69e9mwYQP79u0jPz+fAwcOcOTIEZo0aRJe2dLn89GiRQuys7Np2rQpmZmZlitaRuwcV+96JtYxFrtRb7O8U8ys7RRzw9cqZ4w7uZo5NmRXq7ydq5lXXbuKCK1ataJVq1Z06dIlvAY21FwTu7Kyku3bt+PxeDhy5Ag7d+6kqqqKffv2UVVVxf79+zl69GhUjkaSevB21aqE+JF1xMydO7e+FSJGu9YOieCakpJCy5Yt6datGwMHDuSCCy7guuuu46abbmL69Oncc889PP744wDDY32OpC4sq1dHP9/Uhx9+GHXeKWbWNovNmzcvOlmL53bKGeNOrtXb2tU6b+dq5pUMrmaO1XLDolQNk9SFJRaWLl0add4pZta2ykeLXV+rnDHu5Fq9rV2t83auVl6J7lq97YZrCEnmH0WJyHoCqwZEQ1dge5R5p5hZ2yw2nOhXOLDztcoZ406uZt4N2dUqb+dq5pUMrmaOoX8vU0qdFaUrkOSFRaPRJCYN7lRIo9HUPrqwaDQa19GFRaPRuM5JV1hEpIeIPCsi/xSR+NcxqEVEJEVE8oLTfSYsItJGRO4Ukdsklp+U1zHJclwh6d6vXUXk0eByy7bvg5OusACVSqlJwIcEFrBPWJRSlcBOEv91uBX4C7AHGFHPLo4k0XGFJHq/At8rpf4XOIrDVfvJcOCjQim1NdQkQZaCdSAZvpY7EzgI/AD0rmeXSEmG45pU71el1DERORvYopSy/T3NSVdYAEQkCziqlPq+vl1OEtJU4LqEFJL892WJSJK9X3cAvUXkFLs7nTSFRUSmisjLInImcDnwnIhEvz5IHWBwTQa+FJFWQFvg8/qWOQm5nAR+v1ZHKXUIeBnIsbtfwhcWETlDRN4RkWHVYreJyM0iMktEmgAopRYopa4HLgOuA14Erk1w121AFwJXOtY5kfoCjwNXAacSGAuoFyL1DQ4s1ttxDTpE6vor6un9GoPrVSJyG4FPsFutHg8IrH+c6DfgVWB4sH0W8P+C7XOB39W3X7K6al/tWluuCf+JJUh5tfblwBfB9obgdiKRTK6gfWuTBuuaLIWlOm2Aw8F2GdCuHl2cSCZX0L61SYNyTcbC8gMQWly2EXCgHl2cSCZX0L61SYNyTcbC8hbQJ9juSfTTJtQlyeQK2rc2aVCuCV9YRKQDgdH9wSKSqZT6nMDXn5OAC4B761WwGsnkCtq3Nmnorno+Fo1G4zoJ/4lFo9EkH7qwaDQa19GFRaPRuI4uLBqNxnV0YdFoNK6jC4tGo3EdXVg0Go3r6MKi0WhcRxcWjUbjOrqwaOodEblVRP5miP1CRPT7M0nRL5zGFUSko4isFZEpItIiyu4fAU2ND6mUqjI8x7nBx/8oDlVNHaALi8ZNtimlfq+Uyo+yX1n1DRHpAXxpvJNS6t9Kqd/HI6ipG/SM6xpHRKQ5cJZS6p/VYhcBQ5RS91n0mUhgntw9BJa2OA58BpyjlJoYvM8vg/nBhu5DgadFpDMwhsB/gE2UUjNd3TFNraE/sWgiYRjwAYCI9AvGPsLwScPAMqA9cDPwR+AfwGvA6ODjXA74lFILg/nqpKrAomMDCKwM8Bjwugv7oakjdGHRRIJXKaVEpCkwLhhrDKy26VMF5KvAvBzbgE7A2YA/mD8f2BdsF4c6BZdECZ0GvQVkAFuB1i7sh6aO0IVFEwl9gv9OADYH1xi+C1gRYf/7gINKqQ8Bgt/2fEfN5VpD78URBD4NQeD0awpwKfBgrPKaukcXFk0kKBH5lsCpz50E/vBfDJ6uWDEU6CYiXQksHZonItOBvQQ+9TwFZIjIm8HtHBHpQuA0qCL4GD8WkT8ROCV6rhb2S1NL6BnkNK4gIh2BB5RSN9XBc32klBpe28+jiR39iUXjJmfEeB1LRISuY6mNx9a4i/7EotFoXEd/YtFoNK6jC4tGo3EdXVg0Go3r6MKi0WhcRxcWjUbjOrqwaDQa19GFRaPRuI4uLBqNxnX+P4BK/lQBwX1EAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "phim = (60- (180 + phaseH1at20 ) ) * np.pi/180\n", "beta = (1-np.sin(phim))/(1+np.sin(phim))\n", "T2 = 1/20/np.sqrt(beta)\n", "K2 = tf([T2, 1],[beta*T2, 1]) # 位相進み補償\n", "print('K2=', K2)\n", "\n", "fig, ax = plt.subplots(2, 1, figsize=(4,3.5)) \n", "H2 = P*K1*K2\n", "gain, phase, w = bode(H2, logspace(-2,3), plot=False) #開ループ系のボード線図\n", "ax[0].semilogx(w, 20*np.log10(gain), lw=1, c='k')\n", "ax[1].semilogx(w, phase*180/np.pi, lw=1, c='k')\n", "bodeplot_set(ax)\n", "fig.tight_layout()\n", "\n", "[mag], [phase], omega = freqresp(H2, [20]) # 20[rad/s]におけるゲインと位相\n", "magH2at20 = mag\n", "phaseH2at20 = phase * (180/np.pi)\n", "print('-----------------------')\n", "print('gain at 20rad/s =', 20*np.log10(magH2at20))\n", "print('phase at 20rad/s =', phaseH2at20)" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.04404543449617801" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "magH2at20" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "位相進み補償により,20[rad/s]での位相が -120[deg]となっている.\n", "\n", "あとは,ゲイン補償により,20[rad/s]のゲインを 0[dB] にすればよい.\n", "\n", "3. ゲイン補償の設計\n", "\n", "20[rad/s] におけるゲインが -27.12[dB] 程度なので, 27.12[dB]分上に移動させる.\n", "そのために,$k = 1/magL2at20$ をゲイン補償とする." ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "k= 22.703828704125367\n", "-----------------\n", "(GM, PM, wpc, wgc)\n", "(inf, 60.0, nan, 20.00000000000003)\n" ] }, { "data": { "image/png": "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zf1aXVZ/MSrl6YxlJnAWsAEX47gT5JyS1xCYV+2teyEhxFSgGGgEvCClzHL6qjIpS28tIjW/nk2trGfzVp7aaPmUdj1WNcZAZBVC0KpVKxITE4mNjSU7O5vIyEi2bt3K77//ztatW1m4cCEHDhygU6dO9OnTh759+9K3b19SUlJYsmQJt99+OwUFBaSkpHD06FFuv/12gErBxZvjQKtem/u1uqz+YlTKU2C53fmAoRDiFinl206HEOKRam/ZC5VfcvWRUk4UQgwAHgXudfpLSko4cuSI6/ONGzemtLSU06dPu2xxcXHExsZy9OhRpJTYbDYKCwtJTk4mPT29wvTlZs2aVfrOxMREQkNDOXr0qMsWERFBdHQ0p0+fxmazUVRURE5ODk2bNsVms/HXX3+58uI2aNAAk8nE8ePHKSoqIi8vj6ioKGJjY0lPT6e0tBQhBGazmYSEBPLz87HZbK7k32azmdLSUkpKSlyJv51JwYN1jMWfrGazmR49enDxxRczadIkwDElfceOHWzdupXly5czffp07HY7ubm5rqUtMjMdczsLCgqYOXNmpcBijLFUT8Kb0x4hxAxggZTSJoToACyRUnar9tb1t/s4kC+lnCuEiAJ2SSldz/g3adJEnjhxwvX5yZMnc8MNNzBx4kTX6dyMGTO4+eab6dGjBwUFBUgp6du3L6+++ioPPfQQq1evBhynf85JXo8//rir/dy5c+nduzdDhgxxMnHVVVdx//33c++997J9+3aklERERLB582befPNNXnnlFdeiT4sWLSI2NpaxY8e6gsjkyZP597//zfDhw11BrEWLFnz11Vc89dRTvP32265k359//jl2u52rrrrKlfx7zpw5/Otf/6JZs2bYbDZCQ0MZOHAgixYt4uGHH2bdunVERERgsVj46KOP2LZtGx9++CFhYWFYLBZuvfVWOnfuzKuvvkqjRo2oX7++K9F3VlYWiYmJFBYWYrFYKCsrw2w2ExYWRkFBAWVlZZhMJiIiIigqKsJut7vqaWlpREREIIQgKioKm83mGgez2+1ERES46pGRkdjtdtLT04mJiSEyMpKysjLOnDlDTEwMERERZGVlue5Q2Gw24uPjyc/PJycnh/r165OXl0doaCg5OTkkJiZisVhcczAsFotrvMD5vX369MFisVBUVOR6ziwmJoaYmBg2bNhAUlKSq095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u51OnTpx7733uh4XqOn96gurVt0fjEp5G1iWAPullEellEdxPNNT5wr0tAmebN6qLtMmnG+soaGh3Hrrrezdu5e77rqL5ORkNm3axFtvveWaRu+J1xNry5YtmTt3Ln/++ScpKSkMHz6cYcOG8cEHH2Cz2S64tAmeFoX/QQhxSAhxGJgFHHOrb672lv2gQB9j+eabb5g5cyZNmjRh9OjR9O7dm27duvHFF194zWtMkPM/a0hICJdffjkRERGYzWY+//xzmjZtytSpUys94Ogtq7MeHx/P3XffzZEjR5gyZYrroccHH3yQffv2GRPkgPlAOyllipSyhZSyoZSypZQyBbiq2ls+z/XBBx9w6tQpZs2aRWhoKJ999hlbtmzhySef5O9//7trOVRDdau+ffuyYsUKfvvtN1q0aEFERASffvopL730EocPH67y91qtVsaNG8cnn3zC5s2bMZvNXHrppQwZMoQnn3zSNQv7fJWntZs/AxoJIT4QQjwrhAhz8wXEBLlAHmNp164dN998M4cPHyY1NdXlu/LKK0lMTPR6fdxAHbc431ibNGnC9OnTCQkJoUmTJhw7dow+ffrQq1cvcnJysNlslXLBarErWVu3bs3TTz/NsWPHWLBgAadOnWLAgAH06NGDRx55hM2bN3u8/Dgfx1gWAgVAU2BatbfmZ3k7ZjF79uwKuVW2b9/O9u3bK+RXmT17NuA4wJy2Hj16APDPf/6zwmdPnjypO8bSvXt3AHbu3On6Hikl+/bt45prrvE6sPhr+Q9vy7Wx/Eegs/bq1Yv//Oc/nDx5kgULFhATE8Orr75Kq1atmDhxIv/973/Jz8/3efkPk8lEv379eOmllzhx4gTPPfccxcXF3HnnnTRo0IBx48bx2muvsWvXLs2+e9uXQF/+42cp5a1SynGAKzO/ECK62lv2g7wdZJo9e7brce7i4mJ69OhBjx49Kjzm7QwsR48eddm2b98OwCuvvFLhs40aNfL6oN+yZQv9+/cHHLluP//8c+bPn+91HwsLC332Ke3udb2y8t0XnS+sTr/ZbObiiy8G4J577mHFihX079+fzz77jLy8PNauXcvYsWOZN28eGzZscC2f6w1rSEgIgwcP5umnn+aXX35hz549XHHFFWzdupWxY8cSHx/PZZddxuOPP86nn37qOi697Yun/eotY3Wkl+gpVgjhTHcW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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(2, 1, figsize=(4,3.5)) \n", "\n", "k = 1/magH2at20 # ゲイン補償\n", "print('k=', k)\n", "\n", "H = P*k*K1*K2\n", "gain, phase, w = bode(H, logspace(-2,3), plot=False) #開ループ系のボード線図\n", "ax[0].semilogx(w, 20*np.log10(gain), label='$\\mathcal{H}$', lw=1, c='k')\n", "ax[1].semilogx(w, phase*180/np.pi, label='$\\mathcal{H}$', lw=1, c='k')\n", "\n", "gm, pm, wpc, wgc = margin(H) #開ループ系のゲイン余裕,位相余裕,位相交差周波数,ゲイン交差周波数\n", "ax[0].scatter(wgc,0, c='k')\n", "\n", "gain, phase, w = bode(P, logspace(-2,3), plot=False) #制御対象Pのボード線図\n", "ax[0].semilogx(w, 20*np.log10(gain), ls='--', label='$\\mathcal{P}$', lw=1, c='k')\n", "ax[1].semilogx(w, phase*180/np.pi, ls='--', label='$\\mathcal{P}$', lw=1, c='k')\n", "\n", "gm, pm, wcp, wgc = margin(P) #制御対象Pのゲイン余裕,位相余裕,位相交差周波数,ゲイン交差周波数\n", "ax[0].scatter(wgc,0, c='k')\n", "\n", "bodeplot_set(ax, 3)\n", "ax[0].set_ylim(-110,80)\n", "ax[1].set_ylim(-210,10)\n", "ax[1].set_yticks([-180,-120,-60,0])\n", "fig.tight_layout()\n", "\n", "print('-----------------')\n", "print('(GM, PM, wpc, wgc)')\n", "print(margin(H))\n", "\n", "fig.savefig(\"ex_loop_leadlag_bode.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "22.704052673402202" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1/0.044045" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "これにより,20[rad/s]がゲイン交差周波数になり,位相余裕もPM=60[deg]となる." ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-----------------\n", "開ループ伝達関数の安定性\n", "[-39.24938213 -10. -1. -0.1 ]\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.patches as patches\n", "\n", "fig, ax = plt.subplots(figsize=(3,3))\n", "\n", "x, y, _ = nyquist(H, logspace(-3,5,1000), plot=False) # 開ループ系のナイキスト線図\n", "ax.plot(x, y, label='H')\n", "x, y, _ = nyquist(P, logspace(-3,5,1000), plot=False) # 開ループ系のナイキスト線図\n", "ax.plot(x, y, label='P')\n", "# ax.plot(x, -y, ls='--')\n", "ax.scatter(-1, 0, color='k')\n", "plot_set(ax, 'Re', 'Im')\n", "ax.set_xlim(-2.5, 2.5)\n", "ax.set_ylim(-2.5, 2.5)\n", "\n", "c = patches.Circle(xy=(0, 0), radius=1, fill=False, ec='k')\n", "ax.add_patch(c)\n", "\n", "ax.legend()\n", "\n", "print('-----------------')\n", "print('開ループ伝達関数の安定性')\n", "print(H.pole())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "開ループ系は安定である.したがって,図とナイキストの安定判別より,フィードバック系は内部安定である." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "位相進み遅れ補償" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$$\\frac{22.28 s^2 + 271.6 s + 454.1}{0.2548 s^2 + 10.03 s + 1}$$" ], "text/plain": [ "TransferFunction(array([ 22.27778122, 271.59384947, 454.07657408]), array([ 0.25478108, 10.02547811, 1. ]))" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "K = k * K1 * K2\n", "K" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "閉ループ系のステップ応答" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "error= 0.0021974323816077446\n", "------------------\n", "error= 0.5\n", "------------------\n" ] }, { "data": { "text/plain": [ "(0.0, 1.5)" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAANsAAACqCAYAAAAk/TokAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAeEUlEQVR4nO2deZRU1b3vP/vU2EM10M1MyyAq7UBsQSBBlOa+mIhjm4RE8S2VOMSYXBK9z3U13hUTh+WN+BxyLzdgFF2ixqgxivNrNSKYgDIqEgRlbFSkJ3qorvHs98ep6q4uupvq7qo6+8j+rFWr6tQ+p+p7dtX37PH8tpBSotFoco9htwCN5mhBm02jyRPabBpNntBm02jyhDabRpMntNk0mjyhzabR5Imcmk0IUSGEeEkIMbuH9DeFELVCiDVCCFcutWg0duPO5YdLKbcJIVoAkZ4mhKgGbpVSrs2lBo1GFXJqtgSRHt6fA3xfCPE+8FMp5YHUxJNPPllu3bq1Y3vmzJlUVVVhmibxeBwAj8eDlJJYLNaxDRCNRgFwu90IITq2XS4XhmF02Xa5XEQikW63DcPA7XYTjUaRUh62LYQgHo/jdrsxTRMhBB6Ph1gshmmaAHi9XuLxeIfm9G2Px5OXc2ppacHn82V0TqnnkO9zCofDFBYWZv13yvY5LVq06BEp5dX0gXyYrVuklL8QQtwI/ApYDnwnNb26upqPP/7YFm19ob29nYKCArtlHBGtM7ssWrSotq/H2NpBIqWMSynvAEq6SbNBUd9JXhlVR+u0n7yaTQgxWAjhSbw2Es9+4N30fZNVDtVpb2+3W0JGaJ32k9NqpBBiHHACcIYQYi1wJ7BSCPE2sEoIUQN8AtyRSx0ajQrkujdyDzAz5a2fp7w+qbdjk41o1SksLLRbQkZonfZjWweJRm2i0Si1tbWEQqG8fq9pmhiGGnMt/H4/5eXlWbvwK2u2ZLev6gSDQUdcjfuqs7a2lkAgwPjx4xHisGHSnBGNRpWo1Ugpqa+vp7a2lgkTJmTlM9W4hGiUIxQKUVZWllejqYQQgrKysqyW7Mqaze1WttDtghPGhKB/Ou0wmipVSMj++atzZmk45Yqq0p+jN5yi0ym/e39Q9hdwSputra3NbgkZ4RSdyelQRyIajfLwww8zf/58Fi1alGNV2UFZs2k0SR555BHeeeedLu8tXryY8vJyli1bRmVlJTt37rRHXB9QtmHkcjnjjhufz2e3hIwYqM7fvvQxWz9vzpIaOGl0CbddcPJh76dXd6WUPPHEEwQCAaqqqjre37JlC5WVlfj9fnbs2MH+/fs59thjs6YvFyhrNqe0MZzSkeMUneltttdee43bb7+dSy65hB07dnD88cezdu1atm3bxuuvv04gEKCmpoaysjImT56M1+vlk08+YePGjTQ2NnLrrbdy1VVXccYZZ/DEE0+watUqhg8fbsu5KfsLOKnN5oQeyYHq7K4UygXxeLzLhXbdunX8+te/5vrrr+eBBx5g8eLFzJgxg+OOO45zzjmHqVOncuqppzJ+/HimTp3KZZddxrx585g2bRrPPPMMPp+P4cOHU1FRwdatW22tMTmj+NAclaxfv57GxkYee+wxAoEATz/9NA0NDb0es2HDBqqrq6muruapp56itLQUwzAYNmyY7U0TZc1md8ZkitfrtVtCRjhFZ2qptmLFCu677z6uvPJKFi5cSHV1NUuXLj3sGCEEpmlimiZ+v58lS5YA8Oqrr9La2po37UdCm22AOOVP7BSdyTbb008/zfr166mvrwesOZMjRoxg0aJFPP7442zevJk33niDhoYGpkyZwrJly9i0aRNLly7lgQceYNKkSRw6dIj29na2b9/O66+/bn/TREqp5OOmm26STuDgwYN2S8iIvurcunVrjpT0TiQSseV7e6KnfAB+I/v4n1a2ZNNovm4oazZdjcwuTtHplCGf/qDsmTnFbEfLoHa+0HMjbSAZpkx1VOrt6g2n6NQBfzQ9Ih0SBUzrtB9lzeaUursKdxVnglN0fp2rkcpO13LKXD6ntIWconMgF9lnn32WLVu2sHnzZl544YXsicoSyv6jbR+AzJBgMIjf77dbxhFxis5kwJ9169Zx8cUX873vfY/Kykr+8Y9/UFpayt13391t6bdp0yY2bNjA3XffzYoVK2xQfmSUNZtT6u5OadBnReej5x3+3snVMP0aiAThyXmHp1fOh9Mug7Z6eObyzvcXvNLtVyR/99NPP52JEydy8cUXU1VVxRVXXMGkSZOYPXs2c+fOPey4LVu2dJTeF154YZ9PLR8o2zBySpvNKdVdp+jsqc3W3NxMS0sLo0aN4s033+SZZ57h8ssv59FHH2XPnj288847bNq0iddee41gMMhvf/tbHn/8ca64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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(3,2.3))\n", "\n", "ref = 1\n", "\n", "Gyr_H = feedback(H, 1) # フィードバック結合\n", "y, t = step(Gyr_H, np.arange(0,2,0.01)) # ステップ応答\n", "\n", "ax.plot(t,y*ref, label='After')\n", "\n", "e_std = 1 - dcgain(Gyr_H) # 直流ゲイン\n", "print('error=', e_std) \n", "print('------------------')\n", "\n", "Gyr_P = feedback(P, 1)\n", "y, t = step(Gyr_P, np.arange(0,2,0.01))\n", "pltargs = {'ls': '--', 'label': 'Before'}\n", "ax.plot(t, y*ref, **pltargs)\n", " \n", "e_std = 1 - dcgain(Gyr_P)\n", "print('error=', e_std) \n", "print('------------------')\n", "\n", "ax.axhline(ref, color=\"k\", linewidth=0.5) \n", "plot_set(ax, 't', 'y', 'best')\n", "ax.set_xlim(0,2)\n", "ax.set_ylim(0,1.5)\n", "\n", "# fig.savefig(\"loop_leadlag_step.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.002197319270490002" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1/455.1" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "直流ゲイン = -0.01910765674282279\n", "------------------\n", "直流ゲイン = -6.020599913279624\n", "------------------\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(2, 1, figsize=(4,3.5)) \n", "\n", "gain, phase, w = bode(Gyr_H, logspace(-1,2), plot=False)\n", "ax[0].semilogx(w, 20*np.log10(gain), label='After')\n", "ax[1].semilogx(w, phase*180/np.pi, label='After')\n", "\n", "print('直流ゲイン =', 20*np.log10(Gyr_H.dcgain())) \n", "print('------------------')\n", "\n", "\n", "gain, phase, w = bode(Gyr_P, logspace(-1,2), plot=False)\n", "ax[0].semilogx(w, 20*np.log10(gain), **pltargs)\n", "ax[1].semilogx(w, phase*180/np.pi, **pltargs)\n", "\n", "print('直流ゲイン =', 20*np.log10(Gyr_P.dcgain())) \n", "print('------------------')\n", " \n", "bodeplot_set(ax, 3)\n", "\n", "ax[1].set_ylim(-210,10)\n", "ax[1].set_yticks([-180,-90,0])\n", "\n", "fig.tight_layout()\n", "# fig.savefig(\"loop_leadlag_fbbode.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "低周波ゲインが0[dB]に近くなり,また,バンド幅が大きくなっている" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "以下おまけ:ロールオフ特性" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [], "source": [ "K3 = tf([10000], [1, 200, 10000])" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$$\\frac{2.228 \\times 10^{5} s^2 + 2.716 \\times 10^{6} s + 4.541 \\times 10^{6}}{0.2548 s^4 + 60.98 s^3 + 4554 s^2 + 1.005 \\times 10^{5} s + 1 \\times 10^{4}}$$" ], "text/plain": [ "TransferFunction(array([ 222777.81215621, 2715938.49472496, 4540765.74082507]), array([2.54781081e-01, 6.09816943e+01, 4.55390643e+03, 1.00454781e+05,\n", " 1.00000000e+04]))" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Kroll = k*K1*K2*K3\n", "Kroll" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-----------------\n", "(GM, PM, wpc, wgc)\n", "(2.9132215561172337, 38.65353985012163, 39.58702030222329, 19.400976996799614)\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(2, 1, figsize=(4,3.5)) \n", "\n", "H = P*k*K1*K2\n", "\n", "Hroll = P*Kroll\n", "gain, phase, w = bode(H, logspace(-2,3), plot=False) #開ループ系のボード線図\n", "ax[0].semilogx(w, 20*np.log10(gain), label='$\\mathcal{H}$', lw=1, c='k')\n", "ax[1].semilogx(w, phase*180/np.pi, label='$\\mathcal{H}$', lw=1, c='k')\n", "\n", "gm, pm, wpc, wgc = margin(H) #開ループ系のゲイン余裕,位相余裕,位相交差周波数,ゲイン交差周波数\n", "ax[0].scatter(wgc,0, c='k')\n", "\n", "gain, phase, w = bode(Hroll, logspace(-2,3), plot=False) #制御対象Pのボード線図\n", "ax[0].semilogx(w, 20*np.log10(gain), ls='--', label='$\\mathcal{H}_{rolloff}$', lw=1, c='k')\n", "ax[1].semilogx(w, phase*180/np.pi, ls='--', label='$\\mathcal{H}_{rolloff}$', lw=1, c='k')\n", "\n", "gm, pm, wcp, wgc = margin(P) #制御対象Pのゲイン余裕,位相余裕,位相交差周波数,ゲイン交差周波数\n", "ax[0].scatter(wgc,0, c='k')\n", "\n", "bodeplot_set(ax, 3)\n", "ax[0].set_ylim(-110,80)\n", "ax[1].set_ylim(-210,10)\n", "ax[1].set_yticks([-180,-120,-60,0])\n", "fig.tight_layout()\n", "\n", "print('-----------------')\n", "print('(GM, PM, wpc, wgc)')\n", "print(margin(Hroll))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }