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

Тема: retain переменные, случайные значения

  1. #1

    По умолчанию retain переменные, случайные значения

    ПЛК 100

    У меня есть раздел в CodeSys:

    VAR_GLOBAL RETAIN
    head: WORD := 0;
    tail: WORD := 0;
    END_VAR

    Пока я не присваивал значения переменных в ноль, после прошивки (загрузочный проект), переменные ИНОГДА принимали случайные значения.

    Два вопроса:

    1. Как объяснить, появление случайных значений?
    2. Из-за того, что при инициализации переменных я их обнуляю, не может ли получиться так, что в какой-то момент записанные значения заменятся на ноли?
    (я потестировал, вроде такого не происходит, но хотелось бы знать наверняка).

  2. #2

    По умолчанию

    пока жестко не обнулил. Куски старых данных по адресам.

  3. #3

    По умолчанию

    Под жестко обнулил, вы что понимаете?

  4. #4

    По умолчанию

    Цитата Сообщение от ribamuka Посмотреть сообщение
    ПЛК 100

    У меня есть раздел в CodeSys:

    VAR_GLOBAL RETAIN
    head: WORD := 0;
    tail: WORD := 0;
    END_VAR

    Пока я не присваивал значения переменных в ноль, после прошивки (загрузочный проект), переменные ИНОГДА принимали случайные значения.

    Два вопроса:

    1. Как объяснить, появление случайных значений?
    2. Из-за того, что при инициализации переменных я их обнуляю, не может ли получиться так, что в какой-то момент записанные значения заменятся на ноли?
    (я потестировал, вроде такого не происходит, но хотелось бы знать наверняка).
    Когда в начале Вы присваиваете переменной значение 0, то область памяти выделенная под эту переменную забивается 0 и значения не "плавают", когда начальное значение не указываете, то возможно что по адресу выделенному переменной были какие то другие данные и поэтому как вы говорите значения "плавают"

  5. #5

    По умолчанию

    Двоичный (бинарный) файл — в широком смысле: последовательность произвольных байтов. Какая конкретно последовательность бит в области отведенную под переменную изначально была? Или этот файл изначально только 0 был занят? Объявляя переменную и ее начальное значение мы как бы структурируем файл в данной области. Или я в чем то не прав?
    Последний раз редактировалось Роман Николаевич; 25.02.2020 в 16:05.

  6. #6

    По умолчанию

    так изначально то файл просто набор случайных бит? Почему если не присваивать начальные значения, то иногда проскакивают какие то левые значения как говорит уважаемый ribamuka?

    Я понял. При выключении контроллера в этот файл записываем данные и как бы присваиваем переменным значения, но почему тогда левые значения появляются иногда? если начальные значения не задавать? Может дело в питании и ретайн просто не успевают записаться?
    Последний раз редактировалось Роман Николаевич; 25.02.2020 в 16:25.

  7. #7

    По умолчанию

    При первом запуске retain переменной неоткуда считаться т.к. в файл они не разу не записались, вот похоже в этом случае в переменной и появляется мусор.

  8. #8

    По умолчанию

    Прошу пояснить, вы как-то отлавливаете потерю питания и пытаетесь в этот момент записать значение переменных?
    Если батарея села, как сработает этот механизм?

  9. #9

    По умолчанию

    А я вам скажу, почему у вас проблемы не возникает. Видимо вы не используете встроенные часы. Они зависят от батареи и когда она садится время сбивается на начало времен. Я с этим горя хлебнул. Пришлось написать реализацию протокола NTP и синхронизовывать врем через интеренет. Но это тоже до конца не спасает т.к. сервер времени может умереть. Сейчас думаю на rs232 подключить GPS приемник и с него время получать.

  10. #10

    По умолчанию

    Вы сказали, что ПЛК с 2008 года работает и на батарею не обращали внимание, вот на это я и ответил, что не обращали из-за того, что часы не используете. Мое высказывание к retain не имело никакого отношения.

Похожие темы

  1. Retain-переменные
    от Newcomer в разделе ПЛК1хх [М02]
    Ответов: 27
    Последнее сообщение: 15.08.2023, 12:55
  2. Retain переменные
    от vendor в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 24.12.2017, 18:33
  3. Retain переменные
    от Николай_бел в разделе ПЛК1хх
    Ответов: 12
    Последнее сообщение: 27.11.2016, 11:40
  4. Retain переменные. Как?
    от Igont в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 31.05.2007, 11:57
  5. Retain переменные
    от Павел ГОН в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 14.05.2007, 14:45

Ваши права

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