Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Gerencia de Operación.
Departamento de
Comunicaciones y Control Nacional
Protocolo DNP3
-¿Qué es información?
-Conjunto de datos procesados y ordenados útiles
para la toma de decisiones
RED de
Datos
Redes de Datos:
Estándares.
Objetivo
Protocolo piso 5
Protocolo piso 4
Protocolo piso 3
Protocolo piso 2
Protocolo piso 1
Redes de Datos:
Arquitectura de redes.
Protocolo de la capa 4
4) Divide el mensaje H4 M1 H4 M2 H4 M1 H4 M2
Protocolo de la capa 3
H3 H4 M1 H3 H4 M2 H3 H4 M1 H3 H4 M2
3) Encamina el
paquete Protocolo capa 2
H2 H3 H4 M1 T1 H2 H3 H4 M2 T2 H2 H3 H4 M1 T1 H2 H3 H4 M2 T2
Protocolo de Presentación
Presentación Presentación
Protocolo de Sesión
Sesión Sesión
Medio fisico
Redes de Datos:
El modelo OSI.
El modelo OSI
TCP/IP OSI
Aplicación
Aplicación Presentación
Sesión
Transporte Transporte
Internet Red
Enlace de Datos
Enlace
Físico
Redes de Datos:
Protocolos TCP/IP
TCP/IP Protocolos
TELNET
FTP
Aplicación SMTP
DNS
HTTP
TCP
Transporte
UDP
- No es confiable
- No se garantiza la entrega
- Ejemplos de uso:
- SNMP (puerto 161 y 162); DHCP (Puerto 67 y 68)
Cliente Servidor
- Ejemplos de uso:
- La web, email, ftp, casi todos los servicios de internet.
RGD
< 69 KV Personal de:
Lecturistas Equipo Primario
Personal CCC Linieros M.T. Protecciones
Control
Comunicaciones
Sistemas SCADA:
SCADA - Definición
Control
Medio de
Comunicaciones
CCD
Protocolo de
Comunicaciones
UTR
Unidad Terminal Equipos de
Remota Comunicaciones
Sistemas SCADA:
Unidades Terminales Remotas (UTR)
Ejemplos de DEIs:
Relevadores, Medidores,
Sistemas de Monitoreo, Información
Restauradores, Seccionadores, UTR, etc.
Sistemas SCADA:
Unidades Terminales Remotas (UTR)
-UTRs de poste
-Se instalan sobre los postes de distribución y se
utilizan para el Telecontrol de Restauradores y
Seccionadores o cualquier dispositivo telecontrolable
sobre la red de media tensión.
Sistemas SCADA:
Unidad Central Maestra (UCM)
Servidores de Históricos
-Unidad Terminal Maestra Donde se almacena información
de los eventos registrados y
mediciones
Servidores SCADA o de Comunicaciones
Manejan los protocolos SCADA y se comunican
directamente con las UTRs
Estaciones de ingeniería
Desde donde se configura y
INTRANET administra la UCM
CFE
FireWall
RED LAN
Red LAN 1
Red LAN 2
IHM IHM
Impresoras
UTM
UTR
Requiero de:
•Medio de Comunicación
•Protocolo de Comunicaciones CCD
Información Digital
Sistemas SCADA:
Comunicaciones
-Medios de Comunicaciones
Definición: Es el medio físico a través del
cual se transporta la información.
Ejemplos:
-Tipos de Comunicación
Panel de alarmas
RGD Despachador
Sistemas SCADA:
Comunicaciones
-Tipos de Comunicación
Comunicación Dúplex: Es en ambos sentidos, pero no al mismo
tiempo;
Ejemplo: Cuando se tiene un solo canal de comunicación y los
mensajes son escuchados por todos los dispositivos conectados.
En este tipo de canales se utilizan Protocolos SCADA Maestro-Esclavo
como el Harris 5000, donde la UTM hace una pregunta y la UTR
responde. En este tipo de protocolos la UTR no puede avisar que
sucedió un evento y debe esperar a que se le pregunte para
reportarlo.
Centro de Control
RGD
Sistemas SCADA:
Comunicaciones
-Tipos de Comunicación
Centro de Control
RGD
Sistemas SCADA:
Comunicaciones
-Comunicación Analógica
Comunicación analógica: La información transmitida se codifica en señales de
onda que varían en forma continua.
Ejemplo:
-Dos personas hablando en un salón.
-Señales de voltaje o corriente de TPs o TCs para medidores.
-El medio de comunicación y equipos repetidores hacen que se degrade la
señal
-Comunicación Digital
Comunicación Digital: La información que se transmite está codificada en forma
binaria (ceros y unos)
Las computadoras sólo pueden interpretar y almacenar información binaria.
Al pasar por varios equipos, siempre se copia en forma exacta, no se degrada
Ejemplos:
-La información transmitida entre ordenadores.
-Todas las comunicaciones en un sistema SCADA
-La comunicación entre la UTR y la UCM
-La comunicación entre un Relevador y una UTR.
-Protocolo de Comunicaciones
DNP3 OSI
Aplicación Aplicación
Presentación
Sesión
Transporte Transporte
Red
Físico
Protocolos SCADA:
Recuperación de errores
-Etc.
Protocolos SCADA:
Recuperación de errores
Transmisor: CRC
Mensaje
Transmitido
Parte del éxito del DNP fue que Westronic divulgó su especificación,
conocida como DNP Basic 4.
Protocolo DNP3:
Distributed Network Protocol
Master →
Unidad Central Maestra
Outstation →
Unidad Terminal Remota
Flujo de la información →
Protocolo DNP3:
Fragmentos, segmentos y tramas:
Fragmentos
(Fragments)
Segmentos
(Segments)
máx. 250 bytes
Tramas
(Frames)
máx 292 bytes
Protocolo DNP3:
Organización de la documentación:
Nivel de Enlace
- Su misión →
- Asegurar que los mensajes sean recibidos sin errores.
- Identificar cada estación con una dirección única.
- Soporta comunicación orientada o no a conexión.
Protocolo DNP3:
Nivel de Enlace
Nivel de Enlace
- Servicios →
- Encapsular los segmentos de la función de Transporte para ser
enviados por un medio de comunicación.
- Extraer la información de Transporte de las tramas recibidas para
entregarla a la función de Transporte.
- Detección de errores, utilizando CRC por cada 16 bytes de datos
(además de un CRC en el header propio de la capa de enlace).
- Implementa direcciones origen y destino.
- Opcionalmente
- Confirmación de cada mensaje
- Detección de solicitudes repetidas o perdidas
Protocolo DNP3:
Nivel de Enlace
Modelo de transacción
1st block User Data Crc 2nd block User Data Crc Nth block User Data Crc
16 bytes 16 bits 16 bytes 16 bits 1 to 16 bytes 16 bits
Protocolo DNP3:
Nivel de enlace – Formato de trama
7 6 5
DFC
4 3-0
Frame Count Bit: Se utiliza para evitar
FCB la perdida o duplicidad de tramas
---
Primary station toggles FCB cuando rx
5 un ACK from the secondary
Para iniciar se debe enviar un Reset
PRM=1
Primaria Data Link.
6
FCV
-- FCV: Indica si el bit FCB es valido.
=1 FCB es válido.
4 =0 FCB es ignorado.
Secundaria
Protocolo DNP3:
Nivel de enlace – Formato de trama
Header:
05 64 Long Ctrl Dest Src Crc
8 bits 8 bits 8 bits 8 bits 16 bits 16 bits 16 bits
Primaria
Protocolo DNP3:
Nivel de enlace – Formato de trama
Header:
05 64 Long Ctrl Dest Src Crc
8 bits 8 bits 8 bits 8 bits 16 bits 16 bits 16 bits
Mensajes Broadcast :
La primaria debe transmitirlos con FC=4 (UNCONFIRMED_USER_DATA).
No deben ser contestados por la secundaria, sin importar el FC.
Protocolo DNP3:
Nivel de enlace – Formato de trama
FC = 0 RESET_LINK_STATES: FC = 3 CONFIRMED_USER_DATA:
Permite sincronizar la comunicación con la estación secundaria. Se utiliza para que la estación PRIMARIA envíe datos y
Se requiere para procesar tramas PRIMARIA→SECUNDARIA con recibir confirmación de la recepción de los mismos de la
FCV=1. estación SECUNDARIA.
Solo para utilizar posteriormente tramas Se requiere que el enlace esté sincronizado previo envío del
CONFIRMED_USER_DATA (FC=3) RESET_LINK_STATES.
La estación PRIMARIA debe enviar FC=0 al reiniciarse o después Cuando FC=3 es recibido en la SECUNDARIA, esta compara
de una falla en las comunicaciones. el FCB recibido (FCBrx) con el valor que esta esperando
Si la estación secundaria no recibe FC=0 (RESET_LINK_STATES) recibir (FCBesp).
no puede procesar tramas con FC=3 (CONFIRMED_USER_DATA) Si FCBrx=FCBesp, la SECUNDARIA responde con
Después de su envío y confirmación, la estación PRIMARIA pone un ACK y pasa los datos a las capas superiores.
FCB=1 para la siguiente trama con FCV=1. Toggle el FCBesp.
RESET_LINK_STATES funciona en un solo sentido, si la estación Si FCBrx!=FCBesp, la SECUNDARIA responde con
SECUNDARIA en otra transacción se comporta como PRIMARIA, ACK y no pasa los datos a las capas superiores. ¡No
debe sincronizar la comunicación enviando FC=0. toggle el FCBesp!
¡No se recomienda usar CONFIRMED_USER_DATA con
TCP o UDP sobre una red IP.
TEST_LINK_STATES:
FC = 2 Se utiliza para probar los bit de estado de la estación secundaria.
FC = 4 UNCONFIRMED_USER_DATA:
Se utiliza para enviar información sin necesidad de
Cuando FC=2 es recibido por la SECUNDARIA, esta compara el
confirmación.
FCB recibido (FCBrx) con el valor que esta esperando recibir
La estación SECUNDARIA pasa los datos recibidos a las
(FCBesp).
capas superiores.
Si FCBrx=FCBesp, la SECUNDARIA envÍa un ACK y toggle
el FCBesp.
Si FCBrx!=FCBesp, la SECUNDARIA envía el último ACK FC = 9 REQUEST_LINK_STATUS:
o NACK enviado a la PRIMARIA. Ojo, como la secundaria Se utiliza para saber el estado del nivel de enlace de la
no cambia el valor del FCBesp, al final todo queda estación secundaria (¿Estas ahí?). La estación secundaria
sincronizado. responde con un LINK_STATUS
Si la SECUNDARIA no ha recibido un Se recomienda su uso en redes IP.
RESET_LINK_STATES, puede no responder o bien
responder un NACK con DFC=0.
Protocolo DNP3:
Nivel de enlace – Formato de trama
FC = 0 ACK:
Es la confirmación de la rx de una trama del tipo:
RESET_LINK_STATES, TEST_LINK_STATES y
CONFIRMED_USER_DATA.
FC = 1 NACK:
Indica que alguna solicitud (REQUEST) de la estación PRIMARIA
no fue aceptada por las siguientes razones:
The secondary’s link state is not reset, cuando se recibe una
trama: TEST_LINK_STATES or CONFIRMED_USER_DATA
con el bit FCV=1.
The secondary’s link is busy
Los buffers de rx de la SECUNDARIA están full.
NACK se utiliza para responder solo tramas:
RESET_LINK_STATES, TEST_LINK_STATES y
CONFIRMED_USER DATA.
FC = 11 LINK_STATUS
Es la respuesta de la SECUNDARIA a un
REQUEST_LINK_STATUS (Si, aquí estoy).
FC = 15 NOT_SUPPORTED
Se utiliza para indicar que la solicitud de la PRIMARIA no está
soportada o implementada en la SECUNDARIA.
Protocolo DNP3:
Nivel de enlace – Formato de trama
DESTINATION:
Dirección de la estación a quién está dirigida la trama.
Protocolo DNP3:
Nivel de enlace – Formato de trama
source:
Dirección de la estación que originó la trama.
Protocolo DNP3:
Nivel de enlace – Formato de trama
Notas sobre el direccionamiento.
Address Use
• Definidas como direcciones ‘broadcast’ u ‘all-call’
All-call, Application Layer • Todas las estaciones deben aceptar las tramas que
0xFFFF
Confirmation to clear IIN 1.0 is BroadCast contengan estas direcciones destino
(65,535) • El tratamiento está definido en el nivel de
optional
aplicación.
All-call, Application Layer • Al transmitir tramas con estas direcciones, no se
0xFFFE
Confirmation to clear IIN 1.0 is deben utilizar con: CONFIRMED_USER_DATA
(65,534) • Se debe pasar la información al nivel de Aplicación
mandatory
All-call, Application Layer Su propósito es descubrir la dirección de un
0xFFFD
Confirmation must not be required dispositivo.
(65,533)
to clear IIN 1.0
Esta dirección se utiliza en el “Destination-Address”
0xFFFC Si un dispositivo esta en modo: “Self-Address enabled”
Self-address Self-
(65,532) Address
debe contestar estas tramas como si tuvieran su
propia dirección destino.
0xFFF0 Al contestar el dispositivo pondrá su propia dirección
(65,520) en Source-Address. ¡De esta forma descubrimos cual
to Reserved es su dirección!
0xFFFB Ojo: Solo debemos habilitar “Self-Address” en un
(65,531) dispositivo a la vez, para evitar múltiples respuestas.
0x0000
Rango: 0xFFF0 → 0xFFFB
to Unique address Used by Master Simplemente no debe ser utilizado este rango.
0xFFEF and Outstation on a single link. Reserved
Tramas con esta direcciones deben ser ignoradas.
(65,519) Están para lo que disponga el grupo DNP en un futuro.
Protocolo DNP3:
Nivel de enlace – Formato de trama
1st block User Data Crc 2nd block User Data Crc Nth block User Data Crc
16 bytes 16 bits 16 bytes 16 bits 1 to 16 bytes 16 bits
User Data:
Información para las capas superiores del nivel de enlace,
específicamente para la función de transporte.
Protocolo DNP3:
Nivel de enlace – Formato de trama
Clave Descripción
Reset-Link
Protocolo DNP3:
Nivel de enlace – Ejemplos
Función de transporte.
(pseudo-transporte)
- Su misión →
- Si el tamaño de un fragmento (mensaje de la capa de aplicación)
excede la capacidad de una trama de nivel de enlace, esta capa se
encarga de dividirlo en Segmentos de Transporte para su
transmisión y reensamblarlo en la recepción.
Protocolo DNP3:
Función de Transporte → Formato del segmento
Funciones:
1.- Transmisión , partir un fragmento de la capa de aplicación en segmentos de
tamaño máximo de 249 bytes y agregar cabecera hacia la capa de enlace.
Construyéndose segmentos con 250 bytes como máximo.
2.- Recepción, ensamblar segmentos para generar un fragmento hacia la capa de
aplicación.
07 06 05 04 03 02 01 00
FIN FIR SEQUENCE
07 06 05 04 03 02 01 00
FIN FIR SEQUENCE
07 06 05 04 03 02 01 00
FIN FIR SEQUENCE
La capa de aplicación
2 2 2 2 2
Tipo de punto: Puntos con características y 1 1 1 1 1
funcionalidades similares, también pueden estar 0 0
0 0 0
relacionados al mismo hardware.
DNP3
Application Layer
Transport Function
DNP3
Data Link Layer
Protocolo DNP3: (1)
Outstation
Nivel de Aplicación; Definiciones Índices
8
7 (4)
Los puntos se agrupan en arreglos del mismo 6 6
tipo y se identifican por un índice, como se (5)
5 (2) 5
indica:
Ejemplos de arreglos de tipos de puntos: 4 4 (3) 4 4
DNP3
Data Link Layer
Protocolo DNP3:
Nivel de Aplicación; Definiciones
Grupo:
Es una forma de clasificar los tipos de datos en un mensaje
Un grupo solo contiene puntos del mismo tipo.
Ej. Grupo 30 – Valores actuales de entradas analógicas.
Variaciones:
Es la forma en que se codifican los datos dentro de un grupo.
Nota: Bandera, dato complementario que indica el estado del punto, ej. En línea,
fuera de línea.
Events: (evento) Es un suceso que puede estar asociado a un punto o que hay
información disponible sobre algo ocurrido.
UTR Request
Response (data)
Unsolicited Response
Cuando las remotas reciben el mensaje, ejecutan lo solicitado, generan el
mensaje de respuesta (response) con la información correspondiente (datos
solicitados, resultados o información especial) y lo transmiten a la maestra.
←2 bytes→ ←4 bytes→
7 6 5 4 3–2–1–0
Application
Request
Campo FIR (1 bit)
Header FIR = 0, No es el primer fragmento.
←2 bytes→
FIR = 1, Primer fragmento.
Application
Request
Campo CON (1 bit), Confirmación, El receptor debe
Header confirmar la recepción del mensaje para verificar la recepción
←2 bytes→ del fragmento
Response Fragment
Indicaciones Internas Application First Last
DNP DNP
(Solo aplica en las respuestas) Response Object … Object
Objects Objects
Header Header Header
←4 bytes→
Range Specifier Code: Indica si el campo Rango se utiliza o no, si se utiliza indica que contiene y de que tamaño es.
- Códigos 0 al 2
- Los objetos DNP están ordenados por su índice.
- Si start y stop son iguales, se refiere a un objeto
- Códigos 3 al 5
- Especifica espacios de memoria continuos de un proveedor especifico.
- Código 6
- Solicita todos los puntos del grupo especificado
- No hay Rango
- Código 7 al 9
- Especifica un máximo de objetos, es decir, la remota puede enviar menos objetos, pero no mas de los solicitados
- La remota debe enviar al menos un objeto del tipo especificado
- Código 0xB
- Los datos tiene un formato de longitud variable
Object Header
Protocolo DNP3: Object Type Field Calificador
Rango
Nivel de Aplicación; Calificador y Rango Grupo Variación (1 byte)
(Depende del
Calificador)
Hex Object Prefix Code Prefijo Hex Range Specifier Code Octetos
en Rango
0 Objects are packed without an index prefix --
0 Range field contains 1-octet start and stop indexes 2
1 Objects are prefixed with an index 1 – octet
1 Range field contains 2-octet start and stop indexes 4
2 Objects are prefixed with an index 2 – octet
2 Range field contains 4-octet start and stop indexes 8
3 Objects are prefixed with an index 4 – octet
3 Range field contains 1-octet start and stop virtual 2
4 Objects are prefixed with an object size 1 – octet
addresses
5 Objects are prefixed with an object size 2 – octet
4 Range field contains 2-octet start and stop virtual 4
6 Objects are prefixed with an object size 4 – octet addresses
7 Reserved for future use -- 5 Range field contains 4-octet start and stop virtual 8
addresses
Prefijos: 6 No range field is used. This implies all values 0
0 – Sin prefijo
7 Range field contains 1-octet count of objects 1
1,2,3 – Objetos con prefijo índice
4,5,6 – Objetos con prefijo de tamaño 8 Range field contains 2-octet count of objects 2
Especificador de Rango: 9 Range field contains 4-octet count of objects 4
0,1,2 – El rango indica índice inicial y final.
3,4,5 – El rango indica dirección virtual inicial y final A Reserved for future use --
6 – No hay rango, “Todo”. B Variable format qualifier, range field contains 1- 1
7,8,9 – Solo número de objetos octet count of objects
B – Variable, solo número de objetos
C-F Reserved for future use --
Object Header
Protocolo DNP3: Object Type Field Calificador
Rango
Nivel de Aplicación; Calificador y Rango Grupo Variación (1 byte)
(Depende del
Calificador)
Combinaciones de
calificadores válidas:
Uso recomendado
de calificadores:
Object Header
Protocolo DNP3: Object Type Field Calificador
Rango
Nivel de Aplicación; Calificador y Rango Grupo Variación (1 byte)
(Depende del
Calificador)
Start Stop
Calificador 0x06 → Utilizado para solicitar todos los puntos definidos en un grupo y
variación.
Count
Value
LSB --- MSB
Objeto
Object Header
Protocolo DNP3: Object Type Field Calificador
Rango
Nivel de Aplicación; Calificador y Rango Grupo Variación (1 byte)
(Depende del
Calificador)
Value
LSB --- MSB
Objeto
Object Header
Protocolo DNP3: Object Type Field Calificador
Rango
Nivel de Aplicación; Calificador y Rango Grupo Variación (1 byte)
(Depende del
Calificador)
0x03
Count
0x02
Count
- Data Objects: Cada objeto viene precedido por un prefijo de 2 bytes que indica su tamaño
m Value k Value
LSB-MSB LSB-MSB
LSB --- --- --- --- --- --- --- --- --- --- MSB LSB --- --- --- --- --- --- --- --- --- --- MSB
size Primer objeto (m bytes) size Segundo objeto (k bytes)
Protocolo DNP3:
Nivel de Aplicación; Reglas de Fragmentos (resumen)
Application
Regla 1: El fragmento mas pequeño es de 2 bytes Request
(confirmación) Header
←2 bytes→
←2 bytes→
Regla 7: FIR=1 en el primer fragmento.
Application Control Function Code
(1 byte) (1 byte)
Regla 8: FIN=1 para el último fragmento.
FIR FIN CON UNS SEQ
7 6 5 4 3–2–1–0
Regla 6: FIN=FIR=1 para mensajes de un solo
fragmento.
Regla 16: Los reintentos están prohibidos están prohibidos en los siguientes FC’s
- DIRECT_OPERATE o DIRECT_OPERATE_NR
- DELAY_MEASURE or RECORD_CURRENT_TIME
- WRITE with an Absolute Time Object (g50v1), o con el último Objeto de Tiempo
grabado (g50v3)
Protocolo DNP3:
Nivel de Aplicación; Reglas de Fragmentos (resumen)
←2 bytes→
Regla 18: Las remotas pueden reintentar enviar mensajes
no solicitados. Application Control
(1 byte)
Function Code
(1 byte)
Regla 19: Un fragmento con código de función CONFIRM, FIR FIN CON UNS SEQ
7 6 5 4 3–2–1–0
debe utilizar el mismo número de SEQ y bit UNS del
fragmento de solicitud.
Regla 24: Una remota debe solicitar confirmación del nivel Application Control
(1 byte)
Function Code
(1 byte)
de aplicación cuando envía eventos, solo así podrá
eliminarlos de su buffer. FIR FIN CON UNS SEQ
7 6 5 4 3–2–1–0
Integrity Poll