PDA

Просмотр полной версии : syslibmem и 3М



Валенок
21.09.2012, 16:53
.............

Валенок
21.09.2012, 17:21
...............

capzap
21.09.2012, 21:26
сейчас далеко от ПК чтоб проверить, но умные мужики пишут, что еще INI надо сразу использовать:
VAR
pinst : POINTER TO FBTest;
END_VAR
IF bInit THEN
bInit := FALSE;
pinst := SysMemAlloc(SIZEOF(pinst^)); (*allocation of bytes*)
bDummy := INI(pinst^, TRUE); (*initialisation of instance*)
END_IF
pinst^(a := l, b := m, c := n, x => l, y => m, z => n);

So, in principle, its possible. One Problem is, that you have to take care that the memory is freed again, and that's a problem, because on the next download SysMemFree won't be called automatically.
An online change on FBTest by changing the Interface would lead to a crash
тоже про катастрофу пишут

Николаев Андрей
23.09.2012, 00:30
Записывали на flash вплоть до фото. 3 МБ фотографий влазило :)
Размер одного файла действительно ограничен.
Всех подробностей ввода данного ограничения не помню - в понедельник смогу уточнить.

Yegor
24.09.2012, 06:19
А где именно написано про 3М? В руководстве по ПЛК110 вот что:
Объем оперативной памяти (тип памяти): 8 Мб (SDRAM), из них 1 Мб для кода пользовательской программы, 128 кб для переменных пользовательской программыКстати луч ненависти в сторону авторов документа: «б» это биты, а байты это «Б».

Yegor
24.09.2012, 12:54
О ! Даже до 8М. Пользоваться ей как ? И почему крах ?Если я правильно понял, то в тех же восьми эмах крутится среда исполнения вместе с реализациями стандартных библиотек. Ещё метр под программу пользователя. И нигде не уточняется, фиксированы границы участков или нет. Так что из документации вообще никаких выводов не сделать.

Yegor
24.09.2012, 14:20
Среда ? Она в ПК.Среда исполнения и среда разработки — разные вещи.

Дмитрий Артюховский
25.09.2012, 09:11
может всёже ни как, раз уж мы дальше мега выйти не можем, это означает что все, что мы творим, включаяя и динамический захват памяти как раз и входит в отведенный нам "метр", можно наверное попробовать создать код, занимающий 600 кБ и исходя из моих выводов, контроллер работать не будет, а станет перегружаться

есть работающий проект размером около мега (при загрузке кдс начитывает 1078654) и в нем переменных килобайт 200....

Yegor
25.09.2012, 11:46
Если не висят, то нельзя гарантировать реальное время — будут задержки неопределённой длительности. Так что скорее всего висят.

YuriBel
25.09.2012, 16:27
Извиняюсь, что влезаю, но я так понял, что имелось ввиду, что в отличие от ФБ, которые имеют экземпляры, функции не имеют экземпляров.
И если рассматривать ФБ и функции, которые, например, работают с большими структурами данных, то каждый экземпляр ФБ будет отъедать значительный кусок памяти именно за счет данных, с которыми он работает ( речь именно про данные, а не про код), а функция этих данных просто не имеет, только код. Поэтому и задавался вопрос про количество экземпляров ФБ.

Yegor
26.09.2012, 08:34
меня просто отшили на этапе компиляцииПосмотрите в Target Settings > Memory Layout > Global > Size прежде чем подкатывать к компилятору с такими запросами :) Для ПЛК160 там стоит 16#20000, что в десятичной составляет 131072.