Files
sics/site_ansto/instrument/config/environment/temperature/west_6100.sct
2014-09-10 14:22:50 +10:00

80 lines
2.3 KiB
Plaintext

# vim: ts=8 sts=2 sw=2 expandtab autoindent smartindent nocindent
driver west_6100 = {
protocol = modbus_ap
class = environment
simulation_group = environment_simulation
add_args = 'dev_id'
make_args = 'dev_id'
Group = {
priv = user; data = true; control = true; mutable = true;
type = float;
readable = 1;
fetch_function = getDecimal;
read_function = rdDecimal;
write_function = wrDecimal;
var sensor = { read_command = "1"; }
var setpoint = { read_command = "2"; write_command = "2"; writeable = 1; }
var w_sp = { read_command = "21"; write_command = "21"; writeable = 1; }
var ramprate = { read_command = "24"; write_command = "24"; writeable = 1; }
var alarm1 = { read_command = "13"; write_command = "13"; writeable = 1; }
var alarm2 = { read_command = "14"; write_command = "14"; writeable = 1; }
type = int;
fetch_function = getInteger;
read_function = rdInteger;
write_function = wrInteger;
var power = { read_command = "3";}
var powermax = { read_command = "20"; write_command = "20"; writeable = 1; }
}
group aux = {
data = false;
control = false;
mutable = false;
readable = 2;
nxsave = false;
fetch_function = getInteger;
read_function = rdInteger;
var model = { type = int; read_command = "122"; }
var decimal = { type = int; read_command = "18"; value = 0; }
var instatus = { type = int; read_command = "133"; }
}
code fetch_function getInteger = {
@TCL
set cmd "1:3:${cmd_str}:1:U16"
@END
}
code read_function rdInteger = {
@TCL
@END
}
code write_function wrInteger = {
@TCL
set cmd "1:16:${cmd_str}:1:U16:${par}"
@END
}
# Decimal Adjusted fields
code fetch_function getDecimal = {
@TCL
set cmd "1:3:${cmd_str}:1:U16"
@END
}
code read_function rdDecimal = {
@TCL
set decimal [hval ${tc_root}/aux/decimal]
if { ${decimal} > 0 } {
set data [expr {pow(10, -${decimal}) * ${data}}]
}
@END
}
code write_function wrDecimal = {
@TCL
set decimal [hval ${tc_root}/aux/decimal]
set par [sct target]
if { ${decimal} > 0 } {
set par [expr {pow(10, ${decimal}) * ${par}}]
}
set par [expr {round(${par})}]
set cmd "1:16:${cmd_str}:1:U16:${par}"
@END
}
}