====== peripherial ====== Модули ввода вывода, работающие через последовательный порт. ===== promauto.conf.yml ===== module.plci1: netaddr: 1 portnum: 1 enable: on emulate: off retrial: 3 type: promauto.pdio descr: my descr ===== Общие параметры ===== ^ Параметр ^ Умолчание ^ Описание ^ |**portnum** | ''0'' |номер последовательного порта, который должен быть заранее определен (см. [[doc:jroboplc:modules:serial]]) | |**retrial** | ''1'' |кол-во повторных запросов при ошибке связи | |**emulate** | ''off'' |on/off - эмуляция работы | |**netaddr** | ''0'' |сетевой адрес | |**descr** | |описание (произвольный текст) | |**systag** | ''SYSTEM.'' |префикс для системных тегов | |**type** | |тип устройства | |**logerror** | ''0'' |количество лог записей, производимых при ошибках связи. Данный параметр также можно менять одноименной командой модуля| |**logreq** | ''0'' |количество лог записей для успешных запросов. Данный параметр также можно менять одноименной командой модуля| |**delay_ms** | ''0'' |задержка перед отправкой запроса, мс | |**chmap** | ''off'' |разрешение создания тегов ''CHANNELMAP'' | |**chmap.name** | '''' |короткое имя модуля, используемое в ''CHANNELMAP''. Если не указано, то используется имя модуля | |**chmap.value** | '''' |предопределенный вручную список тегов в ''CHANNELMAP'' | ===== Адресация каналов CHANNELMAP ===== Каждый периферийный модуль содержит в себе множество тегов. В некоторых ситуациях пользователю необходимо вводить имя тега вручную, например, чтобы прописать адрес в канал в [[doc:jroboplc:modules:roboplant]]. Чтобы облегчить пользователю процесс установки канала и исключить необходимость помнить имена тегов полностью, нужно предоставить пользователю возможность выбора тега из списка, содержащего только предназначенные для каналов теги. Данную задачу решает ''CHANNELMAP''. ''CHANNELMAP'' - это карта наиболее подходящих для установки в каналы тегов, сопоставляющая полные имена тегов с их короткими вариантами (адресами), и используемая в программах визуализации (hmi-клиентах). Другими словами, ''CHANNELMAP'' только подсказывает hmi-клиенту, какие теги модуля могут быть адресами каналов, а также способ их записи, удобный для пользователя. В тоже время ''CHANNELMAP'' не ограничивает hmi-клиент в выборе любого тега в качестве адреса канала, если это ему необходимо. При включенном параметре ''chmap'' некоторые периферийные модули автоматически создают карту часто используемых тегов в виде строкового значения в одном или нескольких тегах ''SYSTEM.CHANNELMAP.N'' (где N значение от 0), например: run>l owen1 owen1:SYSTEM.CHANNELMAP.0 STRING = owen1:1 inp00:0 cnt00:cnt0 inp01:1 cnt01:cnt1 inp02:2 cnt02:cnt2 inp03:3 cnt03:cnt3 inp04:4 cnt04:cnt4 inp05:5 cnt05:cnt5 inp06:6 cnt06:cnt6 inp07:7 cnt07:cnt7 inp08:8 cnt08:cnt8 inp09:9 cnt09:cnt9 inp10:10 cnt10 inp11:11 cnt11 inp12:12 cnt12 inp13:13 cnt13 inp14:14 cnt14 inp15:15 cnt15 Если значение строки слишком большое, то тегов ''SYSTEM.CHANNELMAP'' будет создано несколько, т.е. длинная строка делится на несколько маленьких и помещается в теги SYSTEM.CHANNELMAP.0, SYSTEM.CHANNELMAP.1 и т.д. На стороне клиента нужно просто соединить значения данных тегов (через пробел), чтобы получить единый список. **Формат значения ''CHANNELMAP''**\\ Значение состоит из списка пар ключ-значение, разделенных между собой любым количеством пробелов, а между ключом и значением - двоеточием. Если ключ и значение равны, то двоеточие и значение не указываются. Первая пара в списке преобразует оригинальное имя модуля в адрес модуля (короткое имя модуля). Задать короткое имя модуля можно в параметре ''chmap.name''. Последующие пары преобразуют оригинальное имя тега в адрес тега (короткое имя тега). **Использование CHANNELMAP в HMI**\\ Задача HMI найти все имеющиеся теги, содержащие в имени подстроку ''CHANNELMAP'', и построить единую карту тегов, которая будет использоваться элементами управления пользовательского интерфейса. Например, из вышеприведенного примера получится следующее: ^Полное имя тега ^Адрес модуля ^Адрес тега ^ | owen1.inp00 | 1 | 0 | | owen1.inp01 | 1 | 1 | | : | : | : | | owen1.inp15 | 1 | 15 | | owen1.cnt00 | 1 | cnt0 | | owen1.cnt01 | 1 | cnt1 | | : | : | : | | owen1.cnt00 | 1 | cnt15 | //Примечание: В таблице для примера использована точка для разделения имени модуля и тега. Разделитель может быть любым.// Далее, развивая пример, hmi-клиент дает пользователю возможность выбрать/прописать адрес (короткое имя) модуля из одного выпадающего списка, а затем выбрать/прописать адрес (короткое имя) тега из другого выпадающего списка, в котором будут содержаться только принадлежащие модулю теги. **Задание CHANNELMAP в ручную**\\ Для любого периферийного модуля значение тегов ''CHANNELMAP'' можно зададать вручную при помощи параметра ''chmap.value'', например: chmap: on chmap.name: 1 chmap.value: inp00:A inp01:B Карта тегов в hmi-клиенте: ^Полное имя тега ^Адрес модуля ^Адрес тега ^ | owen1.inp00 | 1 | A | | owen1.inp01 | 1 | B | ===== Общие теги ===== |SYSTEM.ErrorCount | ''INT'' |Количество ошибок связи | |SYSTEM.ErrorFlag | ''BOOL'' |Флаг ошибки связи | |SYSTEM.NetAddr | ''INT'' |Сетевой адрес | |SYSTEM.Port | ''INT'' |Номер последовательного порта | |SYSTEM.TimePeriod | ''INT'' |Время, затраченной на опрос в одном цикле | |SYSTEM.UpdateDate | ''INT'' |Дата последнего запроса | |SYSTEM.UpdateTime | ''INT'' |Время последнего запроса | |SYSTEM.SN | ''STRING'' |Серийный номер (опциональный) |