Модуль | Имя | Версия | Лицензия | Источник | Языки | Платформы | Тип | Автор | Описание |
---|---|---|---|---|---|---|---|---|---|
Siemens | Сбор данных Siemens и Beckhoff | 3.5 | GPL2 | daq_Siemens.so | en,uk,ru,de | x86,x86_64,ARM | DAQ | Роман Савоченко | Обеспечивает поддержку источников данных ПЛК Siemens с помощью карт HILSCHER CIF (протоколом MPI) и библиотеки LibnoDave (или собственной реализации) для остального. Также поддерживаются источники данных фирмы Beckhoff для протокола TwinCAT ADS/AMS, поскольку он также работает с блоками данных. |
Первоочередной целью создания модуля было обеспечение поддержки промышленных контроллеров фирмы Siemens серии S7 (S7-200,300,400,1200). Исторически сложилось, что доступ к контроллерам указанной фирмы в сети ProfiBus производился только посредством собственных коммуникационных процессоров (CP5412, CP5613 и т.д.) и собственного протокола S7. Указанные коммуникационные процессоры и API к протоколу S7 достаточно дорогостоящие, кроме того, драйвера к коммуникационным процессорам и S7 API закрыты, а также доступны только для платформы Intel + MS Windows (встречалась некоторая информация о возможности купить для Linux).
В качестве альтернативы коммуникационным процессорам от фирмы Siemens, которые позволяют полноценно работать с контроллерами фирмы Siemens, выступает спектр коммуникационных продуктов фирмы Hilscher в лице коммуникационных процессоров CIF серии ProfiBus (PB) и библиотека LibnoDave.
Особенностью продуктов 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, библиотекой не поддерживаются. Посредством библиотеки LibnoDave, на данном этапе, модулем обеспечена поддержка протокола ISO-TSAP(ProfiNet). Библиотека LibnoDave полностью включена в данный модуль и не требует разрешения зависимостей как при сборке, так и при исполнении.
В коде библиотеки LibnoDave присутствуют сложно-уловимые ошибки, которые в основном воспроизводятся под большой нагрузкой и в момент подключений, что приводит к порче памяти процесса и падениям в непредсказуемых местах. В связи с этим, с версии 2 этого модуля, начат процесс переписывания нужных функций и код связи ISO-TCP уже готов к использованию.
Также, модулем реализуются функции горизонтального резервирования, а именно — совместной работы с удалённой станцией этого-же уровня. Кроме синхронизации значений и архивов атрибутов параметров, модулем осуществляется синхронизация значений вычислительных шаблонов, с целью безударного подхвата алгоритмов.
Contents
[hide]1 Коммуникационные контроллеры CIF
Драйвером плат семейства CIF поддерживается возможность установки до 4 CIF плат. С целью контроля за наличием плат в системе и возможности их конфигурации, модуль содержит форму контроля и конфигурации CIF-плат (рис.1).
С помощью этой формы можно проконтролировать наличие коммуникационных процессоров, их конфигурацию, а также настроить параметры сети ProfiBus в виде PB адреса коммуникационного процессора и скорости шины ProfiBus. В другой вкладке модуля (рис.2) можно проконтролировать наличие различных станций в сети ProfiBus.
2 Объект контроллера
Для добавления источника данных создаётся и конфигурируется объект контроллера OpenSCADA. Пример вкладки конфигурации объекта контроллера данного типа изображен на рисунке 3.
С помощью этой вкладки можно установить:
- Состояние объекта контроллера, а именно: Статус, "Включен", "Исполняется" и имя базы данных, содержащей конфигурацию.
- Идентификатор, имя и описание контроллера.
- Состояние "Включен" и "Выполняется", в которое переводить объект контроллера при загрузке.
- Имя таблицы для хранения конфигурации параметров объекта контроллера.
- Политика планирования и приоритет задачи сбора данных.
- Время восстановления подключения, в секундах, после потери связи.
- Режим асинхронной записи в удалённый контроллер.
- Тип соединения, поддерживаются:
- CIF_PB — подключение к контроллерам серии S7 фирмы Siemens посредством коммуникационного процессора CIF-50PB или похожего;
- ISO_TCP, ISO_TCP243 — подключение к контроллерам серии S7 фирмы Siemens посредством сети Ethernet (TCP243 для CP243);
- ADS — TwinCAT ADS/AMS протокол для подключения к контроллерам фирмы Beckhoff.
- Адрес удалённого контроллера, для соединений:
- CIF_PB — адрес контроллера в сети ProfiBus, цифра 0-255;
- ISO_TCP, ISO_TCP243 — IP-адрес контроллера в сети Ethernet;
- ADS — сетевой идентификатор и порт целевого контроллера и исходной станции, в виде {Target_AMSNetId}:{Target_AMSPort}|{Source_AMSNetId}:{Source_AMSPort} (например: "192.168.0.1.1.1:801|82.207.88.73.1.1:801"), где:
- AMSNetId — сетевой идентификатор, записывается в виде шести цифр 0-255, например: "192.168.0.1.1.1";
- AMSPort — порт, записывается в виде числа 0-65535.
- Слот ЦП ПЛК в который установлен центральный процессор контроллера.
- CIF плата, используемая для доступа к промышленному контроллеру посредством CIF коммуникационных процессоров.
- Выходной транспорт OpenSCADA для протокола ADS (порт 48898, 801 для AMS) и ISO_TCP (порт 102) для отправки запросов.
3 Параметры
Учитывая высокую интеллектуальность источников данных, в лице промышленных контроллеров фирмы Siemens S7-200,300,400,1200, объекты параметра выполняются на основе шаблонов. Данный подход позволяет не ограничиваться жёстким перечнем типов параметров, что ограничивает и возможности контроллеров, а предоставить возможность пользователю формировать нужные ему типы параметров самостоятельно или использовать библиотеки уже разработанных ранее типов параметров — шаблонов.
Исходя из этого модуль предоставляет только один тип параметров — "Логический". Дополнительными конфигурационными полями параметров данного модуля (рис.4) является поле выбора шаблона параметра.
Для конфигурации шаблона параметра предоставляется соответствующая вкладка, содержимое которой определяется конфигурацией шаблона, т.е формируются соответствующие ссылочные поля и поля установки постоянных.
Siemens-БД конечный адрес записывается в форме "DB{N}.{off}[.{BOff}|{TpSz}]", где:
- N — номер Блока Данных;
- off — смещение в Блоке Данных;
- BOff — бит байта для Логический;
- TpSz — тип и размер для других типов от Логический в форме "[{tp}]{sz}", где:
- tp — тип одним символом из перечня: b-Логический, i-Знаковое целое, u-Беззнаковое целое, r-Вещественное, s-Строка;
- sz — размер типа: b=[0...7], iu=[1,2(тип),4,8], r=[4(тип).8], s=[0(тип10)...100].
Примеры конечных адресов:
- "DB1.12.2", "DB1.0xC.2", "DB1.12.b2" — Логический в БД 1, смещение 12 и біт 2;
- "DB2.24", "DB2.0x18.8" — Целое или Вещественное, полученное из типа ВВ шаблона, в БД 2, смещение 24, размер типовой и 8;
- "DB3.36.i4", "DB3.0x24.r8" — прямо определённое Целое и Вещественное в БД 3, смещение 36, размер 4 и 8;
- "DB4.48.20", "DB4.0x30.s20" — неявно, из типа ВВ шаблона, и прямо определённая Строка в БД 4, смещение 48 и размер 20.
Типы ссылок обычно определяются типом параметра в шаблоне (Логический, Целый, Вещественный и Строковый) и определением значения ссылки (для групповых ссылок). Определение групповой ссылки в шаблоне записывается в формате: "{LnkName}|{OffDB[.{bit}]}[|{TpSz}]", где:
- LnkName — имя групповой ссылки. Все ссылки с одинаковым именем группируются и указываются как одна ссылка на блок данных или блок данных с указанным смещением.
- OffDB — номер смещения в блоке данных. При указании только блока данных, при конфигурации шаблона, это смещение будет указанно для параметра. Если-же при конфигурации шаблона будет указано и смещение, то оба смещения будут суммироваться вместе. Такой подход позволяет обращаться к нескольким структурам в одном блоке данных. Номер блока данных и смещение можно указывать в десятичном (3245) и шестнадцатеричном формате (0xCAD).
- bit — номер бита для Логического;
- TpSz — равно этому-же полю выше.
Примеры типов связи:
- "Grp 1|0.0" — Логический в "Grp 1", смещение 0 и бит 0;
- "Grp 2|10|1", "Grp 2|0xA|i1" — Целое, из типа ВВ шаблона и прямо, в "Grp 2", смещение 10 и размер 1;
- "Grp 3|20|20", "Grp 3|0x13|s20" — Строка, из типа ВВ шаблона и прямо, в "Grp 3", смещение 20 и размер 20.
Наглядный пример общего процесса конфигурации параметра от шаблона и до значений приведен на рисунках от 5 до 8.
Модулем поддерживается адресация только к блокам данных (БД) контроллеров.
Модулем предусмотрена особая обработка ряда атрибутов шаблона:
- f_frq — частота вычисления процедуры шаблона или время после последнего вычисления (отрицательное в секундах) для планирования по CRON, только чтение.
- f_start — флаг первого выполнения процедуры шаблона — запуск, только чтение.
- f_stop — флаг последнего выполнения процедуры шаблона — останов, только чтение.
- f_err — ошибка параметра, полный доступ. Значение этого атрибута шаблона попадает в атрибут ошибки параметра — "err".
- SHIFR — значение шифра параметра, только чтение.
- NAME — значение имени параметра, только чтение.
- DESCR — значение описания параметра, только чтение.
- this — объект данного параметра, позволяет получить доступ к атрибутам параметра, например, для доступа к архивам.
4 Асинхронный режим записи
Стандартным режимом записи для SCADA-систем, взаимодействующих с PLC, является синхронный, поскольку он позволяет контролировать корректность завершения операции записи. Однако, в случае записи множества параметров сразу, такой подход не оправдан в виду отправки множества мелких запросов в контроллер, что его перегружает и занимает большой интервал времени. Решением этой проблемы является асинхронная запись смежных значений одним блоком. Такой режим поддерживается этим модулем и позволяет записывать все параметры сразу смежными блоками по 240 байт. Чтение и запись в таком режиме производится смежными блоками с периодичностью опроса контроллера.
5 Замечания
После целенаправленного поиска было обнаружено несколько решений проблемы коммуникации с промышленными контроллерами фирмы Siemens посредством различных коммуникационных интерфейсов:
- Обнаружено достаточно много решений от фирмы Siemens, которые поставляются с решениями поддерживающими открытую ОС "Linux" (http://www.automation.siemens.com/net/html_76/produkte/040_cp_1616.htm, ...).
Некоторые специфические проблемы и их решения около коммуникаций с ПЛК Siemens:
Проблема | Решение |
---|---|
Подключение сбрасывается в ПЛК | Ошибочно определённый слот ЦП ПЛК, попробуйте какой-то другой. |
Подключение похоже установлено, но данные с ПЛК не читаются. | Похоже на то, что Вы используете S7-1200, который имеет различные изменения в политике безопасности:
|