Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 16

Тема: Проблема с SysLibFile

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Exclamation Проблема с SysLibFile

    Следующая проблема... Когда размер файла созданного и редактируемого посредством SysLibFile становится 1кб (1024байт), данные в него перестают добавляться. Как можно решить эту проблему?

  2. #2
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,300

    По умолчанию

    Для начала - выложить код

  3. #3

    Exclamation

    Цитата Сообщение от Валенок Посмотреть сообщение
    Для начала - выложить код
    Ну вообщем код, который отвечает за запись в 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);

  4. #4
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,294

    По умолчанию

    Цитата Сообщение от lava_02 Посмотреть сообщение
    Ну вообщем код, который отвечает за запись в 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);
    Странно что вообще работает, мне кажется сперва надо файл открыть, потом его размер вычислить

  5. #5

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    Странно что вообще работает, мне кажется сперва надо файл открыть, потом его размер вычислить
    Так вот же в конце, смотрите внимательней...

    sizDWC:=SysFileGetSize('DWC.txt');
    fileDWC:=SysFileOpen('DWC.txt','w');
    SysFileSetPos(fileDWC, sizDWC);
    SysFileWrite(fileDWC, ADR(strokaDWC), LEN(strokaDWC));
    SysFileClose(fileDWC);

  6. #6
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,294

    По умолчанию

    Цитата Сообщение от lava_02 Посмотреть сообщение
    Так вот же в конце, смотрите внимательней...

    izDWC:=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

  7. #7
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,300

    По умолчанию

    Понимаете, вынутые из контекста куски бывают неговорят явно об ошибках. А точно строка-то есть ? Вы этот код как вызываете ? И как вы определяете что не пишется ? Тута никто не проверяет нигде return'ов SetPos/Write/Close.
    Пакуем в case с сохранением ответа функций и CTRL-F5 в помощь.

  8. #8

    Exclamation

    Цитата Сообщение от Валенок Посмотреть сообщение
    Понимаете, вынутые из контекста куски бывают неговорят явно об ошибках. А точно строка-то есть ? Вы этот код как вызываете ? И как вы определяете что не пишется ? Тута никто не проверяет нигде 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КБ.

  9. #9
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,294

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Понимаете, вынутые из контекста куски бывают не говорят явно об ошибках.
    Вот тут уже упоминалось, надо видеть весь проект и из моего кода может тоже можно извлечь пользу, если дескриптор не возвращает ошибку, то можно производить какие либо действия, а если файл занят, то нечего в него и писать

  10. #10

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Особенности библиотеки SysLibFile
    от Партизан в разделе ПЛК1хх
    Ответов: 21
    Последнее сообщение: 12.08.2010, 10:06
  2. Библиотека SysLibFile
    от Serp в разделе ПЛК1хх
    Ответов: 37
    Последнее сообщение: 23.03.2010, 13:34
  3. Вопрос по SysLibFile
    от TYER в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 22.05.2009, 13:07
  4. работа с SysLibFile.
    от Юрий_1900 в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 19.11.2008, 13:10
  5. SysLibFile
    от незарегистрированный в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 31.10.2008, 18:01

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •