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

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

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

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

    Добрый день

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

  2. #2
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,924

    По умолчанию

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

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

  3. #3

  4. #4
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,924

    По умолчанию

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

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

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

    По умолчанию

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

  6. #6
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,924

    По умолчанию

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

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

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

    По умолчанию

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

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

    По умолчанию

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

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

  9. #9
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,924

    По умолчанию

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

Похожие темы

  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

Ваши права

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