GOOSE и Sampled Values
Клиент-серверный обмен по MMS хорош для передачи данных наверх, но не годится для взаимодействия устройств между собой: там счёт идёт на миллисекунды. Для этого в стандарте есть два механизма, работающие прямо поверх Ethernet, без IP и без TCP: GOOSE — обмен дискретными сигналами между устройствами, и Sampled Values — поток мгновенных значений тока и напряжения.
GOOSE: как это работает
GOOSE — широковещательная рассылка набора данных. Устройство-издатель отправляет кадр в сеть, подписчики принимают его по идентификаторам. Ключевые свойства:
- Никакого IP. Кадр идёт в Ethernet со своим типом (
0x88B8) и обычно с групповым MAC-адресом. Через маршрутизатор он не проходит — область распространения ограничена сегментом сети или VLAN. - Нет подтверждений. Надёжность обеспечивается повторами: пока ничего не меняется, кадр повторяется редко; в момент изменения — серия частых повторов с нарастающим интервалом.
- Контроль живости. В каждом кадре передаётся
timeAllowedToLive— срок, в течение которого подписчик должен получить следующий кадр. Не пришёл — подписчик обязан считать данные недостоверными. Так обнаруживается обрыв: не по молчанию «когда-нибудь», а за заданное время. - Два счётчика.
stNumувеличивается при изменении данных,sqNum— при каждом повторе одного и того же состояния. СкачокstNumбез промежуточных значений означает потерю кадров, сброс обоих в единицу — перезапуск издателя.
Кадр адресуется тремя идентификаторами, которые должны совпасть у издателя и подписчика: MAC-адрес назначения, APPID и GoID/datSet. Расхождение хотя бы в одном — и подписчик просто не увидит поток, никакой диагностики при этом не появится.
Sampled Values: поток мгновенных значений
SV передаёт оцифрованные токи и напряжения от измерительных преобразователей к устройствам защиты — это замена медным вторичным цепям. Поток непрерывный, с фиксированной частотой выборок; в распространённом профиле для защит это 80 выборок за период промышленной частоты, для измерений качества энергии — 256.
Требования жёстче, чем у GOOSE:
- Синхронизация времени. Выборки разных источников должны быть привязаны к общей шкале, иначе защита считает несуществующие сдвиги фаз. Применяется точная синхронизация по сети; признак качества синхронизации передаётся вместе с потоком, и его нужно проверять.
- Полоса и задержки. Поток идёт постоянно и занимает ощутимую часть канала. Сеть подстанции проектируется отдельно: выделенные VLAN, приоритизация кадров, иногда физически отдельные шины процесса.
- Непрерывность. Пропуск выборок фиксируется по счётчику
smpCnt; потеря даже коротких участков потока для защиты недопустима.
Сеть, в которой это живёт
И GOOSE, и SV предъявляют к сети требования, которых обычная офисная инфраструктура не выполняет:
| Что нужно | Зачем |
|---|---|
| VLAN и приоритет кадров | Отделить критичный трафик от прочего и не дать ему встать в общую очередь |
| Коммутаторы с поддержкой групповой рассылки | Чтобы поток шёл только туда, где на него подписаны, а не заливал всю сеть |
| Резервирование без потерь | Переключение на резервный путь не должно приводить к паузе в потоке |
| Общая шкала времени | Сопоставимость меток и корректность потоков выборок |
| Отсутствие маршрутизации | Оба механизма работают в пределах широковещательного домена — это ограничение архитектуры, а не настройка |
Тестирование и режим испытаний
В обоих механизмах предусмотрен признак моделирования: устройство-имитатор может выдавать кадры, помеченные как смоделированные, а реальные подписчики — принимать их вместо рабочих, если им это разрешено. Это штатный способ проверки логики без первичного оборудования. Опасность ровно одна: если подписчик настроен принимать смоделированные данные и об этом забыли, после испытаний он продолжит слушать имитатор. Проверка этого признака — обязательный пункт при сдаче.
Типовые ошибки
| Симптом | Где искать |
|---|---|
| Подписчик не видит GOOSE вообще | Расхождение MAC-адреса, APPID или идентификатора набора; кадры не доходят из-за маршрутизации между сегментами |
| Сигналы приходят, но с задержкой | Нет приоритизации: критичный трафик стоит в общей очереди с прочим |
| Подписчик периодически объявляет данные недостоверными | Превышается timeAllowedToLive: потери кадров либо слишком редкие повторы у издателя |
Скачет stNum | Теряются кадры на коммутаторе или перезапускается издатель |
| Защита видит неверные углы | Источники выборок не синхронизированы или игнорируется признак качества синхронизации |
| После испытаний устройство работает по имитатору | Остался включённым приём смоделированных данных |
С чего начать
GOOSE отлаживают снизу вверх: сначала убедиться, что кадры издателя вообще появляются в сегменте (анализатором трафика, подключённым к зеркалируемому порту), затем сверить три идентификатора с конфигурацией подписчика, и только потом проверять логику — изменить сигнал у издателя и увидеть рост stNum и реакцию подписчика. С Sampled Values порядок тот же, но первым пунктом идёт синхронизация времени: без неё проверять остальное бессмысленно.
