На главную страницу Технологии Smart Display Как хост взаимодействует со SmartDisplay через Modbus (управление светодиодом и индикатором с помощью физических и виртуальных переключателей)

Как хост взаимодействует со SmartDisplay через Modbus (управление светодиодом и индикатором с помощью физических и виртуальных переключателей)

Предисловие

Winstar всегда рада делиться с пользователями информацией о нашей продукции, а также новейших технологиях, в частности дисплеях серии SmartDisplay. Вместе с тем, при помощи обучающих материалов мы стараемся продемонстрировать простоту применения и возможности, которые может предложить данная серия дисплеев. В этом выпуске мы представим еще один демо-сценарий, который поможет понять основы работы со SmartDisplay как новичкам, так и опытным разработчикам.

 

Введение

Протокол Modbus широко используется в промышленной автоматизации для управления различными устройствами и датчиками. В этом контексте плата Arduino может быть полезным инструментом для системной интеграции и управления хостом. Используя протокол Modbus, плата Arduino может управлять дисплеем, датчиками, индикаторами и светодиодами с помощью различных датчиков и кнопок-переключателей. В этой статье мы рассмотрим демонстрационную программу, которая научит правильно применять протокол Modbus для управления SmartDisplay с помощью платы Arduino-2560 и RS485. Данная программа демонстрирует, как считывать значения датчиков, менять страницы дисплея и управлять светодиодами на основе показаний датчиков с использованием регистров Modbus.

Приложение разработано по указанной ниже схеме.

Схема блоков
Схема блоков

 

Для демо нам потребуются следующие компоненты:

  1. Smart Display ModBus 7’’
  2. ARDUINO Mega 2560
  3. Modbus RS485 для ARDUINO Mega 2560
  4. Arduino IDE v2.0.4
  5. Modbus RS485 Dongle
  6. Физическая кнопка
  7. Датчик с переменным регистром
  8. LED Светодиод
  9. Программное обеспечение GUI-Builder v0.4.2 или выше.

Демонстрация будет поделена на три этапа:

  1. Проектровка дизайна в GUI Builder.
  2. Сборка и загрузка проекта.
  3. Программирование хоста Arduino.
 

Проектировка дизайна в GUI Builder

Для начала нужно открыть GUI Builder, чтобы создать новый проект и ввести имя проекта. Затем выбрать модель подключаемого дисплея (Smart Display ModBus 7’’). Далее требуется выбрать протокол и ориентацию отображения (по-умолчанию ландшафтный). После чего выбрать «Blank» в шаблоне пользовательского интерфейса и, нажать иконку «Create», чтобы создать новый проект, как показано на рис. ниже:

Проектировка дизайна в GUI Builder - 1

 

После нажатия на «create» должен открыться интерфейс GUI Builder

Проектировка дизайна в GUI Builder - 2

 

Согласно демо-сценарию, требуется добавить еще одну страницу.
Для этого нажмите на «Page», а затем на «+» для создания 2 страницы.

Проектировка дизайна в GUI Builder - 3

 

Стиль фона можно изменить нажав на «Resource» в верхней части панели, и выбрав подраздел «Background», который находится слевой стороны.

Проектировка дизайна в GUI Builder - 4

 

Стиль фона также можно изменить в разделе «Page info».

Проектировка дизайна в GUI Builder - 5

 

Теперь вернитесь в раздел «Control» на первой странице. В соответствии с демо-сценарием, выберите иконки переключателей и перетащите ее в область макета страницы. Сделайте то же самое для датчиков и индикаторов.

Проектировка дизайна в GUI Builder - 6

 

Соберите и загрузите проект

По завершении вышеописанных процедур и создания двух разных страниц, пришло время собрать проект. В верхнем углу, справа, нажмите на иконку «Device» и выберите «Device Property». Затем проверьте правильность настроек в появившемся окне «Device Config Window». Далее выбираем правильный COM-порт, устанавливаем скорость передачи данных и нажимаем кнопку «ОК». После этого нажимаем на «Connect to Device», чтобы подключить SmartDisplay. Нажмите иконку «Загрузить», чтобы загрузить проект, как показано на рис. ниже:

Соберите и загрузите проект -1

 

По окончании процесса загрузки, нажмите кнопку «ОК»:

Соберите и загрузите проект -2

 

По завершении процесса загрузки должен появиться стартовый экран:

Соберите и загрузите проект -3

 

Далее после загрузки стартого экрана дисплей переключится на первую страницу, что будет означать удачную загрузку проекта.

Соберите и загрузите проект -4

 

Программирование хоста Arduino

На рис. ниже показано как определяются в программе Arduino IDE необходимые адреса регистров. Программа начинается с определения контактов датчика физической кнопки, датчика переменного резистора и светодиодов, а затем она инициализирует связь Modbus, используя библиотеку ModbusMaster. Программа устанавливает адреса регистров Modbus для управления страницей дисплея, индикатором, датчиком и кнопкой переключения.

Программирование хоста Arduino - 1

 

Если вы хотите узнать больше о процессе связи, вам следует обратиться к разделу «Test Device» журнала связи GUI Builder, чтобы увидеть, как происходит связь между хост-устройством и SmartDisplay с использованием протокола связи Modbus RS485.

На рис. ниже показаны данные журнала сообщений «Toggle button». Данные сообщения журнала рассказывают, как получить доступ к данным для кнопки переключения на SmartDisplay. Второй байт байта данных представляет собой шестнадцатеричное значение 00 06, и адрес кнопки-переключателя, после преобразования этого значения в десятичное, значение будет 6. Его можно использовать для записи или вставки данных в кнопку, однако в этом случае кнопка переключения используется как функция для чтения или получения данных со SmartDisplay. Здесь мы используем зарегистрированный адрес «7» для чтения данных с кнопки переключения.

Программирование хоста Arduino - 2

 

And now the question arises why do we use this registered address "7" to receive data from the toggle button? It would be highly recommended to consult the datasheet for the Modbus Smart Display to get more detailed information on this communication process. The screenshot of the data sheet is shown in the image below, which shows the address used by the 1st object (widget) Toggle Button.

Программирование хоста Arduino - 3

 

На рис. ниже показаны данные журнала сообщений для датчика «Gauge», которые сообщают, как получить доступ к адресу датчика. Второй байт байта данных представляет собой шестнадцатеричное значение 00 6A, и представляет собой адрес датчика «Gauge». После преобразования этого значения в десятичное он будет равен 106, и его можно использовать для записи или вставки данных в виджет датчика.

Программирование хоста Arduino - 4

 

Cообщения журнала “Indicator” (показаны на рис. ниже), указывают, как получить доступ к адресу индикатора. Второй байт байта данных представляет собой шестнадцатеричное значение 00 CE, которое представляет адрес датчика, и после преобразования этого значения в десятичное значение оно будет равно 206. Его можно использовать для записи или вставки данных в виджет индикатора.

Программирование хоста Arduino - 5

 

ADC_REF: константа имеет значение 5 В и представляет собой опорное напряжение АЦП (аналогово-цифрового преобразователя), используется для регулировки чувствительности блока физических кнопок.
GROVE_VCC: константа имеет значение 5 и представляет собой напряжение VCC интерфейса Grove, используемого в схеме.
FULL_ANGLE: константа имеет значение 300 и представляет полное значение угла поворота, используемого в схеме.
В комментарии предполагается, что это значение измеряется в градусах.

Программирование хоста Arduino - 6

 

Ниже задан ряд необходимых переменных и типов данных, которые инициализируются нулем.

Программирование хоста Arduino - 7

 

Определите все режимы контактов и настройте внешние аксессуары, такие как физическая кнопка и светодиод.Также настройте скорость передачи данных для последовательной связи, как показано на рис. ниже:

Программирование хоста Arduino - 8

 

На следующем рис. показано, что функция «ChangePageFunction» определена, а для записи данных используется функция «writeSingleRegister».

Программирование хоста Arduino - 9

 

Когда хост Arduino считывает изменение значения датчика переменного резистора (угла поворота), он отправляет значение на SmartDisplay через протокол связи Modbus для изменения значения датчика. При значении датчика ниже 120, LED светодиод на 13 выводе находится в OFF mode и индикатор горит зеленым цветом. А когда значение датчика равно или больше 120, то светодиод включается и цвет индикатора становится красным.

Программирование хоста Arduino - 10

 

На следующем рис. показано, что когда хост Arduino считывает изменение значения датчика физической кнопки и отправляет значение на SmartDisplay через протокол связи Modbus для смены страницы.

Программирование хоста Arduino - 11

 

Хост Arduino считывает изменение значения переключателя, получая значение от SmartDisplay через протокол связи Modbus, чтобы включить светодиод на 12 выводе.

Программирование хоста Arduino - 12

 

В разделе ниже, мы использовали функцию «writeSingleRegister» для записи или вставки данных для связи со SmartDisplay, и функцию «readHoldingRegisters», для чтения или получения данных со SmartDisplay. Нужно обратить внимание на функцию задержки для связи с активными виджетами, такими как датчик. В протоколе Modbus, как только мы отправляем данные, а затем получаем подтверждение, мы можем отправить данные снова, из-за чего требуется использовать функцию задержки между передачей и получением данных через протокол Modbus.

Программирование хоста Arduino - 13

 

После успешной проверки и загрузки программы через Arduino IDE, можно начать демонстрацию. Когда кнопка переключения находится в выключенном состоянии, внешний подключенный светодиод на 12 выводе также находится в выключенном положении. А когда кнопка переключения находится в ON режиме, внешний подключенный светодиод сразу загорается, как показано на рис. ниже:

Программирование хоста Arduino - 14

 

Согласно демо-сценарию, датчик «Gauge» управляется датчиком с переменным регистром. При значении датчика «Gauge» в диапазоне от 0 до 120, на дисплее отображается иконка зеленым цветом, а светодиод на 13 выводе не горит. Но когда значение превышает 120, иконка отображается красным цветом, а светодиод на 13 выводе загорается, как показано на рис. ниже:

Программирование хоста Arduino - 15

 

В данном демо-сценарии, переключение между страницами совершается при помощи нажатия на физическую кнопку. При нажатии физической кнопки дисплей переключается на вторую страницу, а при повторном нажатии он переключается обратно на первую страницу, как показано на рис. ниже.

Программирование хоста Arduino - 16

 

Чтобы скачать вышеуказанную программу и получить больше подробностей о данном демо-проекте, пожалуйста перейдите по ссылке на GitHub (https://bit.ly/3oT0o5M)

Примечание: Для получения дополнительной информации о щите Modbus RS485, который использовался в этом демо-проекте, и просмотра фактической схемы настройки оборудования, Вы можете перейти по ссылке ниже:(https://media.digikey.com/pdf/Data%20Sheets/DFRobot%20PDFs/DFR0259_Web.pdf ).

Программирование хоста Arduino - 17

 

Заключение

Целью данной статьи является обучение программированию и симуляции отображения требуемой информации с использованием платы Arduino и протокола Modbus для управления датчиками и индикаторами. В ней показано, как считывать значения датчиков, изменять страницы дисплея и управлять светодиодами на основе показаний датчиков с помощью регистров Modbus, и может быть полезна как новичкам, так и опытным разработчикам, желающим узнать больше о протоколе Modbus, о его применении для управления SmartDisplay.

Вернуться к списку
go top
close