Тел. (495) 972-27-12

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

Обсуждаем Arduino, Raspberry Pi и другие электронные компоненты и проекты DIY

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

Сообщение Mr.Kubikus » 17 июн 2017, 15:01

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

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

В примере для ведущего устройства - это следующие массивы:
Code: [Выделить всё] [Expand/Collapse]
  1. unsigned int readRegs [1];
  2. unsigned int writeRegs [1];
GeSHi © Codebox Plus


В примере для подчиненного устройства:
Code: [Выделить всё] [Expand/Collapse]
  1. unsigned int holdingRegs[HOLDING_REGS_SIZE];
GeSHi © Codebox Plus

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

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

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

Вроде все.
С уважением, Григорий
GitHub FB ВК TW
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
 
Сообщения: 875
Изображения: 49
Зарегистрирован: 22 окт 2010, 23:57
Откуда: Москва

Пред.

Вернуться в Arduino и Ко. ♥♥♥



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1