Модуль | Ім'я | Версія | Ліцензія | Джерело | Мови | Платформи | Тип | Автор |
---|---|---|---|---|---|---|---|---|
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
[hide]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, який має різні зміни у політиці безпеки:
|