diff --git a/site_ansto/instrument/config/environment/temperature/sct_west_6100.tcl b/site_ansto/instrument/config/environment/temperature/sct_west_6100.tcl index 5b1bd613..11de806d 100644 --- a/site_ansto/instrument/config/environment/temperature/sct_west_6100.tcl +++ b/site_ansto/instrument/config/environment/temperature/sct_west_6100.tcl @@ -126,7 +126,10 @@ proc ::scobj::west_6100::rdDecimal {tc_root} { error "[sct geterror]" } # rdDecimal hook code starts - set data [expr {0.10 * ${data}}] + set decimal [hval ${tc_root}/aux/decimal] + if { ${decimal} > 0 } { + set data [expr {pow(10, -${decimal}) * ${data}}] + } # rdDecimal hook code ends if { [hpropexists [sct] geterror] } { debug_log ${tc_root} 9 "[sct] error: [sct geterror]" @@ -203,7 +206,12 @@ proc ::scobj::west_6100::wrDecimal {tc_root nextState cmd_str} { set par [sct target] set cmd "${cmd_str}${par}" # wrDecimal hook code starts - set par [expr {round(10.0 * [sct target])}] + 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}" # wrDecimal hook code ends if { [hpropexists [sct] geterror] } { @@ -424,6 +432,7 @@ proc ::scobj::west_6100::mkDriver { sct_controller name ip_address tcp_port dev_ hsetprop ${scobj_hpath}/aux/decimal mutable false hsetprop ${scobj_hpath}/aux/decimal nxsave false hsetprop ${scobj_hpath}/aux/decimal oldval 0 + hset ${scobj_hpath}/aux/decimal 0 hsetprop ${scobj_hpath}/aux/decimal sdsinfo "::nexus::scobj::sdsinfo" hsetprop ${scobj_hpath}/aux/decimal type "part" hsetprop ${scobj_hpath}/aux/decimal nxalias "${name}_aux_decimal" diff --git a/site_ansto/instrument/config/environment/temperature/west_6100.sct b/site_ansto/instrument/config/environment/temperature/west_6100.sct index 72ff7050..178d25b7 100644 --- a/site_ansto/instrument/config/environment/temperature/west_6100.sct +++ b/site_ansto/instrument/config/environment/temperature/west_6100.sct @@ -34,7 +34,7 @@ driver west_6100 = { fetch_function = getInteger; read_function = rdInteger; var model = { type = int; read_command = "122"; } - var decimal = { type = int; read_command = "18"; } + var decimal = { type = int; read_command = "18"; value = 0; } var instatus = { type = int; read_command = "133"; } } code fetch_function getInteger = { @@ -59,12 +59,20 @@ driver west_6100 = { } code read_function rdDecimal = { @TCL - set data [expr {0.10 * ${data}}] + set decimal [hval ${tc_root}/aux/decimal] + if { ${decimal} > 0 } { + set data [expr {pow(10, -${decimal}) * ${data}}] + } @END } code write_function wrDecimal = { @TCL - set par [expr {round(10.0 * [sct target])}] + 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 }