Инициализация слейва в сети modbus RTU
- Войдите на сайт для отправки комментариев
Вс, 09/04/2017 - 12:20
Помогите хотя бы составить алгоритм действий как можно проверять мастером слейв на предмет того, в сети он или нет. Мое видение такое.
Слейв периодически записывает в какой-нибудь регистр модбаса, то «0», то «1». Мастер периодически считывает этот регистр например сериями по 4 раза. В одной серии каждое считывание записывается в свою переменную. По окончании серии (4—ое считывание) переменные сравниваются на предмет равенства между собой, и если они равны друг другу (все ноли либо все единицы) то слейв не отзывается. Если разные - он дергает регистром, значит в сети.
Но мне кажется это громоздко, так сказать будет поговнокодски. Опытные, подскажите как проще сделать?
Достаточно послать любой запрос. Если случился любой error - не в сети. Если ответ пришёл - в сети. На любой запрос библиотека возвращает статус. Его надо проверять. Этого достаточно.
Каждый слейв с точки зрения МК мастера должен быть объектом, который описан как класс или как структура. Скорее у мастера даже есть указатель на обьект Cl_slave * Slave1, Slave2; И вот в МК мастера идет команда Slave1->Ready(); И если возвращает 0, то слев тю-тю . А вот если 1 то он в сети. И разумеется в методе byte Cl_slave::Ready() или идет прямой запрос по сети и ждет ответ. Разумеется это тормозит процессор. Или скорее всего раз в минуту мастер посылает общий запрос по сети "Кто живой". И заносит в объекты Slave1, Slave2 их ответы. Это ускоряет работу МК вцелом.
ПС: Что тут придумавать . Вот посмотрите работу Serial.available();
спасибо, ваш ответ направил меня на поиск туда, с помощью чего я создаю модбас - программа FLprog. Оказывается автор проги всё уже сделал, для этого есть специальная функция
вот что получилось. работает
И что это за письменное народное творчество- называемое ФИГ-ВАМ. И куда эту простынь засунуть.
Я размечтался что будет так. А получилось как в сказке.
Как смог так и сделал. Опыта мало. Надо было с детства начинать программировать. А простыню можно во вкладку отдельную сложить. ВигВа... Модбас называется.
Так это не вкладка будет, а библиотека. Вот я поэтому вам подсказываю куда двигать. Вот посмотрите вариант Пакет здесь https://yadi.sk/d/WaW7iUgj3GPUvp
Головной файл выложу если интересно кому