PDA

Просмотр полной версии : Как реализовать энергонезависимый счетчик?



Aleksey.KIP
03.07.2018, 07:54
Добрый день, у меня вопрос, на СПК207 реализована автоматика упаковки пакетов муки в термопленку.Тоько не получается сделать энергонезависимый счетчик количества пакетов. Счетчик обнуляется при каждом выключении. Буду благодарен за подсказку!!!!!

Зинько Владислав
04.07.2018, 12:59
Добрый день, у меня вопрос, на СПК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;
...