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

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

  1. #1

    Exclamation Проблема с SysLibFile

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

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

    По умолчанию

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

  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,248

    По умолчанию

    Цитата Сообщение от 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,248

    По умолчанию

    Цитата Сообщение от 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

    Exclamation

    Цитата Сообщение от capzap Посмотреть сообщение
    Вот по увиденному я и высказываюсь, сравните когда я проверяю размер http://www.owen.ru/forum/showpost.ph...15&postcount=4
    Да суть то не в этом. Суть в том что размер фала он проверяет и показывает что он более 1024байт, но данные в него почему-то не хочет записывать. Если файл менее 1024байт, то данные в него записываются без проблем и мой код работает... Натолкните на правильную мысль, где подвох?

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

    По умолчанию

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

  9. #9

    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КБ.

  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

Ваши права

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