View
220
Download
0
Category
Preview:
Citation preview
Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
1
COMMUNICATIONS EN
SUPERVISION
MASTER ASE SMART & GSI
Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
2
Pierre BONNET2012-2013
Besoins en communication
Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
3
Organisation fonctionnelle d ’un système SCADA
Besoins en communication
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...)
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 )
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
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.
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
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
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
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
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
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
Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
14
Communication série
Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
15
Communication Série
Communication matérielle par réseau de terrain série:
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:
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:
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:
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
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
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
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
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
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
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
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
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
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
Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
29
Communication UDP/TCP
Communication Ethernet
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
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
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
Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
33
Protocole UDP Mise en oeuvre (langage C)
Communication UDP/TCP
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→
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
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
Recommended