МЭК 60870-5-101 и -104: справочник разработчика
МЭК 60870-5 — семейство протоколов телемеханики: по ним контролируемый пункт отдаёт в диспетчерский центр состояния, измерения и события, а принимает команды телеуправления и уставки. В России это основной протокол связи низового оборудования с АСДУ, и чаще всего под ним имеют в виду две части семейства — 101 и 104.
Их разделять не стоит: прикладная часть у них общая, различается только доставка. Всё, что описано ниже про типы информации, адресацию, причины передачи и команды, одинаково работает в обеих. Различия — в двух отдельных разделах: канальный уровень 101 и управление соединением 104.
Одна прикладная часть, разный транспорт
| МЭК 60870-5-101 | МЭК 60870-5-104 | |
|---|---|---|
| Среда | Последовательная линия: RS-232, RS-422/485, радиоканал, модем | Сеть TCP/IP, порт 2404 |
| Обрамление | Кадр FT1.2: стартовый байт, адрес канала, данные, контрольная сумма | Заголовок APCI: 0x68, длина и четыре управляющих октета |
| Целостность | Контрольная сумма кадра | Обеспечивает TCP, своей суммы нет |
| Кто начинает обмен | Небалансный режим — только пункт управления; балансный — обе стороны | Соединение открывает пункт управления, дальше данные идут в обе стороны |
| Подтверждения | На уровне кадра, по функциям канального уровня | Счётчиками отправленных и принятых APDU, окна k и w |
| Где применяется | Выделенные линии, радиомодемы, старые каналы связи | Ethernet, сотовая связь, VPN — сегодня основной вариант |
Как устроен ASDU
Смысловая единица обмена — ASDU (блок данных прикладного уровня). Он одинаков для 101 и 104 и состоит из заголовка и информационных объектов.
Заголовок — четыре поля:
- Тип (один байт) — что именно передаётся: однопозиционная сигнализация, измерение с плавающей точкой, команда, ответ на опрос.
- Квалификатор переменной структуры — число объектов в ASDU и бит
SQ. ПриSQ=0у каждого объекта свой адрес; приSQ=1передаётся один начальный адрес, а объекты идут подряд — так экономят трафик при передаче длинных последовательностей. - Причина передачи (один или два байта) — почему пришли эти данные: периодика, спорадика, ответ на опрос, подтверждение команды. Во втором байте, если он включён, — адрес источника.
- Общий адрес ASDU (один или два байта) — адрес контролируемого пункта, то есть устройства целиком.
Дальше идут информационные объекты: адрес объекта (один, два или три байта) и значение с признаком качества, а у типов «с меткой» — ещё и время.
Типы информации
Типов в стандарте больше сотни, но в обычном проекте используется полтора десятка.
| Код | Обозначение | Что это |
|---|---|---|
| 1 | M_SP_NA_1 | Однопозиционная сигнализация: 0 или 1 |
| 3 | M_DP_NA_1 | Двухпозиционная сигнализация: включено, отключено, промежуточное, неопределённое — для выключателей и разъединителей |
| 5 | M_ST_NA_1 | Положение переключателя отпаек |
| 9 / 11 / 13 | M_ME_NA_1 / NB_1 / NC_1 | Измерение: нормализованное, масштабированное, с плавающей точкой |
| 15 | M_IT_NA_1 | Показания счётчика (интегральные суммы) |
| 30 / 31 | M_SP_TB_1 / M_DP_TB_1 | Те же сигнализации, но с меткой времени CP56Time2a |
| 34 / 35 / 36 | M_ME_TD_1 / TE_1 / TF_1 | Измерения с меткой времени |
| 37 | M_IT_TB_1 | Показания счётчика с меткой времени |
| 70 | M_EI_NA_1 | Признак окончания инициализации устройства |
| 45 / 46 / 47 | C_SC_NA_1 / C_DC_NA_1 / C_RC_NA_1 | Команды: одно- и двухпозиционная, пошаговое регулирование |
| 48 / 49 / 50 | C_SE_NA_1 / NB_1 / NC_1 | Уставки: нормализованная, масштабированная, с плавающей точкой |
| 100 | C_IC_NA_1 | Общий опрос |
| 101 | C_CI_NA_1 | Опрос счётчиков |
| 103 | C_CS_NA_1 | Синхронизация времени |
Практическое следствие: тип задаёт не только смысл, но и формат значения. Одна и та же величина, переданная как нормализованное измерение и как значение с плавающей точкой, потребует разной обработки — нормализованное приходит целым числом в диапазоне −1…+1 и требует пересчёта в инженерные единицы по коэффициенту из проекта.
Причина передачи
Поле причины отвечает на вопрос «почему это пришло» и в отладке помогает больше всего:
- 1 — периодическая передача, 2 — фоновое сканирование, 3 — спорадически (значение изменилось), 5 — по запросу.
- 6 — активация (команда отправлена), 7 — подтверждение активации, 10 — завершение активации. Для команд эти три причины образуют полный цикл.
- 20 — данные в ответ на общий опрос; 21…36 — ответ на опрос конкретной группы; 37 — ответ на опрос счётчиков.
- 44…47 — отказы: неизвестный тип, неизвестная причина передачи, неизвестный общий адрес, неизвестный адрес объекта. Если устройство отвечает такими причинами, дело почти всегда в настройках адресации.
В том же поле есть два бита: P/N — отрицательное подтверждение (команда не принята) и T — тестовая передача, которую принимающая сторона не должна считать реальными данными.
Адресация
Адресов здесь два уровня. Общий адрес ASDU указывает на устройство: один или два байта, чаще два. Адрес информационного объекта (IOA) указывает на конкретный сигнал: один, два или три байта, в практике — три.
Размеры этих полей — не свойство протокола, а параметр проекта, и они должны совпадать у пункта управления и контролируемого пункта. Это источник ошибки номер один: если на одной стороне IOA занимает два байта, а на другой три, кадры формально проходят, но адреса разъезжаются, и сигналы появляются «не там» или сыплются отказы с причиной 47.
Сам перечень адресов протокол не описывает: что лежит по адресу 1001, знает только проектная документация. Составленная и согласованная таблица сигналов — такая же часть поставки, как сам контроллер.
Качество: биты, без которых значение ничего не значит
К каждому измерению и сигналу прикладывается байт качества:
IV— недостоверно: источник неисправен или связи с ним нет. Значение показывать нельзя, только признак отсутствия данных.NT— не актуально: значение устарело, обновление не приходит.SB— замещено: значение поставлено оператором вручную, а не получено от датчика.BL— заблокировано: обновление сигнала запрещено на месте.OV— переполнение диапазона.
Типовая ошибка приёмной стороны — читать только значение. Тогда после обрыва связи на мнемосхеме остаётся последнее полученное число, выглядящее вполне правдоподобно, хотя пришло оно с битом IV и означает «данных нет».
104: соединение, счётчики и таймеры
В 104 поверх TCP добавлен собственный слой управления — APCI. Кадр начинается байтом 0x68, затем длина и четыре управляющих октета. Форматов три:
- I-формат — кадр с данными. Несёт два счётчика: номер отправленного и номер последнего принятого APDU.
- S-формат — подтверждение приёма, когда своих данных отправить нечего.
- U-формат — управление:
STARTDT(начать передачу данных),STOPDT(прекратить),TESTFR(проверка живости), каждый в вариантах «активация» и «подтверждение».
Поток ограничен двумя окнами: k — сколько I-кадров можно отправить, не получив подтверждения (по умолчанию 12), и w — после скольких принятых кадров приёмник обязан подтвердить приём (по умолчанию 8, и w не должно превышать две трети k). Если приёмная сторона не шлёт подтверждения, передатчик после k кадров замолкает — со стороны это выглядит как «связь есть, данные встали».
Четыре таймера задают поведение при отказах: t0 — время на установление соединения (30 с), t1 — ожидание подтверждения отправленного кадра (15 с), t2 — через сколько подтвердить приём, если своих данных нет (10 с, обязательно меньше t1), t3 — через сколько молчания отправить тестовый кадр (20 с). Истечение t1 означает разрыв: соединение закрывается и открывается заново.
Важная деталь для резервирования: при нескольких соединениях с пунктом управления данные передаются только по тому, где выполнен STARTDT. Остальные держатся открытыми, но молчат — это штатный механизм резервного канала, а не ошибка.
101: канальный уровень и опрос классов
В 101 своего слоя управления нет — есть канальный уровень FT1.2 с двумя видами кадров: фиксированной длины (служебные, начинаются с 0x10) и переменной (с данными, начинаются с 0x68); оба заканчиваются контрольной суммой и байтом 0x16.
Режима работы два. В небалансном инициатива только у пункта управления: он опрашивает контролируемые пункты по очереди, запрашивая данные класса 1 (срочные: события, спорадика) и класса 2 (периодические измерения). Чтобы не гонять опрос вхолостую, в ответах есть бит ACD — «у меня есть данные класса 1»; увидев его, мастер запрашивает их вне очереди. Бит DFC означает обратное: «не шли больше, буфер занят».
В балансном режиме стороны равноправны и передают по мере появления данных — так работают выделенные линии «точка — точка».
Адрес канального уровня (0, 1 или 2 байта) — отдельный от общего адреса ASDU. В небалансной схеме на общей линии они обычно совпадают по значению, но это соглашение проекта, а не требование протокола.
Порядок обмена при запуске
Последовательность, к которой сводится большинство внедрений (на примере 104):
- Пункт управления открывает TCP-соединение на порт 2404.
- Отправляет
STARTDT act, получаетSTARTDT con— до этого момента данные не передаются. - Контролируемый пункт сообщает об окончании инициализации (тип 70), если он только что перезапустился.
- Пункт управления выполняет общий опрос (тип 100 с квалификатором 20): в ответ приходят все текущие значения с причиной 20, а завершается серия причиной 10.
- При необходимости выполняется синхронизация времени (тип 103) и опрос счётчиков (тип 101).
- Дальше устройство передаёт данные само: изменения — спорадически, измерения — периодически или по изменению сверх заданной апертуры.
После восстановления связи общий опрос повторяют: он снимает расхождение между реальным состоянием объекта и картиной, оставшейся у диспетчера.
Команды и телеуправление
Команда — такой же ASDU, только с причиной 6 (активация). Устройство отвечает подтверждением активации (причина 7), а когда команда физически отработана — завершением активации (причина 10). Отказ приходит тем же типом с установленным битом P/N.
Для ответственных операций применяется двухшаговая схема «выбор — исполнение»: в команде есть бит S/E, и сначала передаётся выбор объекта, а затем — исполнение. Устройство удерживает выбор ограниченное время; если исполнение не пришло, выбор снимается. Обязательность схемы задаётся проектом, но для коммутационных аппаратов она практически стандарт.
В команде есть и квалификатор: длительность импульса (короткий, длинный, постоянный) и номер выхода. Расхождение в трактовке квалификатора между сторонами — частая причина «команда прошла, а привод не сработал».
Как это связано с нашим оборудованием и ПО
МЭК 60870-5-101 и МЭК 60870-5-104 входят в список протоколов, поддерживаемых контроллерами ТК16L и устройствами серии E-422; способ реализации и лицензирование под конкретный проект уточняются в технической поддержке. Типовая роль в проекте выглядит так:
- Контроллер собирает данные с объекта своими каналами — с датчиков, счётчиков и полевых устройств — и отдаёт их в диспетчерский центр по 104 (по 101, если канал последовательный), выступая контролируемым пунктом.
- Команды телеуправления и уставки приходят обратным потоком по тому же соединению и отрабатываются выходами контроллера.
- Перечень сигналов с адресами объектов и типами задаётся при настройке и согласуется с принимающей стороной — это тот самый документ, без которого интеграция не начинается.
Типовые ошибки
| Симптом | Где искать |
|---|---|
| Соединение устанавливается, данных нет | Не отправлен или не подтверждён STARTDT; либо это резервное соединение, на котором передача намеренно не запущена |
| Данные пошли и через несколько секунд встали | Приёмник не подтверждает кадры: исчерпано окно k. Проверить w и то, отправляются ли S-кадры |
| Соединение рвётся каждые 15–20 секунд | Истекает t1: подтверждения не доходят или сторона не отвечает на TESTFR |
| Сигналы приходят «не по своим адресам» | Разные размеры полей: общий адрес ASDU (1 или 2 байта), адрес объекта (1, 2 или 3 байта) |
| Ответы с причиной 44…47 | Устройство не знает такого типа, причины, общего адреса или адреса объекта — сверять карту сигналов и настройки адресации |
| Спорадические данные не приходят, только общий опрос | Отключена передача по изменению или задана слишком большая апертура для измерений |
| События приходят с неверным временем | Не выполняется синхронизация времени; либо перепутана трактовка бита летнего времени и признака недостоверности в метке CP56Time2a |
| Значение на мнемосхеме выглядит правдоподобно, но устарело | Приёмная сторона игнорирует биты качества IV и NT |
| Команда подтверждается, но привод не срабатывает | Не выполнена схема «выбор — исполнение» либо расходится трактовка квалификатора команды |
| 101: устройство отвечает только на часть опросов | Небалансный режим: не запрашиваются данные класса 1 при установленном бите ACD, либо выставлен DFC |
С чего начать
Порядок, который экономит больше всего времени: сначала согласовать с принимающей стороной четыре параметра — общий адрес ASDU, размеры полей адреса, набор типов и перечень сигналов с адресами объектов. Затем поднять соединение и убедиться, что проходит STARTDT и отвечает общий опрос: на этом этапе видно почти все ошибки адресации. Дальше проверить спорадическую передачу — изменить сигнал на объекте и увидеть его с причиной 3. И только после этого подключать команды, начиная с неответственного выхода.
