Todo mensaje IEC 60870-5-101 o 104 que transporta datos contiene una ASDU, una unidad de datos de servicio de aplicación. La ASDU indica cómo se codifica el valor (tipo), por qué se envió (causa de transmisión), la estación o dispositivo lógico (dirección común) y el punto (dirección de objeto de información). Los fallos habituales de mapeo aparecen al interpretar uno de estos datos sin los demás: una IOA correcta bajo una dirección común equivocada, un valor flotante interpretado como entero escalado o una respuesta a una interrogación almacenada como evento.
Los campos
IEC 60870-5-101 define el identificador de unidad de datos al principio de cada ASDU. IEC 60870-5-104 usa el mismo identificador con tamaños de campo fijos.
| Campo | Contenido | Tamaño en IEC 104 | Opciones en IEC 101 |
|---|---|---|---|
| Identificación de tipo | Codificación de los objetos de información | 1 byte | 1 byte |
| Calificador de estructura variable | Número de objetos, de 0 a 127 (bits 1 a 7), y bit SQ (bit 8) | 1 byte | 1 byte |
| Causa de transmisión | Causa, de 0 a 63 (bits 1 a 6), bit P/N (bit 7) y bit T (bit 8) | 1 byte | 1 byte |
| Dirección del originador | Estación de control que originó el mensaje; 0 si no se usa | 1 byte | 0 o 1 byte |
| Dirección común (CA) | Estación o dispositivo lógico | 2 bytes | 1 o 2 bytes |
| Dirección de objeto de información (IOA) | Punto | 3 bytes por objeto | 1, 2 o 3 bytes |
| Elementos de información | Valor, calidad y, si procede, marca temporal | Depende del tipo | Depende del tipo |
En IEC 101, los tamaños de la causa, la dirección común y la dirección de objeto son parámetros del sistema indicados en la lista de interoperabilidad; ambos extremos deben coincidir. Un tamaño erróneo desplaza todos los bytes posteriores. Renumerar puntos no lo corrige.
El bit SQ modifica la disposición de los objetos. Con SQ = 0, cada objeto lleva su propia IOA. Con SQ = 1, la ASDU lleva una sola IOA y, a continuación, los elementos de esa dirección y de las direcciones consecutivas. Una ASDU de tipo 13 con SQ = 1, 10 objetos e IOA 2001 lleva valores para las IOA 2001 a 2010 y solo 3 bytes de dirección. Un decodificador que espere una IOA antes de cada valor interpretará bytes del valor flotante como direcciones, y todos los valores después del primero serán erróneos.
El bit T indica un mensaje de prueba. No almacene un valor con T = 1 como dato de proceso. La dirección del originador identifica la estación de control que envió una orden y vale 0 si no se usa. Cuando dos centros de control comparten una RTU, cada uno puede establecer su propia dirección de originador. La RTU la reproduce en sus confirmaciones para que cada centro relacione estas con sus propias órdenes.
Una trama en el cable
Esta trama I de IEC 104 lleva una potencia activa de 2.340,5 kW desde la dirección común 12, IOA 1001, enviada porque cambió el valor:
68 12 00 00 00 00 0D 01 03 00 0C 00 E9 03 00 00 48 12 45 00
| Bytes | Campo | Interpretación |
|---|---|---|
| 68 | Byte de inicio | Inicio de una trama IEC 104 |
| 12 | Longitud | Siguen 18 bytes |
| 00 00 00 00 | Campo de control | Formato I; números de secuencia de envío y recepción 0 |
| 0D | Identificación de tipo | 13, M_ME_NC_1 |
| 01 | Calificador de estructura variable | SQ = 0, 1 objeto |
| 03 | Causa de transmisión | 3, espontánea; P/N = 0, T = 0 |
| 00 | Dirección del originador | 0, no utilizada |
| 0C 00 | Dirección común | 12 |
| E9 03 00 | IOA | 1001 (0x0003E9) |
| 00 48 12 45 | Flotante corto | 0x45124800, 2.340,5 |
| 00 | Descriptor de calidad | 0, ninguna bandera de calidad activa |
Cada campo de varios bytes se transmite empezando por el byte menos significativo. Un decodificador que lea los campos en el orden contrario obtendrá una dirección común de 3.072 (0x0C00) y una IOA de 15.270.656 (0xE90300). Leerá el flotante como 6,6 × 10⁻³⁹, un valor que un historiador puede almacenar sin protestar. El convertidor de flotantes IEEE 754 muestra los bytes de cualquier valor. La guía de marcas temporales y calidad descifra los bits de calidad y la marca temporal.
Identificación de tipo
El tipo indica cómo decodificar los elementos de información. La cláusula 7.3 de IEC 60870-5-101 define cada tipo. Algunos tipos habituales:
| Tipo | Nombre | Contenido |
|---|---|---|
| 1 | M_SP_NA_1 | Estado de punto simple: 0 desactivado, 1 activado |
| 3 | M_DP_NA_1 | Estado de punto doble: 1 desactivado, 2 activado, 0 intermedio, 3 indeterminado |
| 9 | M_ME_NA_1 | Valor medido normalizado (16 bits) |
| 11 | M_ME_NB_1 | Valor medido escalado (16 bits) |
| 13 | M_ME_NC_1 | Valor medido de coma flotante corta (32 bits) |
| 15 | M_IT_NA_1 | Totales integrados (contadores) |
| 30, 31, 36, 37 | M_SP_TB_1, M_DP_TB_1, M_ME_TF_1, M_IT_TB_1 | Tipos 1, 3, 13 y 15 con marca temporal CP56Time2a |
| 45, 46 | C_SC_NA_1, C_DC_NA_1 | Órdenes simples y dobles |
| 50 | C_SE_NC_1 | Orden de consigna en coma flotante corta |
| 100 | C_IC_NA_1 | Orden de interrogación general |
| 101 | C_CI_NA_1 | Orden de interrogación de contadores |
| 103 | C_CS_NA_1 | Orden de sincronización de reloj |
El prefijo M indica datos de supervisión enviados desde la RTU. El prefijo C indica órdenes dirigidas a ella. IEC 104 solo utiliza la marca temporal CP56Time2a de 7 bytes. Los tipos de IEC 101 con marca CP24Time2a de 3 bytes, como los tipos 2, 4 y 14, no se usan en IEC 104.
Los tipos 9 y 11 transportan un entero con signo de 16 bits, no un valor físico. Para el tipo 9, divida el entero entre 32.768 para obtener una fracción de −1 a +0,99997 y multiplíquela por el valor de plena escala. Con una plena escala de 1.000 kW, un valor bruto de 16.384 equivale a 0,5, es decir, 500 kW. Para el tipo 11, el entero es el valor multiplicado por un factor acordado: 2.340,5 kW con un factor de 10 se envía como 23.405. Ninguno de los dos tipos incluye su plena escala o factor. Un receptor con el factor equivocado produce una cifra errónea pero plausible.
Un tipo de coma flotante tampoco incluye la unidad. Un valor de 2.340,5 en el tipo 13 podría representar kW, kVA o A. La unidad, la convención de signos y el punto de medida deben figurar en la lista de puntos acordada por ambas partes.
Causa de transmisión
Valores habituales de causa de transmisión:
| Causa | Significado |
|---|---|
| 1 | Periódica o cíclica |
| 3 | Espontánea: cambió el valor |
| 5 | Solicitada |
| 6 | Activación: una orden |
| 7 | Confirmación de activación |
| 8, 9 | Desactivación y su confirmación |
| 10 | Terminación de activación: terminó la orden |
| 11, 12 | Información de retorno causada por una orden remota o local |
| 20 | Interrogación de estación: respuesta a una interrogación general |
| 21 a 36 | Interrogación de grupos 1 a 16 |
| 37 | Solicitada por interrogación general de contadores, para totales integrados |
| 44 | Identificación de tipo desconocida |
| 45 | Causa de transmisión desconocida |
| 46 | Dirección común desconocida |
| 47 | Dirección de objeto de información desconocida |
Interprete la causa junto con el tipo y el bit P/N. La causa 7 con P/N = 1 es una confirmación negativa: la RTU rechazó la orden. La guía de órdenes sigue una orden a través de cada causa.
Direcciones
Un punto se identifica por su dirección común y dirección de objeto de información juntas, dentro de una conexión. El tipo no forma parte de la dirección. La IOA 1001 puede existir bajo las direcciones comunes 12 y 13, y en todas las RTU de una red de instalaciones. La dirección IP (IEC 104) o la dirección de enlace (IEC 101) identifica la conexión, no el punto.
Una conexión IEC 104 puede servir varias direcciones comunes. El valor más alto, 65535 con un campo de 2 bytes o 255 con uno de 1 byte, es la dirección global. Una estación de control la usa para funciones de toda la estación, como la interrogación general, y cada dirección común responde bajo su propia dirección. No todas las funciones pueden utilizarla. La RTU de lib60870 rechaza una orden de lectura (tipo 102), una orden de prueba (tipos 104 y 107) o una orden de adquisición de retardo (tipo 106) enviada a la dirección global, con causa 46.
La lista de interoperabilidad también indica si la IOA es estructurada o no. Algunas herramientas y listas de puntos de fabricantes muestran una IOA estructurada como tres octetos decimales. La IOA 1001 es 0x0003E9. Puede aparecer como 0.3.233 en una herramienta y como 233.3.0 en otra. Convierta ambas listas a un único entero antes de compararlas.
Ejemplo de entrada en una lista de puntos:
| Campo | Valor |
|---|---|
| Conexión | RTU A de subestación, 10.40.1.20, puerto 2404 |
| Dirección común | 12 |
| IOA | 1001 |
| Tipo | 13, M_ME_NC_1 (flotante corto, sin marca temporal) |
| Significado | Potencia activa en el punto de conexión a red |
| Unidad y signo | kW, importación positiva |
| Banda muerta | 50 kW |
| Causas esperadas | 3 (espontánea, si el valor cambia más que la banda muerta), 20 (interrogación general) |
Asigne filas distintas a la potencia medida, la consigna de potencia y la lectura de retorno de la consigna activa, aunque sus nombres se parezcan. La potencia medida es M_ME_NC_1 en sentido de supervisión. La consigna es C_SE_NC_1, tipo 50, en sentido de control, y su confirmación llega en la misma IOA con causa 7. La lectura de retorno de la consigna es otro punto de supervisión con su propia IOA.
Pruebe tanto el rechazo como la aceptación
Ponga en servicio al menos un punto de cada tipo de la lista de puntos. Compare tipo, dirección común, IOA, causa, unidad y valor decodificados con la lista acordada.
Después conecte un simulador de centro de control IEC 104 en lugar del sistema de control y envíe órdenes que la RTU deba rechazar. Hágalo durante las pruebas de aceptación, antes de que la RTU controle una instalación en servicio.
- Envíe un tipo de orden que la RTU no admita. Espere la causa 44.
- Envíe una orden admitida con causa 3 en vez de 6. Espere la causa 45.
- Envíe una orden a una dirección común que la RTU no atienda. Espere la causa 46.
- Envíe una orden a una IOA no configurada. Espere la causa 47.
Una RTU que responde devuelve la petición con la nueva causa y el bit P/N a uno. El comportamiento ante una dirección común desconocida varía. La RTU de lib60870 solo devuelve causa 46 si la aplicación indica a la biblioteca qué direcciones comunes existen. Algunas RTU descartan la petición y no envían nada. Anote el resultado esperado de cada caso en la lista de interoperabilidad y conserve juntos la revisión de la lista de puntos y los resultados de las pruebas.
Telecontrol y sistemas EpiSensor
Edge no implementa IEC 60870-5-101 ni 104. En una instalación con enlace de telecontrol, la RTU o la pasarela de subestación transporta los puntos del operador de red y un sistema EpiSensor mide la instalación situada detrás. La guía de IEC 101 frente a 104 explica dónde se encuentra ese límite.
Preguntas frecuentes
¿Qué es una ASDU en IEC 60870-5-104?
La unidad de datos de servicio de aplicación: la parte del mensaje que transporta datos de telecontrol. Comienza con un identificador de unidad de datos (tipo, calificador de estructura variable, causa de transmisión, dirección del originador y dirección común), seguido de uno o más objetos de información, cada uno con su dirección y valor.
¿Qué significa la causa de transmisión 3?
Espontánea: la RTU envió el valor porque cambió. La causa 20 indica que lo envió en respuesta a una interrogación general; la causa 1 indica transmisión periódica o cíclica.
¿Qué es una IOA en IEC 104?
La dirección de objeto de información: un número de 3 bytes en IEC 104 que identifica un punto o función dentro de una dirección común. Se transmite empezando por el byte menos significativo, por lo que la IOA 1001 aparece en el cable como E9 03 00. La misma IOA puede existir bajo otra dirección común o en otra conexión.
¿Qué es M_ME_NC_1?
Identificación de tipo 13: un valor medido como número de coma flotante corta (32 bits), con descriptor de calidad y sin marca temporal. La misma medida con una marca temporal CP56Time2a es M_ME_TF_1, tipo 36.