Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > Открытый проект умного дома

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.11.2012, 14:12   #5
andr128
Senior Member
 
Аватар для andr128
 
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1605
andr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond repute
По умолчанию тестирование Modbus на Arduino

Мои эксперименты с Modbus
Нажмите на изображение для увеличения
Название: arduino_modbus.jpg
Просмотров: 1086
Размер:	589.6 Кб
ID:	610

В 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-ый регистр
}
Для управления я использовал QModbus

здесь я щелкаю реле
Нажмите на изображение для увеличения
Название: write_modbus.png
Просмотров: 1028
Размер:	17.3 Кб
ID:	612

а здесь читаю аналоговый вход
Нажмите на изображение для увеличения
Название: read_modbus.png
Просмотров: 969
Размер:	17.2 Кб
ID:	611

На время эксперимента я специально подключился с помощью стороннего преобразователя TTL-USB к serial порту RX0, TX0 т.к. планирую сделать TTL-RS485 преобразователь на MAX485.
Чтобы все было "по взрослому"

вот планируемая схема ttl-rs485.zip

Последний раз редактировалось andr128; 17.12.2012 в 05:50.
andr128 вне форума   Ответить с цитированием
 


Здесь присутствуют: 9 (пользователей: 0 , гостей: 9)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 13:20. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика