Skip to content

Modbus. Файл экземпляров DsModbusDevices

Назначение: описание структуры файла экземпляров в каталоге DsModbusDevices — модели, подключаемой из ModbusDeviceList.xlsx инструкцией IOBJ.

Ожидаемый результат: разработчик понимает состав листов, назначение колонок, синтаксис [*.] и связь с родительской строкой ModbusDeviceList.xlsx.

Расположение в проекте

Section titled “Расположение в проекте”
ЭлементПуть
КаталогJSC\Usr\Prj\Conf\Models\DsModbusDevices\
ПодключениеКолонка с инструкцией IOBJ на листе OBJ.* файла ModbusDeviceList.xlsx

В последней рабочей колонке листа OBJ.* файла ModbusDeviceList.xlsx в строке # задаётся инструкция IOBJ, в строке H — шаблон пути, в строке d — относительный путь без расширения. Конструкция $S подставляет значение из ячейки строки d.

Пример из проекта PSaLA_MST_AFA_OLD:

ЭлементЗначение
Лист ModbusDeviceListOBJ.Devices
Шаблон (строка H)%JSC%\Usr\Prj\Conf\Models\DsModbusDevices\$S.xlsx
Значение IOBJ (строка d)EKF\P0-80-010-JF01-CN1001-1A1
Разрешённый путьJSC\Usr\Prj\Conf\Models\DsModbusDevices\EKF\P0-80-010-JF01-CN1001-1A1.xlsx
Родительский TAGP0-80-010-JF01-CN1001-1A1
Родительский OBJTYPENAMEMbTcpDevice

Типовой файл экземпляра содержит:

ЛистНазначение
OPT.DeviceПараметры Modbus-станции и настройки опроса; значения вида [*.имя] берутся из родительской строки ModbusDeviceList.xlsx
OBJ.*Экземпляры дочерних OBJTYPE (сигналы, каналы, дискретные точки)
MBM.mapКарта Modbus: соответствие канала объекта адресу регистра и области памяти (функции опроса)

Переменные родителя [*.]

Section titled “Переменные родителя [*.]”

Файл экземпляров подключается из конкретной строки d листа OBJ.* файла ModbusDeviceList.xlsx (колонка IOBJ). Переменные этой строки доступны в подключённом файле через префикс [*.] — обращение к переменной родителя.

Запись в файле экземпляраИсточник при подстановке
[*.TAG]колонка TAG родительской строки
[*.PathDevStudio]колонка PathDevStudio
[*.Port]колонка Port
[*.Domain]колонка Domain
[*.GateTag]колонка GateTag
[.Domain].[.GateTag].[*.TAG]составное значение из нескольких колонок родителя

На листах OBJ.* и MBM.map файла экземпляров переменные [*.] обычно не используются — там задаются собственные теги и адреса дочерних объектов.

На листе OPT.Device одна строка d описывает Modbus-станцию — параметры TCP-подключения, поведение опроса и ограничения запросов. Большинство идентификаторов станции формируются из родителя через [*.].

Структура заголовка: строки #, H, @, затем строка d. Колонки с @ в строке # — разделители групп параметров (без объявления переменной).

Основные параметры станции

Section titled “Основные параметры станции”
ПеременнаяПример (PSaLA)Описание
opt.plcName[*.TAG]Префикс имени ПЛК-представления
PathDevStudioIosDiagnostic[*.PathDevStudio]Путь IOS-диагностики связи
StationName[*.TAG]Имя Modbus-станции
Slave[*.TAG]Идентификатор Slave
Port[*.Port]TCP-порт
ReverseBytesНетПоменять байты в слове
ReverseFloatWordsНетПорядок слов (TMC, TR4)
ReverseIntWordsНетПорядок слов (TMC, TR4, TM8, TR8)
AdressMapPathApp.Map_[*.TAG]Имя карты адресов в Application
ПеременнаяПример (PSaLA)Описание
UseExtendedFunctionsНетРасширенные функции Modbus
OnStationFailureOrBusyПовторить запрос данныхПоведение при сбое/занятости
LostConnectionTimeout1000Таймаут потери связи, мс
CommandRepeatCount2Повторы команды
SlaveStation[*.Domain].[*.GateTag].[*.TAG]Полный путь подчинённой станции
SendTROnConnectedНетОтправлять TR при появлении на связи
WriteRegisterFunctionMultipleСпособ записи в регистры
RequestMethodПо максимумуСтратегия формирования запросов на чтение
ReserveChannelsModeРежим резервных каналов
FailedRequestLimit5Лимит неуспешных запросов
ResponseTimeout750Таймаут ответа, мс
RequestCount5Макс. одновременных запросов
DedicatedConnectionНетВыделенное подключение
ReadyModeАвтоматический режим определения готовностиРежим готовности
EnabledAtStartДаДоступность при старте

Максимальные длины запросов

Section titled “Максимальные длины запросов”
ПеременнаяПримерОбласть памяти Modbus
Coils2000Coils (функция 01/05/15)
Discretes2000Discrete Inputs (функция 02)
HoldingRegisters125Holding Registers (функция 03/06/16)
InputRegisters125Input Registers (функция 04)
Files124Files
OutputRegisters123Holding Registers на запись

Лист с префиксом OBJ.* (например, OBJ.DiProc) содержит экземпляры дочерних OBJTYPE — объекты, которые будут созданы в Application и опрашиваться через Modbus-станцию родителя. Каждая строка d — один дочерний объект.

Структура заголовка: строки #, H, @, затем строки d.

ПеременнаяОбязательностьОписание
TAGдаТег дочернего объекта в Application; должен совпадать с TAG на листе MBM.map
OBJTYPENAMEдаТиповой блок OBJTYPE дочернего объекта
TemplateдаИмя шаблона внутри OBJTYPE
parentDescrКраткое наименование
EqtDescrОписание оборудования / сигнала
TitleСокращённое обозначение

Пример строки (PSaLA, OBJ.DiProc)

Section titled “Пример строки (PSaLA, OBJ.DiProc)”
ПолеЗначение
TAGP0_80JEXA1408
OBJTYPENAME(тип дискретного сигнала проекта)
Templatemain
EqtDescr(описание точки)

Лист MBM.map формирует карту Modbus: для каждого дочернего объекта задаётся соответствие канала (channel) адресу регистра и области памяти (table), определяющей функции опроса/записи Modbus.

Количество строк на MBM.map соответствует количеству опрашиваемых каналов на листе OBJ.*; поле TAG должно совпадать с TAG дочернего объекта.

ПеременнаяОписание
TAGТег технологического объекта (как на листе OBJ.*)
channelИмя канала объекта (обычно Value)
EqtDescrОписание
tableОбласть памяти Modbus — определяет функцию опроса: Discretes Input, Coils, Input Registers, Holding Registers
addressАдрес регистра (или дискретного входа)
bitpositionНомер бита в регистре (для дискретных значений внутри регистра)
categoryКатегория данных (Frame), напр. 1000
TAGtableaddresscategory
P0_80JEXA1408Discretes Input01000
P0_80JZA1408Discretes Input11000
P0_80JTAH1408Discretes Input21000

Связь с OBJTYPE и генерацией

Section titled “Связь с OBJTYPE и генерацией”
  1. Файл экземпляра подключается из строки ModbusDeviceList.xlsx по IOBJ; параметры станции на OPT.Device собираются через [*.].
  2. Листы OBJ.* и MBM.map задают дочерние объекты и адреса Modbus для карты опроса.

Дальнейшая обработка — во внешнем модуле ModbusDevices (ModbusDevices) (см. алгоритм Modbus TCP).