Skip to content

Commit

Permalink
modified: assemblies/assembly005/pid.tcl
Browse files Browse the repository at this point in the history
  • Loading branch information
unknown authored and unknown committed Apr 3, 2012
1 parent 6281ea2 commit 91c4f25
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions assemblies/assembly005/pid.tcl
Expand Up @@ -44,6 +44,10 @@ set terrvalues [list]
set timevalues [list] set timevalues [list]
set rtimevalues [list] set rtimevalues [list]


# Число отсчётов температуры, необходимых для фурье-анализа
set NUM_OF_FOURIER_READINGS 300
set tvalues_fourier [list]

# Время начала работы, мс # Время начала работы, мс
set START_TIME 0 set START_TIME 0


Expand Down Expand Up @@ -133,13 +137,32 @@ proc finish {} {
destroyChildren destroyChildren
} }


proc fourierFileName {} {
for { set n 1 } { $n < 100 } { incr n } {
set fn [format "tf-%03d.txt" $n]
if { ![file exists $fn] } {
return $fn
}
}
return "tf-000.txt"
}

proc writeFourierData { data } {
set f [open [fourierFileName] w]
foreach v $data {
puts $f $v
}
close $f
}

############################################################################### ###############################################################################
# Обработчики событий # Обработчики событий
############################################################################### ###############################################################################


# Процедура вызывается модулем измерения температуры # Процедура вызывается модулем измерения температуры
proc setTemperature { t tErr } { proc setTemperature { t tErr } {
global mutexVar pidState log tvalues terrvalues timevalues rtimevalues NUM_OF_READINGS START_TIME global mutexVar pidState log tvalues terrvalues timevalues rtimevalues NUM_OF_READINGS START_TIME
global tvalues_fourier NUM_OF_FOURIER_READINGS


set tm [clock milliseconds] set tm [clock milliseconds]


Expand All @@ -162,6 +185,12 @@ proc setTemperature { t tErr } {
set der1 0.0 set der1 0.0
} }


lappend tvalues_fourier $t
if { [llength $tvalues_fourier] >= $NUM_OF_FOURIER_READINGS } {
writeFourierData $tvalues_fourier
set tvalues_fourier [list]
}

# Запишем в состояние ПИДа # Запишем в состояние ПИДа
set pidState(currentTemperature) $t set pidState(currentTemperature) $t


Expand Down

0 comments on commit 91c4f25

Please sign in to comment.