Sosautomaticiens.org

 
  • Increase font size
  • Default font size
  • Decrease font size
Accueil

Premiers pas en step7 (en cours de rédaction)

E-mail Print PDF
User Rating: / 139
PoorBest 
no traduction

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

I PRESENTATION

II SIMATIC MANAGER le couteau suisse de SIEMENS

  1. Création nouvelle application

  2. La stationSimatic

  3. La configuration matérielle

III LA PARTIE LOGICIEL

  1. Introduction

  2. Un programme en blocs (en cours)

    1. Et c'est quoi cet OB1?

    2. Les DB

    3. Les FC

    4. Les FB

  3. Les variables

  1. Organisation mémoire

  2. Les formats d'adressage

 


 

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 Laughing

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 :t10_1

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 Frown. Vous avez raison! En fait je vais trop vite Surprised. 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 :

  • 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

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.

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.Wink

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 ! Wink


C'est bien joli tout cela mais sur quoi on monte toutes ces cartes ? Frown

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 ??Cry . Nous n'en mettrons pas, je vous rappelle qu'elle est optionnelle.

Voila ce que cela doit vous donner :

 

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é Frown...chaque chose en son temps)

Cliquez donc sur le bouton propriétés:


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? Frown 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]

Un programme en blocs

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é

  • lorsqu'il existe un événement de déclenchement pour un OB d'alarme, mais que l'OB ne peut pas être exécuté car il n'a pas été chargé dans la CPU ;
  • lorsqu'une erreur est apparue lors de l'accès au bloc de données d'instance d'un bloc fonctionnel système ;
  • lorsqu'une erreur est apparue lors de la mise à jour de la mémoire image du processus (module absent ou défaillant).
OB101

Redémarrage:

La CPU exécute une mise en route

après mise sous tension

  • lorsque vous actionnez le commutateur de mode de fonctionnement à partir de STOP "RUN"/"RUN-P"
  • après sollicitation par une fonction de communication
  • après synchronisation en mode multiprocesseur
  • dans un système H, après couplage (uniquement sur la CPU de réserve)
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 Cry ! Vous allez voir c'est simple !! Si si

Adressons ensemble la première information booléenne des zones E, A, M et DB. Cela nous donne :
  • 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 . Embarassed 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 ?Wink

Commentaires
Ajouter un nouveau Rechercher
+/-
Ecrire un commentaire
Nom:
Email:
 
Website:
Titre:
BBCode:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Saisissez le code que vous voyez.
menzou kader |09-03-2008 00:03:52
:kiss: bravo et merci pour tous

je vous admire vous faite du très bon travail dieu vous garde mon ami
mourad |28-04-2008 21:29:02
ou est la suite :?:\\;)
Tarno |17-06-2008 15:21:26
J'émets une réserve sur l'oragnisation de la mémoire. Concrétement elle est ans
l'autre sens, les mots de poids fort et poids faible sont inversés à l'intérieur
d'un MW ou d'un DW.



La strucuture de MD4 par exemple est (dans l'ordre réel):

MW4 - MW6

MB4-MB5-MB6-MB7



Pour mettre à 1 le bit numéro 2 du double mot MD4, il faut mettre le M7.1 à 1.



http://support.automation.siemens.com/WW/llisapi.d
ll?func=cslib.csinfo&objId=29157382&nodeid0=108050
55&load=content&lang=fr&siteid=cseus&aktprim=0&obj
action=csview&extranet=standard&viewreg=WW



Voilà, Tchuss
Phyloo |18-06-2008 11:39:43
Merci pour cette remarque constructive. Vous avez effectivement raison. Je
pensais juste présenter les notions de poids faible et fort seulement en
abordant les différents types de variables utilisées par step 7.
Tarno |19-06-2008 22:19:30
;)

Ca n'enlève rien au travail effectué je pense, ce tuto est vraiment bien fait.
je suis tombé dessus par hasard, mais je regrette pas.

Ma précision sur l'organisation vient du fait que je me suis fait avoir il y a
peu en pensant rater mon programme alors qu'il était correct. Je m'était trompé
en oubliant cette inversion, j'utilisais les mauvais bits. Je pense qu'il est
nécessaire de bien comprendre cette notion dès le début, c'est plus facile
ensuite. C'est mon point de vue :)

Bon courage pour la suite :)
RIGAUD |29-09-2008 16:19:23
Salut,



Effectivement, c'est un tutoriel trés bien fait.



Juste si je peux me permettre, on arrive toujours tant bien que mal, à
programmer un automate de x marque. Là où on a le plus de problème, c'est au
niveau de la mise en service (transfert programme, modification en run ,
sauvegarde, forçage,...)



Si tu peux orienter ton document dans ce sens, çà serait le top



Merci d'avance
izzem |18-03-2009 18:06:49
bonjour, aurais tu l'amabilité de me faire un petit topo sur la gestion de la
memoire (bit,byte,word...)et le chevauchement.
merci.
sfz |14-02-2009 20:23:59
merci bien du tuto ;)
izzem  - renseignement step 7 |19-03-2009 10:15:40
bonjour,

merci pour ce site!!

je ne vois pas sur cette page le schéma censé expliquer l\'organisation de
la mémoire. Si qu\'un peu m\'expliquer brièvement ça serait cool merci
d\'avance

peace.
rachid  - bravooooooo |21-05-2009 09:54:54
un grand bravo



le site est tres bien fait



et merci d'avoir eu la patience et le courage nécessaires à la réalistion de ce
travail
Charentais  - Analyse fonctionnelle |30-06-2009 11:40:39
Merci pour ce travail qui m'apporte beaucoup d'infos.

Une solution simple pour faire l'analyse fonctionnelle d'un programme existant?

Si quelqu'un a des idées?

Merci à l'anvance
phyloo  - Une piste... |30-06-2009 12:27:28
Bonjour! Vous pouvez commencer par éditer la structure de votre programme ,elle
vous indiquera la hiérarchie des différents appels de blocs. Vous pourrez alors
avoir ainsi une idée plus précise de l'architecture générale du programme.

La commande pour obtenir ces infos est :
[OUTILS][DONNEES DE REFERENCE][GENERER]
:whistle: Remarque:Ce menu n est accessible que si le "répertoire" BLOC est sélectionné.
;)
Charentais  - re: Une piste... |30-06-2009 16:01:25
Merci pour la réponse précise mais je n'arrive pas à éditer la structure du
programme.

Help!
Anonyme  - re: re: Une piste... |01-07-2009 15:17:41
Une fois généré les données de références > afficher structure du programme.


Et voilà! merci pour cette aide.
rahim  - remerciment |28-11-2009 13:55:32
tu vien de me sauvé la vie merci bien frero
hakim |22-01-2010 16:57:58
1000 merci
Taybi  - Chomeur |03-02-2010 15:28:22
On reste sur sa faim! Dommage. A quand la suite?

Grand merci, un super boulot.
phyloo  - Bientot.. |03-02-2010 17:22:51
Merci pour le compliment. La suite est pour bientot...en fait je suis pas mal
débordé depuis quelque temps...et pourtant il parait que c'est la crise! B)

!joomlacomment 4.0 Copyright (C) 2009 Compojoom.com . All rights reserved."

Last Updated on Wednesday, 03 February 2010 12:38  


World statistics

Top 10:
Unknown flag 37%Unknown (157)
Network flag 15%Network (63)
France flag 14%France (60)
 flag 10% (41)
Commercial flag 7%Commercial (29)
Belgium flag 5%Belgium (20)
Israel flag 3%Israel (14)
Ukraine flag 2%Ukraine (7)
Germany flag 1%Germany (6)
Russian Federation flag 1%Russian Federation (5)
421 visits from 26 countries