Добрый день!

Цитата Сообщение от Алекс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.