/**
* The main Arduino project file
*/
extern "C" {
void Mcu_Init(void);
void Port_Init(void);
void Plant_initialize(void);
void Controller_initialize(void);
}
extern double reference_temperature;
extern double error;
extern double regulator_power;
extern double current_temperature;
extern unsigned long plant_step_time;
extern unsigned long controller_step_time;
void setup()
{
cli(); // disable interrupts
Serial.begin(9600);
Mcu_Init();
Port_Init();
Plant_initialize();
Controller_initialize();
sei(); // enable interrupts
}
void loop()
{
unsigned long time = millis();
static long last_time = -10; // last time the log was printed
delay(5);
if (time <= 400050) // simulate for 400 s
{
// Set reference temperature
reference_temperature = 40;
if (time % 100 <= 10 && time - last_time > 10) //
{
Serial.print(time / 1000.);
Serial.print("\t");
Serial.print(reference_temperature, 7);
Serial.print("\t");
Serial.print(error, 7);
Serial.print("\t");
Serial.print(regulator_power, 7);
Serial.print("\t");
Serial.println(current_temperature, 7);
last_time = time;
}
}
else // print statistic and stop
{
unsigned long total_time = micros();
Serial.print("Plant simulation load: ");
Serial.print(100. * (double)plant_step_time / total_time);
Serial.print("%\tController simulation load: ");
Serial.print(100. * (double)controller_step_time / total_time);
Serial.println("%");
delay(1000000);
}
}