Slight change to the way we do PID in SCT files
This commit is contained in:
@ -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 {
|
||||||
|
@ -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]
|
||||||
|
Reference in New Issue
Block a user