В прошлых статьях подключение к дисплею осуществлялось через интерфейс UART TTL, однако кроме данного интерфейса на дисплеях, в зависимости от исполнения, присутствуют интерфейсы RS232, RS485 и CAN. Так как в промышленном оборудовании в подавляющем большинстве используются более помехоустойчивые интерфейсы связи, то нельзя не обратить внимание них. В данной статье будет рассмотрена возможность использования интерфейса RS485.
Прошлые статьи:
DWIN. Подготовка дисплея к работе и загрузка демо-проекта
DWIN. Знакомство с программным обеспечением DWIN Graphic Utilized Software. Hello World
DWIN. Протокол Modbus. Slave и Master режимы.
DWIN. Связываем STM32 Nucleo и дисплей.
DWIN. Элемент Real-Time Curves, чертим графики.
DWIN DGUS. Элемент Artistic Variables. Отображаем цифры иконками.
Дисплей
Для реализации проекта будет использован промышленный дисплей DMG10600T070_A5WTC. Рассмотрим характеристики дисплея:
Диапазон рабочих напряжений: 7В - 36В.
Потребляемый ток: 150-300мА.
Разрешение: 1024х600.
Тип матрицы: IPS 16.7M цветов.
Тип сенсорной панели: Емкостная.
Яркость подсветки: 250нит.
Flash память: 16 Мб.
Встроенный RTC.
Стандарт защиты от воздействия окружающей среды: IP65 на лицевой панели.
Интерфейсы: UART2 (RS232),UART4 (RS485), UART5(RS232) , CAN.
Дисплей относится к промышленной линейке продуктов, поэтому к встроенной подсветке предъявляются более серьёзные требования и она разрабатывается с ресурсом 30000ч при максимальной яркости.
Проект
Кроме самого подключения дисплея по интерфейсу RS485 необходимо добавить экраны и интересующие нас функции. В проекте реализуем доступ в меню настроек с парольной защитой, обработка происходит на внешнем подключаемом устройстве, ПЛК или микроконтроллер, функции которого в данной статье будет осуществлять ПК, также функцию пакетной записи и чтения данных с дисплея.
DRAW.IO - формируем изображения
На первой странице разместим 18 полей для пакетной записи, а также кнопку "настройки" в виде шестеренки, при нажатии на кнопку будет отображаться клавиатура для ввода пароля. Введенное в поле число будет отображаться "*".
На странице настроек разместим 5 редактируемых полей и слайдер установки яркости дисплея.
Последней страницей в данном демо-проекте будет страница с размещенной клавиатурой
Также формируем иконку слайдера для отображения яркости дисплея:
На этом формирование страниц закончено, приступаем к формированию интерфейса в ПО DGUS.
DGUS
Открываем программу, создаём проект с разрешением 1024х600, формируем *.ICL файлы с подготовленными выше изображениями, в демо-проекте номера будут следующие: фоновое изображение 32.ICL, изображение иконок 35.ICL. После чего добавляем изображения в рабочую область
Формируем 18 полей с последовательными адресами для пакетной записи:
Адрес первой ячейки 1000, последней 1011 в шестнадцатеричной системе счисления.
Следующим элементом добавляем "Data Input", задаем адрес записи 1100, а также указываем область клавиатуры на странице 04.
Рассмотрим настройки поближе:
Variable type - указываем int, так как пароль будет состоять из 4 цифр, если цифр необходимо больше, то выбираем большую размерность.
Integer digits выбираем 4 из тех же соображений.
Display method - "show \*\" позволяет отображать введенные данные в виде звездочек. В меню настроек будет использована эта же клавиатура, но данная настройка будет другая и цифры будут отображаться.
Раз в данном дисплее реализован встроенный RTC то проверим его работу на главном экране. Размещаем одноименный элемент:
Страница настроек:
Добавляем кнопку "Basic Touch" с функцией перехода на стартовую страницу:
Добавим элементы позволяющие управлять яркостью дисплея:
Далее необходимо добавить элементы ввода данных и отображения для 5 полей:
Поля размещены последовательно по адресам 2000-2004 для пакетного считывания данных.
Сохраняем проект и генерируем файлы. Также в папку DWIN_SET необходимо будет добавить файл который заменяет UART2 предназначенный для работы с DWIN_OS, на UART4 на котором находится RS485. После загрузки данного файла все команды будут отправляться и приниматься именно через этот интерфейс.
Docklight - формируем команды для взаимодействия с дисплеем
Рассмотрим протокол общения из документации, нам необходимо пакетное считывание и пакетная запись, работа с RTC и полученные данных после ввода с клавиатуры.
RTC:
Из документации отображение 1 октября 2050 года, 11:12:13
5A A5 0B 82 00 9C 5A A5 32 0A 01 0B 0C 0D где:
5A A5 - заголовок
0B - длинна данных
82 - команда на запись
00 9C - постоянный адрес RTC
5A A5 - запуск настройки RTC
32 - год, 0A - месяц, 01 - день, 0B - часы, 0C - минуты, 0D - секунды.
Нам необходима сегодняшняя дата
9 мая 2022 года, 15:30:45
Пакет будет иметь следующий вид:
5A A5 0B 82 00 9C 5A A5 16 05 09 0F 1E 2D
Пакетное считывание 5 переменных:
5A A5 04 83 20 00 05
5A A5 - заголовок
04 - длинна данных
83 - команда на чтение
20 00 - адрес данных
05 - количество считанных данных из памяти (5 = 10 byte)
Ответ на запрос пакетного считывания:
5A A5 - заголовок
0E - длинна данных
83 - команда на чтение
20 00 - адрес данных
05 - количество считанных данных из памяти (5 = 10 byte)
00 6F - Считанное значение из памяти по адресу 2000 (111)
00 DE - Считанное значение из памяти по адресу 2001 (222)
00 40 - Считанное значение из памяти по адресу 2002 (64)
00 80 - Считанное значение из памяти по адресу 2003 (128)
01 00 - Считанное значение из памяти по адресу 2004 (256)
Пакетная запись в 18 переменных:
5A A5 27 82 10 00 00 64 00 68 00 DC 00 F0 00 AA 00 BB 00 01 00 02 00 01 00 03 00 05 00 08 00 64 00 D0 00 DC 02 D0 03 52 05 D8
5A A5 - заголовок
27 - длинна данных
82 - команда на запись
10 00- адрес данных
00 64 - поле Voltage 1 (значение 100)
00 68 - поле Voltage 2 (значение 104)
00 DC - поле Voltage 3 (значение 220)
00 F0 - поле Voltage 4 (значение 240)
00 AA - поле Voltage 5 (значение 170)
00 BB - поле Voltage 6 (значение 187)
00 01 - поле Current 1 (значение 1)
00 02 - поле Current 2 (значение 2)
00 01 - поле Current 3 (значение 1)
00 03 - поле Current 4 (значение 3)
00 05 - поле Current 5 (значение 5)
00 08 - поле Current 6 (значение 8)
00 64 - поле Power 1 (значение 100)
00 D0 - поле Power 2 (значение 208)
00 DC - поле Power 3 (значение 220)
02 D0 - поле Power 4 (значение 720)
03 52 - поле Power 5 (значение 850)
05 D8 - поле Power 6 (значение 1496)
Считывание введенного пароля:
5A A5 06 83 11 00 01 0E 46
5A A5 - заголовок
06 - длинна данных
83 - команда на чтение
11 00 - адрес данных
01 - количество передаваемых данных (1 = 2 byte)
0E 46 - введенный пароль "3654" в HEX формате
Команда перехода на страницу при совпадении пароля:
5A A5 07 82 00 84 5A 01 00 02
5A A5 - заголовок
07 - длинна данных
82 - команда на запись
00 84 - постоянный адрес перехода по страницам
5A 01 - запуск настройки перехода по страницам
00 02 - номер страницы
Добавим команды в программу Docklight
Подключение дисплея:
Видео работы:
Результат работы Docklight из видео:
Заключение
В данной статье был создан демо-проект с пакетной записью и считыванием данных, переходом на страницу с парольной защитой. Также показано как легко перевести дисплей в работу на другой асинхронный порт, в нашем случае UART4 - RS485.
Ссылка на GitHub: https://github.com/VB-Radchenko/DWIN-Project/
По вопросам оптовых закупок, персональных скидок, технической поддержки и общим вопросам обращайтесь:
Email: Info_dwin@mail.ru
VK: https://vk.com/radchenko_vb
Telegram: https://t.me/Radchenko_VB
Сообщество VK https://vk.com/public208909284
Скидочный купон на 5$ для официального магазина AliExpress - DWVLPRO
Пишите в комментарии, разбор какого функционала хотелось бы увидеть.