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

Тема: С0414: Не хвататет перманентной памяти

  1. #1
    Пользователь
    Регистрация
    20.07.2021
    Адрес
    Москва, Тула
    Сообщений
    49

    По умолчанию С0414: Не хвататет перманентной памяти

    Добрый день

    Перестало хватать перманентной памяти на ПЛК210-12. До этого все было нормально, все компилировалось и заливалось в контроллер. В проект добавились только несколько констант. И теперь ошибка С0414.
    Хотя объем retain намного меньше 64 кбайт. Кнопки "очисить" и "очистить все" не помогают.

  2. #2

    По умолчанию

    Цитата Сообщение от Paha1977 Посмотреть сообщение
    Добрый день

    Перестало хватать перманентной памяти на ПЛК210-12. До этого все было нормально, все компилировалось и заливалось в контроллер. В проект добавились только несколько констант. И теперь ошибка С0414.
    Хотя объем retain намного меньше 64 кбайт. Кнопки "очисить" и "очистить все" не помогают.
    Добрый день.
    Выложите, пожалуйста, ссылку на проект, в котором проявляется эта проблема.

  3. #3

  4. #4

    По умолчанию

    В реализации CODESYS - квалификатор RETAIN/PERSISTENT влияет на весь объект. Это справедливо и для вложенных объектов.
    Конкретный пример: SV_SETTINGS помечен как RETAIN PERSISTENT ---> SOLENOID_VALVE тоже целиком размещается в RETAIN PERSISTENT ---> astGVS тоже целиком размещается в RETAIN PERSISTENT.

    За счет этого эффекта объекты вашего проекта действительно довольно быстро заполнили всю энергонезависимую память и теперь не влезают в нее.

  5. #5
    Пользователь
    Регистрация
    20.07.2021
    Адрес
    Москва, Тула
    Сообщений
    49

    По умолчанию

    Почему тогда эти объекты не добавляются автоматически при использовании "Добавить все пути экземпляров" в Persistent Vars?
    Если объявить SV_SETTINGS не как STRUCT RETAIN PERSISTENT, а как STRUCT PERSISTENT, то будет ли вся структура SOLENOID_VALVE и экземпляры astGVS попадать в MRAM?
    Последний раз редактировалось Paha1977; 10.06.2026 в 12:54.

  6. #6

    По умолчанию

    Цитата Сообщение от Paha1977 Посмотреть сообщение
    Почему тогда эти объекты не добавляются автоматически при использовании "Добавить все пути экземплятов" в Persistent Vars?
    Потому что подразумевается, что в контексте Persistent Vars они вас не интересуют.
    Вообще, в типовом сценарии использования Persistent Vars рассматривается как отдельный глобальный список всех PERSISTENT-переменных проекта, в котором они вручную объявляются пользователем.
    То, что можно указать квалификатор PERSISTENT где-то еще и потом использовать команду "Добавить все пути экземпляров" - это довольно сомнительное, на мой взгляд, поведение, уходящее корнями в какие-то древние версии среды.
    Оно только вносит больше путаницы и вдвое увеличивает количество используемой энергонезависимой памяти.
    Даже официальная документация рекомендует не использовать эту команду:

    2026-06-10_12-53-56.png

  7. #7
    Пользователь
    Регистрация
    20.07.2021
    Адрес
    Москва, Тула
    Сообщений
    49

    По умолчанию

    То есть выход только один, разделять структуры на обычные и retain и обявлять экземпляры retain отдельно?

  8. #8
    Пользователь
    Регистрация
    20.07.2021
    Адрес
    Москва, Тула
    Сообщений
    49

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Потому что подразумевается, что в контексте Persistent Vars они вас не интересуют.
    Вообще, в типовом сценарии использования Persistent Vars рассматривается как отдельный глобальный список всех PERSISTENT-переменных проекта, в котором они вручную объявляются пользователем.
    То, что можно указать квалификатор PERSISTENT где-то еще и потом использовать команду "Добавить все пути экземпляров" - это довольно сомнительное, на мой взгляд, поведение, уходящее корнями в какие-то древние версии среды.
    Оно только вносит больше путаницы и вдвое увеличивает количество используемой энергонезависимой памяти.
    Даже официальная документация рекомендует не использовать эту команду:

    2026-06-10_12-53-56.png
    Но оно работает по крайне мере. Теперь все компилируется без ошибок и предупреждениий.

  9. #9

    По умолчанию

    Цитата Сообщение от Paha1977 Посмотреть сообщение
    То есть выход только один, разделять структуры на обычные и retain и обявлять экземпляры retain отдельно?
    Да, на мой взгляд - это самый разумный подход.
    Объекты, которые требуется использовать как PERSISTENT - объявлять в списке PersistentVars.
    Объекты, которые требуется использоваться как RETAIN - объявлять в области VAR_RETAIN программ или GVL.

  10. #10

    По умолчанию

    Цитата Сообщение от Paha1977 Посмотреть сообщение
    То есть выход только один, разделять структуры на обычные и retain и обявлять экземпляры retain отдельно?
    Лично я объявляю структуру. Если в этой структуре нужен персистэнт, то в персистэнт листе объявляется переменная нужного типа, а в структуре объявляется ссылка на этот персистэнт. Красота

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

Похожие темы

  1. МСД-100 карты памяти
    от Yury Evgenev в разделе Эксплуатация
    Ответов: 4
    Последнее сообщение: 09.08.2019, 11:24
  2. Использование памяти в ПЛК
    от Mikhael_2 в разделе ПЛК (среда MasterSCADA 4D)
    Ответов: 0
    Последнее сообщение: 05.07.2019, 17:30
  3. Ячейка памяти
    от Project M в разделе Среда программирования OWEN Logic
    Ответов: 21
    Последнее сообщение: 10.07.2017, 08:59
  4. Нехватка памяти СПК-207
    от Dima_31 в разделе СПК2xx (архив)
    Ответов: 4
    Последнее сообщение: 24.05.2016, 07:23
  5. Распределение памяти
    от Milchuk в разделе ПЛК1хх
    Ответов: 7
    Последнее сообщение: 01.06.2007, 08:26

Ваши права

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