DevStudio. Modbus устройства
Назначение: описание структуры модели верхнего уровня ModbusDeviceList.xlsx — файла перечня Modbus-устройств проекта и параметров их опроса.
Ожидаемый результат: разработчик понимает состав листов, назначение колонок на листах OBJ.* и связь полей с моделями OBJTYPE и файлами экземпляров DsModbusDevices.
ModbusDeviceList.xlsx задаёт перечень Modbus-станций проекта и параметры их TCP-опроса. По этим данным alpha.Server через модули Uniplant Atomix создаёт в alpha.DevStudio физические Slave-устройства, Application с картой регистров и диагностику связи.
Введение
Section titled “Введение”ModbusDeviceList.xlsx — Excel-модель верхнего уровня, в которой перечисляются Modbus-устройства проекта (шлюзы, ПЛК, панели, модули ввода-вывода и др.) и параметры их опроса по протоколу Modbus TCP.
По данным файла внутренний модуль DevStMBDevice Конфигуратор отображает список устройств для выбора; внешний модуль ModbusDevices загружает соответствующие модели OBJTYPE из библиотеки Diagnostic\Modbus, подключает файлы экземпляров из DsModbusDevices\ и создаёт объекты в DevStudio.
Общие правила разбора ячеек (#, H, @, d, VQ, IOBJ и др.) — в Правилах заполнения Excel-файлов. Принцип связи с OBJTYPE — в Связи с моделями верхнего уровня.
Расположение в проекте
Section titled “Расположение в проекте”| Элемент | Путь |
|---|---|
| Файл модели | JSC\Usr\Prj\Conf\DevStudioDevs\Modbus\ModbusDeviceList.xlsx |
| Каталог моделей экземпляров | JSC\Usr\Prj\Conf\Models\DsModbusDevices\ |
| Модели OBJTYPE устройства | JSC\Conf\Models\ObjTypes\Diagnostic\Modbus\ |
Подключение файлов экземпляров по IOBJ — в Modbus. Файл экземпляров DsModbusDevices.
Состав листов
Section titled “Состав листов”Типовая книга ModbusDeviceList.xlsx содержит один или несколько листов OBJ.*. Имя листа задаёт группу устройств (по назначению, подсистеме или типу оборудования).
| Лист | Назначение |
|---|---|
OBJ.* | Экземпляры Modbus-устройств; каждая строка d — одно опрашиваемое устройство (станция Modbus TCP) |
В отличие от NetSwitches.xls, в рассматриваемом проекте нет листов Options и @* — все рабочие данные сосредоточены на листах OBJ.*.
Листы OBJ.*
Section titled “Листы OBJ.*”Каждый лист с именем OBJ.* содержит таблицу экземпляров Modbus-устройств. Структура заголовка совпадает с общими правилами Excel-моделей:
- строка
#— инструкции колонок (VQ,@,IOBJи др.); - строка
H— имена переменных; - строка
@— краткие описания колонок; - строки
d— экземпляры (по одной строке на устройство).
Каждая строка d описывает одно Modbus-устройство (станцию Modbus TCP).
Колонки листа OBJ.*
Section titled “Колонки листа OBJ.*”| Переменная | Обязательность | Описание |
|---|---|---|
| Domain | да | Полевой домен DevStudio (подстанция), в котором создаётся физическое устройство. Имя должно совпадать с доменом, указанным в проекте alpha.DevStudio |
(служебные @) | — | На части листов между Domain и GateTag — объект, префикс и постфикс ячейки; участвуют в формировании TAG и GateTag |
| GateTag | да | Тег шлюза Modbus. Используется при привязке Slave-устройства к менеджеру ModbusTcpMaster на сервере |
| ServerTag | да | Тег сервера обработки (IOS_App), на котором выполняется опрос и создаётся IOS-представление |
| TAG | да | Имя опрашиваемого устройства (станция Modbus TCP). Передаётся в OBJTYPE как [TAG] |
| PathDevStudio | да | Путь размещения объекта диагностики связи в дереве DevStudio (например, root.G0_D1810BX0.NetDiagnostic.JL_CN_1002) |
| HmiTag | — | Имя экрана/группы для генерации мнемосхем HMI |
| OBJTYPENAME | да | Типовой блок OBJTYPE из библиотеки Diagnostic\Modbus — определяет шаблон генерации устройства и диагностики |
| parentDescr | — | Краткое наименование (отображаемое имя) |
| EqtDescr | — | Описание оборудования |
| Title | — | Сокращённое обозначение |
| SystemPosition | да | Позиция / титул (подстанция, напр. G0-D1810BX0) |
| NetName | да | Имя сетевого адаптера (сеть проекта, напр. G-ASUE-L2-M1) |
| iTCPAddr_1 … iTCPAddr_4 | да | Четыре октета IP-адреса основного интерфейса |
| NetName2 | для резервирования | Имя второго адаптера |
| iTCPAddr2_1 … iTCPAddr2_4 | для резервирования | Октеты IP второго интерфейса |
| Port | да | TCP-порт Modbus (типично 502) |
| SlaveId | да | Адрес Modbus Slave |
| IOBJ | да | Путь к файлу экземпляров в DsModbusDevices\ |
Расширенные колонки резервирования (OBJ.TestDevice)
Section titled “Расширенные колонки резервирования (OBJ.TestDevice)”На тестовом листе OBJ.TestDevice для OBJTYPE с несколькими адаптерами дополнительно заданы поля резервных каналов:
| Переменная | Описание |
|---|---|
| NetName_res | Имя резервного сетевого адаптера (основной канал) |
| iTCPAddr_res_1 … iTCPAddr_res_4 | Октеты IP резервного основного канала |
| NetName_res2 | Имя второго резервного адаптера |
| iTCPAddr_res2_1 … iTCPAddr_res2_4 | Октеты IP второго резервного канала |
| Port_res | TCP-порт резервного канала |
Эти поля используются моделями OBJTYPE с несколькими адаптерами (например, MbTcpPlc_4Adapters).
Типы объектов (OBJTYPENAME) и связь с OBJTYPE
Section titled “Типы объектов (OBJTYPENAME) и связь с OBJTYPE”Значение OBJTYPENAME выбирает модель OBJTYPE и способ генерации устройства в DevStudio. Цепочка данных совпадает с другими моделями верхнего уровня (см. Связь с моделями верхнего уровня):
- На листе
OBJ.*объявляется строка экземпляра с переменными (TAG,Domain,GateTag,ServerTag, IP-адреса,Port,SlaveIdи др.). - По
OBJTYPENAMEопределяется файл OBJTYPE; значения колонок подставляются как внешние переменные — в т.ч. на листе DevSt.attributes (атрибутEqtAddress:[iTCPAddr_1].[iTCPAddr_2].[iTCPAddr_3].[iTCPAddr_4]:[Port] Slave [SlaveId]). - Через IOBJ подключается файл экземпляров.
| OBJTYPENAME | Назначение | Статья OBJTYPE |
|---|---|---|
| MbTcpDevice | Modbus TCP-устройство с одним сетевым адаптером | MbTcpDevice |
| MbTcpDevice_2Adapters | Modbus TCP-устройство с двумя адаптерами | MbTcpDevice_2Adapters |
| MbTcpPlc_4Adapters | Modbus TCP-устройство с четырьмя адаптерами и резервированием | MbTcpPlc_4Adapters |
В примере ModbusDeviceList.xlsx проекта GPP_AUCS используются: MbTcpDevice (основная масса устройств) и MbTcpPlc_4Adapters (тестовый экземпляр).
Модуль загружает OBJTYPE по имени из OBJTYPENAME и считывает параметры с листа NetDiag.opt — они определяют пути в DevStudio, менеджер ModbusTcpMaster, типы IOS-представлений и количество сетевых адаптеров.
Дальнейшая обработка (выбор устройства, запуск генерации) — во внутреннем модуле DevStMBDevice Конфигуратор и внешнем модуле ModbusDevices (ModbusDevices).
Примеры строк экземпляров
Section titled “Примеры строк экземпляров”Шлюз EKF (лист OBJ.EKF)
Section titled “Шлюз EKF (лист OBJ.EKF)”| Поле | Значение |
|---|---|
| Domain | G0-D1810BX0 |
| GateTag | G0-D1810BX0-JL-CN-1002-1A |
| ServerTag | G0-D1810BX0-JL-CS-1001-SRV001 |
| TAG | G0-D1810BX0-JL-CN-1002-1A |
| PathDevStudio | root.G0_D1810BX0.NetDiagnostic.JL_CN_1002 |
| OBJTYPENAME | MbTcpDevice |
| SystemPosition | G0-D1810BX0 |
| NetName | G-ASUE-L2-M1 |
| iTCPAddr_1 … iTCPAddr_4 | 10.2.64.60 |
| Port | 502 |
| SlaveId | 1 |
| IOBJ | EKF\G0-D1810BX0-JL-CN-1002-1A |
Связанные материалы
Section titled “Связанные материалы”- Modbus. Файл экземпляров DsModbusDevices — структура файла, подключаемого по IOBJ
- DevStMBDevice Конфигуратор — сквозной сценарий: выбор устройства и запуск генерации
- ModbusDevices — Генератор устройств Modbus — настройки и результат генерации