From OpenSCADAWiki
Jump to: navigation, search
This page is a translated version of the page Modules/Siemens and the translation is 100% complete.

Other languages:
English • ‎российский • ‎українська
Модуль Имя Версия Лицензия Источник Языки Платформы Тип Автор Описание
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 полностью включена в данный модуль и не требует разрешения зависимостей как при сборке, так и при исполнении.

At.png В коде библиотеки LibnoDave присутствуют сложно-уловимые ошибки, которые в основном воспроизводятся под большой нагрузкой и в момент подключений, что приводит к порче памяти процесса и падениям в непредсказуемых местах. В связи с этим, с версии 2 этого модуля, начат процесс переписывания нужных функций и код связи ISO-TCP уже готов к использованию.

Также, модулем реализуются функции горизонтального резервирования, а именно — совместной работы с удалённой станцией этого-же уровня. Кроме синхронизации значений и архивов атрибутов параметров, модулем осуществляется синхронизация значений вычислительных шаблонов, с целью безударного подхвата алгоритмов.

1 Коммуникационные контроллеры CIF

Драйвером плат семейства CIF поддерживается возможность установки до 4 CIF плат. С целью контроля за наличием плат в системе и возможности их конфигурации, модуль содержит форму контроля и конфигурации CIF-плат (рис.1).

Рис.1. Вкладка конфигурации CIF-плат.

С помощью этой формы можно проконтролировать наличие коммуникационных процессоров, их конфигурацию, а также настроить параметры сети ProfiBus в виде PB адреса коммуникационного процессора и скорости шины ProfiBus. В другой вкладке модуля (рис.2) можно проконтролировать наличие различных станций в сети ProfiBus.

Рис.2. Вкладка мониторинга сети ProfiBus.

2 Объект контроллера

Для добавления источника данных создаётся и конфигурируется объект контроллера OpenSCADA. Пример вкладки конфигурации объекта контроллера данного типа изображен на рисунке 3.

Рис.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) является поле выбора шаблона параметра.

Рис.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.

Рис.5. Пример шаблона с группированием.
Рис.6. Вкладка конфигурации шаблона параметра.
Рис.7. Вкладка конфигурации шаблона параметра с указанием параметров по отдельности.
Рис.8. Значения параметра.

At.png Модулем поддерживается адресация только к блокам данных (БД) контроллеров.

Модулем предусмотрена особая обработка ряда атрибутов шаблона:

  • f_frq — частота вычисления процедуры шаблона или время после последнего вычисления (отрицательное в секундах) для планирования по CRON, только чтение.
  • f_start — флаг первого выполнения процедуры шаблона — запуск, только чтение.
  • f_stop — флаг последнего выполнения процедуры шаблона — останов, только чтение.
  • f_err — ошибка параметра, полный доступ. Значение этого атрибута шаблона попадает в атрибут ошибки параметра — "err".
  • SHIFR — значение шифра параметра, только чтение.
  • NAME — значение имени параметра, только чтение.
  • DESCR — значение описания параметра, только чтение.
  • this — объект данного параметра, позволяет получить доступ к атрибутам параметра, например, для доступа к архивам.

4 Асинхронный режим записи

Стандартным режимом записи для SCADA-систем, взаимодействующих с PLC, является синхронный, поскольку он позволяет контролировать корректность завершения операции записи. Однако, в случае записи множества параметров сразу, такой подход не оправдан в виду отправки множества мелких запросов в контроллер, что его перегружает и занимает большой интервал времени. Решением этой проблемы является асинхронная запись смежных значений одним блоком. Такой режим поддерживается этим модулем и позволяет записывать все параметры сразу смежными блоками по 240 байт. Чтение и запись в таком режиме производится смежными блоками с периодичностью опроса контроллера.

5 Замечания

После целенаправленного поиска было обнаружено несколько решений проблемы коммуникации с промышленными контроллерами фирмы Siemens посредством различных коммуникационных интерфейсов:

Некоторые специфические проблемы и их решения около коммуникаций с ПЛК Siemens:

Проблема Решение
Подключение сбрасывается в ПЛК Ошибочно определённый слот ЦП ПЛК, попробуйте какой-то другой.
Подключение похоже установлено, но данные с ПЛК не читаются. Похоже на то, что Вы используете S7-1200, который имеет различные изменения в политике безопасности:
  • Создайте блок данных в совместимости с S7-300/400 и/или выключите оптимизацию этого блока для появления колонки смещения. Отключите любую защиту этого блока данных.
  • Если Вы имеете LibnoDave сообщение "error 33028 context is not supported. Step7 says: Function not implemented or error in telegram.", то Вы имеете S7-1200 V4.0 и должны предоставить доступ для функций интерфейса Get/Put в конфигурации ПЛК.

6 Ссылки