Protocoles et données

ASDU, causes de transmission et adresses en IEC 60870

Lisez une liste de points IEC 60870-5-101 ou 104 : type, cause de transmission, adresse commune et IOA, avec le décodage octet par octet d’une trame IEC 104.

Tout message IEC 60870-5-101 ou 104 qui transporte des données contient une ASDU, ou unité de données du service applicatif. L’ASDU précise le codage de la valeur (le type), la raison de l’envoi (la cause de transmission), la station ou l’appareil logique (l’adresse commune) et le point (l’adresse de l’objet d’information). Les erreurs de correspondance viennent souvent de la lecture d’un seul de ces éléments sans les autres : un IOA correct sous la mauvaise adresse commune, un flottant interprété comme entier mis à l’échelle, ou une réponse à une interrogation enregistrée comme un événement.

Les champs

IEC 60870-5-101 définit l’identifiant de l’unité de données au début de chaque ASDU. IEC 60870-5-104 utilise le même identifiant avec des tailles de champs fixes.

ChampContenuTaille en IEC 104Options en IEC 101
Identification du typeCodage des objets d’information1 octet1 octet
Qualificateur de structure variableNombre d’objets, de 0 à 127 (bits 1 à 7), et bit SQ (bit 8)1 octet1 octet
Cause de transmissionCause, de 0 à 63 (bits 1 à 6), bit P/N (bit 7) et bit T (bit 8)1 octet1 octet
Adresse de l’émetteurStation de conduite à l’origine du message ; 0 si elle n’est pas utilisée1 octet0 ou 1 octet
Adresse commune (CA)Station ou appareil logique2 octets1 ou 2 octets
Adresse de l’objet d’information (IOA)Point3 octets par objet1, 2 ou 3 octets
Éléments d’informationValeur, qualité et éventuel horodatageSelon le typeSelon le type

En IEC 101, les tailles de la cause, de l’adresse commune et de l’adresse de l’objet sont des paramètres système inscrits dans la liste d’interopérabilité ; les deux extrémités doivent donc s’accorder. Une taille erronée décale tous les octets suivants. Renuméroter les points ne corrige pas ce problème.

Le bit SQ modifie l’agencement des objets. Avec SQ = 0, chaque objet porte son propre IOA. Avec SQ = 1, l’ASDU porte un IOA, puis les éléments de cet IOA et des adresses suivantes dans l’ordre. Une ASDU de type 13 avec SQ = 1, 10 objets et IOA 2001 contient les valeurs des IOA 2001 à 2010, mais seulement 3 octets d’adresse. Un décodeur qui attend un IOA avant chaque valeur interprète les octets des flottants comme des adresses ; toutes les valeurs après la première deviennent fausses.

Le bit T signale un message d’essai. N’enregistrez pas une valeur avec T = 1 comme donnée du procédé. L’adresse de l’émetteur identifie la station de conduite qui a envoyé une commande ; elle vaut 0 lorsqu’elle n’est pas utilisée. Lorsque deux centres de conduite partagent une station distante, chacun peut définir sa propre adresse d’émetteur. La station distante la recopie dans ses confirmations, ce qui permet à chaque centre de les associer à ses commandes.

Une trame sur la liaison

Cette trame I d’IEC 104 transporte une puissance active de 2 340,5 kW depuis l’adresse commune 12 et l’IOA 1001, envoyée parce que la valeur a changé :

68 12 00 00 00 00 0D 01 03 00 0C 00 E9 03 00 00 48 12 45 00

OctetsChampDécodage
68Octet de débutDébut d’une trame IEC 104
12Longueur18 octets suivent
00 00 00 00Champ de contrôleFormat I, numéros de séquence émission et réception à 0
0DIdentification du type13, M_ME_NC_1
01Qualificateur de structure variableSQ = 0, 1 objet
03Cause de transmission3, spontanée ; P/N = 0, T = 0
00Adresse de l’émetteur0, non utilisée
0C 00Adresse commune12
E9 03 00IOA1001 (0x0003E9)
00 48 12 45Flottant court0x45124800, 2 340,5
00Descripteur de qualité0, aucun indicateur de qualité activé

Chaque champ de plusieurs octets est transmis avec l’octet de poids faible en premier. Un décodeur qui lit les champs dans l’ordre inverse obtient l’adresse commune 3 072 (0x0C00) et l’IOA 15 270 656 (0xE90300). Il interprète le flottant comme 6,6 × 10⁻³⁹, valeur qu’un historien peut enregistrer sans protester. Le convertisseur de flottants IEEE 754 montre les octets de n’importe quelle valeur. Le guide des horodatages et de la qualité décode les bits de qualité et l’horodatage.

Identification du type

Le type indique comment décoder les éléments d’information. L’article 7.3 d’IEC 60870-5-101 définit chaque type. Quelques types courants :

TypeNomContenu
1M_SP_NA_1État à un point : 0 arrêt, 1 marche
3M_DP_NA_1État à deux points : 1 arrêt, 2 marche, 0 intermédiaire, 3 indéterminé
9M_ME_NA_1Valeur mesurée normalisée (16 bits)
11M_ME_NB_1Valeur mesurée mise à l’échelle (16 bits)
13M_ME_NC_1Valeur mesurée en flottant court (32 bits)
15M_IT_NA_1Totaux intégrés (compteurs)
30, 31, 36, 37M_SP_TB_1, M_DP_TB_1, M_ME_TF_1, M_IT_TB_1Types 1, 3, 13 et 15 avec horodatage CP56Time2a
45, 46C_SC_NA_1, C_DC_NA_1Commandes simples et doubles
50C_SE_NC_1Commande de consigne en flottant court
100C_IC_NA_1Commande d’interrogation générale
101C_CI_NA_1Commande d’interrogation des compteurs
103C_CS_NA_1Commande de synchronisation de l’horloge

Le préfixe M désigne les données de surveillance émises par la station distante. Le préfixe C désigne les commandes qui lui sont adressées. IEC 104 utilise uniquement l’horodatage CP56Time2a de 7 octets. Les types IEC 101 dotés de l’horodatage CP24Time2a de 3 octets, comme 2, 4 et 14, n’existent pas en IEC 104.

Les types 9 et 11 portent un entier signé de 16 bits, pas une valeur physique. Pour le type 9, divisez l’entier par 32 768 afin d’obtenir une fraction entre −1 et +0,99997, puis multipliez-la par la pleine échelle. Avec une pleine échelle de 1 000 kW, la valeur brute 16 384 vaut 0,5, soit 500 kW. Pour le type 11, l’entier représente la valeur multipliée par un facteur convenu : 2 340,5 kW avec un facteur 10 sont transmis comme 23 405. Aucun de ces types ne transporte sa pleine échelle ni son facteur. Un destinataire utilisant le mauvais facteur obtient un nombre plausible mais faux.

Un type flottant ne porte pas non plus l’unité. Une valeur de 2 340,5 en type 13 peut représenter des kW, des kVA ou des A. L’unité, la convention de signe et le point de mesure doivent figurer dans la liste de points convenue entre les parties.

Cause de transmission

Causes de transmission courantes :

CauseSignification
1Périodique ou cyclique
3Spontanée : la valeur a changé
5Demandée
6Activation : commande
7Confirmation d’activation
8, 9Désactivation et sa confirmation
10Fin d’activation : la commande est terminée
11, 12Information en retour après une commande distante ou locale
20Réponse à une interrogation générale par station
21 à 36Réponse à l’interrogation des groupes 1 à 16
37Réponse à une interrogation générale des compteurs, pour les totaux intégrés
44Type inconnu
45Cause de transmission inconnue
46Adresse commune inconnue
47Adresse de l’objet d’information inconnue

Interprétez la cause avec le type et le bit P/N. Une cause 7 avec P/N = 1 est une confirmation négative : la station distante a refusé la commande. Le guide des commandes suit une commande à travers chaque cause.

Adresses

Un point est identifié par son adresse commune et son adresse d’objet d’information réunies, sur une même connexion. Le type ne fait pas partie de l’adresse. L’IOA 1001 peut exister sous l’adresse commune 12 et sous l’adresse 13, ainsi que sur chaque RTU d’un parc. L’adresse IP (IEC 104) ou l’adresse de liaison (IEC 101) identifie la connexion, pas le point.

Une connexion IEC 104 peut desservir plusieurs adresses communes. La valeur la plus élevée, 65 535 pour un champ de 2 octets ou 255 pour un champ d’un octet, est l’adresse globale. Une station de conduite l’utilise pour des fonctions à l’échelle de la station, telles que l’interrogation générale, et chaque adresse commune répond sous sa propre adresse. Toutes les fonctions ne peuvent pas l’utiliser. La station distante lib60870 refuse une commande de lecture (type 102), une commande de test (types 104 et 107) ou une commande d’acquisition de délai (type 106) envoyée à l’adresse globale, avec la cause 46.

La liste d’interopérabilité indique également si l’IOA est structuré ou non. Certains outils et listes de points de fabricants présentent un IOA structuré sous forme de trois octets décimaux. L’IOA 1001 vaut 0x0003E9. Il peut apparaître comme 0.3.233 dans un outil et 233.3.0 dans un autre. Convertissez les deux listes en un entier unique avant de les comparer.

Exemple d’entrée dans une liste de points :

ChampValeur
ConnexionRTU du poste A, 10.40.1.20 port 2404
Adresse commune12
IOA1001
Type13, M_ME_NC_1 (flottant court, sans horodatage)
SignificationPuissance active au point de raccordement au réseau
Unité et signekW, importation positive
Bande morte50 kW
Causes attendues3 (spontanée, quand la variation dépasse la bande morte), 20 (interrogation générale)

Attribuez des lignes distinctes à la puissance mesurée, à une consigne de puissance et à la lecture en retour de la consigne active, même si leurs noms se ressemblent. La puissance mesurée est M_ME_NC_1 dans le sens surveillance. La consigne est C_SE_NC_1, type 50, dans le sens commande ; sa confirmation arrive sur le même IOA avec la cause 7. La lecture en retour de la consigne est un autre point de surveillance, doté de son propre IOA.

Tester le rejet autant que l’acceptation

Pendant la mise en service, vérifiez au moins un point de chaque type de la liste. Comparez le type décodé, l’adresse commune, l’IOA, la cause, l’unité et la valeur avec la liste convenue.

Connectez ensuite un simulateur de station maîtresse IEC 104 à la place du système de conduite et envoyez des commandes que la station distante doit refuser. Faites-le pendant les essais de réception, avant qu’elle commande l’installation en exploitation.

  1. Envoyez un type de commande non pris en charge par la station distante. Attendez la cause 44.
  2. Envoyez une commande prise en charge avec la cause 3 au lieu de 6. Attendez la cause 45.
  3. Envoyez une commande à une adresse commune non desservie. Attendez la cause 46.
  4. Envoyez une commande à un IOA non configuré. Attendez la cause 47.

Une station distante qui répond renvoie la requête avec la nouvelle cause et le bit P/N activé. Le comportement face à une adresse commune inconnue varie. La station lib60870 ne renvoie la cause 46 que si l’application précise à la bibliothèque les adresses communes existantes. Certaines stations ignorent la requête sans répondre. Consignez le résultat attendu de chaque cas dans la liste d’interopérabilité et conservez ensemble la révision de la liste de points et les résultats d’essai.

Téléconduite et systèmes EpiSensor

Edge n’implémente ni IEC 60870-5-101 ni IEC 60870-5-104. Sur un site équipé d’une liaison de téléconduite, la RTU ou la passerelle du poste transporte les points destinés au gestionnaire de réseau, tandis qu’un système EpiSensor mesure le site en aval. Le guide IEC 101 et IEC 104 explique cette frontière.

Questions fréquentes

Qu’est-ce qu’une ASDU en IEC 60870-5-104 ?

L’unité de données du service applicatif est la partie d’un message qui transporte les données de téléconduite. Elle commence par un identifiant d’unité de données (type, qualificateur de structure variable, cause de transmission, adresse de l’émetteur et adresse commune), puis contient un ou plusieurs objets d’information avec leur adresse et leur valeur.

Que signifie la cause de transmission 3 ?

Spontanée : la station distante a envoyé la valeur parce qu’elle a changé. La cause 20 signale une réponse à une interrogation générale et la cause 1 une transmission périodique ou cyclique.

Qu’est-ce qu’un IOA en IEC 104 ?

L’adresse de l’objet d’information est un nombre de 3 octets qui identifie un point ou une fonction au sein d’une adresse commune. Elle est transmise avec l’octet de poids faible en premier : l’IOA 1001 apparaît sur la liaison comme E9 03 00. Le même IOA peut exister sous une autre adresse commune ou sur une autre connexion.

Qu’est-ce que M_ME_NC_1 ?

C’est l’identification de type 13 : une valeur mesurée en flottant court (32 bits), accompagnée d’un descripteur de qualité et sans horodatage. La même mesure avec un horodatage CP56Time2a est M_ME_TF_1, type 36.