Vous êtes sur la page 1sur 40

NOTICE DE PROGRAMMATION DAUTOMATES SIEMENS S7 300 S7 400

Ecrit par Alain Malvoisin

AMS720090001 Programmation des automates Siemens S7-300/400

Page 1/1

PROGRAMMATION

AMS720090001 Programmation des automates Siemens S7-300/400

Page 2/2

SOMMAIRE I. / LES VARIABLES DE LAUTOMATE ..................................................................................3 1.1 Types de variables ............................................................................................................3 1.2 Adressage des variables .................................................................................................4 1.3 Plages dadressage ...........................................................................................................4 II. / SAISIS DES MNEMONIQUES ............................................................................................5 III. / INSTRUCTIONS SUR BITS .............................................................................................6 IV. / LES FLAGS .........................................................................................................................8 4.1 Ltat logique ......................................................................................................................8 4.2 La premire interrogation .................................................................................................8 4.3 Le RLG Rsultat LoGique ................................................................................................9 4.4 Instructions sur Rsultat Logique....................................................................................9 4.5 Le OU ..................................................................................................................................9 4.6 Les bits de debordements ..............................................................................................10 4.7 LES FLAGS BI1 et BI0 ...................................................................................................10 V. / ASSISTANT INSTRUCTIONS DE PROGRAMME ..........................................................11 VI. / STRUCTURE DUN PROGRAMME .............................................................................12 6.1 Excution cyclique dun programme OB1 ...................................................................12 VII. / LES BLOCS DE CODE ...................................................................................................13 VIII. / LES BLOCS DORGANISATION...................................................................................14 IX. / CONSTITUTION DUN BLOC DE PROGRAMME .....................................................16 X. / INSTRUCTIONS SUR MOTS ............................................................................................18 XI. / LES REGISTRES DU PROCESSEUR ..........................................................................20 XII. / LES TEMPORISATEURS...............................................................................................21 XIII. / LES COMPTEURS ..........................................................................................................23 XIV. / INSTRUCTIONS COMPLEMENTAIRES .....................................................................25 14.1 Oprations arithmtiques sur ACCU1 ..........................................................................25 14.2 Oprations de conversion sur ACCU1 .........................................................................25 14.3 Dcalages .........................................................................................................................26 14.4 Les oprateurs de saut ...................................................................................................27 XV. / REPRESENTATION DES NOMBRES .........................................................................28 15.1 Les types de donnes.....................................................................................................28 15.2 Les formats de reprsentation ......................................................................................28 XVI. / LES BLOCS DE DONNEES ...........................................................................................30 16.1 Type de blocs de donnes :...........................................................................................30 16.2 Utilisation des blocs de donnes ..................................................................................31 16.3 Utilisation de lditeur de bloc de donnes..................................................................32 XVII. / LES BLOCS DE DONNEES DINSTANCE .............................................................33 17.1 Cration dun DB .............................................................................................................33 XVIII. / ADRESSAGE INDIRECT ZONE MEMOIRE ............................................................34 18.1 Pointeur 32 bits ................................................................................................................34 18.2 Pointeur 16 bits ................................................................................................................35 XIX. / ADRESSSAGE INDIRECT PAR REGISTRE ( AR1 et AR2) .....................................36 XX. / PARAMETRES DE TYPE ANY ......................................................................................37

AMS720090001 Programmation des automates Siemens S7-300/400

Page 3/3 I. / LES VARIABLES DE LAUTOMATE 1.1 Types de variables Zone E : Mmoire image des entres sur bus locale ou bus de terrain tel que PROFIBUS Zone A : Mmoire image des sorties sur bus locale ou bus de terrain tel que PROFIBUS Zone M : Mmoire utilisateur Zone L : Mmoire locale, associe un module de programme Zone P : Accs la priphrie Zone T : Mmoire des temporisations Zone Z : Mmoire des compteurs Zone DB : Mmoire utilisateur ou systme structur dans des blocs de donnes Symbole SIMATIC E EB EW ED A AB AW AD M MB MW MD L LB LW LD PEB PAB PEW PAW PED PAD T Z DBX DBB DBW DBD Dfinition Bits dentre Octet dentre Mot dentre Double mot dentre Bits de sortie Octet de sortie Mot de sortie Double mot de sortie Mmoires utilisateurs (variables auxiliaires) Octet mmoire Mot mmoire Double mot mmoire Bit dans la mmoire locale Octet dans la mmoire locale Mot dans la mmoire locale Double mot dans la mmoire locale Octet de priphrie dentre Octet de priphrie de sortie Mot de priphrie dentre Mot de priphrie de sortie Double mot de priphrie dentre Double mot de priphrie de sortie Temporisation Compteur Bit dans un bloc de donne Octet dans un bloc de donne Mot dans un bloc de donne Double mot dans un bloc de donne Symbole CEI I IB IW ID Q QB QW QD M MB MW MD L LB LW LD

T C

AMS720090001 Programmation des automates Siemens S7-300/400

Page 4/4 1.2 Adressage des variables Les objets E, A, M, DB, PE et PA sont rangs dans des octets ( 8 bits ), on peut accder un BIT, un OCTET, un MOT de 16 bits ou un DOUBLE MOT ( 32 bits ) Exemples : M4.3 correspond au bit 3 de loctet 4, on peut le tester en combinaison ET, OU avec un autre bit, on peut lui affecter le rsultat dune combinaison, on peut le mettre 1 ou 0 . MB4 correspond aux 8 bits de loctet 4, on peut comparer sa valeur, on peut ladditionner, le soustraire, le multiplier, le diviser, on peut lui affecter le rsultat dune opration correspond au 16 bits constitu par les octets 2 (poids fort) et 3 (poids

MW2 faible) MD1

correspond au 32 bits constitu des octets 1, 2, 3 et 4


7 6 5 4 3 2 1 0 MB 0 MB 1 MB 2 MB 3 MB 4 M4.7 M4.3 M4.0 MW 0 MW 1 MW 2 MW 3 MD 1

... MB 1024

1.3

Plages dadressage 0.0 65535.7 0 65535 0 65534 0 65532

Bit Octet Mot Double mot

AMS720090001 Programmation des automates Siemens S7-300/400

Page 5/5 II. / SAISIS DES MNEMONIQUES Saisir les mnmoniques est trs utile, il vaut mieux saisir un programme entirement en symbole quen adressage absolu, cest beaucoup plus lisible et comprhensible. Il suffit daller dans la table des Mnmoniques et y entrer les diffrents lments. Le nom du symbole, sont adresse rel, sont type et sont commentaire Voici un exemple

On peut accder la table des symboles depuis lditeur CONT/LIST/LOG

AMS720090001 Programmation des automates Siemens S7-300/400

Page 6/6

III.

/ INSTRUCTIONS SUR BITS Tester des bits U O UN ON UN( ON( U( O( ) X XN X( XN( FN FP Ecrire des bits = S R

Test un bit en combinaison ET Test un bit en combinaison OU Test un bit en combinaison ET PAS Test un bit en combinaison OU PAS Test un bit en combinaison ET PAS ( Test un bit en combinaison OU PAS ( ET ouvrez la parenthse OU ouvrez la parenthse Fermez la parenthse OU exclusif Identit Test dun combinaison en exclusif ( Test dune combinaison en identit ( Front descendant du RLG Front montant du RLG

Affecte le rsultat logique dun test Mise 1 (mmoire) Mise 0 (mmoire)

AMS720090001 Programmation des automates Siemens S7-300/400

Page 7/7 Exemple : Reprsentation LISTe Fonction ET U E 32.0 UN E 32.1 = A 32.4 E 32.0 E 32.1 & LOGigramme CONTact E 32.0 E 32.1 A 32.4 ( )

A 32.4

Fonction OU avec mise en mmoire :O M 25.4 :ON E 32.3 M 25.4 S >=1 :S M 25.5 E 32.2

M25.5

Fonction Mmoire ( bascule RS ) :U E 1.0 M E 1.0 S 10.4 :S M 10.4 :U E 1.1 R E 1.1 :R M 10.4 :NOP 0 Cette instruction ne fait rien, elle permet la reprsentation graphique :BE Cette instruction indique la fin dun module

AMS720090001 Programmation des automates Siemens S7-300/400

Page 8/8 IV. / LES FLAGS Les flags sont des bits vrais ou faux positionns par certaines instructions dont dpendent dautres instructions. ETAT, 1 ?, RLG, RB, OU, BI1, BI0, OV, OS 4.1 Ltat logique Cest ltat de la variable binaire interroge, la variable est 1 ou 0 4.2 La premire interrogation Ce flag indique le dbut dune opration boolenne, lorsquon crit plusieurs quations boolennes les unes derrires les autres, chaque quation doit dbuter par une premire interrogation, sinon on combinerait lquation en cours avec le rsultat de lquation prcdente. Pour avoir une premire interrogation, il faut limiter lquation prcdente par une instruction. EXEMPLE : :U :UN :U := :U :U :S E 1.2 E 1.3 M 10.4 A 4.5 E 1.5 E 1.6 M 20.2
er

Cette instruction limite lquation ( le RLG ) Cest une premire interrogation Cette instruction limite le RLG

Les instructions qui limitent le RLG sont: = S R SE, SV, SI, SA, SS ZV,ZR Assignation Mise 1 Mise 0 Dmarrage dune temporisation Comptage ou dcomptage dun compteur

Au dmarrage de LOB1 la premire interrogation est 1 , On peut donc commencer une quation boolenne.

AMS720090001 Programmation des automates Siemens S7-300/400

Page 9/9 4.3 Le RLG Rsultat LoGique Ce bit mmorise le rsultat dun test et permet de raliser une combinaison avec linstruction suivante. Exemples : :U E 1.4 :UN E 1.6 := A 4.5 :O E 1.5 :ON E 1.6 :SE T 5 :L MW 10 :L LF +50 :>F := A 4.7 4.4 1 ? 1 0 0 1 0 0 ACCU 1 0030 0032
er

ETAT 1 0 1 0 0 1 ACCU 2 ? 0030

RLG 1 1 RLG = RLG prcdant ET PAS ETAT 1 A 4.5 prend la valeur du RLG 0 1 1 Cest une 1 interrogation donc on ne combine pas avec le RLG prcdent RLG = RLG prcdent OU PAS ETAT Dmarre la tempo T5 si RLG = 1
er

RLG 1 Les accus sont reprsents en HEXA 1 0 LACCU2 nest pas > lACCU1 0 A 4.7 prend la valeur du RLG

Instructions sur Rsultat Logique SAVE SET CLR NOT Sauvegarde le Rsultat logique dans le bit RB, pour tester le RB on utilise linstruction : U BIE Mise 1 inconditionnel du RLG Mise 0 inconditionnel du RLG Complment du RLG

4.5

Le OU

Ce flag permet de mmoriser le rsultat de la combinaison prcdente pour la combiner en OU avec la combinaison suivante. Exemple : :U :UN :O :UN :U := 0 E 1.5 E 1.6 E 1.5 E 1.6 A 4.1 1er? 1 0 0 0 0 0 ETAT 1 0 1 0 1 RLG 1 1 1 1 1 1 OU 0 0 1 1 1 0

On mmorise le RLG Le RLG se combine avec le OU = ferme lquation, le OU retombe

AMS720090001 Programmation des automates Siemens S7-300/400

Page 10/10 4.6 Les bits de debordements

OV : Overflow, ce bit passe 1 suite une opration si le rsultat dborde ( sur 16 ou 32 bits), il peut tre test directement ( ex : U OV ) ou utilis pour un saut conditionnel ( SPO ), le bit OV passe 0 automatiquement au cycle suivant OS : Overflow mmoris, ce bit reste mmoris jusqu la prochaine opration.

4.7

LES FLAGS BI1 et BI0

Ces bits donnent des informations sur le rsultat des oprations BI1 BI0 Description 1 0 >0 0 1 <0 0 0 =0 1 1 OU On peut tester ces bits par les instructions U >0 Rsultat positif U <0 Rsultat ngatif U ==0 Rsultat nul U <>0 Rsultat non nul U >=0 Rsultat positif ou nul U <=0 Rsultat ngatif ou nul Ou par des instructions de saut SPMZ SPZ SPPZ SPN Saut si infrieur ou gal 0 Saut si gal 0 Saut si suprieur ou gal 0 Saut si diffrent de 0

AMS720090001 Programmation des automates Siemens S7-300/400

Page 11/11 V. / ASSISTANT INSTRUCTIONS DE PROGRAMME

Menu Affichage puis Catalogue

On utilise beaucoup lassistant quand on programme en Contact ou en Logigramme, cela permet de savoir quel sont les instructions disponibles.

AMS720090001 Programmation des automates Siemens S7-300/400

Page 12/12 VI. / STRUCTURE DUN PROGRAMME

6.1

Excution cyclique dun programme OB1 Le programme est crit dans diffrents modules, chaque module traitera une fonction de l'automatisme Exemple : FC 10 Gestion de la table tournante FC 15 Dpileur de palettes etc. FC 10 :U : UN :S :U :R

Automate en RUN

Lecture des tats des cartes d'entres, rangement dans la mmoire image E Excution du programme de L 'OB1 appel des modules : CALL FC10 : CALL FC15 : CALL FC10 : CALL FC50 Par programme, on crit dans la mmoire image A :U E 2.3 := A 32.5

E 3.0 E 3.1 M 10.4 E 3.3 M 10.4

FC 15 :0 M 5.0 : UN M 3.1 := M 25.7 : BE

Mise jour des cartes de sorties depuis la mmoire image A

Il y a aussi des programmes qui ne sont pas cycliques et qui interrompent lOB1, ce sont dautres blocs dorganisations. Comme les OB dhorloge ou comme les OB de raction aux erreurs voir le chapitre VIII

AMS720090001 Programmation des automates Siemens S7-300/400

Page 13/13 VII. / LES BLOCS DE CODE

Les OB

Blocs dorganisation

OB 1 OB 225

Dterminent la structure du programme utilisateur. Les OB sont directement appels par le systme dexploitation de la CPU en raction un vnement ( condition toutefois de les avoir programm et insrs dans lautomate). Ils contiennent en gnral peut dinstructions, essentiellement des appels de blocs FC, FB Les FB et FC Fonctions et Blocs fonctionnels

Ce sont des fonctions crites en LIST, CONTACT ou LOGIGRAMME,. Ils peuvent recevoir des paramtres dentres de sorties On peut y dclarer des variables locales temporaires Les blocs FB peuvent contenir des variables statiques qui sont sauvegards dans un DB dinstance.

Les FB et FC sadaptent particulirement bien la programmation de fonction rcurrentes Contrairement aux FC, les FB sont des blocs avec mmoire, les paramtres transmis aux FB sont sauvegards dans un bloc de donne dinstance Les SFB et SFC Fonctions systme et Blocs fonctionnels systme Ce sont des blocs tout prts. Il sont intgrs la CPU S7 et ne peuvent tre programms par lutilisateur. Les blocs de code (OB, FB, FC) peuvent tre chargs dans la CPU S7, ils sont soit crer et diter directement dans des diteurs incrmentaux, soit ils rsultent de la compilation de source

AMS720090001 Programmation des automates Siemens S7-300/400

Page 14/14 VIII. / LES BLOCS DORGANISATION Programme de dmarrage OB 100

La CPU effectue une mise en route aprs la mise sous tension Lorsque le commutateur de mode de fonctionnement est commut de STOP RUN A la demande dune fonction de commutation (par commande de menu depuis la PG) Programme cyclique OB 1

Lors dune excution normale de programme, les traitements se font de faon cyclique. Lexcution du programme contenu dans lOB 1 est dmarrer une fois par cycle (quand il est fini, il recommence). On peut se servir de lOB 1 pour appeler des blocs de type FC ou FB. OB de dclenchement sur alarmes Alarmes horaires OB 10 OB 17 Alarmes temporiss Alarme dhorloge Alarme process OB 20 OB 23 OB 30 OB 38 OB 40 OB 47

AMS720090001 Programmation des automates Siemens S7-300/400

Page 15/15 OB de raction aux erreurs asynchrones Erreur de temps OB 80 Dpassement du temps de cycle Erreur dalimentation OB 81

Pile de sauvegarde manquante ou tension insuffisante Dfaillance de lalimentation 24V dans le chassis de base ou dextension OB 82 OB 83

Alarme diagnostic Pour module avec fonction diagnostic Alarme de dbrochage et enfichage Dbrochage ou enfichage de module Erreur matrielle sur CPU OB 84

Erreur sur une interface de la CPU (Rseau MPI, bus K) Erreur dexcution de programme OB 85 Erreur daccs un bloc Erreur daccs aux mmoires images E/S OB 86 OB 87

Dfaillance de profile Erreur de communication

Dfaillance dune station centralise ou dcentralise Erreur de communication par donnes globales OB de raction aux erreurs synchrones Erreur de programmation OB 121 Erreur de conversion Bloc charg OB 122

Erreur daccs la priphrie

Erreur daccs en lecture ou en criture la priphrie

AMS720090001 Programmation des automates Siemens S7-300/400

Page 16/16 IX. / CONSTITUTION DUN BLOC DE PROGRAMME

Dans cette zone on peut dclarer des paramtres dentres, de sortie, dentres et sortie, ainsi que des variables temporaires qui ne sont accessible que par ce bloc Tous ces paramtres sont facultatifs

Le menu Affichage permet de changer la reprsentation

Reprsentation en contact

Reprsentation en LIST

AMS720090001 Programmation des automates Siemens S7-300/400

Page 17/17 Paramtrage des Fonctions et Blocs fonctionnels Description Paramtre / variables IN Paramtre dentre dont la valeur est fournie par le bloc de code appelant OUT Paramtre de sortie dont la valeur est fournie par le bloc de code appel IN_OUT Paramtre dont la valeur est fournie aprs le bloc de code appel STAT Variable statique contenue dans un DB dinstance TEMP Variable temporaire range dans la pile des donnes locales. Les valeurs de ces variables sont perdues une fois lexcution du bloc acheve.

Autoris pour FB, FC FB, FC FB, FC FB FB, FC, OB

EXEMPLE

Pour utiliser un paramtre de bloc dans un programme, on doit le faire prcder du symbole # , exemple : :L :L :*R :T #hauteur #Largeur #Surface // Charge la hauteur // Charge la largeur // Multiplie en nombre rel // Transfert dans surface

TYPE DES PARAMETRES : Les paramtres peuvent tre des types simples tel que BYTE, BOOL, WORD, INT, DINT, REAL, S5TIME, etc. Ou de types complexes tel que : TIMER, COUNTER, BLOCK_OB, BLOCK_FB, BLOCK_FC, BLOCK_DB Ou de type tableau Ou du type structure ARRAY[1..X] STRUCT

AMS720090001 Programmation des automates Siemens S7-300/400

Page 18/18 X. / INSTRUCTIONS SUR MOTS Les oprations sur mots ne peuvent se faire que par lintermdiaire des accumulateurs, les automates disposent de 2 4 ACCU de 16 64 bits suivant le modle dUC. ACCU 1 Oprations arithmtiques ACCU1 = ACCU2 op ACCU1 + I, D, R Addition I, D, R Soustraction * I, D, R Multiplication / I, D, R Division ACCU 2

L MW10 L 25 +F T MW10

Comparaison des ACCUS RLG = ACCU2 comp ACCU1 > I, D, R Suprieur < I, D, R Infrieur >< I, D, R Diffrent >= I, D, R Suprieur ou gal <= I, D, R Infrieur ou gal == I, D, R Egal

L MW10 L 25 ==I = M10.4

Le terme I signifie une opration en entier (INT), le terme D signifie une opration en double entier (DINT) et le terme R signifie une opration en rel (REAL) Oprations logiques ACCU1 = ACCU2 op ACCU1 UW UD ET bit bit OW OD OU bit bit XOW XOD OU EXCLUSIF bit bit

L MW10 L W#16#000F UW T MW10

Le terme W signifie une opration en mot (WORD) de 16 bit et le terme D signifie une opration en double mot (DWORD) de 32 bit

AMS720090001 Programmation des automates Siemens S7-300/400

Page 19/19

Oprations de conversions (voir 14.2) ACCU1 = op ACCU1 BTI BCD vers entier DTR Mot double entier vers flottant SLW n Dcalage gauche SRW n Dcalage droite

Exemple L MW10 SLW 8 T MW10

Remarque : la lettre I indique que lopration se fait sur un nombre entier (INT) de 16 bits, D un nombre entier sur 32 bits (DINT), R un nombre rel (REAL) sur 32 bits. Charger des valeurs dans les accumulateurs Pour charger une valeur dans lACCU 1 on utilise linstruction L, lorsquon charge lACCU1, lancienne valeur de lACCU1 se place dans lACCU 2. Exemple : MW10 = 5 L MW10 L 7 +F T MW14

ACCU1 5 7 12 12

ACCU2 ? 5 5 5

On charge 5 dans lACCU1 On charge 7 dans lACCU1 On fait la somme ACCU2 + ACCU1 Transfert de lACCU1 dans MW14

AMS720090001 Programmation des automates Siemens S7-300/400

Page 20/20 XI. / LES REGISTRES DU PROCESSEUR Il y a 4 accumulateurs 32 bits , ACCU1, ACCU2, ACCU3, ACCU4 Les instructions sur ACCU sont : L T TAK ENT LEAVE PUSH POP TAW TAD Chargement de laccu1 Transfert de laccu 1 Permutation de laccu1 avec laccu2 Transfert de laccu2 dans Accu3 et accu3 dans Accu4 Transfert de laccu4 dans Accu3 et Accu3 dans Accu2 Accu1 -> Accu2 -> Accu3 -> Accu4 Accu4 -> Accu3 -> Accu2 -> Accu1 Inversion des mots poids faible, poids fort de laccu1 Inversion des mots double poids faible, poids fort de laccu1

Exemple de programme : soit raliser lopration suivante: (MW5 + 12) / (MW15 MW10) ACCU1 :L :L :+I :TAK :ENT :L :L :-I : :/I :T MW5 12 ACCU2 ACCU3 // Charge MW5 // Charge la valeur 12 // Additionne les accus // Inverse ACCU1 et ACCU2 // Dplace l'ACCU2 vers ACCU3 // Charge MW15 dans ACCU1 // Charge 10 dans ACCU1 //Soustraits MW10 de MW15 // Laccu 3 remonte dans lACCU 2 // Divise Accu2 par accu1 // Transfert le rsultat dans MW20

MW5 12 MW5+12 ? ? MW15 MW15 MW10 MW10 MW15-MW10 MW20

? ? MW5 ? ? ? MW5+12 . ? MW5+12 MW5+12 ? MW5+12 MW15 MW5+12 MW5+12 ?

Remarque: A la place de TAK puis ENT on aurait put utiliser PUSH puis PUSH (nouvelle instruction qui n'existait pas sur Siemens S5). L'ACCU3 remonte automatiquement dans l'ACCU2 la suite d'une opration (+, -, *, /), L'ACCU3 ne se charge pas automatiquement, il faut une instruction comme ENT ou PUSH Il y a aussi deux registres d'adressage indirect AR1 et AR2 voir XIX

AMS720090001 Programmation des automates Siemens S7-300/400

Page 21/21 XII. / LES TEMPORISATEURS

Les temporisateurs sont des mots de 16 bits reprsents par la lettre T. SE SA SS reset SI SV ______V Diffrents temporisateurs T_____0 Retard lenclenchement ( tempo travail ) 0_____T Retard au dclenchement ( tempo repos ) T_____S Retard lenclenchement puis mmorisation ltat 1 , faire un Limiteur dimpulsion Gnrateur dimpulsion ( Monostable )

Principe 1 Charger une valeur dans lACCU1 2 Dmarrer la tempo ( lACCU1 se range dans la tempo ) 3 La valeur de la tempo dcompte jusqu 0, au rythme dune base de temps Les bases de temps sont 0 10 ms 1 100 ms 2 1 sec. 3 10 sec 4 5 Tester ltat de la tempo Eventuellement tester la valeur courante de la tempo

FR L LC R

Les instructions de temporisation Valider (nest pas utile) Charger lACCU 1 avec la valeur binaire pure du compteur Charger LACCU 1 avec la valeur BCD du compteur Entre de remise zro

AMS720090001 Programmation des automates Siemens S7-300/400

Page 22/22 Exemple : L S5T5s U E 32.7 SE T4 lACCU 1 U = Facultatif L L >F = T4 A 32.7 T4 25 M 10.4

Charger lACCU1 avec une valeur de tempo 5 sec Tester une condition de dmarrage de la tempo Dmarrage de la tempo avec la valeur contenue dans

Tester ltat de la tempo (si = 1 tempo coule)

Charger la valeur courante de la tempo Charger la valeur 25 Tester si valeur courante > 25 Affecter le rsultat au bit M 10.4

Reprsentation graphique en contact ou logigramme Forme complte T4 E 32.7 T 0 S5T#5 TW DUAL DEZ Valeur courante en binaire Valeur courante en BCD S5T#5S TW Raz de la tempo R Q A 32.7 Forme simplifie T4 SE

AMS720090001 Programmation des automates Siemens S7-300/400

Page 23/23 XIII. / LES COMPTEURS

Dans les automatismes, on est souvent amen compter ( Nb de tour, Nb de paquets, Nb de palette, Nb de peses etc... ) Les compteurs sont des mots de 16 bits reprsents par la lettre Z, ils peuvent voluer de 000 999, il y a 128 mots pour 128 compteurs ( Z 0 Z 127 ). ZV ZR R S L LC FR Diffrents types de compteurs les compteurs dincrmentation et de dcrmentation, les compteurs dincrmentation compteurs de dcrementation. Les instructions de comptage / dcomptage Entre dincrmentation Entre de dcrmentation RAZ compteur Initialisation du compteur la valeur contenue dans lACCU1 Charger lACCU 1 avec la valeur binaire pure du compteur Charger LACCU 1 avec la valeur BCD du compteur Valider

Exemple :U E 2.5 :ZV Z 5 : :U E 2.6 ZR Z5 : :L Z5 :L KF + 50 :>=F :R Z5 : : :UN Z 5 := A 7.2

Si condition de comptage ( capteur par exemple ) Compter + 1 ( Le comptage se fait sur front montant du RLG ) Si condition de dcomptage Enlever 1 Charger dans lACCU 1 la valeur courante du compteur Charger la valeur 50 dans lACCU1 ( Z5 passe dans lACCU2 ) Si Z 5 suprieur ou gal 50 Mettre le compteur 0

Si compteur vaut 0 Signale compteur vide

AMS720090001 Programmation des automates Siemens S7-300/400

Page 24/24 Reprsentation graphique en contacts ou logigramme Forme complte Z5 ZV E 2.5 Entre de dcomptage Entre d'initialisation Valeur d'initialisation M 50.1 ZR S ZW R DUAL Valeur courante en BCD DEZ Valeur courante en binaire

Forme simplifie Z5 ZV

Q Etat du compteur = "0" si compteur = 0

AMS720090001 Programmation des automates Siemens S7-300/400

Page 25/25

XIV. / INSTRUCTIONS COMPLEMENTAIRES 14.1 Oprations arithmtiques sur ACCU1 SQRT SQR LN EXP SIN COS TAN ASIN ACOS ATAN Racine carr carr Logarithme naturel Exponentiel Sinus Cosinus Tangente Arc Sinus Arc Cosinus Arc Tangente

14.2 Oprations de conversion sur ACCU1 BTI BTD ITB ITD DTB DTR RND RND+ RNDTRUNC INVI INVD NEGI NEGD NEGR binaire 16 bits Conversion BCD Conversion BCD binaire 32 bits Conversion entier BCD Conversion entier 16 bits entier 32 bits BCD 32 bits Conversion entier 32 bits Conversion entier 32 bits rel Arrondi au plus proche Arrondi entier suprieur Arrondi entier infrieur Tronquer une partie entire Complment 1 sur 16 bits Complment 1 sur 32 bits Complment 2 sur 16 bits Complment 2 sur 32 bits Inversion dun nombre rel

AMS720090001 Programmation des automates Siemens S7-300/400

Page 26/26 14.3 Dcalages SLWn SLW SLDn SLD SRWn SRW SRDn SRD SSIn SSI SSD SSDn RLDn RLD RRDn RRD RLDA RRDA Dcalage gauche 16 bits Dcalage gauche 16 bits dfini dans ACCU 2 Dcalage gauche 32 bits Dcalage gauche 32 bits dfini dans ACCU 2 Dcalage droite 16 bits Dcalage droite 16 bits dfini dans ACCU 2 Dcalage droite 32 bits Dcalage droite 32 bits dfini dans ACCU 2 Dcalage arithmtique droite 16 bits Dcalage arithmtique droite 16 bits dfini dans ACCU 2 Dcalage arithmtique droite 16 bits Dcalage arithmtique droite 16 bits dfini dans ACCU 2 Rotation gauche 32 bits Rotation gauche 32 bits dans ACCU 2 Rotation droite 32 bits Rotation droite 32 bits dans ACCU 2 Rotation dun bit vers la gauche sur 33 bits Rotation dun bit vers la droite sur 33 bits

AMS720090001 Programmation des automates Siemens S7-300/400

Page 27/27 14.4 Les oprateurs de saut SPA SPL Exemple : Saut inconditionnel une tiquette Saut vers liste (quivalent 1 case)

:L MB100 (MB 100 : variable a tester) :SPL LIST :SPA CAS0 :SPA CAS1 :SPA CAS2 LIST :SPA ELSE CAS0 : :SPA FIN CAS1 : :SPA FIN CAS2 : :SPA FIN FIN SPB SPBN SPBB SPBNB LOOP Exemple : :L +5 // Init de la boucle FOR , 5 fois SUIV :T MB10 : // instructions qui seront excuts 5 fois :L MB10 // Charge le compteur de boucle :LOOP SUIV // Dcrmente lACCU1 et saute Saut si pas vrai Boucle de programme : Saut si RLG =1 vrai Saut si RLG = 0

AMS720090001 Programmation des automates Siemens S7-300/400

Page 28/28 XV. / REPRESENTATION DES NOMBRES Les nombres sont des valeurs binaires constitus de 1 et de 0 , on peut reprsenter ces nombres sous diffrentes formes, de manire faciliter leurs lecture, il est par exemple plus comprhensible de lire 25 que sa reprsentation binaire 11001 , ou si on veut reprsenter un code ASCII il sera plus facile de lire A que son code binaire 100 0000 , etc.
Forme gnrale dcriture dune valeur

<Symbole de type> <Symbole de format> <Valeur> 15.1 Les types de donnes Type Syntaxe de dclaration du type BOOL Bit BYTE WORD DWORD INT DINT REAL S5TIME Octet Mot Double mot Entier Entier long Rel Dure de temporisation TIME Dure au standard CEI DATE Date au standard CEI TIME_OF_DAY Heure du jour DATE_AND_TIME Date et Heure CHAR Caractre ASCII POINTER Pointeur taill e 1 8 16 32 16 32 32 16 32 16 32 64 8 48 Symbole TRUE ou FALSE B# W# DW# rien L# rien S5T# T# D# TOD# DT# P#

15.2 Les formats de reprsentation Format Reprsentation Exemples Dcimal 214, -58 Hexadcimal 16# 16#5FA2 Binaire 2# 2#1001101011 BCD C# C#5798 Rel 12.21 -458e-24 Dure de H_M_S_MS 2H_50M_35S_12MS tempo 5S Dure CEI D_H_M_S_MS 4D_11H_18M_50S_254M S Date CEI aaa-mm-jj 1998-12-28 Heure hh:mm:ss 10:32:50 Date et Heure aaaa-mm-jj1998-10-25-07:15:00 hh:mm:ss Caractre A, B, * etc.

Commentaires

La valeur doit tre BCD -458 x 10-24

Dure en milisecondes

AMS720090001 Programmation des automates Siemens S7-300/400

Page 29/29 Exemple de reprsentation des valeurs :

W#16#FA5C 15 245

Type WORD, Base 16, Valeur hxa FA5C La valeur dcimale - 15 245 12 x 10 -5 Type DINT, La valeur 254 789 tient sur 32 bits Dure de tempo = 35 secondes Dure de tempo = 35 seconde et 10 milisecondes Dure = 21 heures, 3 minutes et 5 secondes Type BYTE, Base 16, valeur = A5 Type WORD, Base 2, valeur 10010110111

e 12 -5

L#254 789 S5T#35S S5T#35S_10MS T#21H_3M_5S B#16#A5 W#2#10010110111

AMS720090001 Programmation des automates Siemens S7-300/400

Page 30/30 XVI. / LES BLOCS DE DONNEES Il sagit de zones de donnes utilises par les zones de code de programme utilisateur pour sauvegarder des valeurs. Les blocs de donnes contiennent des octets DBB, 2 octets conscutifs forme un mot DBW, 4 octets forme un double mot DBD DBX 5.7 7 6 7 6 7 6 7 6 DBX 5.0 1 0 DBB 5 1 0 DBB 6 1 0 DBB 7 1 0 DBB 8

5 5 5 5

4 4 4 4

3 3 3 3

2 2 2 2

DBW 5 ( 16 bits ) DBW 6 ( 16 bits )

DBD 5 ( 32 bits )

X : Reprsente un bit, B : un octet, W : un mot, D : un double mot 16.1 Type de blocs de donnes :
Les Blocs de donnes globaux

Blocs de donnes auxquels peuvent accder tous les blocs du code du programme utilisateur S7. Toutes FB, FC ou OB peut y lire, ou craser des donnes.
Les Blocs de donnes dinstance

Les bloc de donnes dinstances sont des blocs ordinaires, dans lesquels sont stocks tous les paramtres dun FB, chaque fois quon appel un FB on doit prciser quel est le DB dinstance, il peut y avoir plusieurs DB dinstance pour un mme FB. Les donnes sont locales.

AMS720090001 Programmation des automates Siemens S7-300/400

Page 31/31

16.2 Utilisation des blocs de donnes On peut utiliser les octets ( ou mot ou double ou bits ) de donnes de deux manires, soit en dclarant le DB au pralable grce linstruction AUF DB soit en prcisant le nom du DB devant la variable. Exemple : // Ouverture pralable dun DB :AUF DB 10 Dclare le DB 10 ouvert :L DW 50 Ajouter 5 au mot DW 5 du DB 10 :L 5 :+F :T DW 50 : :L DW 2 Comparer le mot 2 du DB 10 la valeur 25 :L 25 :<F := M 10.4 : // On accde la variable en prcisant le DB :L DB20.DBW 2 Charger le DBW 2 du DB 20 :T DB25.DBW 2 Le ranger dans le mot DBW 2 du DB 25 : : :L DB25.DBB 8 Charger loctet DBB 8 du DB 25 :T DB25.DBB 6 Le ranger dans le DBB 6 du DB 25 : :U DB25.DBX 200.4 Tester le bit 4 de loctet DBB200 du DB 25 := M 120.0 : :L blocDB .ref Accs au champs ref du bloc de donnes dont le symbole est blocDB : : AUF DI 4 Ouvre le DB dinstance 4, voir chapitre suivant

AMS720090001 Programmation des automates Siemens S7-300/400

Page 32/32 16.3 Utilisation de lditeur de bloc de donnes On a accs tout les types de donnes INT, DINT, WORD, DWORD , REAL, BOOL, S5TIME POINTER, TIME, CHAR etc.. On a accs aux structures STRUCT Chaque variable dans un DB contient un nom, un type, un commentaire, mais vous pouvez aussi leur affecter une valeur par dfaut

On accde une variable soit par sont adresse dfini sur la colonne de gauche, par exemple DBW14 correspond la variable mini soit par son nom par exemple Nb correspond au Nombre Mesure Supposons que ce DB soit le DB25 DB25.Nb donne accs au Nombre Mesure DB25.TachyTremie1.mini donne accs au mini de la structure TachyTremie1

Supposons que le DB25 sappelle lui-mme Mesure Mesure.Nb donne accs au Nombre Mesure Mesure.TachyTremie1.mini donne accs au mini de la structure TachyTremie1

AMS720090001 Programmation des automates Siemens S7-300/400

Page 33/33 XVII. / LES BLOCS DE DONNEES DINSTANCE

Les blocs de donnes dinstance sont affects au FB/SFB au moment de lappel du bloc. Ils sont gnrs automatiquement lors de la compilation. CALL FB CALL FB 10 , DB10 10 , DB11 // Appel le FB 10 avec le DB 10 // Appel le FB 10 avec le DB 11

Les DB dinstances, servent sauvegarder le contexte dun FB entre 2 appels, les paramtres sauvegards sont : IN, OUT, IN_OUT et STATIC, les paramtres TEMP ne sont pas sauvegards. 17.1 Cration dun DB

Lors de la cration dun DB, le systme demande comment on veut le crer : Bloc de donnes: On dfinira chaque valeurs du DB manuellement Bloc de donnes associ un type de donnes utilisateur : le DB se cre automatiquement daprs une dfinition, il faut au pralable crer un UDT Bloc de donnes associ un bloc fonctionnel ( FB ) : le DB se cre automatiquement avec les paramtres du FB, le FB doit exist.

AMS720090001 Programmation des automates Siemens S7-300/400

Page 34/34 XVIII. / ADRESSAGE INDIRECT ZONE MEMOIRE 18.1 Pointeur 32 bits Les espaces mmoires E, A, M, L, DB sont accessibles par un pointeur 32 bits structur de la manire suivante : ZONES E, A, M, L, DBB
a o 0 o 0 o 0 o 0 o t o t o t o 0 o 0 o 0 o 0 o 0 o o b o b o b

a : Mode dadressage ( 0: Indirect intra zone, 1: indirect inter zone ) ttt : Identificateur de zone si a=1 sinon ttt= 000 oooooooooooooooo : N de loctet de 0 65535 bbb : N du bit de 0 7 EX : 00000000000000000000000000010100 = Octet 2, Bit 4 La valeur du pointeur peut tre reprsent sous la forme: P#octet.bit Exemples de programme : (Ces programme ne sont que des exemples dutilisation dadressage) // Le but est tester le bit M 2.4 L P#2.4 // Chargement de la valeur du pointeur T MD100 // Transfert dans le mot MD100 U M[MD100] // Test de M2.4 // Le but est de transferer le Mot DBW40 dans le mot DBW42, on aurait put faire bcp plus simple :L P#40.0 // Chargement de la valeur de pointeur :T MD100 // Transfert dans le pointer MD100 :AUF DB50 // Ouverture du DB 50 :L DBW[MD100] // Lecture du mot DBW40 :L MD100 // Lecture du pointeur MD100 :L P#2.0 // Chargement de la valeur 2.0 :+I // Ajoute :T MD100 // Transfert dans le pointeur MD100 :AUF DB51 // Ouverture DB 50 :T DBB[MD100] // Ecriture du mot DBW42 ( = 40 + 2 )

AMS720090001 Programmation des automates Siemens S7-300/400

Page 35/35 18.2 Pointeur 16 bits Les espaces mmoires T, Z, BLOCS sont accessibles par un pointeur 16 bits structur de la manire suivante : POINTEURS 16 BITS ZONES T, Z, BLOCS ( DB, FB, FC, OB )
0 0 0 0 0 0 0 0 0 0 0 0 0 o o o

Exemple : L 30 T MW80 AUF DB[MW80] U E 0.0 SE T[MW80]

// Charge le N de DB 30 // Transfert dans pointeur MW80 // Ouvre le DB 30 // Teste lentre E 0.0 // Demarre la tempo T 30

AMS720090001 Programmation des automates Siemens S7-300/400

Page 36/36

XIX. / ADRESSSAGE INDIRECT PAR REGISTRE ( AR1 ET AR2) Les registres AR1 et AR2 sont des registres dadresses, ils sont charg par les instructions LAR1 et LAR2 Exemple : LAR1 P#4.5 // Chargement du registre AR1 avec la valeur 4.5 LAR1 P#M34.5 // Chargement du registre AR1 avec la valeur 34.5 et 83h dans le poids fort, le poids fort prcise le type de mmoire ( M = 83h ) Exemple dutilisation des registres AR1 et AR2 LAR1 P#0.0 // Chargement du registre AR1 avec la valeur 0.0 L MB[AR1,P#50.0] // Chargement de loctet dadresse AR1+P#50.0 Exemple de programme Transfert de 10 octets MB 50 59 dans le DB25 de DBB10 DBB 19 :LAR1 P#0.0 // Initialisation du pointeur 0 :L 10 // Chargement valeur boucle = 10 fois BOUC:T MW100 // Transfert dans indice de boucle :L MB[AR1,P#50.0] // Charge MB 50 + AR1 ( MB50 MB59) :AUF DB25 // Ouvre le DB 25 :T DBB[AR1,P#10.0] // Transfert dans DBB 10 + AR1 :+AR1 P#1.0 // Ajoute 1 au pointeur :L MW100 // Charge lindice de boucle :LOOP BOUC // Dcrmente accu1 et boucle tant que > 0

AMS720090001 Programmation des automates Siemens S7-300/400

Page 37/37 XX. / PARAMETRES DE TYPE ANY Le parametre de type ANY une taille de 10 octets, dfinissant le type de donnes, le nombre dlment, le N DU DB, la zone mmoire, le N doctet et le N de bit Toujours = 10h Type de donnes Nombre dlments N de DB ou 0 si pas de DB Zone mmoire (h8x) N doctet Type de donnes : Type Code Hexa BOOL 01 BYTE 02 CHAR 03 WORD 04 INT 05 DWORD 06 DINT 07 REAL 08 DATE 09 TOD 0A TIME 0B S5TIME 0C E DT 0 STRING 13 BLOCK_FB 17 BLOCK_FC 18 BLOCK_DB 19 BLOCK_SDB 1A COUNTER 1C TIMER 1D Zone mmoire Zone E A M DB DI L N Bit

Quartet fort 8 8 8 8 8 8

Quartet faible 1 2 3 4 5 6

AMS720090001 Programmation des automates Siemens S7-300/400

Page 38/38 Exemple dutilisation du parametre ANY en langage source FUNCTION FC 10:VOID VAR_TEMP Source ANY; Destination ANY; END_VAR BEGIN LAR1 P#Source; // Registre dadresse = adresse du parametre #source LAR2 P#Destination; // Registre dadresse = adresse du parametre #destination L T L T L T L T L T L T L T L T L T L T B#16#10; LB [AR1,P#0.0]; B#16#02; LB [AR1,P#1.0]; 10; LW [AR1,P#2.0]; 22; LW [AR1,P#4.0]; P#DBX11.0; LD [AR1,P#6.0]; B#16#10; LB [AR2,P#0.0]; B#16#02; LB [AR2,P#1.0]; 10; LW [AR2,P#2.0]; 15; LW [AR2,P#4.0]; P#DBX50.0; LD [AR1,P#6.0]; // Charge lIdentificateur 10h // Charge le type BYTE // Charge le nombre dlments ( 10 octets ) // Charge le N de DB 22 // Charge le type DB et ladresse 11 // Charge lIdentificateur 10h // Charge le type BYTE // Charge le nombre dlments ( 10 octets ) // Charge le N de DB 15 // Charge le type DB et ladresse 50

// Appel la fonction block move CALL SFC 20 ( SRC_BLK := #Source, RET_VAL := MW12, DST_BLK := #Destination); END_FUNCTION

Vous aimerez peut-être aussi