![]() |
![]() |
#5 |
Senior Member
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1605 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Мои эксперименты с Modbus
В arduino залита следующая программа: Код:
/* Test Modbus RTU - Arduino Для простоты и уменьшения потребления памяти поддерживается только две следующие функции Modbus: - read holding registers (0x03) - write multiple registers (0x10) */ #include <SoftwareSerial.h> #include <Modbusino.h> const int RL0 = 22; const int RL1 = 24; const int RL2 = 26; const int RL3 = 28; const int rl_arr[] = {RL0,RL1,RL2,RL3}; const int regs = 10; // количество регистров const int ID_slave = 25; uint16_t tab_reg[regs]; //задаем массив регистров // Инициализация SLAVE, идентификатор (адрес) в сети ID = 25 ModbusinoSlave modbusino_slave(ID_slave); // на цифр. выходы сразу записываем значение регистров // любое значение > 0 это HIGH, 0 - LOW void SetRelay() { int i; for (i = 0; i < 4; i++) { digitalWrite(rl_arr[i], tab_reg[i]); } } void setup() { modbusino_slave.setup(115200); pinMode(RL0, OUTPUT); // установка цифровых вх/вых в режим выхода pinMode(RL1, OUTPUT); pinMode(RL2, OUTPUT); pinMode(RL3, OUTPUT); } void loop() { modbusino_slave.loop(tab_reg, regs); SetRelay(); tab_reg[9] = analogRead(A0); //запись аналогового значения в 9-ый регистр } здесь я щелкаю реле а здесь читаю аналоговый вход На время эксперимента я специально подключился с помощью стороннего преобразователя TTL-USB к serial порту RX0, TX0 т.к. планирую сделать TTL-RS485 преобразователь на MAX485. Чтобы все было "по взрослому" ![]() вот планируемая схема ttl-rs485.zip Последний раз редактировалось andr128; 17.12.2012 в 05:50. |
![]() |
![]() |
Здесь присутствуют: 9 (пользователей: 0 , гостей: 9) | |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|