Files
sics/site_ansto/instrument/config/environment/magneticField/tsi_smc.sct

82 lines
2.7 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;
var 'value' = {permlink = 'B.S01'};
var setpoint = {
writeable = 1;
write_function = setGauss;
lowerlimit = 0; upperlimit = 500.0; tolerance = 10;
property settle_time = 5;
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 = 2; 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}
%%}
};