Архив рубрики: Treiber_Modbus

Файл конфигурации драйвера Modbus/TCP

Не существует обязательных записей для драйвера Modbus/TCP, которые должны присутствовать в файле конфигурации. Ранее бывшая обязательной запись plc устарела, начиная с версии «КАСКАД Цифра» 3.9.

Необходимо лишь задать порт сервера, если стандартный порт 502 не может быть использован. Пример:

[mod_1]
tcpServerPort = 502

ВНИМАНИЕ

Если на одном компьютере запускаются несколько драйверов, для них должны быть указаны разные номера портов сервера. Номера портов необходимо изменить и на ПЛК, которые подключаются к драйверу.

Выводы и полезные ссылки

Modbus/TCP — это адаптация последовательного протокола Modbus для обмена данными через TCP/IP. Драйвер Modbus/TCP может использоваться одновременно для Modbus/TCP и UNICOS.

Обмен информацией происходит с помощью различных функциональных кодов (см. п. Детальная информация о драйвере Modbus/TCP). Функциональные коды являются частью адреса периферии и определяются пользователем. Используемый функциональный код зависит от ПЛК в режиме ведомого устройства драйвера «КАСКАД Цифра». Функциональные коды не используются в режиме ведущего устройства.

РазделОписание
_addressПанель настройки конфигурационного элемента _address
Точки данныхСоздание и настройка точек данных
Драйвер — клиент OPCКлиент OPC на «КАСКАД Цифра»
ДрайверыОбзор драйверов на «КАСКАД Цифра»

Детальная информация о драйвере Modbus/TCP

Данный раздел предназначен для опытных пользователей «КАСКАД Цифра». В нем подробно описаны функциональные коды, записи в файле config и возможности отладки.

Функциональные коды

В следующей таблице приведены возможные функциональные коды с кратким описанием. Если «КАСКАД Цифра» работает как ведомое устройство, его функциональные коды будут зависеть от используемого ПЛК.

Функциональный кодКодОписание
чтение регистров флагов1Чтение состояния ON/OFF (ВКЛ/ВЫКЛ) дискретного вывода.
чтение входных дискретных значений2Чтение состояния ON/OFF (ВКЛ/ВЫКЛ) дискретного ввода.
чтение ряда регистров3Чтение двоичного содержимого регистра хранения
чтение входных регистров4Чтение двоичного содержимого регистра ввода.
запись регистра флага5Ввод значения отдельного регистра флага: ON или OFF (ВКЛ или ВЫКЛ)
запись одиночного регистра6Запись значения в регистр хранения
чтение состояния исключения7Чтение содержимого восьми регистров флагов состояния исключения
принудительная запись ряда регистров флагов15Присвоение каждому регистру флага из ряда значения ON (ВКЛ) или OFF (ВЫКЛ).
запись ряда регистров16Запись значений ряда регистров хранения.
чтение очереди FIFO24Чтение содержимого регистров очереди FIFO

Записи в файле config

ЗаписьТипПо умолчаниюДиапазонОписание
aliveTimeoutunsigned0>= 0Определяет время ожидания, в секундах, проверки присутствия в сети для драйвера. При значении 0 сообщения не отправляются. При значении > 0, драйвер отправляет запрос всем подключенным ПЛК через каждые «aliveTimeout» секунд. Если подключение в порядке, в целях проверки отправляется «пустой» запрос.
«aliveTimeoutMsg»беззнаковое беззнаковое1 0Определяет функциональный код и адрес для запроса проверки присутствия в сети.
«addUnicosMarker»unsigned-1-1..65535Определяет адрес, используемый драйвером для определения типа кадра: Modbus или UNICOS. По умолчанию запись отключена.
«idleCloseTimeout»unsigned0>= 0Драйвер закрывает подключение к ПЛК если подключение находится в состоянии простоя в течение указанного периода времени (в секундах). Используется только для подключений в режиме ведущего устройства.
«littleEndianRegister»bool10|1Порядок организации 16-битного регистра: сначала младший байт или сначала старший байт.По умолчаю используется прямой порядок, т.е. сначала передается младший бит.ПримечаниеСначала младший байт = наименее значимый бит сохраняется в первой позицииСначала старший байт = наиболее значимый бит сохраняется в первой позицииДополнительную информацию см. в Wikipedia
«maxConnRetryNumber»unsigned0>= 0Определяет количество попыток, которые предпринимает драйвер для установления подключения при отправке телеграммы, если запрос на подключение завершился неудачно.
«maxGap»uint160..100Если разница между двумя последовательными адресами меньше или равно значению «maxGap», то эти адреса группируются в один блок опроса. В противном случае создается второй блок опроса. Эта запись позволяет оптимизировать запрос на опрос.
«maxPendingRequests»unsigned11..8Максимальное число ожидающих запросов без ответа. Данная запись позволяет увеличить число запросов для ускорения передачи.Перед установкой значения больше 1, необходимо убедиться в том, что управляемый драйвером ПЛК способен принимать более одного запроса.
«maxQueueSize»int256Определяет размер очереди запросов для режима ведущего устройства.Пример: maxQueueSize = 1000
«maxRetryNumber»unsigned0>= 0Определяет количество попыток установления подключения перед тем, как подключение отмечается как «отсутствующее». По умолчанию: 0, т. е., поле первой неуспешной попытки драйвер предпринимает бесконечные попытки установления подключения.
«OnlyActivePolls»int00|1При OnlyActivePolls = 1 в системе с резервированием возможны только опросы активного драйвера. Значение по умолчанию — 0 (оба драйвера опрашивают ПЛК).
«plc»string«»Устаревшая, начиная с версии 3.9 «КАСКАД Цифра».Имя точки данных ПЛК, с которой работает драйвер. Для каждого ПЛК должна существовать своя запись (например, plc = «_Mod_Plc_2»). Точки данные создаются автоматически при настройке параметров на панели конфигурации драйвера Modbus/TCP (см. п. Панель конфигурации драйвера Modbus/TCP).
«pollOptForBlob»bool10|1Делает возможной оптимизацию запроса на опрос для типа blob.
«requestDelay»uint0>= 0Время в миллисекундах между двумя запросами. Значение не должно быть слишком высоким, т. к. оно снижает скорость передачи данных. Данная запись принимается в расчет только при использовании шлюзов.
«simUnicosPlc»bool00|1Задает возможность отправки ведущим устройством кадров UNICOS для специальных, обычно не используемых функциональных кодов.Если в адресе периферии указать функциональный код 120, создается кадр состояния данных с произвольными данными.Если указать функциональный код 121, создается кадр отчета о событии с произвольными данными.Используется только в ЦЕЛЯХ ТЕСТИРОВАНИЯ.Функциональный код информирует драйвер о необходимости создания кадра UNICOS. Этот код не выходит за пределы драйвера.
«simUnicosEvents»unsigned241..24Данный параметр определяет количество элементов моделированного отчета о событиях.
«statCheckInterval»uint205..100Интервал времени записи драйвером элементов точки данных.
«tcpServerPort»unsigned5021..65535Номер порта TCP. Ведомоое устройство открывает клиентам сокет сервера через этот порт.
«tcpConnectTimeout»unsigned2000>= 1000Время ожидания подключения. (в мс)При установлении подключения драйвер ожидает завершения инициализации подключения и получения квитирования от ПЛК. Если драйвер не получает квитирование за отведенное время, он выполняет переподключение. Время ожидания определяется с помощью конфигурационной записи «tcpConnectTimeout» в сегменте Modbus.
«unicosMarker»int65535-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Переход на этот уровень отладки во время работы приводит к отображению групп опросов и блоков опросов.

Преобразования

Преобразование — это перевод аппаратных данных в формат «КАСКАД Цифра». В следующей таблице приведена информация о преобразовании и совместимости с функциональными кодами Драйвер контролирует совместимость типов данных и кодов. В случае несовместимости выводится сообщение об ошибке.

Требуемый тип данныхТипПоддержка субиндексов (массива)Размер позиции[байт]Число элементов позицииТип элемента в «КАСКАД Цифра»Функциональный код для запроса на записьФункциональный код для запроса на чтение
битboolда18bool15, 6, 161, 2, 3, 4, 7, 24
битboolean как byteнет11bool5нет
bytebyteда22char6, 163, 4,  7, 24
wordint 16да21int6, 163, 4, 24
unsigned worduint 16да21unsigned6, 163, 4, 24
dwordint 32да41int16 3, 4, 24
unsigned dworduint 32да41unsigned163, 4, 24
qwordint 64да8 float163,4,24
floatfloatда41float163, 4, 24
stringstringнетмакс. 2401string163, 4, 24
blobblobнетмакс. 2401blob163, 4, 24

Коды ошибок

В следующей таблице описываются коды ошибок, отображаемые на панели настройки ПЛК (см. п. Панель конфигурации драйвера Modbus/TCP).

Номер ошибкиОписание
Ошибка на стороен вывода драйвера
0ошибок нет
1Подключение в режиме ведущего устройства к ПЛК прервано без попытки переподключения
2Подключение в режиме ведущего устройства к ПЛК прервано, производится попытка переподключения
3Ошибка подключения в режиме ведомого устройства
4Одноранговый узел закрыл подключение в режиме ведомого устройства
5Переполнение очереди Modbus.
6Ошибка разбора кадра
Коды исключений на стороне вывода ПЛКСледует заметить, что к значению, принимаемому из ПЛК, добавляется 100 (например, 100 + 11 = 111) во избежание путаницы с кодами ошибок драйвера. Также следует заметить, что описания ошибок взяты из рекомендаций, приведенных в общей спецификации Modbus/TCP. Уточненные значения большей части ошибок можно найти в спецификациях к коннретному устройству.
101Недопустимая функция
102Недопустимый адрес данных
103Недопустимое значение данных
104Недопустимая длина ответа
105Acknowledge (Квитирование)
106Ведомое устройство занято
107Отрицательная квитанция
108Ошибка контроля четности при обращении к памяти
110Шлюз недоступен по указанному маршруту
111Отсутствие ответа от устройства за шлюзом

Сообщения об ошибках

В следующей таблице описаны коды ошибок драйвера Modbus/TCP.

КлассСообщение об ошибкеОписание
ModConnectionПревышено число ПЛК на одном шлюзеПревышено число ПЛК с одним IP-адресом На сегодняшний день допустимо не более 8 ПЛК.
ModHWMapperНеправильный тип преобразования для …Указан недопустимый тип преобразования для конфигурационного элемента адреса периферии.
ModHWMapperSubindex + transformation type exceeds max. data length …Превышение допустимой длины данных при преобразовании субиндекса и функционального кода.
ModHWMapperWrong Output function code for: …Недопустимый функциональный код для элемента точки данных на стороне вывода.
ModHWMapperWrong input spontaneous function code for: …Недопустимый функциональный код для элемента точки данных для незапрашиваемых данных на стороне ввода.
ModHWMapperRef. number not modulo 16 for spontaneous mode and FC15 for: …Адрес для этой комбинации должен делиться на 16 без остатка.
ModHWMapperWrong input polling/squery function code for: …Недопустимый функциональный код для опроса или элемента точки данных для одиночного запроса на стороне вывода.
ModHWMapperWrong mode for: …Неверный тип ввода для конфигурационного элемента адреса периферии.
ModHWMapperTransformation/FC incompatibility for: …Недопустимая комбинация функционального кода и типа преобразования.
ModHWMapperUNICOS SFC != 0 and FC != 16 for: …В UNICOS используется только функциональный код 16.
ModMasterConnectionSocket error during sendОшибка сокета во время передачи данных.
ModMasterConnectionCannot establish connection to serverВедущее устройство не может подключиться к ПЛК из-за ошибки в имени узла или номера порта либо из-за проблем в сети.
ModMasterConnectionPeer has closed connectionПЛК закрыл подключение.
ModMasterConnectionConnection to … marked as deadПодключение помечено как «отключенное». Отсутствуют попытки переподключения.
ModModbusError during reception of ASCII frameНедопустимый кадр ASCII на стороне ввода.
ModModbusNo PLC for unit address: …Не задан ПЛК с принятым адресом блока для данного подключения.
ModModbusInvalid Request Size fieldПринят кадр Modbus с недопустимым размером запроса. В этом случае не производится синхронизация идентификатора кадра. Подключение будет закрыто и открыто снова для отладки ошибки.
ModModbusError too many invalid framesПринято слишком много ошибочных кадров. Это ошибка последовательности, возникает в результате более ранних ошибок. Приводит к переподключению.
ModModbusMasterNo host/unit address defined for PLC number: …Для номера ПЛК не указан адрес узла или блока. Ошибка возникает в случае, если для этого номер ПЛК не была создана точка данных (_Mod_Plc).
ModModbusMasterUnknown function code specified in Peripheral AddressНедопустимый функциональный код в адресе периферии.
ModModbusMasterMissing some responses to outstanding requestsОтсутствуют ответы на некоторые ожидающие запросы.
ModModbusMasterReceiving Modbus frame without requestПринят ответ, который не запрашивался. При большой количестве подобных ошибок подключение закрывается и открывается заново.
ModModbusMasterWrong unit address received: UA= …Принят ошибочный адрес блока в ответ на ожидающий запрос. При большой количестве подобных ошибок подключение закрывается и открывается заново.
ModModbusMasterException code received: EC= …Ошибка ПЛК. ПЛК не может обработать запрос. Значение ошибки можно уточнить в таблице кодов ошибок.
ModModbusMasterWrong response to output FC (Ошибочный ответ на зпрос функциональных кодов)Ошибочный ответ на запрос чтения регистров. При большой количестве подобных ошибок подключение закрывается и открывается заново.
ModModbusMasterWrong response to read registers request (Ошибочный ответ на чтение регистров)Ошибочный ответ на запрос чтения регистров. При большой количестве подобных ошибок подключение закрывается и открывается заново.
ModModbusMasterWrong response to read discretes request (Ошибочный ответ на запрос дискретных данных)Ошибочный ответ на запрос чтения регистров. При большой количестве подобных ошибок подключение закрывается и открывается заново.
ModModbusMasterWrong response to read exception status request (Ошибочный ответ на чтение состояния исключения)Ошибочный ответ на запрос чтения регистров. При большой количестве подобных ошибок подключение закрывается и открывается заново.
ModModbusMasterWrong response to read FIFO request (Ошибочный ответ на чтение очереди FIFO)Ошибочный ответ на запрос чтения регистров. При большой количестве подобных ошибок подключение закрывается и открывается заново.
ModModbusSlaveSlave received unknown function codeВедомое устройство получило неподдерживаемый или недопустимый функциональный код Modbus.
ModModbusSlaveInvalid number of events in UNICOS Event ReportНедопустимый номер поля события в кадре отчета о событии UNICOS.
ModModbusSlaveUNICOS Slave received unknown subfunction codeВедомое устройство получило неподдерживаемый или недопустимый функциональный код UNICOS.
ModOutputQueueMaximum requests in queue, request discardedПереполнение очереди Modbus.
ModOutputQueueDiscarding polling requests (Msg. every 100)Дублирование запроса об опросе, текущий запрос отклонен. Предупреждение возникаетя только при запуске драйвера с опцией -dbg 25.
ModOutputQueueTimeout appears for last sent requestТаймаут транзакции запроса Modbus.
ModPlcError during setting of PLC dataОшибка записи данных ПЛК во внутреннюю точку данных. Дополнительную информацию об этой ошибке (идентификатор точки данных) можно получить на уровне отадки -dbg 2.
ModPrLayerCannot start ServerДрайвер не может создать сокет сервера. Вероятно, номер порта занят.
ModRsrceUnknown keyword in config fileКонфигурационный файл содержит неизвестную запись.
ModSlaveConnectionSocket error during sendОшибка передачи данных через сокет.

Внутренние точки данных драйвера Modbus/TCP

Для Modbus/TCP используется внутренняя точка данных

_Mod_Plc

Элемент точки данныхТипПо умолчаниюДиапазонОписание
PlcNumberunsigned0..65535Идентификационный номер ПЛК драйвера.
«Active»bool0|1Включение-выключение работы драйвера с соответствующим ПЛК (ИСТИНА или ЛОЖЬ).
HostsAndPortsdyn_string«»Имена узлов, IP-адреса или номера портов TCP-подключения.
UnitAddressunsigned0..255Номер блока Modbus или адрес ведомого устройства.
TransactionTimeoutintТаймаут между запросом и откликом в миллисекундах.
Codingunsigned1,2,3Определяет покадровое кодирование Modbus.1 -> TCP2 -> ASCII3 -> RTU
Endianityunsigned0|1Выбор между вариантами «Сначала младший байт» или «Сначала старший байт».Устаревшая, начиная с версии 3.9 «КАСКАД Цифра».
SetInvalidBitbool0|1Определяет, должен ли устанавливаться бит ошибки в случае потери драйвером подключения к ПЛК.
RedundantPlcbool0|1Имя резервного ПЛК, если таковой существует.
ReduHostsAndPortsdyn_stringИмена узлов, IP-адреса и соответствующие номера портов TCP для подключения к резервному ПЛК.
ReduUnitAddressunsigned0..255Номер блока Modbus или адрес ведомого устройства для резервного ПЛК.
ConnStateunsignedПоказывает, подключен ПЛК или нет.
ОшибкаunsignedПоказывает последнюю ошибку драйвера (код ошибки).
SentFramesunsignedЧисло запросов, которые должны быть отправлены блоку.
RcvFramesunsignedЧисло запросов, которые должны быть получены от блока.
RejFramesunsignedЧисло отклоненных запросов.
Сдвиг во времениunsignedНекоторые устройства Modbus имеют сдвиг внутренней адресации по отношению к адресации в протоколе (например, в устройстве Schneider Quantum внутренний адрес 1 соответствует адресу 0 в протоколе). Данный элемент точки данных позволяет задать этот сдвиг. Таким образом, конфигурация может быть устройство-ориентированной (в случае с Schneider Quantum значение будет 1).
UserFC64.RequestUserFC64.ResponseUserFC64.State Эти три элемента точки данных ориентированы на конкретное устройство и в общем случае не применяются. Поэтому здесь не приводится их подробное описание.

Пример драйвера Modbus/TCP

Modbus

В настоящем разделе приводится инструкция по подключению драйвера Modbus/TCP. Данные передаются между двумя проектами на двух компьютерах. Один компьютер выступает в роли системы управления «КАСКАД Цифра», а второй моделирует работу ПЛК. На практике «КАСКАД Цифра» служит сервером/клиентом, а ПЛК передает данные в качестве клиента/сервера.

ПОДКЛЮЧЕНИЕ

  1. Внесите необходимые записи в файл Config (см. п. Файл конфигурации драйвера Modbus/TCP).

Файл конфигурации системы управления «КАСКАД Цифра»:
 

[mod_1]
tcpServerPort = 9998

Файл конфигурации системы управления «КАСКАД Цифра», которая моделирует работу ПЛК:
 

[mod_1]
tcpServerPort = 9999

  1. Настройте ПЛК на соответствующих панелях (см. п. Панель конфигурации драйвера Modbus/TCP). В качестве имени узла укажите имя компьютера другой системы «КАСКАД Цифра», а в качестве номер порта — номер порта сервера другой системы. Адреса блоков и покадровое кодирование должны совпадать на обеих системах.

Рисунок. Панель конфигурации с ПЛК

  1. Аналогичным образом настройте TCP/IP-адрес ПЛК (см. п. 2) на другом компьютере.
     
  2. Откройте точку данных, например, DP_AlertHdl1, в «КАСКАД Цифра» и задайте следующий адрес периферии для Modbus/TCP (номер ПЛК в адресе периферии должен совпадать с номером ПЛК на панели конфигурации):

Рисунок. адрес периферии системы управления «КАСКАД Цифра»

  1. Настройка компьютера, моделирующего работу ПЛК, производится следующим образом:

Рисунок. адрес периферии системы управления «КАСКАД Цифра», моделирующей ПЛК

  1. Измените исходное значение точки данных выходных данных в системе управления «КАСКАД Цифра».

РЕЗУЛЬТАТ

Значение будет записано поверх исходного значения точки данных «PLC» (системы «КАСКАД Цифра», моделирующей работу ПЛК).

Ввод адресов периферии для драйвера Modbus/TCP

Панель, изображенная на следующем рисунке, позволяет настраивать адреса периферии для драйвера Modbus/TCP.

Вы можете указать адрес вручную в поле Reference (Адрес) или выбрать его с помощью отдельных счетчиков.

Рисунок. панель ввода адреса периферии для драйвера Modbus/TCP

  • Type (Тип)
    MODBUS или UNICOS.
     
  • PLC (ПЛК)
    Номер ПЛК, заданный во внутренней точке данных типа _Mod_Plc во время настройки.
     
  • FC/SFC
    Возможные функциональные коды. Не все сочетания функциональных кодов, режимов и адресов разрешены. Используемый функциональный код зависит от ПЛК в режиме ведомого устройства драйвера «КАСКАД Цифра». Допускаются следующие значения поля FC/SFC:
 ВыводВвод: опросВвод: без запроса
MODBUS5 write coil (запись регистра флага)
6 write single register (запись одного регистра)
15 force multiple coils (принудительная запись ряда регистров флагов)
16 write multiple register (запись ряда регистров)
1 read coils (чтение регистров флагов)
2 read input discretes (чтение входных дискретных значений)3 read multiple register (чтение ряда регистров)
4 read input register (чтение входного регистра)
7 read exception status (чтение состояния исключения)
24 read FIFO queue (чтение очереди FIFO)
5 write coil (запись регистра флага)
6 write single (запись одного)
15 force multiple coils (принудительная запись ряда регистров флагов)
16 write multiple coils (запись ряда регистрой флагов)
UNICOSне применимоне применимо1 status (состояние)17 events32 (32-битный кадр события)18 events (16-битный кадр события)
  • 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, а также функциональными кодами:
Тип преобразованияМаксимальныйсубиндексВозможный функциональный код
bool1919     FC 3 (чтение ряда регистров)FC 4 (чтение входных регистров)FC 16 (запись ряда регистров)FC 24 (чтение очереди FIFO)
char239
int16119
uint16119
int3259
uint3259
byte59
float59
bool1919FC 1 (чтение регистров флагов)FC 2 (чтение входных дискретных значений)FC 15 (принудительная запись ряда регистров флагов)
double29FC 5 (запись регистра флага)FC 6 (запись одного регистра)FC 15 (принудительная запись ряда регистров флагов)FC 16 (запись ряда регистров)
boolean как byte0FC 5 (запись регистра флага)
bool15   FC 6 (запись одного регистра)
char3
int160
uint160
bool7 FC 7 (чтение состояния исключения)
char0

ПРИМЕЧАНИЕ

В драйверах на «КАСКАД Цифра» до версии 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

Откройте панель конфигурации драйвера 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 (Закрыть)
    Закрытие панели без сохранения изменений.
     
  • Help (Справка)
    Открытие этой страницы справки.

Требования и установка

Требования

  • Правильно установленная программа «КАСКАД Цифра» версии 2.12.1 или выше.
  • Для работы системы требуется действительная лицензия!

Информацию о поддерживаемых драйвером Modbus/TCP платформах см. в п. Поддерживаемые платформы самых важных драйверов.

Установка

Для использования драйвера Modbus/TCP требуется стандартный пакет «КАСКАД Цифра» версии 2.12.1 или выше.

Более подробная информация об установке «КАСКАД Цифра» приведена в разделе Установка.

UNICOS, основные сведения

Драйвер может использоваться одновременно для 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 отправляются только запросы на запись.

Рисунок. схема потоков данных UNICOS

Внутренний механизм драйвера по проверке присутствия в сети описывается записью aliveTimeout в файле config (см. п. Детальная информация о драйвере Modbus/TCP).

Понятие резервирования

Понятие резервирования наглядно изображено на следующем рисунке. Система управления («КАСКАД Цифра») и ПЛК резервируются:

Рисунок. Понятие резервирования

Прохождение данных между драйвером и ПЛК изображено только в направлении запроса (см. вышеприведенный рисунок).

Тонкими стрелками изображены каналы связи в случае переключения на резерв (в обычном состоянии «ведущий/ведомый» они не используются).

Активный драйвер отправляет запросы и активному и пассивному ПЛК. Оба этих ПЛК должны отвечать на запросы. Однако информация о состоянии и отчеты о событиях обоим драйверам на «КАСКАД Цифра» поступают только от активного ПЛК.

ВНИМАНИЕ

Важно понимать, что драйвер не отправляет запросы на чтение, т. к. в противном случае ему пришлось бы фильтровать ответы от резервных блоков. Поскольку только активный ПЛК отправляет данные, интерфейсы драйвера могут обрабатывать незапрашиваемые данные поровну. Драйверу не нужно знать, какой из ПЛК активный, а какой нет.

Драйвер 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:

Для отправки данных в ПЛК ведущая часть драйвера должна отправить запрос на запись. Ответ за запрос на запись передается только на уровне протокола. На вышеприведенном рисунке эти ответы изображены пунктирными линиями.

Существуют два способа ввода данных: отправка ведущим устройством запроса на чтение для запроса данных из ПЛК и прием ведущим устройством запроса на запись от ПЛК.

Ведомое устройство отвечает на запрос на чтение «холостыми» данными в целях симуляции. Запрос настоящих данных из драйвера не поддерживается, т. к. в обычном случае система «КАСКАД Цифра» не запрашивает данные ПЛК.

РазделОписание
Драйвер Modbus/TCP, основные сведенияОбзор и ссылки на другие разделы
UNICOS, основные сведенияОбзор и введение в UNICOS.
Требования и установкаТребования и установка драйвера Modbus/TCP.
Файл конфигурации драйвера Modbus/TCPФайл конфигурации содержит необходимые записи для ПЛК или группы ПЛК.
панель конфигурации драйвера Modbus/TCPНа этой панели создаются и настраиваются подключения компонентов.
Ввод адресов периферии для драйвера Modbus/TCPПанель ввода адресов периферии.
Пример драйвера Modbus/TCPПодключение.
Внутренние точки данных драйвера Modbus/TCPЭлементы внутренних точек данных.
Детальная информация о драйвере Modbus/TCPОписание функциональных кодов, записей в файле config, кодов ошибок и сообщений об ошибках.
Выводы и полезные ссылкиСсылки на соответствующие разделы справки.