
+ make 'limit' usable as type in cfg files + minor fixes Change-Id: Ib94b2645c7a0d978d64d4c86c4415d4b5b0d485f Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/21485 Tested-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de> Tested-by: JenkinsCodeReview <bjoern_pedersen@frm2.tum.de> Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
156 lines
6.8 KiB
INI
156 lines
6.8 KiB
INI
[node ccr12]
|
|
description = [sim] CCR12 box of MLZ Sample environment group
|
|
.
|
|
Contains a Lakeshore 336 and an PLC controlling the compressor
|
|
and some valves.
|
|
.
|
|
This is an improved version, how we think it should be.
|
|
|
|
[interface tcp]
|
|
type=tcp
|
|
bindto=0.0.0.0
|
|
bindport=10767
|
|
|
|
[module T_ccr12]
|
|
class=secop.simulation.SimDrivable
|
|
.description=Main temperature control node of CCR12.
|
|
.
|
|
Switches between regulation on stick and regulation on tube depending on temperature requested.
|
|
May also pump gas for higher temperatures, if configured.
|
|
Manual switching of the regulation node is supported via the regulationmode parameter.
|
|
value.datatype={"type":"double", "min":0, "max":600, "unit":"K"}
|
|
value.default=300
|
|
target.datatype={"type":"double", "min":0, "max":600, "unit":"K"}
|
|
target.default=300
|
|
.extra_params=ramp,regulationmode,abslimits,userlimits
|
|
ramp.datatype={"type":"double", "min":0, "max":60, "unit":"K/min"}
|
|
ramp.description=target ramping speed in K/min.
|
|
ramp.default=60
|
|
ramp.readonly=False
|
|
regulationmode.datatype={"type":"enum","members":{"stick":1,"tube":2,"both":3}}
|
|
regulationmode.default='both'
|
|
regulationmode.description=regulate only stick, tube or select based upon the target value.
|
|
regulationmode.readonly=False
|
|
abslimits.datatype={"type":"limit","members":{"type":"double", "min":0,"max":600, "unit":"K"}}
|
|
abslimits.default=[0,600]
|
|
abslimits.description=currently active absolute limits for the setpoint. depend on the regulationmode parameter (both/stick->0..600, tube->0..300K).
|
|
userlimits.datatype={"type":"limit","members":{"type":"double", "min":0,"max":600, "unit":"K"}}
|
|
userlimits.default=[0,300]
|
|
userlimits.description=current user set limits for the setpoint. must be inside abslimits.
|
|
userlimits.readonly=False
|
|
.meaning=["temperature_regulation", 20]
|
|
|
|
[module T_ccr12_A]
|
|
class=secop.simulation.SimReadable
|
|
.description=(optional) Sample temperature sensor.
|
|
.visibility=expert
|
|
value.datatype={"type":"double", "min":0, "unit":"K"}
|
|
value.default=300
|
|
.meaning=["temperature", 9]
|
|
|
|
[module T_ccr12_B]
|
|
class=secop.simulation.SimReadable
|
|
.description=(regulation) temperature sensor on stick.
|
|
.visibility=expert
|
|
value.datatype={"type":"double", "min":0, "unit":"K"}
|
|
value.default=300
|
|
.meaning=["temperature", 10]
|
|
|
|
[module T_ccr12_C]
|
|
class=secop.simulation.SimReadable
|
|
.description=Temperature at the coldhead.
|
|
.visibility=expert
|
|
value.datatype={"type":"double", "min":0, "unit":"K"}
|
|
value.default=70
|
|
.meaning=["temperature", 1]
|
|
|
|
[module T_ccr12_D]
|
|
class=secop.simulation.SimReadable
|
|
.description=(regulation) temperature at coupling to stick.
|
|
.visibility=expert
|
|
value.datatype={"type":"double", "min":0, "unit":"K"}
|
|
value.default=80
|
|
.meaning=["temperature", 2]
|
|
|
|
|
|
|
|
[module ccr12_pressure_regulation]
|
|
class=secop.simulation.SimReadable
|
|
.description=Simple two-point presssure regulation. the mode parameter selects the readout on which to regulate, or 'none' for no regulation.
|
|
.visibility=user
|
|
.extra_params=switchpoints, mode
|
|
mode.datatype={"type":"enum", "members":{"none":0,"p1":1,"p2":2}}
|
|
mode.description=Select pressure sensor to regulate on, or 'none' to disable regulation.
|
|
mode.default='none'
|
|
# struct is more explicit, but ugly to read....
|
|
switchpoints.datatype={"type":"struct", "members":{"lower":{"type":"double", "unit":"mbar"},"upper":{"type":"double", "unit":"mbar"}}, "optional":["upper","lower"]}
|
|
switchpoints.description=Switching points for regulation. If the selected pressure is below 'lower' value, the gas valve is opened, above 'upper' the value vacuum valve is openend, else both are closed. values for switchpoints are taken from the selected pressure sensors userlimits.
|
|
switchpoints.default={'lower':1e-6,'upper':1e-3}
|
|
switchpoints.readonly=True
|
|
value.datatype={"type":"double", "min":0, "max":1000, "unit":"mbar"}
|
|
value.default = 1e-5
|
|
|
|
[module ccr12_compressor]
|
|
class=secop.simulation.SimDrivable
|
|
.description=Switches the compressor for the cooling stage on or off.
|
|
.
|
|
Note: This should always be on, except for fast heatup for sample change.
|
|
.visibility=user
|
|
value.datatype={"type":"enum", "members":{'off':0,'on':1}}
|
|
value.default='off'
|
|
target.datatype={"type":"enum", "members":{'off':0,'on':1}}
|
|
|
|
[module ccr12_gas_switch]
|
|
class=secop.simulation.SimWritable
|
|
.description=Switches the gas inlet on or off.
|
|
.
|
|
note: in reality this switches itself off after 15min.
|
|
note: in reality this is interlocked with ccr12_vacuum_switch, only one can be on!
|
|
note: in this simulation this module is isolated.
|
|
value.datatype={"type":"enum", "members":{'off':0,'on':1}}
|
|
value.default='off'
|
|
target.datatype={"type":"enum", "members":{'off':0,'on':1}}
|
|
target.default='off'
|
|
|
|
[module ccr12_vacuum_switch]
|
|
class=secop.simulation.SimWritable
|
|
.description=Switches the vacuum pumping valve on or off.
|
|
.
|
|
note: in reality this is interlocked with ccr12_gas_switch, only one can be on!
|
|
note: in this simulation this module is isolated.
|
|
value.datatype={"type":"enum", "members":{'off':0,'on':1}}
|
|
value.default='off'
|
|
target.datatype={"type":"enum", "members":{'off':0,'on':1}}
|
|
target.default='off'
|
|
|
|
[module ccr12_p1]
|
|
class=secop.simulation.SimReadable
|
|
.description=Default pressure Sensor, linear scale 0..1000 mbar
|
|
.
|
|
Good candidate for a 'Sensor' Interface class!
|
|
value.default=999
|
|
value.unit=mbar
|
|
.extra_params=curve, userlimits
|
|
curve.datatype={"type":"enum", "members":{'0..10V':0,'default':1,'0..9V':2,'DI200':3,'DI2000':4,'TTR100':7,'PTR90':8,'PTR225/PTR237':9,'ITR90':10,'ITR100 curve D':11, 'ITR100 curve 2':12, 'ITR100 curve 3':13,'ITR100 curve 4':14,'ITR100 curve 5':15, 'ITR100 curve 6':16, 'ITR100 curve 7':17, 'ITR100 curve 8':18, 'ITR100 curve 9':19, 'ITR100 curve A':20,'CMR361':21, 'CMR362':22, 'CMR363':23, 'CMR364':24, 'CMR365':25}}
|
|
curve.description=Calibration curve for pressure sensor
|
|
curve.default='TTR100'
|
|
userlimits.datatype={"type":"limit","members":{"type":"double", "min":0,"max":1000, "unit":"mbar"}}
|
|
userlimits.default=[1, 100]
|
|
userlimits.description=current user set limits for the pressure regulation.
|
|
userlimits.readonly=False
|
|
|
|
[module ccr12_p2]
|
|
class=secop.simulation.SimReadable
|
|
.description=Auxillary pressure Sensor.
|
|
value.default=1e-6
|
|
value.unit=mbar
|
|
.extra_params=curve,userlimits
|
|
curve.datatype={"type":"enum", "members":{'0..10V':0,'default':1,'0..9V':2,'DI200':3,'DI2000':4,'TTR100':7,'PTR90':8,'PTR225/PTR237':9,'ITR90':10,'ITR100 curve D':11, 'ITR100 curve 2':12, 'ITR100 curve 3':13,'ITR100 curve 4':14,'ITR100 curve 5':15, 'ITR100 curve 6':16, 'ITR100 curve 7':17, 'ITR100 curve 8':18, 'ITR100 curve 9':19, 'ITR100 curve A':20,'CMR361':21, 'CMR362':22, 'CMR363':23, 'CMR364':24, 'CMR365':25}}
|
|
curve.description=Calibration curve for pressure sensor
|
|
curve.default='PTR90'
|
|
userlimits.datatype={"type":"limit","members":{"type":"double", "min":0,"max":1000, "unit":"mbar"}}
|
|
userlimits.default=[1e-6, 1e-3]
|
|
userlimits.description=current user set limits for the pressure regulation.
|
|
userlimits.readonly=False
|
|
pollinterval.visibility='expert'
|