Какво е DNP3
DNP3 (Distributed Network Protocol, version 3) е протокол за телемеханика, създаден от Westronic (днес GE) в началото на 90-те години. Той е де факто стандарт за SCADA комуникация в Северна Америка и е широко разпространен в Латинска Америка, Австралия и Азия. От 2010 г. е стандартизиран като IEEE 1815. DNP3 покрива електроенергетика, водоснабдяване, газоснабдяване и петролопроводи.
Архитектура
DNP3 следва трислоен EPA модел (Enhanced Performance Architecture), подобен на IEC 101:
| Слой | Функция |
|---|---|
| Канален (Data Link Layer) | Кадриране с CRC на всеки 16-байтов блок, адресиране на master/outstation, потвърждение |
| Транспортен (Pseudo-Transport) | Сегментиране и реасемблиране на съобщения, по-дълги от един кадър |
| Приложен (Application Layer) | Обекти, вариации, функционални кодове (Read, Write, Select, Operate, Direct Operate, Freeze) |
Физически интерфейс
DNP3 не дефинира собствен физически слой. В практиката се ползват:
- RS-232 / RS-485 — сериен достъп, често с радиомодем.
- TCP/IP — DNP3 over TCP (порт 20000 по подразбиране). Най-разпространен в нови инсталации.
- UDP/IP — за приложения, където загубата на единичен пакет е допустима.
- Оптика, радио, сателит — DNP3 работи върху всяка среда, която предоставя байтов поток.
Master и Outstation
DNP3 дефинира две роли:
- Master — SCADA центърът или събирателят. Той инициира заявки, получава данни и изпраща команди.
- Outstation — RTU или IED на терен. Събира данни от полеви устройства и отговаря на master-а.
За разлика от IEC 101, където slave-ът в небалансиран режим не може да инициира, outstation-ът в DNP3 може да изпраща unsolicited responses — спонтанни данни без предварително запитване.
Обекти и вариации
Данните в DNP3 се организират по обектни групи (Group) и вариации (Variation):
| Група | Описание | Типични вариации |
|---|---|---|
| Group 1 | Binary Input (статус) | V1: packed, V2: with flags |
| Group 2 | Binary Input Event | V1: without time, V2: with absolute time, V3: with relative time |
| Group 10 | Binary Output (команда) | V1: packed, V2: with flags |
| Group 12 | CROB (Control Relay Output Block) | V1: control code + count + on/off time |
| Group 30 | Analog Input (текуща стойност) | V1: 32-bit int, V3: 32-bit int no flag, V5: float |
| Group 32 | Analog Input Event | V1: 32-bit no time, V3: with time, V5: float no time, V7: float with time |
| Group 20 | Counter | V1: 32-bit with flag, V5: 32-bit no flag |
| Group 40 | Analog Output Status | V1: 32-bit int, V3: float |
| Group 50 | Time and Date | V1: absolute time (ms since 1970-01-01) |
Master-ът задава коя вариация иска в заявката. Outstation-ът може да отговори с различна вариация, ако поисканата не се поддържа.
Класове данни
DNP3 дефинира четири класа:
- Class 0 — статични данни: текущите стойности на всички точки (аналог на General Interrogation в IEC 104).
- Class 1 — събития с висок приоритет.
- Class 2 — събития със среден приоритет.
- Class 3 — събития с нисък приоритет.
При стартиране master-ът поисква Class 0 (пълен снимък), а след това периодично поисква Class 1/2/3 (само промените). Outstation-ът буферира събитията с времеви печат и ги предава при следващото запитване или като unsolicited response.
Unsolicited Responses
Ключово предимство на DNP3 пред IEC 101: outstation-ът може да изпраща данни по собствена инициатива. Когато настъпи събитие (промяна на вход, превишение на мъртва зона), outstation-ът изпраща unsolicited response към master-а. Master-ът потвърждава с Application Confirm. Ако потвърждение не пристигне, outstation-ът препредава.
Този механизъм е особено полезен при бавни канали: вместо master-ът да пита периодично, outstation-ът съобщава само при промяна.
Команди (CROB)
DNP3 поддържа два режима на управление:
- Select-Before-Operate (SBO) — master-ът изпраща Select, outstation-ът потвърждава, master-ът изпраща Operate. Двуфазен контрол за критични команди.
- Direct Operate — единична команда без предварителен Select. По-бърз, но без допълнителна проверка.
CROB (Group 12, Variation 1) съдържа контролен код (Latch On, Latch Off, Pulse On, Pulse Off), брой импулси, време на включено и изключено състояние.
Канален слой
Каналният кадър на DNP3 има фиксирана начална секвенция (0x0564), дължина, контролен байт, адрес на получател (2 байта) и адрес на подател (2 байта). Данните се разбиват на 16-байтови блокове, всеки с 2-байтов CRC. Това осигурява висока надеждност при зашумени серийни канали.
DNP3 спрямо IEC 104
| Характеристика | DNP3 | IEC 104 |
|---|---|---|
| Произход | Северна Америка (GE/Harris) | Европа (IEC) |
| Стандарт | IEEE 1815 | IEC 60870-5-104 |
| Транспорт | Сериен, TCP (20000), UDP | TCP (2404) |
| Модел на данните | Group/Variation (event-based) | Type ID / IOA (event-based) |
| Спонтанно предаване | Unsolicited responses | Спонтанни ASDU |
| Буфериране на събития | Вградено в outstation (Class 1/2/3) | Зависи от RTU реализацията |
| Сигурност | Secure Authentication v5 (SAv5) | IEC 62351 (TLS) |
| Географски фокус | Америка, Австралия, Азия | Европа, Африка, Близък Изток |
Secure Authentication (SAv5)
IEEE 1815-2012 добавя Secure Authentication version 5 — механизъм за автентикация на критични съобщения (команди, конфигурация). SAv5 ползва HMAC-SHA-256 с предварително споделени ключове или сертификати. Всяка критична заявка преминава през challenge-response последователност, без да криптира данните. За пълна конфиденциалност DNP3 се ползва с TLS (DNP3 over TLS).
Типични приложения
- Електроразпределение — реклоузъри, секционни прекъсвачи, регулатори на напрежение по фидерите.
- Електропреносна мрежа — RTU в подстанции, свързани със SCADA центъра.
- Водоснабдяване и канализация — помпени станции, резервоари, нивомери.
- Нефт и газ — компресорни станции, тръбопроводен мониторинг.
Въвеждане в експлоатация
- Определяне на физическата среда: сериен (RS-232/485) или TCP/IP.
- Настройка на адреси: master address и outstation address (0–65519).
- Дефиниране на точковата таблица: Group, Variation, индекс, мъртва зона (deadband), Class assignment.
- Конфигуриране на unsolicited responses: разрешаване, интервал, максимален брой събития.
- Тест с DNP3 протоколен анализатор (Triangle MicroWorks Protocol Test Harness, Wireshark DNP3 dissector).
- Проверка на integrity poll (Class 0), event poll (Class 1/2/3) и команди (SBO).
- Активиране на SAv5, ако е необходимо.
Типични проблеми
- Несъвпадение на Group/Variation между master и outstation — точката не се разпознава.
- Препълване на event буфера при бавен канал — загуба на събития.
- Грешна deadband настройка — твърде чести или твърде редки аналогови събития.
- Unsolicited responses не се потвърждават — outstation-ът ги препредава и натоварва канала.
- CRC грешки при зашумен сериен канал — да се провери окабеляването и скоростта.
Кога се избира DNP3
Когато проектът е в Северна или Южна Америка, Австралия или Азия, където DNP3 е индустриален стандарт; при интеграция с оборудване, което поддържа само DNP3; или когато са необходими unsolicited responses и вградена автентикация (SAv5) без допълнителен TLS слой. В Европа IEC 104 е предпочитан, а DNP3 се среща при внос на оборудване от американски производители.