Страница 1 из 2

Про Modbus

Добавлено: Ср дек 23, 2015 2:29 pm
shemnik69
Наткнулся на довольно интересную статью: http://arduino-kit.com.ua/instruction/a ... odbus.html
Описано все, в простой и понятной форме, приведены примеры, и куча еще разных полезных примеров и готовых скетчей и програм. Короче полезный материал.

Re: Про Modbus

Добавлено: Ср дек 23, 2015 5:42 pm
Geban
Ничего нового. Хотя для новичков самое то. А ещё через один регистр можно управлять кучей дискретных выходов.. если брать за состояние выхода каждый отдельный бит регистра. и того одним регистром можно описать 16 состояний.

Re: Про Modbus

Добавлено: Ср дек 23, 2015 9:34 pm
shemnik69
так про то и речь. Не все спецы уровня магистра Ёды, :D поэтому небольшой ликбез и основные понятия расписаные и показанные просто и понятно всегда полезены. Также указана интересная библиотека. да и еще на эом сайте я накопал много интересных и полезных скетчей и готового кода (для коллекции).

Re: Про Modbus

Добавлено: Чт дек 24, 2015 7:51 am
Victor_S
Ребята, а расшифруйте эту строчку из статьи, пожалуйста:
modbus_configure(&Serial, 9600, SERIAL_8N2, 1, 13, HOLDING_REGS_SIZE, holdingRegs);// Конфигурируем MODBUS

Re: Про Modbus

Добавлено: Чт дек 24, 2015 8:57 am
Geban
Ну так в скетче ж написано все )
это строка конфигурации модуля modbus
&Serial - это указатель на последовательный порт(видимо..надо смотреть библиотеку)
9600 - скорость передачи в сети
SERIAL_8N2 - параметры порта 8 бит данных, без бита четности и 2 бита окончания
HOLDING_REG_SIZE - это размер массива holdingRegs который был объявлен выше и который используется как holdingRegister в программе ниже

Re: Про Modbus

Добавлено: Чт дек 24, 2015 3:56 pm
Victor_S
Geban писал(а): это строка конфигурации модуля modbus
&Serial - это указатель на последовательный порт(видимо..надо смотреть библиотеку)
9600 - скорость передачи в сети
SERIAL_8N2 - параметры порта 8 бит данных, без бита четности и 2 бита окончания
HOLDING_REG_SIZE - это размер массива holdingRegs который был объявлен выше и который используется как holdingRegister в программе ниже
Там еще параметры имеются...;) и зачем параматры порта и скорости дважды(см.следующую строчку). Что же делает эта функция?
Просто мне все никак не дает покоя проблема именно первичной инициализации связи со счетчиками Меркурий по rs485. Там правда не modbus в чистом виде, а некая своя помесь...:) Родная прога от счетчиков что-то прописывает в порт помимо основных параметров, вот и гадаю что...

Re: Про Modbus

Добавлено: Чт дек 24, 2015 5:09 pm
Geban
Специально скачал библиотеку по ссылке..
нигде в коде нет объявления функции 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
 

Re: Про Modbus

Добавлено: Чт дек 24, 2015 10:45 pm
shemnik69
У Меркурия не Modbus. Там протокол обмена на основе Rs485 сети, но вот сам протокол не раскрывают. Причины простые. данные учета электроэнергии, это информация как коммерческого так и иного характера, также в протоколе есть парольный доступ (программы конфигураторы например мгут менять некоторый даные).
Считать сами данные через эмулирование средствами PHP протокола можно, но вот другие функции скорее всего не получатся.
На Ab-log.ru есть статья про чтеие данных с Меркуриев.
Есть еще вот тут:http://cyber-place.ru/showthread.php?t=1307
Посмотрите может чего интересного найдете.
Сам использую данные счетчика (CE) , но через программу конфигуратор. А промежуточные даные (по фазные мощности (условно), напряжение) через самодельный аналог энергомонитора (описаие в данной ветке).

Re: Про Modbus

Добавлено: Пт дек 25, 2015 8:28 am
Victor_S
Спасибо, я как бы в курсе...;) А описание протокола есть и довольно подробное. Я себе все настроил и работает. Проблема только с начальной инициализацией порта. Т.е. после перезагрузки компа нужно один раз запустить родную прогу и связаться с любым счетчиком. Потом прогу можно закрыть. После этого я без проблем связываюсь с любым счетчиком, могу читать и писать любые данные. Видимо кроме основных параметров порта(скорость, четность и т.д.), которые есть в интерфейсе программы и которые я соответственно настраиваю и у себя в скрипте она еще какие-то параметры порта настраивает по умолчанию.

Re: Про Modbus

Добавлено: Пт дек 25, 2015 10:53 am
shemnik69
Скорость какую ставите. Из опыта более 2400 не работает либо работает через пень колоду. Когда конфигуратор поставил пол-дня убил искал что да как пока не поменял на 2400 после этого хоть что с ним делай, читает как нужно.