Conception de l'architecture
Avec un micrologiciel d'UC de version 3.20 ou ultérieure, l'architecture de la solution repose sur les éléments suivants :
Exécution de 2 DFB (
S_WR_ETH_MX2
etMOVE
) dans le PAC émetteur et de 2 DFB (S_RD_ETH_MX2
etMOVE
) dans le PAC récepteur.Scrutation via Modbus TCP pour le transport des données sécurisées de l'émetteur vers le récepteur.
Scrutation via Modbus TCP pour le transport des données de contrôle du récepteur vers l'émetteur.
L'illustration suivante donne un aperçu du processus impliqué pour assurer la communication d'égal à égal de façon sécurisée :

Dans la figure précédente, Control Expert crée automatiquement - et cache à toute vue externe – Array1 et Array4 dans les zones globales des PAC homologues. Du point de vue d'un utilisateur, les liaisons sont établies de Array0 à Array2 et de Array3 à Array5.
Détails de la configuration du transfert de données d'égal à égal
L'exemple suivant montre comment configurer un transfert de données d'égal à égal entre deux PAC de sécurité avec le micrologiciel d'UC de version 3.20 ou ultérieure et Control Expert 15.0 ou supérieur :
Etape |
Action |
---|---|
1 |
Sur le PAC émetteur, utilisez l'Array2) en tant qu'entrée dans la zone Interface. Dans le même , créez un tableau de 4 entiers (CtrlData2) en tant que sortie dans la zone . pour créer un tableau de 100 entiers (Les données de contrôle envoyées par le PAC récepteur seront écrites dans le tableau CtrlData2 via le scrutateur Modbus, à condition que cette variable CtrlData2 soit située à l'adresse définie dans le scrutateur du PAC émetteur (%MW100 dans cet exemple - voir l'étape 4) : ![]() |
2 |
Sur le PAC émetteur, utilisez l'Array0) en tant que sortie dans la zone et liez ce tableau au tableau process.Array2 (créé à l'étape 1) dans la colonne . pour créer un autre tableau de 100 entiers (Dans le même CtrlData0) en tant qu'entrée dans la zone de sécurité et liez ce tableau au tableau process.CtrlData2 (créé à l'étape 1) dans la colonne . , créez un tableau de 4 entiers (![]() NOTE : Les variables de type entier indexées
de 0 à 90 dans le tableau contiennent les valeurs des variables
de sécurité que vous souhaitez échanger avec le PAC
récepteur. La zone restante est réservée aux données
de diagnostic générées automatiquement, dont la valeur
CRC et l'horodatage. Ces données de diagnostic sont utilisées
par le PAC récepteur pour déterminer si les données
transférées sont sûres.
|
3 |
Sur le PAC émetteur, configurez le DFB ![]() |
4 |
Dans le du PAC émetteur, sélectionnez l'UC (pour cet exemple) ou un module de communications NOC (le cas échéant), puis cliquez sur pour créer un scrutateur Modbus qui puisse envoyer des données via Modbus TCP depuis le PAC émetteur vers le PAC récepteur :![]() |
5 |
Sélectionnez et cliquez sur pour ajouter le scrutateur Modbus :![]() |
6 |
Ouvrez l'équipement Modbus que vous venez d'ajouter puis effectuez les actions suivantes dans l'onglet :
![]() |
7 |
Sélectionnez le noeud puis, dans l'onglet , définissez le type de tableau INT (soit ≥ 100 entiers). Il s'agit de la table du PAC émetteur qui sera écrite sur le PAC récepteur :![]() |
8 |
Une fois la configuration enregistrée et générée, le bloc (BLOCKA_QI0_100 dans cet exemple) est automatiquement créé en tant que variable de processus : ![]() |
9 |
Sur le PAC émetteur, dans une section de code de processus,
utilisez un DFB ![]() |
10 |
Sur le PAC récepteur, utilisez l'Array5) en tant qu'entrée dans la zone . pour créer un tableau de 100 entiers (Dans le même CtrlData5) en tant que sortie dans la zone . , créez un tableau de 4 entiers (![]() |
11 |
Sur le PAC récepteur, utilisez l'Array3) en tant que sortie de la zone . Liez le tableau Array3 au tableau Array5 (créé à l'étape 10) dans la colonne . Les données en provenance du PAC émetteur seront écrites dans le tableau Array3 via le scrutateur Modbus, à condition que Array3 soit situé à l'adresse définie dans le scrutateur du PAC émetteur (%MW0 dans cet exemple). pour créer un tableau de 100 entiers (Dans le même CtrlData3) en tant qu'entrée dans la zone . Liez le tableau CtrlData3 au tableau CtrlData5 (créé à l'étape 10) dans la colonne . , créez un tableau de 4 entiers (![]() |
12 |
Sur le PAC récepteur, utilisez l'Array6) : pour créer un tableau de 100 entiers (![]() |
13 |
Sur le PAC récepteur, dans une section de code de la
tâche SAFE, instanciez le DFB ![]() |
14 |
Sur le PAC récepteur, répétez les étapes 4 à 9 pour configurer une communication de 4 entiers en vue d'envoyer le tableau CtrlData2 du PAC récepteur vers le PAC émetteur. Dans cet exemple, les données CtrlData doivent être écrites sur le PAC émetteur à l'adresse %MW100. |
Communication d'égal à égal par canal noir
Chaque transmission de données d'égal à égal se compose à la fois de données de sécurité utilisateur, comprenant le contenu lié à l'application qui est transmis, et de données réservées. Les données réservées sont utilisées par le PAC de sécurité pour tester la fiabilité de la transmission par rapport aux exigences du niveau SIL3. Elles comprennent les éléments suivants :
CRC calculé par le PAC émetteur à partir des données à transmettre. Le PAC récepteur vérifie le CRC avant d'utiliser les données transmises.
Identifiant de communication inclus dans le calcul de CRC, afin de favoriser la prévention des attaques par insertion et déguisement de bits lors de la transmission de données de sécurité.
Horodatage de la transmission à la milliseconde près. Avec le micrologiciel d'UC de version 3.20 ou ultérieure, cet horodatage est la valeur horaire sécurisée fournie par l'UC du récepteur. Le PAC émetteur de données ajoute une valeur d'horloge aux données envoyées au PAC récepteur. Le PAC récepteur compare l'horodatage reçu à sa propre valeur d'horloge, aux fins suivantes :
Vérifier l'ancienneté des données.
Rejeter les transmissions en double.
Déterminer l'ordre chronologique des transmissions reçues.
Déterminer le temps écoulé entre réceptions de données transmises.