diff --git a/.github/workflows/update-flake-lock.yaml b/.github/workflows/update-flake-lock.yaml deleted file mode 100644 index 1b320d6..0000000 --- a/.github/workflows/update-flake-lock.yaml +++ /dev/null @@ -1,24 +0,0 @@ -name: update-flake-lock -on: - workflow_dispatch: # allows manual triggering - schedule: - - cron: '0 0 * * 0' # runs weekly on Sunday at 00:00 - -jobs: - lockfile: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: cachix/install-nix-action@v25 - with: - nix_path: nixpkgs=channel:nixos-unstable - extra_nix_config: | - trusted-public-keys = cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= - substituters = https://cache.garnix.io?priority=41 https://cache.nixos.org/ - access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} - - name: Update flake.lock - uses: DeterminateSystems/update-flake-lock@main - with: - pr-title: "nix: Update flake.lock" # Title of PR to be created - pr-labels: | # Labels to be set on the PR - automated diff --git a/main/50d3bdaf.md b/main/50d3bdaf.md new file mode 100644 index 0000000..51e79a3 --- /dev/null +++ b/main/50d3bdaf.md @@ -0,0 +1,10 @@ +--- +date: 2024-05-03 +tags: + - status/ongoing + - control-system +--- + +# Time Response of First-Order System + + diff --git a/main/53f31a4e.md b/main/53f31a4e.md index 457c9af..7ce49a8 100644 --- a/main/53f31a4e.md +++ b/main/53f31a4e.md @@ -1,5 +1,5 @@ --- -date: 2024-05-03 +date: 2024-05-04 tags: - control-system --- @@ -38,7 +38,7 @@ The closed-loop [transfer function](6f158a97.md) $C(s)/R(s)$ of the second-order Solving for the [poles](6f158a97.md) of the *general second-order transfer function*, -> $\displaystyle s^2 + 2\zeta\omega_{n}s + \omega_{n}^2 = 0$ +> The characteristic equation is $(\displaystyle s^2 + 2\zeta\omega_{n}s + \omega_{n}^2 = 0)$ > > $\displaystyle s^2 + 2\zeta\omega_{n}s + (\zeta\omega_{n})^2 - (\zeta\omega_{n})^2 + \omega_{n}^2 = 0$ > @@ -49,6 +49,8 @@ Solving for the [poles](6f158a97.md) of the *general second-order transfer funct > Then, the poles are located at > > $\boxed{\displaystyle s = -\zeta\omega_{n} \pm \omega_{n}\sqrt{1 - \zeta^2} = -\sigma_{d} \pm j\,\omega_{d}}$ +> +> which can be graphically represented on the [$s$-plane](6f158a97.md) plot or ***pole-zero map***. The *natural frequency* $(\omega_{n})$ can also be found from the poles by using the pythagorean theorem, diff --git a/main/5ab15bd7.md b/main/5ab15bd7.md index 13b3e51..0a7397a 100644 --- a/main/5ab15bd7.md +++ b/main/5ab15bd7.md @@ -1,5 +1,5 @@ --- -date: 2024-05-01 +date: 2024-05-04 tags: - control-system --- diff --git a/main/6f158a97.md b/main/6f158a97.md index 0082bad..34d04fd 100644 --- a/main/6f158a97.md +++ b/main/6f158a97.md @@ -1,5 +1,5 @@ --- -date: 2023-09-06 +date: 2024-05-06 tags: - circuit - frequency @@ -47,4 +47,8 @@ In general, a transfer function $\mathbf{H}(\omega)$ in the *s*-domain can be ex > $\boxed{\mathbf{H}(s) = \frac{\mathbf{N}(s)}{\mathbf{D}(s)} = K\frac{(s - z_1)(s - z_2)\cdots(s - z_m)}{(s - p_1)(s - p_2)\cdots(s - p_n)}}$ > -> where $s = j\omega$ is the complex frequency, K is a constant, $z_1,\,z_2,\,\dots,\,z_m$ are the zeros of the transfer function, and $p_1,\,p_2,\,\dots,\,p_n$ are the poles of the transfer function. +> where $(s = \sigma + j\omega)$ is the complex frequency, K is a constant, $z_1,\,z_2,\,\dots,\,z_m$ are the zeros of the transfer function, and $p_1,\,p_2,\,\dots,\,p_n$ are the poles of the transfer function. + +> The complex frequency $s$***-plane*** plot of the poles and zeros graphically portrays the character of the natural [transient response](c225601a.md) of the [system](5ab15bd7.md). + +![](./media/transfer-function-pole-zero-plot.svg) diff --git a/main/c225601a.md b/main/c225601a.md new file mode 100644 index 0000000..4f4e9e5 --- /dev/null +++ b/main/c225601a.md @@ -0,0 +1,53 @@ +--- +date: 2024-05-05 +tags: + - control-system +--- + +# Time Response + +The ***time response*** of a [control system](5ab15bd7.md) consists of two parts: the *transient response* and the *steady-state response*. + +After applying input $r(t)$ to the control system, the output $c(t)$ takes certain time to reach steady state. So, the output will be in transient state till it goes to a steady state. + +> ***Transient response*** describes the system's behavior as it transitions from its initial state to its final state, immediately following a change or disturbance. + +> ***Steady-state response*** characterizes how the system output behaves as time approaches infinity, once the transient effects have faded away and the system has reached a stable condition. + +Thus, the system response $c(t)$ may be written as + +> $\boxed{\displaystyle c(t) = c_{tr}(t) + c_{ss}(t)}$ +> +> where $c_{tr}$ is the transient response, and $c_{ss}$ is the steady-state response. + +See: [Complete Response of a Circuit](3dd672e8.md) + +## Transient Response Specifications + +![](./media/transient-response-specification.svg) + +### Delay Time + +> The ***delay time*** $(t_d)$ is the time required for the response to reach half the final value the very first time. + +### Rise Time + +> The ***rise time*** $(t_r)$ is the time required for the response to rise from $10\%$ to $90\%$, $5\%$ to $95\%$, or $0\%$ to $100\%$ of its final value. + +### Peak Time + +> The ***peak time*** $(t_p)$ is the time required for the response to reach the first peak of the overshoot. + +### Overshoot + +> The ***overshoot*** is when a signal exceeds its target. It is often associated with ***ringing*** (oscillation of a signal). The ***undershoot*** is the same phenomenon in the opposite direction. + +> The ***maximum overshoot*** $(M_{p})$ is the amount that the waveform overshoots the steady-state (final) value, or value at the peak time $(t_p)$. + +The amount of the maximum (percent) overshoot directly indicates the [relative stability](cbcacf19.md) of the system. + +### Settling Time + +> The ***settling time*** $(t_s)$ is the time required for the response curve to reach and stay within a range about the final value of size specified by absolute percentage of the final value (usually $2\%$ or $5\%$ percentage error criterion). + +The settling time $(t_s)$ is related to the largest [time constant](50d3bdaf.md) $(\tau)$ of the control system. diff --git a/main/cbcacf19.md b/main/cbcacf19.md new file mode 100644 index 0000000..6077a0c --- /dev/null +++ b/main/cbcacf19.md @@ -0,0 +1,10 @@ +--- +date: 2024-05-04 +tags: + - status/ongoing + - control-system +--- + +# Stability + + diff --git a/main/d576ff9e.md b/main/d576ff9e.md new file mode 100644 index 0000000..4bc7a28 --- /dev/null +++ b/main/d576ff9e.md @@ -0,0 +1,80 @@ +--- +date: 2024-05-04 +tags: + - status/ongoing + - control-system +--- + +# Time Response of Second-Order System + +The [closed-loop](5ab15bd7.md) [transfer function](6f158a97.md) of the [second-order system](53f31a4e.md) is given by + +> $\boxed{\displaystyle \mathrm{CLTF} = G(s) = \frac{C(s)}{R(s)} = \frac{\omega_{n}^2}{s^2 + 2\zeta\omega_{n}s + \omega_{n}^2}}$ +> +> where $\zeta$ is the ***damping ratio***; and $\omega_{n}$ is the ***undamped natural frequency***, expressed in radians per second (rad/s). + +The damping case is determined by the [damping ratio](a61ce3dd.md) $\zeta$ from the poles. + +> The closed-loop [poles](6f158a97.md) of the second-order [transfer function](6f158a97.md) $G(s)$ are +> +> $\boxed{\displaystyle s = -\zeta\omega_{n} \pm \omega_{n}\sqrt{1 - \zeta^2} = -\sigma_{d} \pm j\,\omega_{d}}$ +> +> where $(\alpha = \sigma_{d})$ is the ***damping attenutation***, expressed in nepers per second (Np/s); and $\omega_{d}$ is the ***damped natural frequency***, expressed in radians per second (rad/s). + +See: [Second-Order Circuits](29569029.md) + +## Step Response + +Using the [unit-step](58fcc503.md) signal $u(t)$ as an input $r(t)$ to the second-order system, + +> For a unit-step signal, $r(t) = u(t)$, the [Laplace transform](7628ec20.md) of $r(t)$ is +> +> $\boxed{\displaystyle R(s) = \frac{1}{s}}$ + +Then, the ***unit step response*** can be found using $C(s) = R(s)\,G(s)$, followed by the [inverse Laplace transform](c9a77663.md). + +> $\boxed{\displaystyle C(s) = \frac{\omega_{n}^2}{s\left(s^2 + 2\zeta\omega_{n}s + \omega_{n}^2\right)}}$ + +### Undamped Case $(\zeta = 0)$ + +The two poles of $G(s)$ are imaginary, $(s = \pm j\omega_{n})$. + +> Substituting $(\zeta = 0)$ to the transfer function $C(s)$, +> +> $\displaystyle C(s) = \frac{\omega_{n}^2}{s\left(s^2 + \omega_{n}^2\right)} = \frac{1}{s} - \frac{s}{s^2 + \omega_{n}^2}$ +> +> Apply the [inverse Laplace transform](c9a77663.md), +> +> $\boxed{\displaystyle c(t) = \left[1 - \cos(\omega_{n}t)\right]\,u(t)}$ + +So, for undamped case $(\zeta = 0)$, the [transient response](c225601a.md) does not die out, and the unit step response will be a continuous time signal with constant amplitude and frequency. + +![](./media/second-order-undamped-step-response.svg) + +#### Transient Parameters + +- Settling Time $(T_s)$ + + > Since the [transient response](c225601a.md) does not die out, + > + > $\boxed{\displaystyle T_{s} = 0}$ + +### Underdamped Case $(0 < \zeta < 1)$ + +![](./media/second-order-underdamped-step-response.svg) + +#### Transient Parameters + +### Critically Damped Case $(\zeta = 1)$ + +![](./media/second-order-critically-damped-step-response.svg) + +#### Transient Parameters + +### Overdamped Case $(\zeta > 1)$ + +![](./media/second-order-overdamped-step-response.svg) + +#### Transient Parameters + +## Impulse Response diff --git a/main/media/second-order-critically-damped-step-response.svg b/main/media/second-order-critically-damped-step-response.svg new file mode 100644 index 0000000..2253e71 --- /dev/null +++ b/main/media/second-order-critically-damped-step-response.svg @@ -0,0 +1,286 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/main/media/second-order-overdamped-step-response.svg b/main/media/second-order-overdamped-step-response.svg new file mode 100644 index 0000000..b1ef58d --- /dev/null +++ b/main/media/second-order-overdamped-step-response.svg @@ -0,0 +1,376 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/main/media/second-order-undamped-step-response.svg b/main/media/second-order-undamped-step-response.svg new file mode 100644 index 0000000..cdad27d --- /dev/null +++ b/main/media/second-order-undamped-step-response.svg @@ -0,0 +1,242 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/main/media/second-order-underdamped-step-response.svg b/main/media/second-order-underdamped-step-response.svg new file mode 100644 index 0000000..55a1d62 --- /dev/null +++ b/main/media/second-order-underdamped-step-response.svg @@ -0,0 +1,322 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/main/media/transfer-function-pole-zero-plot.svg b/main/media/transfer-function-pole-zero-plot.svg new file mode 100644 index 0000000..13d8e62 --- /dev/null +++ b/main/media/transfer-function-pole-zero-plot.svg @@ -0,0 +1,287 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/main/media/transient-response-specification.svg b/main/media/transient-response-specification.svg new file mode 100644 index 0000000..6ad9045 --- /dev/null +++ b/main/media/transient-response-specification.svg @@ -0,0 +1,1683 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +