36
Supervision Industrielle – Master Smart & GSI - Pierre Bonnet 1 COMMUNICATIONS EN SUPERVISION MASTER ASE SMART & GSI

Cours Liaisons Scada

Embed Size (px)

Citation preview

Page 1: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

1

COMMUNICATIONS EN

SUPERVISION

MASTER ASE SMART & GSI

Page 2: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

2

Pierre BONNET2012-2013

Besoins en communication

Page 3: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

3

Organisation fonctionnelle d ’un système SCADA

Besoins en communication

Page 4: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

4

Un système SCADA doit pouvoir communiquer avec des ressources externes :

Besoins en communication

- liaison matérielle locale (liaison série, carte spécialisée ASI, CAN...) vers une ressource spécialisée (E/S distantes, automate...)

- liaison matérielle de type standard (Ethernet) vers un matériel distant (E/S , automate...) [éventuellement modifiée (Profinet)]

- liaison radio (Bluetooth, ZigBee, WiFi) vers des E/S spécialisées

- liaison avec un autre module logiciel local (IHM, tableur, base de donnée, serveur Web... )

- liaison avec un autre module logiciel distant (serveur de données, serveur SQL autre superviseur, logiciel MES...)

Page 5: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

5

Eléments de la communication matérielle:

Besoins en communication

Carte/module d'interface/communication

Module de communication

intégré

SCADASCADA Interfacematérielle

Interfaceélectrique

Bus de terrain

(câble, radio..)

Liaison « interne » (bus ISA, PCI express, USB, Ethernet...)

Le module de communication peut être :- intégré matériellement à la structure SCADA (carte de couplage spécialisée selon le bus de terrain choisi )- séparé (liaison intermédiaire vers une passerelle de bus )

Page 6: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

6

Eléments de la communication logicielle:

Besoins en communication

SCADASCADA Interfacelogicielle ServeurServeurInterface

logicielle

Communication logicielle dédiée

partage mémoire, connecteur ODBC

DCOM OPC .....

Communication point à point

Bus logiciel

IHMIHMInterfacelogicielle

SCADASCADA Interfacelogicielle

Bus logicielD-Bus, CORBA

ServeurServeurInterfacelogicielle

Page 7: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

7

accès à une ressource logicielle:

Besoins en communication

Le principe général d'accès à une ressource logicielle est l'échange de données par:

- écriture d'une zone mémoire d'échange (presse-papier) écriture physique → - partage mémoire commune (passage de pointeur) problème de protection d'accès→

- envoi de la donnée par un "pipe" (tuyau de communication) possibilité de → passer par Ethernet

Microsoft a introduit le concept OLE avec la possibilité d'exécution des fonctions par le client. C'est ce principe qui est employé dans les serveurs OPC.

Page 8: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

8

Principe général d'accès à une ressource matérielle:

Besoins en communication

Programme principal

appel

Procédure d'accèsà la ressource

écriture

retourlecture

Tâche principalesuspendue

Ressource

Accès direct intégré au programme principal

Page 9: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

9

Principe général d'accès à une ressource matérielle:

Besoins en communication

Tâche principale

appel serveur

Tâche d'accèsà la ressource

écritureretour appel

lecture

Reprise dela tâche principale

Ressource

Accès direct intégré avec événement (multitâche)

Tâche évènementielle

Traitement évènementiel

Suspension dela tâche principale

Reprise dela tâche principale

appel événementiel

Page 10: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

10

Principe général d'accès à une ressource logicielle:

Besoins en communication

Programme Client

Requête

ProgrammeServeur

écriture

Réponselecture

Tâchesuspendue

Ressource

Accès client-serveur en liaison synchrone

Une requête se compose généralement d'une fonction et de données

Page 11: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

11

Principe général d'accès à une ressource :

Besoins en communication

ProgrammeServeur

Ressource

Accès client-serveur en liaison asynchrone

appel serveur écriture

appel évènementiellecture

Reprise dela tâche

Traitement évènementiel

Tâche Cliente

Tâche évènementielle

Autre client

Le serveur gère les conflits d'accès à la ressource critique

retour appel

Page 12: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

12

Besoins en communication

Principe général d'accès à une ressource (synthèse) :

Les deux accès fondamentaux sont donc :

- l'accès synchrone, avec blocage de la tâche appelante en attente de la réponse

- l'accès asynchrone , avec attente d'un événement signalant l'arrivée de la réponse

Page 13: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

13

accès à une ressource matérielle locale : bibliographie

Visual Basic for Electronics Engineering Applications : (VB 5.0 , 6.0 , VBA , .NET , 2005...) Vincent Himpe - Elektor Elektronics Publishing - 2006

Document de base pour découvrir VB et l'accès aux ressources matérielles d'un PC dans l'environnement actuel de programmation ; fait le lien entre les aspects matériels et la couche applicative sous une forme moderne.

Je programme les interfaces de mon PC sous Windows : B. Kainka & H-J Berndt - Publitronic/Elektor - 1999

Cet ouvrage s'intéresse surtout aux aspects matériels en vue de faire des mesures directes sur PC. Devient obsolète pour la programmation qui ne respecte pas les principes de protection de Windows XP .

Besoins en communication

Page 14: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

14

Communication série

Page 15: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

15

Communication Série

Communication matérielle par réseau de terrain série:

Page 16: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

16

Communication Série

SuperviseurSuperviseur PériphériquePériphériqueLiaison matérielle série

RS232, RS485 liaison radio (Bluetooth...)

le couplage peut être synchrone [attente de la réponse par le client avec blocage] ou asynchrone [événement signalant l'arrivée de la réponse]

port série port série

Coupleur

UART Coupleur

UART

la base de la transmission est l'octet (8 bits + contrôle de parité ) avec délimiteurs (bit de start, bit de stop)

une trame est constituée d'un ensemble d'octet avec délimiteurs (début de trame , crc, fin de trame )

Communication matérielle par réseau de terrain série:

Page 17: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

17

Communication Série

Echanger des octets par transmission de l'information bit à bit Le format de base de l'échange d'un caractère est :

- le start et le stop permettent au matériel de reconstruire la donnée- le bit de parité permet de vérifier l'intégrité du message- la vitesse d'échange est définie en bits/sec ou bauds

Cette liaison est encore très largement utilisée sous forme de port com virtuel avec Bluetooth ou USB , en particulier sur les automates .

... start a0 a1 ... ... a6 a7 parité stop …. start ...

Communication matérielle par réseau de terrain série:

Page 18: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

18

Communication Série

MAITREESCLAVES

COMMUNICATION SERIE

La liaison électrique est bidirectionnelle sur paire différentielle (standard RS485)

Communication matérielle par réseau de terrain série Modbus:

Page 19: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

19

Communication Série

SuperviseurSuperviseur PériphériquePériphériqueLiaison série

le couplage peut être synchrone [attente de la réponse par le client avec blocage] ou asynchrone [événement signalant l'arrivée de la réponse]

trame de requête

trame de réponse

n°Esclave

n°Esclave

port série port série

Communication matérielle par réseau de terrain série: Modbus

Page 20: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

20

Communication Série

Principales fonctions sur Modbus :

• 0x01 lecture de n bit(s) de sortie consécutif(s)• 0x02 lecture de n bit(s) d’entrée consécutif(s)• 0x03 lecture de n registre(s) internes• 0x04 lecture de n registre (s) d’entrée• 0x05 écriture d’un bit de sortie• 0x06 écriture d’un registre interne• 0x15 écriture de n bits de sortie• 0x16 écriture de n registres internes

Communication matérielle par réseau de terrain série: Modbus

Page 21: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

21

Communication Série

Une trame [ascii] ModBus est la concaténation des éléments suivants :

- entête : ‘:’- adresse de l’esclave (0x01..0xF8) : ‘01’..’F8’,- numéro de la fonction (0x01..0x06) :’01’..’06’,- données (contenu et taille variable suivant la fonction).- octet de vérification de la trame ou LRC8 (0x00..0xFF) calculé depuis les valeurs adresse de l’esclave, numéro de fonction et champs de données : ‘00’..’FF’.- un délimiteur de fin constitué des caractères Carrier Return (0x0D) et Line Feed (0x0A).

Dans l’exemple ci-dessous, le maître demande à l’esclave 04 de mettre sa sortie d’adresse 0 à l’état logique « 1 »

Entête Adresse Esclave

Code Fonction Données LRC Délimiteur

1 carac 2 caract. 2 caract. N*2 caract. 2 caract. Retour Chariot

Line Feed

: 04 05 0000FF00 F8 CR LF

Communication matérielle par réseau de terrain série: Modbus

Page 22: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

22

Accès au port série Utilisation d'une bibliothèque enregistrée .dll ou .ocx sous VBA

Bibliothèque de Fonctions DLL ( Dynamic Link Library) [windows\system32\…]

Contrôle ActiveX/OCX (Objet Control Extended) [enregistrée]

Communication Série

Page 23: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

23

Accès au port série par MSComm Ajouter d'une instance de Mscomm dans un UserForm

Communication Série

Page 24: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

24

Accès au port série par MSComm Paramétrage du contrôle

CommPort : permet de définir le port physique utilisé

MsComm1.CommPort=1 ‘on utilise le port COM1:

Attention: l'OCX MSComm est limité aux ports 1 à 16 !!!!

Settings : Fixe les paramètres de la connexion (vitesse, parité, nb bits, bits de stop)

MSComm1.Settings = "9600,N,8,1"

PortOpen: permet d'ouvrir ou de fermer la liaison

MSComm1.PortOpen = True 'ouvre la liaison (prise de contrôle par l'application)

MSComm1.PortOpen = False 'ferme la liaison série (abandonne le contrôle du port)

L'ouverture d'un port peut être en échec; les cas les plus fréquents sont:-le port est peut être déjà ouvert par l'application- le port est peut être ouvert par une autre application(un port ne peut pas être par deux applications simultanément) - le port n'existe pas

La fermeture est en échec si le port n'a pas pu être ouvert!

Communication Série

Page 25: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

25

Accès au port série par MSComm Entrée/sortie sur le port série

OutPort : permet d'envoyer des données sur la liaison; la chaîne doit être terminée par

retour chariot (Chr$(13)) ou par RC + nouvelle ligne (Chr$(13)+Chr$(10))

MSComm1.OutPut= "message"+"a"+"transmettre"+vbcrlf

Input : permet de lire les données contenues dans le buffer d'entrée

Dim Tampon as String Tampon = Tampon + MSComm1.Input

Exemple : lecture jusqu'à réception de fin de trame CRLF

Do  DoEvents 'indispensable pour redonner la "main"

au gestionnaire d'événements   Tampon$ = Tampon$ & MSComm1.Input

Loop Until InStr(Tampon$, vbCrLf)

Communication Série

Page 26: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

26

Accès au port série par MSComm

Gestion des erreurs

la gestion des erreurs est indispensable pour l'accès à cette ressource: l'exécution peut provoquer une exception Windows (sortie anormale d'Excel qui laisse l'application ouverte) lorsqu'une erreur apparaît dans l'exécution de la bibliothèque DLL/OCX (l'objet retourne généralement un code d'erreur exploitable)

La structure de gestion d'erreur en VB/VBA est :

Sub Mon_acces... 'mes déclarations, mon code sans erreur...On Err GoTo Fin_si_err... 'section avec génération d'erreur...Exit Sub 'sortie de la fonction sans erreur

Fin_si_Err: 'sortie si erreur

msgbox "erreur exécution"

End Sub

Communication Série

Page 27: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

27

Accès au port série par MSComm Evènement OnComm

Le contrôle MSComm génére un événement dans de nombreuses situations:- réception d'un caractère- fin d'envoi d'un caractère- changement de niveau d'un signal de contrôle du port série- apparition d'une erreur (trame, perte du port...)

Private Sub MSComm1_OnComm() Select Case MSComm1.CommEvent

    Case comEventBreak      ' Coupure de ligne (Break)    Case comEventFrame      ' Erreur de trame    Case comEventOverrun    ' Perte de données par overrun    Case comEventRxOver     ' Tampon de réception saturé    Case comEventRxParity   ' Erreur de parité      Case comEvCTS           ' Changement niveau broche CTS

    Case comEvReceive       ' réception de caractères    Case comEvSend          ' fin d'émission d'un caractère    End Select

End Sub

Communication Série

Page 28: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

28

Accès au port série Autres bibliothèques

RealTerm

Bibliothèque gratuite très complète, compatible XP, orientée service client-serveur . Des exemples en VBA, Matlab et Scilab sont fournis . Dispose d'une interface de contrôle (ActiveX) facilitant le débogage. Permet l'insertion du CRC Modbus par exemple. Bon outil de mise au point, lourd pour une application définitive [installation du serveur].

Windows Serial Communications (WSC) de MarshallSoft

Bibliothèque adaptée pour une application définitive. Existe pour tous les langages. Gratuite avec message au démarrage/payante pour un usage commercial. Une expérience de 20 ans !

Windows kernel32 NT (utilisable en C, VB, .NET...)

Le port série est vu comme un "fichier" avec attributs, buffer lecture/écriture, timeouts...

serial_handle = CreateFile("COM1", GENERIC_READ Or GENERIC_WRITE,....)

Communication Série

Page 29: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

29

Communication UDP/TCP

Communication Ethernet

Page 30: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

30

Accès direct UDP/TCP Objectif

Réaliser un échange de données entre deux machines informatiques par le réseau Ethernet.

Deux modes principaux en milieu industriel :

- le mode UDP (User Datagram Protocol) , envoi direct de données dans le réseau

- le mode TCP (Transfert Control Protocol) dans lequel l'envoi est acquitté

Le contenu du paquet transmis est du ressort de l'utilisateur.

Par exemple, le contenu peut être une trame ModBus (trame ASCII ou trame RTU ).

Communication UDP/TCP

superviseur api/dcs

ethernet

passerelle RS485

Page 31: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

31

Protocole UDP Principe

Communication UDP/TCP

UDP est un protocole orienté "non connexion".

- le flux venant d'une machine A à destination d'une machine B est unidirectionnel. - la transmission des données se fait sans prévenir le destinataire (machine B)

- le destinataire reçoit les données sans effectuer d'accusé de réception vers l'émetteur (la machine A).

- l'encapsulation des données envoyées par le protocole UDP ne permet pas de transmettre les informations concernant l'émetteur. Le destinataire ne connaît pas l'émetteur des données hormis son IP et son port d'écoute.

Pseudo-entête IPv4

Page 32: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

32

Protocole UDP Utilisation

Communication UDP/TCP

UDP utilise un modèle de transmission simple sans dialogues de hand-shaking pour garantir la fiabilité, l'ordonnancement des paquets ou l'intégrité des données.

De ce fait, UDP fournit un service peu fiable dans lequel les datagrammes peuvent arriver en désordre, dupliqués ou absents sans avertissement. UDP suppose que la recherche des erreurs et leur correction se feront au niveau applicatif si nécessaire.

UDP est un moyen d'échange rapide de données et à faible coût logiciel. Il est bien adapté pour des machines embarquées (automates par exemple)

La source de données doit connaître l'adresse IP et le port du destinataire.

La destination doit être prête à recevoir des données sur son port (socket ouvert)

La source de donnée ouvre un socket d'émission, en précisant l'adresse IP source et le port source qui seront inclus dans le datagramme.

La source envoie ses données qui sont émises dans le réseau Ethernet (diffusion possible)

La destination reçoit [éventuellement] le datagramme et récupère les données

Avantages et inconvénients

Page 33: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

33

Protocole UDP Mise en oeuvre (langage C)

Communication UDP/TCP

Page 34: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

34

Protocole UDP Exemple en VBA

Communication UDP/TCP

'Déclaration de l'objet SocketDim MySocket as new Winsock

'Paramétrage du Socket MySocket.Protocol = sckUDPProtocol

IP_machine_A = MySocket.LocalIP

MySocket.LocalPort = 0

MySocket.RemoteHost = "172.19.7.248" MySocket.RemotePort = "5001"

'Emission d'un message sur le réseau MySocket.SendData "Message à transmettre à B sur port 5001"

'Pas d'acquittement en mode UDP !!!

Emission A B→

Page 35: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

35

Protocole UDP Exemple en VBA

Communication UDP/TCP

Réception UDP A<--B (sur socket ouvert )

' la déclaration de l'objet Socket'et son paramétrage doivent être'faits préalablement

'mise en écoute du socket sur le port 5000 MySocket.Bind "5000", IP_Machine_A

'Procédure événementielle appelée par le socket' en cas de réception d'une trame UDP sur le port 5000

Sub MySocket_DataArrival(ByVal bytesTotal As Long) MySocket.GetData paquet_recu UserForm1.TextBox_Receive.Caption = paquet_recu & vbCrLf UserForm1.TextBox_Emetteur.Caption = MySocket.RemoteHostIPEnd Sub

Page 36: Cours Liaisons Scada

Supervision Industrielle – Master Smart & GSI - Pierre Bonnet

36

sources d'info :

http://www.spi.ens.fr/beig/systeme/sockets.html

Linux Magazine n°141 Septembre 2011 pages 44-58

Communication TCP : même socket , mode programmation plus avancé avec vérification de la connexion