
Сообщение от
Aleksey.KIP
Добрый день, у меня вопрос, на СПК207 реализована автоматика упаковки пакетов муки в термопленку.Тоько не получается сделать энергонезависимый счетчик количества пакетов. Счетчик обнуляется при каждом выключении. Буду благодарен за подсказку!!!!!
Добрый день!
Вы используете энергонезависимую переменную для значения наработки счетчика, но при следующем запуске СПК значение начинает наполняться с нуля?
Если да, то вероятно переменная затирается самим счетчиком.
Чтобы этого избежать, необходимо переменную наработки (энергонезависимую) суммировать с переменной-выходом счетчика.
Покажу на примере счетчика CTU (Standart.lib):
Объявление переменных:
Код:
VAR
// Функциональный блок счетчика
m_fbPackageCounter : CTU;
// Переменная наработки счетчика
m_wCounterValue : WORD;
// Переменная с предыдущим значением количества пакетов
m_wPrevPackageCount : WORD;
// Признак первого запуска устройства
m_xInitialized : BOOL := FALSE;
END_VAR
Объявление энергонезависимой переменной значения количества пакетов:
Код:
VAR RETAIN
// Переменная количества пакетов
m_wPackageCount : WORD;
END_VAR
Обработка в программе:
Код:
...
{Первые строки программы}
// Проверка на первый запуск после подачи питания
IF NOT xInitialized THEN
// Запоминаем предыдущее значение количества отсчитанных пакетов
m_wPrevPackageCount := m_wPackageCount;
// Устанавливаем признак удачного первого запуска
m_xInitialized := TRUE;
END_IF
{Где-то здесь вызов счетчика}
m_wCounterValue := m_fbPackageCounter.CV;
// Сохранение значения количества пакетов
m_wPackageCount := m_wPrevPackageCount + m_dwCounterValue;
...