Модуль | Имя | Версия | Лицензия | Источник | Языки | Платформы | Тип | Автор |
---|---|---|---|---|---|---|---|---|
Siemens | Сбор данных Siemens и Beckhoff | 4.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
1 Коммуникационные контроллеры CIF
Драйвером плат семейства CIF поддерживается возможность установки до 4 CIF плат. С целью контроля за наличием плат в системе и возможности их конфигурации, модуль содержит форму контроля и конфигурации CIF-плат (рис.1).
С помощью этой формы можно проконтролировать наличие коммуникационных процессоров, их конфигурацию, а также настроить параметры сети ProfiBus в виде PB адреса коммуникационного процессора и скорости шины ProfiBus. В другой вкладке модуля (рис.2) можно проконтролировать наличие различных станций в сети ProfiBus.
2 Объект контроллера
Для добавления источника данных создаётся и конфигурируется объект контроллера OpenSCADA. Пример вкладки конфигурации объекта контроллера данного типа изображен на рисунке 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);
- 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 into the Ethernet network;
- 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.
- OpenSCADA output transport for the protocol ADS (port 48898, 801 for AMS) and ISO_TCP (port 102) for sending requests.
- 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) является поле выбора шаблона параметра.
Для конфигурации шаблона параметра предоставляется соответствующая вкладка, содержимое которой определяется конфигурацией шаблона, т.е формируются соответствующие ссылочные поля и поля установки постоянных.
Конечный адрес 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.
Модулем поддерживается адресация только к блокам данных (БД) контроллеров.
Модулем предусмотрена особая обработка ряда атрибутов шаблона:
- f_frq — частота вычисления процедуры шаблона, только чтение.
- f_start — флажок первого выполнения процедуры шаблона — запуск, только чтение.
- f_stop — флажок последнего выполнения процедуры шаблона — останов, только чтение.
- f_err — ошибка параметра, полный доступ. Значение этого атрибута шаблона попадает в атрибут ошибки параметра — "err".
- SHIFR — значение шифра параметра, только чтение.
- NAME — значение имени параметра, только чтение.
- DESCR — значение описания параметра, только чтение.
- this — объект данного параметра, позволяет получить доступ к атрибутам параметра, например, для доступа к архивам.
3.2 Простой (PrmS)
Главная страница конфигурации параметра простого типа представлена на рисунке 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).
4 Асинхронный режим записи
Стандартным режимом записи для SCADA-систем, взаимодействующих с PLC, является синхронный, поскольку он позволяет контролировать корректность завершения операции записи. Однако, в случае записи множества параметров сразу, такой подход не оправдан в виду отправки множества мелких запросов в контроллер, что его перегружает и занимает большой интервал времени. Решением этой проблемы является асинхронная запись смежных значений одним блоком. Такой режим поддерживается этим модулем и позволяет записывать все параметры сразу смежными блоками по 240 байт. Чтение и запись в таком режиме производится смежными блоками с периодичностью опроса контроллера.
4.1 API пользовательского программирования
В виду поддержки параметров логического типа, имеет смысл предоставление ряда функций пользовательского API для их вызова из шаблона логического параметра.
Объект "Параметр" [this]
- bool attrAdd( string id, string name, string tp = "real", string selValsNms = "" ) [для включенного параметра логического типа] — добавление атрибута id с именем name и типом tp. Если атрибут уже присутствует то будут применены свойства, которые возможно изменить "на ходу": имя, режим выбора и параметры выбора.
- id, name — идентификатор и имя нового атрибута;
- tp — тип атрибута [boolean | integer | real | string | text | object] + режим выбора [sel | seled] + только для чтения [ro];
- selValsNms — две строки со значениями в первой и их именами во второй, разделённые ";".
- bool attrDel( string id ) [для включенного параметра логического типа] — удаление атрибута id.
5 Приложение A. Области Данных подключений ISO_TCP (исходная таблица LibnoDave)
Название | Код | Элемент примера(Немецкое) | Элемент примера(Английское) |
---|---|---|---|
Блоки данных | 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 |
6 Замечания
После целенаправленного поиска было обнаружено несколько решений проблемы коммуникации с промышленными контроллерами фирмы Siemens посредством различных коммуникационных интерфейсов:
- Обнаружено достаточно много решений от фирмы Siemens, которые поставляются с решениями поддерживающими открытую ОС "Linux" (http://www.automation.siemens.com/net/html_76/produkte/040_cp_1616.htm, ...).
Некоторые специфические проблемы и их решения около коммуникаций с ПЛК Siemens:
Проблема | Решение |
---|---|
Подключение сбрасывается в ПЛК | Ошибочно определённый слот ЦП ПЛК, попробуйте какой-то другой. |
Подключение похоже установлено, но данные с ПЛК не читаются. | Похоже на то, что Вы используете S7-1200, который имеет различные изменения в политике безопасности:
|