1   2   3
Ім'я файлу: 1К17, КІК.doc
Розширення: doc
Розмір: 1491кб.
Дата: 25.03.2020

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

код функції

01

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

N

Значення бітів

(перші 8 біт)

0 до

FF16

Значення бітів

(наступні 8 біт)

0 до

FF16

...




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

0 до

FF16



Запит: Відповідь:

Код функції

01

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

біту (HI)

0 до

FFFF16

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

(LO)

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

1 до

7D016

(2000)

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


Код функції 0216 − читання

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

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


код функції

01

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

N*2

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

0 до

FFFF16

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

...




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

0 до

FFFF16

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



Запит: Відповідь:

код функції

03

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

регістру (Hi)

від 0

до FFFF16

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

регістру (Lo)

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

від 1

до 7D16 (125)

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



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

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


Функція

05

Адреса біту (Hi)

від 0 до FFFF16

Адреса біту (Lo)

Значення біту (Hi)

0000 або FF0016

Значення біту (Lo)

Нормальна відповідь серверу являється повторенням запиту до клієнта.

Код функції 0616 − запис вихідного/внутрішнього регістру. Функція аналогічна попередній, але оперує з регістрами(словами). В запиті вказується номер вихідного/внутрішнього регістру та його значення. В широкомовній передачі запит виставляє значення даної змінної для всіх серверів.

Функція

06

Адреса регістру (Hi)

від 0 до FFFF16

Адреса регістру (Lo)

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

від 0 до FFFF16

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

Нормальна відповідь сервера являється повторенням запиту клієнту.

Код функції 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



Функція

0

F

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

0

0

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

1

3

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

0

0

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

0

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

Дана функція забезпечує запис декількох Holding Registers. Напочатку вказується початкова адреса регістру, кількість регістрів, після чого передаються значення самих регістрів. Перед значеннями спочатку передається лічильник байт, що вказує скільки байт слідує за цим полем. Враховуючи, що кожен регістр вміщує 2 байти, лічильник байт буде рівним 2*N, де N – кількість регістрів.

Запит: Відповідь:

Функція

1016

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

0 до



Функція

10

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

регістру (Hi)

0 до

FFFF16

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

регістру Lo

Кількість регістрів

(Hi)

1 до 007B16 (123)

Кількість регістрів

(Lo)




регістру (Hi)

FFFF16

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

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

1 до 007B16

(123)

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

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

2*N

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

0 до

FFFF16

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

...




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

0 до

FFFF16

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


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

Дана функція проводить операцію читання та запису за одну MODBUS транзакцію. Функція може записувати нові значення Holding Registers і повертає значення іншої групи Holding Registers. Ця функція підтримується не всіми пристроями з Modbus. У запиті вказується початкова адреса і кількість регістрів для читання, після чого вказується початкова адреса, кількість регістрів і дані для запису. Лічильник байт перед ними для запису вказує на кількість байт, які передаються в полі даних.

Запит:

Код функції

1716

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

від 0 до FFFF16

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

Кількість регістрів для читання (Hi)

від 1 до 7616 (118)

Кількість регістрів для читання (Lo)

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

від 0 до FFFF16

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

Кількість регістрів для запису (Hi)

від 1 до 7616

(118)

Кількість регістрів для запису (Lo)

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

2*N

Дані для запису (1-й регістр Hi)

від 0 до FFFF16

Дані для запису (1-й регістр Lo)

...



Дані для запису (N-й регістр Hi)

від 0 до FFFF16

Дані для запису (N-й регістр Lo)


Відповідь.

код функції

1716

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

2*N

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

від 0 до FFFF16

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




...



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

від 0 до FFFF16

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


На рис.8.5 продемонстроване функціонування обміну по протоколу Modbus на прикладі читання 3-х Holdnig Registers, починаючи з 108-го. Слід звернути увагу, що адресація всіх комірок починається з одиниці, але в запитах вказується з нуля.




Рис.8.5. Приклад читання Holding Registers з 400108 по 400110 (3 шт)
На рис.8.6. показаний приклад позитивного та негативного виконання функції на читання статусу Coils. Також наведений перелік кодів помилок, по причині яких може виникнути така ситуація.



Рис.8.6. Приклад позитивного та негативного (з помилкою) обробки запиту

Запитання для самоперевірки

    1. Якими мережами насьогодні представлений MODBUS? Охарактеризуйте їх у контексті моделі OSI.

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

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

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

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

1   2   3

скачати

© Усі права захищені
написати до нас