ЖУРНАЛ СТА 4/2014

сети имеются два сервера, обмен дан- ными с каждым из которых состоит из двух запросов чтения и одного запроса записи, причём запросы записи исполь- зуются для формирования команд одно- позиционного управления. Каждая ко- манда состоит из записи клиентом MODBUS логической единицы в неко- торое битовое поле типа Coil удалённого сервера, задержки длительностью 2 с и последующей записи логического нуля в это же битовое поле. Пусть в конфигу- рации клиента для каждого сервера за- дан тайм-аут ответа, равный 1 с. Пред- положим, что один из серверов по ка- кой-то причине стал недоступным, ска- жем, из-за временного вывода управ- ляемого им агрегата из эксплуатации, а клиент в это время по нажатию кнопки на экранной форме автоматизирован- ного рабочего места оператора начинает выполнять команду включения агрега- та, управляемого каналами дискретного вывода на другом сервере, записав логи- ческую 1 в соответствующее поле типа Coil . Далее клиент пытается передать три запроса теперь уже недоступному серве- ру, и каждый из запросов через 1 с за- вершается неудачей по тайм-ауту, что в сумме составляет 3 с и превышает 2 с, по истечении которых требовалось пере- дать логический 0 серверу, на котором начато выполнение команды. Последо- вательность дальнейших событий мо- жет, как минимум, закончиться выво- дом сообщения об ошибке выполнения команды для оператора. Таким образом, при конфигурирова- нии клиента MODBUS RTU необходи- мо устанавливать минимально возмож- ные значения тайм-аута ответа для сер- веров, а также учитывать их значения при оценке времени обмена данными по сети. Если для клиента MODBUS не- известен или слабо документирован ме- ханизм определения тайм-аута ответа, минимальное значение тайм-аута T TOUT для каждого сервера можно оценить, воспользовавшись следующим прибли- жённым соотношением: T TOUT = T SDR + T RES + T 3.5 Здесь T SDR – задержка ответа серве- ра, T RES – время самого длинного от- вета сервера при выбранной скорости обмена, T 3.5 – длительность 3,5 симво- лов тишины при выбранной скорости обмена. Например, для сервера MODBUS RTU контроллера CPM712 можно опре- делить ряд минимальных значений тайм-аута ответа, воспользовавшись дан- ным приближённым соотношением и расчётными данными таблицы 2: для скорости 19200 бит/с – 170 мс; для 38400 бит/с – 90 мс; для 57600 бит/с – 70 мс; для 115200 бит/с – 40 мс. Итоговые оценки для верности округлены до бли- жайшего десятка миллисекунд сверху. Приведённые рассуждения об оценке тайм-аута ответа относятся только к се- тям MODBUS RTU, поскольку в режи- ме ASCII селекция пакетов запроса и ответа производится по специальным символам, обрамляющим пакет, а в протоколе MODBUS TCP между кли- ентом и каждым сервером устанавлива- ется прямое TCP-соединение. Обратите внимание, что тайм-аут от- вета, который может быть задан поль- зователем в конфигурации клиента (ма- стера) MODBUS контроллера CPM712 в окне PLC Configuration , показанном на рис. 7, для каждого опрашиваемого сервера (подчинённого узла) представ- ляет собой ожидаемое максимальное значение задержки ответа сервера T SDR , то есть интервал времени между пере- дачей клиентом последнего символа за- проса до получения первого символа ответа от сервера. Команды управления и параметризация приложений на подчинённых узлах Упомянутые особенности протокола MODBUS ставят под сомнение пра- вильность реализации сетевых команд управления путём обычной записи значений в Holding -регистры или бито- вые поля типа Coil . Такой способ реали- зации команд основан на предположе- нии, что переменные удалённого серве- ра, отображённые на Holding -регистры, доступны для записи и чтения в любой момент времени. Однако даже кратко- временные отказы сети, в том числе не- посредственно не связанные с серве- ром, на котором требуется выполнить команду, могут привести к нарушению алгоритма её выполнения. Именно поэ- тому в более развитых промышленных сетевых протоколах, таких как DNP3, команды аналогового и дискретного управления являются объектами при- кладного уровня протокола: Analog Out- put Block (блок аналогового управле- ния, или AOB) и Control Relay Output Block (блок дискретного управления, или CROB). И по этой же причине пользователям рекомендуется реализо- вывать команды управления по сети MODBUS способом, чуть более слож- ным, чем просто запись клиентом значения в Holding -регистр или битовое поле типа Coil удалённого сервера. Команда может рассматриваться как функция, вызываемая клиентом на уда- лённом сервере и имеющая тип (но- мер), чтобы можно было отличать одну команду от другой, набор входных аргу- ментов, передаваемых функции при вызове, и возвращаемое значение. На- бор входных аргументов и возвращае- мое значение дополняются служебным полем, содержащим, как минимум, счётчик вызова. При запуске команды на удалённом сервере клиент записыва- ет номер функции, значения входных аргументов и увеличенное на единицу значение счётчика вызова данной функции, получаемое у сервера, на ко- тором выполняются команды. Команда считается завершённой, а результат го- товым для чтения клиентом, как только значение счётчика вызова, получаемое клиентом от сервера, становится рав- ным значению счётчика, переданному клиентом серверу при запуске команды. 80 СТА 4/2014 АППА РАТ НЫЕ С Р Е ДС Т В А / П РОМЫШЛ Е ННЫЕ КОН Т РОЛЛ Е РЫ www.cta.ru Рис. 6. Окно утилиты Wireshark при измерении времени обмена с CPM713

RkJQdWJsaXNoZXIy MTQ4NjUy