В документации по пункту есть сноски, что размеры некоторых областей памяти можно изменять. Где узнать, в каких пределах?
Вопрос второй: подскажите, как можно узнать заполнение Flash памяти (ПЛК150УМ)?
В документации по пункту есть сноски, что размеры некоторых областей памяти можно изменять. Где узнать, в каких пределах?
Вопрос второй: подскажите, как можно узнать заполнение Flash памяти (ПЛК150УМ)?
1) Это можно сделать в Target Settings
2) Не совсем понятно что Вы имеете в виду - возможно командами PLC browser 'dpt', 'ppt', 'pid' ?
По первому вопросу: Target Settings-> Memory Layout, допустим, Retain->Size - в каких пределах можно менять значение? Что такое сегментный номер Area? Где прочитать про это?
У меня задача хранить большой объём данных. Как вариант - сбрасывать их в файл, используя библиотеку SysLibFile.lib. Нужна информация о максимально возможном размере одного файла и о максимально возможном объёме информации, хранимой в нескольких файлах. Как посмотреть кол-во используемой и свободной Flash памяти?
1) Retain - max 16kB. Почитать в документации на CoDeSys.
2) Считывайте размер каждого файла командой SysLibGetFileSize и полученное число вычитаете из 3мБ (размер ФС)-размер default.prg.
Макс. размер файла в ФС - 4 Гб (понятно, что пока USB Host недоступен это конечно не нужно...)
Последний раз редактировалось Малышев Олег; 31.05.2007 в 15:15.
Олег, а каким образом подгружать файлы? просто я тут почитал (пробовать пока некогда).... стринговая переменная вмещает в себе 200 символов. Я так понимаю придется заполнять массив кусками по 200 символов на переменную? Или есть менее извратный способ?
Переменная типа STRING может иметь беск. размер (Аналогично строке в C). Ограничение на размер накладывается библиотечными функциями работы со строками. Если их не использовать, то все будет нормально.
Также можно использовать массивы и более сложные структуры, а в файловые функции передавать указатель на них (приведенный к нужному типу).
Тролль-наседка, добрый, нежный и ласковый
Пример:
FUNCTION SysFileWrite : DWORD
VAR_INPUT
File: DWORD;
Buffer: DWORD; (* Address (ADR) to Buffer *)
Size: DWORD;
END_VAR
VAR
END_VAR
объявляем массив:
my_file_buffer:Array 0 .. 65535 of BYTE;
Вызываем функцию
SysFileWrite (File_handler, ADR(my_file_buffer), 5000);
В результате записали 5000 байт из массива my_file_buffer
Тролль-наседка, добрый, нежный и ласковый