Настройка сетевой карты tibbo
Начиная с Ubuntu 18.04 конфигурирование сети выполняется с помощью утилиты netplan. В других системах на базе deb, например, Debian, она может быть установлена командой:
apt-get install netplan
В данной статье рассмотрим принцип и примеры настройки сети с помощью netplan.
Конфигурационный файл
Файл для настройки сети находится в каталоге /etc/netplan/. Имя файла может быть любым, на конце должно быть расширение yaml, например:
* чаще всего, это файл 50-cloud-init.yaml или 01-netcfg.yaml.
Простая настройка сети
Разберем пример настройки 3-х сетевых интерфейсов. Два из них будут с IP-адресами назначенными вручную (static IP), один — по DHCP.
Приводим файл к следующему виду:
- version — версия YAML. На момент обновления статьи, была 2.
- renderer — менеджер сети (networkd или NetworkManager).
- ethernets — настройка сетевых адаптеров ethernet.
- ens3, ens7, ens9 — настройки для соответствующих сетевых адаптеров. В данном примере мы настраиваем 3 сетевых адаптера.
- dhcp4 — будет ли получать сетевой адаптер IP-адрес автоматически. Возможны варианты yes/true — получать адрес автоматически; no/false — адрес должен быть назначен вручную.
- addresses — задает IP-адреса через запятую.
- gateway4 — шлюз по умолчанию. В данном примере указывается только для интерфейса ens7.
- mtu — при желании, можно задать значение MTU.
- nameservers — настройка серверов имен (DNS).
- nameservers addresses — указываем серверы DNS. Обратите внимание на разный формат записи для ens7 и ens9. Приемлемы оба варианта.
- nameservers search — дописывает окончание домена, если мы обращаемся к узлу сети только по его имени. Стоит обратить внимание, что мы можем указать несколько доменов через запятую.
Применение настроек
Для применения настроек необходимо запустить команду netplan. Ее синтаксис:
netplan <опции> <команда>
Для проверки нашего конфигурационного файла вводим:
netplan --debug generate
Для применения настроек вводим:
* данную команду мы вводим также для перечитывания настроек и перезапуска сети (вместо привычных restart и reload).
Статический маршрут
Статический маршрут задается для конкретного интерфейса, также в конфигурационном файле netplan, например:
network:
version: 2
renderer: networkd
ethernets:
ens9:
dhcp4: no
addresses: 192.168.1.10/24
nameservers:
addresses:
- 8.8.8.8
- 77.88.8.8
routes:
- to: 192.168.0.0/24
via: 192.168.1.1
on-link: true
* в данном примере мы настроили маршрут для сетевого интерфейса ens9. Данная настройка задается параметром routes:
- to — направление маршрута (в какую сеть мы должны попадать). В данном примере, 192.168.0.0/24.
- via — через какой шлюз мы попадаем в сеть to.
- on-link — активация маршрута при поднятии линка на сетевом интерфейсе.
Объединение интерфейсов (bonds)
С помощью bonds мы можем объединить интерфейсы с целью обеспечения отказоустойчивости и/или повышения пропускной способности.
network:
version: 2
renderer: networkd
ethernets:
ens2f0: <>
ens2f1: <>
bonds:
bond0:
dhcp4: no
interfaces:
- ens2f0
- ens2f1
parameters:
mode: active-backup
addresses:
- 192.168.122.195/24
gateway4: 192.168.122.1
mtu: 1500
nameservers:
addresses:
- 8.8.8.8
- 77.88.8.8
* в данном примере мы объединяем физические интерфейсы ens2f0 и ens2f1; настройка parameters mode указываем на тип объединения — доступны варианты:
- balance-rr (задействуются оба интерфейса по очереди, распределение пакетов по принципу Round Robin).
- active-backup (используется только один интерфейс, второй активируется в случае неработоспособности первого).
- balance-xor (задействуются оба интерфейса по очереди, распределение пакетов на основе политики хеширования xmit_hash_policy).
- broadcast (задействуются оба интерфейса одновременно, пакеты передаются все интерфейсы).
- 802.3ad (задействуются оба интерфейса по очереди, распределение пакетов на основе политики хеширования xmit_hash_policy)
- balance-tlb (задействуются оба интерфейса по очереди, пакеты распределяются в соответствии с текущей нагрузкой)
Сетевой мост (bridge)
Сетевой мост позволяет пропускать сетевой трафик через другой сетевой адаптер. Это можно применить, например, для организации хоста виртуальных машин (для трансфера трафика к виртуальным машинам KVM через единственный сетевой интерфейс сервера).
network:
version: 2
renderer: networkd
ethernets:
ens2f0: <>
bridges:
br0:
macaddress: ce:ce:ce:45:45:45
interfaces:
- ens2f0
addresses:
- 192.168.1.15/24
gateway4:
nameservers:
addresses:
- 77.88.8.8
- 8.8.8.8
mtu: 1500
parameters:
stp: true
forward-delay: 4
dhcp4: false
dhcp6: false
- bridges — настройки для интерфейсов bridge.
- bridges br0 — настройка интерфейса br0.
- macaddress — физический адрес (MAC) интерфейса. Настройка важна для некоторых провайдеров VPS — без нее бридж может не заработать.
- interfaces — перечисление интерфейсов, из которых собираем мост. В данном примере ens2f0.
- addresses, gateway4, nameservers — сетевые настройки (IP-адрес, шлюз, сервер имен).
- mtu — одноименный параметр. Для сетей ethernet обычно равен 1500.
- parameters stp — включает или отключает устранение петель в сети. В данном примере включено.
- parameters forward-delay — время в секундах в течение которого мост будет оставаться в состояниях «Listening» и «Learning».
- dhcp4, dhcp6 — включает или отключает автоматическое получение IP-адреса. В нашем случае, отключает.
Подробнее про настройку сетвого моста для KVM в инструкции Настройка KVM на Ubuntu Server.
Также мы можем настроить тегированный интерфейс vlan:
network:
version: 2
renderer: networkd
ethernets:
ens3: <>
vlans:
vlan5:
id: 5
link: ens3
dhcp4: no
addresses: [10.0.0.15/24]
gateway: 10.0.0.1
* в данном примере мы настроили интерфейс с тегом 5 на физическом адаптере ens3.
Для подключения к беспроводной сети задаем следующие настройки:
network:
version: 2
renderer: networkd
wifis:
wlp2s0b1:
dhcp4: no
dhcp6: no
addresses: [192.168.2.10/24]
gateway4: 192.168.2.1
nameservers:
addresses: [192.168.2.1, 77.88.8.8]
access-points:
<имя WiFi сети (SSID)>:
password: wifi_password
- wifis — определяет настойки для WiFi.
- wlp2s0b1 — настройка для беспроводного сетевого адаптера.
- dhcp4, dhcp6 — включает или отключает автоматическое получение IP-адреса.
- addresses, gateway4, nameservers — настройка сети (IP-адрес, шлюз, сервер DNS).
- access-points — настройка для подключения к беспроводной сети.
- <имя WiFi сети (SSID)> — имя беспроводной сети, к которой будем подключаться.
- password — пароль для подключения к беспроводной сети.
Отключение netplan и возврат к interfaces
При желании, мы можем вернуть привычный принцип настройки сети. Для этого выполним несколько шагов.
1. Открываем настройку grub:
2. Находим опцию GRUB_CMDLINE_LINUX и дописываем в нее параметр:
* если GRUB_CMDLINE_LINUX содержит другие настройки, то наш параметр добавляем через пробел.
3. Устанавливаем пакет ifupdown:
apt-get install ifupdown
4. Настраиваем сеть в файле:
auto lo
iface lo inet loopback
auto ens5
iface ens5 inet dhcp
* в данном примере мы настраиваем сетевой интерфейс ens5 на автоматическое получение IP-адреса.
5. Применяем настройки загрузчика:
И перезагружаем систему:
Возможные ошибки
1. Error in network definition *.yaml line xxx column yyy: expected mapping
Ошибка появляется при проверке (generate) или применении (apply) настроек сети.
Причина: ошибка синтаксиса YAML.
Решение: внимательно смотрим на количество отступов, которое сделано для строки xxx. Количество пробелов должно точно соответствовать количеству в других строках. Если параметр вложенный, он также должен отделяться от родителя нужным количеством пробелов. Пример неправильной настройки:
network:
version: 2
renderer: networkd
* обратите внимание, что version имеет 4 пробела для отступа, а renderer — 2. Так как version и renderer равнозначные параметры для родителя network, они должны иметь одинаковое количество пробелов.
Tibbo DS это конвертер интерфейсов, главная функция которого заключается в обеспечении доступа через сетевое соединение к устройствам с последовательным интерфейсом. Использование Tibbo DS позволяет подключить к компьютеру практически любое устройство с последовательным интерфейсом RS-232 через локальную сеть Ethernet по протоколу TCP/IP.
DS-100 - конвертер интерфейсов RS-232 to Ethernet 10BaseT (10 Mb/s)
DS-202 - конвертер интерфейсов RS-232 to Ethernet 100BaseT (100 Mb/s)
1.2. Основные варианты использования
Существует три основных варианта применения Tibbo DS:
• Подключение устройства с последовательным интерфейсом через локальную сеть и использование существующего программного обеспечения для управления этим устройством .
Для этого можно использовать Tibbo DS совместно с драйвером виртуального последовательного порта ( Virtual Serial Port Driver - VSPD ). Драйвер создает в системе виртуальный последовательный порт, обладающий всеми свойствами аппаратного COM-порта. Данные поступающие в этот порт перенаправляются через сеть TCP/IP на Tibbo DS, подключенный к соответствующему устройству с последовательным интерфейсом. Tibbo DS транслирует поступившие данные подключенному устройству через интерфейс RS-232. При использовании этого варианта подключения не требуется никакой модификации существующего программного обеспечения.
• Управление устройствами с последовательным интерфейсом через локальную сеть без использования VSPD.
При разработке нового программного обеспечения, включив в его состав необходимые компоненты, можно легко организовать обмен данных с Tibbo DS без установки VSPD.
• Соединение двух устройств с последовательным интерфейсом через локальную сеть.
При подключении к каждому из устройств конверторов интерфейсов Tibbo DS появляется возможность организовать их взаимодействие через локальную сеть.
2. Устройство и режимы работы
2.1. Устройство
Внешний вид конвертора интерфейсов Tibbo DS показан на рис. 1.
• Кнопк а управления. Кнопка управления конструктивно выполнена таким образом, чтобы предотвратить ее случайное нажатие (заподлицо с поверхностью корпуса). Нажатие кнопки в обычном режиме переводит его в режим программирования . Включение Tibbo DS при удержании в нажатом состоянии кнопки управления переводит его в режим загрузки встроенного программного обеспечения .
• Светодиоды. Отображают режим, в котором находится Tibbo DS, см. таблицу 1.
• Разъем питания. Для питания Tibbo DS используется источник напряжением 12 В. и током не менее 200 мА.
• Индикатор порта Ethernet . Мигает зеленым при приеме пакетов данных и красным при обнаружении коллизий на линии.
• Порт Ethernet. Предназначен для подключения к локальной сети Ethernet (10BaseT).
Рисунок 1 DS-100
Рисунок 2 DS-202
Переход в обычный режим.
Красный и зеленый светодиод мигают три раза.
Неправильная конфигурация, невозможность перехода в обычный режим.
Красный светодиод моргает постоянно.
В обычном режиме:
• IP адрес недоступен
• IP адрес доступен
Обнаружено переполнение буфера.
Зеленый светодиод горит постоянно.
Зеленый светодиод мигает.
Зеленый светодиод горит постоянно.
Красный светодиод мигает.
Зеленый и красный светодиод горят попеременно.
2.2. Режимы работы
• Обычный режим. Tibbo DS переходит в обычный режим при включении, если в момент включения питания не нажата кнопка управления. В этом режиме Tibbo DS производит двунаправленную конвертацию Ethernet - RS-232, при этом допускается изменение его параметров (программирование) через сетевой интерфейс.
• Режим программирования. Tibbo DS переходит в этот режим из обычного режима при нажатии кнопоки управления или при получении через последовательный интерфейс ESC-последовательности. В режиме программирования появляется возможность изменять настройки Tibbo DS через последовательный интерфейс.
• Режим загрузки встроенного программного обеспечения. Переключение в данный режим производится, если при включении питания Tibbo DS удерживаются в нажатом состоянии кнопки управления. Режим предназначен для обновления встроенного программного обеспечения.
3. Установка, настройка и подготовка к работе Tibbo DS
При установке, настройке и подготовке к работе рекомендуется выполнение следующей последовательности действий:
3.1. Настройка Tibbo DS
Подключить устройство Tibbo DS к последовательному порту компьютера при помощи кабеля WAS-0004( B ) (описан в разделе 5.2. Кабель RS-232). Подключение допускается производить только после отключения компьютера и устройства Tibbo DS от сети питания.
Установить прилагаемое к Tibbo DS программное обеспечение на компьютер, с которого будет производиться подготовка к работе, а в дальнейшем и использование устройства Tibbo DS.
Запустить DS Manager .
Выбрать из выпадающего списка пункт « Device Servers attached to the COM port» и указать порт, к которому физически присоединено устройство (рис. 3).
Нажать кнопку « Settings »
Скрепкой или другим подходящим предметом нажать Кнопку управления (см рис. 1)
Установить необходимые параметры конфигурации на вкладках (рис. 4).
Для начала работы достаточно указать IP-адрес, порт, протокол (рекомендуем TCP/IP) и Routing Mode (рекомендуем установить Slave).
3.2. Настройка виртуального последовательного порта
Настроить на управляющем компьютере виртуальный последовательный порт, что наиболее просто сделать, воспользовавшись мастером соединений ( «Connection Wizard» ) и установив необходимые параметры.
4. Программное обеспечение
4.1. Мастер соединений (Connection Wizard)
Connection Wizard предназначен для последовательного выполнения настройки параметров порта и сетевого соединения с Tibbo DS. На рисунках с 6 по 13 представлены этапы работы мастера с краткими пояснениями.
На рис. 5 предлагается выбрать:
Соединение между виртуальным последовательным портом (VSP) и Tibbo DS;
Настроить устройство DS для прямого соединения с приложением, установленном на этом компьютере;
Соединение между двумя устройствами Tibbo DS;
Завершение удаленной работы
Следующим шагом настройки является выбор номера порта, к которому будет привязано соединение. «Select existing VSP» - позволяет привязать соединение к существующему виртуальному порту, который выбирается из списка. Новый виртуальный порт создается при выборе «Create new VSP» , номер создаваемого порта также можно выбрать из выпадающего меню.
Необходимо заметить, что некоторые устройства с интерфейсом RS-232 могут работать только с портами COM1 и COM2. В этом случае имеет смысл настроить один из реальных портов как виртуальный. Но тогда этот порт будет использован только для связи с устройствами Tibbo.
Далее определяем параметры конвертера.
Здесь возможны 2 варианта:
конвертер доступен с этого компьютера;
конвертер не доступен с этого компьютера.
Или воспользоваться кнопкой « Select from the list . ». Запустится DS Manager и выведет список доступных по сети устройств DS. Из которых нужно выбрать необходимое, выделив его в списке и нажав Select .
Следующим шагом выбираем какое устройство, компьютер или конвертер, или любое из них, будет первым начинать передачу данных.
Далее следует выбрать транспортный протокол из двух возможных:
«UDP» - не рекомендуется использовать, если существует вероятность одновременной работы нескольких источников, посылающих данные по сети для Tibbo DS, т.к. в этом случае возможны сбои в работе, кроме того, этот протокол не обеспечивает гарантированную доставку;
«TCP» - использование этого протокола позволяет избежать ситуации, описанной для «UDP» . Рекомендуется использование протокола «TCP» .
Рисунок 10 Выбор протокола
Здесь необходимо выбрать будет ли включена возможность изменять настройки параметров в процессе работы («на лету»):
No, disable on-the-fly commands – изменение настроек «на лету» выключено.
Yes, enable on-the-fly commands, use out-of-band access method. - изменение настроек «на лету» включено. Команды будут посланы как дейтаграммы UDP. Этот метод доступа пригоден для всех подключенных локально DS. Также этот метод будет работать с сетевыми DS если UDP-траффик не запрещен сетевыми маршрутизаторами (файерволлами и т.п.).
Yes , enable on - the - fly commands , use inband access method . - изменение настроек «на лету» включено. Команды будут посланы по протоколу TCP/IP.
Рекомендуем оставить этот параметр «по-умолчанию», то есть - Yes, enable on-the-fly commands, use out-of-band access method.
Настройка завершена. На рис. 10 представлена информация о выбранных настройках. После ее проверки и щелчка по кнопке « Finish » произойдет фиксация выполненных настроек и, если это необходимо, запись настроек в Tibbo DS. Далее будет происходить стандартная установка нового устройства, виртуального последовательного порта, в операционной системе.
После успешного проведения установки об этом будет сообщено окном, изображенным на рис. 13.
4.2. Конфигуратор DS (DS Manager)
Конфигуратор DS (DS Manager) предназначен для управления настройками устройств Tibbo DS. Изменение параметров настройки может осуществляться как для устройств, непосредственно подключенных к последовательному порту компьютера, так и через сетевое соединение. После запуска конфигуратор автоматически производит поиск в локальной сети устройств Tibbo DS и отображает их.
Кроме автоматически найденных устройств из выпадающего списка можно выбрать устройства, подключенные к последовательному (реальному) порту компьютера ( attached to the COM-port ), а также производить операции с адресной книгой устройств Tibbo DS. Адресная книга ( Adress Book ) представляет собой список устройств и их IP-адресов и может использоваться для хранения информации о Tibbo DS расположенных вне локальной сети.
Вне зависимости от способа подключения к Tibbo DS для изменения доступны следующие группы свойств:
Сетевые свойства ( Network Properties) ;
Исходящие пакеты ( Outbond Packets ).
Свойства последовательного порта ( Serial Properties );
Все настройки сразу ( All )
Необходимые настройки для выбранного устройства Tibbo DS производятся после щелчка по кнопке « S ettings » .
На вкладке «Network Properties» имеется возможность настроить следующие параметры:
Owner name - имя владельца;
Device name – имя устройства;
IP-addres – сетевой адрес;
Port – порт подключения;
Transport protocol – транспортный протокол;
Routing Mode – статус устройства.
Вкладка «Serial Settings» содержит настройки последовательного порта конвертера.
«Serial Interface» - устанавливает режим работы последовательного интерфейса Tibbo DS;
«Baud Rate» - позволяет настроить скорость передачи данных через последовательный интерфейс;
«Parity» - установка контроля четности;
« RTS / CTS f low control» - настройка управления потоком;
«Data bits» - количество битов данных;
« On - the - Fly commands » - флажок разрешает изменение параметров последовательного интерфейса в ходе работы;
Кнопка «Initialize» - сбрасывает все настройки Tibbo DS и восстанавливает фабричные установки.
4.3. Конфигуратор виртуальных портов (VSP Manager)
Конфигуратор виртуальных портов предназначен для добавления в систему новых, изменения параметров и удаления существующих виртуальных последовательных портов.
На единственной вкладке программы «VSP Manager» показаны установленные в системе виртуальные последовательные порты, для изменения состава и параметров которых предназначены кнопки:
Add - добавляет в систему новый виртуальный порт, при этом открывается окно установки нового порта в операционную систему;
Remove - удаляет выделенный порт;
Edit - позволяет изменить настройки выделенного виртуального последовательного порта. Выводится окошко «Propierties: VSP» .
В окне «Propierties: VSP» имеется две вкладки: «General Propierties» и «Outbond Packet».
Флажок « Enable data logging » - разрешающий запись переданной через порт информации в log-файл.
Вкладка «Outbond Packet» содержит настройки, определяющие задержу исходящих пакетов, рекомендуется не изменять установки, сделанные по умолчанию.
4.4. Монитор виртуальных портов (Virtual Seral Port Monitor)
Предназначен для анализа акктивности на виртуальном последовательном порту. Основным применением монитора является отладка взаимодействия приложений с VSP и обычно не используется пользователями.
После запуска Монитора виртуальных портов возле системных часов (в системном трее) появляется значок Монитора.
5. Разъемы и кабели
5.1. Разъемы
Tibbo DS имеет два разъема: 10BaseT (Ethernet) и DB-9M (RS-232). Назначение контактов в разъемах приведено в таблицах ниже. Сигналы входа и выхода приведены относительно Tibbo DS.
Под западным понятием 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С.
А что если произошел прорыв трубопровода (резко упало давление)? В этом случае наша система уже умеет отключать нагреватели, но нужно еще и предупредить хозяина.
Знакомство с продукцией Tibbo у многих наших покупателей началось с непрограммируемого сервера устройств (DS203) и модуля (EM203). Данный проект — приложение Serial-over-IP (SOI), написанное на событийно-ориентированном языке Tibbo BASIC. Это приложение запускается на BASIC-программируемых устройствах, таких как DS110x (линейка программируемых последовательных контроллеров). Приложение совместимо с нашей готовой прошивкой SOI.
- поддержка OLED-дисплея для устройств DS1101 и DS1102;
- поддержка интерфейса Wi-Fi и GPRS с прозрачным переключением между Ethernet, Wi-Fi и GPRS;
- web-интерфейс администратора — настройка устройств осуществляется через web-браузер;
- возможность многопортового и мультиканального режима работы.
Важные ограничения функциональности:
- отсутствует поддержка начальных и стоповых символов со стороны последовательного порта;
- отсутствует поддержка LinkServer.
Аналогично нашим устройствам с фиксированной прошивкой, приложение SOI работает с набором вспомогательных программ (TDST). У нас также имеется справочник по решениям Serial-over-IP с подробными объяснениями. Представленный на этой странице материал предназначен лишь для получения поверхностного представления, как использовать написанное на Tibbo BASIC приложение SoI. Аналогичным образом мы кратко знакомим читателя с основными понятиями об OLED-дисплее или переключении интерфейсов.
Так, например, мы настроим один последовательный порт для устройства DS1101, чтобы иметь возможность работать с виртуальным последовательным портом VSP ("виртуальной подсистемой COM") на своем компьютере. Существует множество других сценариев использования серверов устройств, о которых мы не рассказываем в этом разделе.
Подготовка DS1101
Устройства DS1101 поставляются с предварительно загруженным SoI-приложением и должным образом проинициализированы. На случай, если на устройстве установлено другое приложение, для его подготовки необходимо выполнить следующее:
Обратите внимание: приложение SoI автоматически выключает дисплей по истечении срока ожидания. Для включения дисплея коротко нажмите кнопку MD.
При наличии дисплея:
При отсутствии дисплея:
- Нажмите однократно кнопку MD, чтобы ввести режим программирования последовательного устройства (мигают красный и зелёный светодиоды).
- Нажмите и удерживайте её для установки исходного состояния.
- Подождите до тех пор, пока не загорится зелёный светодиод.
- Выполните перезагрузку, чтобы завершить подготовку (прошивку) устройства.
После перезагрузки вы должны увидеть свое устройство в DS Manager. У подготовленных устройств отключен DHCP, поэтому IP вашего DS1101 будет 1.0.0.1.
Обратите внимание: время от времени у наших пользователей возникают проблемы с брандмауером. Вам, возможно, потребуется отключить брандмауер (или разрешить UDP-трафик через порт 65535) для того, чтобы DS Manager смог увидеть ваше устройство DS1101.
Настройка IP-адреса
- Найдите ваше устройство DS1101 в списке утилиты DS Manager, щёлкните кнопкой мыши по Settings (настройки).
- Активируйте DHCP или установите нужный IP-адрес.
- Кнопкой мыши щёлкните по OK.
- Устройство DS1101 перезагрузится с новой конфигурацией IP/DHCP. Можно кликнуть по Refresh (обновить), чтобы увидеть, какой IP-адрес в текущий момент использует устройство DS1101.
Использование административного веб-интерфейса
После того, как всем вашим устройствам присвоены IP-адреса, и вы их знаете, можно использовать веб-браузер для настройки устройств DS1101. Откройте IP-адрес в браузере. Дальнейшие действия очевидны.
Подсказка: пароля нет, просто щёлкните кнопкой мыши по Login. Пароль можно установить потом.
Настройка связи между VSP и DS1101
- Запустите Мастер подключения Connection Wizard (это утилита Набора Вспомогательных Программ (TDST).
- На первом экране выберите "Create a link between a Virtual Serial Port and a Device Server" (создать соединение между Виртуальным последовательным портом и Сервером устройств). Кнопкой мыши щёлкните по Next.
- Выберите номер VSP (виртуального COM-порта), которые вы хотите использовать. Например, выберите "Create new VSP" (Создать новый VSP) и выберите COM3 из выпадающего списка (мы исходим из предположения, что COM3 не используется на вашем ПК). Кнопкой мыши щёлкните по Next.
- Укажите сервер устройств. Щёлкните кнопкой мыши по Select из списка и дважды щёлкните по вашему устройству DS1101 на экране утилиты DS Manager. Больше ничего не меняйте! Щёлкните кнопкой мыши по Next.
- Выберите канал (на DS1101), с которым будет связан VSP на вашем ПК. По завершению щёлкните по Next.
- Выберите, какая сторона (DS1101 или VSP) будут отправлять данные в первую очередь. Есть некоторые тонкости в настройке, но мы на них здесь не будем останавливаться. Вариант "Any side" (любая сторона) — беспроигрышный, веберите его и щёлкните по Next.
- Должно появиться окно Gateway and netmask settings (настройки адреса шлюза и маски подсети). Когда устройство DS1101 подключено к одному и тому же сегменту сети с ПК, это окно отображаться не будет. Кнопкой мыши щёлкните по Next.
- Экран Transport protocol and listening ports (транспортный протокол и порты прослушивания). Все, что необходимо, обычно выбирается по умолчанию. Вы будете использовать TCP/IP, и вам не придется задумываться о портах, поскольку всё и так будет работать без проблем. Кнопкой мыши щёлкните по Next.
- Экран On-the-fly commands (мгновенные команды). Посредством этих команд выполняется множество операций, однако их самая важная функция — настраивать последовательный канал на устройстве DS1101 согласно требованиям программного обеспечения, которое использует виртуальный COM-порт. Так, например, если приложению требуется 115200bps, оно сообщит об этом (виртуальному) COM-порту, а виртуальный COM-порт отправит мгновенную команду устройству DS1101 переключить назначенный последовательный порт на 115200bps. Именно поэтому не следует изменять выбор в настройках "по умолчанию". Далее щёлкните кнопкой мыши по Next.
- Экран Serial settings for the device server (настройки серийного порта для сервера устройств). Здесь не нужно ничего изменять. Мгновенные команды активированы. Далее выберите Next.
- Теперь перед вами находится экран со сборной информацией. Можно просмотреть, как будут настроены виртуальный COM-порт и устройство DS1101. Выберите Finish. Работа завершена!
Тестирование связи с VSP-DS1101
Здесь подойдет любое ПО для последовательного порта. Можно воспользоваться нашим многопротокольным сниффером I/O Ninja.
- Скачайте и установите I/O Ninja.
- Выберите File > New Session.
- Выберите Serial и кнопкой мыши щёлкните по OK.
- Выберите свой VSP и кнопкой мыши щёлкните по Open Port (иконка с молнией).
- Теперь I/O Ninja готов к отправке данных на устройство DS1101. Обратите внимание: наше ПО TDST включает в себя утилиту Tibbo Monitor, которую можно найти на панели задач. Утилита Tibbo Monitor ведет журнал активности в виртуальном COM-порту. У вас есть возможность отслеживать все изменения, происходящие при открытии/закрытии порта в I/O Ninja, изменении скорости передачи данных и пр.
Работа с интерфейсами Wi-Fi и GPRS
Наше SOI-приложение позволяет использовать интерфейсы Wi-Fi и GPRS. Исходя из силы сигнала, приложение выбирает лучший среди доступных и активных интерфейсов.
Приоритет всегда остается за Ethernet-интерфейсом. Он остается "активным", пока к устройству подключен кабель Ethernet. Выдерните его, и устройство начнет поиск альтернативных интерфейсов.
Если есть активный Wi-Fi интерфейс, устройство постарается его использовать. При неуспешной попытке подключения устройство обратится к GPRS интерфейсу (если оно доступно и активно). Подключите Ethernet-кабель к устройству, и приложение вновь будет использовать Ethernet-интерфейс.
Устройство DS1101 можно опционально расширить модулем для Wi-Fi интерфейса (GA1000). Предположим, что у вашего устройства уже есть этот модуль, тогда приступим к настройкам:
Читайте также: