OpenWAM
Public Member Functions | List of all members
TTable Class Reference
Inheritance diagram for TTable:
[legend]
Collaboration diagram for TTable:
[legend]

Public Member Functions

 TTable (int i)
 
double Output (double Time)
 
void LeeController (const char *FileWAM, fpos_t &filepos)
 
void AsignaObjetos (TSensor **Sensor, TController **Controller)
 
void LeeResultadosMedControlador (const char *FileWAM, fpos_t &filepos)
 
void LeeResultadosInsControlador (const char *FileWAM, fpos_t &filepos)
 
void CabeceraResultadosMedControlador (stringstream *medoutput)
 
void CabeceraResultadosInsControlador (stringstream *insoutput)
 
void ImprimeResultadosMedControlador (stringstream *medoutput)
 
void ImprimeResultadosInsControlador (stringstream *insoutput)
 
void IniciaMedias ()
 
void ResultadosMediosController ()
 
void AcumulaResultadosMediosController (double Actual)
 
void ResultadosInstantController ()
 
- Public Member Functions inherited from TController
 TController (nmControlMethod meth, int i)
 
 ~TController ()
 
virtual void CabeceraResultadosMedControlador (std::stringstream &medoutput)=0
 
virtual void CabeceraResultadosInsControlador (std::stringstream &insoutput)=0
 
virtual void ImprimeResultadosMedControlador (std::stringstream &medoutput)=0
 
virtual void ImprimeResultadosInsControlador (std::stringstream &insoutput)=0
 

Additional Inherited Members

- Protected Attributes inherited from TController
std::vector< TSensor * > FSensor
 Array with the pointers of the sensor inputs.
 
int FNumSensors
 Number of sensor input.
 
iVector FSensorID
 Array with the ID of the sensor inputs.
 
int FControllerID
 ID of this controller.
 
nmControlMethod FControl
 Type of controller.
 
stResMediosCtrl FResMediosCtrl
 Struct with the average results of the controllers.
 
stResInstantCtrl FResInstantCtrl
 Struct with the average results of the controllers.
 

Detailed Description

Definition at line 35 of file TTable.h.

Member Function Documentation

◆ AcumulaResultadosMediosController()

void TTable::AcumulaResultadosMediosController ( double  Actual)
virtual

Acumulate average results

Parameters
ActualCurrent tiem

Implements TController.

Definition at line 358 of file TTable.cpp.

358  {
359  try {
360  /* Lo que se hace en esta funcion se realiza dentro del calculo del eje, para asi poder
361  llevar a cabo la salida de resultados medios por pantalla. */
362  double Delta = Actual - FResMediosCtrl.Tiempo0;
363 
364  if(FResMediosCtrl.Output) {
365  FResMediosCtrl.OutputSUM += fOutput * Delta;
366  }
367  if(FResMediosCtrl.Error) {
368  FResMediosCtrl.ErrorSUM += fError * Delta;
369  }
370  if(FResMediosCtrl.POutput) {
371  FResMediosCtrl.POutputSUM += fpact * Delta;
372  }
373  if(FResMediosCtrl.IOutput) {
374  FResMediosCtrl.IOutputSUM += fiact * Delta;
375  }
376  if(FResMediosCtrl.DOutput) {
377  FResMediosCtrl.DOutputSUM += fdact * Delta;
378  }
379  if(FResMediosCtrl.Output_filt) {
380  FResMediosCtrl.Output_filtSUM += fOutput_filt * Delta;
381  }
382  FResMediosCtrl.TiempoSUM += Delta;
383  FResMediosCtrl.Tiempo0 = Actual;
384 
385  } catch(exception &N) {
386  std::cout << "ERROR: TTable::AcumulaResultadosMediosController en el eje: " << fID << std::endl;
387 //std::cout << "Tipo de error: " << N.what() << std::endl;
388  throw Exception(N.what());
389  }
390 }

References TController::FResMediosCtrl.

◆ AsignaObjetos()

void TTable::AsignaObjetos ( TSensor **  Sensor,
TController **  Controller 
)
virtual

Asign the input sensor and controllers

Parameters
SensorArray with the sensor objects
ControllerArray with the controller objects

Implements TController.

Definition at line 79 of file TTable.cpp.

79  {
80 //std::cout << "entro";
81 
82  FSensor.push_back(Sensor[FSensorID[0] - 1]);
83 
84 //fSetPointController=Controller[fSetPointControllerID-1];
85 
86 }

References TController::FSensor, and TController::FSensorID.

◆ IniciaMedias()

void TTable::IniciaMedias ( )
virtual

Initialize average results

Implements TController.

Definition at line 303 of file TTable.cpp.

303  {
304  try {
305 
306  FResMediosCtrl.OutputSUM = 0.;
307  FResMediosCtrl.ErrorSUM = 0.;
308  FResMediosCtrl.POutputSUM = 0.;
309  FResMediosCtrl.IOutputSUM = 0.;
310  FResMediosCtrl.DOutputSUM = 0.;
311  FResMediosCtrl.Output_filtSUM = 0.;
312  FResMediosCtrl.TiempoSUM = 0.;
313  FResMediosCtrl.Tiempo0 = 0.;
314 
315  } catch(exception &N) {
316  std::cout << "ERROR: TTable::IniciaMedias en el controlador: " << fID << std::endl;
317 //std::cout << "Tipo de error: " << N.what() << std::endl;
318  throw Exception(N.what());
319  }
320 }

References TController::FResMediosCtrl.

◆ LeeController()

void TTable::LeeController ( const char *  FileWAM,
fpos_t &  filepos 
)
virtual

Read the information of the controller

Parameters
FileWAMInput data filename
fileposPosition to read within the input file

Implements TController.

Definition at line 50 of file TTable.cpp.

50  {
51 
52  int xnum = 0, ynum = 0;
53  double x = 0., y = 0., z = 0.;
54  std::vector<double> zz;
55 
56  FILE *fich = fopen(FileWAM, "r");
57  fsetpos(fich, &filepos);
58 
59  fscanf(fich, "%d ", &fDimensiones);
60  fscanf(fich, "%d ", &xnum);
61  for(int i = 0; i < xnum; i++) {
62  fscanf(fich, "%d ", &x);
63  fX_map.push_back(x);
64  }
65  if(fDimensiones == 1) {
66  for(int i = 0; i < xnum; i++) {
67  fscanf(fich, "%d ", &y);
68  fY_map.push_back(y);
69  }
70  } else if(fDimensiones == 2) {
71 
72  }
73 
74  fgetpos(fich, &filepos);
75  fclose(fich);
76 
77 }

◆ LeeResultadosInsControlador()

void TTable::LeeResultadosInsControlador ( const char *  FileWAM,
fpos_t &  filepos 
)
virtual

Read the instantanous results selected

Parameters
FileWAMInput data filename
fileposPosition to read within the input file

Implements TController.

Definition at line 131 of file TTable.cpp.

131  {
132  try {
133  int nvars = 0, var = 0;
134 
135  FILE *fich = fopen(FileWAM, "r");
136  fsetpos(fich, &filepos);
137 
138  fscanf(fich, "%d ", &nvars);
139  for(int i = 0; i < nvars; i++) {
140  fscanf(fich, "%d ", &var);
141  switch(var) {
142  case 0:
143  FResInstantCtrl.Output = true;
144  break;
145  case 1:
146  FResInstantCtrl.Error = true;
147  break;
148  case 2:
149  FResInstantCtrl.POutput = true;
150  break;
151  case 3:
152  FResInstantCtrl.IOutput = true;
153  break;
154  case 4:
155  FResInstantCtrl.DOutput = true;
156  break;
157  case 5:
158  FResInstantCtrl.Output_filt = true;
159  break;
160  default:
161  std::cout << "Resultados instantaneos en Controlador " << fID << " no implementados " << std::endl;
162  }
163  }
164 
165  fgetpos(fich, &filepos);
166  fclose(fich);
167  } catch(exception &N) {
168  std::cout << "ERROR: TTable::LeeResultadosInsControlador en el controlador " << fID << std::endl;
169  std::cout << "Tipo de error: " << N.what() << std::endl;
170  throw Exception(N.what());
171  }
172 }

References TController::FResInstantCtrl.

◆ LeeResultadosMedControlador()

void TTable::LeeResultadosMedControlador ( const char *  FileWAM,
fpos_t &  filepos 
)
virtual

Read the average results selected

Parameters
FileWAMInput data filename
fileposPosition to read within the input file

Implements TController.

Definition at line 88 of file TTable.cpp.

88  {
89  try {
90  int nvars = 0, var = 0;
91 
92  FILE *fich = fopen(FileWAM, "r");
93  fsetpos(fich, &filepos);
94 
95  fscanf(fich, "%d ", &nvars);
96  for(int i = 0; i < nvars; i++) {
97  fscanf(fich, "%d ", &var);
98  switch(var) {
99  case 0:
100  FResMediosCtrl.Output = true;
101  break;
102  case 1:
103  FResMediosCtrl.Error = true;
104  break;
105  case 2:
106  FResMediosCtrl.POutput = true;
107  break;
108  case 3:
109  FResMediosCtrl.IOutput = true;
110  break;
111  case 4:
112  FResMediosCtrl.DOutput = true;
113  break;
114  case 5:
115  FResMediosCtrl.Output_filt = true;
116  break;
117  default:
118  std::cout << "Resultados medios en Controlador " << fID << " no implementados " << std::endl;
119  }
120  }
121 
122  fgetpos(fich, &filepos);
123  fclose(fich);
124  } catch(exception &N) {
125  std::cout << "ERROR: TTable::LeeResultadosControlador en el controlador " << fID << std::endl;
126  std::cout << "Tipo de error: " << N.what() << std::endl;
127  throw Exception(N.what());
128  }
129 }

References TController::FResMediosCtrl.

◆ Output()

double TTable::Output ( double  Time)
virtual

Return the output value of the controller

Parameters
TimeCurrent time

Implements TController.

Definition at line 46 of file TTable.cpp.

46  {
47 
48 }

◆ ResultadosInstantController()

void TTable::ResultadosInstantController ( )
virtual

Calculate instantaneus results

Implements TController.

Definition at line 392 of file TTable.cpp.

392  {
393  try {
394  if(FResInstantCtrl.Output)
395  FResInstantCtrl.OutputINS = fOutput;
396  if(FResInstantCtrl.Error)
397  FResInstantCtrl.ErrorINS = fError;
398  if(FResInstantCtrl.POutput)
399  FResInstantCtrl.POutputINS = fpact;
400  if(FResInstantCtrl.IOutput)
401  FResInstantCtrl.IOutputINS = fiact;
402  if(FResInstantCtrl.DOutput)
403  FResInstantCtrl.DOutputINS = fdact;
404  if(FResInstantCtrl.Output_filt)
405  FResInstantCtrl.Output_filtINS = fOutput_filt;
406 
407  } catch(exception &N) {
408  std::cout << "ERROR: TTable::ResultadosInstantController en el eje " << fID << std::endl;
409  std::cout << "Tipo de error: " << N.what() << std::endl;
410  throw Exception(N.what());
411  }
412 }

References TController::FResInstantCtrl.

◆ ResultadosMediosController()

void TTable::ResultadosMediosController ( )
virtual

Calculate average results

Implements TController.

Definition at line 322 of file TTable.cpp.

322  {
323  try {
324 
325  if(FResMediosCtrl.Output) {
326  FResMediosCtrl.OutputMED = FResMediosCtrl.OutputSUM / FResMediosCtrl.TiempoSUM;
327  FResMediosCtrl.OutputSUM = 0.;
328  }
329  if(FResMediosCtrl.Error) {
330  FResMediosCtrl.ErrorMED = FResMediosCtrl.ErrorSUM / FResMediosCtrl.TiempoSUM;
331  FResMediosCtrl.ErrorSUM = 0.;
332  }
333  if(FResMediosCtrl.POutput) {
334  FResMediosCtrl.POutputMED = FResMediosCtrl.POutputSUM / FResMediosCtrl.TiempoSUM;
335  FResMediosCtrl.POutputSUM = 0.;
336  }
337  if(FResMediosCtrl.IOutput) {
338  FResMediosCtrl.IOutputMED = FResMediosCtrl.IOutputSUM / FResMediosCtrl.TiempoSUM;
339  FResMediosCtrl.IOutputSUM = 0.;
340  }
341  if(FResMediosCtrl.DOutput) {
342  FResMediosCtrl.DOutputMED = FResMediosCtrl.DOutputSUM / FResMediosCtrl.TiempoSUM;
343  FResMediosCtrl.DOutputSUM = 0.;
344  }
345  if(FResMediosCtrl.Output_filt) {
346  FResMediosCtrl.Output_filtMED = FResMediosCtrl.Output_filtSUM / FResMediosCtrl.TiempoSUM;
347  FResMediosCtrl.Output_filtSUM = 0.;
348  }
349  FResMediosCtrl.TiempoSUM = 0;
350 
351  } catch(exception &N) {
352  std::cout << "ERROR: TTable::ResultadosMediosController en el eje: " << fID << std::endl;
353 //std::cout << "Tipo de error: " << N.what() << std::endl;
354  throw Exception(N.what());
355  }
356 }

References TController::FResMediosCtrl.


The documentation for this class was generated from the following files:
TController::FSensorID
iVector FSensorID
Array with the ID of the sensor inputs.
Definition: TController.h:43
TController::FResMediosCtrl
stResMediosCtrl FResMediosCtrl
Struct with the average results of the controllers.
Definition: TController.h:49
Exception
Custom exception class.
Definition: Exception.hpp:39
TController::FResInstantCtrl
stResInstantCtrl FResInstantCtrl
Struct with the average results of the controllers.
Definition: TController.h:50
TController::FSensor
std::vector< TSensor * > FSensor
Array with the pointers of the sensor inputs.
Definition: TController.h:40