Ds100r конвертер rs232 ethernet настройка

Обновлено: 03.07.2024


Под западным понятием Serial Device Server подразумевается преобразователь интерфейсов Serial (RS232/422/485) в Ethernet. Потребность в подобных устройствах возникла по простой причине: практически любой микроконтроллер, вне зависимости от производителя, для связи с «внешним миром» использует интерфейс UART (это связанно с технологической простотой реализации данного интерфейса) на TTL или CMOS логике. Таким образом, разработчику достаточно подключить к контроллеру микросхему приемо-передатчика, чтобы получить канал передачи данных по интерфейсу RS232/485. Но последовательные интерфейсы не обеспечивают достаточных характеристик для создания современных коммуникационных систем. С другой стороны, существует развитая технология Ethernet, которая позволяет создавать локальные подсети, объединять их и организовывать каналы передачи данных между географически разнесенными точками по всему миру. Логично, что производители коммуникационного оборудования решили «объединить» последовательные интерфейсы и технологию Ethernet. Таким образом, появились аппаратные шлюзы, под названием Serial Device Server.

Преобразователи интерфейсов RS232/Ethernet от Тайваньской компании Tibbo Technology уже на протяжении 10 лет используются по всему миру. За это время инженерами компании был накоплен огромный опыт по реализации проектов с использованием данного оборудования, были решены нетривиальные задачи, а функционал устройств расширен до нового уровня, далеко выходящего за рамки «обычных» преобразователей. Данная линейка устройств имеет название Tibbo Device Server – программируемые преобразователи интерфейсов. Ключевым словом в данном определении является слово «программируемые», т. к. конечный функционал устройства полностью зависит от той прошивки, которая была создана и загружена в него.
Но начнем с простого.


1.2. Serial Over IP.

2. Программирование Device Server или создаем ModBus шлюз.


Что если на объекте установлена Scada система, которая опрашивает устройства по протоколу ModBus TCP. А нам требуется опросить устройство с протоколом ModBus RTU и последовательным каналом RS232 на борту. Подключив обычный преобразователь интерфейсов RS232, получим выход в локальную сеть и даже Интернет, но Scada не увидит никаких данных без реализации протокола ModBus.
Вот здесь и приходит на помощь главная особенность преобразователей Tibbo — возможность программирования.
Программы кодируются на событийном объектно-ориентированном языке Tibbo Basic. Кратко я об этом писал в статье о Tibbo Project System. На данный момент готов компилятор для языка «С» и в скором времени состоится его релиз. Таким образом, вы сможете выбирать язык программирования — функциональный и глубокий «С» или более простой, легкий в понимании Basic.
Среда программирования Tibbo IDE распространяется бесплатно. Для отладки программ и прошивки не требуется никаких программаторов, все осуществляется прямо через локальную сеть Ethernet, включая пошаговый режим прохода программы и точки останова.
Итак, для реализации нашей задачи (опрос устройства с ModBus RTU), нам требуется реализовать протокол ModBus для оборудования Tibbo. К счастью, протокол уже написан и находится в открытом доступе. Нам достаточно скачать его с сайта, подключить к проекту, скомпилировать, прошить устройство и мы получаем шлюз ModBus RTU в ModBus TCP.
Вот как выглядит проброс данных в исходном коде, после подключения библиотек.

Расширим задачу. Последовательное устройство вообще не поддерживает протокол ModBus, а так хочется подключить его к Scada системе. Тогда запрограммируем опрос необходимых метрик устройства по обычному интерфейсу RS232, берем код ModBus TCP и получаем аппаратный драйвер специально для вашего устройства.
Можно и дальше расширять задачу — необходимо резервное копирование данных в случае обрыва связи? Используем встроенную флеш-память на 1 Мбайт и храним данные автономно, до восстановления связи. Нужна настройка через веб-интерфейс? Программируем встроенный веб-сервер и получаем заданный функционал.
Таким образом, вы можете реализовать любой протокол, создавая собственные аппаратные драйвера устройств и даже больше. Вы можете программировать логику, получая свой собственный маленький ПЛК.

3. Немного практики или управление отоплением в лоб.


Однажды мне попалась довольно интересная задача. В частном доме установлена система отопления — два электрических водонагревательных котла. На выходе котла и в обратной ветви трубопровода установлены датчики температуры воды, также в системе присутствуют датчик избыточного давления и датчик температуры наружного воздуха. Все датчики были заведены на модуль аналогового ввода МВА8 (ОВЕН), который «общается с миром» через интерфейс RS485. Задача — удаленный мониторинг показаний датчиков. В идеале, система должна записывать значения в базу данных MySQL для дальнейшего отображения информации на личном сайте заказчика. Я выбрал устройство DS1102.
Первое, что нужно было сделать — реализовать протокол передачи данных для модуля МВА8. Протокол достаточно простой и на кодирование было потрачено несколько часов, в результате была получена пара полезных функций для работы с модулем аналогового ввода, среди которых get_data_sensor(). Следующим шагом была реализация протокола MySql. Тут я потратил чуть больше времени. В результате и эта задача была решена за несколько часов. Готовая библиотека MySql опубликована на сайте производителя.
Итак, DS1102 теперь умеет обращаться к базе данных MySql, умеет опрашивать МВА8, пора заняться простейшей логикой — опрашивать датчики и записывать значения в базу данных.

Все работает, данные успешно передаются в таблицу MySql. Заказчик доволен и уже готов был отметить успешную реализацию, как вдруг спросил: «А можно удаленно управлять температурой в помещении?». Ну что же, раз хочется, значит сделаем.

Управление котлами с помощью реле.


В цепи питания котлов производителем была предусмотрена возможность включения нагревателей с помощью внешних реле малой мощности. Данный метод очень прост в реализации, т. к. не подразумевает управления мощностью нагрузки. Это значит, что регулирование температуры производится «в лоб», без использования ПИД регулятора. Но при этом накапливается большая ошибка регулирования (перегрев, потом остывание). Это заказчика устраивало. Но была и другая проблема. В модуле DS1102 – нет реле. Зато реле есть в «модифицированном» устройстве Device Server — DS1014. Данная модель имеет не только реле, но и аналоговые входы, встроенный GPRS и WiFi.

Немного отвлекусь. На самом деле устройства Device Server от Tibbo основаны на так называемых embedded модулях, о которых я расскажу в последующих статьях. Эти модули мы можем рассматривать как программируемые микроконтроллеры. Используя embedded в конструктиве с COM портами — получаем преобразователь интерфейсов. Но стоит добавить на плату АЦП, ЦАП, как мы уже получили простой модуль ввода/вывода. Именно так и была создана модель DS1014. Не сложно сделать вывод, что имея одну аппаратную основу, программы, написанные под «разное» железо Tibbo, на самом деле легко портируются между ними. Таким образом, замена одного устройства Tibbo на другое происходит безболезненно.

Заказчик согласился и на это изменение (всем бы таких заказчиков, верно?). Ну что же, существующий код переписывать не нужно. Приступаем к работе. Смотрим рассогласование температуры наружного воздуха с заданным значением и если оно больше принятой дельты принимаем решение о включении или выключении нагревателей. Давление воды в контуре упало ниже критической отметки — отключаем котлы.


Реле щелкает, в помещении тепло и комфортно. Правда реальный алгоритм еще предусматривает задержку между включением/выключением котлов во избежании «дребезга», когда температура находится в пограничном состоянии. Данные о критических событиях на объекте передаем в MySQL. Но мы еще не дали возможность пользователю оперативно задавать требуемые значения температуры в помещении. Я легко реализовал это с помощью веб-интерфейса, ведь все современные модули Tibbo имеют встроенный веб-сервер. Заодно и предусмотрел онлайн мониторинг счетчиков.

Функция html_print_value() — опросит порты MVA8 по уже известному алгоритму и отобразит значения на html странице.

Смс управление

Отлично, все настраивается через браузер. Заказчик доволен. Но меня уже не остановить. Как было бы удобно задавать температуру через смс! Например, возвращаясь домой после трудового дня, написать смс нашей системе, чтобы она подняла температуру в доме до 25°С. А ведь наша модель DS1014 имеет встроенный GPRS модем, который подключен по одному из 4-х последовательных портов контроллера. Поработаем немного с AT&T командами.



Как видно, в коде мы сравниваем номер телефона, с которого пришла команда с заданным. Функция gsm_get_command() — на входе получает текст смс и выделяет из нее наши команды. Например, смс с текстом «SET TEMP 25», даст команду на установку поддержания температуры в районе 25С.
А что если произошел прорыв трубопровода (резко упало давление)? В этом случае наша система уже умеет отключать нагреватели, но нужно еще и предупредить хозяина.

Читайте также: