Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6c02e11

Browse files
committed
Interfaz gráfica actualizada para permitir la parametrización de dos controladores PID con Ts y Setpoint diferentes, se necesitan modificar el sistema de hilos (no se tocaron desde el último commit)
1 parent 2715ee7 commit 6c02e11

File tree

2 files changed

+102
-52
lines changed

2 files changed

+102
-52
lines changed

ThreadServer.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -102,12 +102,12 @@ public void terminate()
102102
{
103103
this.alive = false;
104104
this.finish = 1;
105-
System.out.format("La cantidad de elementos es: %d\n", this.gui.process_output.getItemCount());
105+
System.out.format("La cantidad de elementos es: %d\n", this.gui.output_I.getItemCount());
106106

107107
// option to save the captured data
108-
double[][] logged_signal = this.gui.process_output.toArray();
109-
double[][] control_signal = this.gui.process_input.toArray();
110-
double[][] setpoint_signal = this.gui.process_setpoint.toArray();
108+
double[][] logged_signal = this.gui.output_I.toArray();
109+
double[][] control_signal = this.gui.input_I.toArray();
110+
double[][] setpoint_signal = this.gui.setpoint_I.toArray();
111111

112112
// Dialogo para seleccionar donde almacenar el archivo
113113
JFileChooser fileChooser = new JFileChooser();
@@ -136,11 +136,11 @@ public void run()
136136

137137
// get user parameters
138138
this.usbPort = Integer.parseInt(this.gui.txt_port.getText());
139-
this.ts = Double.parseDouble(this.gui.txt_sample_time.getText());
140-
this.setpoint = Double.parseDouble(this.gui.txt_setpoint.getText());
141-
this.Kp = Double.parseDouble(this.gui.txt_kp.getText());
142-
this.Ki = Double.parseDouble(this.gui.txt_ki.getText());
143-
this.Kd = Double.parseDouble(this.gui.txt_kd.getText());
139+
this.ts = Double.parseDouble(this.gui.txt_sample_time_I.getText());
140+
this.setpoint = Double.parseDouble(this.gui.txt_setpoint_I.getText());
141+
this.Kp = Double.parseDouble(this.gui.txt_kp_T.getText());
142+
this.Ki = Double.parseDouble(this.gui.txt_ki_T.getText());
143+
this.Kd = Double.parseDouble(this.gui.txt_kd_T.getText());
144144

145145
// Send parámeters usbPort Ts, setpoint, & PID parameters
146146
try
@@ -173,9 +173,9 @@ public void run()
173173
System.out.println("No se pudo hacer la lectura de la señal o la transferencia del finish");
174174
e.printStackTrace();
175175
}
176-
this.gui.process_output.add(time_value, output_process_val);
177-
this.gui.process_input.add(time_value, input_process_val);
178-
this.gui.process_setpoint.add(time_value, this.setpoint);
176+
this.gui.output_I.add(time_value, output_process_val);
177+
this.gui.input_I.add(time_value, input_process_val);
178+
this.gui.setpoint_I.add(time_value, this.setpoint);
179179
}
180180
try
181181
{

Window.java

Lines changed: 90 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,25 @@
1717
public class Window extends JFrame
1818
{
1919
private static final long serialVersionUID = 1L;
20-
final XYSeries process_output;
21-
final XYSeries process_input;
22-
final XYSeries process_setpoint;
20+
final XYSeries output_I;
21+
final XYSeries input_I;
22+
final XYSeries setpoint_I;
23+
final XYSeries output_II;
24+
final XYSeries input_II;
25+
final XYSeries setpoint_II;
2326
final XYSeriesCollection collectionData;
2427
final JFreeChart display;
2528
public JTextField txt_port;
26-
public JTextField txt_setpoint;
27-
public JTextField txt_sample_time;
28-
public JTextField txt_kp;
29-
public JTextField txt_ki;
30-
public JTextField txt_kd;
29+
public JTextField txt_setpoint_I;
30+
public JTextField txt_sample_time_I;
31+
public JTextField txt_setpoint_II;
32+
public JTextField txt_sample_time_II;
33+
public JTextField txt_kp_T;
34+
public JTextField txt_ki_T;
35+
public JTextField txt_kd_T;
36+
public JTextField txt_kp_F;
37+
public JTextField txt_ki_F;
38+
public JTextField txt_kd_F;
3139
public JButton btn_server_init;
3240
public JButton btn_server_stop;
3341

@@ -41,57 +49,99 @@ public Window()
4149

4250
/*Parameters panel*/
4351
JPanel parametersPanel = new JPanel();
44-
JLabel lbl_param_1 = new JLabel("Port Number");
45-
JLabel lbl_param_2 = new JLabel("Setpoint (v)");
46-
JLabel lbl_param_3 = new JLabel("Sample Time (s)");
47-
JLabel lbl_param_4 = new JLabel("Kp");
48-
JLabel lbl_param_5 = new JLabel("Ki");
49-
JLabel lbl_param_6 = new JLabel("Kd");
52+
JLabel lbl_param_1 = new JLabel("Port Number");
53+
JLabel lbl_param_2 = new JLabel("Setpoint (v)");
54+
JLabel lbl_param_2_2 = new JLabel("Setpoint (v)");
55+
JLabel lbl_param_3 = new JLabel("Sample Time (s)");
56+
JLabel lbl_param_3_2 = new JLabel("Sample Time (s)");
57+
JLabel lbl_param_4 = new JLabel("<HTML><u>PID Controller I</u></HTML>");
58+
JLabel lbl_param_5 = new JLabel("Kp");
59+
JLabel lbl_param_6 = new JLabel("Ki");
60+
JLabel lbl_param_7 = new JLabel("Kd");
61+
JLabel lbl_param_8 = new JLabel("<HTML><u>PID Controller II</u></HTML>");
62+
JLabel lbl_param_9 = new JLabel("Kp");
63+
JLabel lbl_param_10 = new JLabel("Ki");
64+
JLabel lbl_param_11 = new JLabel("Kd");
65+
JLabel lbl_dummi_1 = new JLabel(" ");
66+
JLabel lbl_dummi_2 = new JLabel(" ");
5067
txt_port = new JTextField("16");
51-
txt_setpoint = new JTextField("1");
52-
txt_sample_time = new JTextField("0.5");
53-
txt_kp = new JTextField("0");
54-
txt_ki = new JTextField("0");
55-
txt_kd = new JTextField("0");
68+
txt_setpoint_I = new JTextField("1");
69+
txt_sample_time_I = new JTextField("0.5");
70+
txt_setpoint_II = new JTextField("1");
71+
txt_sample_time_II = new JTextField("0.5");
72+
txt_kp_T = new JTextField("0");
73+
txt_ki_T = new JTextField("0");
74+
txt_kd_T = new JTextField("0");
75+
txt_kp_F = new JTextField("0");
76+
txt_ki_F = new JTextField("0");
77+
txt_kd_F = new JTextField("0");
5678
txt_port.setHorizontalAlignment(JTextField.CENTER);
57-
txt_setpoint.setHorizontalAlignment(JTextField.CENTER);
58-
txt_sample_time.setHorizontalAlignment(JTextField.CENTER);
59-
txt_kp.setHorizontalAlignment(JTextField.CENTER);
60-
txt_ki.setHorizontalAlignment(JTextField.CENTER);
61-
txt_kd.setHorizontalAlignment(JTextField.CENTER);
79+
txt_setpoint_I.setHorizontalAlignment(JTextField.CENTER);
80+
txt_sample_time_I.setHorizontalAlignment(JTextField.CENTER);
81+
txt_setpoint_II.setHorizontalAlignment(JTextField.CENTER);
82+
txt_sample_time_II.setHorizontalAlignment(JTextField.CENTER);
83+
txt_kp_T.setHorizontalAlignment(JTextField.CENTER);
84+
txt_ki_T.setHorizontalAlignment(JTextField.CENTER);
85+
txt_kd_T.setHorizontalAlignment(JTextField.CENTER);
86+
txt_kp_F.setHorizontalAlignment(JTextField.CENTER);
87+
txt_ki_F.setHorizontalAlignment(JTextField.CENTER);
88+
txt_kd_F.setHorizontalAlignment(JTextField.CENTER);
6289
btn_server_init = new JButton("Start Control");
6390
btn_server_stop = new JButton("Stop Control");
6491
btn_server_init.setActionCommand("start");
6592
btn_server_stop.setActionCommand("stop");
66-
parametersPanel.setLayout(new GridLayout(8, 2,10,10));
93+
parametersPanel.setLayout(new GridLayout(14, 2,10,10));
6794
parametersPanel.add(lbl_param_1);
6895
parametersPanel.add(txt_port);
96+
parametersPanel.add(lbl_param_4);
97+
parametersPanel.add(lbl_dummi_1);
6998
parametersPanel.add(lbl_param_2);
70-
parametersPanel.add(txt_setpoint);
99+
parametersPanel.add(txt_setpoint_I);
71100
parametersPanel.add(lbl_param_3);
72-
parametersPanel.add(txt_sample_time);
73-
parametersPanel.add(lbl_param_4);
74-
parametersPanel.add(txt_kp);
101+
parametersPanel.add(txt_sample_time_I);
75102
parametersPanel.add(lbl_param_5);
76-
parametersPanel.add(txt_ki);
103+
parametersPanel.add(txt_kp_T);
77104
parametersPanel.add(lbl_param_6);
78-
parametersPanel.add(txt_kd);
105+
parametersPanel.add(txt_ki_T);
106+
parametersPanel.add(lbl_param_7);
107+
parametersPanel.add(txt_kd_T);
108+
parametersPanel.add(lbl_param_8);
109+
parametersPanel.add(lbl_dummi_2);
110+
parametersPanel.add(lbl_param_2_2);
111+
parametersPanel.add(txt_setpoint_II);
112+
parametersPanel.add(lbl_param_3_2);
113+
parametersPanel.add(txt_sample_time_II);
114+
parametersPanel.add(lbl_param_9);
115+
parametersPanel.add(txt_kp_F);
116+
parametersPanel.add(lbl_param_10);
117+
parametersPanel.add(txt_ki_F);
118+
parametersPanel.add(lbl_param_11);
119+
parametersPanel.add(txt_kd_F);
79120
parametersPanel.add(btn_server_init);
80121
parametersPanel.add(btn_server_stop);
81122
mainPanel.add(parametersPanel, BorderLayout.EAST);
82123
this.getContentPane().add(mainPanel, BorderLayout.EAST);
83124

84125
// Setup the Chart panel
85-
process_input = new XYSeries("Process Input");
86-
process_output = new XYSeries("Process Output");
87-
process_setpoint = new XYSeries("Setpoint");
88-
process_input.clear();
89-
process_output.clear();
90-
process_setpoint.clear();
126+
input_I = new XYSeries("PID I Signal");
127+
output_I = new XYSeries("Process Output I");
128+
setpoint_I = new XYSeries("Setpoint I");
129+
input_II = new XYSeries("PID II Signal");
130+
output_II = new XYSeries("Process Output II");
131+
setpoint_II = new XYSeries("Setpoint II");
132+
input_I.clear();
133+
output_I.clear();
134+
setpoint_I.clear();
135+
input_II.clear();
136+
output_II.clear();
137+
setpoint_II.clear();
91138
collectionData = new XYSeriesCollection();
92-
collectionData.addSeries(process_input);
93-
collectionData.addSeries(process_output);
94-
collectionData.addSeries(process_setpoint);
139+
collectionData.addSeries(input_I);
140+
collectionData.addSeries(output_I);
141+
collectionData.addSeries(setpoint_I);
142+
collectionData.addSeries(input_II);
143+
collectionData.addSeries(output_II);
144+
collectionData.addSeries(setpoint_II);
95145
display = ChartFactory.createXYLineChart("Realtime Process Dynamics",
96146
"Time",
97147
"Amplitude",

0 commit comments

Comments
 (0)