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

Skip to content

Commit 589c5e2

Browse files
committed
El servidor en Java funciona correctamente, gestiona 3 hilos y se grafican los datos de dos controladores PID independientes...la funcionalidad de esta versión está comprobada
1 parent dced44d commit 589c5e2

File tree

3 files changed

+33
-15
lines changed

3 files changed

+33
-15
lines changed

ControlThread.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,14 @@ public class ControlThread extends Thread
1313
private DataOutputStream out;
1414
private DataInputStream in;
1515
private volatile boolean alive = true;
16+
private int threadId;
1617

17-
public ControlThread(Window _gui, Socket _socket, double _setpoint)
18+
public ControlThread(Window _gui, Socket _socket, double _setpoint, int _threadId)
1819
{
1920
this.socket = _socket;
2021
this.setpoint = _setpoint;
2122
this.gui = _gui;
23+
this.threadId = _threadId;
2224
try
2325
{
2426
this.out = new DataOutputStream(this.socket.getOutputStream());
@@ -52,9 +54,18 @@ public void run()
5254
System.out.println("No se pudo hacer la lectura de la señal o la transferencia del finish");
5355
e.printStackTrace();
5456
}
55-
this.gui.output_I.add(time_value, output_process_val);
56-
this.gui.input_I.add(time_value, input_process_val);
57-
this.gui.setpoint_I.add(time_value, this.setpoint);
57+
if(this.threadId == 1)
58+
{
59+
this.gui.output_I.add(time_value, output_process_val);
60+
this.gui.input_I.add(time_value, input_process_val);
61+
this.gui.setpoint_I.add(time_value, this.setpoint);
62+
}
63+
else if(this.threadId == 2)
64+
{
65+
this.gui.output_II.add(time_value, output_process_val);
66+
this.gui.input_II.add(time_value, input_process_val);
67+
this.gui.setpoint_II.add(time_value, this.setpoint);
68+
}
5869
}
5970
try
6071
{

FileManager.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,16 @@ public FileManager(String _fileName)
1212
}
1313

1414

15-
public void save_pid_signals(double [][]setpoint, double [][]signal, double [][]control)
15+
public void save_pid_signals(double [][]setpointI,
16+
double [][]signalI,
17+
double [][]controlI,
18+
double [][]setpointII,
19+
double [][]signalII,
20+
double [][]controlII)
1621
{
1722
/*
1823
* Este método genera una archivo con cuatro columnas que corresponden a:
19-
* datos_tiempo datos_setpoint datos_control datos_salida_planta
24+
* datos_tiempo datos_setpoint datos_control salida_planta_I datos_tiempo_II datos_setpoint_II datos_control_II salida_planta_II
2025
* */
2126
BufferedWriter bufferedWriter = null;
2227
FileWriter fileWriter = null;
@@ -26,8 +31,8 @@ public void save_pid_signals(double [][]setpoint, double [][]signal, double [][]
2631
fileWriter = new FileWriter(this.fileName, true);
2732
bufferedWriter = new BufferedWriter(fileWriter);
2833
printWriter = new PrintWriter(bufferedWriter);
29-
for(int i = 0; i < signal[0].length; i++) //time //setpoint //control //plant's output
30-
bufferedWriter.write(String.format("%f\t%f\t%f\t%f\n", signal[0][i], setpoint[1][i], control[1][i], signal[1][i]));
34+
for(int i = 0; i < signalI[0].length; i++) //time //setpoint //control //first plant's output //time_process_II //setpoint //control_process_2 //second plant's output
35+
bufferedWriter.write(String.format("%f\t%f\t%f\t%f\t%f\t%f\t%f\t%\n", signalI[0][i], setpointI[1][i], controlI[1][i], signalI[1][i], signalII[0][i], setpointII[1][i], controlII[1][i], signalII[1][i]));
3136

3237
}
3338
catch(IOException e)

ThreadServer.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ public class ThreadServer extends Thread
3131
private ControlThread threadFlow;
3232

3333

34-
3534
public ThreadServer(Window _gui)
3635
{
3736
this.gui = _gui;
@@ -116,9 +115,12 @@ public void terminate()
116115
System.out.format("La cantidad de elementos es: %d\n", this.gui.output_I.getItemCount());
117116

118117
// option to save the captured data
119-
double[][] logged_signal = this.gui.output_I.toArray();
120-
double[][] control_signal = this.gui.input_I.toArray();
121-
double[][] setpoint_signal = this.gui.setpoint_I.toArray();
118+
double[][] logged_signal_I = this.gui.output_I.toArray();
119+
double[][] control_signal_I = this.gui.input_I.toArray();
120+
double[][] setpoint_signal_I = this.gui.setpoint_I.toArray();
121+
double[][] logged_signal_II = this.gui.output_II.toArray();
122+
double[][] control_signal_II = this.gui.input_II.toArray();
123+
double[][] setpoint_signal_II = this.gui.setpoint_II.toArray();
122124

123125
// Dialogo para seleccionar donde almacenar el archivo
124126
JFileChooser fileChooser = new JFileChooser();
@@ -129,7 +131,7 @@ public void terminate()
129131
{
130132
File fileToSave = fileChooser.getSelectedFile();
131133
FileManager fileSaving = new FileManager(fileToSave.getAbsolutePath());
132-
fileSaving.save_pid_signals(setpoint_signal, logged_signal, control_signal);
134+
fileSaving.save_pid_signals(setpoint_signal_I, logged_signal_I, control_signal_I, setpoint_signal_II, logged_signal_II, control_signal_II);
133135
System.out.println("Archivo guardado");
134136
}
135137
else
@@ -184,7 +186,7 @@ public void run()
184186
try
185187
{
186188
this.socket = server.accept();
187-
threadTemp = new ControlThread(this.gui, this.socket, this.setpointT);
189+
threadTemp = new ControlThread(this.gui, this.socket, this.setpointT, 1);
188190
threadTemp.start();
189191
}
190192
catch(Exception e)
@@ -197,7 +199,7 @@ public void run()
197199
try
198200
{
199201
this.socket = server.accept();
200-
threadFlow = new ControlThread(this.gui, this.socket, this.setpointF);
202+
threadFlow = new ControlThread(this.gui, this.socket, this.setpointF, 2);
201203
threadFlow.start();
202204
}
203205
catch(Exception e)

0 commit comments

Comments
 (0)