Сенсорные HMI-дисплеи DWIN: виды, среда DGUS и протокол обмена

Какие бывают дисплеи DWIN, как в редакторе DGUS создаётся интерфейс, как его прошить с SD-карты и какими пакетами дисплей обменивается с контроллером.
Что такое HMI и откуда взялись DWIN
HMI (Human-machine interface) — человеко-машинный интерфейс, то есть аппаратно-программные средства, через которые человек отдаёт команды контроллеру и получает от него ответ. Простейшие его элементы — кнопка и светодиод, более сложные — индикаторы, символьные дисплеи, клавиатуры и энкодеры.

Затем появился сенсорный экран. Для Arduino такие экраны существуют давно, но малый объём памяти и скромная скорость контроллеров сводили интерфейс к простым фигурам и одному шрифту, поэтому символьные индикаторы вроде 1602 долго оставались популярнее.

Положение изменили дисплеи NEXTION с собственным контроллером, большой памятью и поддержкой внешней карты: всю работу с графикой они берут на себя. Их недостаток — высокая стоимость. Компания DWIN выпускает аналогичные по идее сенсорные панели, которые обходятся заметно дешевле.

Чем различаются модели
Линейка DWIN очень широкая и продолжает расти. Основные параметры выбора:
- Размер и разрешение: от 1,5 дюйма при 240×240 до 21,5 дюйма при 1920×1080; наиболее востребованы диагонали 5–8 дюймов.
- Матрица: чаще всего TN и IPS, есть специальные типы для тяжёлых условий.
- Сенсор: ёмкостный, резистивный или без сенсора. Ёмкостный точнее и быстрее, допускает защитное стекло или плёнку; резистивный работает в перчатках, с мокрыми и пыльными пальцами и не реагирует на капли воды.
- Звук: пищалка, динамик или выход на динамик; два последних варианта воспроизводят записанные звуки и музыку.
- Интерфейс: как правило UART и RS-232 с выбором перемычкой, бывают версии с RS-485 и CAN, предусмотрена установка модуля Wi-Fi.
- Класс применения: восемь градаций, от потребительского до исполнения для суровой среды.

Процессоры в дисплеях собственной разработки — двухъядерные T5L с частотой до 250 МГц и аппаратным 2D-ускорением. Флеш-память объёмом от 16 Мб до 2 Гб хранит графику, звуки и управляющую программу. Чаще всего дисплей работает под DGUS OS, для которой есть одноимённая графическая среда разработки на ПК; существуют также версии на Android и Linux.
Три слоя интерфейса в DGUS
Порядок работы такой: дисплей подключают к контроллеру и питают от блока на 6–26 В с током от 2 А, интерфейс готовят на компьютере в программе DGUS, записывают в дисплей и перезагружают его. В настройках программы (вкладка Setting) выбирают английский язык и разрешение экрана.
Интерфейс складывается из трёх слоёв. Фон рисуют заранее в любом графическом редакторе, вместе с изображениями кнопок; при работе он не меняется. Информационный слой (вкладка Display Control, голубые прямоугольники) отвечает за вывод меняющихся значений: чисел, надписей, иконок. Сенсорный слой (Touch Control, жёлтые прямоугольники) задаёт области, реагирующие на касание, и описывает реакцию.
Вся логика построена на переменных в оперативной памяти дисплея. Каждый элемент привязывается к адресу ячейки VP в шестнадцатеричном виде; начинать рекомендуется с 0x1000. Переменную может изменить сам дисплей, например по нажатию, или контроллер командой извне. Так, элемент Data variables display выводит число из ячейки, а кнопка incremental adjustment с тем же адресом изменяет его. Флажок Data auto-uploading заставляет дисплей сразу сообщать контроллеру об изменении; без него значение останется в памяти до запроса.
Файлы проекта и прошивка
Кнопка Generate во вкладке File создаёт три файла с управляющим кодом в папке DWIN_SET. Число в начале имени файла — это адрес блока флеш-памяти, куда он будет записан. Кроме них нужны файлы собственного формата DGUS, которые создаются инструментами со страницы Welcome:
- DWIN ICL Generator превращает картинки в файлы фона и иконок с расширением ICL. Фон занимает блок 32, поэтому имя файла начинается с 32; файлам иконок дают другие номера, например 64 или 68.
- 0# word bank generating переводит обычный шрифт в формат HZK; шрифты пишутся с нулевого блока. Без файла шрифта элементы с цифрами и буквами останутся пустыми, причём без сообщения об ошибке.
- Config Generator создаёт файл конфигурации: звук нажатия, снижение яркости при простое, контрольная сумма в протоколе, поворот изображения на 90, 180 или 270 градусов.
Для прошивки папку DWIN_SET копируют в корень SD-карты, карту вставляют в выключенный дисплей и подают питание. Таблица на экране должна завершиться строкой Flash CRC32 Check. После этого дисплей обесточивают, карту вынимают и включают его снова. При небольших правках достаточно перезаписать только изменённые файлы.
Подключение и протокол
Дисплей общается через последовательный порт: UART-TTL, RS-232 или RS-485. UART-TTL можно соединять с пятивольтовым контроллером напрямую, для логики 3,3 В обязателен преобразователь уровней. RS-232 требует адаптера, например на микросхеме MAX3232. Скорость по умолчанию — 115200 бод; программные последовательные порты не всегда держат её стабильно, так что лучше использовать аппаратный.
Пакет от дисплея выглядит так: 5A A5 06 83 10 01 01 00 14. Здесь 5A A5 — заголовок, 06 — число следующих за ним байт, 83 — команда передачи данных от дисплея, 10 01 — адрес ячейки (0x1001), 01 — количество слов по два байта, 00 14 — само значение.
- Запрос на чтение: 5A A5 04 83 10 01 01. В ответ приходит такой же пакет, как при автоматической отправке. Если в конце указать, например, 03, вернутся три ячейки подряд.
- Запись: 5A A5 05 82 10 01 12 34 — команда 82 помещает слово 0x1234 в ячейку 0x1001. Можно записывать и несколько слов подряд.
- Подтверждение записи одинаково для всех таких команд: 5A A5 03 82 4F 4B.
Для ответственных применений к пакетам добавляются два байта CRC по протоколу Modbus; включается это опцией CRC ON в генераторе конфигурации, после чего файл конфигурации нужно заново записать в дисплей.