Просмотр полной версии : Помогите!!! Не вмещается проект в ПЛК 100
Неожиданно столкнулся с проблемой, даже не пойму с какой стороны подойти - при компиляции выдается ошибка 3803 - Недостаточно общей памяти данных. Я пытаюсь объявить массив из 744 строк в строке 20 байт текста!!!! И внутри блока пытался объявить и в глобальных переменных - выдается ошибка. Ставлю массив на 50-60 строк, все Ок, но мне-то нужно 744. В чем собака зарыта? Вроде же 8 Мб оперативки у ПЛК?
Николаев Андрей
22.03.2011, 18:27
8 МБ - общая память.
Сколько конкретно памяти отводится под пользовательскую программу - сейчас выясняем.
Андрей, при компиляции проекта в окне мне выдается: Использовано данных: хххххх из 131072. Вот эти 131072 байт и есть максимально возможный объем используемой мною в проекте памяти? А у меня один массив только 80 кб занимает....
У меня в массиве в текстовом виде хранится время в виде: 01.01:08:53:00
01.01:17:27:00 и т.д. Я пытался загрузить его в проект и присвоить массиву TOD. Как Вы имеете ввиду закодировать? Я попробую.
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);
(*-----------------------------------------------------------------------*)
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? не опечатка?
Максим, да, это опечатка, 743 в проекте.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot