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

Резюме и ссылки

Драйвер DNP3 — это протокол, основанный на TCP/IP или V24. Передача телеграмм осуществляется согласно норм DNP3.

В целях стандартизации гибкая спецификация допускает набор различных параметров.

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

Совместимость драйвера DNP3 (операционная совместимость)

Протокол телеуправления DNP3 реализован в «КАСКАД Цифра» на уровне функционала ведущего устройства 3+. Это значит, что соединение между «КАСКАД Цифра» и IED (Intelligent Electronic Device — интеллектуальным электронным устройством) осуществляется по принципу «ведущий-ведомый». IED в данном случае более верно называть внешней станцией.

Драйвер DNP3 на «КАСКАД Цифра» поддерживает следующие типы групп объектов:

  • Двоичные записи и события;
  • Счетчики и события счетчиков;
  • Аналоговые записи и события;
  • Состояния двоичных и аналоговых выходных данных.

В следующей таблице вы найдете предустановленные коды функций и номера индексов, используемые для отправки запроса или получения отклика.

В настоящее время поддерживаются только группы, выделенные жирным шрифтом.

Обозначение групп в «КАСКАД Цифра»Группы объектов и вариантыТип данных «КАСКАД Цифра»ЗапросОтклик
ГруппаколичествоНомер вариантаТип данных DNP3 — описание Функциональный кодУказательФункциональный кодУказатель
Двоичные входные данные11Двоичные входные данные — сжатый форматBIT_VAR  129 (отклик)00, 01 (стартовый-стоповый)
12Двоичные входные данные — с флагамиBIT_VAR  129 (отклик)00, 01 (стартовый-стоповый)
Двоичные входные данные о событии21Двоичные входные данные о событии — без указания времениBIT_VAR  129 (отклик)130 (отклик без запроса)17, 28 (индекс)
22Двоичные входные данные о событии — с указанием абсолютного времениBIT_VAR  129 (отклик)130 (отклик без запроса)17, 28 (индекс)
23Двоичные входные данные о событии — с указанием относительного времениBIT_VAR  129 (отклик)130 (отклик без запроса)17, 28 (индекс)
Двухбитовые двоичные входные данные30Двухбитовые двоичные входные данные — любой вариантINTEGER_VAR1 (считать доступ)22 (присвоить класс)00, 01 (стартовый-стоповый)06 (без диапазона или все)  
31Двухбитовые двоичные входные данные — упакованный форматINTEGER_VAR1 (считать доступ)00, 01 (стартовый-стоповый)06 (без диапазона или все)129 (отклик)00, 01 (стартовый-стоповый)
32Двухбитовые двоичные входные данные — с флагамиINTEGER_VAR1 (считать доступ)00, 01 (стартовый-стоповый)06 (без диапазона или все)129 (отклик)00, 01 (стартовый-стоповый)
Состояние двоичных выходных данных100Двоичные выходные данные — любой вариантBIT_VAR1 (считать доступ)06 (без диапазона или все)  
102Двоичные выходные данные — состояние выходных данных с флагамиBIT_VAR  129 (отклик)00, 01 (стартовый-стоповый)
Бинарная команда см. также Бинарные команды121Бинарная команда — блок выводов исполнительного реле (CROB — Control Relay Output Block)Комплексный объект  129 (отклик)эхо-запрос
Счетчик201Счетчик — 32 бита с флагомUINTEGER_VAR  129 (отклик)00, 01 (стартовый-стоповый)
202Счетчик — 16 бит с флагомUINTEGER_VAR  129 (отклик)00, 01 (стартовый-стоповый)
205Счетчик — 32 бита без флагаUINTEGER_VAR  129 (отклик)00, 01 (стартовый-стоповый)
206Счетчик — 16 бит без флагаUINTEGER_VAR  129 (отклик)00, 01 (стартовый-стоповый)
Замороженный счетчик210Замороженный счетчик — любой вариантUINTEGER_VAR1 (считать доступ)06 (без диапазона или все)  
211Замороженный счетчик — 32 бита с флагомUINTEGER_VAR  129 (отклик)00, 01 (стартовый-стоповый)
212Замороженный счетчик — 16 бит с флагомUINTEGER_VAR  129 (отклик)00, 01 (стартовый-стоповый)
219Замороженный счетчик — 32 бита без флагаUINTEGER_VAR  129 (отклик)00, 01 (стартовый-стоповый)
2110Замороженный счетчик — 16 бит без флагаUINTEGER_VAR  129 (отклик)00, 01 (стартовый-стоповый)
Событие счетчика221Событие счетчика — 32 бита с флагомUINTEGER_VAR  129 (отклик)130 (отклик без запроса)17, 28 (индекс)
222Событие счетчика — 16 бит с флагомUINTEGER_VAR  129 (отклик)130 (отклик без запроса)17, 28 (индекс)
Аналоговые входные данные301Аналоговые входные данные — 32 бита с флагомINTEGER_VAR  129 (отклик)00, 01 (стартовый-стоповый)
302Аналоговые входные данные — 16 бит с флагомINTEGER_VAR  129 (отклик)00, 01 (стартовый-стоповый)
303Аналоговые входные данные — 32 бита без флагаINTEGER_VAR  129 (отклик)00, 01 (стартовый-стоповый)
304Аналоговые входные данные — 16 бит без флагаINTEGER_VAR  129 (отклик)00, 01 (стартовый-стоповый)
Аналоговые входные данные о событии321Аналоговые входные данные о событии — без указания времениINTEGER_VAR  129 (отклик)130 (отклик без запроса)17, 28 (индекс)
322Аналоговые входные данные о событии — 16 бит без указания времениINTEGER_VAR  129 (отклик)130 (отклик без запроса)17, 28 (индекс)
Состояние аналоговых выходных данных400Состояние аналоговых выходных данных — любой вариантINTEGER_VAR1 (считать доступ)06 (без диапазона или все)  
402Состояние аналоговых выходных данных — 16 бит с флагомINTEGER_VAR  129 (отклик)00, 01 (стартовый-стоповый)
Аналоговые выходные данные412Аналоговые выходные данные — 16 битINTEGER_VAR3 (выбор)4 (работа)5 (прямая работа)6 (прямая работа без отклика)17, 28 (индекс)129 (отклик)эхо-запрос
Время и дата501Время и дата — абсолютное времяTIME_VAR2 (запись доступа)07 (ограниченное количество)  
Центральная станция связи (CTO) — время и дата511Время и дата CTO — абсолютное время, синхронизированноеTIME_VAR  129 (отклик)130 (отклик без запроса)07 (ограниченное количество = 1)
512Время и дата CTO — абсолютное время, не синхронизированноеTIME_VAR  129 (отклик)130 (отклик без запроса)07 (ограниченное количество = 1)
Задержка времени521задержка времени — грубаяUINTEGER_VAR  129 (отклик)07 (ограниченное количество = 1)
522задержка времени — точнаяUINTEGER_VAR  129 (отклик)07 (ограниченное количество = 1)
Объекты класса601Объекты класса — данные класса 1BIT_VAR1 (считать доступ)06 (без диапазона или все)  
602Объекты класса — данные класса 2BIT_VAR1 (считать доступ)06 (без диапазона или все)07, 08 (ограниченное количество)  
603Объекты класса — данные класса 3BIT_VAR1 (считать доступ)06 (без диапазона или все)07, 08 (ограниченное количество)  
604Объекты класса — данные класса 4BIT_VAR1 (считать доступ)06 (без диапазона или все)07, 08 (ограниченное количество)  
Внутренняя индикация801Внутренняя индикация — сжатый форматBIT32_VAR2 (запись доступа)00 (стартовый-стоповый)индекс = 7  
 Объект не задан 13 (холодный перезапуск)   
 Объект не задан 23 (измерение задержки)   

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

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

Уровни отладки

Следующие параметры командной строки могут использоваться для выявления возможного источника ошибки. Чтобы получить более подробную информацию о других параметрах, введите -helpdbg.

ОтладкаУровень отладкиОписание
DEBUG_WORK-dbg 2Общая отладочная информация
DBG_API_USR1-dbg 10Отладочная информация об установлении, разрыве и отслеживании подключения.
DBG_DRV_WORK-dbg 24Дополнительная общая отладочная информация.
DEBUG_DRV_USR1-dbg 25Отладочная информация, касающаяся отправленных телеграмм.
DEBUG_DRV_USR2-dbg 26Отладочная информация, касающаяся принятых телеграмм.

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

Преобразование — это перевод аппаратных данных в формат «КАСКАД Цифра». Тип преобразования элемента точки данных может быть запрошен и задан целочисленными константами. Вместе с dpGet() или dpSet() должен использоваться атрибут _address.._datatype. Детальную информацию о целочисленных константах, используемых для преобразований драйвером DNP3, см. в разделе _address.

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

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

Опрос

Во избежание нарушений производительности во время опросов, не все адреса могут быть прочитаны по-отдельности.

Общий запрос

С помощью записи integrityPollAtStartup можно включить-выключить общий запрос при подключении.

Icon ВНИМАНИЕ

Как правило, опрос не производится во время использования драйвера DNP3, т. к. при определенных обстоятельствах он может снизить производительность. В этом случае производится передача данных без запроса или одиночный запрос.

Пример драйвера DNP3

В этом разделе приводится пошаговая инструкция по подключению драйвера DNP3.

УСТАНОВКА ПОДКЛЮЧЕНИЯ

Отправка общего запроса при запуске драйвера

Драйвер DNP3 при подключении отправляет общий запрос. Его можно выключить с помощью записи в файле Config integrityPollAtStartup = 0.

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

#Для TCP-подключения не требуются записи в файле Config

#в секции [dnp3]

#Для последовательного подключения требуется запись

# deviceSerial, например:

[dnp3]
deviceSerial = «IF1» «Com1» «9600,e,8,1»

Детальную информацию о записях в файле Config см. в разделе Возможные записи драйвера DNP3 в файле сonfig.

  1. Настройка устройства (внешней станции) производится на панели «Конфигурация DNP3» (см. п. Конфигурация драйвера DNP3).
    TCP-подключение
    :
    Введите в поле Host (Узел) имя компьютера или IP-адрес, в поле Port (Порт) укажите номер порта сервера, а в поле LA — адрес канала внешней станции (пример см. ниже на рисунке «Конфигурация TCP-подключения в DNP3»).
    Последовательное подключение
    :
    В поле Device (Устройство) введите имя интерфейса (например, IF1), а в поле LA — адрес канала внешней станции (пример см. ниже на рисунке «Конфигурация последовательного подключения в DNP3»).

Рисунок. панель конфигурации DNP3

Рисунок. конфигурация последовательного подключения в DNP3

  1. Добавьте менеджер драйвера DNP3 с номером драйвера 1 в консоль проекта и запустите его. Симулятор WCCILsim не должен быть запущен!

WCCOAdnp3 -num 1

  1. При успешном подключении к серверу в средство просмотра журналов заносится сообщение (например, из клиентской системы):
  1. WCCOAdnp3   (1), 2008.08.06 09:26:05.428, SYS,  INFO,       
    4, Connected to, (SYS: 1 Event -num 0 CONN: 1)
     
  2. WCCOAdnp3   (1), 2008.08.06 09:26:05.537, SYS,  INFO,      
    156, Driver initialization finished.
  1. Укажите адрес периферии вашей внешней станции для «Устройства 1» (см. п. Определение адресов периферии драйвера DNP3).
    В настоящем примере использован элемент точки данных, с помощью которого осуществляется прием аналоговых значений (аналоговые входные данных DNP3) и отправка двоичных значений (двоичные входные данные DNP3). Это элемент содержит конфигурационные записи _address (адрес периферии) и _original (передача данных).
  2. Задайте адреса периферии для двоичных входных данных и двоичных выходных данных (см. снимки экрана ниже). Для двоичных входных данных поле Function (Функция) не заполняется, поскольку совершенно ясно, что от драйвера требуется считывать. В качестве варианта указывается, к примеру, 2, т. к. значение должно быть 16-битным с флагами состояний. Для выходных данных задается функция 5. Это соответствует «Прямой работе». Поэтому к значению не добавляется префикс. 32-битному значению соответствует вариант 1.

Рисунок. панель конфигурации адреса для двоичных входных данных

Рисунок. панель конфигурации адреса для аналоговых выходных данных

Возможные записи драйвера DNP3 в файле config

Конфигурация драйвера DNP3 определяется следующими записями в секции [dnp3] файла «Config».

ЗаписьТипПо умолчаниюДиапазонОписание
«autoClearRestart»bool10|1Определяет необходимость автоматического удаления драйвером бита перезапуска, переданного внешней станцией.0 -> автоматический сброс бита перезапуска отключен1 -> автоматический сброс бита перезапуска включен
«autoCmdMode»bool10|1Определяет поведение при выполнении команды.0 -> автоматическая обработка для выбора и исполнения выключена.0 -> автоматическая обработка для выбора и исполнения включена.
«autoIntegrityRestart»bool10|1При значении 1 драйвер автоматически осуществляет опрос целостности, если устройство установило бит перезапуска в IIN.
«autoIntegrityLocal»bool10|1При значении 1 драйвер автоматически осуществляет опрос целостности, если устройство установило и сбросило «локальный» бит IIN.
«autoIntegrityOverflow»bool10|1При значении 1 драйвер автоматически осуществляет опрос целостности, если устройство установило и сбросило бит IIN «переполнение буфера».
«autoDisableUnsol»bool00|1Автоматическая деактивация незапрашиваемой передачи данных, если устройство сообщает о перезапуске.(По умолчанию: автоматическая деактивация выключена)
«autoConfirm»bool10|1Включение (1) и выключение (0) автоматического подтверждения на уровне приложений.
«autoTimeSync»bool00|1Автоматическая синхронизация времени, если устройство DNP3 установило бит «Требуется время» в IIN (по умолчанию выключена).
«autoEventPoll»bool00|1Автоматический опрос целостности в случае установки устройством DNP битов «Class Data 1», «Class Data 2», «Class Data 3» в IIN (включено по умолчанию).
channelWatchdogTimeoutuint180>0Таймаут сторожевого таймера. Сторожевой таймер используется для проверки активности канала.Таймаут задается в секундах.
deviceSerialstring string string«»Данная запись задает параметр последовательного устройства.Синтаксис:deviceSerial = <device name> <serial port> <serial parameter>имя устройства:Произвольное имя. Используется в качестве ссылки в панели DNP3 (например «dev1»).последовательный порт:Определяет физический интерфейс (например, «COM1»).параметр последовательного устройства:Характерный для устройства параметр, в зависимости от используемого порта (например, скорость в бодах, контроль четности, число битов, стоповые биты = «9600,e,8,1»).
dnp3DummyReaduint10 — 2Задает характер проверки подключения с использованием холостых операций чтения.0 => холостые операции чтения выключены1 => использовать группу 0, вариант 252 для холостых операций чтения2 => использовать группу 60, вариант 44 для холостых операций чтения
integrityPollAtStartupbool10|1Опрос целостности (общий запрос) при подключении (по умолчанию = TRUE(1)).
«linkAddress»uint3>= 0Определяет адрес канала драйвера DNP3. Данный адрес соответствует адресу «Назначение» внешних станций.
«linkStatusPeriod»unsigned10>= 0Интервал для периода состояния соединения в секундах. При значении 0 телеграммы о состоянии соединения не передаются, если не было передачи телеграмм данных.
«timeStampMode»uint00 — 2Данная конфигурационная запись определяет порядок формирования временных меток «КАСКАД Цифра». Доступны следующие варианты:0 -> использовать время на компьютере в качестве метки времени;1 -> использовать время на устройстве, считая его нормальным местным временем (не переведенным на летнее время);2 -> использовать время на устройстве, считая его универсальным скоординированным временем (UTC).
«readStationTime»uint0>= 0Выполняет считывание времени с внешней станции каждые «х» секунд. «х» означает введенное здесь значение в секундах.Считанное время записывается во внутреннюю точку данных «_Dnp3Station.State.StationTime».
«sesDefaultResponseTimeout»uint5000>= 0Конфигурационная запись устанавливает время ожидания ответов на телеграммы на сеансовом уровне.При превышении времени ожидания, сеанс становится неактивным.Значение указывается в миллисекундах.
«userBitXX»int00 — 32Задает сопоставление битов состояния DNP3 и пользовательских битов «КАСКАД Цифра». При значении «0» (по умолчанию) сопоставление битов состояния выключено. Значение XX означает следующее:OL -> онайн (автоматическое сопоставление);RS -> перезапускCL -> потеря подключенияRF -> удаленно принудительноLF -> локально принудительноCF -> фильтр помехRO -> переключениеOR -> вне диапазонаDC -> неоднородностьRE -> ошибка адреса ПримерuserBitCL = 13Состояние DNP3 будет сопоставлено информационному биту 13 системы «КАСКАД Цифра».
«userBitEvent»int00 — 32Как только данные о событии затрагивают ту же точку, указанную как нормальная в телеграммах, они сопоставляются по тому же адресу периферии.Таким образом, в каждом случае используется группа «не-событие». Это означает, что группа 1 предназначена для двоичного ввода. Следовательно, драйвер DNP3 осуществляет сопоставление данных группы 1, а также группы 2 с группой 1.В случае получения данных о событии, драйвер устанавливает указанный здесь пользовательский бит.По умолчанию = 0 — информационный бит не устанавливается

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

Для каждого периферийного устройства должна быть создана внутренняя точка данных. Для внешней станции типа DNP3 используется внутренняя точка данных _Dnp3Station. Управление внутренними точками данных этого типа осуществляется с панели устройства DNP3. Эта панель позволяет создавать, удалять точки данных, просматривать и менять их содержание.

Точка данных типа _Dnp3Station имеет следующую структуру.

_Dnp3Station

Элемент точки данныхТипDirection (Направление изменения значения)(со стороны драйвера)Описание
КонфигурированиеstringВводСтрока конфигурации для внешней станции. Исходное значение может иметь вид либо IP:<IP-адрес>:<номер порта>:<адрес канала>для TCP/IP-подключений либо SI:<COM-порт>:<адрес канала>для последовательных подключений. Примеры:«IP:192.168.1.1:3333:10» или«SI:COM1:10»
Command.ActiveboolВводВключение-выключение устройства DNP3. При значении FALSE драйвер не будет подключаться к устройству и будет игнорировать все его запросы.
Command.AssignClassdyn_stringВводЗадает адрес для класса. <группа>.<индекс>-<маска класса>Параметр маска класса принимает следующие значения:1 => класс 12 => класс 24 => класс 3Пример»1.10-4» обозначает: добавить двоичный адрес входа с индексом 10 для класса 3.
Command.GQuintВводБитовая маска для отправки общего запроса соответствующему устройству. Бит 0 -> класс 0Бит 1 -> класс 1Бит 2 -> класс 2Бит 3 -> класс 3 Например, значение «5» указывает на отправку общего запроса данных класса 2 и класса 0.
Command.GroupGQdyn_stringВводОтправка запроса в конкретную группу. Позволяет указать вариант формата принимаемых данных. Синтаксис:group:вариант Например:Чтобы получить счетчик целиком с флагами (вариант 1) из 32-битного модема, в элемент точки данных должно быть записано значение 20:1. Информацию о группах и номерах вариантов см. в п. Совместимость драйвера DNP3 (операционная совместимость).
Command.DelayMeasurementboolВводПолучение задержки соответствующего устройства. Измеренное значение будет записано в элемент точки данных State.TimeDelay.
Command.ColdRestartboolВводХолодный перезапуск соответствующей внешней станции.
Command.SyncTimeboolВводСинхронизация времени на устройстве DNP3.
Command.ClearIINunsignedВводОчистка битов внутренней индикации на устройстве. В элемент точки данных записывается битовая маска со следующими значениями: Бит 0 -> сброс бита «Перезапуск»Бит 1 -> сброс бита «Требуется время»
Command.UnsolicitedResponseunsignedВводБитовая маска для включения-выключения незапрашиваемого отлика. Бит 0 -> класс 1Бит 1 -> класс 2Бит 2 -> класс 3 Например, значение «5» означает, что классы 3 и 1 включены, а класс 2 выключен.
Command.ReadIINboolВыводСчитать биты внутренней индикации и записать их в элемент точки данных State.IIN, if TRUE.Обновление битов в «КАСКАД Цифра» происходит при изменении значения (сравнивается старое с новым).
State.ConnStateboolВыводИндикация состояния подключения к устройству DNP3 (не подключено — 0, подключено — 1).
State.IINbit32ВыводОтображение слова состояния внутренней индикации, полученной с устройства DNP3.
State.TimeDelayunsignedВыводВозврат задержки времени в миллисекундах.
State.StationTimetimeВыводПоказывает время считывания с внешней станции (см. также запись в файле Config readStationTime в разделе Возможные записи драйвера DNP3 в файле config ).

Ввод адресов периферии драйвера DNP3

Чтобы задать адрес периферии, нажмите на конфигурационный элемент адреса элемента точки данных. Из выпадающего списка выберите тип драйвера DNP3 и нажмите кнопку Configure (Настроить). Теперь можно приступить к настройке адреса периферии на панели (см. рисунок ниже).

Адрес периферии (строка адреса) можно ввести вручную в поле «Reference (Адрес)» или выбрать из выпадающих списков и счетчиков конкретных компонентов (station — станцияfunction — функцияgroup — группаvariation — вариантindex — индекс). Строка адреса состоит из следующих полей:

<внешняя станция>:<функция>.<группа>:<вариант>.<индекс>

Рисунок. пример ввода адреса периферии

Driver Number (Номер драйвера)

Номер соответствующего менеджера, запускающего драйвер DNP3 (например, -num 4).

Station (Станция)

Имя внутренней точки данных для внешней станции. После указания драйвера DNP3 выбирается автоматически.

Function (Функциональный код)

Необязательная запись. Как правило, функциональный код берется из записи группы объектов. Указывается в том случае, если в группе объектов возможно более одного функционального кода (см. п. Совместимость драйвера DNP3).

В большинстве случаев функциональный код указывается для адресов вывода. К примеру, для двоичных команд возможны варианты «Выбор» (3), «Эксплуатация» (4), «Прямая эксплуатация» (5) и «Подтверждение номера прямой эксплуатации» (6).

Группа

Группа объектов. Если различные группы ссылаются на одни и те же данные (например, Двоичный ввод и Событие двоичного ввода), настройке подлежит только Двоичный ввод, т. к. обеим группам сопоставлен один адрес ввода.
При указании групп «Бинарная команда» или «Аналоговый вывод» состояние отклика должно быть сопоставлено адресу ввода. Это необходимо для оценки состояния команды.

Variation (Вариант)

Необязательная запись. Вариант группы объектов определяет формат данных точки DNP3. Указывается, если требуется получить данные в определенном формате (см. п. Совместимость драйвера DNP3).

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

Указатель

Определяет индекс объекта в группе.

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

Тип преобразования выбирается из выпадающего списка. Тип преобразования — это способ интерпретации данных, считанных с периферийного устройства. Преобразование должно быть соизмеримо с адресом (например, если со станции было считано 4 байта, тип преобразования должен быть float или int32). Если адрес был задан с помощью выпадающих списков и счетчиков, нужный тип преобразования для этого адреса выбирается автоматически.

Если из выпадающего списка выбрать тип по умолчанию, драйвер автоматически определит тип преобразования в зависимости от значения поля адреса.

Low-Level-Comparison (Низкоуровневое сравнение)

Этот параметр подлежит изменению только в том случае, если в качестве направления выбран ввод или ввод-вывод (двунаправленная связь с периферией). Он разрешает отправку данных в Менеджер событий только при их изменении. Это сравнение выполняется над необработанными данными, без преобразования.

Низкоуровневое сравнение — это сравнение вида «старый-новый», оно выполняется для данных, уже полученных с внешней станции (в отличие от сглаживания, при котором данные распределяются по точкам).

Direction (Направление изменения значения)

Определяет направление передачи значений элемента точки данных: отправка (Output — вывод), прием (Input — ввод) или прием-отправка (In/out — ввод-вывод).

Во время настройки следует учитывать, что для некоторых групп можно выбирать только ввод, а для некоторых — только вывод.

Receive Mode (Режим приема)

Можно указать следующие режимы приема: unsolicited — без запросаpolling — опрос или single query — единичный запрос. В режиме единичного запроса драйвер DNP3 не устанавливает бит SQ.

Poll Group (Группа опроса)

Выбор одной из существующих групп опроса. Если групп нет, ее нужно создать в отдельной панели с использованием специальных параметров опроса. Панель открывается кнопкой Poll groups (Группы опроса), дополнительную информацию о группах и параметрах опроса см. в п. Группы опроса.

Address active (Адрес активен)

Если выбран селектор Address active (Адрес активен), будет использован адрес драйвера (см. Таблицы адресов). Адрес может быть и неактивным, при этом ему можно задавать атрибуты и ставить в очередь, но он не будет использоваться драйвером. Это значит, что отправка и получение значений с внешней станции будет невозможна.

Конфигурация специальных групп DNP3

Бинарные команды

Бинарные команды DNP3 (группа 12, вариант 1) или «Блок выводов исполнительного реле» (CROB — Control Relay Output Block) — это сложные объекты с большим количеством различной информации. Поэтому в стандарте DNP3 предусмотрены следующие поля. Сопоставление этой информации в адресе периферии происходит через субиндексы.

ПолеСубиндекс «КАСКАД Цифра»ОписаниеТип эл. точки данныхDirection (Направление изменения значения)
OpType0Вместе с TCC определяет тип операции: 0: NUL1: PULSE_ON2: PULSE_OFF3: LATCH_ON4: LATCH_OFFuintВывод
QU1Поле очередиuintВывод
CR2Поле очисткиuintВывод
TCC3Поле кода включения-отключения 0: NUL1: CLOSE2: TRIP3: RESERVEDuintВывод
Count4Количество выполнений операции внешней станцией.uintВывод
On-Time5Таймаут активности привода вывода в миллисекундах.uintВывод
Off-time6Таймаут не-активности привода вывода в миллисекундах.uintВывод
StatusCode7На стороне вывода всегда имеет значение 0. На стороне ввода возвращает состояние ошибки исполнения команды.uintВывод

Детальную информацию о блоках CROB см. в спецификациях DNP3.

Конфигурация драйвера DNP3

Откройте панель конфигурации драйвера DNP3 через панель управления системой для настройки устройства (внешней станции) в «КАСКАД Цифра».

Рисунок. Система управления — вкладка Драйвер

Нажмите кнопку DNP3 Driver (Драйвер DNP3).

Настройте периферийное устройство / подключение периферии на следующей панели.

Рисунок. Панель конфигурации драйвера DNP3

Панель конфигурации разделена на несколько областей.

Device

При нажатии кнопки Create (Создать) открывается окно создания новой точки данных DNP3. В резервированном проекте для каждого устройства автоматически создается точка данных <device_name+_2>. После создания нового устройства можно задать другие параметры. Они хранятся во внутренней точке данных типа «_Dnp3Station».
Выберите имя устройства из выпадающего списка, если хотите изменить конфигурацию созданного устройства. Если параметры подключения были изменены, они вступят в силу при следующем подключении (т. е. при переподключении после потери связи или изменения состояния подключения — активное/неактивное). После создания точки данных подключения она может использоваться драйвером (перезагрузка не требуется). Подключение к соответствующей станции DNP3 осуществляется, только если был указан ее адрес периферии (см. п. Определение адресов периферии драйвера DNP3).

Нажмите кнопку Remove (Удалить), чтобы удалить выбранное устройство.

В текстовом поле Device description (Описание устройства) можно ввести или изменить описание созданного устройства (по умолчанию используется «_<имя_устройства>»).

Common settings (Общие настройки)

Поля TCP и Serial (Последовательный) определяют используемый тип подключения.

В текстовое поле Host/Device (Узел/устройство) введите IP-адрес/COM-порт сервера DNP3.

В текстовое поле Port (Порт) введите номер порта используемого TCP-подключения к внешней станции DNP3.

В текстовое поле LA введите адрес канала соответствующей внешней станции (по умолчанию = 0).

Селектором Active (Активно) можно изменить режим устройства (активно/неактивно). Устройство (точка данных) не будет удалено, и может быть снова сделано активным в любое время. Изменения, внесенные в конфигурацию подключения, вступят в силу при следующем подключении.

Селекторами Unsolicited Resp. (Незапрашиваемые отклики) можно указать классы, которые должны отправлять данные без запроса (см. п. Command.UnsolicitedResponse в п. Внутренние точки данных драйвера DNP3).

ПРИМЕЧАНИЕ

На некоторых устройствах использование «Unsolicited Resp.» может привести к проблемам соединения.

Во время общего запроса стандартное поведение оконечных устройств DNP3 будет изменено с незапрашиваемого отклика на опрос. Однако некоторые устройства не поддерживают такой смены и вызовут ошибку. Поставив селектор Inactive (Не активен), вы можете выключить переключение и деактивировать отправку незапрашиваемых данных.

Команды

Кнопка General query (Общий запрос) вызывает исполнение общего запроса для выбранного устройства. Общий запрос автоматически выполняется при подключении. Выключить эту функцию можно с помощью записи integrityPollAtStartup в файле Config. В общем запросе драйвер DNP3 не устанавливает бит GQ.

Селекторами можно указать классы, для которых требуется запуск общей очереди (см. также Command.GQ в п. Внутренние точки данных драйвера DNP3). Классы указывают на тип данных: статический или событийный. Статические данные (класс 0) — это текущие значения данных. Событийные данные (классы 1-3) — привязаны к событиям, например:

  • изменение состояния;
  • превышение порогового значения при измерении;
  • изменение аналогового входа на величину, превышающую зону нечувствительности;
  • снимок данных в заданное время;
  • переходный процесс;
  • какая-то новая информация.

Это означает, что общий запрос будет касаться класса 1 только в случае изменения сопоставленной переменной — не все сопоставленные классу 1 переменные будут получены, а только те, чьи значения изменились.

Clear IIN (Очистить IIN) — очистка соответствующих битов внутренней индикации устройства (Restart (Перезапуск) — сброс бита «Перезапуск»; Need Time (Требуется время) — сброс бита «Требуется время»).

Delay (Задержка) — задержка времени в миллисекундах (результат не отображается). Измерение задержки поддерживается только для протокола последовательной связи.

Cold Restart (Холодный перезапуск) — холодный перезапуск соответствующего устройства.

State

В области State (Состояние) отображается информация о соответствующем устройстве DNP3.

В поле State (Состояние) отображается состояние подключения.
В поле Int. Indication (Внутр. индикация) отображается группа флагов (битов) внутренней индикации в двоичной форме. Значения каждого из битов можно посмотреть на всплывающей подсказке при наведении курсора на каждое из двух полей.

ПРИМЕЧАНИЕ

В резервированном проекте эта информация отображается для каждого сервера на рядом расположенных областях.

DNP 3 — расширение: последовательная связь через TCP-подключение

Драйвер DNP3 имеет возможность передавать данные по последовательному протоколу через TCP-подключение. Это упрощает использование преобразователя «Ethernet-последовательный интерфейс», поскольку не требует наличия виртуального COM-порта. В качестве преобразователя может выступать TCP-сервер или TCP-клиент, он может использоваться прозрачно или с использованием режима RFC2217.

Для этого требуется изменить значение записи в файле Config «deviceSerial».

deviceSerial = <Имя устройства> <последовательный порт> <параметры последовательной связи>

Настройки для <Имя устройства> аналогичны тем, которые применяются при использовании последовательного подключения. Запись <последовательный порт> должна иметь вид, которые приведен ниже. В качестве <параметров последовательной связи> указывается пустая строка («»).

tcp[s][rfc]:<Host:Port (IPv4 oder IPv6)> [tcp timeout]

ЭлементОписание
tcpПрефикс, указывающий на необходимость использования TCP-подключения.
sДополнительный параметр, указывает на подключение к серверу. При его отсутствии подразумевается подключение к клиенту. (опционально)
rfcДополнительный параметр, указывает на использование режима RFC2217. (опционально)
ХостИмя или IP-адрес узла.ПримечаниеНе следует указывать имя узла сервера. Оно все равно будет проигнорировано, т. к. сервер принимает подключения от узлов с любым именем.
PortПорт, используемый для подключения. Это «порт прослушивания» для сервера.
tcp timeoutТаймаут для TCP-подключения. По умолчанию: 10 секунд. (опционально)

ПРИМЕР

Ниже приведены 3 примера возможных конфигураций <параметров последовательной связи> при использовании TCP-подключения:

«tcp:host1-1» => Клиент с таймаутом 10 секунд

«tcps:host1-2 5» => Сервер с таймаутом 5 секунд

«tcprfc:host1-1 2» => Клиент в режиме RFC2217, адрес IPv6 и таймаут 2 секунды

Уровень приложений

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

Точка DNP3, объект DNP3 и тип точки DNP3

Точка DNP3 — физическая или логическая сущность с уникальным идентификатором. Она имеет отношение ко входным данным (аналоговым, двоичным, счетчикам) и выходным данным (аналоговым, двоичным). Уникальная точка DNP3 определяется по индексу и номерам групп. Вариант описывает ее формат данных.

Объект DNP3 — это кодированное представление данных из точки или другая структура, имеющая формат группы и номер варианта для передачи телеграммы.

Тип точки DNP3 — это способ группировки точек со схожими характеристиками, функциями, привязкой к физическому аппаратному обеспечению или логическому пространству.

Коды функций

Код функции описывает назначение и работу запрошенной телеграммы. Как правило, код функции берется из записи группы объектов. Вариант кода функции необходим только в том случае, если на одну телеграмму может быть более одного кода функции (см. п. Ввод адресов периферии драйвера DNP3).

В следующей таблице перечислены коды функций, поддерживаемых драйвером DNP3.

ФункцииКод
Функции передачиПодтверждение0
Чтение1
Запись2
Функции управленияВыбор3
Работа4
Прямая работа5
Прямая работа, без подтверждения6
Функции конфигурацииВключить прием без запроса20
Выключить прием без запроса21

Внутренняя индикация

Внутренняя индикация — это глобальная группа флагов, автоматически отправлемых в каждом отклике. Эти флаги содержат информацию о состоянии внешней станции и коды функций последнего запроса.

Информация внутренней индикации влияет только на внешнюю станцию. По этой причине внутренняя индикация сопоставляется внутренней точке данных соответствующей внешней станции.

Псевдо-транспортный уровень

Псевдо-транспортный уровень разбивает телеграммы уровня приложений на несколько сегментов данных. APDU (блоки данных протокола уровня приложений) разбиваются на TPDU (блоки данных протокола транспортного уровня).

Функциональный код содержит номер последовательности, увеличиваемый на единицу с каждым новым сегментом. По этому номеру последовательности транспортный уровень определяет, все ли сегменты были получены.