Детальная информация о драйвере 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Ошибка передачи данных через сокет.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *