PDA

Просмотр полной версии : Помогите!!! Не вмещается проект в ПЛК 100



Georgiy
22.03.2011, 18:22
Неожиданно столкнулся с проблемой, даже не пойму с какой стороны подойти - при компиляции выдается ошибка 3803 - Недостаточно общей памяти данных. Я пытаюсь объявить массив из 744 строк в строке 20 байт текста!!!! И внутри блока пытался объявить и в глобальных переменных - выдается ошибка. Ставлю массив на 50-60 строк, все Ок, но мне-то нужно 744. В чем собака зарыта? Вроде же 8 Мб оперативки у ПЛК?

Николаев Андрей
22.03.2011, 18:27
8 МБ - общая память.
Сколько конкретно памяти отводится под пользовательскую программу - сейчас выясняем.

Georgiy
22.03.2011, 18:33
Андрей, при компиляции проекта в окне мне выдается: Использовано данных: хххххх из 131072. Вот эти 131072 байт и есть максимально возможный объем используемой мною в проекте памяти? А у меня один массив только 80 кб занимает....

Georgiy
22.03.2011, 18:41
У меня в массиве в текстовом виде хранится время в виде: 01.01:08:53:00
01.01:17:27:00 и т.д. Я пытался загрузить его в проект и присвоить массиву TOD. Как Вы имеете ввиду закодировать? Я попробую.

Georgiy
22.03.2011, 19:02
FUNCTION_BLOCK Load_File
VAR_INPUT
Test_Power: BOOL;
END_VAR
VAR_OUTPUT
mes_i:ARRAY[0..7433] OF STRING;
END_VAR
VAR
FilenameL: STRING;
f2: DWORD;
ReadBuffer: ARRAY[0..743] OF STRING;
TIME_buf:ARRAY[0..743] OF STRING;
i: DWORD;


SysFileClose(f2);

FilenameL:='grafik1.txt';
IF Test_Power=TRUE THEN
f2:=SysFileOpen(FilenameL,'r');
i:=0;
(*Очищаем буфер и массив*)
FOR i := 0 TO 743 DO
ReadBuffer [i] := '';
TIME_buf [i] := '';
END_FOR

i:=0;

FOR i:=0 TO 743 DO
(*Загружаем из файла*)

SysFileRead(f2,ADR(ReadBuffer[i]),14);

(*Выбираем из него время*)

time_buf[i]:=(MID(ReadBuffer[i],8,7));

(Делаем формат TOD)

mes_i[i]:=STRING_TO_TOD(CONCAT('tod#',time_buf[i]));
END_FOR
SysFileClose(f2);


(*-----------------------------------------------------------------------*)

Georgiy
22.03.2011, 20:05
capzap, спасибо. Я пока другой выход нашел. Уменьшил длинну строки с умолчания 80 байт (оказывается умолчание есть, случайно выяснил) до нужных мне 16. Так влезло с запасом в 130 кб.

Евстигнеев Максим
22.03.2011, 22:12
FUNCTION_BLOCK Load_File
VAR_INPUT
Test_Power: BOOL;
END_VAR
VAR_OUTPUT
mes_i:ARRAY[0..7433] OF STRING;
END_VAR


7433? не опечатка?

Georgiy
23.03.2011, 09:26
Максим, да, это опечатка, 743 в проекте.