PDA

Просмотр полной версии : Файловая система Овен ПЛК150



uvwxyz
13.03.2007, 11:25
Уважаемые разработчики программного обеспечения для Овен ПЛК 150 объясните пожалуйста следующую ситуацию.
При записи информации во Flesh-память ПЛК происходит его перезагрузка.
Пример кода, при выполнении которого происходит перезагрузка контроллера

VAR
Buffer: ARRAY [0..1] OF BYTE;

END_VAR

FileHandler:=SysFileOpen('archFlNm', 'a');

Buffer[0]:=1;
Buffer[1]:=2;

sysFileWriteState:=SysFileWrite(FileHandler,ADR(Bu ffer),SIZEOF(Buffer));

sysFileCloseState:=SysFileClose(FileHandler);

Малышев Олег
13.03.2007, 13:46
1) Стандартная библиотека SysLibFile не позволяет открывать файлы с флагами иными кроме 'w' и 'r'. (Это не стандартная библитека 'C').
2) Для записи в конец файла используйте SysFileSetPos
3) Вылет на функции SysFileWrite происходит потому, что файл не открыт для записи. Это баг. Он устранен в прошивке 2.00. Функция будет возвращать ошибку.

uvwxyz
13.03.2007, 15:35
На сайте есть только прошивка 1.31.4.
Где можно взять прошивку 2?
(или когда можно ожидать её появление?)

Филоненко Владислав
13.03.2007, 16:13
Прошивка 2.0 не нужна, просто используйте буковки r или w, а не "a"!
Проблема была в ней!

uvwxyz
27.03.2007, 12:51
1. Почему возвращаемое значение функции SysFileClose всегда FALSE

FileHandler:=SysFileOpen('FileName', 'w');
<....>
fileCloseState:=SysFileClose(FileHandler);

2. Почему, если создать файл с именем, размер которого превышает 16 символов(это допустимо, так как в описании функции SysFileOpen сказано, что размер имени может достигать 80 символов), то такой файл нельзя удалить с помощью команды filedelete из PLC_Browser'a.

Филоненко Владислав
27.03.2007, 13:06
1. -1 тоже возвращает пр ошибках.
Попытка закрытия закрытого файла не ошибка.
2. Это ограничение CoDeSys

uvwxyz
27.03.2007, 16:32
Уважаемый Владислав!
Приведите пожалуйста фрагмент кода, открывающего, дописывающего и закрывающего файл, при выполнении которого в контроллере ОВЕН ПЛК150 функция SysFileClose возвращала бы значение TRUE.
В Овене ПЛК150 мне не удаётся получить возвращаемое значение TRUE при выполнении функции SysFileClose.

Филоненко Владислав
28.03.2007, 10:18
И зачем вам TRUE? True будет возникать только при ошибке.
Например, если вместо handle вы пошлете мусор.