Перейти к содержанию

Настройка LED-контроллеров Lavritech


На этой странице собрана общая информация по настройке светодиодных табло, а также приведён вводный пример для быстрого начало работы. Конкретные примеры применения светодиодных табло c настройками представлены внутри данного раздела.

Начало работы

Настройка Wi-Fi подключения

  • отключите питание устройства
  • переведите устройство в режим настройки. Для этого переведите переключатель на торце табло в положение "Настройка".
  • в сети появится Wi-Fi точка доступа LavriTech
  • перейдите по адресу 192.168.4.1 в браузере, далее откроется веб-интерфейс табло

  • перейдите на вкладку Main
  • в разделе WIFI options выберите режим Station mode. Расшифровка режимов:
    • AP - access point (режим точки доступа)
    • Station - режим подключения к уже имеющемуся роутеру

  • выберите Dynamic IP (если хотите использовать динамический IP-адрес), и нажмите на кнопку Set
  • далее DHCP-сервер выдаст IP-адрес в поле IP (например, 192.168.1.120)
  • выключите питание устройства
  • переведите переключатель на торце табло в положение "Работа"
  • включите устройство
  • теперь устройство подключится к вашей Wi-Fi сети и будет доступно по адресу 192.168.1.120
  • во вкладке Main, в поле Host Name можно задать удобное имя для устройства, например "ClockDisplay". Для сохранения настроек необходимо нажать на кнопку Set.

Настройка текущего времени

  • для настройки правильного времени перейдите на вкладку Main и укажите вашу временную зону в поле GMT zone (например, для Москвы это +3)
  • время автоматически загрузится из Интернета и установится в шапке на главной странице - см. Local Time

Вывод времени на светодиодное табло

В качестве простого примера использования рассмотрим часы: выведем на экран текущее время

  • перейдите на вкладку Display,
  • выберите значение Led Platform из списка Display Selected и нажмите кнопку Set. Через некоторое время на странице появятся дополнительные опции.
  • далее настроим вывод времени. Для этого в появившемся блоке ниже, в выпадающем списке выберите Local time
  • остальные настройки области отображения выставите согласно скриншоту:

  • нажмите кнопку Set, чтобы сохранить настройки области отображения
  • в итоге на табло в левом верхнем углу экрана будет выведено текущее время синим цветом
  • вы можете изменять настройки области и управлять положением, размером и цветом текста на экране

Описание доступных опций

Программное обеспечение поддерживает до 8-ми (или до 16-ти в некоторых версиях) областей отображения. Они определяют местоположение и вид данных.

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

  • в выпадающем списке выбирается привязка к данным, которые будут отображаться в текущей области (в нашем примере для часов - это Local time)
  • Zoom - "зум" - увеличивает каждый пиксель кратно значению в поле. 1 - обычный размер.
  • Font - идентификатор шрифта. Набор шрифтов зависит от версии прошивки для LED GPU. В стандартном наборе поддерживается два шрифта:
    • 0 - шрифт 6x8, моноширинный
    • 1 - шрифт 16x16, переменной ширины
  • Text: x, y - координаты начала строки текста (текст выводится внутри области)
  • color - задаёт цвет текста и цвет фона (RGB, см. примеры значений ниже)
  • Area: x, y, height, width - положение и размер области: координаты верхнего левого угла, высота и ширина в пикселях

Для сохранения параметров нажмите на кнопку Set.

Значения цвета

Цвет указывается тремя цифрами в формате RGB, где каждая цифра соответствует интенсивности цвета по каналам.
Первая цифра - красный канал, вторая цифра - зелёный, третья - синий. На данный момент поддерживаются 2 уровня интенсивности 0 (канал выключен) и 1 (канал включен). То есть можно выбрать 8 сочетаний цветов.

Примеры:

  • 000 - чёрный
  • 100 - красный
  • 010 - зелёный
  • 001 - синий
  • 111 - белый

Управление яркостью

Устройство поддерживает несколько уровней яркости (от 1 до 10). Их можно задать в поле Brightness. Для сохранения уровня яркости нажмите на кнопку Set.

Примеры работы с Interpreter

Базовые функции

Команда printd предназначена для вывода текста в зоны (Display Areas)

Пример вывода текущего времени в первую зону
printd(1,_TIMES_)

Вместо времени можно поставить другие метрики (например _DATE_, значения датчиков, и др.)

Также можно использовать конструктор строк (вкладка Designer_lines) и выводить уже готовые строки оттуда

Пример вывода в первую зону первой строки из конструктора строк
printd(1, #1)
В новых версиях прошивки появилась удобная возможность интеграции Designer_lines со значением intval-переменных напрямую:

Пример вывода в первую зону строки с номером из переменной intval1
printd(1,$1)

Чередование данных

Ниже в качестве примера чередования данных приведён скрипт который будет чередовать дату/время раз в 30 секунд. По аналогии можно сделать чередование других метрик или строк из Designer_lines.

Ссылка на полный список метрик: Конструктор строк (Designer lines) - Метрики

Пример чередование данных
valmath(2,secondsperday%30)
if(intval2==0)
if(intval1==0)
intval1=1
else
intval1=0
endif
endif

if(intval1==0)
printd(1,_TIME_)
else
printd(1,_DATE_)
endif
Описание скрипта

Для работы скрипта должны быть включена поддержка глобальных переменных intval (включается при формировании прошивки).

valmath(2,secondsperday%30) - задаёт интервал срабатывания раз в 30 сек. Устанавливает значение переменной intval2 как остаток от деления на 30. Когда intval2 будет равно нулю, то сработает код ниже после if (invval2==0) ...

intval1 - просто глобальная переменная которая меняется 0 / 1 для чередования данных.

И далее идёт код в котором выводятся разные данные в зависимости от значения intval1.

Пример управления через Modbus

Рассмотрим пример вывода текста на светодиодное табло через Modbus RTU (или TCP).

Задача состоит в том чтобы переключать строки текста, подготовленные в Designer_lines. Пользователь через SCADA-систему (или другой Modbus master) записывает номер строки в регистры, и эта строка выводится в нужную область экрана (номер области определяется в Interpreter).

В контроллере должна быть активна опция Modbus Slave (RTU или TCP вариант) и присутствовать вкладка на главной странице "MobBus_slave". При необходимости обновите прошивку.

Настройка Display

  • для начала распределим области отображения
  • на вкладке Display - определяем параметры первой области отображения: шрифт, цвет, координаты, размер
  • в этом примере нам будет достаточно одной области - именно в ней будем изменять текст
  • например, сделаем данную область размером 80x40 пикселей
    • Внимание! Размер и положение области нужно выбирать так, чтобы область не выходила за размеры экрана.
  • в выпадающем списке оставляем значение "NOT selected"
  • после установки параметров - нажимаем на кнопку SET внизу

display

Настройка Designer_lines

  • в этой вкладке формируем и сохраняем варианты строк для вывода
  • в строках можно использовать специальные подстановочные значения чтобы выводить значения переменных и метрик (подробнее см. список метрик)
  • сделаем для примера 2 строки

строка1 строка2

Настройка Interpreter

Для того чтобы управлять выводом в области экрана воспользуемся Interpreter.

В данном случае номер строки с нужным вариантом текста из Designer_lines будет хранить переменная Interpreter под названием intval1. 1 - номер этой переменной - нам понадобится позже.

  • возвращаемся на главную и открываем вкладку Interpreter
  • в поле "Script text" пишем текст:
    printw(вариант: _INTVAL1_)
    printd(1,$1)
    
  • в первой строке - настраивается вывод номера строки (выбранного варианта текста) на главной странице. Зто значение будет хранить переменная под названием intval1.
    • позже при записи modbus-регистров будет изменяться это значение.
    • вывод на главную значений переменных может быть удобен для контроля работы алгоритма
  • во второй строке при помощи printd устанавливается связь для вывода на табло:
    • (1,$1) - первый параметр в скобках - указывает номер области из вкладки Display. Параметр определяет в какую область экрана будет выводится текст
    • (1,$1) - второй параметр в скобках - указывает из какой переменной будет браться значение строки для вывода. В данном случае это intval1 - поэтому указываем её номер как $1
  • нажимаем кнопку SET внизу (во втором блоке)

  • перемещаемся наверх - ставим галочку "Enable runing" для активации работы скрипта
  • также устанавливаем период, например раз в 3 секунды. Тогда контроллер будет повторять выполнение скрипта и каждые 3 секунды отслеживать изменение значения в регистре modbus.
  • нажимаем кнопку SET в первом блоке

скрипт для табло

Настройка Modbus Slave

  • для режима RTU - заходим в веб-интерфейсе контроллера на вкладку "MobBus_slave" и выставляем параметры соединения через "Config RTU"
  • задаём адрес устройства и скорость обмена
  • другие параметры связи: чётность - None, 2 стоповых бита. Они определяются на этапе компиляции ПО и их значения не изменяются из пользовательского интерфейса.

конфигурация modbus RTU

  • возвращаемся обратно в "MobBus_slave"
  • формируем часть карты регистров устройства. Нам понадобится как минимум одна переменная для Interpreter чтобы переключать текст на дисплей
  • выбираем соответствующий пункт в выпадающем списке, а также указываем номер переменной - 1
  • после назначения нажимаем кнопку SET

карта регистров

  • таким образом при записи значения в регистры c адресами 0 и 1 - это значение транслируется в переменную intval1
  • значение занимает 2 регистра! Записывать нужно два регистра в одном запросе.

Пример установки значения

  • выполняем нужные соединения ПК и контроллера. Например, подключаем переходник USB-RS485, проконтролируем что нужный COM-порт появился в системе. Соединяем линии A/B с контроллером.
  • открываем программу, которую можно использовать в качестве Modbus Master. В данном случае покажем на примере утилиты modpoll.
  • запускаем modpoll с такими параметрами (при необходимости скорректируйте параметры связи). Пример команды:

    ./modpoll -m rtu -a 10 -r 1 -t 4 -c 2 -b 9600 -p none -s 2 /dev/ttyACM0 1 0
    

    • -m rtu - режим работы - RTU
    • -a 10 - адрес устройства
    • -r 1 - адрес регистра (надо указать со смещением +1, пишем в регистр 0)
    • -t 4 - тип регистров (4 - Holding)
    • -c 2 - количество регистров - значение занимает 2 регистра!
    • -b 9600 - скорость
    • -p none - чётность (parity)
    • -s 2 - 2 стоп-бита
    • /dev/ttyACM0 - наименование порта
    • 1 0 - значение для записи: 2 регистра. В первом регистре - номер строки. Второй всегда 0.
  • итак, мы записали в регистры значения 1 0

    • тем самым установили значение переменной intval1 в 1
    • при обновлении главной страницы мы увидим что вариант изменился
    • Interpreter отрабатывает это и выводим строчку с номером 1 из Designer_lines на экран

    результат вывода 1

  • аналогично, для вывода второй строки - записываем в регистры значения 2 и 0

    ./modpoll -m rtu -a 10 -r 1 -t 4 -c 2 -b 9600 -p none -s 2 /dev/ttyACM0 2 0
    
    результат вывода 2

Важные моменты

Количество регистров:
Записывать или читать надо всегда по 2 Holding-регистра!.
В данном примере для записи (или чтения) номера строки используется значение, которое занимает 2 регистра Modbus.

Функции Modbus:
16 (0x10) Write Multiple registers - для записи.
3 (0x03) Read Holding Registers - для чтения.

Порядок байт в значении: "BADC":
Значение в регистрах - хранится младшим регистров вперёд (Swap Word, или Little-Endian для регистров).
В каждом регистре - байты расположены старшим байтом вперёд (Big-Endian).

Разбор команды записи

Номер строки - это небольшое число и находится примерно в диапазоне 1-15, то есть укладывается в 1 байт.
Учтём порядок байт в значении: "BADC".
Таким образом, для установки значения надо записать номер строки во второй байт, а остальные будут нули.

Например, выберем строку с номером 3.
Значение "3" кодируется как: 00 03 00 00

  • register 0 = 3 (00 03)
  • register 1 = 0 (00 00)

Составим запрос на запись (данные в hex)

  • Slave Addr: 0A - адрес устройства 10 (указываем свой)
  • Function Code: 10 - для записи используем функцию Modbus Write Multiple Registers (0x10)
  • Starting Address: 00 00 - пишем начиная с нулевого регистра
  • Quantity of Registers: 00 02 - количество регистров. Записываем 2 регистра
  • Byte Count: 04 - количество байт для записи. Записываем 4 байта
  • Values: 00 03 00 00 - так кодируется номер строки 3 в записываемом значении
  • CRC: в конце надо будет добавить контрольную сумму (2 байта)

Посылаем запрос: > OA 10 00 00 00 02 04 00 03 00 00 26 8B
Получаем ответ: < OA 10 00 00 00 02 40 B3 (значения записаны корректно)

Краткая справка по API

Lavritech LED PLC позволяет выводить информацию на табло через различные каналы связи. Здесь дана краткая общая информация. Подробнее см. страницу API, там рассматриваются примеры использования API-запросов.

Управление через GET-запросы

Вывод текста

Вывод текста в область с определённым номером.

http://[ip-addr]/lcdmsg?st=[X]&txt=[text]

В запросе вместо параметрах в скобках [] нужно подставить свои данные.
Вместо [ip-addr] - указываем IP-адрес контроллера. (или имя.local если прошивка поддерживает MDNS)

Параметры GET-запроса:

  • st=[X] - вместо [X] указываем номер зоны
  • txt=[text] - вместо [text] вводим тест сообщения

Пример GET-запроса:

http://192.168.1.100/lcdmsg?st=3&txt=сообщение
Выведет в контроллер 192.168.1.100 в область 3 текст: сообщение

Очистка экрана

http://[ip-addr]/lcdcls

Управление через MQTT-топики

Вывод текста

Вывод текста в область с определённым номером осуществляется путём отправки текстового сообщения в топик вида:

[login]/[hostname]/lcd/line[X]

Подставляем параметры:

  • [login] - логин пользователя MQTT
  • [hostname] - название контроллера
  • [X] - номер области

Установка яркости

В топик вида

[login]/[hostname]/lcd/br
пишем яркость в диапазоне 0-10.