PDA

Просмотр полной версии : Циклическое время



korzhyk
05.09.2008, 10:56
В описании библиотеки PID_Regulators сказано, что при использовании сторонних измерителей циклическое время надо вычислять самостоятельно. Для этог надо завести переменную PV_TIME типа WORD, в которую прибавлять время, равное периоду вызова POU (в 1/100 с). При переполнении (> 65535) переменную обнулять.

Кто-нибудь пробовал реализовать эту процедуру? Поделитесь пожалуйста опытом.

Малышев Олег
05.09.2008, 11:07
x:WORD;
tmr:TON;

tmr(in:=not tmr.q,pt:=t#100ms);

if tmr.q then
x:=x+100;
end_if

korzhyk
05.09.2008, 12:39
Спасибо. Но мне кажется, что в примере переменная х будет увеличиваться каждый раз на 1 с, а не на 100 мс.

Филоненко Владислав
05.09.2008, 13:31
Это как же на 1 сек. Где в коде 1 секунда?

korzhyk
05.09.2008, 13:44
Переменная х хранит время в единицах, равных 1/100 секунды. Если добавить 100 единиц, то ... Кроме того будет ли х корректно обнуляться при переполнении?

Малышев Олег
05.09.2008, 14:21
1) Да, нужно x:=x+10 - ошибся
2) Обнулять не надо - для переменной типа word перенос при переполненнии будет выполнен корректно

korzhyk
05.09.2008, 16:21
Спасибо. Вроде работает.
Вопрос такой. Будет ли циклическое время правильным, если ПЛК не смог прочитать очередные измерения. В это случае он вроде-бы использует предыдущие прочитанные.