Модули/Siemens - OpenSCADAWiki

# Модули/Siemens

This page is a translated version of the page Modules/Siemens and the translation is 91% complete.

English • ‎mRussian • ‎Українська

Модуль | Имя | Версия | Лицензия | Источник | Языки | Платформы | Тип | Автор
--- | --- | --- | --- | --- | --- | --- | --- | ---
Siemens | Сбор данных Siemens и Beckhoff | 4.8 | GPL2 | daq_Siemens.so | en,uk,ru,de | x86,x86_64,ARM | DAQ | Роман Савоченко
Описание
Обеспечивает поддержку источников данных ПЛК Siemens с помощью карт HILSCHER CIF (протоколом MPI) и библиотеки LibnoDave (или собственной реализации) для остального. Также поддерживаются источники данных фирмы Beckhoff для протокола TwinCAT ADS/AMS, поскольку он также работает с блоками данных. Спонсировано, поддержку Простого типа, определение областей данных и другие расширения на 1.6 ЧД[!]: INSERTEC LTDA Задачи (To Do):

Первоочередной целью создания модуля было обеспечение поддержки промышленных контроллеров фирмы 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 уже готов к использованию.

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

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

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

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

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

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

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

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

Рис.3. Вкладка конфигурации объекта контроллера.

Using this tab you can set:

- The state of the controller object, as follows: Status, "Enabled", "Running" and the name of the storage containing the configuration.

  Manual restart of the enabled controller object causes the force reformation of the acquisition blocks.

- Identifier, name and description of the controller.
- The state "Enabled" and "Running", in which the controller object must be translated at boot.
- Policy of scheduling and priority of the data acquisition task.
- Connection recovery time, in seconds, after lost connection.
- Mode of asynchronous writing to the remote controller.
- Connection type, supported ones:
  - CIF_PB — connection to S7 controllers of the firm Siemens via CIF-50PB communication processor or similar;
  - ISO_TCP, ISO_TCP243 — connection to S7 controllers of the firm Siemens via the Ethernet network (TCP243 by CP243) whether by LibnoDave or own implementation;
  - ADS — TwinCAT ADS/AMS protocol for connecting to controllers of the firm Beckhoff.
- Remote controller address, for the connections:
  - CIF_PB — controller address in the ProfiBus network, one digit 0-255;
  - ISO_TCP, ISO_TCP243 — IP-address in the Ethernet network for LibnoDave;
  - ADS — network identifier and port for the target and source stations, in view {Target_AMSNetId}:{Target_AMSPort}|{Source_AMSNetId}:{Source_AMSPort} (for example: "192.168.0.1.1.1:801|82.207.88.73.1.1:801"), where:
    - AMSNetId — network identifier, writes in view of six digits 0-255, for example: "192.168.0.1.1.1";
    - AMSPort — port, writes in view of one digit 0-65535.
- CPU slot of the PLC in which the central processor of the controller is placed.
- CIF card used for access to the industrial controller through CIF communication processors.
- Output transport for the protocol ADS (port 48898, 801 for AMS) and ISO_TCP (port 102) for sending requests, using the unified connection with navigation. The field may be set to empty and be changed at the runtime. Format of the address is:
  - "{TrModule}.[out_]{TrID}[:{TrAddr}]" — typical output with automatic creation TrID at it missing and providing TrAddr;
  - "{TrModule}.in_{TrID}:{RemConId}" — initiative input with the connection identifier in RemConId.
- Maximum size of the request block in bytes, useful for controllers with such limits.

## 3 Параметры

Модуль сбора данных предоставляет два типа параметра: "Логический (Prm)" и "Простой (PrmS)". Дополнительными конфигурационными полями параметров данного модуля являются:

- Логический (Prm):
  - Шаблон параметра — адрес шаблона параметра DAQ.
- Простой (PrmS):
  - Перечень атрибутов — содержит структурированный список конфигурации атрибутов Siemens.

#### 3.1 Логический (Prm)

Учитывая высокую интеллектуальность источников данных, в лице промышленных контроллеров фирмы Siemens S7-200,300,400,1200, объекты типа параметра выполняются на основе шаблонов. Данный подход позволяет не ограничиваться жёстким перечнем типов параметров, что ограничивает и возможности контроллеров, а предоставить возможность пользователю формировать нужные ему типы параметров самостоятельно или использовать библиотеки уже разработанных ранее типов параметров — шаблонов.

Дополнительными конфигурационными полями типа параметров (рис.4) является поле выбора шаблона параметра.

Рис.4. Вкладка конфигурации параметра.

Для конфигурации шаблона параметра предоставляется соответствующая вкладка, содержимое которой определяется конфигурацией шаблона, т.е формируются соответствующие ссылочные поля и поля установки постоянных.

Конечный адрес Siemens-БД записывается в форме "(DB{N}|F).{off}[.[{tp}]{SzBit}]", где:

- DB{N} — десятичный номер Блока Данных, может быть отрицательным для специфических областей данных типов подключения ISO_TCP (смотрите Приложение A на предмет областей данных);
- F — специфическая область данных Флагов/Маркеров (131) типов подключения ISO_TCP;
- off — смещение в Блоке Данных;
- tp — тип одним символом из перечня: b-Логический, i-Знаковое целое, u-Беззнаковое целое, r-Вещественное, s-Строка;
- SzBit — размер типа для не Логического или бит байта для него: 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;
- "F.12.5" — Логическое в области данных Флаги/Маркеры, смещение 12 и бит 5.

Типы ссылок обычно определяются типом параметра в шаблоне (Логический, Целый, Вещественный и Строковый) и определением значения ссылки (для групповых ссылок). Определение групповой ссылки в шаблоне записывается в формате: "{LnkName}|{OffDB}[.{bit}][|[{tp}]{sz}]", где:

- LnkName — имя групповой ссылки. Все ссылки с одинаковым именем группируются и указываются как одна ссылка на блок данных или блок данных с указанным смещением.
- OffDB — номер смещения в блоке данных. При указании в конфигурации шаблона только блока данных это смещение будет указанно для параметра. Если-же при конфигурации шаблона будет указано и смещение, то оба смещения будут суммироваться вместе. Такой подход позволяет обращаться к нескольким структурам в одном блоке данных. Номер блока данных и смещение можно указывать в десятичном (3245) и шестнадцатеричном формате (0xCAD).
- bit — номер бита для Логического, [0...7];
- tp — тип одним символом из перечня: i-Знаковое целое, u-Беззнаковое целое, r-Вещественное, s-Строка;
- sz — размер типа: iu=[1,2(тип.),4,8], r=[4(тип.),8], s=[0(тип.10)...100].

Примеры типов связи:

- "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. Значения параметра.

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

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

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

#### 3.2 Простой (PrmS)

Главная страница конфигурации параметра простого типа представлена на рисунке 9.

Рис.9. Вкладка конфигурации параметра простого типа.

Линия атрибута в параметре списка атрибутов записывается как "(DB{N}|F).{off}.{tp}{SzBit}:{flg}:{id}[:{name}]".
Где:

- DB{N} — десятичный номер Блока Данных, может быть отрицательным для специфических областей данных типов подключения ISO_TCP (смотрите Дополнение A на предмет областей данных);
- F — специфическая область данных Флагов/Маркеров (131) типов подключения ISO_TCP;
- off — смещение в Блоке Данных;
- tp — тип одним символом из перечня: b-Логический, i-Знаковое целое, u-Беззнаковое целое, r-Вещественное, s-Строка;
- SzBit — размер типа для не Логического или бит байта для него: b=[0...7], iu=[1,2(тип.),4,8], r=[4(тип.),8], s=[0(тип.10)...100];
- flg — флаги: режим чтения/записи (r-чтение, w-запись);
- id — идентификатор создаваемого атрибута;
- name — имя создаваемого атрибута.

Примеры конечных адресов:

- "DB1.12.b2:r:var:Variable" — Логический в БД 1, смещение 12 и бит 2;
- "DB2.24.u:rw:var:Variable", "DB2.0x18.r8:w:var" — Целое или Вещественное в БД 2, смещение 24, размер типовой и 8;
- "DB4.0x30.s20:r:var:Variable" — Строка в БД 4, смещение 48 и размер 20;
- "F12.b5:r:var:Variable" — Логическое в области данных Флаги/Маркеры, смещение 12 и бит 5.

Линия, которая начинается с символа '#', считается комментарием и не обрабатывается.

В соответствии с указанным списком атрибутов выполняется опрос и создание атрибутов параметра (рис.10).

Рис.10. Вкладка атрибутов параметра простого типа.

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

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

## 5 User programming API

Due to the support of the logical type parameters, it makes sense to provide a number of functions of the user API for calling them from the template of the logical parameter.

The object "Controller" [this.cntr()]

- ElTp value( string addr, ElTp setVl = NULL ) — direct accessing a value with registering for acquisition.
  - addr — the value address in the standard format;
  - setVl — setting value, NULL (not specified) only for getting.

## 6 Приложение A. Области Данных подключений ISO_TCP

Название | Код | Элемент примера(Немецкое) | Элемент примера(Английское)
--- | --- | --- | ---
Блоки данных | 132 | DB3.DBD4 | DB3.DBD4
Флаги/Маркеры | 131 | MW4 | FW4
Образ входной памяти | 129 | EB2 | IB2
Образ выходной памяти | 130 | AD8 | QD8
Таймеры | 29 | T2 | T2
Счётчики | 28 | Z2 | C2
Прямой В/В | 128 | PEW4 | PIW4
Системная информация семейства 200 | 3 |  |
Данные (V-память) у S7-200 | 132 | VW1234 | VW1234
Область системных флажков семейства 200 | 5 | SMB0 | SFB0?
Слова аналоговых входов семейства 200 | 6 | AEW0 | AIW0?
Слова аналоговых выходов семейства 200 | 7 | AAW0 | AQW0?
IEC Таймеры | 31 | T2 | T2
IEC Счётчики | 30 | Z2 | C2

## 7 Notes

After a targeted search was found a few solutions of the problem of communication with industrial controllers of firm Siemens through various communication interfaces:

- found some commercial solutions from the company Siemens for the operating system "Linux" (CP1616, ...).

Some specific problems and their resolving about the communication with the Siemens PLCs:

Connection | Problem | Resolving
--- | --- | ---
ISO_TCP | The connection is rejected by the PLC | The specified CPU slot of the PLC is wrong — try some other starting from one(1), which is tested as actual for S7-1200, S7-1500.
ISO_TCP | The connection seems established but the data is not read from the PLC. | It looks like you are using S7-1200, S7-1500 which has different changes in the security policy: Create a data block with the compatibility to S7-300/400 and/or disable this block optimization to appear the offset column. Disable any protection of this data block. If you have the message "error 33028 context is not supported. Step7 says: Function not implemented or error in telegram.", you have S7-1200 (FW4.0), S7-1500 and you must grant access for the interface functions Get/Put in the PLC configuration.

## 8 Ссылки

- Драйвер фирмы Hilscher для плат семейства CIF
- Патч для сборки драйвера для ядра Linux 2.6.29
- Отчёт о падении, LibnoDave специфическое

Modules/Siemens/ru - GFDL | July 2026 | OpenSCADA 1+r3070