The Code is implemented in accordens to the requirments given in the  function description. Quickly summerized it describes the following,

  • Survey and report the CO2 levels in the rom
  • Sound  an alarm after 10 mintues if the temperature deviates more than +-200ppm away from the setpoint
  • In case of an alarm, turn on fans to ensure a well ventilated facility


The Code for the Temperature is based on that 0v is equal the minimum ppm and 5 volts is equal the maximum ppm. This means that linear interpolation is utilized to scale the input voltage too an output in ppm.


Linear interpolation is performed with the following function (Chapra and Canale, 2015),


This means that the inputs needs to be,

  • sensor_reading:REAL;
  • set_point_in_ppm:REAL;
  • alarm_delay:TIME;
  • max_ppm:REAL;
  • max_ppm_in_volts:REAL;
  • min_ppm:REAL;
  • min_ppm_in_volts:REAL;


And the outputs needs to be,

  • ppm_read:REAL;
  • alarm_high:BOOL;
  • alarm_low:BOOL;


With the following internal variables,

  • alarm_since_trig:TIME;
  • alarm_high_trig:BOOL;
  • alarm_low_trig:BOOL;
  • alarm_high_trig_0:BOOL;
  • alarm_low_trig_0:BOOL;


The coded implementation looks like this,

Visually the function block looks as following,



Chapra, S.C. and Canale, R.P. (2015). Numerical Methods for Engineers. 7th ed. New York: McGraw-Hill Education. [pdf] Available at: https://gdcboysang.ac.in/About/Droid/uploads/Numerical%20Methods.pdf (Accessed: 28 May 2024).

  • No labels