Спасибо, проверим в реале.
Спасибо, проверим в реале.
petera всё правильно написал, но тут нужно не только счётчик получать, но и реагировать на него быстрее, чем ПЛК цикл.
Такой код работает в симуляторе: total := total + WORD_TO_DWORD(newValue - prevValue);
Но это не решает проблему "быстрого управления" -- эта проблема решится PRU программой.
A: WORD;
С: WORD := 65530;
A:=0-C;
Получится "6".
Простой пример
Код:PROGRAM PLC_PRG VAR old: WORD; curr_count: WORD := 65500; NOTAL_count: WORD; PUSK: BOOL; TON1: TON; state: INT; END_VAR TON1(IN:=NOT TON1.Q , PT:= t#100ms ); CASE state OF 0: IF PUSK THEN old:=curr_count; state:=1; END_IF 1: curr_count:=curr_count + BOOL_TO_INT(TON1.Q); NOTAL_count:=curr_count-old; IF NOT PUSK THEN NOTAL_count:=0; state:=0; END_IF END_CASE
Последний раз редактировалось petera; 06.10.2016 в 15:30.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Да, в этом виде сломается.
Просто хотел ответить на частный вопрос
И показал, что обнулять счетчик не надо.Если обнулять счетчик в принципе невозможно вообще никак и нигде, то какой смысл в этом счетчике?
Формат регистра счетчика - WORD, т. е. 0…65535 по абсолютному значению, т. е. придется программно учитывать переполнение аппаратного счетчика?
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Правильно будет так: total := total + WORD_TO_INT(newValue - prevValue);
Последний раз редактировалось Newcomer; 06.10.2016 в 15:55.