From 8d106191e742170bac0a3d7b3c3ef29cb36169b5 Mon Sep 17 00:00:00 2001 From: Thomas Dehaeze Date: Thu, 28 Apr 2022 18:09:22 +0200 Subject: [PATCH] Update Content - 2022-04-28 --- ...omen18_advan_motion_contr_precis_mechat.md | 163 +++++++++++++++++- content/zettels/feedback_control.md | 13 ++ content/zettels/feedforward_control.md | 13 ++ content/zettels/passive_damping.md | 16 ++ content/zettels/tuned_mass_damper.md | 10 +- .../ox-hugo/oomen18_control_architecture.png | Bin 0 -> 5852 bytes static/ox-hugo/oomen18_generalized_plant.png | Bin 0 -> 3792 bytes 7 files changed, 208 insertions(+), 7 deletions(-) create mode 100644 content/zettels/feedback_control.md create mode 100644 content/zettels/feedforward_control.md create mode 100644 content/zettels/passive_damping.md create mode 100644 static/ox-hugo/oomen18_control_architecture.png create mode 100644 static/ox-hugo/oomen18_generalized_plant.png diff --git a/content/article/oomen18_advan_motion_contr_precis_mechat.md b/content/article/oomen18_advan_motion_contr_precis_mechat.md index 53e6e2d..a8ed478 100644 --- a/content/article/oomen18_advan_motion_contr_precis_mechat.md +++ b/content/article/oomen18_advan_motion_contr_precis_mechat.md @@ -1,7 +1,7 @@ +++ title = "Advanced motion control for precision mechatronics: control, identification, and learning of complex systems" author = ["Dehaeze Thomas"] -draft = true +draft = false +++ Tags @@ -16,12 +16,171 @@ Author(s) Year : 2018 + +## Introduction {#introduction} + +Control of positioning systems is traditionally simplified by an excellent mechanical design. +In particular, the mechanical design is such that the system is stiff and highly reproducible. +In conjunction with moderate performance requirements, the control bandwidth is well-below the resonance frequency of the flexible mechanics as is shown in Figure [1](#figure--fig:oomen18-next-gen-loop-gain) (a). +As a result, the system can often be completely **decoupled** in the frequency range relevant for control. +Consequently, the control design is divided into well-manageable SISO control loops. + +Although motion control design is well developed, presently available techniques mainly apply to positioning systems that behave as a rigid body in the relevant frequency range. +On one hand, increasing performance requirements hamper the validity of this assumption, since the bandwidth has to increase, leading to flexible dynamics in the cross-over region, see Figure [1](#figure--fig:oomen18-next-gen-loop-gain) (b). + {{< figure src="/ox-hugo/oomen18_next_gen_loop_gain.png" caption="Figure 1: Envisaged developments in motion systems. In traditional motion systems, the control bandwidth takes place in the rigid-body region. In the next generation systemes, flexible dynamics are foreseen to occur within the control bandwidth." >}} -## Bibliography {#bibliography} +## Traditional motion control {#traditional-motion-control} + +In the frequency range that is relevant for control, the dynamical behavior is mainly determined by the mechanics. +In particular, the mechanics can typically be described as: + +\begin{equation} +G\_m = \sum\_{i=1}^{n\_{RB}} \frac{c\_i b\_i^T}{s^2} + \sum\_{n\_{RB} + 1}^{n\_s} \frac{c\_i b\_i^T}{s^2 + 2\xi \omega\_i s + \omega\_i^2} +\end{equation} + +where the first term refers to rigid body modes and the second term to flexible modes. + +- \\(n\_{RB}\\) is the number of rigid body modes +- \\(c\_i \in \mathbb{R}^{n\_y}\\) and \\(b\_i \in \mathbb{R}^{n\_u}\\) are associated with the mode shapes +- \\(\xi\_i, \omega\_i \in \mathbb{R}\_+\\) + +In traditional positioning systems, the number of actuators \\(n\_u\\) and sensors \\(n\_y\\) equals the number of rigid body modes \\(n\_{RB}\\) and are positioned such that the matrix \\(\sum\_{i=1}^{n\_{RB}} c\_i b\_i^T\\) is invertible. +In this case, matrices \\(T\_u\\) and \\(T\_y\\) can be selected such that: + +\begin{equation} +G = T\_y G\_m T\_u = \frac{1}{s^2} I\_{n\_{RB}} + G\_{\text{flex}} +\end{equation} + +A tradition motion control architecture is shown in Figure [2](#figure--fig:oomen18-control-architecture). + + + +{{< figure src="/ox-hugo/oomen18_control_architecture.png" caption="Figure 2: Traditional motion control architecture" >}} + + +### Traditional feedforward design {#traditional-feedforward-design} + +[Feedforward Control]({{< relref "feedforward_control.md" >}}) can effectively compensate for reference induced error signals. +In particular, \\(f\\) should be selected such that \\(r - G f\\) is minimized. +In the low frequency range, the system is decoupled and \\(G\_{\text{flex}}\\) can be ignored, in which case \\(f = G^{-1} r\\). +In practice, the feedforward signal is selected as \\(f = ms^2 r\\). + + +### Traditional feedback design {#traditional-feedback-design} + +The [Feedback Controller]({{< relref "feedback_control.md" >}}) has to minimize \\((1 + GK)^{-1}(\delta - v)\\). +The main idea is that rigid body decoupling of \\(G\\) enables the shaping of the diagonal elements of \\(K\\) through a decentralized feedback controller. +As a result, each diagonal element of \\(K\\) may be tuned independently. +Typically, a PID controller is tuned through manual loop-shaping, followed by notch filters to account the the flexible modes that hamper stability and/or performance. + + +### Traditional design procedure {#traditional-design-procedure} + +Traditional motion control design divides the multi-variable control design problems into sub-problems that are manageable by manual control design. +The traditional procedure consists of the following steps: + +- identify an FRF of \\(G\_m\\) +- decouple the plant to obtain an FRF of \\(G\\) +- design \\(K\\) using manual loop-shaping, consisting of PID with notches +- tune a feedforward controller, e.g. \\(f = m s^2 r\\) + + +## Precision motion control developments {#precision-motion-control-developments} + + +### Challenges {#challenges} + +High performance mechatronic systems are becoming lighter and lighter. +Such lightweight systems exhibit predominant flexible dynamical behavior, as well as an increased susceptibility to disturbances. + +This leads to several challenges for motion control design: + +- **Unmeasured performance variables** due to spatio-temporal deformations. + In particular, the location where the performance is desired may not be directly measured. +- **Many additional inputs and outputs** can be exploited to actively control the flexible dynamical behavior. + Spatially distributed actuators can actively provide stiffness and damping to the mechanical deformations. +- **Position dependent behavior** is almost unavoidable. + For instance in gantry stage designs, mass distribution change due to motion, leading to additional position-dependent behavior. + A key challenge lies in handling the position dependence of future systems +- A **system-of-systems perspective** on motion control design provides a strong potential for performance enhancement of the overall system. + In particular, typical manufacturing machines and scientific instruments involves multiple controlled subsystems where the two subsystems have to move relative to each other. + Performance limitations in each subsystem will negatively impact the overall performance. + A joint design enables that individual subsystems will be able to compensate each other's limitations. + A main challenge lies in an increase of the complexity of the control problem. +- **Thermal dynamics**, in addition to mechanical deformations are expected to become substantially more important due to increasing performance specifications. +- **Vibrations**, such as flow induced vibrations of cooling liquids and floor vibrations, have to be attenuated. + + +### Generalized plant approach {#generalized-plant-approach} + +A generalized plant framework allows for a systematic way to address the future challenges in advanced motion control. + +The generalized plant is depicted in Figure [3](#figure--fig:oomen18-generalized-plant): + +- \\(z\\) are the performance variables +- \\(y\\) and \\(u\\) are the measured variables and measured variables, respectively +- \\(w\\) contains the exogenous inputs, typically including both reference signals and disturbances. + + + +{{< figure src="/ox-hugo/oomen18_generalized_plant.png" caption="Figure 3: Generalized plant setup" >}} + + +## Feedback and Identification for Control {#feedback-and-identification-for-control} + +Feedback control is essential to deal with uncertainty in the system dynamics \\(G\\) and disturbances \\(v\\). +Indeed, the main goal of feedback si to render the system insensitive to such uncertainties. + + +### Norm-based control {#norm-based-control} + +A model-based design is foreseen to be able to systematically address the above mentioned challenges. + +To specify the control goal, the criterion: + +\begin{equation} +J(G, K) = \\| \mathcal{F}\_l(P(G), K) \\| +\end{equation} + +is posed, where the goal is to compute: + +\begin{equation} +K\_{\text{opt}} = \text{arg} \text{min}\_{K} J(G\_0, K) +\end{equation} + +Where \\(\\| \cdot \\|\\) denotes a suitable norm, e.g. \\(\mathcal{H}\_2\\) or \\(\mathcal{H}\_\infty\\), and \\(\mathcal{F}\_l\\) denotes a lower linear fractional transformation. + +\\(G\_0\\) denotes the true system, which is generally unknown and represented by a model \\(\hat{G}\\). + + +### Nominal modeling for control {#nominal-modeling-for-control} + +To arrive at a mathematically tractable optimization problem, knowledge of the true system is represented through a model \\(\hat{G}\\). +The central question is how to obtain such a model that is suitable for controller design. +[System Identification]({{< relref "system_identification.md" >}}) as opposed to first principles modeling, is an inexpensive, fast and accurate approach to obtain such a model. +Indeed, the machine is often already built, enabling direct experimentation. + +The model \\(\hat{G}\\) that results from system identification is an approximation of the true system \\(G\_0\\) for several reasons: + +- motion systems often contains an infinite number of modes \\(n\_s\\), while a model of limited complexity may be desirable from a control perspective +- parasitic non-linearities are present, including nonlinear damping +- identification experiments are based on finite time disturbed observations, leading to uncertainties on estimated parameters + + +### Toward robust motion control {#toward-robust-motion-control} + +Doing a model based control design using an identified model may not work well due to a lack of robustness. +Indeed, if \\(K(\hat{G})\\) is designed solely based on \\(\hat{G}\\), there is no reason to assume that it achieves a suitable level of performance on \\(G\_0\\). +This motivates a robust control design, where the **model quality is explicitly addressed during controller synthesis**. + + +## Feedforward and learning {#feedforward-and-learning} + +## References
Oomen, Tom. 2018. “Advanced Motion Control for Precision Mechatronics: Control, Identification, and Learning of Complex Systems.” Ieej Journal of Industry Applications 7 (2): 127–40. doi:10.1541/ieejjia.7.127.
diff --git a/content/zettels/feedback_control.md b/content/zettels/feedback_control.md new file mode 100644 index 0000000..d552db6 --- /dev/null +++ b/content/zettels/feedback_control.md @@ -0,0 +1,13 @@ ++++ +title = "Feedback Control" +author = ["Dehaeze Thomas"] +draft = false ++++ + +Tags +: + +## References + +
+
diff --git a/content/zettels/feedforward_control.md b/content/zettels/feedforward_control.md new file mode 100644 index 0000000..403c2d5 --- /dev/null +++ b/content/zettels/feedforward_control.md @@ -0,0 +1,13 @@ ++++ +title = "Feedforward Control" +author = ["Dehaeze Thomas"] +draft = false ++++ + +Tags +: + +## References + +
+
diff --git a/content/zettels/passive_damping.md b/content/zettels/passive_damping.md new file mode 100644 index 0000000..b6029b0 --- /dev/null +++ b/content/zettels/passive_damping.md @@ -0,0 +1,16 @@ ++++ +title = "Passive Damping" +author = ["Dehaeze Thomas"] +draft = false ++++ + +Tags +: + + +## Bibliography {#bibliography} + +## References + +
+
diff --git a/content/zettels/tuned_mass_damper.md b/content/zettels/tuned_mass_damper.md index 4c299da..75a3897 100644 --- a/content/zettels/tuned_mass_damper.md +++ b/content/zettels/tuned_mass_damper.md @@ -23,16 +23,16 @@ The TMD then has large internal damping such that the energy is dissipated (i.e. The optimal parameters of the tuned mass damper can be roughly estimated as follows: -- Choose the maximum mass of the TMD \\(m\\) and note: - \\[ \mu = m/M \\] - where \\(M\\) is the mass of the system to damp +- Choose the maximum acceptable mass of the TMD \\(m\_2\\) and note: + \\[ \mu = m\_2/m\_1 \\] + where \\(m\_1\\) is the mass of the system to damp - The resonance frequency of the tuned mass damper should be chosen to be \\[ \nu = \frac{1}{1 + \mu} \approx 1 \\] As usually we have \\(\mu \ll 1\\) (i.e. TMD mass small compared to the structure mass, for instance few percent) - This allows to compute the stiffness of the TMD: - \\[ k = \nu^2 K \mu = K \frac{\mu}{(1 + \mu)^2} \\] + \\[ k\_2 = \nu^2 k\_1 \mu = k\_1 \frac{\mu}{(1 + \mu)^2} \\] - Finally, the optimal damping of the TMD is: - \\[ \xi = \sqrt{\frac{3\mu}{8 (1 + \mu)}} \Longrightarrow c = 2 \xi \sqrt{k m} \\] + \\[ \xi\_2 = \sqrt{\frac{3 \mu}{8 (1 + \mu)}} \Longrightarrow c\_2 = 2 \xi\_2 \sqrt{k\_2 m\_2} \\] ## Simple TMD model {#simple-tmd-model} diff --git a/static/ox-hugo/oomen18_control_architecture.png b/static/ox-hugo/oomen18_control_architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..de9f86d445c8cc8c28ffbfb1e3d2cad08ba79bf1 GIT binary patch literal 5852 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 mpYdjjCB!xS??Yd2B;+EuOyZXcn>lb&g;