Показано с 1 по 3 из 3

Тема: Retain и Persistant переменные

  1. #1

    По умолчанию Retain и Persistant переменные

    Давно хотел спросить, что я концептуально делаю не так? Проблема вот в чём
    Есть у меня с десяток Retain переменных. Они сохраняют своё значение, всё ОК - вопрос не про это
    Проект новый, живой, самодельный. Каждый день технологи придумывают что-то новое, приходится расширять функционал контроллера

    Изменить какое-нибудь условие? Легко меняется, прошивка обновляется на лету, проблем нет никаких
    Добавить новый POU? Легко добавляется, прошивка обновляется на лету, проблем нет никаких
    Изменить время Task-а? Уже нужна полная загрузка, при которой мои Retain-переменные могут и слететь
    Добавить новый Retain? Слетят по-любому
    Добавить новый модуль на Modbus? Слетят по-любому
    Нет, я не против вручную восстановить после этого десяток значений (не забываем, что для этого их нужно записать перед обновлением себе на листочек - и точно быть уверенным, что после такого вот включения с дефолтными значениями какая-нибудь условная задвижка резко не поедет не туда из-за неверной константы)
    А если таких переменных сотни? А тысячи? А у меня такой проект на подходе... Каждое такое обновление как на иголках...

    Я уже давно все текущие значения тупо присваиваю при объявлении (так надёжнее, чесслово):
    VAR RETAIN
    rem1:INT := 10; (* Сохраняемая переменная*)
    END_VAR


    А на одном контроллере я сделал функцию сохранения переменной на ЖД контроллера по её имени - и такую же на чтение. По старту контроллера - читаю. По изменению значения - пишу. Работает стабильно - и я спокоен

    Взять хоть тот же Weintek: нет-нет, там своих тараканов хватает, но за все эти годы константы RW там не слетали ни разу, что ты с ними ни делай и как ни издевайся. Они "слетят" только, если ты своей рукой поставишь птичку рядом с "Очистить RW" при загрузке. А ведь Weintek он даже не контроллер, а лишь старательно косит под него (кто в теме - поймёт)

    Заранее спасибо за советы!
    Последний раз редактировалось aaaSashaMGGU; 10.12.2023 в 21:28.

  2. #2
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,248

    По умолчанию

    Зачем значения переменых записывать на листочек если есть экспорт импорт
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  3. #3

    По умолчанию

    ...какие тут могут быть советы, если ответ заключен в самом названии темы про "Retain и Persistant".
    Нужно читать справку, в которой написано:
    * Retain сбрасываются на значения по умолчанию КАЖДЫЙ РАЗ при загрузке программы в контроллер. Они так устроены и ДОЛЖНЫ так работать. Зато их количество может быть большим.
    * Persistent сбрасываются только при изменении их списка или их начальных значений и НЕ сбрасываются при загрузке программы в контроллер. Их количество ограничено.
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

Похожие темы

  1. Retain-переменные
    от Newcomer в разделе ПЛК1хх [М02]
    Ответов: 27
    Последнее сообщение: 15.08.2023, 12:55
  2. RETAIN переменные в ПЛК 73
    от mrozhkov в разделе ПЛК63/73
    Ответов: 13
    Последнее сообщение: 09.07.2021, 11:07
  3. ПЛК 110-60 и RETAIN переменные
    от Dima184k в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 07.06.2021, 21:38
  4. Retain переменные
    от vendor в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 24.12.2017, 18:33
  5. Retain переменные
    от Darkstar в разделе ПЛК1хх
    Ответов: 41
    Последнее сообщение: 24.02.2011, 22:44

Ваши права

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