Slight change to the way we do PID in SCT files

This commit is contained in:
Douglas Clowes
2014-09-30 17:24:58 +10:00
parent 741d12d57a
commit a9932f8ae8
2 changed files with 8 additions and 8 deletions

View File

@ -288,14 +288,14 @@ proc ::scobj::hiden_xcs::pid_flow {tc_root sp pv} {
set p_value [expr {[sct pid_pvalue] * [sct pid_error]}] set p_value [expr {[sct pid_pvalue] * [sct pid_error]}]
set d_value [expr {[sct pid_dvalue] * (${pv} - [sct oldval])}] set d_value [expr {[sct pid_dvalue] * (${pv} - [sct oldval])}]
sct pid_deriv [sct pid_error] sct pid_deriv [sct pid_error]
sct pid_integ [expr {[sct pid_integ] + [sct pid_error]}] sct pid_integ [expr {[sct pid_integ] + [sct pid_error] * [sct pid_ivalue]}]
if { [sct pid_integ] > [sct pid_imax] } { if { [sct pid_integ] > [sct pid_imax] } {
sct pid_integ [sct pid_imax] sct pid_integ [sct pid_imax]
} }
if { [sct pid_integ] < -[sct pid_imax] } { if { [sct pid_integ] < -[sct pid_imax] } {
sct pid_integ -[sct pid_imax] sct pid_integ -[sct pid_imax]
} }
set i_value [expr {[sct pid_ivalue] * [sct pid_integ]}] set i_value [sct pid_integ]
set pid [expr {${p_value} + ${i_value} + ${d_value}}] set pid [expr {${p_value} + ${i_value} + ${d_value}}]
# pid_flow hook code starts # pid_flow hook code starts
if { ![hval ${tc_root}/auto] } { if { ![hval ${tc_root}/auto] } {
@ -327,14 +327,14 @@ proc ::scobj::hiden_xcs::pid_humidity {tc_root sp pv} {
set p_value [expr {[sct pid_pvalue] * [sct pid_error]}] set p_value [expr {[sct pid_pvalue] * [sct pid_error]}]
set d_value [expr {[sct pid_dvalue] * (${pv} - [sct oldval])}] set d_value [expr {[sct pid_dvalue] * (${pv} - [sct oldval])}]
sct pid_deriv [sct pid_error] sct pid_deriv [sct pid_error]
sct pid_integ [expr {[sct pid_integ] + [sct pid_error]}] sct pid_integ [expr {[sct pid_integ] + [sct pid_error] * [sct pid_ivalue]}]
if { [sct pid_integ] > [sct pid_imax] } { if { [sct pid_integ] > [sct pid_imax] } {
sct pid_integ [sct pid_imax] sct pid_integ [sct pid_imax]
} }
if { [sct pid_integ] < -[sct pid_imax] } { if { [sct pid_integ] < -[sct pid_imax] } {
sct pid_integ -[sct pid_imax] sct pid_integ -[sct pid_imax]
} }
set i_value [expr {[sct pid_ivalue] * [sct pid_integ]}] set i_value [sct pid_integ]
set pid [expr {${p_value} + ${i_value} + ${d_value}}] set pid [expr {${p_value} + ${i_value} + ${d_value}}]
# pid_humidity hook code starts # pid_humidity hook code starts
if { ![hval ${tc_root}/auto] } { if { ![hval ${tc_root}/auto] } {
@ -1333,8 +1333,8 @@ proc add_hiden_xcs {name ip_address tcp_port id} {
::scobj::hiden_xcs::add_driver ${name} "environment" ${simulation_flag} ${ip_address} ${tcp_port} ${id} ::scobj::hiden_xcs::add_driver ${name} "environment" ${simulation_flag} ${ip_address} ${tcp_port} ${id}
} }
clientput "file evaluation of sct_hiden_xcs.tcl" clientput "file evaluation of hiden_xcs_sct.tcl"
::scobj::hiden_xcs::sics_log 9 "file evaluation of sct_hiden_xcs.tcl" ::scobj::hiden_xcs::sics_log 9 "file evaluation of hiden_xcs_sct.tcl"
proc ::scobj::hiden_xcs::read_config {} { proc ::scobj::hiden_xcs::read_config {} {
set catch_status [ catch { set catch_status [ catch {

View File

@ -1372,14 +1372,14 @@ def put_pid_function(MyDriver, func):
txt += [' set p_value [expr {[sct pid_pvalue] * [sct pid_error]}]'] txt += [' set p_value [expr {[sct pid_pvalue] * [sct pid_error]}]']
txt += [' set d_value [expr {[sct pid_dvalue] * (${pv} - [sct oldval])}]'] txt += [' set d_value [expr {[sct pid_dvalue] * (${pv} - [sct oldval])}]']
txt += [' sct pid_deriv [sct pid_error]'] txt += [' sct pid_deriv [sct pid_error]']
txt += [' sct pid_integ [expr {[sct pid_integ] + [sct pid_error]}]'] txt += [' sct pid_integ [expr {[sct pid_integ] + [sct pid_error] * [sct pid_ivalue]}]']
txt += [' if { [sct pid_integ] > [sct pid_imax] } {'] txt += [' if { [sct pid_integ] > [sct pid_imax] } {']
txt += [' sct pid_integ [sct pid_imax]'] txt += [' sct pid_integ [sct pid_imax]']
txt += [' }'] txt += [' }']
txt += [' if { [sct pid_integ] < -[sct pid_imax] } {'] txt += [' if { [sct pid_integ] < -[sct pid_imax] } {']
txt += [' sct pid_integ -[sct pid_imax]'] txt += [' sct pid_integ -[sct pid_imax]']
txt += [' }'] txt += [' }']
txt += [' set i_value [expr {[sct pid_ivalue] * [sct pid_integ]}]'] txt += [' set i_value [sct pid_integ]']
txt += [' set pid [expr {${p_value} + ${i_value} + ${d_value}}]'] txt += [' set pid [expr {${p_value} + ${i_value} + ${d_value}}]']
if func in MyDriver['Funcs'] and len(MyDriver['Funcs'][func]['text']) > 0: if func in MyDriver['Funcs'] and len(MyDriver['Funcs'][func]['text']) > 0:
txt += ['# %s hook code starts' % func] txt += ['# %s hook code starts' % func]