MASTER ASE SMART & GSI
COMMUNICATIONS EN SUPERVISION
1 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Besoins en communication
Pierre BONNET 2012-2013
2 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Besoins en communication Organisation fonctionnelle d ’un système SCADA
3 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Besoins en communication Un système SCADA doit pouvoir communiquer avec des ressources externes : - 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...)
4 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Besoins en communication Eléments de la communication matérielle:
Module de communication intégré
Liaison « interne » (bus ISA, PCI express, USB, Ethernet...)
SCADA SCADA
Interface matérielle
Interface électrique
Bus de terrain (câble, radio..)
Carte/module d'interface/communication
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 erelle de bus ) 5 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Besoins en communication Eléments de la communication logicielle: Communication point à point Communication logicielle dédiée
SCADA SCADA
Interface logicielle
partage mémoire, connecteur ODBC DCOM OPC .....
Interface logicielle
Serveur Serveur
Interface logicielle
IHM IHM
Bus logiciel
SCADA SCADA
Interface logicielle
Bus logiciel D-Bus, CORBA Interface logicielle
Serveur Serveur 6
Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Besoins en communication accès à une ressource logicielle: 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 (age de pointeur) → problème de protection d'accès - envoi de la donnée par un "pipe" (tuyau de communication) → possibilité de er 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.
7 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Besoins en communication Principe général d'accès à une ressource matérielle: Accès direct intégré au programme principal Programme principal
Procédure d'accès à la ressource
Ressource appel écriture
Tâche principale suspendue
lecture retour
8 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Besoins en communication Principe général d'accès à une ressource matérielle: Accès direct intégré avec événement (multitâche) Tâche principale
Tâche évènementielle
Tâche d'accès à la ressource Ressource
appel serveur Reprise de la tâche principale
retour appel
appel événementiel Suspension de la tâche principale
écriture
lecture
Traitement évènementiel
Reprise de la tâche principale
9 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Besoins en communication Principe général d'accès à une ressource logicielle: Accès client-serveur en liaison synchrone Ressource
Programme Serveur
Programme Client
Requête écriture
Tâche suspendue
lecture Réponse
Une requête se compose généralement d'une fonction et de données 10 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Besoins en communication Principe général d'accès à une ressource : Accès client-serveur en liaison asynchrone Tâche Tâche Cliente évènementielle
Programme Serveur
Ressource
appel serveur retour appel Reprise de la tâche appel évènementiel Traitement évènementiel
écriture
lecture
Autre client
Le serveur gère les conflits d'accès à la ressource critique Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
11
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
12 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Besoins en communication 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 .
13 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Communication série
14 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Communication Série Communication matérielle par réseau de terrain série:
15 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Communication Série Communication matérielle par réseau de terrain série: port série
Superviseur Superviseur
Coupleur UART
port série
Liaison matérielle série RS232, RS485 liaison radio (Bluetooth...)
Coupleur UART
Périphérique Périphérique
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 )
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] 16 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Communication Série Communication matérielle par réseau de terrain série: Echanger des octets par transmission de l'information bit à bit Le format de base de l'échange d'un caractère est : ...
start
a0
a1
...
...
a6
a7
parité stop
….
start
...
- 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 . 17 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Communication Série Communication matérielle par réseau de terrain série Modbus: COMMUNICATION SERIE
ESCLAVES MAITRE
La liaison électrique est bidirectionnelle sur paire différentielle (standard RS485)
18 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Communication Série Communication matérielle par réseau de terrain série: Modbus port série
Superviseur Superviseur
port série
Liaison série
Périphérique Périphérique
n°Esclave
trame de requête n°Esclave
trame de réponse
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] Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
19
Communication Série Communication matérielle par réseau de terrain série: Modbus 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
20 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Communication Série Communication matérielle par réseau de terrain série: Modbus 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
21 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Communication Série 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]
22 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Communication Série Accès au port série par MSComm Ajouter d'une instance de Mscomm dans un Form
23 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Communication Série 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!
24 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Communication Série 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) 25 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Communication Série 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 ... ... On Err GoTo ... ... Exit Sub Fin_si_Err:
'mes déclarations, mon code sans erreur Fin_si_err 'section avec génération d'erreur 'sortie de la fonction sans erreur 'sortie si erreur
msgbox "erreur exécution" End Sub
26 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Communication Série 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 Case Case Case Case
comEventBreak ' comEventFrame ' comEventOverrun ' comEventRxOver ' comEventRxParity '
Coupure de ligne (Break) Erreur de trame Perte de données par overrun Tampon de réception saturé 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
27 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Communication Série Accès au port série Autres bibliothèques RealTerm Bibliothèque gratuite très complète, compatible XP, orientée service clientserveur . 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,....) 28 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Communication UDP/T
Communication Ethernet
29 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Communication UDP/T Accès direct UDP/T Objectif Réaliser un échange de données entre deux machines informatiques par le réseau Ethernet.
api/dcs
superviseur
ethernet erelle
RS485
Deux modes principaux en milieu industriel : - le mode UDP ( Datagram Protocol) , envoi direct de données dans le réseau - le mode T (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 ). 30 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Communication UDP/T Protocole UDP Principe 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
31 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Communication UDP/T Protocole UDP Utilisation 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 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) 32 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Communication UDP/T Protocole UDP Mise en oeuvre
(langage C)
33 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Communication UDP/T Protocole UDP Exemple en VBA Emission A → B 'Déclaration de l'objet Socket Dim 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 !!! 34 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Communication UDP/T Protocole UDP Exemple en VBA 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 Form1.TextBox_Receive.Caption = paquet_recu & vbCrLf Form1.TextBox_Emetteur.Caption = MySocket.RemoteHostIP End Sub 35 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet
Communication T : même socket , mode programmation plus avancé avec vérification de la connexion
sources d'info : http://www.spi.ens.fr/beig/systeme/sockets.html Linux Magazine n°141 Septembre 2011 pages 44-58
36 Supervision Industrielle – Master Smart & GSI - Pierre Bonnet