Страница 6 из 10 ПерваяПервая ... 45678 ... ПоследняяПоследняя
Показано с 51 по 60 из 91

Тема: Журналирование в ПЛК

  1. #51
    Пользователь
    Регистрация
    24.07.2012
    Адрес
    Россия
    Сообщений
    1,492

    По умолчанию

    Цитата Сообщение от drvlas Посмотреть сообщение
    Я ж спрашивал! Где ты был... Но сейчас уже есть смысл доработать текущую идею
    Да, интересно что в итоге получится. Можно сюда и повыкладывать в помощь тем кто столкнется и описать принцип, если религия конечно не запрещает.

  2. #52
    Пользователь
    Регистрация
    28.08.2008
    Адрес
    23..93..123
    Сообщений
    1,674

    По умолчанию

    Цитата Сообщение от Scream Посмотреть сообщение
    Бегло посмотрел тему. Искал возражения против стандартного архиватора, не нашел.
    так вот..
    А нельзя ли просто воспользоваться готовым решением Archive?
    Вам наверное бы подошел. Время и дата автоматом ставится.
    Ктото скажет большой файл создать нельзя.
    С вашими способностями с библиотекой SysLibFile можно будет проверять размер файла созданного Archive1 и если он достигает 32кб(насколько помню это и есть ограничение), то писать Archive2 и т.д.
    События и некоторые настройки записи просты. А как только вы скачали его на комп, удалили скачанный, так архиватор автоматом создал новый и дело в шляпе.

    P.S. Лично я не люблю писать в плк, а сразу пишу на ПК сервер, всё там достаточно просто.
    Ну да , тут наверное извращенцы програмерные .(Хотя есть,есть такое дело ).
    Кабы работал нормально архивер этот , чего-бы заморачиваться с библиотеками , файлами и др .

  3. #53
    Пользователь
    Регистрация
    24.07.2012
    Адрес
    Россия
    Сообщений
    1,492

    Exclamation

    Цитата Сообщение от Sergey666 Посмотреть сообщение
    Ну да , тут наверное извращенцы програмерные .(Хотя есть,есть такое дело ).
    Кабы работал нормально архивер этот , чего-бы заморачиваться с библиотеками , файлами и др .
    Уверяю Вас, у кого руки прямые и из плеч, у того работает.

    P.s. Не рекомендовал, еслиб не пробывал.

  4. #54
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    Версия 0.1
    Жду багрепортов
    Да что ты! Уже работает, с первого толчка! Спасибо огромное, коллега!

    Это первые эмоции. Так как возможность отключения Инета в Украине сохраняется, то пишу, не произведя еще полноценной проверки. По ходу буду сообщать.
    Пока что только с вводом временнОго окна есть маленькая нескладушка, но работать можно, потому ее игнорим...

    Да, и на стороне ПЛК проверена работа с сохранением указателя точки записи в файл в своем файле. Это оказалось необходимым (в противовес сохранению в РИТЕЙН), ибо у меня лично не срабатывает сохранение в РИТЕЙН-файле, если изменение РИТЕЙН-переменной происходит перед самым выключением питания. Как-то ПЛК должен пробежать еще пару циклов работы или фиг его знает... Но - не стал долго морочиться, перенес указатель в файл, который сам создаю - и пока все чики-пики.

    Если мое многословие уже совсем запутало уважаемых коллег, то простите. Все так урывками. Продолжаю проверят и править по мелочам. Если хоть кто-то выскажет интерес, выкладу резюме по окончанию. В нем (резюме) я доложу о том, как же имееено у меня получилось журналировать события в ПЛК со сбросом потом в ПК и раскруткой архива программой Yegor-а

  5. #55
    Пользователь
    Регистрация
    24.07.2012
    Адрес
    Россия
    Сообщений
    1,492

    Lightbulb

    Цитата Сообщение от drvlas Посмотреть сообщение
    Да что ты! Уже работает, с первого толчка! Спасибо огромное, коллега!

    Это первые эмоции. Так как возможность отключения Инета в Украине сохраняется, то пишу, не произведя еще полноценной проверки. По ходу буду сообщать.
    Пока что только с вводом временнОго окна есть маленькая нескладушка, но работать можно, потому ее игнорим...

    Да, и на стороне ПЛК проверена работа с сохранением указателя точки записи в файл в своем файле. Это оказалось необходимым (в противовес сохранению в РИТЕЙН), ибо у меня лично не срабатывает сохранение в РИТЕЙН-файле, если изменение РИТЕЙН-переменной происходит перед самым выключением питания. Как-то ПЛК должен пробежать еще пару циклов работы или фиг его знает... Но - не стал долго морочиться, перенес указатель в файл, который сам создаю - и пока все чики-пики.

    Если мое многословие уже совсем запутало уважаемых коллег, то простите. Все так урывками. Продолжаю проверят и править по мелочам. Если хоть кто-то выскажет интерес, выкладу резюме по окончанию. В нем (резюме) я доложу о том, как же имееено у меня получилось журналировать события в ПЛК со сбросом потом в ПК и раскруткой архива программой Yegor-а
    Мне было б очень интересно посмотреть на все это из нутри.

  6. #56
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    В таком случае я с удовольствием отчитаюсь. Сейчас идет отладка на объекте. Установили канал VPN, закачали новую версию программы ПЛК, запустили. Пока полет нормальный, но это только предварительно.
    Так что ждите объявлений

  7. #57
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Цитата Сообщение от drvlas Посмотреть сообщение
    Так что ждите объявлений
    Их есть у меня!

    Общая организация. Во ФЛЕШ-памяти ПЛК(100) созданы 2 файла:
    - ringfile.csv (кольцевой файл-журнал)
    - filepos.bin (указатель текущей позиции записи в кольцевой файл-журнал)

    Программа ПЛК работает себе, работает, когда вдруг бац! - событие. По нему формируется запись, то есть одна строка будущего csv-файла. Строка имеет строго фиксированную длину. Вот пример строки-события:

    100001; 24/01/14 12:14; 0,00; 10,00; 8275,79; ;;
    (1) (2) (3) (4) (5) (6) (7) (8)
    1 — номер события;
    2 — дата та 3 — время события;
    4, 5, 6 — те или иные данные, которые нужно журналировать;
    7 та 8 — пустые поля, которые можно и не делать. Первое из них изменяет длину, компенсируя разную длину предыдущих полей. Но на 55-й и 56-й позиции всегда стоит <cr><lf>
    Чтобы не слишком расточительно тратить ресурс ФЛЕШ-памяти ПЛК, события накапливаются в массиве строк, размер взят 200 строк. Возможное увеличение до 500-1000 строк не проверялось, мне хватит, если 200 строк будут надежно записываться в кольцевой файл-журнал.
    Как только весь массив заполнится, вызывается функция bSaveLog записи массива строк в кольцевой файл-журнал. После этого массив событий начинает заполняться снова.

    При выключении питания модуль статистики ПЛК гасит флаг bPower_OK (я так назвал), по этому сигналу немедленно вызывается та же bSaveLog с указанием реального количества событий в массиве (он же не полный). Она и записывает сколько нужно строк в буфер.

    Осталось рассмотреть функцию bSaveLog, а также работу с ПЛК со стороны ПК.

    Итак, bSaveLog. Ее задача: вставить в кольцо информации (записей длиной 56 байт) фрагмент от 1 до 200 записей. При этом начальное положение эта функция берет из вспомогательного файла filepos.bin, куда после всех трудов своих тяжких запихивает новое значение указателя.
    Вот примерный вид этой функции (выброшены некоторые мои прихоти, типа модифицируемого имени файлов, что, в общем-то, не нужно):

    Код:
    FileHandle := SysFileOpen( 'posfile.bin', 'r');
    IF FileHandle = 0 THEN
        dwFilePos := 0;                (* Первый раз так и будет... *)
    ELSE
        SysFileRead(FileHandle, ADR(dwFilePos), SIZEOF(dwFilePos));    
        SysFileClose( FileHandle);            (* Побоялся оставить файл открытым *)
    END_IF                        (* ..хотя скоро будет нужен    *)
    
    FileHandle := SysFileOpen( 'ringfile.csv', 'w');
    
    IF dwFilePos > MAX_POS THEN dwFilePos := 0; END_IF    (* Заворачивание *)
    SysFileSetPos( FileHandle, dwFilePos);
    FOR wi := 0 TO Imax DO
        SysFileWrite( FileHandle, ADR(aProtocol[wi]), LEN(aProtocol[wi]));
        dwFilePos := dwFilePos + LEN(aProtocol[wi]);
    END_FOR
    SysFileClose( FileHandle);
    
    FileHandle := SysFileOpen( 'posfile.bin', 'w');
    SysFileWrite( FileHandle, ADR(dwFilePos), SIZEOF(dwFilePos));
    SysFileClose( FileHandle);
    Как видим, здесь открывается файл с указателем позиции, в цикле прописывается указанное число Imax строк, с наглядным наращиванием указателя, после чего в файл указателя записывается новое значение.
    Если к началу цикла записи событий окажется, что указатель больше MAX_POS (у меня 10000), то он обнуляется и кольцевой буфер начинает заполняться с начала.

    Наконец, как работать потом со стороны ПК с имеющимся на борту ПЛК файлом-журналом. Да очень просто, если есть хороший парень Yegor. Взять его программу, запустить ее например, с вот такой командной строкой

    Код:
    LogParser /TCP192.168.1.111 /get "ringfile.csv"
    и вуаля! Она сама запустит овенскую plc_io.exe с указанноми параметрами, подхватит файл, принятый из компа и любезно предоставит пользователю выбрать часовые рамки. Указал рамки, нажал "Сохранить как..." - и получил файл, в котором содержатся только те строки-события, которые в указанные рамки попадают.
    "Ну а дальше клиент попадает ко мне в руки и..." (с) Бриллиантовая рука
    </lf></cr>

  8. #58
    Пользователь
    Регистрация
    28.08.2008
    Адрес
    23..93..123
    Сообщений
    1,674

    По умолчанию

    Че , нормально .
    Ну и кто что-то скажет против коллективного разума ???
    Держись Украина ... борщ , сало и горилка это жизнь , а курение - медленная и мучительная смерть.

  9. #59
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Цитата Сообщение от Sergey666 Посмотреть сообщение
    Че , нормально
    Ну, если других мнений не будет, то тему можно закрывать. Разместил об этом примечание в заглавном посте.
    Еще раз всем спасибо. Действительно, получился коллективный продукт

    Цитата Сообщение от Sergey666 Посмотреть сообщение
    Держись Украина
    Мы не просто держимся. Мы победим! И не русских, не "западэнцив", не "схидняков". Борьба идет с бандитами, если кто еще не понял.

  10. #60

    По умолчанию

    Цитата Сообщение от drvlas Посмотреть сообщение

    Мы не просто держимся. Мы победим! И не русских, не "западэнцив", не "схидняков". Борьба идет с бандитами, если кто еще не понял.
    Держитесь !!! Не давайте бить ваших детей и родителей. Боритесь за хорошее будущее. Много прямых трансляций с Майдана идёт в Ютубе. Молодцы.

Страница 6 из 10 ПерваяПервая ... 45678 ... ПоследняяПоследняя

Метки этой темы

Ваши права

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