Модель ПЛК листы MKO.
Листы MKO.*
Section titled “Листы MKO.*”Расположение модели ПЛК: JSC\Usr\Prj\Conf\Models\PLC\Logic\{…}\{Имя_ПЛК}.xlsx
Листы с префиксом MKO. описывают межконтроллерный обмен (МКО) между ПЛК проекта в среде Unimod 2. По данным этих листов конфигуратор Uniplant Atomix формирует записи МКО, данные глобального словаря и ST-фрагменты привязки.
Поддерживаемые типы связей
Section titled “Поддерживаемые типы связей”В текущей реализации тип связи МКО определяется не колонкой, а именем Excel-листа. Поддерживаются листы:
| Лист | Тип связи МКО | Тип диагностической структуры в глобальном словаре |
|---|---|---|
MKO.EthernetRes | EthernetRes | MKO_DIAG |
MKO.STNet | STNet | STNET_DIAG |
Если в модели ПЛК указан другой лист с префиксом MKO., конфигуратор выдаст ошибку о неподдерживаемом типе связи — такой лист не будет обработан.
Что создаётся по данным МКО
Section titled “Что создаётся по данным МКО”По строкам листов MKO.EthernetRes и MKO.STNet формируются:
- записи МКО для импорта в
configuration.jsonUnimod (см. результаты генерации Unimod); - данные для генерации глобального словаря;
- ST-фрагменты МКО — если для связи заданы файл и лист карты (колонки IGM и Maps).
Если у инстанса не заполнены IGM и Maps, запись МКО всё равно может быть использована для импорта конфигурации. ST для такой связи создан не будет.
Организация данных в Excel
Section titled “Организация данных в Excel”Файл модели ПЛК
Section titled “Файл модели ПЛК”Листы MKO.EthernetRes / MKO.STNet в файле модели ПЛК задают для каждой строки с маркером d:
| Параметр | Колонка | Описание |
|---|---|---|
| Номер связи | num | Порядковый номер инстанса МКО. |
| Направление | inOut | Направление обмена (например, Вход). |
| Имя массива | dataVarName | Имя структуры данных МКО в Unimod. |
| Тип массива | dataVarType | Тип элементов массива (например, Bool). Обязателен, если карта не используется. |
| Размер массива | dataVarSize | Число элементов массива. Обязателен, если карта не используется. |
| Диагностика | diagVarName | Имя диагностической структуры; рекомендуется заполнять всегда. |
| UDP-обмен | port, ipAddress1…ipAddress4 | Порт и до четырёх IP-адресов удалённых узлов. Октеты задаются в колонках ipAddressN_1 … ipAddressN_4; итоговый адрес — формулой в колонке ipAddressN. |
Параметры ST-NET (MKO.STNet) | EPI, Max_EPI_Error, Ping_Interval_EPI_Multiplier и др. | Параметры протокола ST-NET; только для листа MKO.STNet — см. лист MKO.STNet. |
Параметры Ethernet-res (MKO.EthernetRes) | timeout, ackTo, sndPause | Таймауты UDP-обмена; только для листа MKO.EthernetRes — см. лист MKO.EthernetRes. |
| Карта привязок | IGM, Maps | Путь к внешнему файлу карты и имя листа в нём (см. ниже). |
Маркеры строк — по правилам Excel (h, d, @).
Колонки IGM и Maps
Section titled “Колонки IGM и Maps”
Рисунок — колонки IGM (путь к файлу карты) и Maps (лист в файле)
| Колонка | Заголовок | Описание |
|---|---|---|
| IGM | %LocalPath%\Conf\Models\PLC\MKO\$S.xlsx | Путь к внешнему файлу с картами привязок. В строках данных подставляется [opt.plcName]-MKO → например, P0-80-010-JF01-LP1001-1A1-MKO.xlsx в каталоге JSC\Usr\Prj\Conf\Models\PLC\MKO\. |
| Maps | Maps | Имя листа в файле карты. В строках данных — [dataVarName]: лист совпадает со значением колонки dataVarName (например, MKO_P0_80_010_CA1001). |
Конструкция IGM подключает файл, содержащий данные для генерации ST-секций с привязками к элементам массива. Общие принципы подстановок IGM — в листах шаблонов Unimod FB и служебных символах.
Внешний файл карты МКО
Section titled “Внешний файл карты МКО”Путь по умолчанию:
JSC\Usr\Prj\Conf\Models\PLC\MKO\{opt.plcName}-MKO.xlsxВнешний файл карты МКО нужен только для:
- генерации ST;
- уточнения типа и размера массива при подготовке глобального словаря.
Если файл карты не используется, для глобального словаря должны быть явно заданы dataVarType и dataVarSize на листе MKO.
В файле — отдельный лист на каждую связь (имя листа = dataVarName). На листе задаются привязки элементов массива, колонка Type (при необходимости), arrNum, TAG и пары IGM.POU* / PouName* для JSM-файлов привязки.
Результаты генерации ST сохраняются в каталоге Unimod проекта ПЛК (файлы вида MKO_FROM_*.txt, импорт — через меню Unimod).
Валидация инстансов МКО
Section titled “Валидация инстансов МКО”Порядок обработки инстансов MKO включает обязательную валидацию исходных данных. Инстанс МКО исключается из генерации, если:
- обнаружены дубликаты dataVarName;
- обнаружены дубликаты diagVarName (если поле заполнено);
- обнаружены дубликаты num;
- обнаружен конфликт адресов обмена: совпадение одной и той же пары IP-адрес:порт у разных инстансов МКО;
- заполнено только одно из полей IGM или Maps;
- не найден файл карты, указанный в IGM;
- не найден лист карты, указанный в Maps.
Правила для diagVarName
Section titled “Правила для diagVarName”Поле diagVarName рекомендуется заполнять всегда. Если оно пустое, диагностическая структура в глобальный словарь не попадёт. На практике это приводит к ошибке компиляции Unimod вида «не задана диагностическая структура МКО».
Правила для ST-генерации
Section titled “Правила для ST-генерации”Для генерации ST обязательны обе колонки:
- IGM — путь к файлу карты;
- Maps — имя листа в файле карты.
Проверки строк карты
Section titled “Проверки строк карты”Если на листе карты есть колонка TAG, конфигуратор проверяет, существует ли в ПЛК объект с таким TAG. Если объект не найден, строка карты пропускается и в ST не попадает.
Также строка карты пропускается, если:
- не заполнен arrNum;
- arrNum не является числом;
- arrNum дублируется на том же листе.
Это не блокирует всю связь целиком: пропускается только проблемная строка карты.
Проверки JSM на листе карты
Section titled “Проверки JSM на листе карты”Для генерации ST должны быть корректно заданы данные подключения JSM на листе карты:
- должны быть заполнены IGM.POU* и PouName*;
- путь к JSM не должен быть пустым;
- файл JSM должен существовать;
- содержимое JSM после подстановок не должно быть пустым.
Если одно из этих условий не выполнено, соответствующий ST-фрагмент не создаётся. Если по связи MKO не удалось сформировать ни одного ST-фрагмента, конфигуратор выводит итоговое предупреждение с перечислением причин.
Тип и размер для глобального словаря
Section titled “Тип и размер для глобального словаря”Основная переменная МКО
Section titled “Основная переменная МКО”- если подключён файл карты и на листе карты заполнена колонка Type, тип для глобального словаря берётся оттуда;
- если карта не используется или тип на карте не задан, используется dataVarType с листа MKO.
Размер массива
Section titled “Размер массива”- если заполнен dataVarSize, используется он;
- если dataVarSize не заполнен, но есть карта, размер массива для словаря вычисляется по максимальному arrNum на листе карты.
Лист MKO.EthernetRes
Section titled “Лист MKO.EthernetRes”Лист MKO.EthernetRes задаёт связи МКО типа EthernetRes (в Unimod отображаются как Ethernet-res). Для диагностической структуры в глобальном словаре используется тип MKO_DIAG.
Общие колонки (num, inOut, dataVarName, diagVarName, port, ipAddress1…ipAddress4, IGM, Maps и др.) совпадают с листом MKO.STNet. Дополнительно на листе MKO.EthernetRes задаются параметры UDP-обмена — они попадают в конфигурацию связи при импорте в Unimod.

Рисунок — окно «Контроллеры и коммуникации» в Unimod после импорта связи EthernetRes
Соответствие колонок Excel и полей Unimod
Section titled “Соответствие колонок Excel и полей Unimod”Колонка на листе MKO.EthernetRes | Поле в Unimod | Пример | Примечание |
|---|---|---|---|
| (имя листа) | Тип связи | Ethernet-res | Тип задаётся именем листа; колонку ConnectionType не добавляют. |
| num | Номер связи | 1 | В Unimod отображается как «МКО: n». |
| inOut | Направление | Выход | Направление обмена. |
| port | Порт | 8001 | UDP-порт связи. |
| ipAddress1 … ipAddress4 | Адрес удалённого узла 1 … 4 | 10.6.0.111, 10.6.10.111 | До четырёх адресов; незаполненные узлы остаются пустыми. |
| timeout | Таймаут ожидания ответа | 0 | Таймаут ожидания ответа, мс. |
| ackTo | Таймаут на квитанцию | 0 | Таймаут на квитанцию, мс. |
| sndPause | Пауза перед передачей | 0 | Пауза перед передачей, мс. |
| comment | Комментарий | test | Произвольный комментарий к связи. |
| dataVarName | Структура данных МКО | JJJ | Имя массива/структуры обмена в словаре Unimod. |
| diagVarName | Диагностическая структура | JJJ_DIAG | Рекомендуется заполнять всегда (см. правила для diagVarName). |
Пример (модель P0-80-010-JF01-LP1001-1A1)
Section titled “Пример (модель P0-80-010-JF01-LP1001-1A1)”Фрагмент листа MKO.EthernetRes (связи «Вход»):
| num | dataVarName | dataVarSize | port | ipAddress1 | comment |
|---|---|---|---|---|---|
| 1 | MKO_P0_80_010_CA1001 | 318 | 8013 | 10.6.0.111 | Св. P0-80-010 (кор 1 блок) |
| 2 | MKO_P0_80_010_CA1002 | 211 | 8015 | 10.6.0.117 | Св. P0-80-010 (кор 2 блок) |
| 3 | MKO_P0_80_030 | 361 | 8005 | 10.6.0.83 | Св. P0-80-030 (ТСБ) |
Для каждой строки файл карты: JSC\Usr\Prj\Conf\Models\PLC\MKO\{opt.plcName}-MKO.xlsx, лист — по dataVarName.
Лист MKO.STNet
Section titled “Лист MKO.STNet”Лист MKO.STNet задаёт связи МКО типа STNet (в Unimod отображаются как ST-NET(S)). Для диагностической структуры в глобальном словаре используется тип STNET_DIAG.
Общие колонки (num, inOut, dataVarName, diagVarName, port, ipAddress1…ipAddress4, IGM, Maps и др.) совпадают с листом MKO.EthernetRes. Дополнительно на листе MKO.STNet задаются параметры протокола ST-NET — они попадают в конфигурацию связи при импорте в Unimod.

Рисунок — окно «Контроллеры и коммуникации» в Unimod после импорта связи STNet
Соответствие колонок Excel и полей Unimod
Section titled “Соответствие колонок Excel и полей Unimod”Колонка на листе MKO.STNet | Поле в Unimod | Пример | Примечание |
|---|---|---|---|
| (имя листа) | Тип связи | ST-NET(S) | Тип задаётся именем листа; колонку ConnectionType не добавляют. |
| num | Номер связи | 1 | В Unimod отображается как «МКО: n». |
| inOut | Направление | Выход | Направление обмена. |
| port | Порт | 8001 | UDP-порт связи. |
| ipAddress1 … ipAddress4 | Адрес удалённого узла 1 … 4 | 10.6.0.111, 10.6.10.111 | До четырёх адресов удалённых узлов. |
| EPI | Expected_Packet_Interval | x4:800ms | Интервал ожидаемого пакета. |
| Max_EPI_Error | Max_EPI_Error | 300000 | Мкс; в Unimod допустимый диапазон [1, EPI]. |
| Ping_Interval_EPI_Multiplier | Ping_Interval_EPI_Multiplier | 16 | См. допустимые значения. |
| Time_Coord_Msg_Min_Multiplier | Time_Coord_Msg_Min_Multiplier | 3 | В Unimod диапазон [1, 937499]. |
| Time_Coord_Response_EPI_Limit | Time_Coord_Response_EPI_Limit | 3 | В Unimod диапазон [3, 8]. |
| CO_Interval_EPI_Multiplier | CO_Interval_EPI_Multiplier | 3 | Множитель интервала CO. |
| Timeout_Multiplier | Timeout_Multiplier | 3 | См. допустимые значения. |
| Priority | Priority | 4 | См. допустимые значения. |
| FTTI_EPI_Multiplier | FTTI_EPI_Multiplier | 3 | Множитель FTTI относительно EPI. |
| comment | Комментарий | test | Произвольный комментарий к связи. |
| dataVarName | Структура данных МКО | JJJ | Имя массива/структуры обмена в словаре Unimod. |
| diagVarName | Диагностическая структура | JJJ_DIAG | Рекомендуется заполнять всегда (см. правила для diagVarName). |
Проверки для MKO.STNet
Section titled “Проверки для MKO.STNet”Для связей STNet конфигуратор Uniplant Atomix дополнительно проверяет допустимые значения параметров:
| Параметр | Допустимые значения |
|---|---|
| EPI | x1:200ms, x2:400ms, x3:600ms, x4:800ms |
| Timeout_Multiplier | 1, 2, 3 |
| Priority | 1, 2, 3, 4 |
| Ping_Interval_EPI_Multiplier | 16, 32, 64, 128, 256, 512 |
Если значение указано неверно, конфигуратор выдаёт предупреждение. Для импорта в конфигурацию такое значение будет очищено.
Остальные параметры ST-NET (Max_EPI_Error, Time_Coord_Msg_Min_Multiplier, Time_Coord_Response_EPI_Limit, CO_Interval_EPI_Multiplier, FTTI_EPI_Multiplier) передаются в Unimod как заданы на листе; окончательная проверка диапазонов выполняется в интерфейсе Unimod (см. подсказки диапазонов в окне связи на рисунке выше).
Связанные материалы
Section titled “Связанные материалы”- Модель ПЛК — обзор листов модели
- ПЛК Конфигуратор — опция «Генерация МКО» и импорт в Unimod
- Служебные символы и ключевые слова — подстановки
%LocalPath%,$S,[opt.plcName],[dataVarName]