Имеем систему PLC --> InTouch & Historian. Вообщем, такая задача: хранение трендов в контроллере на время потери связи с ПК так, чтобы после восстановления они дописывались в базу (не было провала на тренде).
Мои соображения: берем одну переменную, сохраняем ее значения с определенной периодичностью, например, 1 раз в 100 мсек.
Сохраняем значения в одномерном массиве. А вот как организовать передачу в InTouch & Historian даже не представляю. В какую сторону копать???
В контроллере нет столько памяти.
Тренды реального времени, которые хранятся в контроллерах обычно не чаще 0.5 сек. Да и то это нужно для очень уж крутых аварийных процессов.
Сохранённые точки наверное можно передавать последовательно через какой то тег.
В контроллере нет столько памяти.
Тренды реального времени, которые хранятся в контроллерах обычно не чаще 0.5 сек. Да и то это нужно для очень уж крутых аварийных процессов.
Сохранённые точки наверное можно передавать последовательно через какой то тег.
Для таких задач, производители контроллеров выпускают специальные модули, которые быстро (иногда с частотой в мсек), ведут большие логи для последующей предачи на верхний уровень. У Омрона это модули CJ(S)1W-SPUxx, у Митсубиши в серии Q вроде такой модуль появился.
Запись на флэш (как я понимаю в виде файла?) не всегда удобна, так как процесс этот не особо быстрый по сравненю с циклом контроллера. Да, и потом возникает вопрос как от туда потом данные передать наверх.
Авторы ТЗ, с которыми я работаю, не имеют права жаловаться на дороги, ЖКХ, бюрократию и правительство.
О чем и речь - как передать.
Посчитаем грубо. Сохраняем значение 1 раз в сек. Получается 3600 значений в час. 1 значение = 32 бит = 4 байта. 1 час = 14400 байт ~ 14 кбайт. В принципе, немного.
Теперь передача. Имеем часовой архив. Допустим, цикл контроллера 50 мсек. Присваиваем каждый цикл тегу тренда значение из архива. 3600 значений передадим за 3 мин. Это в идеале. В Historian сформируется тренд. Но без привязки ко времени создания архивных значений.
У модулей встроенный Ethernet. В принципе модуль виден с компа, как ftp с файлами, но в действительности используется программный модуль для ПК, что бы подвязаться (синхронизироваться) с базам данных. Файлы в контроллере в пишутся в обязательном порядке с привязкой к часам ПЛК.
Авторы ТЗ, с которыми я работаю, не имеют права жаловаться на дороги, ЖКХ, бюрократию и правительство.
Можно ещё сделать так: при обрыве связи хранить даннные в ПЛК (в виде файлов или просто двоичных массивов не важно, а при восстановлении передать недостающие данные SQL серверу на АРМе при помощи команды UPDATE). Реализовать запросы к SQL серверу по каналу Ehternet очень просто.
посмотрите на вот этот модуль - http://discover.rockwellautomation.com/ ... rofile.pdf
он специально выпущен под платформу ControlLogix для хранения истории (трендов).
Синхронизируется с "большим" архиватором FT Historian SE на сервере.
А какой контроллер-то? Кроме хранения переменной, надо хранить метку времени. Как правильно сказал Дмитрий Милосердов для, экономии места надо сохранять точку при отклонении от предыдущей на некое дельта. Что касается метки времени, то тут встаёт отдельный вопрос о том, как это время синхронизировать со временем на сервере. Дальше вопрос какой транспорт используется для передачи данных от контроллера к серверу (как в плане железа, так в плане протокола и механизма подключения - OPC/драйвер в СКАДА). У некоторых производителей есть поддержка исторических данных. У других ручками - запросили точку, приняли точку, приняли метку времени, сделали INSERT, подтвердили получение точки и т.д. Дальше тренды у InTouch по архивным данным из базы строятся?
Намного проще будет организовать систему автоматического резервирования канала связи. Единственное место, где я встречал хранение данных в контроллерах- это системы коммерческого либо технического учета, да и то данные хранились там в виде массивов значений вида : среднечасовое, среднесуточное и. т.д.
а не с интервалом в виде 0,5 сек. и менее
Вопрос был без привязки к конкретному железу. Удалось выяснить, что в Historian существует функция Update, строящая недостающую часть тренда. Спасибо всем высказавшимся по данному вопросу, задача обрела ястность. Теперь дело за экспериментами.
Данную задачу возможно сделать. В простейшем виде она реализована в контроллерах Triconex * SOE.
У Allen-Bradley в 1756, 1769 есть возможность подключить флешку CompactFlash.
Остается сделать
-Систему выбора данных для сохранения данных с привязкой даты и времении (запись одного события менее 14 байт не сделать),
-Сохранение/чтение на флеш,
-Подготовка и передача данных ПЭВМ,
-Приложение, принимающее и сохраняющее данные на SQL-сервер или др.БД.
В итоге может получится следующее (вырезано из документации реальной работающей системы):
Система регистрации событий и значений аналоговых параметров с высокой временной точностью (до 1 мс) реализованная на базе промышленного микропроцессорного комплекса Allen-Bradley.
Функциональность системы:
- сохранение истории технологического процесса в контроллере на энергонезависимой памяти на временном интервале до 10 лет;
- дата и время возникновения события присваивается в контроллере;
- синхронизация времени по GPS (опционально);
- временная точность регистрации параметров практически не зависит от количества параметров; - определение сложных правил регистрации параметров, например, при появлении определенного события записать значения заданных параметров;
- данные, считанные с микропроцессорного комплекса, сохраняются в базу данных MSSQL,MySQL, пригодную для отображения в RSView с помощью TrendX, пример представлен на рисунке 1.
- передача данных с микропроцессорного комплекса осуществляется по мере их поступления посредством COM-порта и EtherNet (internet) или считывание данных производится пользователем с энергонезависимой памяти посредством считывателя карт памяти (CartReader);