1use dsmc::logger::DataStorage;
7use dsmc::{BodeDiagramPlotter, NyquistPlotter, TransferFunction};
8
9fn main() {
10
11 let omega = 300.0;
12
13 let kp = 3.0 * omega * omega;
14 let kd = 3.0 * omega;
15 let ki = omega* omega * omega;
16
17 let iter = 10;
18 for i in 0..=iter {
19 let alpha = 0.8 + 0.4 / iter as f64 * i as f64;
20
21 let mut storage_n = DataStorage::new(format!("./out/nyquist/nyquist_alpha_{:.02}.csv", alpha)).unwrap();
22 let mut storage_b = DataStorage::new(format!("./out/bode/bode_alpha_{:.02}.csv", alpha)).unwrap();
23
24 let plotter_n = NyquistPlotter::<f64>::new(10.0, 2000.0, 0.01);
25 let plotter_b = BodeDiagramPlotter::<f64>::new(0.1, 1000.0, 0.01, true);
26
27 let tf_main = TransferFunction::continuous(&[alpha * kd, alpha * kp, alpha * ki], &[1.0, 0.0]);
28 let tf_pl = TransferFunction::continuous(&[1.0], &[1.0, 0.0, 0.0]);
29 let tf = tf_main * tf_pl;
30 {
31 let responses = plotter_n.plot(&tf);
32 for res in responses {
33 storage_n.add(&res).unwrap();
34 }
35 }
36 {
37 let responses = plotter_b.frequency_response_s(&tf);
38 for res in responses {
39 storage_b.add(&res).unwrap();
40 }
41 }
42
43 storage_n.close().unwrap();
44 storage_b.close().unwrap();
45 }
46
47}