RS-485 Modbus Raspberry

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
Rhadosvet88
Сообщения: 9
Зарегистрирован: 02 сен 2015, 17:43

RS-485 Modbus Raspberry

Сообщение Rhadosvet88 » 02 сен 2015, 17:51

Добрый день!
Реализую проект умного дома на основе Raspberry Pi с использованием переходника http://www.ebay.com/itm/381097954687?_t ... EBIDX%3AIT
Для управления нагрузками выбрал модуль http://www.ebay.com/itm/161791895138?_t ... EBIDX%3AIT
Он управляется по протоколу Modbus RTU.
В Windows получается отправлять команды и управлять модулем.
Требуется прикрутить управление к Raspberry.
Сейчас уже установлен адаптер.
root@raspberrypi:~# lsusb
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 005: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter

Нашел несколько примеров на питоне для работы с modbus, но они довольно трудоемки для реализации.
Существует ли возможность управлять по Modbus используя стандартные процедуры вывода Linux, например echo > /dev/ttyUSB0 ?

Fox
Сообщения: 153
Зарегистрирован: 05 авг 2014, 11:01

Re: RS-485 Modbus Raspberry

Сообщение Fox » 02 сен 2015, 22:02

Извиняюсь что не в тему, но есть вопрос - а использование RS485 и дополнительного модуля это принципиально? У Raspberry ведь можно для управления нагрузками задействовать собственные порты GPIO, добавив обычный релейный модуль.
Или у Вас просто большое расстояние между Raspberry и точками коммутации нагрузок?

Я для похожих целей тоже делал отдельный контроллер с входами/выходами, подключенный к "малине" через RS485. Правда, использовал "самописный" протокол :)

Rhadosvet88
Сообщения: 9
Зарегистрирован: 02 сен 2015, 17:43

Re: RS-485 Modbus Raspberry

Сообщение Rhadosvet88 » 03 сен 2015, 09:30

Проект подразумевается как научно-познавательный. Самому захотелось изучить протокол Modbus. К портам GPIO будут подключены датчики.

Fox
Сообщения: 153
Зарегистрирован: 05 авг 2014, 11:01

Re: RS-485 Modbus Raspberry

Сообщение Fox » 03 сен 2015, 16:10

Я тоже подумываю заменить свой "самописный" протокол стандартным Modbus RTU.
Кстати, для "малины" у меня используюется фреймворк WebIOPi, специально "заточенный" для работы с различными датчиками и последовательным портом.

shemnik69
Сообщения: 338
Зарегистрирован: 20 дек 2012, 15:52
Откуда: Саратов Saratov
Контактная информация:

Re: RS-485 Modbus Raspberry

Сообщение shemnik69 » 07 сен 2015, 17:53

Если использовать ModBus c Raspberri то самым простым и минимально затратным будет использование OpenHAB.
Там уже есть все необходимое и полно всяких примеров как увязать конкретное железо с самой системой. Я тоже долго мудрил с разными протоколами обмена и понятное дело все равно пришел к тому что и так понятно т.е Мodbus. самое главное что основные библиотеки свободны и если скажем контроллеры на Atmega (8-16-328) то идеально подходит библиотеки Arduino.
Также библиотеки берут на себя саму черновую работу: пересылка контрольные суммы и тд. HTTP конечно лучше но дороже. Также отлично работает TCP ModBus.
Еще хочу отметить что для простых контроллеров, типа опроса датчиков температуры или контактных (1/0) да и прочих, где выходные параметры приведены к целочисленному выражению этот протокол самое то. Но конечно он без мастера сети "умирает" :D
Во вложении печатная плата самодельного такого контроллера под Atmega 168 328 он опрашивает 6 контактных датчиков (с опто развязкой) 4 датчика 1-Ware (DS18b20) установлена подтяжка линии резистором 4.7 кОм. Данные температуры при выводе умножены на 100 для того чтобы привести к целому значению (убрать запятую) и потом уже обрабатывается на сервере. И также имеет 4 опто развязанные выходные порты для управления внешними силовыми ключами (реле симисторы и тп.) Плата разведена под герметичный бокс от линий RS485 (типовой бокс могу потом фотку приложить) очень удобный и имеет выходные герметизированные проходы для кабелей UTP. Питание на него идет по UTP 6 жил +/- 12 в и одна пара сама А-В для RS485 протокола. контроллер размещен в надворной постройке и работает 24/7 и тд. с питанием от центрального блока. Датчики и прочие элементы подведены с использованием витой пары UTP. Есть еще несколько контроллеров с похожими свойствами но под конкретные размещения в устройствах. т. боксы герметичные и самодостаточные. Для улицы (но конечно внутри металлического шкафа). Будут вопросы подскажу.
Вложения
modbus_web_project03.zip.rar
(59.18 КБ) 739 скачиваний
SensorRelay_modbus_temp.rar
(1.68 КБ) 595 скачиваний
Плата контроллера Box485.rar
(72.95 КБ) 626 скачиваний
Последний раз редактировалось shemnik69 08 сен 2015, 17:57, всего редактировалось 1 раз.

shemnik69
Сообщения: 338
Зарегистрирован: 20 дек 2012, 15:52
Откуда: Саратов Saratov
Контактная информация:

Re: RS-485 Modbus Raspberry

Сообщение shemnik69 » 08 сен 2015, 17:52

Добавил скетч (поскольку контроллер по структуре Ардуино подобный) и необходимые библиотеки.

Fox
Сообщения: 153
Зарегистрирован: 05 авг 2014, 11:01

Re: RS-485 Modbus Raspberry

Сообщение Fox » 24 сен 2015, 00:41

Запустил на Raspberry Pi Modbus RTU через преобразователь USB/RS485
Использовал пакет minimalmodbus - http://minimalmodbus.readthedocs.org/en ... n-on-linux

Rhadosvet88
Сообщения: 9
Зарегистрирован: 02 сен 2015, 17:43

Re: RS-485 Modbus Raspberry

Сообщение Rhadosvet88 » 24 сен 2015, 19:35

Fox, а какой марки преобразователь?

Fox
Сообщения: 153
Зарегистрирован: 05 авг 2014, 11:01

Re: RS-485 Modbus Raspberry

Сообщение Fox » 25 сен 2015, 13:01

Rhadosvet88 писал(а):Fox, а какой марки преобразователь?
См. здесь - http://electromost.com/news/raspberry_p ... -05-07-129

Rhadosvet88
Сообщения: 9
Зарегистрирован: 02 сен 2015, 17:43

Re: RS-485 Modbus Raspberry

Сообщение Rhadosvet88 » 28 сен 2015, 14:47

Установил Webiopi, поменял порт usb0 = Serial device:ttyUSB0 baudrate:19200
При запуске питона выводит ошибку:
IOError: No communication with the instrument (no answer)
Адаптер использую именно такой как в статье

Fox
Сообщения: 153
Зарегистрирован: 05 авг 2014, 11:01

Re: RS-485 Modbus Raspberry

Сообщение Fox » 28 сен 2015, 15:05

Rhadosvet88 писал(а):Установил Webiopi, поменял порт usb0 = Serial device:ttyUSB0 baudrate:19200
При запуске питона выводит ошибку:
IOError: No communication with the instrument (no answer)
Адаптер использую именно такой как в статье
Yемного не понял про питон - у Вас на питоне написан скрипт для работы через serial? Если можно, опишите более подробно.

Rhadosvet88
Сообщения: 9
Зарегистрирован: 02 сен 2015, 17:43

Re: RS-485 Modbus Raspberry

Сообщение Rhadosvet88 » 28 сен 2015, 15:33

Вообще пытаюсь различными способами достучаться до контроллера.
Один из способов: установил библиотеку minimamodbus и работаю через нее:
import serial
import minimalmodbus


instrument = minimalmodbus.Instrument('/dev/ttyUSB0', 3) # port name, slave address (in decimal)
instrument.mode = minimalmodbus.MODE_RTU # rtu or ascii mode
instrument.serial.baudrate = 19200 # Baud
instrument.serial.bytesize = 8
instrument.serial.parity = serial.PARITY_EVEN
instrument.serial.stopbits = 1
instrument.serial.timeout = 0.1 # seconds
value1 = instrument.write_bit(1,1) #например для включений первого выхода
Выдает ошибку IOError: No communication with the instrument (no answer)

Аналогичный код на машине с Windows выполняется без проблем.

Fox
Сообщения: 153
Зарегистрирован: 05 авг 2014, 11:01

Re: RS-485 Modbus Raspberry

Сообщение Fox » 28 сен 2015, 17:45

instrument = minimalmodbus.Instrument('/dev/ttyUSB0', 3) # port name, slave address (in decimal)
...
instrument.serial.baudrate = 19200 # Baud
Адрес slave (3) правильно указан? Скорость?

Я делал следующим образом - написал скрипт на питоне, котоый вызываю как макрос с HTML страницы и на эту же страницу вывожу получаемые данные.
В качестве slave-устройства применял этот эмулятор - http://opc-servers.ru/scada-/modbus-slave
Эмулятор установлен на машине с Windows, соединенной с Raspberry Pi через преобразователи следующим образом USB/RS485====RS485/USB
Сейчас буду пробовать вместо эмулятора законектится с реальным устройством.

Rhadosvet88
Сообщения: 9
Зарегистрирован: 02 сен 2015, 17:43

Re: RS-485 Modbus Raspberry

Сообщение Rhadosvet88 » 28 сен 2015, 20:58

Да, скорость и адрес выставлены правильно.
Я вот думаю, что проблема именно с совместимостью RPi и переходника. Заказал другую модель конвертера, после экспериментов с ней отпишусь...

Fox
Сообщения: 153
Зарегистрирован: 05 авг 2014, 11:01

Re: RS-485 Modbus Raspberry

Сообщение Fox » 28 сен 2015, 23:27

Вряд ли в переходнике дело, я перепробовал несколько типов на RP и все прекрасно работали.

shemnik69
Сообщения: 338
Зарегистрирован: 20 дек 2012, 15:52
Откуда: Саратов Saratov
Контактная информация:

Re: RS-485 Modbus Raspberry

Сообщение shemnik69 » 01 окт 2015, 12:11

попробуйте такой вариант. Наверное пригодится.
В качестве конвертера RS485/usb
я решил так у меня есть промышленный c RS232 (ICP COM 7520 (http://www.icpdas.com/products/Remote_I ... i-7520.htm) его соединил через простой RS232/USB конвертер ценой 120 р. в магазине. На Raspberry устанавливаем программу демон Ser2Net и получаем IP/TCP конвертер т.е порт USB (его нужно указать в настройках Ser2 Net) станет доступен. Стандартный порт Modbus 502. В итоге получаем простой контроллер для ModbusTCP. Для проверки можно использовать программу ModbusPull в качестве адреса указываем адрес малины. Порт стандартный 502. Все должно работать. В принципе так OpenHAB и работает на Малине. Но очень уж он специфичен в настройке...хотя примеры есть.
Fox!!! Вопрос к Вам. Что используете в качестве "верхней" управляющей программы? Ибо самое наверное то трудное с Modbus не сопряжение а обработка полученных данных. OpenHab или что либо другое. Имеется ввиду не визуализатор действий типа кнопочки/ клавиши нажал включил, а программа в которой логика управления заложена. MajorDomo (MD) или Calaos.. у меня MD на малине уже наверное год (с HDD) или больше прекрасно работает.

Fox
Сообщения: 153
Зарегистрирован: 05 авг 2014, 11:01

Re: RS-485 Modbus Raspberry

Сообщение Fox » 02 окт 2015, 17:47

shemnik69 писал(а): Fox!!! Вопрос к Вам. Что используете в качестве "верхней" управляющей программы? .
WebIOPi.

shemnik69
Сообщения: 338
Зарегистрирован: 20 дек 2012, 15:52
Откуда: Саратов Saratov
Контактная информация:

Re: RS-485 Modbus Raspberry

Сообщение shemnik69 » 02 окт 2015, 17:53

Знаем такую. Но она не имеет средств настройки логических задач. Как в MD или OpenHAB. Это ведь просто визуализатор кнопок например управления JPIO/ А например управление по времени. таймеры. сценарные задачи. реакция на датчики и пр...я в данной программе этого не увидел.

Fox
Сообщения: 153
Зарегистрирован: 05 авг 2014, 11:01

Re: RS-485 Modbus Raspberry

Сообщение Fox » 02 окт 2015, 20:09

Как раз визуализации в webiopi уделяется меньше всего внимания. Если Вы считаете, что она предназначена только для управления портами gpio, то Вы заблуждаетесь. Посмотрите более внимательно сайт этого продукта, найдёте много интересного.
По крайней мере я свои хотелки с помощью webiopi реализовал. :D

Rhadosvet88
Сообщения: 9
Зарегистрирован: 02 сен 2015, 17:43

Re: RS-485 Modbus Raspberry

Сообщение Rhadosvet88 » 05 окт 2015, 18:42

Пришел переходник http://www.ebay.com/itm/161264238508?_t ... EBIDX%3AIT
На RPi запустился без проблем, из питона команды выполняются!!!!!
Теперь буду тестировать с опенхабом...

Ответить