Показано с 1 по 3 из 3

Тема: ArchivatorOwenLib - ограничения при записи в файл

Древовидный режим

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

    По умолчанию ArchivatorOwenLib - ограничения при записи в файл

    Коллеги прошу помощи. Не могу понять как библиотека ArchivatorOwenLib ведет запись на диск.
    Задача записывать в файл по нажатию кнопки или событию
    массив 6 параметров (в строку) на 500.
    По кнопке все пишется исправно. За один заход 1 строка или
    если организовать цикл FOR, то можно по нажатию кнопки
    за раз стабильно 10 строк записать, на 20 строках уже
    вешается виртуальный контроллер (как будет реальная панель
    себя вести не знаю).
    Поэтому пришлось сделать цикл через IF с использованием таймера - каждую секунду по 10 строк, НО!!!
    Если я 50 раз нажму кнопку, то все супер, запись идет великолепно.
    Если в цикле, то записывается только первые 10 строк т.е первый проход, далее цикл работает, но запись на диск не идет.
    Поставил точки останова, посмотрел пошагово, все ОК цикл работает правильно, запись не идет.

    Кусок кода. Run_write AND R_Pause.Q каждую секунду запускают цикл FOR, в нем записываю 10 строк, выход и через секунду снова.
    Код:
    R_EnableWriteArchiv(CLK := V_G_EnableWriteArchiv); //Запуск по кнопке
    R_Pause(CLK := PLC_PRG.FB_Blink_1s.OUT);           //Запуск по таймеру 1сек
    IF R_EnableWriteArchiv.Q THEN Run_write := TRUE; END_IF
    
    IF Run_write AND R_Pause.Q THEN
    		FOR i := 1+x TO 10+x BY 1 DO
    			//Get data for archive
    			FB_GetData.SetHead();
    			FB_GetData(
    				Name:= 'N', 
    				Tip:= 4, 
    				Znachenie:= ADR(ST_G_Tablo_Full[i].DegaN_Time), 
    				ErrCode=> , 
    				StrOut=> , 
    				StrOutHead=> );
    			... ... ...	
    			FB_GetData(
    				Name:= 'Error', 
    				Tip:= 4, 
    				Znachenie:= ADR(ST_G_Tablo_Full[i].DegaN_Error), 
    				ErrCode=> , 
    				StrOut=> , 
    				StrOutHead=> );
    			//Write data to disc
    			FB_WriteData(
    				Enable:= R_EnableWriteArchiv.Q, 
    				ArcPnt:= ADR(FB_GetData), 
    				NameArc:= 'arhiv', 
    				Path:= 'C:\', (*'/var/log/',*) 
    				Mode:= 0, 
    				ErrCode=> );	
    		END_FOR	
    		IF x >= V_GC_ArchivMaxN-10 THEN 
    			x := 0;
    			Run_write := FALSE;
    		ELSE
    			x := x + 10;
    		END_IF
    END_IF
    Функциональный блок Arhiv_To_Flash.
    Вложения Вложения

Похожие темы

  1. Ответов: 28
    Последнее сообщение: 18.08.2015, 20:39
  2. Ограничения файловой системы ПЛК?
    от Дмитрий Артюховский в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 26.01.2009, 21:22
  3. Ответов: 2
    Последнее сообщение: 16.01.2008, 09:41
  4. Ограничения по количеству переменных в MODBUS
    от Павел ГОН в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 24.04.2007, 11:53

Ваши права

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