Страница 1 из 4 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 44

Тема: ФБ сохранения показаний на ST с энергонезависимостью.

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Unhappy ФБ сохранения показаний на ST с энергонезависимостью.

    Всем доброго времени суток, разрабатываю блок для подсчета показаний
    с импульсного счетчика на ST. Общие показания сохраняются спокойно и после отключения питания остаются,
    но временные показания (сутки, час, месяц, год) слетают после отключения питания.
    С чем может быть связан сброс? Программу прилагаю.
    Прибор: ПР200-24.2.2.0

    З.Ы.: смею высказать свою теорию, что из-за несовпадения даты с сохраненной в локальные переменные блока при повторной подаче питания.
    Ничего не понятно, но очень интересно

  2. #2

    По умолчанию

    Цитата Сообщение от Григори Посмотреть сообщение
    Всем доброго времени суток, разрабатываю блок для подсчета показаний
    с импульсного счетчика на ST. Общие показания сохраняются спокойно и после отключения питания остаются,
    но временные показания (сутки, час, месяц, год) слетают после отключения питания.
    С чем может быть связан сброс? Программу прилагаю.
    Прибор: ПР200-24.2.2.0

    З.Ы.: смею высказать свою теорию, что из-за несовпадения даты с сохраненной в локальные переменные блока при повторной подаче питания.
    Вы же сами всё обнуляете, например кусок кода
    Код:
    if i_nowDay <> l_day then
            l_FlowDay := 0;  // Зачем здесь обнуление?
            l_day := i_nowDay; 
        end_if
    Сначала присваиваете l_FlowDay := i_FlowDay; а потом в коде обнуляете l_FlowDay := 0; // Зачем здесь обнуление? И так везде

  3. #3

    По умолчанию

    kondor3000, Это сравнение числа дня входной переменной с локальной, если не совпадает(по логике происходит на след. день в 00:00), l_FlowDay - переменная с данными по самому потоку (Поток день, дословно) становится равна нулю и считается заново. Аналогичные операции проделываются с годом, часом и месяцем
    Последний раз редактировалось Григори; 27.12.2023 в 19:51.
    Ничего не понятно, но очень интересно

  4. #4

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Вы же сами всё обнуляете, например кусок кода
    Код:
    if i_nowDay <> l_day then
            l_FlowDay := 0;  // Зачем здесь обнуление?
            l_day := i_nowDay; 
        end_if
    Сначала присваиваете l_FlowDay := i_FlowDay; а потом в коде обнуляете l_FlowDay := 0; // Зачем здесь обнуление? И так везде

    Кусок кода с вычислениями расходов:
    Код:
    if i_Imp = TRUE then
           l_flow := l_Flow + ((1 / 1000) * i_ImpMass);
           l_FlowDay := l_FlowDay + ((1 / 1000) * i_ImpMass);
           l_FlowHour := l_FlowHour + ((1 / 1000) * i_ImpMass);
           l_FlowMonth := l_FlowMonth + ((1 / 1000) * i_ImpMass);
           l_FlowYear := l_FlowYear + ((1 / 1000) * i_ImpMass);
        end_if
    Кусок кода со сравнениями переменных дат и времени для сброса когда надо:
    Код:
    if i_nowDay <> l_day then
            l_FlowDay := 0;
            l_day := i_nowDay; 
        end_if
        
        if i_nowHour <> l_hour then
            l_FlowHour := 0;
            l_hour := i_nowHour; 
        end_if
        
        if i_nowMonth <> l_month then
            l_FlowMonth := 0;
            l_month := i_nowMonth; 
        end_if
        
        if i_nowYear <> l_year then
            l_FlowYear := 0;
            l_year := i_nowYear; 
        end_if
    И каждый цикл программы в сравнениях(и просто в коде) происходит перезапись локальных переменных (которые, как я слышал, энергонезависимые).
    Код:
    l_Flow := i_Flow;
    l_FlowYear := i_FlowYear;
    l_FlowMonth := i_FlowMonth;
    l_FlowDay := i_FlowDay;
    l_FlowHour := i_FlowHour;
    l_impMass:= i_ImpMass;
    В таблице переменных все с галочкой на энергонезависимость, но оно все равно сбрасывается

    P.S.: все переменные с i_ - входные, l_ - локальные, а выходные без префикса. Но да, комментариев в коде я оставил мало
    Последний раз редактировалось Григори; 27.12.2023 в 19:50.
    Ничего не понятно, но очень интересно

  5. #5

    По умолчанию

    Просто закомментируйте на время кусок кода с обнулением и проверьте, будут ли сохраняться расходы, при перезагрузке по питанию.
    Возможно надо ввести таймер на несколько секунд, чтобы не обнулялось при подаче питания.
    Последний раз редактировалось kondor3000; 28.12.2023 в 08:50.

  6. #6

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Просто закомментируйте на время кусок кода с обнулением и проверьте, будут ли сохраняться расходы, при перезагрузке по питанию.
    Возможно надо ввести таймер на несколько секунд, чтобы не обнулялось при подаче питания.
    Да, вы правы, если исключить из условия обнуление, он не сбрасывается при перезапуске питания. Как понимаю, задержку на включение действий условия на ST тоже надо сделать.
    TON из оф. видео подойдет же?
    https://www.youtube.com/watch?v=agJTfeRnfy4
    Ничего не понятно, но очень интересно

  7. #7

    По умолчанию

    Цитата Сообщение от Григори Посмотреть сообщение
    Да, вы правы, если исключить из условия обнуление, он не сбрасывается при перезапуске питания. Как понимаю, задержку на включение действий условия на ST тоже надо сделать.
    TON из оф. видео подойдет же?
    https://www.youtube.com/watch?v=agJTfeRnfy4
    Может проще выполнение всего блока отложить на один цикл после включения питания

  8. #8

    По умолчанию

    Цитата Сообщение от AlexCrane Посмотреть сообщение
    Может проще выполнение всего блока отложить на один цикл после включения питания
    Не совсем понимаю, как это реализовать. Поставить линии задержки на все выходные переменные?
    Ничего не понятно, но очень интересно

  9. #9
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    1,190

    По умолчанию

    Цитата Сообщение от Григори Посмотреть сообщение
    Не совсем понимаю, как это реализовать. Поставить линии задержки на все выходные переменные?
    Еще один вход сделать - разрешение работы

  10. #10

    По умолчанию

    Цитата Сообщение от Григори Посмотреть сообщение
    Не совсем понимаю, как это реализовать. Поставить линии задержки на все выходные переменные?
    Примерно так, но это не точно...

Страница 1 из 4 123 ... ПоследняяПоследняя

Похожие темы

  1. Ответов: 11
    Последнее сообщение: 05.05.2020, 16:00
  2. Автоматизация сохранения трендов
    от Vinsen в разделе Master SCADA 3
    Ответов: 12
    Последнее сообщение: 08.10.2018, 11:51
  3. Ошибка сохранения проекта MASTERSCADA
    от AndreMary в разделе Master SCADA 3
    Ответов: 5
    Последнее сообщение: 13.02.2015, 13:04
  4. Ошибка пути сохранения отчета
    от klg в разделе Master SCADA 3
    Ответов: 2
    Последнее сообщение: 01.12.2014, 16:56
  5. режим сохранения графиков
    от soi в разделе OWEN Proces Manager
    Ответов: 1
    Последнее сообщение: 26.03.2012, 10:49

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •