Контрольна робота №2. " Побудова запиту та розрахунок часу транзакції Modbus RTU."
Практичне завдання №2. " Побудова запиту та розрахунок часу транзакції Modbus RTU."
Практичне завдання полягає в формуванні студентом Modbus RTU кадрів та розрахунку часу транзакції, для зчитування та/або запису змінних з/на Ведучого ПЛК на/в Ведені ПЛК.
Теоретичні відомості.
Розв’язок задачі пропонується поділити на 3 частини:
- Формування часової діаграми передачі.
- Формування кадрів запитів та кадрів відповідей.
- Розрахунок часу транзакції.
Розглянемо основні принципи на прикладі. Треба побудувати кадри форматів повідомлень запитів та відповідей для MODBUS RTU та розрахувати загальний час опитування 10-ти аналогових 16-бітних змінних для 4-х Ведених (рис.5.2). Швидкість передачі даних 19200 біт/с. Клієнтський Процес Ведучого (TSX Premium) та серверні Процеси Ведених (ПЛК TSX Micro ) приймають повідомлення на початку циклу, а відправляють - в кінці циклу. Час циклу Ведучого = 10 мс, Ведених - 5с.
Доступ до внутрішніх аналогових змінних TSX Micro проводиться через 03 або 04 функцію, тому формат кадрів буде мати вигляд як на рис.5.3.
Враховуючи, що структура інших кадрів – аналогічна, наводити їх формат немає сенсу.
Побудуємо часову діаграму обміну (рис.5.4) в горизонтальній площині, де по осі абсцис відкладений час а по осі ординат умовно зображені ПЛК. З боку клієнтської програми повідомлення-запит формується за допомогою комунікаційної функції, відправка даних якої через комунікаційний порт проводиться в кінці циклу задачі, а отримування з порту – на початку циклу. Така поведінка клієнтської сторони цілком відповідає багатьом реалізаціям для різних ПЛК.
У TSX Micro MODBUS-Сервер реалізований на рівні операційної системи. Специфіка реалізації заключається в тому, що прийом MODBUS-запитів з комунікаційного порту системою проводиться на початку циклу, а відправка повідомлень-відповідей – вкінці.
Слід зазначити, що реалізація MODBUS-Серверу може бути підтримана на рівні комунікаційного модуля, а обмін даними з пам’яттю самого пристрою проводитись через комунікаційні буфери. В цьому випадку реакція MODBUS-Сервера буде значно швидшою і не залежати від циклу програми. Для розрахунку часу транзакції для інших типів систем необхідно ознайомитися з деталями їх реалізації.
На рис.5.4 показано, що надходження кадру приходить десь всередині циклу. Це значить, що їх обробка та генерація відповіді пройде приблизно через 1,5 циклу. Слід розуміти, що це усереднене значення, для найгіршої оцінки краще резервувати
ТТ1=С5+T1.req+2*C1+T1.res+C5*2 (2)
ТТ1 розрахований з урахуванням 2 циклів затрачених Веденим на генерацію відповіді на повідомлення-запит. Якби транзакція проводилась не періодично, як по умові задачі, а по виникненню події, то в час транзакції необхідно б було включити також ще один цикл Ведучого. Нескладно вивести час опитування всіх Ведених:
ТТall=C5*9+C1*2+C2*2+C3*2+C4*2+T1.req+T1.res+ T2.req+T2.res+ T3.req+T3.res+ T4.req+T4.res (3)
Враховуючи, що цикли Ведених однакові, а кадри запитів і кадри відповідей для всіх Ведених мають однакову структуру, загальна формула буде мати наступний вигляд:
ТТall= C5*9 + C1*8 + (T1.req+T2.req)*4 (4)
Розрахуємо час T1.req та T2.req. Час передачі кадру (Тframe) можна орієнтовно розрахувати по кількості символів (Nsymb) в кадрі та часу передачі одного символу (Tsymb):
Tframe=Nsymb*Tsymb (5)
Час передачі одного символу розраховується:
час передачі одного символу = кількість біт в символі / бітова швидкість;
Час передачі кадрів буде дорівнювати:
T1.req=8*(11/19200)=4,58 мс
T1.res=25*(11/19200)=14,33 мс
TTall=90+40+ (4,58+14,33)*4= 206 мс.
Таким чином, для опитування 10-ти змінних з 4-х Ведених зі швидкістю 19200 біт/с необхідно затратити приблизно 206 мс. Якщо необхідне періодичне опитування бажано зарезервувати певний час, наприклад ще додатково 100 мс.
Приклад завдання.
Побудувати запити та розрахувати час транзакції на MODBUS RTU між ПЛК Ведучого (Master) та двома Веденими ПЛК при умові:
БІТОВА ШВИДКІСТЬ, біт/с |
Час циклу, мс |
1 запит Slave1 |
2 запит Slave2 |
||
Master |
Slave1 |
Slave2 |
|||
9600 |
10 |
10 |
15 |
читання 18 внутрішніх регістрів, з 16 |
запис 27 внутрішніх регістрів, з 17
|
Обробку вхідних повідомлень ПЛК проводить на початку циклу, відправку вихідних повідомлень – в кінці циклу. Вважати всі відповіді від Веденого позитивними (без помилок). Адресація регістрів починається з 0. Тайм-аути не враховувати.
Приклад рішення.
- Часова діаграма стану показана на рис.5.5
- Формування кадрів для даної задачі показаний на рис.5.6.
- Розрахунок часу транзакції:
T1.req=8*(11/9600)=9,17 мс
T1.res=41*(11/9600)=46,97 мс
T2.req=63*(11/9600)=72,18 мс
T2.res=8*(11/9600)=9.17 мс
Загальний час транзакції:
TTall=CM*5+C1*2+C2*2+ T1.req + T1.res + T2.req + T2.res = 50 + 20 + 30 + 9,17 + 46,97 + 72,18 + 9.17 = 254.32 мc
Завдання.
Побудувати запити та розрахувати час транзакції на MODBUS RTU між ПЛК Ведучого (Master) та двома Веденими ПЛК при умові, відповідно до варіанту (див. табл.). Обробку вхідних повідомлень ПЛК проводить на початку циклу, відправку вихідних повідомлень – в кінці циклу. Вважати всі відповіді від Веденого позитивними (без помилок). Адресація регістрів починається з 0. Тайм-аути не враховувати.
№ варіанту |
Прізвище та ім’я |
БІТОВА ШВИДКІСТЬ, біт/с |
Час циклу, мс |
1 запит Slave1 |
2 запит Slave2 |
||
Master |
Slave1 |
Slave2 |
|||||
АКС-4-2 |
|||||||
1 |
АЛЬОХІН Максим |
9600 |
10 |
10 |
15 |
читання 10 внутрішніх регістрів, з 101 |
запис 83 внутрішніх регістрів, з 21 |
2 |
АНДРІЙЧУК Дмитрій |
19200 |
5 |
10 |
5 |
запис 11 внутрішніх регістрів, з 12 |
запис 82 внутрішніх регістрів, з 202 |
3 |
БЄЛЬСЬКИЙ Богдан |
9600 |
10 |
10 |
15 |
читання 12 внутрішніх регістрів, з 103 |
читання 81 внутрішніх регістрів, з 23 |
4 |
БОРИСЕНКО Микола |
19200 |
5 |
10 |
5 |
читання 13 внутрішніх регістрів, з 14 |
запис 80 внутрішніх регістрів, з 204 |
5 |
БРЕЗІЦЬКИЙ Олександр |
9600 |
10 |
10 |
15 |
запис 14 внутрішніх регістрів, з 105 |
запис 79 внутрішніх регістрів, з 25 |
6 |
БУТКО Дмитро |
19200 |
5 |
10 |
5 |
читання 15 внутрішніх регістрів, з 16 |
читання 78 внутрішніх регістрів, з 206 |
7 |
ВІТРУК Михайло |
9600 |
10 |
10 |
15 |
читання 16 внутрішніх регістрів, з 107 |
запис 77 внутрішніх регістрів, з 27 |
8 |
ВОВЧУК Олексій |
19200 |
5 |
10 |
5 |
запис 17 внутрішніх регістрів, з 18 |
запис 76 внутрішніх регістрів, з 208 |
9 |
ВОРОНЦОВ Олександр |
9600 |
10 |
10 |
15 |
читання 18 внутрішніх регістрів, з 109 |
читання 75 внутрішніх регістрів, з 29 |
10 |
ДОНЧЕНКО Ірина |
19200 |
5 |
10 |
5 |
читання 19 внутрішніх регістрів, з 20 |
запис 74 внутрішніх регістрів, з 210 |
11 |
ІЛЬЄНКО Олексій |
9600 |
10 |
10 |
15 |
запис 20 внутрішніх регістрів, з 111 |
запис 73 внутрішніх регістрів, з 31 |
12 |
КАРПЮК Марина |
19200 |
5 |
10 |
5 |
читання 21 внутрішніх регістрів, з 22 |
читання 72 внутрішніх регістрів, з 212 |
13 |
КАРТАВИХ Дмитро |
9600 |
10 |
10 |
15 |
читання 22 внутрішніх регістрів, з 113 |
запис 71 внутрішніх регістрів, з 33 |
14 |
КУЦИЙ Олександр |
19200 |
5 |
10 |
5 |
запис 23 внутрішніх регістрів, з 24 |
запис 70 внутрішніх регістрів, з 214 |
15 |
ЛАЗЕБНОВ Владислав |
9600 |
10 |
10 |
15 |
читання 24 внутрішніх регістрів, з 115 |
читання 69 внутрішніх регістрів, з 35 |
16 |
МАРЧУК Олексій |
19200 |
5 |
10 |
5 |
читання 25 внутрішніх регістрів, з 26 |
запис 68 внутрішніх регістрів, з 216 |
17 |
МИХАЙЛЕНКО Богдан |
9600 |
10 |
10 |
15 |
запис 26 внутрішніх регістрів, з 117 |
запис 67 внутрішніх регістрів, з 37 |
18 |
МИХНО Дмитро |
19200 |
5 |
10 |
5 |
читання 27 внутрішніх регістрів, з 28 |
читання 66 внутрішніх регістрів, з 218 |
19 |
ПОДЛЄСНИЙ Денис |
9600 |
10 |
10 |
15 |
читання 28 внутрішніх регістрів, з 119 |
запис 65 внутрішніх регістрів, з 39 |
20 |
ПОЖАР Віталій |
19200 |
5 |
10 |
5 |
запис 29 внутрішніх регістрів, з 30 |
запис 64 внутрішніх регістрів, з 220 |
21 |
ПОПОВИЧ Андрій |
9600 |
10 |
10 |
15 |
читання 30 внутрішніх регістрів, з 121 |
читання 63 внутрішніх регістрів, з 41 |
22 |
ПРОТОКОВИЛО Сергій |
19200 |
5 |
10 |
5 |
читання 31 внутрішніх регістрів, з 32 |
запис 62 внутрішніх регістрів, з 222 |
23 |
ШЕЙКО Олександр |
9600 |
10 |
10 |
15 |
запис 32 внутрішніх регістрів, з 123 |
запис 61 внутрішніх регістрів, з 33 |
74 |
Хичій Кристина |
9600 |
5 |
10 |
5 |
читання 83 внутрішніх регістрів, з 83 |
читання 10 внутрішніх регістрів, з 273 |
75 |
Рура Вікторія |
9600 |
5 |
5 |
5 |
читання 84 внутрішніх регістрів, з 174 |
запис 9 внутрішніх регістрів, з 94 |
АКС-4-3 |
|||||||
24 |
АНДРЄЄВА Оксана |
19200 |
10 |
10 |
15 |
читання 33 внутрішніх регістрів, з 34 |
запис 60 внутрішніх регістрів, з 224 |
25 |
БЛИЗНЮК Владислав |
9600 |
5 |
10 |
5 |
запис 34 внутрішніх регістрів, з 125 |
запис 59 внутрішніх регістрів, з 35 |
26 |
БОКОЧ Іван |
19200 |
10 |
10 |
15 |
читання 35 внутрішніх регістрів, з 36 |
читання 58 внутрішніх регістрів, з 226 |
27 |
БОНДАРЕНКО Костянтин |
9600 |
5 |
10 |
5 |
читання 36 внутрішніх регістрів, з 127 |
запис 57 внутрішніх регістрів, з 47 |
28 |
ЗАЇЧЕНКО Олексій |
19200 |
10 |
10 |
15 |
запис 37 внутрішніх регістрів, з 38 |
запис 56 внутрішніх регістрів, з 228 |
29 |
КАРАЦЮПА Олександр |
9600 |
5 |
10 |
5 |
читання 38 внутрішніх регістрів, з 129 |
читання 55 внутрішніх регістрів, з 49 |
30 |
КІРІЛКОВ Олександр |
19200 |
10 |
10 |
15 |
читання 39 внутрішніх регістрів, з 40 |
запис 54 внутрішніх регістрів, з 230 |
31 |
КЛІМНІЧЕНКО Володимир |
9600 |
5 |
10 |
5 |
запис 40 внутрішніх регістрів, з 131 |
запис 53 внутрішніх регістрів, з 51 |
32 |
КРАМАР Владислав |
19200 |
10 |
10 |
15 |
читання 41 внутрішніх регістрів, з 42 |
читання 52 внутрішніх регістрів, з 232 |
33 |
МЕЛЬНИЧУК Ярослав |
9600 |
5 |
10 |
5 |
читання 42 внутрішніх регістрів, з 133 |
запис 51 внутрішніх регістрів, з 53 |
34 |
ПОНОМАРЕНКО Сергій |
19200 |
10 |
10 |
15 |
запис 43 внутрішніх регістрів, з 44 |
запис 50 внутрішніх регістрів, з 234 |
35 |
ПУХЛЯКОВА Маргарита |
9600 |
5 |
10 |
5 |
читання 44 внутрішніх регістрів, з 135 |
читання 49 внутрішніх регістрів, з 55 |
36 |
РОМАНЮК Богдан |
19200 |
10 |
10 |
15 |
читання 45 внутрішніх регістрів, з 46 |
запис 48 внутрішніх регістрів, з 236 |
37 |
РУБАН Андрій |
9600 |
5 |
10 |
5 |
запис 46 внутрішніх регістрів, з 138 |
запис 47 внутрішніх регістрів, з 57 |
38 |
СОКОЛОВА Ганна |
19200 |
10 |
10 |
15 |
читання 47 внутрішніх регістрів, з 48 |
читання 46 внутрішніх регістрів, з 238 |
39 |
ТИМОХІН Денис |
9600 |
5 |
10 |
5 |
читання 48 внутрішніх регістрів, з 139 |
запис 45 внутрішніх регістрів, з 59 |
40 |
ТИХОНОВ Олександр |
19200 |
10 |
10 |
15 |
запис 49 внутрішніх регістрів, з 50 |
запис 44 внутрішніх регістрів, з 240 |
41 |
ФЕДІЄНКО Антон |
9600 |
5 |
10 |
5 |
читання 50 внутрішніх регістрів, з 141 |
читання 43 внутрішніх регістрів, з 61 |
42 |
ХВОРОСТЕНКО Ростислав |
19200 |
10 |
10 |
15 |
читання 51 внутрішніх регістрів, з 52 |
запис 42 внутрішніх регістрів, з 242 |
43 |
ЦИРУЛЬНИК Денис |
9600 |
5 |
10 |
5 |
запис 52 внутрішніх регістрів, з 143 |
запис 41 внутрішніх регістрів, з 63 |
44 |
ЧЕРКАСОВ Дмитро |
19200 |
10 |
10 |
15 |
читання 53 внутрішніх регістрів, з 56 |
читання 40 внутрішніх регістрів, з 244 |
45 |
ЧОРНОЙВАН Марина |
9600 |
10 |
10 |
15 |
читання 54 внутрішніх регістрів, з 145 |
запис 39 внутрішніх регістрів, з 66 |
46 |
ЧУХНО Олег |
19200 |
5 |
10 |
5 |
запис 55 внутрішніх регістрів, з 56 |
запис 38 внутрішніх регістрів, з 246 |
47 |
ШИШАК Альона |
9600 |
10 |
10 |
15 |
читання 56 внутрішніх регістрів, з 147 |
читання 37 внутрішніх регістрів, з 67 |
48 |
ШКОЛЬНИЙ Дмитро |
19200 |
5 |
10 |
5 |
читання 57 внутрішніх регістрів, з 58 |
запис 36 внутрішніх регістрів, з 248 |
49 |
ЯНКО Олександр |
9600 |
10 |
10 |
15 |
запис 58 внутрішніх регістрів, з 149 |
запис 35 внутрішніх регістрів, з 69 |
АКС-4-4 |
|||||||
50 |
БОЙКО Назар |
19200 |
10 |
10 |
15 |
читання 59 внутрішніх регістрів, з 60 |
запис 34 внутрішніх регістрів, з 250 |
51 |
ВАРИЧЕВ Андрій |
9600 |
5 |
10 |
5 |
запис 60 внутрішніх регістрів, з 151 |
запис 33 внутрішніх регістрів, з 71 |
52 |
ВОЛОШИН Ярослав |
19200 |
10 |
10 |
15 |
читання 61 внутрішніх регістрів, з 62 |
читання 32 внутрішніх регістрів, з 252 |
53 |
ГАВРИЛЮК Ігор |
9600 |
5 |
10 |
5 |
читання 62 внутрішніх регістрів, з 153 |
запис 31 внутрішніх регістрів, з 73 |
54 |
ГУМІН Руслан |
19200 |
10 |
10 |
15 |
запис 63 внутрішніх регістрів, з 64 |
запис 30 внутрішніх регістрів, з 254 |
55 |
ЄЛЕЦЬКИХ Андрій |
9600 |
5 |
10 |
5 |
читання 64 внутрішніх регістрів, з 155 |
читання 29 внутрішніх регістрів, з 75 |
56 |
ЄЛЕЦЬКИХ Сергій |
19200 |
10 |
10 |
15 |
читання 65 внутрішніх регістрів, з 66 |
запис 28 внутрішніх регістрів, з 256 |
57 |
КЛИМЧУК Євгеній |
9600 |
5 |
10 |
5 |
запис 66 внутрішніх регістрів, з 157 |
запис 27 внутрішніх регістрів, з 77 |
58 |
КУЦИХ Михайло |
19200 |
10 |
10 |
15 |
читання 67 внутрішніх регістрів, з 68 |
читання 26 внутрішніх регістрів, з 258 |
59 |
ЛОГВИНЕНКО Олександр |
9600 |
5 |
10 |
5 |
читання 68 внутрішніх регістрів, з 159 |
запис 25 внутрішніх регістрів, з 79 |
60 |
ЛОГВИНЕНКО Роман |
19200 |
10 |
10 |
15 |
запис 69 внутрішніх регістрів, з 70 |
запис 24 внутрішніх регістрів, з 260 |
61 |
МОСКАЛЕНКО Олександр |
9600 |
5 |
10 |
5 |
читання 70 внутрішніх регістрів, з 161 |
читання 23 внутрішніх регістрів, з 81 |
62 |
ОДНОРОГ Юрій |
19200 |
10 |
10 |
15 |
читання 71 внутрішніх регістрів, з 72 |
запис 22 внутрішніх регістрів, з 262 |
63 |
ПАРОВЕНКО Максим |
9600 |
5 |
10 |
5 |
запис 72 внутрішніх регістрів, з 163 |
запис 21 внутрішніх регістрів, з 83 |
64 |
ПЮРО Павло |
19200 |
10 |
10 |
15 |
читання 73 внутрішніх регістрів, з 74 |
читання 20 внутрішніх регістрів, з 264 |
65 |
РЕДЧИЦЬ Богдан |
9600 |
10 |
10 |
15 |
читання 74 внутрішніх регістрів, з 165 |
запис 19 внутрішніх регістрів, з 85 |
66 |
РЕМЕЗ Роман |
19200 |
5 |
10 |
5 |
запис 75 внутрішніх регістрів, з 76 |
запис 18 внутрішніх регістрів, з 266 |
67 |
САМОЙЛЕНКО Дмитро |
9600 |
10 |
10 |
15 |
читання 76 внутрішніх регістрів, з 167 |
читання 17 внутрішніх регістрів, з 87 |
68 |
СУРЖЕНКО Павло |
19200 |
5 |
10 |
5 |
читання 77 внутрішніх регістрів, з 78 |
запис 16 внутрішніх регістрів, з 268 |
69 |
ТІЩЕНКО Олександр |
9600 |
10 |
10 |
15 |
запис 78 внутрішніх регістрів, з 169 |
запис 15 внутрішніх регістрів, з 89 |
70 |
ШАЛЮТА Олег |
19200 |
5 |
10 |
5 |
читання 79 внутрішніх регістрів, з 80 |
читання 14 внутрішніх регістрів, з 270 |
71 |
ШЕВЧЕНКО Дмитро |
9600 |
10 |
10 |
15 |
читання 80 внутрішніх регістрів, з 171 |
запис 13 внутрішніх регістрів, з 91 |
72 |
ЯКОВЕНКО Антон |
19200 |
5 |
10 |
5 |
запис 81 внутрішніх регістрів, з 82 |
запис 12 внутрішніх регістрів, з 272 |
73 |
ЯНЮК Олександр |
9600 |
10 |
10 |
15 |
читання 82 внутрішніх регістрів, з 173 |
читання 11 внутрішніх регістрів, з 93 |