№2 Modbus запросы

ЛАБОРАТОРНА РОБОТА2.

Формування запитів MODBUS RTU.

 

 

Тривалість: 2 акад. години (1 пара).

Мета: ознайомитись з принципами функціонування протоколу MODBUS; ознайомитись з роботою адаптера-перетворювача інтерфейсів RS-232<->RS-485.

 

Лабораторна установка.

Лабораторна робота виконується на робочих місцях 2-5, 7-10. Одна бригада – два робочі місця.

Апаратне забезпечення. Лабораторна установка складається з комп’ютера підключеного до термінального порту ПЛК Twido за допомогою адаптера-перетворювача інтерфейсів RS-232 <-> RS-485. Схема установки показана на рис.2.1.
 Програмне забезпечення. На комп’ютері використовується    прикладна програма для роботи з COM-портом комп’ютера Compt.exe, а також програма для генерації циклічного перевірочного коду CRC16 – crcdll.exe (знаходиться в папці Compt175). На ПЛК написана програма, яка змінює значення змінних відповідно до варіанту. З’єднання ПЛК та ПК реалізується за допомогою Modbus RTU, де ПЛК являється Slave, а ПК разом з Compt.exe являється Master.

Загальна постановка задачі.  Лабораторна бригада реалізовує роботу MODBUS RTU Master, тобто формує запити для Slave (ПЛК) та обробляє його відповіді. Основні функції, можливі помилки та їх коди наведені в додатках 2.1 та 2.2. Контрольну суму необхідно вираховувати за допомогою програми crcdll.exe, яка в аргументах приймає байти кадру в 16-ковому вигляді, які розділені " " (пробілом), а результатом видає 2 байти суми CRC16.

Необхідно врахувати особливості роботи кабелю TSX PCX 1031 та його вплив на роботу Port1 в Twido. Принципи функціонування кабелю описана в додатку 2.3.
 

Послідовність виконання роботи.

 

1)   Зібрати лабораторну установку. Запустити на виконання програму Compt.exe на РС.

1)   Налаштувати COM-порт на роботу з наступними параметрами :

Параметр

робоче місце

2

3

4

5

7

8

9

10

Адреса Slave

2

3

4

5

7

8

9

10

бітова швидкість

19200

19200

19200

19200

9600

9600

9600

9600

паритет

парн

парн

парн

парн

непар

непар

непар

непар

стоп біт

1

1

1

1

1

1

1

1

 

 
 
 
 
 
 
 
 
 
 
2)   Виставити кабель в необхідне положення: Port1 Twido працює в режимі визначеному конфігурацією; перетворювач управляється зі сторони RS-485.

3)   Сформувати та занотувати запит на читання у Slave 3-х внутрішніх регістрів (%MW), починаючи з вказаного (приведений в таблиці нижче в десятковому форматі)   

Параметр

робоче місце

2

3

4

5

7

8

9

10

номер  регістру

12310

6810

3410

17610

3410

1110

6710

9510

 

4)   По сформованому в п.4 запиту визначити контрольну суму CRC16 за допомогою програми crcdll.exe. Занотувати повний формат кадру разом з отриманим CRC16.

5)   Відправити кадр, визначений в п.5. по мережі за допомогою Compt.exe. Отриману відповідь занотувати. Значення змінних перевести в десятковий формат та занотувати.

6)   Перевірити, чи вірно отримані дані по стану поля CRC16. Результат проаналізувати та занотувати.

7)   Відправити той самий запит, що у пункті 6, але при іншому біті паритету (якщо був парний – то при непарному і навпаки). Отриманий результат проаналізувати і занотувати.

8)   Відправити запит на читання 3-х регістрів, починаючи з 100010. Отриманий результат проаналізувати і занотувати.

9)      Сформувати запит на запис Slave 2-х  внутрішніх регістрів, починаючи з вказаного (приведений в таблиці нижче в десятковому форматі). Визначити контрольну суму CRC16 за допомогою програми crcdll.exe. Занотувати формат кадру і відправити по мережі. Отриману відповідь проаналізувати та занотувати.

 

1)       

Параметр

робоче місце

2

3

4

5

7

8

9

10

номер  регістру

210

310

410

510

710

810

910

1010

знач. регістр 1

3410

2210

4410

5610

6810

1210

1410

6810

знач. регістр 2

234510

123410

345610

456710

567810

911210

112310

765410

 

 

 

 

 

  

 

 

Оформлення роботи.

До захисту готовляться всі занотовані результати з поясненнями.

 

Перевірка виконання роботи та питання до захисту.

Викладачем вибірково перевіряється виконання всіх пунктів роботи та занотовані результати. Кожен результат студент повинен пояснити. У випадку виникнення помилок або запитань щодо проведення певного пункту, цей пункт необхідно буде повторити.

1.      Розкажіть про основи функціонування MODBUS Application Protocol. Який формат повідомлення MODBUS PDU?

2.      Які функції використовуються для доступу до даних процесу?

3.      Як формуються повідомлення-запити та повідомлення відповіді для читання та запису діапазону вхідних та вихідних регістрів?

4.      Які ситуації можливі при обробці запиту MODBUS Клієнта? Наведіть приклади відповідей про помилку.

5.      Прокоментуйте основи функціонування MODBUS RTU/ASCII в контексті моделі OSI. Як пов’язана модель функціонування обміну на прикладному рівні з функціонуванням на канальному?

6.      Який метод доступу до шини використовується в MODBUS RTU/ASCII на канальному рівні? Як на цьому рівні проводиться контроль за правильністю доставки бітової послідовності?

7.      Поясніть призначення поля адреси. Чому виникає необхідність в адресації? Чи використовується поле адреси при з’єднані точка-точка в MODBUS RTU?

8.      В чому відмінність роботи MODBUS RTU та MODBUS ASCII на канальному та фізичному рівні?

9.      Розкажіть про принципи побудови кадрів для  MODBUS RTU та MODBUS ASCII.

10.  Які інтерфейси, бітова швидкість та топологія використовується для  MODBUS RTU/ASCII на фізичному рівні? Яким чином вузли можуть підключатися до загальної шини?

11.  Чим викликана необхідність в управлінні станом передавача адаптера-перетворювача інтерфейсів RS-232 <–> RS-485.

12.  Якими способами може управлятись стан передавача адаптеру TSX PCX 1031? Як задати кожний із режимів? Коли використовується кожний із них?

 

Додаток 2.1. Формат функцій MODBUS (MBAP)

 

Повний список кодів а також специфікацію протоколу можна знайти на офіційному Веб сайті MODBUS-IDA - www.MODBUS.org. В додатку детально розглянуто тільки найбільш вживані функції MODBUS для обміну даними процесу. Номер функції дається в шістнадцятковому форматі. Скорочення в дужках Hi та Lo вказують відповідно на старший та молодший байти. Тобто, якщо для вказівки адреси початкової змінної необхідно двобайтове слово, то значення старшого байта буде передаватись в полі з позначенням Hi, а молодшого – відповідно Lo.

Д.2.1.1. Код функції 0116 − читання статусу Coils (дискретних вихідних бітів). Повідомлення-запит вміщує адресу початкового біту і кількість бітів для читання. Біти нумеруються починаючи з 0. У повідомленні-відповіді кожне значення змінної передається одним бітом, тобто в одному байті пакується статус 8 бітових змінних. Якщо кількість їх не кратно восьми, інші біти в байті заповнюються нулями. Лічильник вміщує кількість байт в полі даних.

                                            Запит:                                                                           

Код функції

01

Адреса початкового біту (HI)

0 до FFFF16

Адреса початкового біту (LO)

Кількість біт (HI)

1 до 7D016 (2000)

Кількість біт (LO)

Відповідь:

код функції

01

лічильник байт

N

Значення бітів (перші 8 біт)

0 до FF16

Значення бітів (наступні 8 біт)

0 до FF16

...

 

Значення бітів (N-ні 8 біт)

0 до FF16

 

 

Д.2.1.2. Код функції 0216 − читання статусу дискретних входів. Формат даного запиту такий же як попереднього, за винятком поля функції.

Д.2.1.3. Код функції 0316  − читання значення вихідних/внутрішніх регістрів. Повідомлення-запит вміщує адресу початкового вихідного/внутрішнього регістру (двохбайтове слово), і кількість регістрів для читання. Регістри нумеруються починаючи з 0.

Запит:                                        

код функції

03

Адреса початкового регістру (Hi)

від 0 до FFFF16

Адреса початкового регістру (Lo)

Кількість регістрів (Hi)

від 1 до 7D16 (125)

Кількість регістрів (Lo)

    Відповідь:

код функції

01

лічильник байт

N*2

Значення 1-го регістру (Hi)

0 до FFFF16

Значення 1-го регістру (Lo)

...

 

Значення N-го регістру (Hi)

0 до FFFF16

Значення N-го регістру (Lo)

У відповідному повідомленні в полі даних кожний регістр передається двома байтами.

Д.2.1.4. Код функції 0416  читання значення вхідних регістрів. Формат даного запиту такий же як попереднього, за винятком поля функції.

Д.2.1.5. Код функції 0F16 − запис декількох вихідних/внутрішніх бітів. В запиті вказується початкова адреса біту, кількість біт для запису, лічильник байтів і безпосередньо значення. В широкомовній передачі біти записуються всім серверам. Розглянемо приклад для встановлення наступних бітових вихідних/внутрішніх змінних:

Байт 1

Байт 2

26

25

24

23

22

21

20

19

--

--

--

--

--

--

28

27

1

1

0

0

1

1

0

1

 

 

 

 

 

 

0

1

В таблиці показана відповідність адреси змінної, починаючи з 19-ї, і значення біту. Для зручності біти розміщені у тому порядку, що і передаються. В другому байті корисні тільки 2 перші біти, значення інших не буде прийнято до уваги, оскільки кількість бітів вказані у кадрі. Запит та відповідь будуть мати такий вигляд:

Запит:                                                          

Функція

0F

Адреса початкового біту (Hi)

00

Адреса початкового біту (Lo)

13

Кількість бітів (Hi)

00

Кількість бітів (Lo)

Лічильник байтів

02

Дані(змінні 19-26)

CD

Дані(змінні 27-28)

01

       Відповідь:

 

Функція

0F

Адреса початкового біту (Hi)

00

Адреса початкового біту (Lo)

13

Кількість бітів (Hi)

00

Кількість бітів (Lo)

 

 

 

 

Д.2.1.6. Код функції 1016 − запис декількох вихідних/внутрішніх регістрів.

Запит:                                                                                       

Функція

1016

Адреса початкового регістру (Hi)

0 до FFFF16

Адреса початкового регістру (Lo)

Кількість регістрів (Hi)

1 до 007B16 (123)

Кількість регістрів (Lo)

Лічильник байтів

2*N

Дані (1-й регістр Hi)

0 до FFFF16

Дані (1-й регістр Lo)

...

 

Дані (N-й регістр Hi)

0 до FFFF16

Дані (N-й регістр Lo)

Відповідь:

Функція

10

Адреса початкового регістру (Hi)

0 до FFFF16

Адреса початкового регістру Lo

Кількість регістрів (Hi)

1 до 007B16 (123)

Кількість регістрів (Lo)

 

Додаток 2.2. Повідомлення про помилки MODBUS (MBAP)

 

Ці повідомлення стосуються всіх типів MODBUS, але першопочатково були визначені для MODBUS Serial (RTU/ASCII).

При запиті Клієнта до Серверу, можуть мати місце наступні ситуації:

-        якщо Сервер прийняв запит без комунікаційних помилок, і може нормально розпізнати запит, він повертає нормальну відповідь;

-        якщо Сервер не прийняв запит, відповідь не повертається. Клієнт очікує відповіді протягом певного тайм-ауту;

-        якщо Ведений (для MODBUS Serial) прийняв кадр, але знайшов комунікаційну помилку (паритет, помилка контрольної суми), то кадр-відповідь не повертається, а Ведучий чекає відповіді на запит протягом певного тайм-ауту;

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

Повідомлення про помилку має два поля які відрізняються від полів нормальної відповіді:

ПОЛЕ КОДУ ФУНКЦІЇ: при нормальній відповіді сервер повертає в цьому полі той номер функції, який потребував Клієнт. У всіх кодах функції старший біт встановлений в 0. При поверненні повідомлень про помилку, Сервер встановлює цей біт в 1, по чому Клієнт може ідентифікувати наявність помилки.

ПОЛЕ ДАНИХ: В цьому полі при помилці повертається її код.

Таблиця Д2.1

Список кодів

Код

Назва

Опис

01

ILLEGAL FUNCTION

Прийнятий код функції не може бути оброблений на Сервері

02

ILLEGAL DATA ADDRESS

Адреса даних вказана в запиті не доступна даному Серверу .

03

ILLEGAL DATA VALUE

Величина, вміщена в полі даних запиту являється не допустимою величиною для Серверу .

04

SLAVE DEVICE FAILURE

Невиправна помилка мала місце поки Сервер намагався виконати дію запиту.

05

ACKNOWLEDGE

Сервер прийняв запит і обробляє його, але необхідний певний час. Ця відповідь захищає Клієнта від генерації помилки тайм-ауту. 

06

SLAVE DEVICE BUSY

Сервер зайнятий обробкою команди, Клієнт повинен повторити запит пізніше.

07

NEGATIVE ACKNOWLEDGE

Невдалий програмний запит (для функцій 13 і 14).

08

MEMORY PARITY ERROR

Сервер хоче читати розширену пам’ять, але знайшов помилку паритету.

 

 Додаток 2.3. Робота адаптеру перетворювача TSX PCX 1031

 

Адаптер-перетворювач TSX PCX 1031 (див.рис.2.2) використовується для підключення пристроїв з RS-232C до термінального порту TSX Twido, TSX Micro, TSX Premium, або коробки підключення TSX P ACC01. Управління станом трансмітера RS-485 в адаптері-перетворювачі може управлятись одним із двох способів, які задаються перемикачем: зі сторони RS-232C сигналом RTS (позиція "MULTI"), або зі сторони термінального порту ПЛК (позиція "DIRECT"). Оскільки в стандарті RS-485 немає виділених ресурсів для режиму DIRECT, то він використовується тільки для підключення адаптера безпосередньо до термінального порту ПЛК ,  тобто у випадку з’єднання точка-точка.

 

Враховуючи, що TSX PCX 1031 використовується в якості кабелю програмування вищезазначених контролерів, він надає можливість переводити підключений термінальний порт ПЛК в режим програмування. Перемикач кабелю в позиції "TER" переводить підключений порт ПЛК в режим програмування, не залежно від дійсної його конфігурації. Позиція "OTHER" переводить термінальний порт в той режим, який визначається його дійсною конфігурацією.

 
 Оставить комментарии Вы можете здесь http://pupena-san.blogspot.com
Comments