Skip to content

Commit 9911bd4

Browse files
committed
update of README & user guide
1 parent 97993df commit 9911bd4

File tree

6 files changed

+66
-19
lines changed

6 files changed

+66
-19
lines changed

README.md

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,16 @@
66

77
Controllio is a web app which lets Control Systems engineers design & experiment with LTI (linear time-invariant) dynamical systems.
88

9-
So far, functionality has been implemented for:
9+
It provides functionality for both continuous-time (s-domain) & discrete-time (z-domain) systems.
1010

11-
- the analytical computation of the overall transfer function (tf) of a system modeled by interconnected elements in the s-domain
11+
So far, the following features have been implemented:
12+
13+
- the analytical computation of the overall transfer function (tf) of a system modeled by interconnected elements in the s- and z-domains
1214
- the generation of its Bode and Nyquist plots
1315
- the numerical computation of its time response plot
1416
- the numerical computation of its zeros/poles & some characteristic numbers, ex. bandwidth
1517
- the numerical computation of its stability
18+
- the transformation of a tf between continuous and discrete-time domains via approximate methods
1619

1720
> _This is a web GUI tool. For a command-line one, check the [lti-freq-domain-toolbox](https://github.com/istefanis/lti-freq-domain-toolbox)_
1821
@@ -36,6 +39,10 @@ The motivation behind Controllio is to create an open-source tool for studying C
3639
- Polynomial complex roots: Weierstrass / Durand-Kerner algorithm
3740
- Laplace inversion: Talbot algorithm
3841

42+
### Continuous ⇄ discrete-time transform
43+
44+
- Approximate methods: Tustin/Bilinear, Backward difference
45+
3946
### Topology optimization
4047

4148
- A stochastic algorithm to simplify the circuit's topology
@@ -44,9 +51,12 @@ The motivation behind Controllio is to create an open-source tool for studying C
4451

4552
### Ready-made components
4653

47-
- Utilities: integrator / step, exponential decay, sine, phase delay
48-
- Filters: Butterworth
49-
- Controllers: PI, PD, PID
54+
- Continuous-time:
55+
- Utilities: integrator / step, exponential decay, sine, phase delay
56+
- Filters: Butterworth
57+
- Controllers: PI, PD, PID
58+
- Discrete-time:
59+
- Utilities: delay, step
5060

5161
## User Guide
5262

@@ -92,7 +102,7 @@ A User Guide is included in the web app, and can be launched from the main menu
92102

93103
4. Run `npm test` to execute the tests via [Jest](https://jestjs.io/)
94104

95-
> _Current test coverage according to Jest: 63% (statements)_
105+
> _Current test coverage according to Jest: 65% (statements)_
96106
97107
## Code Structure
98108

assets/img/app.png

-357 Bytes
Loading

view/services/feature/readyMadeTfCreationService.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ const init = function () {
228228
],
229229
]);
230230
readyMadeTfsSubsections.push([
231-
"Discrete-time components",
231+
"Discrete-time simple components",
232232
[
233233
["Delay", [1], [1, 0], "discrete"],
234234
["Step", [1, 0], [1, -1], "discrete"],

view/services/feature/userGuideService.js

Lines changed: 35 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,15 @@ const init = function () {
3636
<section class="tab-content" id="popup-window-tab-content-1">
3737
<h3>General</h3>
3838
<p>Controllio is an open-source web app which lets Control Systems engineers design & experiment with LTI (linear time-invariant) dynamical systems.</p>
39-
<p>So far, functionality has been implemented for:</p>
39+
<p>It provides functionality for both continuous-time (s-domain) & discrete-time (z-domain) systems.</p>
40+
<p>So far, the following features have been implemented:</p>
4041
<ul>
41-
<li>the analytical computation of the overall transfer function (tf) of a system modeled by interconnected elements in the s-domain</li>
42+
<li>the analytical computation of the overall transfer function (tf) of a system modeled by interconnected elements in the s- and z-domains</li>
4243
<li>the generation of its Bode and Nyquist plots</li>
4344
<li>the numerical computation of its time response plot</li>
4445
<li>the numerical computation of its zeros/poles & some characteristic numbers, ex. bandwidth</li>
4546
<li>the numerical computation of its stability</li>
47+
<li>the transformation of a tf between continuous and discrete-time domains via approximate methods</li>
4648
</ul>
4749
<h3>Motivation</h3>
4850
<p>The motivation behind Controllio is to create an open-source tool for studying Control Systems, which:</p>
@@ -55,15 +57,29 @@ const init = function () {
5557
</section>
5658
<section class="tab-content" id="popup-window-tab-content-2">
5759
<h3>Modelling a dynamical system</h3>
58-
<p>A linear time-invariant (LTI) dynamical system in the s-domain is represented as a circuit of interconnected elements: transfer functions (tfs) & adders.</p>
60+
<p>A linear time-invariant (LTI) dynamical system in the s- or z-domain is represented as a circuit of interconnected elements: transfer functions (tfs) & adders.</p>
5961
<h3>Elements</h3>
6062
<h4>Transfer functions (tfs)</h4>
61-
<div class="element tf popup-window-tf user-guide-element">
62-
<p>10*s<sup>2</sup> + 2*s + 5</p>
63-
<p>―――――――――――――――</p>
64-
<p>8*s<sup>2</sup> - s + 1</p>
63+
<div class="flex-row-left gap-2">
64+
<div class="flex-column-center">
65+
<div class="element tf popup-window-tf user-guide-element">
66+
<p>10*s<sup>2</sup> + 2*s + 5</p>
67+
<p>―――――――――――――――</p>
68+
<p>8*s<sup>2</sup> - s + 1</p>
69+
</div>
70+
<p class="figure-description">s-domain</p>
71+
</div>
72+
<div class="flex-column-center">
73+
<div class="element tf discrete popup-window-tf user-guide-element">
74+
<p>z<sup>2</sup> - 2*z + 1</p>
75+
<p>―――――――――――――――</p>
76+
<p>z<sup>2</sup> -1.5*z + 0.8</p>
77+
</div>
78+
<p class="figure-description">z-domain</p>
79+
</div>
6580
</div>
6681
<p>To define a transfer function, the lists of the coefficients of its numerator and denominator polynomials must be specified.<p>
82+
<p>For a z-domain tf, the sampling period T is also required.<p>
6783
<p><u>Implementation assumption</u>: Each tf has only one input (another tf, or adder) and multiple outputs. Multiple inputs can be achieved by adding in front of it an adder.</p>
6884
<h4>Adders</h4>
6985
<div class="element adder popup-window-adder user-guide-element"
@@ -79,25 +95,32 @@ const init = function () {
7995
</section>
8096
<section class="tab-content" id="popup-window-tab-content-3">
8197
<h3>Ready-made tfs</h3>
82-
<h4>Simple components</h4>
98+
<h4>Continuous-time</h4>
99+
<h5>Simple components</h5>
83100
<ul>
84101
<li>Integrator / step</li>
85102
<li>Exponential decay</li>
86103
<li>Sine</li>
87104
<li>Phase delay</li>
88105
</ul>
89-
<h4>Filters</h4>
106+
<h5>Filters</h5>
90107
<ul>
91108
<li>Butterworth filter</li>
92109
</ul>
93-
<h4>Controllers</h4>
110+
<h5>Controllers</h5>
94111
<ul>
95112
<li>PI controller
96113
<li>PD controller
97114
<li>PID controller
115+
<p>These are defined by specifying the proportional (Kp), integral (Ki) and/or derivative (Kd) gains respectively. Simple analytical tf computations can also be performed without fixing these parameters.</p>
98116
</ul>
99-
<p>These are defined by specifying the proportional (Kp), integral (Ki) and/or derivative (Kd) gains respectively. Simple analytical transfer function computations can also be performed without fixing these parameters.</p>
100-
</section>
117+
<h4>Discrete-time</h4>
118+
<h5>Simple components</h5>
119+
<ul>
120+
<li>Delay</li>
121+
<li>Step</li>
122+
</ul>
123+
</section>
101124
<section class="tab-content" id="popup-window-tab-content-4">
102125
<h3>Simplification of a block</h3>
103126
<p>To compute analytically the overall transfer function (tf) of a block of interconnected elements, a simplification of its structure must be performed. The goal is to simplify the block either completely (by replacing it with an equivalent total tf) or as much as possible.</p>

view/style/main.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,10 @@ h3 {
185185
align-items: center;
186186
}
187187

188+
.gap-2 {
189+
gap: 2rem;
190+
}
191+
188192
/* Loading spinner */
189193

190194
.loading-spinner {

view/style/popupWindow.css

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,16 @@
116116
font-size: 14px;
117117
}
118118

119+
.popup-window-tab-contents h5 {
120+
font-size: 11px;
121+
margin: 0;
122+
padding-left: 1rem;
123+
}
124+
125+
.popup-window-tab-contents .figure-description {
126+
font-style: italic;
127+
}
128+
119129
/* Custom popup windows: tfs */
120130

121131
.popup-window-tf-content {

0 commit comments

Comments
 (0)