OpenSCADAWiki: Home Page Uk/Doc/ Mod Bus ...

Home | Index | Changes | Comments | Users | Registration | Login  Password:  
 
English (1 Кб) English
Russian (1 Кб) Российский
 (2 Кб) Сторінку заморожено, актуальна тут.

Модулі <ModBus> підсистем "Збір даних" та "Транспортні протоколи"

Параметр Модуль 1 Модуль 2
ID: ModBus
Ім'я: ModBus
Тип: Збір Даних Протокол
Джерело: daq_ModBus.so
Версія: 1.8 1.0
Автор: Роман Савоченко
Опис: Надає реалізацію клієнтського ModBus сервісу. Підтримуються Modbus/TCP, Modbus/RTU та Modbus/ASCII протоколи. Надає реалізацію ModBus протоколів. Підтримуються Modbus/TCP, Modbus/RTU та Modbus/ASCII протоколи.
Ліцензія: GPL

Contents

Вступ

ModBus — комунікаційний протокол, заснований на клієнт-серверній архітектурі. Розроблений фірмою Modicon для використання у контролерах з програмованою логікою (PLC). Став стандартом де-факто у промисловості та широко застосовується для організації зв'язку промислового електронного обладнання. Використовується для передачі даних через послідовні лінії зв'язку RS-485, RS-422, RS-232, а також мережі TCP/IP. На цей час підтримується некомерційною організацією ModBus-IDA.


Існує три режими протоколу: ModBus/RTU, ModBus/ASCII та ModBus/TCP. Перші два використовують послідовні лінії зв'язку (переважно RS-485, рідше RS-422/RS-232), останній використовує для передачі даних мережі TCP/IP.


Модуль збору даних надає можливість збирати інформацію з різних джерел за протоколом ModBus у всіх режимах. Також модулем реалізуються функції горизонтального резервування, а саме спільної роботи з віддаленою станцією цього-ж рівня. В той же час модуль протоколу дозволяє сформувати та видати дані за протоколом ModBus у різних режимах та через інтерфейси, які підтримуються модулями підсистеми "Транспорти".

1. Загальний опис протоколу ModBus

Протокол ModBus/RTU припускає один ведучий (запити) пристрій у лінії (master), який може передавати команди одному або декільком веденим пристроям (slave), звертаючись до них за унікальною у лінії адресою. Синтаксис команд протоколу дозволяє адресувати 247 пристроїв на одній лінії зв'язку стандарту RS-485 (рідше RS-422 або RS-232). У випадку з режимом TCP адресація виключена з протоколу, оскільки здійснюється на рівні TCP/IP стека.


Ініціатива здійснення обміну завжди виходить від ведучого пристрою. Ведені пристрої прослуховують лінію зв'язку. Майстер подає запит (посилка, послідовність байт) у лінію та переходить в стан прослуховування лінії зв'язку. Ведений пристрій відповідає на запит, який надійшов у його адресу.


Закінчення посилки відповіді визначається залежно від режиму. У режимі RTU закінчення посилки визначається за інтервалом часу між закінченням прийому попереднього байту та початком прийому наступного, час символу. Якщо цей інтервал перевищив час, потрібний для прийому півтори байти на визначеній швидкості передачі то прийом фрейму відповіді вважається завершеним. У режимі ASCII критерієм закінчення посилки є символ '\r', а у режимі TCP — очікуваний розмір посилки, інформація про який присутня у заголовку пакету.

1.1. Адресація

Всі операції з даними прив'язано до нуля, кожний вид даних (регістр, біт, регістр входу або біт входу) починається з адреси 0 та закінчується 65535.

1.2. Стандартні коди функцій

У протоколі ModBus можна відокремити декілька множин команд (Таблиця 1).


Таблиця 1: Підмножина команд протоколу ModBus

Підмножина Діапазон кодів
Стандартні 1-21
Резерв для розширених функцій 22-64
Користувацькі 65-119
Резерв для внутрішніх потреб 120-255

Модулем збору даних використовуються команди 0x03 та 0x06(0x10) для читання та запису регістрів, 0x01 та 0x05(0x0F) для читання та запису бітів, 0x02 та 0x04 для читання біту та регістру входу відповідно. Для реалізації інших-нетипових команд модулем передбачено функцію API користувацького програмування, яку можна викликати з процедури шаблону, надсилаючи довільні PDU пакети та обробляючи отримані у відповідь.


Модуль протоколу обробляє запити командами 0x03 та 0x06(0x10) для читання та запису регістрів, 0x01 та 0x05(0x0F) для читання та запису бітів.

2. Модуль реалізації протоколу

Модуль протоколу ModBus містить код реалізації протокольної частини ModBus, а саме особливості варіантів протоколів ModBus/TCP, ModBus/RTU та ModBus/ASCII. Модуль протоколу, спільно з обраним транспортом, активно використовується модулем збору даних для здійснення безпосередніх запитів. Оскільки модуль протоколу є автономним то, використовуючи його, можна створювати додаткові модулі збору даних за посередництвом нестандартних функцій розширення ModBus різного обладнання автоматизації.

2.1. API функції вихідних запитів

API функції вихідних запитів (messIO()? EN RU) оперують обміном блоками PDU, загорнутими у XML-пакети з відповідною структурою:

<prt id="sId" reqTm="reqTm" node="node" reqTry="reqTry">{pdu}</prt>
Де:

Результатний pdu замінює pdu запиту у XML-пакеті, а також встановлюється атрибут "err" з кодом та текстом помилки, якщо така мала місце.

2.2. Обслуговування запитів за протоколом ModBus

Вхідна частина обслуговування запитів до модуля протоколу здійснює перевірку та обробку запитів за посередництвом об'єктів вузлів, передбачених модулем (рис.1). Фактично реалізується механізм, який дозволяє виконувати системою OpenSCADA роль серверу ModBus/TCP або підлеглого пристрою ModBus/RTU та ModBus/ASCII. Таким чином система OpenSCADA отримує можливість використовуватися у ролі будь якого учасника мереж ModBus.


Вкладка переліку вузлів обслуговування вхідних запитів протоколу. (57 Кб)
Рис.1. Вкладка переліку вузлів обслуговування вхідних запитів протоколу.

Вузол протоколу еквівалентний фізичному вузлу пристрою мережі ModBus. Вузол протоколу може працювати у трьох режимах:


Оскільки вузлів протоколу може бути створено багато то виходить, що на одному інтерфейсі, тобто у одній мережі, одна станція на основі OpenSCADA може прозоро надавати декілька вузлів мережі ModBus з різними даними.


Розглянемо особливості конфігурації вузла протоколу у різних режимах.

Режим вузла протоколу "Дані"

Режим використовується для відображення даних системи OpenSCADA на масиви регістрів та бітів ModBus. Загальна конфігурація вузла здійснюється у вкладці "Вузол" (рис.2) параметрами:


Вузлом у цьому режимі обробляються наступні стандартні команди протоколу ModBus:


Вкладка "Вузол" сторінки конфігурації вузла протоколу у режимі "Дані". (81 Кб)
Рис.2. Вкладка "Вузол" сторінки конфігурації вузла протоколу у режимі "Дані".

Для формування таблиці відбиття даних мережі ModBus, а саме регістрів та бітів передбачається вкладка "Дані" (рис.3). Вкладка "Дані" містить таблицю параметрів та програму обробки параметрів з визначеною мовою програмування, доступною у системі OpenSCADA. Таблиця містить параметри з властивостями:


Всі інші параметри, які не потрапили під вище-визначені правила, є внутрішніми, використовуються для різних проміжних обчислень, обробки, перетворень та значення їх можуть бути оперативно проконтрольовані та змінені з цієї таблиці у режимі виконання.
  • Ім'я — Ім'я параметру, використовується для іменування зв'язку.
  • Тип — Тип параметру із переліку: "Реальний", "Цілий", "Логічний" та "Рядок". Для регістрів та бітів ModBus має сенс встановлювати "Цілий" та "Логічний" тип відповідно. Для регістрів розширених пріфіксами "f" та "s" треба вказати типи "Реальний" та "Рядок", відповідно.
  • Зв'язок — Ознака того, що цей параметр має пов'язуватися з атрибутом параметру підсистеми "Збір даних". Вказані цією ознакою зв'язки встановлюються у вкладці "Зв'язки".
  • Значення — Вихідне або поточне, якщо вузол включено, значення параметру.

  • В таблиці, по замовченню, визначаються декілька параметрів спеціального призначення:


     (2 Kb) Оскільки у вказівнику розширених типів регістрів може використовуватися недозволений символ ',' то доступ до нього із процедури можна здійснити тільки альтернативним способом, через об'єкт "arguments":
    arguments["R_s10,5w"] = "9876543210";

    Вкладка "Дані", сторінки конфігурації вузла протоколу у режимі "Дані". (97 Кб)
    Рис.3. Вкладка "Дані", сторінки конфігурації вузла протоколу у режимі "Дані".

    Для вказаних у якості зв'язків параметрів можна встановити зв'язки тільки для вимкненого вузла протоколу у вкладці "Зв'язки" (рис.4).


    Вкладка "Зв'язки" сторінки конфігурації вузла протоколу у режимі "Дані". (90 Кб)
    Рис.4. Вкладка "Зв'язки" сторінки конфігурації вузла протоколу у режимі "Дані".

    Режим вузла протоколу "Шлюз вузла"

    Режим використовується для прокидання запиту до окремого пристрою у іншій мережі ModBus із мережі ModBus, для якого сконфігуровано цей вузол. Загальна конфігурація вузла здійснюється у вкладці "Вузол" (рис.5) параметрами:


    Вкладка "Вузол" сторінки конфігурації вузла протоколу у режимі "Шлюз вузла". (78 Кб)
    Рис.5. Вкладка "Вузол" сторінки конфігурації вузла протоколу у режимі "Шлюз вузла".

    Режим вузла протоколу "Шлюз мережі"

    Режим використовується для прокидання запитів мережі цілком у іншу мережу ModBus з мережі ModBus для якої сконфігуровано цей вузол протоколу. Тобто запит на пристрій з будь якою адресою буде спрямовуватися у іншу мережу, без переадресування. Загальна конфігурація вузла протоколу здійснюється у вкладці "Вузол" (рис.6) параметрами:


    Вкладка "Вузол" сторінки конфігурації вузла протоколу у режимі "Шлюз мережі". (76 Кб)
    Рис.6. Вкладка "Вузол" сторінки конфігурації вузла протоколу у режимі "Шлюз мережі".

    2.3 Звіт запитів ModBus

    Для можливості контролю та діагностики за коректністю здійснення запитів різними компонентами модулем надається можливість включення звіту запитів, що проходять через модуль протоколу. Звіт включається вказанням ненульової кількості записів у вкладці "Звіт" сторінки модуля протоколу (рис.7).


    Вкладка "Звіт" сторінки модуля протоколу. (100 Кб)
    Рис.7. Вкладка "Звіт" сторінки модуля протоколу.

    3. Модуль збору даних

    Модуль збору даних надає можливість опитування та запису регістрів та бітів пристроїв за посередництвом режиму протоколів TCP, RTU, ASCII та команд запиту 0x01 — 0x06, 0x0F, 0x10.

    3.1. Контролер даних

    Для додання джерела даних ModBus створюється та конфігурується контролер у системі OpenSCADA. Приклад вкладки конфігурації контролеру даного типу зображено на рис.8.


    Вкладка конфігурації контролеру. (132 Кб)
    Рис.8. Вкладка конфігурації контролеру.

    За допомогою цієї вкладки можна встановити:

    3.2. Параметри

    Модуль збору даних надає два типи параметру: "Стандартний"(std) та "Логічний"(logic). Додатковими конфігураційними полями параметрів цього модуля є:

    Стандартний тип параметру(std)

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


    Вкладка конфігурації параметру стандартного типу. (88 Кб)
    Рис.9. Вкладка конфігурації параметру стандартного типу.

    Структура атрибуту, у параметрі переліку атрибутів, записується наступним чином: "{dt}:{numb}:{rw}:{id}:{name}".
    Де:

    dt — ModBus тип даних ("R"—регістр[3,6(16)], "C"—біт[1,5(15)], "RI"—регістр входу[4], "CI"—біт входу[2]);
    "R" та "RI" можуть бути розширені суфіксами: "i2"—Int16, "i4"—Int32, "i8"—Int64, "u2"—UInt16, "u4"—UInt32, "f"—Float, "d"—Double, "b5"—Bit5, "s"—Рядок (розмір по умовчанню 10 та до 100 регістрів);
    numb — адреса ModBus пристрою (десяткова, шістнадцяткова або вісімкова) [0...65535];
    rw — режим читання/запису ("r"—читання; "w"—запис, "rw"—запис та читання);
    id — ідентифікатор атрибуту що створюється;
    name — ім'я атрибуту що створюється.

    Приклади:

    "R:0x300:rw:var:Variable" — доступ до регістру;
    "C:100:rw:var1:Variable 1" — доступ до біту;
    "R_f:200:r:float:Float" — отримати реальне з регістрів 200 та 201;
    "R_i4:400,300:r:int32:Int32" — отримати int32 з регістрів 400 та 300;
    "R_b10:25:r:rBit:Reg bit" — отримати біт 10 з регістру 25;
    "R_s:15,20:r:str:Reg blk" — отримати рядок, блок регістрів, з регістру 15 та розміром 20.

    Рядок, який починається з символу '#', вважається коментарем та не обробляється.


    Відповідно до визначених переліком атрибутів здійснюється опитування та створення атрибутів параметру (рис.10).


    Вкладка атрибутів параметру стандартного типа. (73 Кб)
    Рис.10. Вкладка атрибутів параметру стандартного типа.

    Логічний тип параметру(logic)

    Головну сторінку конфігурації параметру логічного типу представлено на рисунку 11.


    Вкладка конфігурації параметру логічного типа. (77 Кб)
    Рис.11. Вкладка конфігурації параметру логічного типа.

    При формуванні шаблону, для логічного типу параметру даного контролеру, не треба враховувати формат посилання шаблону, оскільки він не використовується та може бути опущений. Саме ж значення посилання, при конфігурації шаблону (рис.12), записується у форматі: "{dt}:{numb}:{rw}".
    Де:

    dt — ModBus тип даних ("R"—регістр[3,6(16)], "C"—біт[1,5(15)], "RI"—регістр входу[4], "CI"—біт входу[2]);
    "R" та "RI" можуть бути розширені суфіксами: "i2"—Int16, "i4"—Int32, i8-Int64, u2-UInt16, u4-UInt32, "f"—Float, "d"—Double, "b5"—Bit5, "s"—Рядок (розмір по умовчанню 10 та до 100 регістрів);
    numb — адреса даних ModBus пристрою (десяткова, шістнадцяткова або вісімкова) [0...65535];
    rw — режим читання/запису ("r"—читання; "w"—запис, "rw"—запис та читання);

    Приклади:

    "R:0x300:rw" — доступ до регістру;
    "C:100:rw" — доступ до біту;
    "R_f:200:r" — отримати реальне з регістрів 200 та 201;
    "R_i4:400,300:r" — отримати int32 з регістрів 400 та 300;
    "R_b10:25:r" — отримати біт 10 із регістру 25;
    "R_s:15,20:r" — отримати рядок, блок регістрів, з регістру 15 та розміром 20.

    Вкладка "Конфігурація шаблону" параметра логічного типу. (72 Кб)
    Рис.12. Вкладка "Конфігурація шаблону" параметра логічного типу.

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


    Відповідно до шаблону, який лежить у основі параметру, ми отримаємо набір атрибутів параметру рис.13.


    Вкладка атрибутів параметру логічного типу. (74 Кб)
    Рис.13. Вкладка атрибутів параметру логічного типу.

    3.3. API користувацького програмування

    У зв'язку із підтримкою модулем параметрів логічного типу має сенс надання низки функцій користувацького API для виклику із шаблону логічного параметру.

    Об'єкт "Контролер" [this.cntr()]


    Об'єкт "Параметр" [this]

    Посилання

    Referring pages: HomePageUk/Doc
    HomePageUk/Doc/DAQ
    HomePageUk/Function
    HomePageUk/Using/PLC/firmware
    HomePageUk/Works/RoadMap


     
    There are 13 files on this page.[Display files/form]
    There is no comment on this page. [Display comments/form]