Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
bmk10k
telescope_firmware
Commits
934a1a1f
Commit
934a1a1f
authored
Feb 05, 2020
by
Jörg Weingrill
Browse files
refactoring
parent
13fd8025
Changes
1
Hide whitespace changes
Inline
Side-by-side
BMK10k/BMK10kRuntime/POUs/ThermoControl.TcPOU
View file @
934a1a1f
...
...
@@ -7,12 +7,12 @@ VAR
pressure_voltage: REAL;
dewar_pressure: REAL;
dewar
_temperature
1
,
dewar
_temperature
2
,
dewar
_temperature
3
: REAL;
cold_head
_temperature,
ccd
_temperature
1
,
ccd
_temperature
2
: REAL;
dewar_setpoint: REAL := -110.0;
avg
_temperature: REAL;
ccd
_temperature: REAL;
avg_pressure: REAL;
heater_value: LREAL;
fbPIRegler: FB_BasicPID;
...
...
@@ -48,16 +48,16 @@ END_VAR
pressure_voltage := F_YREAL(GVL_Telescope.pressure_raw, 0, 32767, 0.0, 10.0);
dewar_pressure := LREAL_TO_REAL(EXPT(10.0, (1.5*pressure_voltage - 12.0)));
//temperature control using PID function block
dewar
_temperature
1
:= GVL_ThermoControl.Temperature_raw1 / 100.0;
dewar
_temperature
2
:= GVL_ThermoControl.Temperature_raw2 / 100.0 - 1.2;
dewar
_temperature
3
:= GVL_ThermoControl.Temperature_raw3 / 100.0 + 1.2;
cold_head
_temperature := GVL_ThermoControl.Temperature_raw1 / 100.0;
ccd
_temperature
1
:= GVL_ThermoControl.Temperature_raw2 / 100.0 - 1.2;
ccd
_temperature
2
:= GVL_ThermoControl.Temperature_raw3 / 100.0 + 1.2;
//dewar_temperature1 // cold head
//dewar_temperature3 := dewar_temperature2 - 2.3;
//dewar_temperature4 := -200; // broken
//dewar_temperature5 := 0; // broken
fbTimeAverage(IN := 0.5*
dewar
_temperature
2
+ 0.5*
dewar
_temperature
3
,
AVG =>
avg
_temperature);
fbTimeAverage(IN := 0.5*
ccd
_temperature
1
+ 0.5*
ccd
_temperature
2
,
AVG =>
ccd
_temperature);
fbDewarpressure(IN := dewar_pressure, PT := T#30S, AVG => avg_pressure);
...
...
@@ -69,11 +69,11 @@ ELSIF avg_pressure < 5E-5 THEN // we don't need any heater, we are still cooling
heater_mode := E_ThermoMode.heater_off;
END_IF
IF
avg
_temperature
< dewar_setpoint
+0.01
THEN
//
we
are
in
target
range
of
the
PID
loop
IF
ccd
_temperature
< dewar_setpoint
+0.01
THEN
//
we
are
in
target
range
of
the
PID
loop
heater_mode
:=
E_ThermoMode.heater_pid;
END_IF
IF
avg
_temperature
>
25.0 THEN
IF
ccd
_temperature
>
25.0 THEN
heater_mode := E_ThermoMode.heater_off;
END_IF
...
...
@@ -93,7 +93,7 @@ Tn := 1.0 * Tg;
Tv := 0.5 * Tu;
fbPIRegler(fSetpointValue := dewar_setpoint,
fActualValue :=
avg
_temperature,
fActualValue :=
ccd
_temperature,
bReset := heater_mode
<
> E_ThermoMode.heater_pid,
fCtrlCycleTime := 0.1, //0.002,
fKp := Kp, //6169.1542,
...
...
@@ -108,8 +108,8 @@ CASE heater_mode OF
E_ThermoMode.heater_on:
heater_value := LREAL_TO_INT(heater_max);
E_ThermoMode.heater_simple:
IF
avg
_temperature
< dewar_setpoint
THEN
heater_value
:=
(dewar_setpoint
-
avg
_temperature)
*
30000.0;
IF
ccd
_temperature
< dewar_setpoint
THEN
heater_value
:=
(dewar_setpoint
-
ccd
_temperature)
*
30000.0;
ELSE
heater_value
:=
0.0;
END_IF
...
...
@@ -128,31 +128,31 @@ DewarPressureEvent( Trigger := (dewar_pressure < 1E-8) OR (dewar_pressure > 1E-4
OffMessage := 'OK',
OffLevel := ADSLOG_MSGTYPE_HINT);
Temperature1Event( Trigger := (
dewar
_temperature
1
<
-180.0) OR (
dewar
_temperature
1
> 40.0),
Temperature1Event( Trigger := (
cold_head
_temperature
<
-180.0) OR (
cold_head
_temperature > 40.0),
Level := ADSLOG_MSGTYPE_WARN,
FormatString := 'Cold head temperature out of range: %s',
OnMessage := LREAL_TO_STRING(
dewar
_temperature
1
),
OnMessage := LREAL_TO_STRING(
cold_head
_temperature),
OffMessage := 'OK',
OffLevel := ADSLOG_MSGTYPE_HINT);
Temperature2Event( Trigger := (
dewar
_temperature
2
<
-180.0) OR (
dewar
_temperature
2
> 40.0),
Temperature2Event( Trigger := (
ccd
_temperature
1
<
-180.0) OR (
ccd
_temperature
1
> 40.0),
Level := ADSLOG_MSGTYPE_WARN,
FormatString := 'Dewar temperature2 out of range: %s',
OnMessage := LREAL_TO_STRING(
dewar
_temperature
2
),
OnMessage := LREAL_TO_STRING(
ccd
_temperature
1
),
OffMessage := 'OK',
OffLevel := ADSLOG_MSGTYPE_HINT);
Temperature3Event( Trigger := (
dewar
_temperature
3
<
-180.0) OR (
dewar
_temperature
3
> 40.0),
Temperature3Event( Trigger := (
ccd
_temperature
2
<
-180.0) OR (
ccd
_temperature
2
> 40.0),
Level := ADSLOG_MSGTYPE_WARN,
FormatString := 'Dewar temperature3 out of range: %s',
OnMessage := LREAL_TO_STRING(
dewar
_temperature
3
),
OnMessage := LREAL_TO_STRING(
ccd
_temperature
2
),
OffMessage := 'OK',
OffLevel := ADSLOG_MSGTYPE_HINT);
HTMLTimer(IN := TRUE AND NOT HTMLTimer.Q, PT := T#5M);
pressurestring := CONCAT('Dewar Pressure$T', LREAL_TO_FMTESTR(avg_pressure, 2, TRUE));
temperaturestring := CONCAT('
<br>
$NDewar Temperature$T', LREAL_TO_FMTSTR(
avg
_temperature ,2, TRUE));
coldheadstring := CONCAT('
<br>
$NCold Head$T', LREAL_TO_FMTSTR(
dewar
_temperature
1
, 2, TRUE));
temperaturestring := CONCAT('
<br>
$NDewar Temperature$T', LREAL_TO_FMTSTR(
ccd
_temperature ,2, TRUE));
coldheadstring := CONCAT('
<br>
$NCold Head$T', LREAL_TO_FMTSTR(
cold_head
_temperature, 2, TRUE));
setpointstring := CONCAT('
<br>
$NDewar Setpoint$T', LREAL_TO_FMTSTR(dewar_setpoint, 2, TRUE));
HTMLLog(Trigger := HTMLTimer.Q,
sPathName := 'C:\inetpub\wwwroot\thermocontrol.html',
...
...
@@ -161,66 +161,7 @@ HTMLLog(Trigger := HTMLTimer.Q,
]]>
</ST>
</Implementation>
<LineIds
Name=
"ThermoControl"
>
<LineId
Id=
"5"
Count=
"0"
/>
<LineId
Id=
"7"
Count=
"0"
/>
<LineId
Id=
"10"
Count=
"0"
/>
<LineId
Id=
"6"
Count=
"0"
/>
<LineId
Id=
"24"
Count=
"0"
/>
<LineId
Id=
"26"
Count=
"1"
/>
<LineId
Id=
"60"
Count=
"0"
/>
<LineId
Id=
"30"
Count=
"0"
/>
<LineId
Id=
"58"
Count=
"1"
/>
<LineId
Id=
"167"
Count=
"0"
/>
<LineId
Id=
"165"
Count=
"1"
/>
<LineId
Id=
"254"
Count=
"0"
/>
<LineId
Id=
"89"
Count=
"0"
/>
<LineId
Id=
"530"
Count=
"2"
/>
<LineId
Id=
"538"
Count=
"0"
/>
<LineId
Id=
"534"
Count=
"0"
/>
<LineId
Id=
"536"
Count=
"1"
/>
<LineId
Id=
"533"
Count=
"0"
/>
<LineId
Id=
"591"
Count=
"0"
/>
<LineId
Id=
"590"
Count=
"0"
/>
<LineId
Id=
"592"
Count=
"1"
/>
<LineId
Id=
"365"
Count=
"3"
/>
<LineId
Id=
"372"
Count=
"3"
/>
<LineId
Id=
"638"
Count=
"1"
/>
<LineId
Id=
"634"
Count=
"1"
/>
<LineId
Id=
"640"
Count=
"0"
/>
<LineId
Id=
"636"
Count=
"1"
/>
<LineId
Id=
"631"
Count=
"0"
/>
<LineId
Id=
"579"
Count=
"0"
/>
<LineId
Id=
"649"
Count=
"1"
/>
<LineId
Id=
"648"
Count=
"0"
/>
<LineId
Id=
"581"
Count=
"8"
/>
<LineId
Id=
"255"
Count=
"0"
/>
<LineId
Id=
"90"
Count=
"1"
/>
<LineId
Id=
"110"
Count=
"0"
/>
<LineId
Id=
"98"
Count=
"0"
/>
<LineId
Id=
"111"
Count=
"0"
/>
<LineId
Id=
"99"
Count=
"0"
/>
<LineId
Id=
"105"
Count=
"4"
/>
<LineId
Id=
"104"
Count=
"0"
/>
<LineId
Id=
"93"
Count=
"0"
/>
<LineId
Id=
"92"
Count=
"0"
/>
<LineId
Id=
"64"
Count=
"0"
/>
<LineId
Id=
"46"
Count=
"0"
/>
<LineId
Id=
"40"
Count=
"0"
/>
<LineId
Id=
"47"
Count=
"0"
/>
<LineId
Id=
"191"
Count=
"5"
/>
<LineId
Id=
"221"
Count=
"0"
/>
<LineId
Id=
"198"
Count=
"5"
/>
<LineId
Id=
"222"
Count=
"0"
/>
<LineId
Id=
"204"
Count=
"5"
/>
<LineId
Id=
"223"
Count=
"0"
/>
<LineId
Id=
"215"
Count=
"0"
/>
<LineId
Id=
"210"
Count=
"4"
/>
<LineId
Id=
"224"
Count=
"0"
/>
<LineId
Id=
"287"
Count=
"0"
/>
<LineId
Id=
"62"
Count=
"0"
/>
<LineId
Id=
"294"
Count=
"1"
/>
<LineId
Id=
"370"
Count=
"1"
/>
<LineId
Id=
"288"
Count=
"3"
/>
<LineId
Id=
"1002"
Count=
"113"
/>
<LineId
Id=
"431"
Count=
"0"
/>
</LineIds>
</POU>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment