Модуль: | Siemens |
Имя: | Сбор данных Siemens |
Тип: | DAQ |
Источник: | daq_Siemens.so |
Версия: | 2.0 |
Автор: | Роман Савоченко |
Описание: | Предоставляет источник данных ПЛК Siemens посредством карт Hilscher CIF, с использованием протокола MPI, и библиотеки Libnodave, или собственной, для остального. |
Лицензия: | GPL |
Первоочередной целью создания модуля является обеспечение поддержки промышленных контроллеров фирмы Siemens серии S7 (S7-200,300,400). Исторически сложилось, что доступ к контроллерам указанной фирмы в сети ProfiBus производился только посредством собственных коммуникационных процессоров (CP5412, CP5613 и т.д.) и собственного протокола S7. Указанные коммуникационные процессоры и API к протоколу S7 достаточно дорогостоящие, кроме того драйвера к коммуникационным процессорам и S7 API закрыты, а также доступны только для платформы Intel + MS Windows (встречалась информация о возможности купить для Linux).
В качестве альтернативы коммуникационным процессорам от фирмы Siemens, которые позволяют полноценно работать с контроллерами фирмы Siemens, является спектр коммуникационных продуктов фирмы Hilscher (http://hilscher.com) в лице коммуникационных процессоров CIF серии PB(Profibus) и библиотека LibnoDave (http://libnodave.sourceforge.net).
Особенностью продуктов Hilscher является полностью открытая спецификация протокола обмена с коммуникационным процессором, унифицированный драйвер для всех плат CIF, наличие драйвера для многих распространённых операционных систем(ОС) и открытость драйвера для ОС Linux (GPL).
В основу данного модуля положен драйвер версии 2.621 фирмы Hilsher, любезно предоставленный фирмой Hilsher в лице Devid Tsaava для ядер серии 2.6 ОС Linux. Все необходимые для сборки файлы включены в модуль и не требуется удовлетворения специальных зависимостей. Драйвер версии 2.621 для плат CIF можно загрузить здесь.
Спектр плат фирмы Hilsher семейства CIF и унифицированный драйвер поддерживают широчайший спектр оборудования. Заложить поддержку всех этих возможностей в данном модуле, не имея всего этого оборудования на руках, не представляется возможным. Поэтому поддержка того или иного оборудования будет добавляться по мере надобности и наличия оборудования. По состоянию на версию 2.0.0 модулем предоставляется поддержка источников данных на сети ProfiBus или MPI посредством протокола MPI, на скоростях сети от 9600Бод до 12МБод. В частности поддерживаются и выполнена проверка на контроллерах фирмы Siemens семейства S7 (S7-200,300,400).
Библиотека LibnoDave является реализацией, путём реверсинжениринга, протоколов MPI, S7, ISO-TSAP и других, которые используются при взаимодействии с контроллерами фирмы Siemens. Библиотекой поддерживаются многие MPI и USB адаптеры, а также ProfiNet. Коммуникационные процессоры фирмы Siemens, на платформах отличных от MS Windows, библиотекой не поддерживаются. На данном этапе модулем обеспечена поддержка протокола ISO-TSAP(ProfiNet) посредством библиотеки LibnoDave. Библиотека LibnoDave полностью включена в данный модуль и не требует разрешения зависимостей как при сборке, так и при исполнении.
В коде библиотеки LibnoDave присутствуют сложно-уловимые ошибки, которые в основном воспроизводятся под большой нагрузкой и в момент подключений, что приводит к порче памяти процесса и падениям в непредсказуемых местах. В связи с этим, с версии 2 этого модуля, начат процесс переписывания нужных функций и код связи ISO-TCP уже готов к использованию.
Также модулем реализуются функции горизонтального резервирования, а именно совместной работы с удалённой станцией этого-же уровня. Кроме синхронизации значений и архивов атрибутов параметров модулем осуществляется синхронизация значений вычислительных шаблонов, с целью безударного подхвата алгоритмов.
Драйвером плат семейства CIF поддерживается возможность установки до 4 CIF плат. С целью контроля за наличием плат в системе и возможности их конфигурации, модуль содержит форму контроля и конфигурации CIF-плат (рис.1).
С помощью этой формы можно проконтролировать наличие коммуникационных процессоров, их конфигурацию, а также настроить параметры сети ProfiBus в виде PB адреса коммуникационного процессора и скорости шины ProfiBus. В другой вкладке модуля (рис.2) можно проконтролировать наличие различных станций в сети ProfiBus.
Для добавления источника данных создаётся и конфигурируется объект контроллера в системе OpenSCADA. Пример вкладки конфигурации объекта контроллера данного типа изображен на рисунке 3.
С помощью этой вкладки можно установить:
Учитывая высокую интеллектуальность источников данных в лице промышленных контроллеров фирмы Siemens S7-200,300,400, объекты параметра выполняются на основе шаблонов. Данный подход позволяет не ограничиваться жёстким перечнем типов параметров, что ограничивает и возможности контроллеров, а предоставить возможность пользователю формировать нужные ему типы параметров самостоятельно или использовать библиотеки уже разработанных ранее типов параметров (шаблонов).
Исходя из этого, модуль предоставляет только один тип параметров — "Логический". Дополнительными конфигурационными полями параметров данного модуля (рис.4) является поле выбора шаблона параметра.
Для конфигурации шаблона параметра предоставляется соответствующая вкладка. Содержимое этой вкладки определяется конфигурацией шаблона, т.е формируются соответствующие ссылочные поля и поля установки постоянных.
Типы ссылок определяются типом параметра в шаблоне (Логический, Целый, Вещественный и Строковый) и определением значения ссылки (для групповых ссылок). Определение групповой ссылки в шаблоне записывается в формате: "{Имя ссылки}|{Смещение в БД}|{Размер значения}", где:
Наглядный пример общего процесса конфигурации параметра от шаблона и до значений приведен в рисунках от 5 до 8.
Модулем поддерживается адресация только к блокам данных (БД) контроллеров.
Модулем предусмотрена особая обработка ряда атрибутов шаблона:
Стандартным режимом записи для SCADA-систем, взаимодействующих с PLC, является синхронный поскольку позволяет контролировать корректность завершения операции записи. Однако в случае записи множества параметров сразу такой подход не оправдан в виду отправки множества мелких запросов в контроллер, что перегружает PLC и занимает большой интервал времени. Решением этой проблемы является асинхронная запись смежных значений одним блоком. Такой режим поддерживается этим модулем и позволяет записывать все параметры сразу смежными блоками по 240 байт. Чтение и запись в таком режиме производится смежными блоками с периодичностью опроса контроллера.
После целенаправленного поиска было обнаружено несколько решений проблемы коммуникации с промышленными контроллерами фирмы Siemens посредством различных коммуникационных интерфейсов:
Драйвер фирмы Hilscher для плат семейства CIF: file:cif2621.tgz
Патч для сборки драйвера для ядра Linux 2.6.29: file:lastkernels.patch
Отчёт о падении, LibnoDave специфическое: file:crash_20160127_0911.crash.gz