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

MW2
faible)
MD1

correspond au 16 bits constitu par les octets 2 (poids fort) et 3 (poids

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

...
MB 1024

1.3

Plages dadressage

Bit
Octet
Mot
Double mot

0.0 65535.7
0 65535
0 65534
0 65532

MW 0
MW 1
MW 2
MW 3

MD 1

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

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

Ecrire des bits


=
S
R

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

LOGigramme
E 32.0
E 32.1

&

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

CONTact

A 32.4

E 32.0 E 32.1 A 32.4


( )

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

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

E 1.2
E 1.3
M 10.4
A 4.5

:U
:U
:S

E 1.5
E 1.6
M 20.2

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 :

er

:U E 1.4
:UN E 1.6
:= A 4.5

1 ?
1
0
0

ETAT
1
0
1

RLG
1
1
RLG = RLG prcdant ET PAS ETAT
1
A 4.5 prend la valeur du RLG

:O E 1.5

:ON E 1.6
:SE T 5

0
0

0
1

1
1

ACCU 1
0030
0032

ACCU 2
?
0030

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

:L MW 10
:L LF +50
:>F
:= A 4.7
4.4

Instructions sur Rsultat Logique


SAVE
SET
CLR
NOT

4.5

er

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

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

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

4.7

: Overflow mmoris, ce bit reste mmoris jusqu la prochaine opration.

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

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

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

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

OB 20 OB 23

Alarme dhorloge

OB 30 OB 38

Alarme process

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

Alarme diagnostic

OB 82

Pour module avec fonction diagnostic


Alarme de dbrochage et enfichage

OB 83

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

Dfaillance de profile

OB 86

Dfaillance dune station centralise ou dcentralise


Erreur de communication

OB 87

Erreur de communication par donnes globales


OB de raction aux erreurs synchrones
Erreur de programmation
OB 121

Erreur de conversion
Bloc charg

Erreur daccs la priphrie

OB 122

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

// Charge la hauteur
// Charge la largeur
// Multiplie en nombre rel
// Transfert dans surface

#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

ACCU 2

Oprations arithmtiques
ACCU1 = ACCU2 op ACCU1
+
I, D, R
Addition
I, D, R
Soustraction
*
I, D, R
Multiplication
/
I, D, R
Division

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
+F
T MW10

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

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

ACCU3

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

// 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

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.


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

SE
SA
SS
reset
SI
SV
______V

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

FR
L
LC
R

Tester ltat de la tempo


Eventuellement tester la valeur courante de la tempo

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
=

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

T4
A 32.7

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

T4
25

Charger la valeur courante de la tempo


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

M 10.4

Reprsentation graphique en contact ou logigramme


Forme complte
T4
E 32.7
T
0
S5T#5

TW

Forme simplifie
T4

DUAL
DEZ

SE

Valeur courante en binaire


Valeur courante en BCD
S5T#5S TW

Raz de la tempo

A 32.7

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

Forme simplifie

DUAL Valeur courante en BCD


DEZ Valeur courante en binaire

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

Z5
ZV

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

Conversion BCD  binaire 16 bits


Conversion BCD  binaire 32 bits
Conversion entier  BCD
 entier 32 bits
Conversion entier 16 bits
Conversion entier 32 bits  BCD 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

Saut si RLG =1 vrai


Saut si RLG = 0

SPBNB
LOOP

Saut si pas vrai


Boucle de programme

SPBB

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

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

taill
e
1

BYTE
WORD
DWORD
INT
DINT
REAL
S5TIME

8
16
32
16
32
32
16

TRUE ou
FALSE
B#
W#
DW#
rien
L#
rien
S5T#

32
16
32
64
8
48

T#
D#
TOD#
DT#

P#

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

Symbole

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

e
12 -5

12 x 10 -5

L#254 789

Type DINT, La valeur 254 789 tient sur 32 bits

S5T#35S

Dure de tempo = 35 secondes

S5T#35S_10MS

Dure de tempo = 35 seconde et 10 milisecondes

T#21H_3M_5S

Dure = 21 heures, 3 minutes et 5 secondes

B#16#A5

Type BYTE, Base 16, valeur = A5

W#2#10010110111

Type WORD, Base 2, valeur 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

5
5
5
5

4
4
4
4

3
3
3
3

2
2
2
2

DBX 5.0
1 0 DBB 5
1 0 DBB 6
1 0 DBB 7
1 0 DBB 8

DBW 5 ( 16 bits )

DBD 5 ( 32 bits )

DBW 6 ( 16 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

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

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

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

Quartet fort
8
8
8
8
8
8

Quartet faible
1
2
3
4
5
6

N Bit

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

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];

L
T
L
T
L
T
L
T
L
T

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