87 lines
2.9 KiB
Plaintext
87 lines
2.9 KiB
Plaintext
# Script Context Driver for the Twickenham Scientific Instruments Superconducting Magnet Controller
|
|
driver tsi_smc = {
|
|
vendor = Twickenham_Scientific_Instruments;
|
|
device = Superconducting_Magnet_Controller;
|
|
protocol = std;
|
|
class = environment; simulation_group = environment_simulation;
|
|
add_args = '{id 1}';
|
|
make_args = 'id';
|
|
|
|
group = {
|
|
priv = user;
|
|
type = float;
|
|
property 'units' = 'G';
|
|
control = true;
|
|
data = true;
|
|
nxsave = true;
|
|
group_property 'data' = true
|
|
group_property 'control' = true
|
|
|
|
var 'value' = {permlink = 'B.S01'; mutable = true; property klass = 'NXsensor'};
|
|
var setpoint = {
|
|
permlink = 'B.SP01';
|
|
writeable = 1;
|
|
write_function = setGauss;
|
|
lowerlimit = 0; upperlimit = 15000.0; tolerance = 10;
|
|
property settle_time = 5;
|
|
mutable = true;
|
|
property klass = 'sensor';
|
|
driveable = 'value';
|
|
};
|
|
};
|
|
|
|
group a = {
|
|
readable = 1;
|
|
priv = user;
|
|
type = text;
|
|
control = false;
|
|
data = false;
|
|
var G = { read_command = "G"; property offset = 16.116; };
|
|
var J = { read_command = "J"; };
|
|
var K = { read_command = "K"; };
|
|
var N = { read_command = "N"; };
|
|
var O = { read_command = "O"; };
|
|
var S = { read_command = "S"; };
|
|
};
|
|
|
|
group b = {
|
|
writeable = 1;
|
|
priv = user;
|
|
type = text;
|
|
var Rate = { type = float; write_command = "A"; };
|
|
var Lower = { type = float; write_command = "L"; lowerlimit = 0; upperlimit = 60; property 'units' = "A"; };
|
|
var Ramp = { type = int; write_command = "R"; allowed = "0,1"; lowerlimit = 0; upperlimit = 1; };
|
|
var Pause = { type = int; write_command = "P"; allowed = "0,1"; lowerlimit = 0; upperlimit = 1; };
|
|
};
|
|
|
|
code rdValue = {%%
|
|
if {[basename [sct]] == "G"} {
|
|
set value [expr {[string range ${data} 1 8]}]
|
|
set value [expr {${value} * 2.5177E+02 - 1.6116E+01}]
|
|
if {[hpropexists [sct] offset]} {
|
|
set value [expr {${value} + [hgetpropval [sct] offset]}]
|
|
}
|
|
if {${value} != [hgetpropval ${tc_root}/value oldval]} {
|
|
debug_log ${tc_root} 1 "${tc_root}/value changed to new:${value}, from old:[hgetpropval ${tc_root}/value oldval]"
|
|
hupdate ${tc_root}/value ${value}
|
|
hsetprop ${tc_root}/value oldval ${value}
|
|
hsetprop ${tc_root}/value readtime [sct utime]
|
|
}
|
|
}
|
|
if {[basename [sct]] == "S"} {
|
|
set value [expr {[string range ${data} 11 17]}]
|
|
set value [expr {${value} * 2.5177E+02 - 1.6116E+01}]
|
|
if {${value} != [hgetpropval ${tc_root}/value oldval]} {
|
|
debug_log ${tc_root} 1 "${tc_root}/setpoint changed to new:${value}, from old:[hgetpropval ${tc_root}/setpoint oldval]"
|
|
hupdate ${tc_root}/setpoint ${value}
|
|
hsetprop ${tc_root}/setpoint oldval ${value}
|
|
hsetprop ${tc_root}/setpoint readtime [sct utime]
|
|
}
|
|
}
|
|
%%}
|
|
code setGauss = {%%
|
|
set amps [expr {(${par} + 1.6116E+01) / 2.5177E+02}]
|
|
hset ${tc_root}/b/Lower ${amps}
|
|
%%}
|
|
};
|