Следующая проблема... Когда размер файла созданного и редактируемого посредством SysLibFile становится 1кб (1024байт), данные в него перестают добавляться. Как можно решить эту проблему?
Вид для печати
Следующая проблема... Когда размер файла созданного и редактируемого посредством SysLibFile становится 1кб (1024байт), данные в него перестают добавляться. Как можно решить эту проблему?
Для начала - выложить код
Ну вообщем код, который отвечает за запись в SysLibFile вот такой - не стал выкладывать полный код программы..
Два раза в сутки в файл дописываются значения переменных, и как размер файла становится 1КБ, информация перестаёт в него добавляться.
Код:PROGRAM new_EC
VAR
y: REAL; (* Преобразование EC *)
sizDWC:DINT; (*размер файла для записи SysLibFile*)
fileDWC:DWORD; (*исполнительный файл для SysLibFile*)
strokaDWC:STRING;(*Строка для записи DWC значений*)
END_VAR
strokaDWC:='DWC4'; END_IF;
strokaDWC:=CONCAT (strokaDWC, ' ');
strokaDWC:=CONCAT (strokaDWC, TimeAndDate.Data);
strokaDWC:=CONCAT (strokaDWC, ' ');
strokaDWC:=CONCAT (strokaDWC, TimeAndDate.Vremya);
strokaDWC:=CONCAT (strokaDWC, ' ');
strokaDWC:=CONCAT (strokaDWC, 'Слито');
strokaDWC:=CONCAT (strokaDWC, ' ');
strokaDWC:=CONCAT (strokaDWC, REAL_TO_STRING(TRUNC(Uroven_Setup.liters*100)));
strokaDWC:=INSERT(strokaDWC,'.',LEN(strokaDWC)-2);
strokaDWC:=CONCAT (strokaDWC, 'л.');
strokaDWC:=CONCAT (strokaDWC, ' ');
strokaDWC:=CONCAT (strokaDWC, 'EC=');
strokaDWC:=CONCAT (strokaDWC, Okruglenie_EC.strokaEC);
strokaDWC:=CONCAT (strokaDWC, 'мСм');
strokaDWC:=CONCAT (strokaDWC, ' ');
strokaDWC:=CONCAT (strokaDWC, 'PH=');
strokaDWC:=CONCAT (strokaDWC, REAL_TO_STRING(TRUNC(PH*100)));
strokaDWC:=INSERT(strokaDWC,'.',LEN(strokaDWC)-2);
strokaDWC:=CONCAT (strokaDWC, '$R$N');
sizDWC:=SysFileGetSize('DWC.txt');
fileDWC:=SysFileOpen('DWC.txt','w');
SysFileSetPos(fileDWC, sizDWC);
SysFileWrite(fileDWC, ADR(strokaDWC), LEN(strokaDWC));
SysFileClose(fileDWC);
Вот по увиденному я и высказываюсь, сравните когда я проверяю размер http://www.owen.ru/forum/showpost.ph...15&postcount=4
Да суть то не в этом. Суть в том что размер фала он проверяет и показывает что он более 1024байт, но данные в него почему-то не хочет записывать. Если файл менее 1024байт, то данные в него записываются без проблем и мой код работает... Натолкните на правильную мысль, где подвох?
Понимаете, вынутые из контекста куски бывают неговорят явно об ошибках. А точно строка-то есть ? Вы этот код как вызываете ? И как вы определяете что не пишется ? Тута никто не проверяет нигде return'ов SetPos/Write/Close.
Пакуем в case с сохранением ответа функций и CTRL-F5 в помощь.
Я примерно понял в чём проблема. С помощью функции SysFileGetSize я вижу что размер создаваемого мной файла действительно увеличивается, при добавлении в него новых данных. Но как только я копирую файл с плк на компьютер (Онлайн-Читать файл из ПЛК), то его размер всегда равен 1КБ. При чём не важно какой файл я пытаюсь скопировать с флэш ПЛК (debug.txt
config.dat
retain.bin
calib.inc
DEFAULT.PRG
DEFAULT.CHK
My Project.PRG
local_addres.dat
log.txt
source.dat)
Размер любого из этих файлов при копировании с ПЛК равен 1КБ. Пробовал копировать файлы как через меню (Онлайн-Читать файл из ПЛК), так и с помощью утилиты plc_io. Результат один. Размер любого файла 1КБ.