PDA

Просмотр полной версии : Энергонезависимая память



Alex_Kos
22.03.2012, 16:00
Всем доброго времени суток!
Разъясните пожалуйста кто в курсе.
Составил функциональный блок, выполняющий необходимую задачу. Включил в него ряд энергонезависимых переменных - с целью сохранения текущего состояния при пропадании питания. При очередной компиляции компилятор выдал ошибку - "Недостаточно энергонезависимой памяти. Переменная "PR_1", 852 байт.".
ФБ довольно таки объемный относительно числа содержащихся переменных, и как известно при включении хотя бы одной переменной ФБ в состав RETAIN переводит все переменные ФБ в эту область.
Не знает кто, есть ли какая-нибудь директива исключения данных из области retain (наподобии {nonpersistent})?
И еще один момент, удалив из ФБ объявление переменных в энергонезависимой области процент занятой энергонезависимой памяти составил 38.28% (1568 байт). На что эта память может быть потрачена, ведь энергонезависимых переменных больше нет?

swerder
22.03.2012, 16:35
сделайте не функциональный блок, а подпрограмму.

удалив из ФБ объявление переменных в энергонезависимой области процент занятой энергонезависимой памяти составил 38.28% (1568 байт). На что эта память может быть потрачена, ведь энергонезависимых переменных больше нет?
может быть поможет "проект - очистить все - компилировать все"

capzap
22.03.2012, 17:24
а глобальными их сделать не пробовали, чтоб блок ретаном не делать?

Alex_Kos
23.03.2012, 08:07
Спасибо за "очистить все", помогло )))))))
Насколько я понимаю подпрограмму размножить ведь нельзя, то есть экземпляры подпрограммы. А я предполагаю использовать несколько ФБ в проекте.
Глобальные переменные конечно выход, но скорее всего пойду по пути VAR_IN_OUT. Сделаю тип данных - структуру с перечнем необходимых энергонезависимых переменных и буду объявлять в PLC_PRG в retain. Так для порядка мне кажется удобнее будет, точно не запутаешься ))

lara197a
23.03.2012, 12:47
Память можно увеличить в настройках до 16Кб. По умолчанию 4

lara197a
23.03.2012, 13:11
http://s19.postimage.org/tv7tjm1ur/image.png (http://postimage.org/)
jpg image hosting (http://postimage.org/)

Alex_Kos
23.03.2012, 13:19
Спасибо, тоже уже нашел ))))))

swerder
26.03.2012, 17:25
Насколько я понимаю подпрограмму размножить ведь нельзя, то есть экземпляры подпрограммы. А я предполагаю использовать несколько ФБ в проекте.


можно конечно, ПКМ на подрограмме "овечка" > копировать объект > задаете новое имя > вуаля - клон "овечка[1]"