Страница 1 из 10 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 91

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

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

    По умолчанию Журналирование в ПЛК

    ВНИМАНИЕ: очень многое из задуманного переделал, спасибо коллегам, поєтому предлагаю смотреть резюме в сообщении № 57.


    Здравствуйте!

    Впервые стала задача создать на ПЛК100 журнал событий во ФЛЕШ-памяти. В ходе работы контроллера возникают события (раз в 30 секунд и реже), по которым нужно выполнить запись в журнал: несколько переменных и штамп дата-время.
    Сначала своим крестьянским умом начал реализовывать вот такую систему (ниже будут вопросы):

    1) Создал тип данных LOGITEM - структуру, состоящую из всех данных, необходимых для одной записи
    2) Создал массив структур такого размера, чтобы запись его в файл была не очень долгим процессом.
    3) По событиям записываю новый элемент массива, пока не заполню все. Когда весь массив сформирован - пишу его в файл.
    4) Когда выключается питание, по сигналу аварии питания записываю файл "досрочно". Ну, еще как-то надо научить ПЛК записывать файл, тоже досрочно, но в тот момент, когда оператор (или система) захочет списать архивы з ФЛЕШ - чтобы последний недозаполненный массив записей тоже "попал в историю"...
    Примечание: имена файлов хочу сделать по дате и времени события, например, "2014-01-20-15-40-12.csv". И формат сразу CSV, чтобы просматривать офисными программами. Так хочет заказчик.
    5) Из предыдущих п.3 и п.4 вытекает, что при старте я делаю следующую инициализацию:
    - ставлю индекс массива на начало, чтобы всегда заполнять массив с начала
    - (планирую, но еще не знаю как это сделать) проверяю заполненность памяти ФЛЕШ и удаляю старые файлы, либо просто один самый старый, либо какой-то "кусок", чтобы просто было много места. Оператору незачем старательно стирать файлы при их вычитке.

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

    Спасибо!
    Последний раз редактировалось drvlas; 25.01.2014 в 00:44. Причина: Подведение итогов

  2. #2
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

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

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

    По умолчанию

    Цитата Сообщение от lara197a Посмотреть сообщение
    Выкладывали здесь примеры, поищите
    Так... Искать влом, если нет уверенности, что надо искать. Я ж и спрашиваю: есть ли решения, которые в корне отличаются от (довольно старательно) описанного мной алгоритма? Если спец либов нет, если совершенно других (и более правильных) подходов нет, то меня и не интересуют реализации на том же базисе, что я сейчас использую. Ибо разбираться с чужим я не очень люблю.

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

    По умолчанию

    Массив структур делать не надо , да и структура нэ трэба.
    Вообще структура нужна для !!! Объединения в один ТИП ДАННЫХ РАЗНЫХ ТИПОВ .
    Писать вы хотите .csv , значит конвертация в "String" , т.е формируете строку события и записываете в КОНЕЦ файла . В примерах вроде есть .

    На панелях Вайнтек или Дельта это вообще легко делается .

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

    По умолчанию

    Цитата Сообщение от Sergey666 Посмотреть сообщение
    Массив структур делать не надо , да и структура нэ трэба
    Ну почему же? Трэба!
    Начну с конца: структура мне нужна, потому что в нее пуляю вполне себе разные данные, WORD, DWORD и т.д.
    А массив - чтобы ресурс ФЛЕШ беречь! Если у меня в смену до 100 событий, за 10 смен выработаю ресурс. Или я не понимаю, с какой памятью имею дело?

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

    По умолчанию

    А я что с эфемерной памятью дело имею ?
    Готовых библиотек нету , ручками все надо.

    По 5 му пункту(удаление старых) , надо сделать "Реестр" с порядковым номером создаваемого файла и соответствие имени .

  7. #7
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    Объявите в структуре нужное количество записей, если нужно можно сделайте "по кругу".
    конечное число записей ведь должно быть?
    В конце- концов это же влияет на размер буфера памяти.
    Последний раз редактировалось lara197a; 20.01.2014 в 18:58.

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

    По умолчанию

    Цитата Сообщение от Sergey666 Посмотреть сообщение
    Готовых библиотек нету , ручками все надо
    Понял, спасибо!

    Цитата Сообщение от Sergey666 Посмотреть сообщение
    надо сделать "Реестр" с порядковым номером создаваемого файла и соответствие имени .
    А где его хранить? Я исхожу из того, что после выключения питания может пройти сколько угодно времени до слежующего включения. Поэтому RETAIN-данным не доверяю. Записывать каждый раз при записи файла - протру дырку во ФЛЕШКЕ. Поэтому я как-то хочу изгалиться с перебором всех файлов, ранжированием их по времени создания (как вижу по описанию либы SysLibFile, это доступно в атрибутах фалов) - и затем отсекании самого старого или самых старых...

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

    По умолчанию

    Цитата Сообщение от lara197a Посмотреть сообщение
    Объявите в структуре нужное количество записей
    Да я по ходу уже подумал, что если для создания CSV-файла мне нужно формировать строки, то я от структуры и откажусь. Буду сразу из всех данных, которые должны пойти в журнал, лепить одну колбасину-строку и ее записывать в массив строк. Тогда, когда дойдет время для записи оперативных данных во ФЛЕШ-память (файл), я уже просто писать готовые строку за строкой.

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

    По умолчанию

    Лучше сделать массив строк , т.е каждый раз по событию формировать строку и добавлять ее в массив , в конец строки добавить символ перевода строки (гугл в помощ , я не помню).
    "Реестр" файлов храните в ретайне (уже тыщу раз писал аккумулятор от мобильника будет "вечным").
    С перебором по дате за...шся .

Страница 1 из 10 123 ... ПоследняяПоследняя

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

Ваши права

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