Не существует обязательных записей для драйвера Modbus/TCP, которые должны присутствовать в файле конфигурации. Ранее бывшая обязательной запись plc устарела, начиная с версии «КАСКАД Цифра» 3.9.
Необходимо лишь задать порт сервера, если стандартный порт 502 не может быть использован. Пример:
[mod_1] tcpServerPort = 502
ВНИМАНИЕ
Если на одном компьютере запускаются несколько драйверов, для них должны быть указаны разные номера портов сервера. Номера портов необходимо изменить и на ПЛК, которые подключаются к драйверу.
Modbus/TCP — это адаптация последовательного протокола Modbus для обмена данными через TCP/IP. Драйвер Modbus/TCP может использоваться одновременно для Modbus/TCP и UNICOS.
Обмен информацией происходит с помощью различных функциональных кодов (см. п. Детальная информация о драйвере Modbus/TCP). Функциональные коды являются частью адреса периферии и определяются пользователем. Используемый функциональный код зависит от ПЛК в режиме ведомого устройства драйвера «КАСКАД Цифра». Функциональные коды не используются в режиме ведущего устройства.
Данный раздел предназначен для опытных пользователей «КАСКАД Цифра». В нем подробно описаны функциональные коды, записи в файле config и возможности отладки.
Функциональные коды
В следующей таблице приведены возможные функциональные коды с кратким описанием. Если «КАСКАД Цифра» работает как ведомое устройство, его функциональные коды будут зависеть от используемого ПЛК.
Функциональный код
Код
Описание
чтение регистров флагов
1
Чтение состояния ON/OFF (ВКЛ/ВЫКЛ) дискретного вывода.
чтение входных дискретных значений
2
Чтение состояния ON/OFF (ВКЛ/ВЫКЛ) дискретного ввода.
чтение ряда регистров
3
Чтение двоичного содержимого регистра хранения
чтение входных регистров
4
Чтение двоичного содержимого регистра ввода.
запись регистра флага
5
Ввод значения отдельного регистра флага: ON или OFF (ВКЛ или ВЫКЛ)
запись одиночного регистра
6
Запись значения в регистр хранения
чтение состояния исключения
7
Чтение содержимого восьми регистров флагов состояния исключения
принудительная запись ряда регистров флагов
15
Присвоение каждому регистру флага из ряда значения ON (ВКЛ) или OFF (ВЫКЛ).
запись ряда регистров
16
Запись значений ряда регистров хранения.
чтение очереди FIFO
24
Чтение содержимого регистров очереди FIFO
Записи в файле config
Запись
Тип
По умолчанию
Диапазон
Описание
aliveTimeout
unsigned
0
>= 0
Определяет время ожидания, в секундах, проверки присутствия в сети для драйвера. При значении 0 сообщения не отправляются. При значении > 0, драйвер отправляет запрос всем подключенным ПЛК через каждые «aliveTimeout» секунд. Если подключение в порядке, в целях проверки отправляется «пустой» запрос.
«aliveTimeoutMsg»
беззнаковое беззнаковое
1 0
—
Определяет функциональный код и адрес для запроса проверки присутствия в сети.
«addUnicosMarker»
unsigned
-1
-1..65535
Определяет адрес, используемый драйвером для определения типа кадра: Modbus или UNICOS. По умолчанию запись отключена.
«idleCloseTimeout»
unsigned
0
>= 0
Драйвер закрывает подключение к ПЛК если подключение находится в состоянии простоя в течение указанного периода времени (в секундах). Используется только для подключений в режиме ведущего устройства.
«littleEndianRegister»
bool
1
0|1
Порядок организации 16-битного регистра: сначала младший байт или сначала старший байт.По умолчаю используется прямой порядок, т.е. сначала передается младший бит.ПримечаниеСначала младший байт = наименее значимый бит сохраняется в первой позицииСначала старший байт = наиболее значимый бит сохраняется в первой позицииДополнительную информацию см. в Wikipedia
«maxConnRetryNumber»
unsigned
0
>= 0
Определяет количество попыток, которые предпринимает драйвер для установления подключения при отправке телеграммы, если запрос на подключение завершился неудачно.
«maxGap»
uint
16
0..100
Если разница между двумя последовательными адресами меньше или равно значению «maxGap», то эти адреса группируются в один блок опроса. В противном случае создается второй блок опроса. Эта запись позволяет оптимизировать запрос на опрос.
«maxPendingRequests»
unsigned
1
1..8
Максимальное число ожидающих запросов без ответа. Данная запись позволяет увеличить число запросов для ускорения передачи.Перед установкой значения больше 1, необходимо убедиться в том, что управляемый драйвером ПЛК способен принимать более одного запроса.
«maxQueueSize»
int
256
—
Определяет размер очереди запросов для режима ведущего устройства.Пример: maxQueueSize = 1000
«maxRetryNumber»
unsigned
0
>= 0
Определяет количество попыток установления подключения перед тем, как подключение отмечается как «отсутствующее». По умолчанию: 0, т. е., поле первой неуспешной попытки драйвер предпринимает бесконечные попытки установления подключения.
«OnlyActivePolls»
int
0
0|1
При OnlyActivePolls = 1 в системе с резервированием возможны только опросы активного драйвера. Значение по умолчанию — 0 (оба драйвера опрашивают ПЛК).
«plc»
string
«»
—
Устаревшая, начиная с версии 3.9 «КАСКАД Цифра».Имя точки данных ПЛК, с которой работает драйвер. Для каждого ПЛК должна существовать своя запись (например, plc = «_Mod_Plc_2»). Точки данные создаются автоматически при настройке параметров на панели конфигурации драйвера Modbus/TCP (см. п. Панель конфигурации драйвера Modbus/TCP).
«pollOptForBlob»
bool
1
0|1
Делает возможной оптимизацию запроса на опрос для типа blob.
«requestDelay»
uint
0
>= 0
Время в миллисекундах между двумя запросами. Значение не должно быть слишком высоким, т. к. оно снижает скорость передачи данных. Данная запись принимается в расчет только при использовании шлюзов.
«simUnicosPlc»
bool
0
0|1
Задает возможность отправки ведущим устройством кадров UNICOS для специальных, обычно не используемых функциональных кодов.Если в адресе периферии указать функциональный код 120, создается кадр состояния данных с произвольными данными.Если указать функциональный код 121, создается кадр отчета о событии с произвольными данными.Используется только в ЦЕЛЯХ ТЕСТИРОВАНИЯ.Функциональный код информирует драйвер о необходимости создания кадра UNICOS. Этот код не выходит за пределы драйвера.
«simUnicosEvents»
unsigned
24
1..24
Данный параметр определяет количество элементов моделированного отчета о событиях.
«statCheckInterval»
uint
20
5..100
Интервал времени записи драйвером элементов точки данных.
«tcpServerPort»
unsigned
502
1..65535
Номер порта TCP. Ведомоое устройство открывает клиентам сокет сервера через этот порт.
«tcpConnectTimeout»
unsigned
2000
>= 1000
Время ожидания подключения. (в мс)При установлении подключения драйвер ожидает завершения инициализации подключения и получения квитирования от ПЛК. Если драйвер не получает квитирование за отведенное время, он выполняет переподключение. Время ожидания определяется с помощью конфигурационной записи «tcpConnectTimeout» в сегменте Modbus.
«unicosMarker»
int
65535
-1..65535
По этому адресу драйвер определяет тип кадра: Modbus или UNICOS. Значение -1 отключает данную запись. Чтобы полностью отключить поддержку UNICOS, установленное значение записи должно быть равно -1 (параметру «addUnicosMarker» можно ничего не присваивать!).
Уровни отладки
Драйвер Modbus/TCP поддерживает несколько опций отладки из командной строки. Они применяются для поиска ошибок во время работы драйвера. Более подробная информация обо всех опциях может быть получена с помощью опции helpdbg (см. также раздел «Параметры менеджеров»).
Уровень отладки
Описание
-dbg 2
Детальная информация о работе драйвера. Рекомендуется использовать при малой нагрузке на драйвер, чтобы не повлиять на его производительность.
-dbg 25
Используется при подозрении на потерю сообщения запросом на опрос. Опция включает отображение соответствующих сообщений об ошибках и выводит их в средстве просмотра журналов. В обычном случает эти сообщения отключены, т. к. они не являются критичными для запроса на опрос. Помимо задач поиска пропавших опросов на этом уровне отладки можно просматривать предупреждения о поступлении данных, которые не принадлежат ни одному из указанных адресов. Эти сообщения отфильтровываются на уровне отладки, т. к. они могут переполнить журнал и в большинстве случаев не нужны пользователю.
-dbg 26
Отображение числа кадров в очереди Modbus.
-dbg 27
Отображение идентификаторов транзакций текущих кадров Modbus. Эта опция позволяет увидеть число неподтвержденнных запросов.
-dbg 9
Отображение времени цикла драйвера.
-dbg 10
На этом уровне отладки в средстве просмотра журналов отображается метка времени кадров событий UNICOS, это позволяет искать ошибки, связанные с метками времени при создании кадров событий UNICOS.
-report ALL
Переход на этот уровень отладки во время работы приводит к отображению групп опросов и блоков опросов.
Преобразования
Преобразование — это перевод аппаратных данных в формат «КАСКАД Цифра». В следующей таблице приведена информация о преобразовании и совместимости с функциональными кодами Драйвер контролирует совместимость типов данных и кодов. В случае несовместимости выводится сообщение об ошибке.
Подключение в режиме ведущего устройства к ПЛК прервано без попытки переподключения
2
Подключение в режиме ведущего устройства к ПЛК прервано, производится попытка переподключения
3
Ошибка подключения в режиме ведомого устройства
4
Одноранговый узел закрыл подключение в режиме ведомого устройства
5
Переполнение очереди Modbus.
6
Ошибка разбора кадра
Коды исключений на стороне вывода ПЛКСледует заметить, что к значению, принимаемому из ПЛК, добавляется 100 (например, 100 + 11 = 111) во избежание путаницы с кодами ошибок драйвера. Также следует заметить, что описания ошибок взяты из рекомендаций, приведенных в общей спецификации Modbus/TCP. Уточненные значения большей части ошибок можно найти в спецификациях к коннретному устройству.
101
Недопустимая функция
102
Недопустимый адрес данных
103
Недопустимое значение данных
104
Недопустимая длина ответа
105
Acknowledge (Квитирование)
106
Ведомое устройство занято
107
Отрицательная квитанция
108
Ошибка контроля четности при обращении к памяти
110
Шлюз недоступен по указанному маршруту
111
Отсутствие ответа от устройства за шлюзом
Сообщения об ошибках
В следующей таблице описаны коды ошибок драйвера Modbus/TCP.
Класс
Сообщение об ошибке
Описание
ModConnection
Превышено число ПЛК на одном шлюзе
Превышено число ПЛК с одним IP-адресом На сегодняшний день допустимо не более 8 ПЛК.
ModHWMapper
Неправильный тип преобразования для …
Указан недопустимый тип преобразования для конфигурационного элемента адреса периферии.
ModHWMapper
Subindex + transformation type exceeds max. data length …
Превышение допустимой длины данных при преобразовании субиндекса и функционального кода.
ModHWMapper
Wrong Output function code for: …
Недопустимый функциональный код для элемента точки данных на стороне вывода.
ModHWMapper
Wrong input spontaneous function code for: …
Недопустимый функциональный код для элемента точки данных для незапрашиваемых данных на стороне ввода.
ModHWMapper
Ref. number not modulo 16 for spontaneous mode and FC15 for: …
Адрес для этой комбинации должен делиться на 16 без остатка.
ModHWMapper
Wrong input polling/squery function code for: …
Недопустимый функциональный код для опроса или элемента точки данных для одиночного запроса на стороне вывода.
ModHWMapper
Wrong mode for: …
Неверный тип ввода для конфигурационного элемента адреса периферии.
ModHWMapper
Transformation/FC incompatibility for: …
Недопустимая комбинация функционального кода и типа преобразования.
ModHWMapper
UNICOS SFC != 0 and FC != 16 for: …
В UNICOS используется только функциональный код 16.
ModMasterConnection
Socket error during send
Ошибка сокета во время передачи данных.
ModMasterConnection
Cannot establish connection to server
Ведущее устройство не может подключиться к ПЛК из-за ошибки в имени узла или номера порта либо из-за проблем в сети.
ModMasterConnection
Peer has closed connection
ПЛК закрыл подключение.
ModMasterConnection
Connection to … marked as dead
Подключение помечено как «отключенное». Отсутствуют попытки переподключения.
ModModbus
Error during reception of ASCII frame
Недопустимый кадр ASCII на стороне ввода.
ModModbus
No PLC for unit address: …
Не задан ПЛК с принятым адресом блока для данного подключения.
ModModbus
Invalid Request Size field
Принят кадр Modbus с недопустимым размером запроса. В этом случае не производится синхронизация идентификатора кадра. Подключение будет закрыто и открыто снова для отладки ошибки.
ModModbus
Error too many invalid frames
Принято слишком много ошибочных кадров. Это ошибка последовательности, возникает в результате более ранних ошибок. Приводит к переподключению.
ModModbusMaster
No host/unit address defined for PLC number: …
Для номера ПЛК не указан адрес узла или блока. Ошибка возникает в случае, если для этого номер ПЛК не была создана точка данных (_Mod_Plc).
ModModbusMaster
Unknown function code specified in Peripheral Address
Недопустимый функциональный код в адресе периферии.
ModModbusMaster
Missing some responses to outstanding requests
Отсутствуют ответы на некоторые ожидающие запросы.
ModModbusMaster
Receiving Modbus frame without request
Принят ответ, который не запрашивался. При большой количестве подобных ошибок подключение закрывается и открывается заново.
ModModbusMaster
Wrong unit address received: UA= …
Принят ошибочный адрес блока в ответ на ожидающий запрос. При большой количестве подобных ошибок подключение закрывается и открывается заново.
ModModbusMaster
Exception code received: EC= …
Ошибка ПЛК. ПЛК не может обработать запрос. Значение ошибки можно уточнить в таблице кодов ошибок.
ModModbusMaster
Wrong response to output FC (Ошибочный ответ на зпрос функциональных кодов)
Ошибочный ответ на запрос чтения регистров. При большой количестве подобных ошибок подключение закрывается и открывается заново.
ModModbusMaster
Wrong response to read registers request (Ошибочный ответ на чтение регистров)
Ошибочный ответ на запрос чтения регистров. При большой количестве подобных ошибок подключение закрывается и открывается заново.
ModModbusMaster
Wrong response to read discretes request (Ошибочный ответ на запрос дискретных данных)
Ошибочный ответ на запрос чтения регистров. При большой количестве подобных ошибок подключение закрывается и открывается заново.
ModModbusMaster
Wrong response to read exception status request (Ошибочный ответ на чтение состояния исключения)
Ошибочный ответ на запрос чтения регистров. При большой количестве подобных ошибок подключение закрывается и открывается заново.
ModModbusMaster
Wrong response to read FIFO request (Ошибочный ответ на чтение очереди FIFO)
Ошибочный ответ на запрос чтения регистров. При большой количестве подобных ошибок подключение закрывается и открывается заново.
ModModbusSlave
Slave received unknown function code
Ведомое устройство получило неподдерживаемый или недопустимый функциональный код Modbus.
ModModbusSlave
Invalid number of events in UNICOS Event Report
Недопустимый номер поля события в кадре отчета о событии UNICOS.
ModModbusSlave
UNICOS Slave received unknown subfunction code
Ведомое устройство получило неподдерживаемый или недопустимый функциональный код UNICOS.
ModOutputQueue
Maximum requests in queue, request discarded
Переполнение очереди Modbus.
ModOutputQueue
Discarding polling requests (Msg. every 100)
Дублирование запроса об опросе, текущий запрос отклонен. Предупреждение возникаетя только при запуске драйвера с опцией -dbg 25.
ModOutputQueue
Timeout appears for last sent request
Таймаут транзакции запроса Modbus.
ModPlc
Error during setting of PLC data
Ошибка записи данных ПЛК во внутреннюю точку данных. Дополнительную информацию об этой ошибке (идентификатор точки данных) можно получить на уровне отадки -dbg 2.
ModPrLayer
Cannot start Server
Драйвер не может создать сокет сервера. Вероятно, номер порта занят.
ModRsrce
Unknown keyword in config file
Конфигурационный файл содержит неизвестную запись.
Для Modbus/TCP используется внутренняя точка данных
_Mod_Plc
Элемент точки данных
Тип
По умолчанию
Диапазон
Описание
PlcNumber
unsigned
—
0..65535
Идентификационный номер ПЛК драйвера.
«Active»
bool
—
0|1
Включение-выключение работы драйвера с соответствующим ПЛК (ИСТИНА или ЛОЖЬ).
HostsAndPorts
dyn_string
«»
—
Имена узлов, IP-адреса или номера портов TCP-подключения.
UnitAddress
unsigned
—
0..255
Номер блока Modbus или адрес ведомого устройства.
TransactionTimeout
int
—
—
Таймаут между запросом и откликом в миллисекундах.
Coding
unsigned
—
1,2,3
Определяет покадровое кодирование Modbus.1 -> TCP2 -> ASCII3 -> RTU
Endianity
unsigned
—
0|1
Выбор между вариантами «Сначала младший байт» или «Сначала старший байт».Устаревшая, начиная с версии 3.9 «КАСКАД Цифра».
SetInvalidBit
bool
—
0|1
Определяет, должен ли устанавливаться бит ошибки в случае потери драйвером подключения к ПЛК.
RedundantPlc
bool
—
0|1
Имя резервного ПЛК, если таковой существует.
ReduHostsAndPorts
dyn_string
—
—
Имена узлов, IP-адреса и соответствующие номера портов TCP для подключения к резервному ПЛК.
ReduUnitAddress
unsigned
—
0..255
Номер блока Modbus или адрес ведомого устройства для резервного ПЛК.
ConnState
unsigned
—
—
Показывает, подключен ПЛК или нет.
Ошибка
unsigned
—
—
Показывает последнюю ошибку драйвера (код ошибки).
SentFrames
unsigned
—
—
Число запросов, которые должны быть отправлены блоку.
RcvFrames
unsigned
—
—
Число запросов, которые должны быть получены от блока.
RejFrames
unsigned
—
—
Число отклоненных запросов.
Сдвиг во времени
unsigned
—
—
Некоторые устройства Modbus имеют сдвиг внутренней адресации по отношению к адресации в протоколе (например, в устройстве Schneider Quantum внутренний адрес 1 соответствует адресу 0 в протоколе). Данный элемент точки данных позволяет задать этот сдвиг. Таким образом, конфигурация может быть устройство-ориентированной (в случае с Schneider Quantum значение будет 1).
UserFC64.RequestUserFC64.ResponseUserFC64.State
—
—
Эти три элемента точки данных ориентированы на конкретное устройство и в общем случае не применяются. Поэтому здесь не приводится их подробное описание.
В настоящем разделе приводится инструкция по подключению драйвера Modbus/TCP. Данные передаются между двумя проектами на двух компьютерах. Один компьютер выступает в роли системы управления «КАСКАД Цифра», а второй моделирует работу ПЛК. На практике «КАСКАД Цифра» служит сервером/клиентом, а ПЛК передает данные в качестве клиента/сервера.
Файл конфигурации системы управления «КАСКАД Цифра»:
[mod_1] tcpServerPort = 9998
Файл конфигурации системы управления «КАСКАД Цифра», которая моделирует работу ПЛК:
[mod_1] tcpServerPort = 9999
Настройте ПЛК на соответствующих панелях (см. п. Панель конфигурации драйвера Modbus/TCP). В качестве имени узла укажите имя компьютера другой системы «КАСКАД Цифра», а в качестве номер порта — номер порта сервера другой системы. Адреса блоков и покадровое кодирование должны совпадать на обеих системах.
Рисунок. Панель конфигурации с ПЛК
Аналогичным образом настройте TCP/IP-адрес ПЛК (см. п. 2) на другом компьютере.
Откройте точку данных, например, DP_AlertHdl1, в «КАСКАД Цифра» и задайте следующий адрес периферии для Modbus/TCP (номер ПЛК в адресе периферии должен совпадать с номером ПЛК на панели конфигурации):
Рисунок. адрес периферии системы управления «КАСКАД Цифра»
Настройка компьютера, моделирующего работу ПЛК, производится следующим образом:
Рисунок. адрес периферии системы управления «КАСКАД Цифра», моделирующей ПЛК
Измените исходное значение точки данных выходных данных в системе управления «КАСКАД Цифра».
РЕЗУЛЬТАТ
Значение будет записано поверх исходного значения точки данных «PLC» (системы «КАСКАД Цифра», моделирующей работу ПЛК).
Панель, изображенная на следующем рисунке, позволяет настраивать адреса периферии для драйвера Modbus/TCP.
Вы можете указать адрес вручную в поле Reference (Адрес) или выбрать его с помощью отдельных счетчиков.
Рисунок. панель ввода адреса периферии для драйвера Modbus/TCP
Type (Тип) MODBUS или UNICOS.
PLC (ПЛК) Номер ПЛК, заданный во внутренней точке данных типа _Mod_Plc во время настройки.
FC/SFC Возможные функциональные коды. Не все сочетания функциональных кодов, режимов и адресов разрешены. Используемый функциональный код зависит от ПЛК в режиме ведомого устройства драйвера «КАСКАД Цифра». Допускаются следующие значения поля FC/SFC:
Вывод
Ввод: опрос
Ввод: без запроса
MODBUS
5 write coil (запись регистра флага) 6 write single register (запись одного регистра) 15 force multiple coils (принудительная запись ряда регистров флагов) 16 write multiple register (запись ряда регистров)
Reference Number (Адрес) Адрес в пределах ПЛК. Важно отметить, что адрес зависит от функционального кода: Адрес представляет собой 16-битное слово (2-байтовое беззнаковое целое) для функциональных кодов на основе регистра и номер бита (2-байтовое беззнаковое целое) для функциональных кодов на основе битов.
ПРИМЕЧАНИЕ
Убедитесь, что используемые функциональные коды совместимы с типами данных! Драйвер проверяет только совместимость функционального кода с типом преобразования.
ВНИМАНИЕ
В режиме ввода без запроса и с функциональным кодом FC 15 (принудительная запись ряда регистров флагов) могут использоваться только адреса, которые делятся на 16 (в противном случае выводится сообщение об ошибке). Субиндекс может находиться в пределах от 0 до 1919. Во всех остальных случаях это требование деления на 16 не действует.
Type of transformation (Преобразование файла) Выберитетип преобразования для драйвера Modbus из выпадаюющего списка (см. п. Справочные таблицы). Субиндексы для Modbus зависят от типа преобразования. Если текущее значение выше верхней границы при изменении типа преобразования, субиндекс получает новое максимальное значение.
Если строка уже записана, записывается только число байтов, соответствующее длине строки, включая ноль в конце. Если для опроса на вводе используется тип преобразования «string» или «blob», можно задать число байтов. Пример: M.1.3.10:100 — запрос 100 байтов, начиная с адреса M.1.3.10. Следует заметить, что ввод возможен только для типов «string» или «blob».
Subindex (Субиндекс) Субиндексы для Modbus зависят от типа преобразования. Ограничение вызвано максимальной длиной данных 240 байт в кадре Modbus, а также функциональными кодами:
Тип преобразования
Максимальныйсубиндекс
Возможный функциональный код
bool
1919
FC 3 (чтение ряда регистров)FC 4 (чтение входных регистров)FC 16 (запись ряда регистров)FC 24 (чтение очереди FIFO)
char
239
int16
119
uint16
119
int32
59
uint32
59
byte
59
float
59
bool
1919
FC 1 (чтение регистров флагов)FC 2 (чтение входных дискретных значений)FC 15 (принудительная запись ряда регистров флагов)
double
29
FC 5 (запись регистра флага)FC 6 (запись одного регистра)FC 15 (принудительная запись ряда регистров флагов)FC 16 (запись ряда регистров)
boolean как byte
0
FC 5 (запись регистра флага)
bool
15
FC 6 (запись одного регистра)
char
3
int16
0
uint16
0
bool
7
FC 7 (чтение состояния исключения)
char
0
ПРИМЕЧАНИЕ
В драйверах на «КАСКАД Цифра» до версии 3.9 для обеспечения эффективности запросов на опрос было важно обеспечить сгруппировать несколько элементов точек данных с помощью субиндекса. Начиная с версии 3.9, в этом нет необходимости, но поддержка оставлена в целях совместимости. Во время опроса драйвер автоматически распределяет адреса по настолько оптиизированным блокам, насколько это возможно.
ПРИМЕЧАНИЕ
Адрес с субиндексом запрашивается только в том случае, если существует адрес с субиндексом 0.
Low level comparison (Низкоуровневое сравнение) Этот параметр доступен, только если выбрано направление передачи «Input» (Входные данные). При выборе этого параметра данные отправляются только в случае изменений. Сравнение выполняется над необработанными данными, без преобразования.
Direction (Направление) Задается только для отправки значений элемента точки данных в направлении команд (вывода) или в направлении алармов (ввода) переключателями Direction.
Receive mode (Режим приема) На стороне ввода возможны три различных режима приема: Spontaneous (Без запроса), Polling (Опрос) или Single query (Одиночный запрос).
Poll group (Группа опроса) Выбор из существующих групп опроса. Если доступных групп опроса нет, их необходимо создать вместе с конкретными параметрами опроса в отдельной панели. Панель открывается кнопкой Poll groups… (Группы опроса), дополнительную информацию о группах и параметрах опроса см. в п. Группы опроса.
Address active (Адрес активен) Включение-выключение адреса. Адрес используется драйвером (см. Справочные таблицы). Если адрес отключен, можно задавать его атрибуты и передавать в ответ на запрос, но драйвер его не использует. Это значит, что удаленная система не получит значений, связанных с этой точкой данных, и не передаст такие значения.
OK: применение настроек или изменений и закрытие панели.
Cancel (Отмена): отмена настроек или изменений и закрытие панели.
Apply: применение настроек без закрытия панели.
«Help» («Справка»): Открывает страницу справочной системы.
Откройте панель конфигурации драйвера Modbus/TCP через панель управления системой:
Рисунок. Управление системой — вкладка Drivers (Драйверы)
Нажмите кнопку Modbus/TCP driver (Драйвер Modbus/TCP). Настройте ПЛК (компоненты дистанционного управления) на следующей панели настройки. Настройте каждый из ПЛК (независимо от реальной адресации). Для каждого ПЛК создается внутренняя точка данных типа _Mod_Plc (см. также п. Внутренние точки данных драйвера Modbus/TCP).
Рисунок. панель конфигурации драйвера Modbus/TCP
Create (Создать) Создание новой точки данных для ПЛК со следующим порядковым номером, например, если ранее была сохздана точка данных _Mod_Plc_3, то имя следующей будет _Mod_Plc_4. При этом точка получит настройки по умолчанию. Впоследствии их можно будет изменить. Следует заметить, что изменения настроек вступают в силу только после нажатия кнопки Apply (Применить). Чтобы изменить настройки точки данных ПЛК, выберите ее из выпадающего списка, отредактируйте параметры и нажмите кнопку Apply (Применить), чтобы они вступили в силу.
Remove (Удалить) Удаление выбранной точки данных с выводом диалогового окна подтверждения.
Active (Активное) Разрешает подключение к ПЛК. Вы можете деактивировать уже созданное и настроенное устройство. Само устройство (точка данных) не удаляется, и может быть включено в любой момент. При этом его состояние будет меняться между «Connected» (Подключено) и «Not Active» (Не активно). Если подключение к устройству было отключено, драйвер больше не будет устанавливать связь с этим ПЛК. Это позволяет, к примеру, избежать сообщений об ошибках, если ПЛК было намеренно удалено из системы.
PLC number (Номер ПЛК) Специальный номер ПЛК в драйвере (0-65 535). Этот номер должен быть уникальным в пределах системы. Номер ПЛК должен совпадать с номером в имени точки данных. Чтобы создать новую точку данных с нужным номером, измените номер и нажмите кнопку Apply (Применить).
Unit address (Адрес блока) Адрес ведомого устройства или блока Modbus (0-255). Адрес блока требуется в том случае, если несколько ПЛК подключаются через шлюз в ЛВС с одним IP-адресом. Если ПЛК обладает собственным IP-адресом, тогда адрес блока должен иметь значение 1. Одному IP-адресу могут быть сопоставлены до 128 ПЛК.
Modbus transaction timeout (Таймаут транзакции Modbus) Таймаут между запросом и ответом в миллисекундах (100-100 000). При таймауте запрос теряется, а подключение закрывается. Подключение будет восстановлено при следующем запросе.
Frame coding (Кодирование кадров) Возможны два варианта кодирования: TCP (двоичное) или ASCII.
List of Hosts (Список узлов) Ввод IP-адресов, имен узлов ПЛК или шлюзов к ПЛК с номерами портов для TCP-подключений. Допускается не более 2 подключений. Если номер порта не указан, используется значение 502, заданное по умолчанию.
Set Invalid Bit (Установка бита ошибки) Если флажок установлен, бит ошибки будет устанавливаться при обрыве подключения к ПЛК и достижении числа попыток его восстановления (определяемого параметром maxRetryNumber). Подключение помечается как отключенное. Бит ошибки устанавливается для всех адресов ввода (но не вывода) соответствующего ПЛК, подключение к которому было утеряно (состояние = «Not connected» — не подключено).
General Query (Общий запрос) Кнопка отправки общего запроса в ПЛК. Все данные, выбранные для опроса запрашиваются незамедлительно с установкой бита GQ в элементе точки данных. Кроме того, незапрашиваемые данные пропускаются по адресу на соответствующее устройство при следующем поступлении, независимо от того, установлен низкий уровень сравнения или сглаживания или нет. Драйвер Modbus/TCP не выполняет общий запрос при подключении. Он должен запускаться вручную через внутреннюю точку данных _DriverCommon. Однако драйвер исполняет общий запрос при переключении на резерв.
ПРИМЕЧАНИЕ
Если включено сглаживание, данные из общего запроса с одинаковыми значениями пропускаются только в том случае, когда для внутренней точки данных драйвера «_DriverX.SM» (X — номер менеджера Modbus) задано значение 1.
ПРИМЕЧАНИЕ
Если в проекте предусмотрено резервирование, данные из общего запроса с одинаковыми значениями пропускаются менеджером событий только в случае, если в разделе событий файла config.redu параметр redOldNewComp имеет значение 0.
Error code (Код ошибки) Номер последней ошибки драйвера (см. также п. Коды ошибок).
Sent requests (Запросов отправлено) Число отправленных в ПЛК запросов.
Rejected requests (Запросов отклонено) Число недопустимых запросов, полученных из ПЛК.
Received requests (Запросов принято) Число принятых из ПЛК запросов. Следует заметить, что если драйвер является исключительно ведущим устройством,число принятых запросов будет равно 0, т. к. он не принимает запросы от ПЛК.
State (Состояние) Текущее состояние подключения. Возможные следующие состояния: Not connected(Не подключено) (0),Connected (Подключено) — 1,General Query (Общий запрос) — 2 и Not active (Не активен) — 3.
Redundant PLC (Резервный ПЛК) Отметьте этот пункт при наличии резервного ПЛК.
List of Hosts (Список резерных узлов) IP-адреса и номера портов TCP-подключений резервных ПЛК (см. также п. Список узлов выше).
Unit Address (Адрес резервного блока) Адрес блока или ведомых резервных устройств.
Apply (Применить) По умолчанию точки данных создаются со стандартными настройками. Чтобы сохранить настройки после изменения, нажмите кнопку Apply.
Close (Закрыть) Закрытие панели без сохранения изменений.
Драйвер может использоваться одновременно для Modbus/TCP и UNICOS (рекомендуется). Протокол UNICOS ведущей части драйвера идентичен стандартному протоколу Modbus.
Драйвер выбирает тип кадра (UNICOS или Modbus) для ведомой части по адресу кадра Modbus. Адрес для кадра UNICOS имет вид 0xFFFF. Поэтому в стандартной реализации Modbus адрес 0xFFFF отсутствует. Адрес задается через запись в файле config — см. п. Детальная информация о драйвере Modbus/TCP.
Информационный состав протокола UNICOS следующий:
Двоичное состояние;
Аналоговое состояние;
События
Запросы;
Кадры.
В кадре Modbus для UNICOS существует дополнительный субфункциональный код. Он передается в первом байте данных кадра Modbus. Он имеет значение 0x01 (1) для двочиных и аналоговых состояний, 0x12 (18) для событий и 0x11 (19) для 32-битных событий. Не существует разницы между двоичным и аналоговым состояниями, поэтому тип полученных данных определяется типом элемента точки данных, созданного для соответствующего адреса. Размер кадра UNICOS не может превышать 253 байта.
Кадр отчета о событии Для записи значения из кадра с событием в заданный элемент точки данных должен использоваться сдвиг события (адрес).
Кадр запроса Кадр запроса — это стандартный кадр Modbus, состоящий из одного более 16-битных слов.
ПРИМЕЧАНИЕ
Метка времени в кадре UNICOS обрабатывается как время UTC (универсальное скоординированное время)!
Адрес периферии
Аналогичен адресу Modbus. Единственное отличие состоит в том, что для входных данных субфункциональный код заменяет собою функциональный код. Для правильной интерпретации адреса при выборе типа должен быть указан вариант UNICOS.
ПРИМЕР
U.4.1.100
U означает тип адреса UNICOS, 4 — ПЛК 4, 1 (0x01) — двоичный или аналоговый тип состояния в сообщении, а 100 — номер бита или адрес аналогового состояния (сдвиг, адрес).
Ведущее и ведомое устройства
Для работы по протоколу UNICOS драйвер на «КАСКАД Цифра» должен быть одновременно и ведущим и ведомым устройством:
Данные о состоянии и события передаются исключительно без запроса или опроса. Для приема таких данных драйвер должен быть ведомым устройством Modbus (сервером TCP).
Для отправки запросов драйвер должен быть ведущим устройством Modbus (клиентом TCP).
Двоичные и аналоговые данные UNICOS сведены в таблицу. Эта таблица содержит 96 16-битных слов. Если хотя бы один элемент таблицы будет изменен, будет отправлена вся таблица. Таблицы отправляются каждые 50 миллисекунд, не чаще.
Таблица событий содержит изменения состояний битов с точностью до 10 миллисекунд. Таблица отправляется либо по заполнении либо каждые 2 секунды.
Несмотря на то, что данные событий соответствуют двоичным данным о состоянии, для них должны использоваться разные точки данных, поскольку метка времени данных события может быть старше, чем ранее отправленное обычное состояние бита.
На следующем рисунке показана схема перемещения данных по протоколу UNICOS. Как можно заметить, для Modbus/TCP отправляются только запросы на запись.
Понятие резервирования наглядно изображено на следующем рисунке. Система управления («КАСКАД Цифра») и ПЛК резервируются:
Рисунок. Понятие резервирования
Прохождение данных между драйвером и ПЛК изображено только в направлении запроса (см. вышеприведенный рисунок).
Тонкими стрелками изображены каналы связи в случае переключения на резерв (в обычном состоянии «ведущий/ведомый» они не используются).
Активный драйвер отправляет запросы и активному и пассивному ПЛК. Оба этих ПЛК должны отвечать на запросы. Однако информация о состоянии и отчеты о событиях обоим драйверам на «КАСКАД Цифра» поступают только от активного ПЛК.
ВНИМАНИЕ
Важно понимать, что драйвер не отправляет запросы на чтение, т. к. в противном случае ему пришлось бы фильтровать ответы от резервных блоков. Поскольку только активный ПЛК отправляет данные, интерфейсы драйвера могут обрабатывать незапрашиваемые данные поровну. Драйверу не нужно знать, какой из ПЛК активный, а какой нет.
Modbus/TCP — это адаптация последовательного протокола Modbus для обмена данными через TCP/IP. Драйвер Modbus/TCP может использоваться одновременно для Modbus/TCP и UNICOS.
Modbus/TCP используется для чтения или записи блоков данных на ПЛК.
UNICOS — это разработанное CERN расширение протокола Modbus/TCP. Связь через UNICOS возможна только в случае соответствующего программирования ПЛК (см. п. UNICOS, основные сведения).
Обмен информацией происходит с помощью различных функциональных кодов (см. п. Детальная информация о драйвере Modbus/TCP). Функциональные коды являются частью адреса периферии и определяются пользователем.
Адресация
Адрес периферии содержит следующие точки:
Тип — Modbus/UNICOS
Количество ПЛК (программируемых логических контроллеров)
Функциональный код, соответствующий коду подфункции в UNICOS
Адрес
Подиндекс
Адрес блока требуется в том случае, если к одному шлюзу ЛВС с заданным IP-адресом подключен ряд ПЛК (например, PLC 2 и PLC 3). Если ПЛК обладает собственным IP-адресом, то в качестве адреса блока, например, PLC 1, необходимо указать 1 (см. п. Панель конфигурации драйвера Modbus/TCP).
Поскольку к одному ПЛК можно обратиться по нескольким подключениям, для одного ПЛК можно задать более одного TCP/IP-подключения. ПЛК поддерживает не более двух подключений. Таким образом, возможны два сетевых маршрута.
Система «ведущий/ведомый» и «клиент/сервер»
Протокол Modbus основан на топологии «ведущий/ведомый». Ведущим называется устройство, инициирующее транзакцию (запрос) по шине подключения. Ведущее устройство отправляет запросы, а ведомое отвечает на них. Ведомое устройство не может отправлять запросы. Оно ни при каких обстоятельствах не может стать активным. В среде TCP/IP клиент TCP должен быть ведущим, т. к. именно клиент устанавливает подключение. Сервер TCP является ведомым устройством. Ведомое устройство имеет «прослушивающий сокет» и может отвечать на запросы на подключение, а затем на обычные запросы через этот сокет.
Драйвер может работать в обоих режимах (как ведущее и ведомое устройство) одновременно. Ведомое устройство необходимо для приема незапрашиваемых данных, а ведущее — для отправки команд и запросов (т. е. подключения к периферии для отправки или приема значений. Кроме того, драйвер одновременно открывает сокет сервера TCP. Это тсокет позволяет периферифным устройствам подключаться к дарйверу и передавать не запрашиваемые им данные).
На следующем рисунке приведена схема потоков данных драйвера Modbus/TCP:
Для отправки данных в ПЛК ведущая часть драйвера должна отправить запрос на запись. Ответ за запрос на запись передается только на уровне протокола. На вышеприведенном рисунке эти ответы изображены пунктирными линиями.
Существуют два способа ввода данных: отправка ведущим устройством запроса на чтение для запроса данных из ПЛК и прием ведущим устройством запроса на запись от ПЛК.
Ведомое устройство отвечает на запрос на чтение «холостыми» данными в целях симуляции. Запрос настоящих данных из драйвера не поддерживается, т. к. в обычном случае система «КАСКАД Цифра» не запрашивает данные ПЛК.