Интерфейс RS-485 протокол MODBUS RTU.
Re: Интерфейс RS-485 протокол MODBUS RTU.
Ответил в личку...
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Интерфейс RS-485 протокол MODBUS RTU.
Хорошо.
У меня сейчас нет под рукой МВА8, но зато валяется ОВЕН ПЛК110-30 с интерфейсом MODBUS. Попробую на нем собрать макет для проверки.
У меня сейчас нет под рукой МВА8, но зато валяется ОВЕН ПЛК110-30 с интерфейсом MODBUS. Попробую на нем собрать макет для проверки.
Re: Интерфейс RS-485 протокол MODBUS RTU.
было бы хорошо...Mr.Kubikus писал(а):Хорошо.
У меня сейчас нет под рукой МВА8, но зато валяется ОВЕН ПЛК110-30 с интерфейсом MODBUS. Попробую на нем собрать макет для проверки.
Re: Интерфейс RS-485 протокол MODBUS RTU.
Что нибудь решилось по этому вопросу?Mr.Kubikus писал(а):можем попробовать почтой РФ.
Re: Интерфейс RS-485 протокол MODBUS RTU.
Получил Ваш преобразователь. Спасибо! Причем вместе с ним приехала и китайская посылка.
Итак, в наличии: преобразователи(Ваш и китайский), ардуино нано, мега про-микро, модуль аналогового ввода МВА8, пара относительно ровных рук .
Что дальше?
Итак, в наличии: преобразователи(Ваш и китайский), ардуино нано, мега про-микро, модуль аналогового ввода МВА8, пара относительно ровных рук .
Что дальше?
Re: Интерфейс RS-485 протокол MODBUS RTU.
Mr.Kubikus, нужна схема подключения ардуины к МВА8 через плату с драйвером RS485 из Вашего магазина.
Далее программная сторона.
Вот настройки порта МВА8: как с ним связаться через ардуину
Вот адреса ячеек: Как это все уместить в скетче?
Далее программная сторона.
Вот настройки порта МВА8: как с ним связаться через ардуину
Вот адреса ячеек: Как это все уместить в скетче?
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Интерфейс RS-485 протокол MODBUS RTU.
Привет! Сегодня есть немного свободного времени. Попробую собрать проект.
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Интерфейс RS-485 протокол MODBUS RTU.
Привет!
Все получилось. Работает чтение данных из ПЛК c помощью функции 3-READ_HOLDING_REGISTERS.
Подключение Arduino к драйверу RS485 по следующей схеме:
TX1-> RX-I
RX1-> TX-O
D2-> RTS
+5V-> VCC
GND->GND
Режим RTU. Настройки порта 9600 8N1.
Если чего не понятно - задавайте вопросы. Попробуем разобраться вместе.
Все получилось. Работает чтение данных из ПЛК c помощью функции 3-READ_HOLDING_REGISTERS.
Подключение Arduino к драйверу RS485 по следующей схеме:
TX1-> RX-I
RX1-> TX-O
D2-> RTS
+5V-> VCC
GND->GND
Режим RTU. Настройки порта 9600 8N1.
Код: Выделить всё
/*
PACPAC 2015
Плата: Arduino Leonardo
В этом примере демонстрируется обмен данными по протоколу Modbus RTU
между контроллерами Arduino и ОВЕН ПЛК 110-24.30.Р-М с использованием
библиотеки SimpleModbusMaster (https://code.google.com/p/simple-modbus/)
Arduino выступает в роли ведущего (master) устройства, а ПЛК в роле подчиненного (slave).
Плата Arduino подключена к ПЛК через драйвер RS485 (http://pacpac.ru/product/bob-10124-rs-485-breakout/).
Настройки последовательного интерфейса: RTU, 9600, 8N1.
В этом примере объект packet[0] используется для чтения одного слова данных из регистра с адресом 0
c помощью функции MODBUS #3-READ_HOLDING_REGISTERS. Полученное значение затем используется
для управления светодиодом на выходе Arduino 13
В ПЛК загруженна программа, которая циклически увеличивает на 1 содержимое ячейки
памяти с адресом %MB0 в диапазоне 0-255 и затем переносит младший бит %MX0.0 в ячейку %QW6.1.0.
Длительность паузы Tц=1 с
Подробное описание библиотеки находится в файле SimpleModbusMasterManual.pdf
*/
#include <SimpleModbusMaster.h>
// Настройки интерфейса
#define baud 9600 // Скорость
#define timeout 1000 // Длительность ожидание ответа
#define polling 200 // Длительность паузы между запросами
#define retry_count 10 // Количество попыток обмена до отключения канала
// Выход контроллера для управления направлением драйвера
#define TxEnablePin 2
// Выход для управления светодиодом
#define LED 13
// Количество регистров на стороне ведущего устройства для хранения данных
#define TOTAL_NO_OF_REGISTERS 1
// Простой способ подсчета количтества создаваемых объектов packet.
// TOTAL_NO_OF_PACKETS обновляется автоматически.
enum
{
PACKET1,
TOTAL_NO_OF_PACKETS // Этот элемент должен быть последним
};
Packet packets[TOTAL_NO_OF_PACKETS];
unsigned int regs[TOTAL_NO_OF_REGISTERS];
void setup()
{
// Инициализируем каждый обект packet
modbus_construct(&packets[PACKET1], 1, READ_HOLDING_REGISTERS, 0, 1, 0);
// Инициализируем конечный автомат протокола MODBUS
modbus_configure(&Serial1, baud, SERIAL_8N1, timeout, polling, retry_count, TxEnablePin, packets, TOTAL_NO_OF_PACKETS, regs);
// Инициализируем последовательный порт для отладочного вывода
Serial.begin(115200);
// Настраиваем порт для светодиода
pinMode(LED, OUTPUT);
digitalWrite(LED, LOW);
}
void loop()
{
modbus_update();
Serial.println(regs[0]);
if (regs[0] == 1) {
digitalWrite(LED, HIGH);
} else {
digitalWrite(LED, LOW);
}
}
Re: Интерфейс RS-485 протокол MODBUS RTU.
А как скачать библу оттуда?с использованием библиотеки SimpleModbusMaster (https://code.google.com/p/simple-modbus/)
___________________________________
Скачал через гугл-диск...