{"id":21889,"date":"2025-01-04T00:30:01","date_gmt":"2025-01-04T00:30:01","guid":{"rendered":"https:\/\/liquidinstruments.com\/?p=21889"},"modified":"2025-08-29T04:40:59","modified_gmt":"2025-08-29T04:40:59","slug":"loop-shaping-frequency-domain-tuning","status":"publish","type":"post","link":"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/","title":{"rendered":"Loop shaping: frequency domain tuning","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<div class=\"wpb-content-wrapper\"><p>[vc_row][vc_column]\n    <div data-component='call_to_action' class='vc_row-fluid cta w-full mx-auto cta-outline'>\n      <div class='flex w-full gap-4 flex-col items-center'>\n      \n        <div class='max-w-prose wpb_column vc_column_container vc_col-sm-12'>\n          <div class='vc_column-inner'>\n            \n            <p>In this series, we provide a practical reference for designing and debugging loops by presenting a short introduction to feedback control as encountered in the frequency domain.<\/p>\n\n          <\/div>\n        <\/div>\n        <div class=' flex flex-row gap-4 xs:flex-col'>\n          <a class=\"button relative gap-2 items-center blue filled medium  \" href=\"https:\/\/cta-service-cms2.hubspot.com\/web-interactives\/public\/v1\/track\/click?encryptedPayload=AVxigLL53H1g5u5G%2BWdrdEyA8UnIGHoMphgPd6RS891o0xbtMcFdDmpN7gOBMFuO4jn7aQi0hH1H0jODE36DYY5czQIRK90a5RwmQwJHMZz%2B1cp8fBK62k5NWMzaLXj43OjxToPNJGSX7sMb1l9Bww51ahIlOA%2F%2Fj5pHGosXb1MmBcZOOkljIYVsNLprUntC1boukdjGDrNfYSyzVRLmLSu0DaI7FWlg0Kvp%2Fgso142%2BQ8BTRlzPoFEuWF7oRjJOpkk%3D&#038;portalId=3954510\" title=\"Get the frequency control guide\" target=\"\"><span class=\"flex-1\">Get the frequency control guide<\/span><\/a>\n  <a class=\"button relative gap-2 items-center blue filled medium  \" href=\"https:\/\/cta-service-cms2.hubspot.com\/web-interactives\/public\/v1\/track\/click?encryptedPayload=AVxigLJkWgTRNoIXu%2BUpVr%2F3gV1SakKkDtzdPLFT3D6%2B9zOHpAqrEbsY4tuSIV8t4J2KKSZwbV9gB0N0NsbopmrpB3sR%2FEqdBZvZ3ruerNTXPltixWtl8cAyI1Q7XRKFk7hAAWpdl1WvuQln6quCTJpQMjJwU9I4LSjXAIi6ky3n%2B9qZGb5Myi4JtcyceXURphMi9BOgcycD0vux3Xjo&#038;portalId=3954510\" title=\"Control systems solutions\" target=\"\"><span class=\"flex-1\">Control systems solutions<\/span><\/a>\n  \n  \n        <\/div>\n      <\/div>\n    <\/div>[vc_column_text]<\/p>\n<h2><b>4.1<\/b> <b>Introduction<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">All properties of a loop are determined by its open-loop transfer function (OLTF), labeled <\/span><i><span style=\"font-weight: 400;\">G, <\/span><\/i><span style=\"font-weight: 400;\">and it is this quantity that we must modify in order to achieve the required performance objectives. However, the transfer functions of the plant and sensor are generally fixed, with the only available degrees of freedom found in the controller. We thus tune the controller transfer function <\/span><i><span style=\"font-weight: 400;\">C<\/span><\/i><span style=\"font-weight: 400;\">, to modify the OLTF. Frequency-domain tuning of this type is often termed <\/span><a href=\"https:\/\/www.mathworks.com\/help\/robust\/loop-shaping-synthesis.html\" target=\"_blank\" rel=\"noopener\"><i><span style=\"font-weight: 400;\">loop shaping<\/span><\/i><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p class=\"p1\"><a href=\"https:\/\/liquidinstruments.com\/application-notes\/defining-a-transfer-function\/\">Part 1<\/a> establishes the definition of a transfer function and provides the components from which one can construct control loop block diagrams to model elaborate systems. In <a href=\"https:\/\/liquidinstruments.com\/application-notes\/constructing-feedback-control-loops\/\">Part 2<\/a> we demonstrate how feedback control systems can be used to suppress disturbances or track a process set point. The complications associated with noisy sensors are also discussed. Unlike open-loop systems, devices under feedback control have the potential to become unstable and there is tension between performance and robustness. Ultimately, delays in signal propagation can impose the most stringent limit. These issues are treated in <a href=\"https:\/\/liquidinstruments.com\/application-notes\/assessing-stability-in-feedback-control-loops\/\">Part 3<\/a>. In the frequency domain, most parameters of a feedback system can be linked to its open-loop transfer function. Here in Part 4 we explain how to measure this important quantity and provide a list of functions often used in shaping it. <a href=\"https:\/\/liquidinstruments.com\/application-notes\/understanding-actuator-saturation-in-control-systems\/\">Part 5<\/a> describes one method of avoiding actuator saturation and, in doing so, introduces ideas useful to the treatment of multiple actuators. Our series concludes in&nbsp; with the study of the PID controller. This common control architecture is generally considered from a time-domain point-of-view; we illustrate the complementary frequency-domain representation.<\/p>\n<h2><b>4.2<\/b> <b>Design principles<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Based on the discussions in the previous parts of <a href=\"https:\/\/liquidinstruments.com\/frequency-domain-control-the-ultimate-guide-to-control-loops\/\">this series<\/a>, the design rules are as follows:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Make |<\/span><i><span style=\"font-weight: 400;\">G<\/span><\/i><span style=\"font-weight: 400;\">| as large as possible to suppress disturbances and track the set point well (see (<\/span><span style=\"font-weight: 400;\">2.1<\/span><span style=\"font-weight: 400;\">))<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Make |<\/span><i><span style=\"font-weight: 400;\">G<\/span><\/i><span style=\"font-weight: 400;\">| as small as possible so as to not corrupt our measurements with sensor noise (see (<\/span><span style=\"font-weight: 400;\">2.2<\/span><span style=\"font-weight: 400;\">))<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">All the while maintaining good stability\/robustness (see <\/span><span style=\"font-weight: 400;\">\u00a7<\/span><span style=\"font-weight: 400;\">3.2<\/span><span style=\"font-weight: 400;\">)<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">The task is further complicated by the relationship between the slope of the OLTF and its phase<\/span><\/p>\n<p style=\"text-align: center;\"><span style=\"font-weight: 400;\">\\(|G| sim f_n Rightarrow angle G sim n times 90^{circ}\\).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">To realize high gain, we must have steep slopes, which rob the loop of phase and push it towards instability.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Finding a valid loop seems like an impossible task until one realizes that these competing requirements generally apply over different frequency bands. Disturbances are largest at low frequencies, stability is defined only by behavior around unity gain and sensor noise is most often dominant at higher frequencies.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Thus, we construct a controller from basic elements (see <\/span><span style=\"font-weight: 400;\">\u00a7<\/span><span style=\"font-weight: 400;\">A<\/span><span style=\"font-weight: 400;\">) to realize high gain at low frequencies , acceptable phase margin at the UGF, and low gain at high frequencies (see e.g. the loop of Figure <\/span><span style=\"font-weight: 400;\">3.1<\/span><span style=\"font-weight: 400;\">).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Loop shaping is an iterative process. The first loops serve only to achieve basic closed-loop control and enable system characterization and model verification (see <\/span><span style=\"font-weight: 400;\">\u00a7<\/span><span style=\"font-weight: 400;\">4.3<\/span><span style=\"font-weight: 400;\">). It may be that the free-running noise or plant\/sensor transfer functions are not known or cannot be measured open-loop. From this point, one can quantify the free-running (by \u2018undoing\u2019 the effects of the measured loop) and closed-loop outputs. Then, one can discuss the feasibility of the requirements and start to optimize the loop in the presence of real-world effects such as delays, resonances, saturation etc.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">With practice and experience, tuning loops will become second nature, with techniques such as increasing gain to reduce noise, adding compensators to recover a few degrees of phase, notching resonances, and more..<\/span><\/p>\n<h2><b>4.3<\/b> <b>Measuring the OLTF<\/b><\/h2>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-21905 size-full\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.53.11\u202fAM.png\" alt=\"combat output disturbance with feedforward diagram\" width=\"745\" height=\"286\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.53.11\u202fAM.png 745w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.53.11\u202fAM-300x115.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.53.11\u202fAM-600x230.png 600w\" sizes=\"(max-width: 745px) 100vw, 745px\" \/><\/p>\n<p style=\"text-align: center;\"><span style=\"font-weight: 400;\">Figure 4.1: Combat output disturbance with feedforward.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The open-loop transfer function may be measured experimentally using a Frequency Response Analyzer . If the system allows it, such measurements may truly be made with the loop open, simply by connecting the components in series and measuring the response. More often, representative dynamics may only be probed around the desired operating point, i.e. with a system under closed-loop control.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Fortunately, it is possible to measure the OLTF from measurements taken when the loop is closed. Introducing an adder at any point in the loop allows the injection of a stimulus or excitation signal, \\(X_{exc}\\).<\/span><span style=\"font-weight: 400;\">&nbsp;The ratio of the signals on either side of the adder,<\/span><\/p>\n<p style=\"text-align: center;\"><span style=\"font-weight: 400;\">\\(X_A = frac{1}{1+HCS}X_{exc}\\) and<\/span><\/p>\n<p style=\"text-align: center;\"><span style=\"font-weight: 400;\">\\(X_A = frac{1}{1+HCS}X_{exc}\\),<\/span><\/p>\n<p><span style=\"font-weight: 400;\">gives the negative of the OLTF,<\/span><\/p>\n<p style=\"text-align: center;\"><span style=\"font-weight: 400;\">\\(X_A\/X_B = -HCS\\),<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Here we have ignored DC terms related to \\(X_{sp}\\)<\/span><span style=\"font-weight: 400;\">&nbsp;<\/span><span style=\"font-weight: 400;\">as we are interested only in the AC response to \\(X_{exc}\\)<\/span><span style=\"font-weight: 400;\">. In practice, such terms will not survive the coherent detection process in the <a href=\"https:\/\/liquidinstruments.com\/products\/integrated-instruments\/frequency-response-analyzer\/\" rel=\"noopener\">Frequency Response Analyzer<\/a>.&nbsp;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Generally, the ratio \\(X_A\/X_B\\)<\/span><span style=\"font-weight: 400;\">&nbsp;<\/span><span style=\"font-weight: 400;\">is measured directly, as opposed to combining two independent measurements. In this way it can be difficult to achieve good SNR at low and high frequencies due to dynamic range limitations (see Figure <\/span><span style=\"font-weight: 400;\">4.2<\/span><span style=\"font-weight: 400;\">). Often loops are measured only around unity gain with resulting data used to anchor analytical models.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Closing the loop for the first time to enable OLTF measurements can be difficult. The most efficient approach is to build a model using assumed, measured or specified transfer functions of the individual components. From this approximate description of the system a basic functional loop can be implemented.<\/span><\/p>\n<h2><b>4.3.1<\/b> <b>OLTF measurements with Moku<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">The Moku <a href=\"https:\/\/liquidinstruments.com\/products\/integrated-instruments\/frequency-response-analyzer\/\" rel=\"noopener\">Frequency Response Analyzer<\/a> can be used to make measurements of the OLTF in <a href=\"https:\/\/liquidinstruments.com\/multi-instrument-mode\/\">Multi-Instrument Mode<\/a> with the <a href=\"https:\/\/liquidinstruments.com\/products\/integrated-instruments\/pid-controller\/\" target=\"_blank\" rel=\"noopener\">PID Controller<\/a> instrument being used as an adder (see Figure <\/span><span style=\"font-weight: 400;\">4.3<\/span><span style=\"font-weight: 400;\">). The Frequency Response Analyzer should be used in In\u00f7Out mode, with equal amplitudes set for both output channels (even if only one output is to be used). The output of the Math channel with equation \u2212<\/span><i><span style=\"font-weight: 400;\">B\/A <\/span><\/i><span style=\"font-weight: 400;\">gives the desired result.<\/span><\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-21906 size-full\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.53.18\u202fAM.png\" alt=\"Magnitudes of \\(X_A\/X_{exc}\\)&nbsp;and \\(X_B\/X_{esc}\\)&nbsp;for a typical open-loop transfer function HCS\" width=\"940\" height=\"576\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.53.18\u202fAM.png 940w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.53.18\u202fAM-300x184.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.53.18\u202fAM-768x471.png 768w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.53.18\u202fAM-600x368.png 600w\" sizes=\"(max-width: 940px) 100vw, 940px\" \/><\/p>\n<p style=\"text-align: center;\"><span style=\"font-weight: 400;\">Figure 4.2: Magnitudes of \\(X_A\/X_{exc}\\)<\/span><span style=\"font-weight: 400;\">&nbsp;<\/span><span style=\"font-weight: 400;\">and \\(X_B\/X_{esc}\\)<\/span><span style=\"font-weight: 400;\">&nbsp;<\/span><span style=\"font-weight: 400;\">for a typical open-loop transfer function <\/span><i><span style=\"font-weight: 400;\">HCS<\/span><\/i><span style=\"font-weight: 400;\">. At high and low frequencies it can be challenging to make high-fidelity measurements of both quantities simultaneously as their responses differ by several orders of magnitude. As such, open-loop transfer function measurements are often made only around unity gain.<\/span><\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-21907 size-full\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.53.45\u202fAM.png\" alt=\"Moku's Multi-Instrument Mode configured to enable measurements of a system\u2019s open-loop transfer function using the Frequency Response Analyzer and PID Controller instruments\" width=\"696\" height=\"990\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.53.45\u202fAM.png 696w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.53.45\u202fAM-211x300.png 211w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.53.45\u202fAM-300x427.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.53.45\u202fAM-600x853.png 600w\" sizes=\"(max-width: 696px) 100vw, 696px\" \/><\/p>\n<p style=\"text-align: center;\"><span style=\"font-weight: 400;\">Figure 4.3: Moku&#8217;s <a href=\"https:\/\/liquidinstruments.com\/multi-instrument-mode\/\">Multi-Instrument Mode<\/a> enables measurements of a system\u2019s open-loop transfer function using the Frequency Response Analyzer and PID Controller instruments. Configured as shown above, the PID Controller plays the role of an adder, enabling excitation signals to be injected. A simple summing node could equally be constructed using <a href=\"https:\/\/liquidinstruments.com\/moku-cloud-compile\/\">Moku Cloud Compile<\/a>.<\/span><\/p>\n<h2><b>4.4<\/b> <b>Summary<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Optimizing loop shape is generally the most time-consuming stage of creating a feedback control system. However, guided by a good model and OLTF measurements made using the process outlined above, we need not operate blind. Implementing the design principles (high gain at noisy frequencies; low gain elsewhere, all the time with an eye on stability) using a collection of the basic functions detailed in Appendix A is a proven strategy for success.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Next, in <a href=\"https:\/\/liquidinstruments.com\/application-notes\/understanding-actuator-saturation-in-control-systems\/\">Part 5<\/a><\/span><span style=\"font-weight: 400;\">, we\u2019ll consider how to manage a loop that works for a short period but loses lock when an actuator saturates.<\/span><\/p>\n<h3><b>Appendix A:<\/b> <b>Useful expressions<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">We present here a series of expressions which the reader may find useful when modelling their systems or designing controller transfer functions. These expressions have been evaluated and are plotted in Figure <\/span><span style=\"font-weight: 400;\">4.4<\/span><span style=\"font-weight: 400;\">. Here, \\(omega_0\\)<\/span><span style=\"font-weight: 400;\">&nbsp;<\/span><span style=\"font-weight: 400;\">describes the corner or center&nbsp; frequency in angular units. The dimensionless quantity <\/span><i><span style=\"font-weight: 400;\">Q <\/span><\/i><span style=\"font-weight: 400;\">is related to the filter\u2019s full-width half-maximum (FWHM) bandwidth&nbsp; \u2206 via \\(Q = omega_0 \/ Delta\\)<\/span><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">We also note that the solutions of the equation<\/span><\/p>\n<p style=\"text-align: center;\"><span style=\"font-weight: 400;\">\\(s^2 + left(omega_0 \/ Qright)s + omega_0^2 = 0\\)<\/span><\/p>\n<p style=\"text-align: left;\"><span style=\"font-weight: 400;\">are<\/span><\/p>\n<p style=\"text-align: center;\"><span style=\"font-weight: 400;\">\\(s = -frac{omega_0}{2Q} pm i omega_0 sqrt{1- left( frac{1}{2Q} right)^2}\\).<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Poles and zeros<\/span><\/li>\n<\/ul>\n<p style=\"text-align: center;\"><span style=\"font-weight: 400;\">\\(H_p(s) = frac{1}{1+s \/ omega_0}\\)<\/span><\/p>\n<p style=\"text-align: center;\"><span style=\"font-weight: 400;\">\\(H_z(s) = 1+s \/ omega_0\\)<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Complex poles and zeros (second order)<\/span><\/li>\n<\/ul>\n<p style=\"text-align: center;\"><span style=\"font-weight: 400;\">\\(H_p(s) = frac{omega_0^2}{s^2 + left(omega_0 \/ Qright)s + omega_0^2}\\)<\/span><\/p>\n<p style=\"text-align: center;\"><span style=\"font-weight: 400;\">\\(H_z(s) = frac{s^2 + left(omega_0 \/ Qright)s + omega_0^2}{omega_0^2}\\)<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Notch\/resonant gain<\/span><\/li>\n<\/ul>\n<p style=\"text-align: center;\"><span style=\"font-weight: 400;\">\\(H_{notch\/res}(s) = frac{s^2 + left(omega_0 \/ Q_zright)s + omega_0^2}{s^2 + left(omega_0 \/ Q_pright)s + omega_0^2}\\)<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">The gain or attenuation of the filter at \\(omega_0\\)<\/span><span style=\"font-weight: 400;\">&nbsp;<\/span><span style=\"font-weight: 400;\">is given by \\(Q_p\/Q_z\\)<\/span><i><span style=\"font-weight: 400;\">&nbsp;<\/span><\/i><span style=\"font-weight: 400;\">and its <\/span><i><span style=\"font-weight: 400;\">Q <\/span><\/i><span style=\"font-weight: 400;\">is approximately \\(Q_p\\)<\/span><span style=\"font-weight: 400;\">.<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">High pass<\/span><\/li>\n<\/ul>\n<p style=\"text-align: center;\"><span style=\"font-weight: 400;\">\\(H_{hp}(s) = frac{s^2}{s^2 + left(omega_0 \/ Qright)s + omega_0^2}\\)<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Bandpass<\/span><\/li>\n<\/ul>\n<p style=\"text-align: center;\"><span style=\"font-weight: 400;\">\\(H_{bp}(s) = frac{left(omega_0 \/ Qright)s}{s^2 + left(omega_0 \/ Qright)s + omega_0^2}\\)<\/span><\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-21908\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.54.50\u202fAM.png\" alt=\"The \u2018useful expressions\u2019 plotted for arbitrarily chosen parameters (\\(omega_0\\)&nbsp;=100 Hz , Q = 10, gain\/attenuation= 10) to show their functional forms\" width=\"800\" height=\"666\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.54.50\u202fAM.png 834w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.54.50\u202fAM-300x250.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.54.50\u202fAM-768x639.png 768w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.54.50\u202fAM-600x499.png 600w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-21909\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.54.58\u202fAM.png\" alt=\"\" width=\"800\" height=\"661\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.54.58\u202fAM.png 841w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.54.58\u202fAM-300x248.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.54.58\u202fAM-768x635.png 768w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.54.58\u202fAM-600x496.png 600w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/p>\n<p style=\"text-align: center;\"><span style=\"font-weight: 400;\">Figure 4.4: The \u2018useful expressions\u2019 detailed above plotted for arbitrarily chosen parameters (\\(omega_0\\)<\/span><span style=\"font-weight: 400;\">&nbsp;<\/span><span style=\"font-weight: 400;\">=100 Hz , <\/span><i><span style=\"font-weight: 400;\">Q <\/span><\/i><span style=\"font-weight: 400;\">= 10, gain\/attenuation= 10) to show their functional forms.<\/span><\/p>\n<p>[\/vc_column_text][\/vc_column][\/vc_row][vc_row][vc_column][\/vc_column][\/vc_row]<\/p>\n<\/div>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>[vc_row][vc_column][vc_column_text] 4.1 Introduction All properties of a loop are determined by its open-loop transfer function (OLTF), labeled G, and it is this quantity that we must modify in order to achieve the required performance objectives. However, the transfer functions of the plant and sensor are generally fixed, with the only available degrees of freedom found [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":49,"featured_media":21906,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[5],"tags":[315],"class_list":["post-21889","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application-notes","tag-controlcharacterization","site-category-frequency-response-analyzer","site-category-pid-controller"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.0 (Yoast SEO v27.0) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How to Tune a Controller Transfer Function<\/title>\n<meta name=\"description\" content=\"Learn how to conduct loop shaping in the frequency domain in order to modify an open-loop transfer function\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Loop shaping: frequency domain tuning\" \/>\n<meta property=\"og:description\" content=\"Learn how to conduct loop shaping in the frequency domain in order to modify an open-loop transfer function\" \/>\n<meta property=\"og:url\" content=\"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/\" \/>\n<meta property=\"og:site_name\" content=\"Liquid Instruments\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/LiquidInstruments\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-01-04T00:30:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-29T04:40:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.53.18\u202fAM.png\" \/>\n\t<meta property=\"og:image:width\" content=\"940\" \/>\n\t<meta property=\"og:image:height\" content=\"576\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jason Ball\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@liquidinstrmnts\" \/>\n<meta name=\"twitter:site\" content=\"@liquidinstrmnts\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jason Ball\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/\"},\"author\":{\"name\":\"Jason Ball\",\"@id\":\"https:\/\/liquidinstruments.com\/#\/schema\/person\/9e95fcc52e40f7754fd85152937b68fa\"},\"headline\":\"Loop shaping: frequency domain tuning\",\"datePublished\":\"2025-01-04T00:30:01+00:00\",\"dateModified\":\"2025-08-29T04:40:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/\"},\"wordCount\":1596,\"publisher\":{\"@id\":\"https:\/\/liquidinstruments.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.53.18\u202fAM.png\",\"keywords\":[\"controlcharacterization\"],\"articleSection\":[\"Application notes\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/\",\"url\":\"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/\",\"name\":\"How to Tune a Controller Transfer Function\",\"isPartOf\":{\"@id\":\"https:\/\/liquidinstruments.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.53.18\u202fAM.png\",\"datePublished\":\"2025-01-04T00:30:01+00:00\",\"dateModified\":\"2025-08-29T04:40:59+00:00\",\"description\":\"Learn how to conduct loop shaping in the frequency domain in order to modify an open-loop transfer function\",\"breadcrumb\":{\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/#primaryimage\",\"url\":\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.53.18\u202fAM.png\",\"contentUrl\":\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.53.18\u202fAM.png\",\"width\":940,\"height\":576},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/liquidinstruments.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Loop shaping: frequency domain tuning\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/liquidinstruments.com\/#website\",\"url\":\"https:\/\/liquidinstruments.com\/\",\"name\":\"Liquid Instruments\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/liquidinstruments.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/liquidinstruments.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/liquidinstruments.com\/#organization\",\"name\":\"Liquid Instruments\",\"url\":\"https:\/\/liquidinstruments.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/liquidinstruments.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/i0.wp.com\/liquidinstruments.com\/wp-content\/uploads\/2020\/10\/BrandMark-Preferred-RGB-Color.png?fit=1000%2C924&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/liquidinstruments.com\/wp-content\/uploads\/2020\/10\/BrandMark-Preferred-RGB-Color.png?fit=1000%2C924&ssl=1\",\"width\":1000,\"height\":924,\"caption\":\"Liquid Instruments\"},\"image\":{\"@id\":\"https:\/\/liquidinstruments.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/LiquidInstruments\/\",\"https:\/\/x.com\/liquidinstrmnts\",\"https:\/\/www.instagram.com\/liquidinstruments\/\",\"https:\/\/www.linkedin.com\/company\/liquidinstruments\/\",\"https:\/\/www.youtube.com\/c\/LiquidInstruments\",\"https:\/\/vimeo.com\/liquidinstruments\"],\"hasMerchantReturnPolicy\":{\"@type\":\"MerchantReturnPolicy\",\"merchantReturnLink\":\"https:\/\/liquidinstruments.com\/support\/warranty-repairs-and-service\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/liquidinstruments.com\/#\/schema\/person\/9e95fcc52e40f7754fd85152937b68fa\",\"name\":\"Jason Ball\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/liquidinstruments.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b0e7502ee45ec194baeba408e7aa6836fee5a4bdef40b7b10bd8788a1b32ad6c?s=96&d=wavatar&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b0e7502ee45ec194baeba408e7aa6836fee5a4bdef40b7b10bd8788a1b32ad6c?s=96&d=wavatar&r=g\",\"caption\":\"Jason Ball\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/jason-ball-quantum\/\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to Tune a Controller Transfer Function","description":"Learn how to conduct loop shaping in the frequency domain in order to modify an open-loop transfer function","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/","og_locale":"en_US","og_type":"article","og_title":"Loop shaping: frequency domain tuning","og_description":"Learn how to conduct loop shaping in the frequency domain in order to modify an open-loop transfer function","og_url":"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/","og_site_name":"Liquid Instruments","article_publisher":"https:\/\/www.facebook.com\/LiquidInstruments\/","article_published_time":"2025-01-04T00:30:01+00:00","article_modified_time":"2025-08-29T04:40:59+00:00","og_image":[{"width":940,"height":576,"url":"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.53.18\u202fAM.png","type":"image\/png"}],"author":"Jason Ball","twitter_card":"summary_large_image","twitter_creator":"@liquidinstrmnts","twitter_site":"@liquidinstrmnts","twitter_misc":{"Written by":"Jason Ball","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/#article","isPartOf":{"@id":"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/"},"author":{"name":"Jason Ball","@id":"https:\/\/liquidinstruments.com\/#\/schema\/person\/9e95fcc52e40f7754fd85152937b68fa"},"headline":"Loop shaping: frequency domain tuning","datePublished":"2025-01-04T00:30:01+00:00","dateModified":"2025-08-29T04:40:59+00:00","mainEntityOfPage":{"@id":"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/"},"wordCount":1596,"publisher":{"@id":"https:\/\/liquidinstruments.com\/#organization"},"image":{"@id":"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/#primaryimage"},"thumbnailUrl":"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.53.18\u202fAM.png","keywords":["controlcharacterization"],"articleSection":["Application notes"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/","url":"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/","name":"How to Tune a Controller Transfer Function","isPartOf":{"@id":"https:\/\/liquidinstruments.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/#primaryimage"},"image":{"@id":"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/#primaryimage"},"thumbnailUrl":"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.53.18\u202fAM.png","datePublished":"2025-01-04T00:30:01+00:00","dateModified":"2025-08-29T04:40:59+00:00","description":"Learn how to conduct loop shaping in the frequency domain in order to modify an open-loop transfer function","breadcrumb":{"@id":"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/#primaryimage","url":"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.53.18\u202fAM.png","contentUrl":"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/12\/Screenshot-2024-12-19-at-11.53.18\u202fAM.png","width":940,"height":576},{"@type":"BreadcrumbList","@id":"https:\/\/liquidinstruments.com\/application-notes\/loop-shaping-frequency-domain-tuning\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/liquidinstruments.com\/"},{"@type":"ListItem","position":2,"name":"Loop shaping: frequency domain tuning"}]},{"@type":"WebSite","@id":"https:\/\/liquidinstruments.com\/#website","url":"https:\/\/liquidinstruments.com\/","name":"Liquid Instruments","description":"","publisher":{"@id":"https:\/\/liquidinstruments.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/liquidinstruments.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/liquidinstruments.com\/#organization","name":"Liquid Instruments","url":"https:\/\/liquidinstruments.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/liquidinstruments.com\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/liquidinstruments.com\/wp-content\/uploads\/2020\/10\/BrandMark-Preferred-RGB-Color.png?fit=1000%2C924&ssl=1","contentUrl":"https:\/\/i0.wp.com\/liquidinstruments.com\/wp-content\/uploads\/2020\/10\/BrandMark-Preferred-RGB-Color.png?fit=1000%2C924&ssl=1","width":1000,"height":924,"caption":"Liquid Instruments"},"image":{"@id":"https:\/\/liquidinstruments.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/LiquidInstruments\/","https:\/\/x.com\/liquidinstrmnts","https:\/\/www.instagram.com\/liquidinstruments\/","https:\/\/www.linkedin.com\/company\/liquidinstruments\/","https:\/\/www.youtube.com\/c\/LiquidInstruments","https:\/\/vimeo.com\/liquidinstruments"],"hasMerchantReturnPolicy":{"@type":"MerchantReturnPolicy","merchantReturnLink":"https:\/\/liquidinstruments.com\/support\/warranty-repairs-and-service\/"}},{"@type":"Person","@id":"https:\/\/liquidinstruments.com\/#\/schema\/person\/9e95fcc52e40f7754fd85152937b68fa","name":"Jason Ball","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/liquidinstruments.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/b0e7502ee45ec194baeba408e7aa6836fee5a4bdef40b7b10bd8788a1b32ad6c?s=96&d=wavatar&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b0e7502ee45ec194baeba408e7aa6836fee5a4bdef40b7b10bd8788a1b32ad6c?s=96&d=wavatar&r=g","caption":"Jason Ball"},"sameAs":["https:\/\/www.linkedin.com\/in\/jason-ball-quantum\/"]}]}},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/posts\/21889","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/users\/49"}],"replies":[{"embeddable":true,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/comments?post=21889"}],"version-history":[{"count":30,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/posts\/21889\/revisions"}],"predecessor-version":[{"id":25574,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/posts\/21889\/revisions\/25574"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/media\/21906"}],"wp:attachment":[{"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/media?parent=21889"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/categories?post=21889"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/tags?post=21889"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}