Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Пакет протоколу Modbus



§ PDU (Protocol Data Unit) - загальна для всіх фізичних рівнів частина пакета MODBUS. Включає в себе код функції і дані пакета.

§ ADU (Application Data Unit) - повний пакет MODBUS. Включає в себе специфічну для фізичного рівня частину пакету і PDU.

 

Типи даних протоколу Modbus:

§ Discrete Inputs - однобітовий тип, доступний тільки для читання;

§ Coils - однобітових тип, доступний на читання і на запис;

§ Input Registers - 16-бітовий знаковий або беззнакових тип, доступний тільки для читання;

§ Holding Registers - 16-бітовий знаковий або беззнакових тип, доступний на читання і на запис.

 

Склад стандарту MODBUS (складаються з 3 частин):

§ Документ Modbus Application Protocol містить специфікацію прикладного рівня мережевої моделі OSI: Елементарний пакет протоколу, так званий PDU (Protocol Data Unit), він єдиний для всіх фізичних рівнів. PDU упаковується в індивідуальний для кожного транспорту application data unit (ADU). Коди функцій і складу PDU для кожного коду.

§ Документ Modbus over serial line містить специфікацію канального та фізичного рівнів мережної моделі OSI для фізичних рівнів RS485 і RS232. В принципі може використовуватися будь-який фізичний рівень заснований на асинхронному приймач.

§ Документ MODBUS Messaging on TCP / IP Implementation Guide містить специфікацію ADU для транспорту через TCP / IP стек.

 

Принцип роботи MODBUS

Контролери на шині Modbus взаємодіють, використовуючи клієнт-серверну модель, засновану на транзакціях, що складаються із запиту і відповіді. Зазвичай в мережі є тільки один клієнт, так званий, «головний» (англ. master) пристрій, і кілька серверів - «підлеглих» (slaves) пристроїв. Головний пристрій ініціює транзакції (передає запити). Головний може адресуватися індивідуально до підлеглого або ініціювати широкомовну передачу повідомлення для всіх підлеглих пристроїв. Підлеглий пристрій відповідає на запит, адресований саме йому. При отриманні широкомовного запиту відповідь не формується.

Специфікація Modbus описує структуру запитів і відповідей. Їх основа - елементарний пакет протоколу, так званий PDU (Protocol Data Unit).Структура PDU не залежить від типу лінії зв'язку і включає в себе код функції і поле даних. Код функції кодується однобайтним полем і може приймати значення в діапазоні від 1 до 127. Діапазон значень 128 - 255 зарезервований для кодів помилок. Поле даних може бути змінної довжини. Розмір пакета PDU обмежений 253 байтами.

Пакет Modbus PDU

Номер функції Дані
1 байт N < 253 (байт)

 

Для передачі через фізичні лінії зв'язку пакет PDU поміщається в інший пакет, який містить додаткові поля. Цей пакет має назву ADU (Application Data Unit). Формат ADU залежить від типу лінії зв'язку. Існують три основні реалізації протоколу Modbus, дві для передачі даних за послідовними лініями зв'язку:

§ Modbus ASCII - для обміну використовуються тільки SCII символи. Для перевірки цілісності икористовується алгоритм en: Longitudinal redundancy check. Повідомлення поділяється на стовпці за допомогою символу «:» і закінчується символами нового рядка CR / LF;

§ Modbus RTU

та для передачі даних за мережею Ethernet поверх CP / IP:

§ Modbus TCP.

 

Загальна структура ADU наступна (в залежності від реалізації, деякі з полів можуть бути відсутні):

 

Адреса веденого пристрою Номер функції Дані Блок виявлення помилок

де

адреса веденого пристрою - адреса підлеглого пристрою, до якого адресовано запит. Ведені пристрої відповідають тільки на запити, що надійшли на їхню адресу. Відповідь також починається з адреси веденого пристрою, який може змінюватися від 1 до 247. Адреса 0 використовується для широкомовної передачі, його розпізнає кожен пристрій, адреси в діапазоні 248 ‑ 255 - зарезервовані;

номер функції - це наступне однобайтне поле кадру. Воно говорить веденому пристрою, які дані або виконання якого дії вимагає від нього ведучий пристрій;

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

блок виявлення помилок - контрольна сума для перевірки відсутності помилок в кадрі.

Максимальний розмір ADU для послідовних мереж RS232 / RS485 - 256 байт, для мереж TCP - 260байт.

Для Modbus TCP ADU виглядає наступним чином:

ID транзакції ID протоколу Довжина пакета Адреса веденого пристрою Номер функції Дані  

 

ID транзакції - два байти, зазвичай нулі;

ID протоколу - два байти, нулі;

довжина пакету - два байти, старший потім молодший, довжина наступної за цим полем частини пакета;

адреса веденого пристрою - адреса підлеглого пристрою, до якого адресовано запит. Зазвичай ігнорується, якщо з'єднання вже встановлено.

Поле контрольної суми в Modbus TCP відсутнє.

Категорії кодів функцій. У діючій на даний час специфікації протоколу визначаються три категорії кодів функцій:

 

§ Стандартні команди. Їх опис має бути опублікований й затверджений Modbus-IDA. Ця категорія включає в себе як вже визначені, так і вільні на даний час коди.

§ Користувальницькі команди. Два діапазони кодів (від 65 до 72 і від 100 до 110), для яких користувач може реалізувати довільну функцію. При цьому не гарантується, що якийсь інший пристрій не буде використовувати той самий код для виконання іншої функції.

§ Зарезервовані. У цю категорію входять коди функцій, які не є стандартними, але вже використовуються в пристроях, що виробляються різними компаніями. Це коди 9, 10, 13, 14, 41, 42, 90, 91, 125, 126 і 127.

 

Модель даних

Одне з типових застосувань протоколу - читання і запису даних в регістри контролера. Специфікація протоколу визначає чотири таблиці даних:

§ Дискретні входи (Discrete Inputs) один біт тільки читання;

§ Регістри прапорів (Coils) один біт читання і запис;

§ Регістри введення (Input Registers) 16-бітове слово тільки читання;

§ Регістри зберігання (Holding Registers) 16-бітове слово читання і запис.

 

Доступ до елементів в кожній таблиці здійснюється за допомогою 16-бітної адреси, першому елементу відповідає адреса 0. Таким чином, кожна таблиця може містити до 65536 елементів. Специфікація не визначає, що фізично повинні представляти собою елементи таблиць і за якими внутрішніми адресами пристрою вони повинні бути доступні. Наприклад, допустимо організувати таблиці, що перекриваються. В цьому випадку команди, що працюють з дискретними даними і з 16-бітними регістрами будуть фактично звертатися до одних і тих же даних.

Слід зазначити, що зі способом адресації даних пов'язана певна плутанина. Modbus був спочатку розроблений для контролерів Modicon. У цих контролерах для кожної з таблиць використовувалася спеціальна нумерація. Наприклад, першому регістру введення відповідав номер комірки 30001, а першому регістру зберігання - 40001. Таким чином, регістру зберігання з адресою 107 в команді Modbus відповідав регістр № 40108 контролера. Хоча така відповідність адрес більше не є частиною стандарту, деякі програмні пакети можуть автоматично «коригувати» адреси, що вводяться користувачем, наприклад, віднімаючи 40001 з адреси регістра зберігання.

 

 

Стандартні функції протоколу Modbus. Читання даних.

Для читання значень із перерахованих вище таблиць даних використовуються функції з кодами 1 – 4 (шістнадцяткові значення 0x01 – 0x04):

1. (0x01) – читання значень з декількох регістрів прапорів (Read Coil Status) ;

2. (0x02) – читання значень із кількох дискретних входів (Read Discrete Inputs) ;

3. (0x03) – читання значень з декількох регістрів зберігання (Read Holding Registers) ;

4. (0x04) – читання значень з декількох регістрів введення (Read Input Registers).

Запит складається з адреси першого елемента таблиці, яку потрібно прочитати, і кількості зчитуваних елементів. Адреса та кількість даних задаються 16-бітними числами, старший байт кожного з них передається першим. У відповіді передаються відповідні дані. Кількість байт даних залежить від кількості замовлених елементів. Перед даними передається один байт, значення якого дорівнює кількості байт даних. Значення регістрів зберігання та регістрів введення передаються починаючи із зазначеної адреси, по два байти на регістр, старший байт кожного регістру передається першим:

Значення прапорів і дискретних входів передаються в упакованому вигляді: по одному біту на прапор. Одиниця означає включений стан, нуль - вимкнений. Значення прапорів заповнюють спочатку перший байт, починаючи з молодшого біта, потім наступні байти, також від молодшого біта до старших. Молодший біт першого байта даних містить значення прапора, зазначеного в полі «адреса». Якщо запитано кількість прапорів, не кратна восьми, то значення зайвих бітів заповнюються нулями:

 

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.