!--------------------------------------------------------
! Water tank heat control simulated feedback
! Assume constant volume (i.e. water in = water out)
!--------------------------------------------------------
FEEDBACK TankTempFdbk
CYCLE_TIME 0.10
! Name MIN MAX
IN Target_temp(32.0, 212.0)
IN Water_out (0.0, 10.0)
IN Gas_valve (0.0, 10.0)
INOUT Temperature(32.0, 212.0)
OUT Temp_error (-90.0, 90.0)
Initialization
Temp_error = 0;
Temperature = 0;
BEGIN
Temp_error = Temperature - Target_temp;
END;
! Name Below Low High Above Truth
Symbol Zero OF Water_out ( 0.0, 0.0, 0.0, 2.0, 1.0)
Symbol Light OF Water_out ( 0.0, 2.0, 3.0, 5.9, 1.0)
Symbol Medium OF Water_out ( 3.0, 5.0, 6.0, 8.0, 1.0)
Symbol Heavy OF Water_out ( 6.0, 8.0, 10.0, 10.0, 1.0)
! Name Below Low High Above Truth Center
Symbol Off OF Gas_valve ( 0.0, 0.0, 0.0, 2.0, 1.0, 0.0)
Symbol VeryLow OF Gas_valve ( 0.0, 2.0, 2.0, 4.0, 1.0)
Symbol Low OF Gas_valve ( 2.0, 4.0, 4.0, 6.0, 1.0)
Symbol High OF Gas_valve ( 4.0, 6.0, 6.0, 8.0, 1.0)
Symbol VeryHigh OF Gas_valve ( 6.0, 8.0, 10.0, 10.0, 1.0, 10.0)
! Name Below Low High Above Truth Center
Symbol NegLarge OF Temperature(-0.5, -0.5, -0.3, -0.2, 1.0, -0.5)
Symbol NegMedium OF Temperature(-0.3, -0.2, -0.2, -0.1, 1.0)
Symbol NegSmall OF Temperature(-0.2, -0.1, -0.1, 0.0, 1.0)
Symbol Zero OF Temperature(-0.1, 0.0, 0.0, 0.1, 1.0)
Symbol PosSmall OF Temperature( 0.0, 0.1, 0.1, 0.2, 1.0)
Symbol PosMedium OF Temperature( 0.1, 0.2, 0.2, 0.3, 1.0)
Symbol PosLarge OF Temperature( 0.2, 0.3, 0.5, 0.5, 1.0, 0.5)
!!!!!!!! Rules for generating temperature
! Heavy Medium Light Zero
!--------------------------------------------
! Off -0.4 -0.3 -0.2 -0.1
! VeryLow -0.3 -0.2 -0.1
! Low -0.2 -0.1 +0.1
! High -0.1 +0.1 +0.2
! VeryHigh +0.1 +0.2 +0.3 +0.4
!
IF Gas_valve IS Off AND Water_out IS Heavy
THEN Temperature - 0.4
IF Gas_valve IS Off AND Water_out IS Medium
THEN Temperature - 0.3
IF Gas_valve IS Off AND Water_out IS Light
THEN Temperature - 0.2
IF Gas_valve IS Off AND Water_out IS Zero
THEN Temperature - 0.1
IF Gas_valve IS VeryLow AND Water_out IS Heavy
THEN Temperature - 0.3
IF Gas_valve IS VeryLow AND Water_out IS Medium
THEN Temperature - 0.2
IF Gas_valve IS VeryLow AND Water_out IS Light
THEN Temperature - 0.1
IF Gas_valve IS Low AND Water_out IS Heavy
THEN Temperature - 0.2
IF Gas_valve IS Low AND Water_out IS Medium
THEN Temperature - 0.1
IF Gas_valve IS Low AND Water_out IS Zero
THEN Temperature + 0.1
IF Gas_valve IS High AND Water_out IS Heavy
THEN Temperature - 0.1
IF Gas_valve IS High AND Water_out IS Light
THEN Temperature + 0.1
IF Gas_valve IS High AND Water_out IS Zero
THEN Temperature + 0.2
IF Gas_valve IS VeryHigh AND Water_out IS Heavy
THEN Temperature + 0.1
IF Gas_valve IS VeryHigh AND Water_out IS Medium
THEN Temperature + 0.2
IF Gas_valve IS VeryHigh AND Water_out IS Light
THEN Temperature + 0.3
IF Gas_valve IS VeryHigh AND Water_out IS Zero
THEN Temperature + 0.4
END TankTempFdbk;
Return to The Skeptic Tank's main Index page.
The views and opinions stated within this web page are those of the
author or authors which wrote them and may not reflect the views and
opinions of the ISP or account user which hosts the web page. The
opinions may or may not be those of the Chairman of The Skeptic Tank.