Le but de ce tutoriel est de vous aider à créer votre première application pour les automates Siemens de la série S7 300.
INDEX
II SIMATIC MANAGER le couteau suisse de SIEMENS
PRESENTATION
Que renferme une application d'automatisme? En général elle possède au moins une configuration matérielle, une table de mnémoniques et un programme exécutable. Pour la série des API S7-300, un seul logiciel est nécessaire pour gérer tout cela. Il s'agit du SIMATIC MANAGER. Nous n'aborderons pas ici l'installation de ce programme. Nous nous concentrerons sur son utilisation.
Pré requis
Vous devez disposer d'un ordinateur équipé d'une version de STEP 7 de SIEMENS. Si vous lisez ce tutoriel , c'est que vous possédez déjà un ordinateur 
SIMATIC MANAGER le couteau suisse de SIEMENS
Eh oui ce logiciel est multi taches! Du coup il peut paraitre compliqué voire fouillis au premier abord. Voila à quoi il ressemble en utilisation courante :

Les menus sont bien fournis certes , mais rapidement nous allons défricher tout cela. Allez on y va
Pour lancer l'application , il suffit de trouver l'icône de STEP 7
et de double cliquer dessus.
Après ouverture du programme , votre écran doit ressembler à ceci :
Simatic Manager est une application Windows. Certains menus vous sont donc déjà familiers.
Le menu FICHIER par exemple nous permet de gérer les fichiers application Step7. C'est ici que l'on crée, ouvre, ferme ou archive les projets.

Le menu AFFICHAGE permet de personnaliser son espace de travail. C'est la que l'on choisi d'afficher ou non les barres d'outils et d'états, que l'on paramètre le rendu de l'affichage des données (taille des icones, filtrage). C'est ici aussi que se cache la commande actualiser.
Le menu FENETRE, comme sur toute application multi fenetre windows, gère la disposition de l'affichage,permet de basculer d'un projet ouvert vers un autre...
Le menu EDITION, comme son nom l'indique, vous donne accès aux commandes usuelles de Copier/coller, sélection et autres Propriètés . Il possède également quelques instructions spécifiques à SIMATIC MANAGER.

Nous les découvrirons le temps venu. Quoi ? Que dites vous ? Vous ne voyez pas ce fameux menu EDITION
. Vous avez raison! En fait je vais trop vite
. Pour pouvoir découvrir le reste des menus de SIMATIC MANAGER, nous devons créer notre première application. Allez c'est parti !
CRÉATION NOUVELLE APPLICATION
Exécuter la commande [Fichier][Nouveau] comme indiqué ci-dessous
La fenêtre Nouveau Projet doit apparaitre :

Indiquer le nom de votre nouvelle application (cadre rouge). Le mieux est de laisser les choix par défaut pour les autres paramètres (le cadre bleu vous indique le chemin de sauvegarde de votre application). Il ne reste plus qu'à valider votre saisie par [OK]
LA STATION SIMATIC
La première chose à ajouter dans notre projet vide, c'est une station Simatic. Il en existe trois principales :
Notre choix se fera en fonction du matériel à programmer. Il est possible de déclarer plusieurs stations dans le même projet. Par exemple un API et un afficheur. Dans ce tutoriel nous prendrons une station SIMATIC 300.
Automates de la série 300 : Station Simatic 300
Automates de la série 400 : Station Simatic 400
Pupitres Opérateurs (ou HMI, pour Human Machin Interface) : Station HMI

Que voyez vous ? Oui effectivement deux objets supplémentaires sont apparus. Pour l'instant oubliez les, nous les retrouverons plus loin dans le tuto...chaque chose en son temps.

La configuration matérielle
La structure de notre projet est maintenant déclaré. Vous ne remarquez rien ? Où ? Eh bien dans la façon de présenter le projet. Cela ne vous rappelle t il pas quelque chose de connu ? Si bien sur l'explorateur de fichiers de Microsoft Windows. Eh bien oui , l'application Siemens sera représentée par une structure "Répertoires/fichiers". Le répertoire racine porte le nom de notre application. Le premier sous-répertoire, lui, prend le nom de la station que nous venons de créer. En explorant ce nouveau répertoire , que découvrons-nous?.Un fichier "MATERIEL". Editons le sans plus attendre. Un double-click gauche" et hop l'éditeur de configuration matérielle s'ouvre. Il se nomme aussi HW Config.

Lui aussi est découpé en deux colonnes. A gauche nous aurons la configuration matérielle de notre application. A droite, comme vous pouvez déjà le voir, se situe le catalogue de tous les appareils SIEMENS intégrables dans notre configuration.

De quoi se compose une configuration automate en générale ?
-
Une alimentation (non indispensable, l'alimentation en +24 VCC pouvant être externe)
-
Une CPU (Le cerveau de notre configuration, ici obligatoirement une série 300...rappelez-vous du choix de la station au départ)
-
Des cartes d'entrées TOR (pour Tout Ou Rien - entrées de type booléen)
-
Des cartes de sorties TOR (sorties de type booléen)
-
Des entrées ANA (entrées de type analogique, ex signal 4-20 mA)
-
Des sorties ANA (sorties de type analogique, par exemple 0 - 10 Volts)
Il est également possible d'ajouter d'autres dispositifs, mais nous y reviendrons plus tard ! 
C'est bien joli tout cela mais sur quoi on monte toutes ces cartes ?
Heu en fait un rack...j'allais y venir. Donc la première chose, c'est de choisir un rack dans le catalogue. Pas très compliqué...il n'y en a qu'un! Il se cache dans le "dossier" RACK-300. Pour l'ajouter (lui et tous les autres produits du catalogue) il suffit de le "Tirer-coller" de la colonne de droite vers celle de gauche.

Nous voici donc à la tête d'un rack vide...reste plus qu'à le remplir.
Avant de commencer, quelques petites précisions. Le rack dispose de 11 emplacements. Le 1 est exclusivement pour les alimentations , le 2 pour les CPU et le 3 pour les modules spéciaux (vous savez ceux que l'on vera plus tard). Il n'y a, en fait, que 8 emplacements pour les types de cartes standarts.
Je choisis une CPU 312 dans le catalogue et la positionne sur l'emplacement 2. Et l'alimentation ??
. Nous n'en mettrons pas, je vous rappelle qu'elle est optionnelle.


Maintenant si vous "double cliquez gauche" sur la ligne 2 du rack de notre configuration, vous devez voir apparaitre la fenêtre de propriétés de la CPU 312. Cette multitude d'onglets vous donne accès à tout un tas de paramètrages de la CPU. Cette partie fera sans doute l'objet d'un tutoriel spécifique (désolé
...chaque chose en son temps)

Une nouvelle fenêtre apparait. Nous allons connecter notre CPU à un réseau, par défaut ce sera un réseau MPI (protocole propriétaire de Siemens se rapprochant du PROFIBUS). Notre automate aura l'adresse 2 et le réseau se nommera MPI(1). Pour concrétiser la liaison , il suffit de sélectionner MPI(1) dans la liste et de valider par le bouton OK.

On valide également la fenêtre propriétés de la CPU afin de la refermer.
Maintenant ajoutons donc une carte d'entrées logiques. On choisit un module de 16 entrées TOR DC24V (Pour info, cela veut dire qu'une tension continue de 24 Volts devra être appliquée sur les différentes entrées de la carte pour qu'elles indiquent un état logique égal à 1 (ou VRAI) .

Maintenant si vous "double cliquez gauche" sur la ligne 4 du rack, vous devez voir apparaitre la fenêtre des propriétés de notre carte ETOR. Voila qui est fait.

Ce premier onglet nous renseigne sur la désignation et les caractéristiques de la carte. Allons voir ce que cache l'onglet "adresses :

Comme l'on pouvait le supposer, cette page nous indique les adresses utilisées par la carte. Ici on débute en 0 et on fini en 1! C'est quoi ça?
On y vient, on y vient.
Rappelez vous , notre carte est de type 16 entrées Tout Ou Rien. Calculons la plage mémoire nécessaire pour mémoriser l'état de tous ces bits.
16 * 1 bit = 2 octets = 1 mot
L'adressage des cartes d'entrées/sorties se faisant au format Octet, la configuration nous indique que nous disposons des entrées E 0.0 {adresse début} à E 1.7{adresse de fin} .
Il est important de remarquer que l'adresse de début est modifiable. Vous pouvez ainsi choisir vos plages d'adressages, indépendamment de l'emplacement physique des cartes sur le rack. Par exemple ici, en remplaçant le 0 par 12, il sera possible d'utiliser les entrées E12.0 à E13.7.
Toutes les cartes d'entrées/sorties se configurent de la même manière. Ce qui change c'est l'étendue de la plage mémoire utilisée.
| Type de carte | Nb octets utilisés |
| 16 Entrées TOR |
2 |
| 16 Sorties TOR |
2 |
| 32 Entrées TOR |
4 |
| 32 Sorties TOR |
4 |
| 8 Entrées ANA | 16 |
| 4 Sorties ANA |
8 |
REMARQUE : Si l'option "Valeur par défaut système" est cochée, l'adressage n'est plus modifiable. Il est alors imposé par le logiciel.
Attention, nous n'avons que survolé l'éditeur de configuration (Initiation avons nous dit au départ). En effet, il faut savoir que chaque type de matériel dispose de propriétés différentes et variées. C'est ici par exemple que vous paramètrerez le type de signal des cartes d'entrées (ou de sorties) Analogiques (4-20 mA passif, 0-10V, ...)
Il ne reste plus qu'à enregistrer et quitter l'éditeur de configuration. Le matériel est déclaré, Occupons nous à présent de la partie logicielle.
LA PARTIE LOGICIEL
Introduction
Maintenant que nous disposons d'une configuration matérielle, voici à quoi doit ressembler notre application

Comme l'arborescence nous le montre, un répertoire [programme] est associé à la CPU 312. Celui ci contient,entre autre, un sous répertoire [Blocs]. C'est ici que le programme exécutable par l'API est placé. pour l'instant oubliez le répertoire [sources]
Si vous sélectionnez le répertoire [blocs], vous vous apercevez qu'il contient un fichier nommé OB1. En fait on parlera ici de bloc de programmation OB1 et non de fichier.
Et c'est quoi cet OB1?
C'est en fait le programme minimum imposé par STEP7. OB veut dire Organisation Bloc. Les instructions qu'il contient sont exécutées cycliquement par l'automate.
Il existe d'autres Blocs d'organisation. Chacun d'eux à une fonction particulière. Le tableau ci-dessous vous montre quelques exemples parmi les plus utilisés. Suivant le type de CPU utilisé, vous n'aurez pas accès à tous les blocs OB.
| Bloc |
Fonction |
| OB1 |
Cycle libre: Exécution cyclique.Dés que le cycle est achevé, il redémarre. |
| OB35 |
Alarme cyclique : Fréquence d'exécution défini par l'utilisateur dans les propriétés de la CPU utilisée. Par défaut l'OB35 est exécuté tous les 100ms. |
| OB82 |
Alarme de diagnostic: Appelé lorsqu'un module avec fonction de diagnostic pour lequel vous avez validé l'alarme de diagnostic détecte une erreur et lorsqu'il a été remédié à cette erreur (appel pour événement entrant et sortant). |
| OB85 |
Erreur exécution programme: Appelé
|
| OB101 |
Redémarrage: La CPU exécute une mise en route après mise sous tension
|
| OB121 |
Erreur de programmation: Est appelé sur détection d'erreur de programmation. Permet d'éviter le crash de la CPU sur erreur. A manier avec précaution! |
| OB122 |
Erreur d'accès à la périphérie: Est appelé sur détection d'erreur lié à la configuration matériel (crash d'une carte I/O par exemple, voire de communication (profibus par exemple) |
Il est possible d'implémenter votre programme directement dans ces différents OB au moyen des instructions de base (portes logiques, temporisations, bascules RS, etc). Cette solution n'est toutefois pas très recommandée. Il est préférable de structurer votre exécutable. C'est pour cela qu'il existe d'autres types de blocs. Les principaux se nomment FC, FB et DB.
Les DB
Les DB (DATA BLOCK) sont appelés communément les blocs de données. Contrairement aux blocs de code, ils ne contiennent pas d'instructions. Ils sont utilisés pour l'enregistrement des données utilisateur. Leur taille varie suivant le nombre et le type de variables déclarées. On rencontre principalement deux types de DB, les globaux et les instances. Les DB globaux servent à l'enregistrement de données utilisateur pouvant être utilisées par tous les blocs de codes (OB, FB, FC,...). Le DB d'instance, lui, est toujours lié à un FB (bloc de fonction). Il sert uniquement de mémoire permanente pour les données gérées par le FB. Par opposition avec les DB globaux, on peut dire que ce sont des "DB locaux".
Les FC
Le FC (FUNCTION) se nomme aussi fonction. Pour être exécuté, le FC doit être appelé par un autre bloc de code du programme utilisateur. C'est un bloc de code sans mémoire. Les variables utilisées sont perdues à l'achèvement de la fonction. Les FC peuvent faire appel à des blocs de données globaux pour la sauvegarde des données. Comme une fonction ne dispose pas de mémoire associée, vous devez toujours indiquer des paramètres effectifs pour elle et vous ne pouvez pas affecter de valeur initiale aux données locales.
Utilisation :
-
implémentation d'équations mathématiques,
-
programmation de morceaux de programmes répétitifs (discordance actionneur, demarrage moteur,etc)
-
Découpage exécutable en sous-programmes
Les FB
FB est l'abréviation de "Function Bloc". Pour résumer on peut dire que les FB sont des FC possédants des variables rémanentes! Ces variables sont dites statiques. Elles sont conservées dans des DB. Ainsi chaque fois qu'un FB est appelé par un autre bloc de code, on doit lui associer un bloc de données. Ce type d'appel est plus communément nommé une instance, Le DB associé est donc naturellement un DB d'instance.
Utilisation
-
programmation de codes répétitifs
-
sous-programmes (organisation du projet complet)
-
macro fonction paramètrable (ex: gestion communication, traitement de défauts, gestion moteurs avec normal/secours, etc)
Les variables
Organisation de la mémoire.
La mémoire utilisateur de l'automate est répartie en différentes zones dont :
-
La mémoire image des entrées (E) : Zone de stockage de l'état des entrées physiques de la configuration matérielle. Cette zone est mise à jour avant chaque début de cycle de l'OB1.
-
La mémoire image des sorties(A) : De même, cette zone stocke l'état des sorties physiques. La mise à jour s'effectue après chaque fin de cycle de l'OB1.
-
Les mémentos (M) : appelée zone mémoire de l'automate. Non dédiée, elle est libre d'utilisation.
-
Les blocs de données (DB) : zones regroupant des variables définies par l'utilisateur.
-
Les temporisations et les compteurs (T/Z) : Zone réservée pour le fonctionnement des temporisations et des compteurs
-
Les blocs de code (FB, FC, SFB, SFC) : zone utilisée pour le fonctionnement des blocs fonctions.
Les formats d'adressage
Dans une application Step7 vous rencontrerez quatre formats de variable de base :
-
Le bit (ou un bool)
-
Le byte (ou un Octet)
-
Le Word (ou un mot)
-
Le Double Word (ou le double mot)
Quelque soit la zone mémoire utilisée, vous retrouverez ces formats. Seule la syntaxe de programmation changera.
Vous vous rappelez le découpage de la mémoire décrit un peu plus haut? Non
! Vous allez voir c'est simple !! Si si
-
E 0.0 pour la mémoire des entrées (ce qui correspond le plus souvent à la 1ere entrée logique de la 1ere carte d'entrées TOR)
-
A 0.0 pour la mémoire des sorties (de la même façon, cela peut être la 1ere sortie logique de l'automate)
-
M 0.0 pour la mémoire automate (on entend souvent parler de la zone mémento. Ici c'est un mémento BOOL)
-
DB1.DBX0.0 pour la zone DB1 (DB1 est le nom du bloc de donnée contenant ce bit )
Pourquoi cette syntaxe en x.y
Nous y reviendrons en fin de chapitre. Pour l'instant passons au format byte...
Si je vous dit que la syntaxe pour adresser le BYTE d'entrée 0 est tout simplement EB 0, pouvez-vous deviner les 3 autres ? Facileee
Nous aurons AB 0 , MB 0 et DB1.DBB 0
De même, le WORD d'entrée 0 s'écrivant EW 0 , nous avons respectivement les AW 0, MW 0 et DB1.DBW 0
Et pour finir le Double WORD d'entrée 0 se nommant ED 0, nous aurons respectivement les double WORD AD 0, MD0 et DB1.DBD 0
INFORMATION IMPORTANTE : Pour chaque zone mémoire, le x 0.0 est un élément du xB 0, lui même élément du xW 0, lui même élément du xD 0. Eh oui .
Un petit schéma valant mieux qu'un long discours ...

REMARQUE : Avec ce schéma, il est facile de découvrir que la variable WORD 1 est "à cheval" sur les emplacements WORD 0 et WORD 2. Arhggg !
En résumé si vous ne voulez pas avoir de soucis de chevauchements de variables, il faudra utiliser 1 word sur 2 , ou un double word sur 4. Comment ça ?? Bah oui les word concécutifs indépendants seront W0, W2, W4, etc. Les double word indépendants seront les D0, D4, D8, etc...
REMARQUE 2 : Avec ce schéma tout devient clair également sur l'adressage des BOOL! Non ? Bah si voyons , regardez bien... chaque BYTE est composé de huit BIT. Ainsi le BYTE MB0 est composé des BOOL M0.0 à M0.7 Oui et le MB1 ?? il démarre à M 0.8 ??? Eh ben non,trop facile!!! Le MB1 est composé des BIT M1.0 à M1.7.
Allez on fait une pause , non ?
| Commentaires |
|
|
||||||||
|
||||||||
|
||||||||
|
||||||||
|
||||||||
|
||||||||
|
||||||||
|
||||||||
|
||||||||
|
||||||||
|
||||||||
|
||||||||
|
||||||||
|
||||||||
|
||||||||
|
||||||||
|
||||||||
|
||||||||

















