RS-485 на Ардуино

Обсуждаем Arduino, Raspberry Pi и другие электронные компоненты и проекты DIY
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1020
Зарегистрирован: 22 окт 2010, 23:57

Re: RS-485 на Ардуино

Сообщение Mr.Kubikus »

В принципе, в тех исходниках, что вы привели, уже все имеется для решения вашей задачи.

В приведенных примерах используются библиотеки SimpleModbusMaster и SimpleModbusSlave. Функции этих библиотек выполняют подготовку пакетов Modbus, отправку, получение и контроль ошибок в полученных данных. Пользователю остается только лишь указать в каких ячейках памяти будут храниться данные для отправки и полученные данные.

В примере для ведущего устройства - это следующие массивы:

Код: Выделить всё

unsigned int readRegs [1];
unsigned int writeRegs [1];
В примере для подчиненного устройства:

Код: Выделить всё

unsigned int holdingRegs[HOLDING_REGS_SIZE];
Причем в последнем случае ячейки массива holdingRegs используются следующим образом:
holdingRegs[0] - сюда слейв помещаетс результат из регистра АЦП. Мастер считывает его используя команду READ_HOLDING_REGISTERS (3) протокола Modbus.
holdingRegs[1] - сюда мастер записывает значение PWM используя команду PRESET_MULTIPLE_REGISTERS (16) протокола Modbus. Слейв использует это значение для управления яркостью светодиода.

Вы можете изменить исходник подчиненного устройства так, чтобы вместо данных из регистра АЦП в holdingRegs[0] записывалось значение, соответствующие состоянию переключателя на входе, к которому подключен переключатель.

В исходнике ведущего устройства надо добавить проверку значения в readRegs[0]. В зависимости от результата проверки включать или выключать выход, к которому подключен светодиод.

Вроде все.
С уважением, Григорий
GitHub FB ВК
Ответить