Sidebar Left

МЭК 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. И только после этого подключать команды, начиная с неответственного выхода.

Style Selector

Primary Color

Direction