Добрый день!
Сообщение от
Алекс2013
Подскажите пожалуйста как организовать в программе ПЛК счетчик циклов?.
Правильно ли я понял, Вы хотите подсчитывать кол-во пройденных циклов ПЛК?
Если да, то нужно инкриминировать значение счетчика на единицу каждый цикл.
CylceCount.png
Сообщение от
Алекс2013
Который бы не сбрасывался и данные можно было бы посмотреть при подключении ПК.
Для того, что бы значение не сбрасывалось при перезагрузки ПЛК по питанию, переменная счетчика должна быть объявлена в энергонезависимой области контроллера.
Retain.png
Однако, при переполнении счетчика, счет пойдет заново.
Это можно обойти, обрабатывая переполнение.
Код:
VAR RETAIN
dwCycleCounter : DWORD;
dwPrevCycleCounter : DWORD;
dwOverfillingCounter : DWORD;
END_VAR
(* Инкрементируем значение счетчика *)
dwCycleCounter := dwCycleCounter + 1;
(* Если значние счетчика в прошлом цикле было больше, чем сейчас,
значит было перпеполнение *)
IF dwPrevCycleCounter > dwCycleCounter THEN
(* Увеличиваем счетчик переполнений *)
dwOverfillingCounter := dwOverfillingCounter + 1;
(* Тогда общее кол-во циклов будет =
4294967295 * dwOverfillingCounter + dwCycleCounter *)
END_IF
(* Сохраняем текущее значение счетчика *)
dwPrevCycleCounter := dwCycleCounter;
4294967295 - максимальное значение переменной типа DWORD.