Add base/span properties and a gas factor calculation
This commit is contained in:
@ -1,8 +1,9 @@
|
|||||||
#
|
#
|
||||||
# Simple driver generator for the Hiden Isochema XCS vapour delivery system
|
# Simple driver generator for the Hiden Isochema XCS vapour delivery system
|
||||||
# vim: ts=8 sts=2 sw=2 expandtab autoindent smartindent
|
# vim: ts=8 sts=2 sw=2 expandtab autoindent smartindent nocindent
|
||||||
#
|
#
|
||||||
driver hiden_xcs_gen = {
|
driver hiden_xcs_gen = {
|
||||||
|
# driver_property douglas = clowes
|
||||||
usecreatenode = false
|
usecreatenode = false
|
||||||
vendor = hiden; device = xcs; protocol = std;
|
vendor = hiden; device = xcs; protocol = std;
|
||||||
class = environment
|
class = environment
|
||||||
@ -14,17 +15,20 @@ driver hiden_xcs_gen = {
|
|||||||
# Unnamed group has variables at device level
|
# Unnamed group has variables at device level
|
||||||
#
|
#
|
||||||
group = {
|
group = {
|
||||||
|
# group_property douglas = clowes
|
||||||
type = float
|
type = float
|
||||||
priv = user
|
priv = user
|
||||||
var temperature
|
var temperature
|
||||||
var flow1
|
var flow1
|
||||||
var flow2
|
var flow2
|
||||||
var flow3
|
var flow3
|
||||||
|
var gas_factor = { value = 1.0; }
|
||||||
var humidity = {
|
var humidity = {
|
||||||
driveable = humidity
|
driveable = humidity
|
||||||
readable = 1
|
readable = 1
|
||||||
read_command = '?ALL DATA'
|
read_command = '?ALL DATA'
|
||||||
read_function = read_all_data
|
read_function = read_all_data
|
||||||
|
checkrange_function = chkrange_function
|
||||||
value = 50
|
value = 50
|
||||||
lowerlimit = 10
|
lowerlimit = 10
|
||||||
upperlimit = 90
|
upperlimit = 90
|
||||||
@ -35,22 +39,24 @@ driver hiden_xcs_gen = {
|
|||||||
# The named group is at the device level, variables below that
|
# The named group is at the device level, variables below that
|
||||||
#
|
#
|
||||||
group analog = {
|
group analog = {
|
||||||
|
# group_property 'data' = true
|
||||||
type = float;
|
type = float;
|
||||||
priv = user;
|
priv = user;
|
||||||
readable = 1;
|
readable = 1;
|
||||||
read_function = read_sixteen;
|
read_function = read_sixteen;
|
||||||
var ain0 = { read_command = '?AIN,0'; };
|
property base = 0; # applies to all following vars
|
||||||
var ain1 = { read_command = '?AIN,1'; };
|
var pv1 = { read_command = '?AIN,0'; property span = 500; }; # ain0
|
||||||
var ain2 = { read_command = '?AIN,2'; };
|
var pv2 = { read_command = '?AIN,1'; property span = 500; }; # ain1
|
||||||
var ain8 = { read_command = '?AIN,8'; };
|
var pv3 = { read_command = '?AIN,2'; property span = 500; }; # ain2
|
||||||
var ain9 = { read_command = '?AIN,9'; };
|
var rhtemp = { read_command = '?AIN,8'; property span = 100; }; # ain8
|
||||||
var ain12 = { read_command = '?AIN,12'; };
|
var rhsense = { read_command = '?AIN,9'; property span = 100; }; # ain9
|
||||||
|
var ansto_temp = { read_command = '?AIN,12'; property span = 100; }; # ain12
|
||||||
writeable = 1;
|
writeable = 1;
|
||||||
read_function = read_twelve;
|
read_function = read_twelve;
|
||||||
write_function = write_twelve;
|
write_function = write_twelve;
|
||||||
var aout0 = { read_command = '?AOUT,0'; write_command = '!AOUT,0,'; }
|
var sp1 = { read_command = '?AOUT,0'; write_command = '!AOUT,0,'; property span = 500; } # aout0
|
||||||
var aout1 = { read_command = '?AOUT,1'; write_command = '!AOUT,1,'; }
|
var sp2 = { read_command = '?AOUT,1'; write_command = '!AOUT,1,'; property span = 500; } # aout1
|
||||||
var aout2 = { read_command = '?AOUT,2'; write_command = '!AOUT,2,'; }
|
var sp3 = { read_command = '?AOUT,2'; write_command = '!AOUT,2,'; property span = 500; } # aout2
|
||||||
};
|
};
|
||||||
group digital = {
|
group digital = {
|
||||||
type = int;
|
type = int;
|
||||||
@ -59,7 +65,13 @@ driver hiden_xcs_gen = {
|
|||||||
writeable = 1;
|
writeable = 1;
|
||||||
read_function = read_digital;
|
read_function = read_digital;
|
||||||
write_Function = write_digital;
|
write_Function = write_digital;
|
||||||
var dout2 = { read_command = '?DOUT,2'; write_command = '!DOUT,2,'; allowed = '0,1'; readable = 5}
|
var dout2 = {
|
||||||
|
read_command = '?DOUT,2';
|
||||||
|
write_command = '!DOUT,2,';
|
||||||
|
allowed = '0,1';
|
||||||
|
readable = 5;
|
||||||
|
# property junk = junk;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -82,7 +94,17 @@ driver hiden_xcs_gen = {
|
|||||||
@ if { [string equal -nocase -length 5 "${data}" "AOUT ="] } {
|
@ if { [string equal -nocase -length 5 "${data}" "AOUT ="] } {
|
||||||
@ set result [scan "${data}" "AOUT = %d OK" val]
|
@ set result [scan "${data}" "AOUT = %d OK" val]
|
||||||
@ if { ${result} == 1 } {
|
@ if { ${result} == 1 } {
|
||||||
@ set data [expr (100.0 * ${val}) / 4095.0]
|
@ if { [hpropexists [sct] base] } {
|
||||||
|
@ set base [sct base]
|
||||||
|
@ } else {
|
||||||
|
@ set base 0.0
|
||||||
|
@ }
|
||||||
|
@ if { [hpropexists [sct] span] } {
|
||||||
|
@ set span [sct span]
|
||||||
|
@ } else {
|
||||||
|
@ set span 500.0
|
||||||
|
@ }
|
||||||
|
@ set data [expr (${span} * (${val} - ${base})) / 4095.0]
|
||||||
@ } else {
|
@ } else {
|
||||||
@ sct geterror "Syntax (Result=${result}) error in: '${data}'"
|
@ sct geterror "Syntax (Result=${result}) error in: '${data}'"
|
||||||
@ }
|
@ }
|
||||||
@ -94,7 +116,17 @@ driver hiden_xcs_gen = {
|
|||||||
@ if { [string equal -nocase -length 5 "${data}" "AIN ="] } {
|
@ if { [string equal -nocase -length 5 "${data}" "AIN ="] } {
|
||||||
@ set result [scan "${data}" "AIN = %d OK" val]
|
@ set result [scan "${data}" "AIN = %d OK" val]
|
||||||
@ if { ${result} == 1 } {
|
@ if { ${result} == 1 } {
|
||||||
@ set data [expr (100.0 * ${val}) / 65535.0]
|
@ if { [hpropexists [sct] base] } {
|
||||||
|
@ set base [sct base]
|
||||||
|
@ } else {
|
||||||
|
@ set base 0.0
|
||||||
|
@ }
|
||||||
|
@ if { [hpropexists [sct] span] } {
|
||||||
|
@ set span [sct span]
|
||||||
|
@ } else {
|
||||||
|
@ set span 500.0
|
||||||
|
@ }
|
||||||
|
@ set data [expr (${span} * (${val} - ${base})) / 65535.0]
|
||||||
@ } else {
|
@ } else {
|
||||||
@ sct geterror "Syntax error (Result=${result}) in: '${data}'"
|
@ sct geterror "Syntax error (Result=${result}) in: '${data}'"
|
||||||
@ }
|
@ }
|
||||||
@ -104,13 +136,13 @@ driver hiden_xcs_gen = {
|
|||||||
}
|
}
|
||||||
code read_function read_all_data = {
|
code read_function read_all_data = {
|
||||||
@ if { [string equal -nocase -length 2 "${data}" "A "] } {
|
@ if { [string equal -nocase -length 2 "${data}" "A "] } {
|
||||||
@ set lust [split [string range "${data}" 2 end-3] ',']
|
@ set data_list [split [string range "${data}" 2 end-3] ',']
|
||||||
@ if { [llength ${lust}] == 8 } {
|
@ if { [llength ${data_list}] == 8 } {
|
||||||
@ set data [expr [lindex ${lust} 0]]
|
@ set data [expr [lindex ${data_list} 0]]
|
||||||
@ hupdate ${tc_root}/temperature [expr [lindex ${lust} 1]]
|
@ hupdate ${tc_root}/temperature [expr [lindex ${data_list} 1]]
|
||||||
@ hupdate ${tc_root}/flow1 [expr [lindex ${lust} 3]]
|
@ hupdate ${tc_root}/flow1 [expr [lindex ${data_list} 3] / [hval ${tc_root}/gas_factor]]
|
||||||
@ hupdate ${tc_root}/flow2 [expr [lindex ${lust} 4]]
|
@ hupdate ${tc_root}/flow2 [expr [lindex ${data_list} 4] / [hval ${tc_root}/gas_factor]]
|
||||||
@ hupdate ${tc_root}/flow3 [expr [lindex ${lust} 5]]
|
@ hupdate ${tc_root}/flow3 [expr [lindex ${data_list} 5] / [hval ${tc_root}/gas_factor]]
|
||||||
@ } else {
|
@ } else {
|
||||||
@ sct geterror "Syntax error (Result=${result}) in: '${data}'"
|
@ sct geterror "Syntax error (Result=${result}) in: '${data}'"
|
||||||
@ }
|
@ }
|
||||||
@ -121,7 +153,17 @@ driver hiden_xcs_gen = {
|
|||||||
code write_function write_digital = {
|
code write_function write_digital = {
|
||||||
}
|
}
|
||||||
code write_function write_twelve = {
|
code write_function write_twelve = {
|
||||||
@ set par [expr int(4095.0 * ${par} / 100.0)]
|
@ if { [hpropexists [sct] base] } {
|
||||||
|
@ set base [sct base]
|
||||||
|
@ } else {
|
||||||
|
@ set base 0.0
|
||||||
|
@ }
|
||||||
|
@ if { [hpropexists [sct] span] } {
|
||||||
|
@ set span [sct span]
|
||||||
|
@ } else {
|
||||||
|
@ set span 500.0
|
||||||
|
@ }
|
||||||
|
@ set par [expr int(${base} + (4095.0 * ${par} / ${SPAN}))]
|
||||||
@ set cmd "${cmd_str}${par}"
|
@ set cmd "${cmd_str}${par}"
|
||||||
}
|
}
|
||||||
#
|
#
|
||||||
@ -129,4 +171,7 @@ driver hiden_xcs_gen = {
|
|||||||
#
|
#
|
||||||
code mkDriver = {
|
code mkDriver = {
|
||||||
}
|
}
|
||||||
|
code chkrange_function = {
|
||||||
|
@ # hooked
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user