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

Тема: Retain переменные не сохраняются!

  1. #1

    По умолчанию Retain переменные не сохраняются!

    1) Устанавливаю связь с ПЛК
    2) Создаю загрузочный проект Онлайн --> Создание загрузочного проектаТочно знаю, что проект создан. Проверяю так:
    1) ПЛК-Браузер
    2) В командной строке пишу filedir. Появляется следующее:

    filedir
    log.txt
    debug.txt
    local_addres.dat
    config.dat
    retain.bin
    source.dat
    DEFAULT.PRG
    DEFAULT.CHK

    3) Запуск программы
    Работаю N-е время с программой, отключаю питание (эмитирую случай отключения электроэнергии). После этого вновь пытаюсь устанавить связь с ПЛК, но появляется сообщение: "Программа была изменена. Загрузить новую программу?" Если выбираю Нет, то тогда идет связь с ПЛК устанавливается, retain переменные на месте. Но когда нажимаю Да осуществляется полная загрузка программы, открываю визуализацию - retain переменных след простыл (стоят нули да пустые строки). Можно, конечно, все время нажимать Нет, но при изменении кода программы нажатие Да необходимо. Иначе изменения в программе не вступят в силу. Тогда переменные, описанные как энергонезависимые, стираются и их снова надо вводить.
    Вопросы:
    1) Такое поведение retain-переменных и программы (имею в виду появление сообщения) при отключении, а потом при включении питания считается нормальным?
    2) Можно ли изменить код программы, сохранив при этом retain переменные?

  2. #2

    По умолчанию

    проект выкладывайте сразу ...посмотрим.
    сделайте их еще и Persistent...
    а также инициализируйте при обьявлении там где это необходимо.
    Последний раз редактировалось DARNER; 01.03.2010 в 12:57.

  3. #3

    По умолчанию

    вот он родной:
    Вложения Вложения

  4. #4

    По умолчанию

    но когда нажимаю да - вот в этом все дело. ретайн обнуляются при загрузке программы.

  5. #5

    По умолчанию те же трудности

    у меня таже проблема установил флаги Retain и Persistent для глобальных переменных. при перезагрузки программы все значения обнуляются (у меня они все Int). как заставить переменные сохраняться?

    P.s. использую плк 63

    А Вот и Код

    VAR RETAIN PERSISTENT
    IntgrSum:ARRAY[1..8] OF DINT;
    IntgrRemaind: ARRAY[1..8] OF DINT;
    PrevSum: ARRAY[1..8] OF DINT;
    END_VAR
    Последний раз редактировалось Pomar; 01.03.2010 в 16:44.

  6. #6

    По умолчанию

    при перезагрузке программы - retain всегда стираются. Вы же записываете новую программу!
    В ПЛК63 нет online change, поэтому любая запись трактуется как новая.

  7. #7

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    при перезагрузке программы - retain всегда стираются. Вы же записываете новую программу!
    В ПЛК63 нет online change, поэтому любая запись трактуется как новая.
    В документации CodeSys написано:
    Постоянные переменные обозначаются ключевым словом PERSISTENT. В отличие от сохраняемых переменных эти переменные сохраняют свои значения только при загрузке кода новой программы, но не
    при выключении питания или любом сбросе. Значения постоянных переменных размещаются внеэнергонезависимого ОЗУ.
    Переменные PERSISTENT можно включить в RETAIN объявления. И в данном случае переменные должны сохраняться как при отключении питания так и при перезагрузке программы

  8. #8

    По умолчанию

    Это правило действует если программа не меняется, т.е. не меняются все распределения данных.
    В действительности каждую загрузку программы CoDeSys трактует как новую и все стирает. Не работает.

  9. #9

    По умолчанию

    спасибо за объяснение :-)

  10. #10

    По умолчанию

    спасибо. буду иметь ввиду

Ваши права

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