MODBUS

Контролер підтримує протоколи MODBUS RTU та MODBUS TCP згідно специфікацій, опублікованих на сайті modbus.org.

Підтримуються функції 1, 2, 3, 4, 5, 6, 15 та 16.

Фізичне з'єднання за мережею RS485 здійснюється за топологією "шина":

Кожен порт RS485 може бути запрограмований незалежно для роботи в одному з двох режимів: Slave або Master. У специфікації MODBUS ці режими називаються Server і Client, відповідно.

Порт Ethernet підтримує лише протокол MODBUS TCP Server. Можна ввімкнути режим трансляції запитів з TCP до RS485 (режим шлюзу RTU/TCP). У цьому режимі контролер перенаправляє всі запити, у яких Slave ID не дорівнює нулю, на відповідний порт RS485 (він повинен бути налаштований на режим Master).

Slave (ведений, server)

В цьому режимі контролер виступає в ролі сервера, який відповідає на запити. Використовуйте режим Slave, наприклад, якщо плануєте підключати контролер до SCADA чи BMS. Також у цьому режимі можливе налаштування контролера та запис програми.

У мережі RS485 зазвичай існує кілька провідних пристроїв, кожен з яких має унікальний мережевий номер (ідентифікатор, Slave ID). Для кожного порту RS485 визначається окремий мережевий номер (змінна RS485_X_Slave_ID). Мережеві номери та інші параметри портів можна налаштувати через системні змінні та через системні MODBUS-реєстри, описані в Інструкції з експлуатації.

Якщо порт працює в режимі Slave, то йому призначається певний профіль MODBUS. Профіль - це наперед налаштовані таблиці регістрів (Inputs, Coils, IR, HR). Передбачено 3 профілі, тобто існує можливість призначити різні таблиці регістрів для трьох різних портів. Один і той же профіль можна використовувати для різних портів. У цьому випадку через ці порти будуть доступні одні й ті ж таблиці регістрів.

Master (ведучий, client) - только для портов RS485

У цьому режимі контролер є провідним пристроєм у мережі. Він надсилає запити веденим пристроям (серверам), тобто є для них клієнтом. Режим Master використовується, коли до контролера необхідно підключити додаткові модулі вводу/виводу або інші пристрої, якими він повинен керувати (наприклад, частотні перетворювачі).

У мережі RS485 може бути лише один Master-пристрій.

Якщо порт контролера запрограмований на роботу в режимі Master, то для запису нової програми через цей порт контролер повинен бути переведений в режим INIT. Докладніше про це написано в розділі "Запис програми".

Алгоритм роботи порту в режимі Master

Конфігурація порту містить список MODBUS-запитів. Ці запити виконуються по черзі, починаючи з першого. Після виконання останнього запиту цикл повторюється.

Кожен запит має такі параметри:

Опціонально для кожного запиту можна вибрати такі змінні:

Якщо змінна Дозвіл обрана, то запит виконується тільки якщо значення цієї змінної дорівнює 1 у той момент, коли настала черга виконати цей запит. Якщо настала черга даного запиту і Дозвіл = 1, то починається виконання цього запиту, а в змінну Дозвіл записується 0, тобто Дозвіл скидається автоматично при кожному виконанні запиту. Автоскидання дозволяє точно керувати запитами. Наприклад, організувати одноразове виконання запиту за якоюсь подією.

Якщо змінна Дозвіл не вибрана, то запит виконується завжди.

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

Змінна Лічильник помилок збільшується на 1 після кожного невдалого запиту.

Ethernet

У фізичному інтерфейсі Ethernet є кілька програмних портів MODBUS TCP. Кількість цих програмних портів дорівнює кількості портів RS485, передбачених у цій моделі контролера. Декілька програмних портів зроблено для того, щоб можна було організувати шлюз TCP/RTU (див. нижче).

Через кожен програмний порт контролер дозволяє прийняти два одночасні TCP-з'єднання. При спробі підключити третє з'єднання, перше з існуючих з'єднань розривається і нове з'єднання підключається. Це відповідає логіці, описаній у документі "MODBUS MESSAGING ON TCP/IP IMPLEMENTATION GUIDE V1.0b".

Шлюз TCP/RTU

Якщо в параметрах програмного порту MODBUS TCP встановлено параметр "Шлюз у RS485", то на даному програмному порту буде активовано режим шлюзу TCP/RTU. Цей прапорець доступний лише в тому випадку, якщо відповідний порт RS485 налаштований на режим Master.

Шлюз TCP/RTU працює наступним чином:

Коли на порт MODBUS TCP надходить запит з полем Slave ID не рівним нулю, цей запит перетворюється на формат MODBUS RTU і відправляється у відповідний порт RS485 (порт з тим самим індексом, що і даний програмний порт TCP). При отриманні відповіді, ця відповідь перетворюється з формату MODBUS RTU у формат MODBUS TCP і надсилається TCP-клієнту, який надіслав вихідний запит. Більш детально робота шлюзу та можливі повідомлення про помилки описані у документі "MODBUS MESSAGING ON TCP/IP IMPLEMENTATION GUIDE V1.0b".

Якщо параметр Slave ID у TCP-запиті дорівнює нулю, то контролер трактує цей запит як "свій" і відповідає на нього відповідно до обраного профілю MODBUS. Тобто надає доступ до своїх змінних через відповідні таблиці регістрів (якщо в налаштуваннях TCP-порту прапор "Шлюз у RS485" не встановлений, то Slave ID ігнорується і контролер всі запити інтерпретує як "свої").

Перенаправлення запитів між портами RS485

Для порту RS485, налаштованого на режим Slave, можна увімкнути режим пересилання запитів до іншого порту RS485, який налаштовано на режим Master. За допомогою цієї функції можна, наприклад, організувати доступ кількох Master-пристроїв до Slave-пристроїв у мережі RS485.

Якщо контролер отримує запит через Slave-порт і Slave ID у цьому запиті більше, ніж Slave ID, присвоєне даному порту, цей запит транслюється в інший порт RS485 (Master-порт), а відповідь передається назад у вихідний Slave-port.