Про Modbus
Модератор: immortal
- shemnik69
- Сообщения: 590
- Зарегистрирован: Пн дек 24, 2012 3:01 pm
- Откуда: Саратов Saratov
- Благодарил (а): 67 раз
- Поблагодарили: 63 раза
Про Modbus
Наткнулся на довольно интересную статью: http://arduino-kit.com.ua/instruction/a ... odbus.html
Описано все, в простой и понятной форме, приведены примеры, и куча еще разных полезных примеров и готовых скетчей и програм. Короче полезный материал.
Описано все, в простой и понятной форме, приведены примеры, и куча еще разных полезных примеров и готовых скетчей и програм. Короче полезный материал.
-
- Сообщения: 136
- Зарегистрирован: Вс июл 14, 2013 2:42 pm
- Благодарил (а): 6 раз
- Поблагодарили: 27 раз
Re: Про Modbus
Ничего нового. Хотя для новичков самое то. А ещё через один регистр можно управлять кучей дискретных выходов.. если брать за состояние выхода каждый отдельный бит регистра. и того одним регистром можно описать 16 состояний.
- shemnik69
- Сообщения: 590
- Зарегистрирован: Пн дек 24, 2012 3:01 pm
- Откуда: Саратов Saratov
- Благодарил (а): 67 раз
- Поблагодарили: 63 раза
Re: Про Modbus
так про то и речь. Не все спецы уровня магистра Ёды,
поэтому небольшой ликбез и основные понятия расписаные и показанные просто и понятно всегда полезены. Также указана интересная библиотека. да и еще на эом сайте я накопал много интересных и полезных скетчей и готового кода (для коллекции).

-
- Сообщения: 265
- Зарегистрирован: Пт дек 26, 2014 1:58 pm
- Благодарил (а): 33 раза
- Поблагодарили: 24 раза
Re: Про Modbus
Ребята, а расшифруйте эту строчку из статьи, пожалуйста:
modbus_configure(&Serial, 9600, SERIAL_8N2, 1, 13, HOLDING_REGS_SIZE, holdingRegs);// Конфигурируем MODBUS
modbus_configure(&Serial, 9600, SERIAL_8N2, 1, 13, HOLDING_REGS_SIZE, holdingRegs);// Конфигурируем MODBUS
-
- Сообщения: 136
- Зарегистрирован: Вс июл 14, 2013 2:42 pm
- Благодарил (а): 6 раз
- Поблагодарили: 27 раз
Re: Про Modbus
Ну так в скетче ж написано все )
это строка конфигурации модуля modbus
&Serial - это указатель на последовательный порт(видимо..надо смотреть библиотеку)
9600 - скорость передачи в сети
SERIAL_8N2 - параметры порта 8 бит данных, без бита четности и 2 бита окончания
HOLDING_REG_SIZE - это размер массива holdingRegs который был объявлен выше и который используется как holdingRegister в программе ниже
это строка конфигурации модуля modbus
&Serial - это указатель на последовательный порт(видимо..надо смотреть библиотеку)
9600 - скорость передачи в сети
SERIAL_8N2 - параметры порта 8 бит данных, без бита четности и 2 бита окончания
HOLDING_REG_SIZE - это размер массива holdingRegs который был объявлен выше и который используется как holdingRegister в программе ниже
-
- Сообщения: 265
- Зарегистрирован: Пт дек 26, 2014 1:58 pm
- Благодарил (а): 33 раза
- Поблагодарили: 24 раза
Re: Про Modbus
Там еще параметры имеются...Geban писал(а): это строка конфигурации модуля modbus
&Serial - это указатель на последовательный порт(видимо..надо смотреть библиотеку)
9600 - скорость передачи в сети
SERIAL_8N2 - параметры порта 8 бит данных, без бита четности и 2 бита окончания
HOLDING_REG_SIZE - это размер массива holdingRegs который был объявлен выше и который используется как holdingRegister в программе ниже

Просто мне все никак не дает покоя проблема именно первичной инициализации связи со счетчиками Меркурий по rs485. Там правда не modbus в чистом виде, а некая своя помесь...

-
- Сообщения: 136
- Зарегистрирован: Вс июл 14, 2013 2:42 pm
- Благодарил (а): 6 раз
- Поблагодарили: 27 раз
Re: Про Modbus
Специально скачал библиотеку по ссылке..
нигде в коде нет объявления функции modbus_update_comms()
Либо в архиве не та версия, либо автор статьи чегото накосячил.
А так я был прав.
Вот заголовочник библиотеки
нигде в коде нет объявления функции modbus_update_comms()
Либо в архиве не та версия, либо автор статьи чегото накосячил.
А так я был прав.
Вот заголовочник библиотеки
Код: Выделить всё
#include "Arduino.h"
// function definitions
unsigned int modbus_update();
void modbus_configure(HardwareSerial *SerialPort,
long baud,
unsigned char byteFormat,
unsigned char _slaveID,
unsigned char _TxEnablePin,
unsigned int _holdingRegsSize,
unsigned int* _regs);
#endif
- Рейтинг: 1.16%
- shemnik69
- Сообщения: 590
- Зарегистрирован: Пн дек 24, 2012 3:01 pm
- Откуда: Саратов Saratov
- Благодарил (а): 67 раз
- Поблагодарили: 63 раза
Re: Про Modbus
У Меркурия не Modbus. Там протокол обмена на основе Rs485 сети, но вот сам протокол не раскрывают. Причины простые. данные учета электроэнергии, это информация как коммерческого так и иного характера, также в протоколе есть парольный доступ (программы конфигураторы например мгут менять некоторый даные).
Считать сами данные через эмулирование средствами PHP протокола можно, но вот другие функции скорее всего не получатся.
На Ab-log.ru есть статья про чтеие данных с Меркуриев.
Есть еще вот тут:http://cyber-place.ru/showthread.php?t=1307
Посмотрите может чего интересного найдете.
Сам использую данные счетчика (CE) , но через программу конфигуратор. А промежуточные даные (по фазные мощности (условно), напряжение) через самодельный аналог энергомонитора (описаие в данной ветке).
Считать сами данные через эмулирование средствами PHP протокола можно, но вот другие функции скорее всего не получатся.
На Ab-log.ru есть статья про чтеие данных с Меркуриев.
Есть еще вот тут:http://cyber-place.ru/showthread.php?t=1307
Посмотрите может чего интересного найдете.
Сам использую данные счетчика (CE) , но через программу конфигуратор. А промежуточные даные (по фазные мощности (условно), напряжение) через самодельный аналог энергомонитора (описаие в данной ветке).
- Рейтинг: 1.16%
-
- Сообщения: 265
- Зарегистрирован: Пт дек 26, 2014 1:58 pm
- Благодарил (а): 33 раза
- Поблагодарили: 24 раза
Re: Про Modbus
Спасибо, я как бы в курсе...
А описание протокола есть и довольно подробное. Я себе все настроил и работает. Проблема только с начальной инициализацией порта. Т.е. после перезагрузки компа нужно один раз запустить родную прогу и связаться с любым счетчиком. Потом прогу можно закрыть. После этого я без проблем связываюсь с любым счетчиком, могу читать и писать любые данные. Видимо кроме основных параметров порта(скорость, четность и т.д.), которые есть в интерфейсе программы и которые я соответственно настраиваю и у себя в скрипте она еще какие-то параметры порта настраивает по умолчанию.

- shemnik69
- Сообщения: 590
- Зарегистрирован: Пн дек 24, 2012 3:01 pm
- Откуда: Саратов Saratov
- Благодарил (а): 67 раз
- Поблагодарили: 63 раза
Re: Про Modbus
Скорость какую ставите. Из опыта более 2400 не работает либо работает через пень колоду. Когда конфигуратор поставил пол-дня убил искал что да как пока не поменял на 2400 после этого хоть что с ним делай, читает как нужно.