В этом примере рассмотрено моделирование в Engee с подключенным внешним оборудованием. COM-порт компьютера, где запущен Engee, работает в режиме получения сообщений по COM-порту из микроконтроллера Arduino MEGA. Программа формирования отправляемых сообщений на микроконтроллере представляет собой циклическую генерацию возрастающих чисел со сбросом. Полученные сообщения, закодированные в ASCII, декодируются в модели.
Engee обладает возможностью подключения внешнего оборудования - такого, как, например, COM-порт. По этому интерфейсу могут быть подключены не только офисные и мультимедийные устройства, но и устройства КИПиА - датчики, микроконтроллеры, программируемые логические контроллеры.
В предыдущем примере мы рассмотрели отправку сообщений из Engee в Arduino MEGA, теперь рассмотрим отправку сообщений из Arduino MEGA в Engee.

Настройки интерфейса, блок COM Setup:
В блоке передатчика COM RX необходимо определить имя порта - "COM5" и размер буфера для передачи, например, - "1".
На выходах этого блока мы получаем:
UInt32,UInt8.Так как передаваемые Arduino данные кодируются по стандарту ASCII, выходные данные будем декодировать при помощи блока Engee Function "ASCII decoder".
Перед запуском модели в Engee необходимо выполнить несколько подготавливающих действий, как это описано в руководстве.
Кроме того, аналогичные шаги для подготовки можно найти в предыдущем примере. Отличие составляет лишь программа, загружаемая в Arduino MEGA
Программа обработки данных, получаемых Engee из Arduino по последовательному порту приведена в скетче arduino_com_read_sketch.ino.
Принцип работы программы подробно описан в комментариях скетча. Суть работы состоит в следующем.
Для программирования Arduino Mega достаточно сделать следующие действия:
arduino_com_read_sketch со скетчем,Arduino Mega or Mega 2560 и имя порта - в случае данного примера это COM5,В случае успешной загрузки и компиляции можно переходить к выполнению модели в Engee, которая будет получать сигналы из Arduino MEGA по COM.
❗️ Перед запуском модели в Engee убедитесь в выполнении шагов:
- Установлен пакет поддержки внешнего оборудования.
- Запущена клиентская программа из пакета поддержки.
- Статус подключения Engee в клиентской программе "Подключен".
- Контроллер подключен в COM-порту.
- На контроллере запущена программа обработки сигналов, поступающих по COM.
- Имя порта COM, к которому подключен контроллер, соответствует установленному в интерфейсных блоках модели.
Запустим модель в Engee, и соберём полученные данные в simout:
# @markdown **Программное управление моделированием:**
# @markdown Требуется ввести только имя модели
имя_модели = "com_read_arduino" # @param {type:"string"}
if имя_модели in [m.name for m in engee.get_all_models()]
модель = engee.open( имя_модели );
else
модель = engee.load( "$(@__DIR__)/"*имя_модели*".engee" );
end
engee.run(модель);
engee.close(модель, force=true);
Полученные в результате моделирования данные можно отразить на графике:
using Plots; gr();
plot(simout["$имя_модели/data_decode"].time,
simout["$имя_модели/data_decode"].value;
legend = :topright, label = "Данные из Arduino", title = "Пример чтения из COM",
xlabel = "Время, с", ylabel = "Декодированные значения",
seriestype=:sticks, linestyle=:dash, seriescolor = :green,
marker = :circle, markersize = 3, markercolor = :green, markerstrokecolor = :green)
Можно заметить, что полученные Engee значения соответствуют тем, что были определены в коде выдачи последовательности в COM-порт на Arduino MEGA.
В этом примере мы ознакомились с работой блока COM RX Engee для получения сообщений по последовательному порту из внешнего оборудования - Arduino MEGA. Модель Engee, как мы убедились, после настройки подключения получает и декодирует данные из последовательного порта.