Фильтр по тематике

Панель оператора в качестве терминального устройства

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

12.09.2025 535 0
Панель оператора в качестве терминального устройства

Введение

Довольно часто операторам систем управления приходится на практике использовать различные терминальные устройства, работающие через последовательный порт. Простота и большая функциональность таких устройств сохраняют актуальность их применения и в современном технологичном мире.

Благодаря своей компактности и наличию всех необходимых для терминального устройства составляющих практически любую панель оператора можно использовать в качестве терминального пульта. Для этого потребуется лишь небольшая программа, которая может быть отдельной частью системы управления.

Рассмотрим на конкретном примере готовый пример такого проекта и программы.

Проект

В качестве панели оператора была использована распространённая модель MT8072iP компании Weintek [1]. Данная семидюймовая панель имеет цветной сенсорный графический экран с разрешением 800×480 пикселов и несколько коммуникационных интерфейсов, среди которых присутствует последовательный порт RS-232. Данный порт позволяет подключать панель оператора к микроконтроллерам, компьютерам или к другой панели оператора, имеющей аналогичный порт. Для осуществления такого подключения потребуется всего лишь три провода, соединяющие между собой сигнальные цепи: TxD, RxD и GND. Схема подобного соединения между панелью оператора и компьютером показана на рис. 1.


Аналогичным образом можно подключить панель оператора к другой панели оператора или к микропроцессорному устройству.

Программа

С помощью свободно распространяемой среды разработки EasyBuilder Pro создан рабочий программный проект для панели оператора. Описание среды разработки и способы загрузки приложения в панель оператора приведены в статье [2]. Основой проекта служит заготовка, которая автоматически формируется средой разработки при создании нового проекта.

В системных параметрах проекта необходимо добавить новое устройство в соответствии с окном, приведённым на рис. 2.


Здесь задаётся формат интерфейса RS-232, который будет использоваться в терминальном обмене данными.

Главное и единственное окно программы представлено на рис. 3.


Данное окно содержит один строковый элемент ASCII в поле отправки и четыре строковых элемента ASCII в поле приёма. Каждая из строк имеет максимально допустимый для данных элементов размер в 64 символа.

Инициализация этих строк производится с помощью макроса Init. В этом макросе приведена карта памяти панели оператора. Код макроса Init с подробными комментариями приведён в листинге 1.

Листинг 1. Код макроса Init
// Макрос инициализации
macro_command main()
// Карта памяти панели оператора
// LW0...LW255 – Буфер приёма
// LW2000...LW2255 – Буфер отправки
// LW3000 – Указатель начала строки в памяти x
// LW3001 – Счётчик отправленных символов n
// LW3002 – Количество принятых символов k
unsigned short m[256]={0} // Массив строк
unsigned short d=0 // Переменная данных
FILL(m[0], ' ', 256) // Заполнить весь массив строк символом пробела
SetData(m[0], "Local HMI", LW, 0, 256) // Записать массив строк в память панели оператора
SetData(d, "Local HMI", LW, 3000, 1) // Обнулить указатель начала строки в памяти x
SetData(d, "Local HMI", LW, 3001, 1) // Обнулить счётчик отправленных символов n
SetData(d, "Local HMI", LW, 3002, 1) // Обнулить количество принятых символов k
end macro_command

При нажатии на поле отправки в окне панели автоматически появится виртуальная клавиатура для ввода любых доступных символов. Завершение ввода производится виртуальной кнопкой «Enter», очистка – кнопкой «Clear», а закрытие клавиатуры – кнопкой «Esc».       

Для отправки набранной строки применён элемент «Битовый переключатель» с именем «Отправить», используемый в качестве программной кнопки, который вызывает макрос Send_RS-232. Код этого макроса приведён в листинге 2.

Листинг 2. Код макроса Send_RS-232
// Макрос отправки строки символов в порт RS-232
macro_command main()
unsigned char tx[256]={0} // Массив символов строк
unsigned short n=0 // Счётчик отправленных символов
unsigned short i=0 // Переменная цикла
FILL(tx[0], 0, 256) // Обнулить массив
GetData(tx[0], "Local HMI", LW, 2000, 256) // Читать из памяти символы строк в массив
for i=0 to 255 // Проверка массива
if tx[i] <> 0 then // Если элемент массива не нулевой
OUTPORT(tx[i], "RS-232", 1) // Отправить элемент массива в порт RS-232
n=n+1 // Считать отправленные символы
end if
next i
SetData(n, "Local HMI", LW, 3001, 1) // Записать счётчик в память
// Beep() // Формировать звуковой сигнал окончания отправки
end macro_command

Для очистки поля приёма применён элемент «Битовый переключатель» с именем «Очистить». Он позволяет вызывать макрос Init, который и производит очистку памяти поля приёма.

Последний, третий макрос, который используется в программе, имеет имя Read_RS-232. Он постоянно опрашивает порт RS-232 с периодичностью 100 мс и помещает принятые символы в буфер памяти приёмника. Код макроса Read_RS-232 приведён в листинге 3.

Листинг 3. Код макроса Read_RS-232
// Макрос регулярного чтения порта RS-232
macro_command main()
unsigned char rx[256]={0} // Массив 8-разрядных символов строк
unsigned short rxu[256]={0} // Массив 16-разрядных символов строк
unsigned short k=0 // Количество принятых символов
unsigned short x=0 // Указатель начала строки в памяти
unsigned short i=0 // Переменная цикла
FILL(rx[0], 0, 256) // Обнулить массив 8-разрядных символов строк
INPORT2(rx[0], "RS-232", k, 1) // Читать порт RS-232
// TRACE("k=%u", k) // Отладочная информация
if k>0 then // Если приняты символы из порта RS-232
SetData(k,"Local HMI", LW, 3002, 1) // Записать количество принятых символов в память
for i=0 to 255
rxu[i]=rx[i] // Копировать массив
next i
GetData(x,"Local HMI", LW, 3000, 1) // Читать указатель начала строки в памяти
SetData(rxu[0],"Local HMI", LW, x, k) // Записать массив 16-разрядных символов строк в память
x=x+k // Вычислить смещение указателя
if x>255 then // Если указатель превысил границу
x=0 // Обнулить указатель
end if
SetData(x,"Local HMI", LW, 3000, 1) // Записать указатель в память
Beep() // Формировать звуковой сигнал окончания приёма символов
end if
end macro_command

Протестировать программу можно с помощью любого компьютера с установленной на нём терминальной программой или с помощью двух панелей оператора, подключив их между собой.

Заключение

Рабочий проект можно загрузить с сайта журнала и модернизировать его под конкретные задачи.

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

Кроме того, можно подключить к панели оператора физическую клавиатуру через интерфейс USB и использовать её для ввода символов. Для этого нужно изменить в атрибутах строкового элемента ASCII из поля отправки свойство ввода данных путём снятия отметки «Использовать всплывающую клавиатуру».

Окно программы можно оформить в соответствии с необходимым дизайном и стилем, соответствующим используемому комплексу системы управления.

Проект можно перенастроить и компилировать для загрузки в любой другой тип панели Weintek с необходимым размером экрана.

Литература

  1. URL: https://www.weintek.net/MT8072iP.html.
  2. Вальпа О. Интеллектуальное освещение // СТА. 2025. № 2. С. 52.

© СТА-ПРЕСС, 2025


Если вам понравился материал, кликните значок — вы поможете нам узнать, каким статьям и новостям следует отдавать предпочтение. Если вы хотите обсудить материал —не стесняйтесь оставлять свои комментарии : возможно, они будут полезны другим нашим читателям!

12.09.2025 535 0
Комментарии
Рекомендуем
Анализ зашумлённых сигналов на осциллографах VESNA серии OVS3

Анализ зашумлённых сигналов на осциллографах VESNA серии OVS3

В статье анализируются способы повышения качества результатов измерений сигналов в присутствии аддитивного шума различной природы. В работе выделены типовые источники шума, а также выполнен обобщающий анализ способов, реализация которых позволяет тем или иным образом снизить уровень шума либо повысить уровень полезного сигнала. Для одного из таких способов, основанного на построении автокорреляционных функций, оценена эффективность в части измерения амплитуды и частоты синусоидального сигнала на фоне гауссовского шума. Приведены примеры измерений зашумлённых сигналов, выполненных с использованием осциллографа VESNA OVS3, позволяющие наглядно судить о потенциальных возможностях снижения уровня гауссовского шума при усреднении осциллограмм, ограничении полосы пропускания и при использовании внешнего фильтра.
18.02.2026 СЭ №2/2026 520 0

ООО «ИнСАТ»  ИНН 7734682230  erid = 2SDnjeHksEz
ООО «ИнСАТ»  ИНН 7734682230  erid = 2SDnjddDXPx
  Подписывайтесь на наш канал в Telegram и читайте новости раньше всех! Подписаться