You are on page 1of 406

s

Avant-propos, Sommaire

SIMATIC

Prsentation du produit

Installation

Dveloppement d'un
programme S7-SCL

Utilisation de S7-SCL

Notions fondamentales dans


S7-SCL

Structure de programme
S7-SCL

Types de donnes

Dclaration de variables
locales et de paramtres

Dclaration de constantes
et repres de saut

S7-SCL V5.3 pour S7-300/400

Manuel

Donnes globales

10

Expressions, oprations
et oprandes

11

Instructions

12

Compteurs et temporisation

13

Fonctions standard de
S7-SCL

14

Description du langage

15

Conseils et astuces

16

Glossaire, Index

Edition 01/2005
A5E00324651-01

Consignes de scurit
Ce manuel donne des consignes que vous devez respecter pour votre propre scurit et pour viter des
dommages matriels. Les avertissements servant votre scurit personnelle sont accompagns d'un
triangle de danger, les avertissements concernant uniquement des dommages matriels sont
dpourvus de ce triangle. Les avertissements sont reprsents ci-aprs par ordre dcroissant de niveau
de risque.

Danger

Attention

Prudence

signifie que la non-application des mesures de scurit appropries entrane la mort ou des blessures
graves.

signifie que la non-application des mesures de scurit appropries peut entraner la mort ou des
blessures graves.

signifie que la non-application des mesures de scurit appropries peut entraner des blessures
lgres.

Prudence
signifie que la non-application des mesures de scurit appropries peut entraner un dommage
matriel.

Important
signifie que le non-respect de l'avertissement correspondant peut entraner l'apparition d'un
vnement ou d'un tat indsirable.
En prsence de plusieurs niveaux de risque, c'est toujours l'avertissement correspondant au niveau le
plus lev qui est reproduit. Si un avertissement avec triangle de danger prvient des risques de
dommages corporels, le mme avertissement peut aussi contenir un avis de mise en garde contre des
dommages matriels.

Personnel qualifi
L'installation et l'exploitation de l'appareil/du systme concern ne sont autorises qu'en liaison avec la
prsente documentation. La mise en service et l'exploitation d'un appareil/systme ne doivent tre
effectues que par des personnes qualifies. Au sens des consignes de scurit figurant dans cette
documentation, les personnes qualifies sont des personnes qui sont habilites mettre en service,
mettre la terre et identifier des appareils, systmes et circuits en conformit avec les normes de
scurit.

Utilisation conforme la destination


Tenez compte des points suivants :

Attention
L'appareil/le systme ne doit tre utilis que pour les applications spcifies dans le catalogue ou
dans la description technique, et uniquement en liaison avec des appareils et composants
recommands ou agrs par Siemens s'ils ne sont pas de Siemens.
Le transport, le stockage, le montage, la mise en service ainsi que l'utilisation et la maintenance Le
fonctionnement correct et sr du produit implique son transport, stockage, montage et mise en service
selon les rgles de l'art ainsi qu'une utilisation et maintenance soigneuses.

Marque de fabrique
Toutes les dsignations repres par sont des marques dposes de Siemens AG. Les autres
dsignations dans ce document peuvent tre des marques dont l'utilisation par des tiers leurs propres
fins peut enfreindre les droits de leurs propritaires respectifs.
Copyright Siemens AG 2005 Tous droits rservs

Exclusion de responsabilit

Toute communication et reproduction de ce document, toute


exploitation ou communication de son contenu sont interdites, sauf
autorisation expresse. Tout manquement cette rgle est illicite et
expose son auteur au versement de dommages et intrts. Tous
nos droits sont rservs, notamment pour le cas de la dlivrance
d'un brevet ou de l'enregistrement d'un modle d'utilit

Nous avons vrifi la conformit du contenu du prsent document


avec le matriel et le logiciel qui y sont dcrits. Ne pouvant
toutefois exclure toute divergence, nous ne pouvons pas nous
porter garants de la conformit intgrale. Si l'usage de ce manuel
devait rvler des erreurs, nous en tiendrons compte et
apporterons les corrections ncessaires ds la prochaine dition.

Siemens AG
Automation and Drives
Postfach 4848, 90327 Nrnberg, Allemagne

Siemens AG 2005
Sous rserve de modifications techniques

Siemens Aktiengesellschaft

A5E00324651-01

Avant-propos
But du manuel
Ce manuel donne une description exhaustive de la programmation avec S7-SCL. Il vous
guidera pour installer le logiciel et le mettre en service. Il explique comment crire des
programmes utilisateur et prsente les diffrents lments de langage.
Il s'adresse aux programmeurs en langage S7-SCL et tous ceux qui travaillent la
configuration, la mise en service et la maintenance des systmes d'automatisation.
Nous recommandons de se familiariser avec l'exemple du chapitre 2 "Conception d'un
programme S7-SCL". Il facilite l'apprentissage de la programmation avec S7-SCL.

Connaissances de base requises


Ce manuel demande l'utilisateur des connaissances gnrales dans le domaine des
techniques d'automatisation. .
Nous supposerons en outre que l'emploi d'ordinateurs ou de machines analogues (telles que
les consoles de programmation) ainsi que l'environnement Microsoft Windows 2000/XP lui
sont familiers et qu'il connat le logiciel de base STEP 7 ainsi que le manuel
"Programmer avec STEP 7 V5.3".

Validit du manuel
Ce manuel s'applique au logiciel S7-SCL V5.3.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

iii

Avant-propos

Documentation de S7-SCL et du logiciel de base STEP 7


Le tableau ci-dessous indique la documentation existante sur STEP 7 et sur S7-SCL :
Manuels

Contenu

S7-SCL Connaissances fondamentales


et rfrences

Notions de base et rfrences


consulter, expliquant l'laboration
S7-SCL pour SIMATIC S7-300/400 : d'un programme, la structure des
programmes utilisateur et les
Programmation de blocs
diffrents lments de langage.

STEP 7 Connaissances
fondamentales

STEP 7 V5.3 - Getting Started

Programmer avec STEP 7 V5.3

Configuration matrielle et
communication avec STEP 7 V5.3

Pour une transition facile de STEP 5


STEP 7

STEP 7 Manuels de rfrence

Langages CONT/LOG/LIST pour


SIMATIC S7-300/400

Fonctions standard et fonctions


systme pour SIMATIC S7-300/400

Notions de base l'adresse du


personnel technique, marche
suivre pour raliser des tches
d'automatisation avec STEP 7 et
SIMATIC S7-300/400.

Numro de rfrence
Le manuel ne peut pas tre
command sparment. Il se
trouve sur le CD livr avec le
logiciel, sur le CD "Manual
Collection" et est disponible
sur Internet.
6ES7810-4CA07-8CW0

Rfrences consulter, compltant 6ES7810-4CA07-8CW1


les bases de STEP 7 par une
description des langages de
programmation CONT, LOG et LIST
ainsi que des fonctions standard et
des fonctions systme.

Aides en ligne

Contenu

Numro de rfrence

Aide de S7-SCL

Notions de base et rfrences de


SCL sous forme d'aide en ligne

Fait partie du logiciel SCL

Aide de STEP 7

Notions de base permettant de


programmer et de configurer le
matriel avec STEP 7, sous forme
d'aide en ligne.

Fait partie du logiciel STEP 7

Aides de rfrence de CONT/LOG/LIST


Aide de rfrence des SFB/SFC
Aide de rfrence des blocs
d'organisation
Aide de rfrence des fonctions CEI
Aide de rfrence des attributs systme

Rfrences contextuelles

Font partie du logiciel STEP 7

iv

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Avant-propos

Aide en ligne
L'aide en ligne vous donne les informations qui vous manquent l'endroit o vous en avez
besoin. De cette manire, vous obtenez trs vite les renseignements pertinents, sans avoir
chercher dans des manuels. Vous disposez des commandes suivantes :
Rubriques d'aide propose la liste des sujets traits dans l'aide ;
Aide contextuelle (touche F1) affiche des informations sur l'objet slectionn ou sur la
bote de dialogue ou la fentre active ;
Introduction donne un aperu de l'application, de ses caractristiques et de sa
fonctionnalit ;
Mise en route rsume les oprations effectuer pour obtenir un premier rsultat ;
Utiliser l'aide dcrit les moyens dont vous disposez pour trouver certaines informations
dans l'aide ;
A propos de renseigne sur la version actuelle de l'application.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Avant-propos

Assistance supplmentaire
Si des questions sont restes sans rponse dans ce manuel, veuillez vous adresser votre
interlocuteur Siemens dans la filiale ou l'agence de votre rgion.
Vous trouvez votre interloculeur sous :
http://www.siemens.com/automation/partner
Vous trouvez un fil rouge pour la recherche de documentations techniques sur les produits
et systmes SIMATIC ladresse suivante sur Internet :
http://www.siemens.com/simatic-tech-doku-portal
Le catalogue en ligne et le systme de commande en ligne se trouvent l'adresse :
http://mall.automation.siemens.com/

Centre de formation SIMATIC


Nous proposons des cours de formation pour vous faciliter l'apprentissage des automates
programmables SIMATIC S7. Veuillez vous adresser votre centre de formation rgional ou
au centre principal D 90327 Nuremberg.

vi

Tlphone :

+49 (911) 895-3200.

Internet:

http://www.sitrain.com

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Avant-propos

Technical Support
Vous pouvez joindre le support technique pour tous les produits A&D
Via le formulaire Web de demande dassistance (Support Request)
http://www.siemens.com/automation/support-request
Tlphone :

+ 49 180 5050 222

Tlcopie :

+ 49 180 5050 223

Vous trouvez plus dinformations concernant notre Technical Support sur Internet ladresse
suivante :
http://www.siemens.com/automation/service

Service & Support sur Internet


En plus de la documentation offerte, vous trouvez la totalit de notre savoir-faire en ligne sur
Internet l'adresse suivante :
http://www.siemens.com/automation/service&support
Vous y trouvez :
le bulletin d'informations qui vous fournit constamment les dernires informations sur le
produit,
les documents dont vous avez besoin l'aide de la fonction de recherche du Service &
Support,
le forum o utilisateurs et spcialistes peuvent changer informations,
votre interlocuteur Automation & Drives sur place,
des informations sur le service aprs-vente, les rparations, les pices de rechange la
rubrique "Service".

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

vii

Avant-propos

viii

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Sommaire
1

Prsentation du produit ...........................................................................................................1-1


1.1
1.2
1.3
1.4

Installation .................................................................................................................................2-1
2.1
2.1.1
2.1.2
2.1.3
2.2
2.2.1
2.2.2

Automation License Manager .....................................................................................2-1


Licence d'utilisation avec Automation License Manager ............................................2-1
Installation de Automation License Manager ..............................................................2-4
Rgles d'utilisation des License Keys .........................................................................2-5
Installation ................................................................................................................... 2-6
Environnement requis .................................................................................................2-6
Installation de S7-SCL.................................................................................................2-6

Dveloppement d'un programme S7-SCL..............................................................................3-1


3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.9.1
3.10
3.10.1
3.10.2
3.10.3
3.11
3.11.1
3.11.2
3.11.3
3.12
3.13

Domaine d'application de S7-SCL ..............................................................................1-1


Fonctionnement de S7-SCL ........................................................................................1-2
Fonctions offertes par S7-SCL ....................................................................................1-4
Nouveauts dans la version V5.3 SP1........................................................................1-6

Bienvenue dans l'exemple pour dbutants "Saisie de valeurs de mesure" ................3-1


Enonc du problme ...................................................................................................3-2
Composition d'un programme structur avec S7-SCL................................................3-4
Dfinition des tches partielles ...................................................................................3-6
Dfinition des interfaces entre blocs ...........................................................................3-8
Dfinition de l'interface d'entre/sortie ......................................................................3-10
Dfinition de l'ordre des blocs dans la source...........................................................3-11
Dfinition des mnmoniques .....................................................................................3-11
Cration de la fontion CARRE ..................................................................................3-12
Section des instructions de la fonction CARRE ........................................................3-12
Cration du FB CALCUL ...........................................................................................3-13
Organigramme de EXPLOITER ................................................................................3-13
Section de dclaration du FB CALCUL.....................................................................3-14
Section des instructions du FB CALCUL ..................................................................3-15
Cration du FB SAISIE..............................................................................................3-17
Organigramme de SAISIR.........................................................................................3-17
Section de dclaration du FB SAISIE .......................................................................3-18
Section des instructions du FB SAISIE .....................................................................3-20
Cration du bloc d'organisation CYCLE....................................................................3-23
Donnes de test ........................................................................................................3-25

Utilisation de S7-SCL ...............................................................................................................4-1


4.1
4.2
4.3
4.4
4.4.1
4.4.2
4.4.3
4.4.4
4.4.5
4.4.6
4.4.7

Dmarrer le logiciel S7-SCL........................................................................................4-1


Interface utilisateur ......................................................................................................4-2
Personnalisation de l'interface utilisateur ....................................................................4-3
Cration et manipulation d'une source S7-SCL ..........................................................4-4
Crer une nouvelle source S7-SCL ............................................................................4-4
Ouvrir une source S7-SCL ..........................................................................................4-5
Fermer une source S7-SCL ........................................................................................4-5
Ouvrir des blocs ..........................................................................................................4-6
Dfinir les proprits de l'objet ....................................................................................4-6
Gnrer des sources S7-SCL avec un diteur standard ............................................4-6
Protection de bloc........................................................................................................4-7

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

ix

Sommaire

4.5
4.5.1
4.5.2
4.5.3
4.6
4.6.1
4.6.2
4.6.3
4.6.4
4.6.5
4.6.6
4.6.7
4.6.8
4.6.9
4.6.10
4.6.11
4.6.12
4.6.12.1
4.6.12.2
4.6.12.3
4.6.12.4
4.6.12.5
4.7
4.7.1
4.7.2
4.7.3
4.7.4
4.7.5
4.8
4.8.1
4.8.2
4.8.3
4.8.4
4.9
4.9.1
4.9.2
4.10
4.10.1
4.10.2
4.10.3
4.10.4
4.10.4.1
4.10.4.2
4.10.5
4.10.5.1
4.10.5.2
4.10.5.3
4.10.5.4
4.10.5.5
4.10.6
4.10.6.1
4.10.6.2

Rgles pour les sources S7-SCL ................................................................................4-8


Rgles gnrales pour les sources S7-SCL ...............................................................4-8
Ordre des blocs ...........................................................................................................4-8
Utilisation de mnmoniques ........................................................................................4-9
Editer dans des sources S7-SCL ..............................................................................4-10
Annuler la dernire action d'dition ...........................................................................4-10
Rtablir une action d'dition ......................................................................................4-10
Rechercher et remplacer des parties de texte ..........................................................4-10
Slectionner des parties de texte..............................................................................4-11
Copier des parties de texte .......................................................................................4-11
Couper des parties de texte ......................................................................................4-12
Effacer des parties de texte ......................................................................................4-12
Positionner le curseur dans une ligne donne ..........................................................4-13
Indentation des lignes selon la syntaxe ....................................................................4-14
Choisir le style et la couleur des caractres..............................................................4-15
Positionnement de signets dans le textes source.....................................................4-16
Insrer des modles..................................................................................................4-17
Insrer des modles de bloc .....................................................................................4-17
Insrer des appels de bloc ........................................................................................4-17
Insrer des modles de commentaire.......................................................................4-17
Insrer des modles de paramtre ...........................................................................4-18
Insrer des structures de contrle.............................................................................4-18
Compiler und programme S7-SCL............................................................................4-19
Informations sur la compilation .................................................................................4-19
Choisir les options de compilation.............................................................................4-20
Compiler le programme.............................................................................................4-22
Crer un fichier d'informations compilation ...............................................................4-22
Eliminer les erreurs aprs la compilation ..................................................................4-23
Enregistrer et imprimer une source S7-SCL .............................................................4-24
Enregistrer une source S7-SCL ................................................................................4-24
Choisir la taille de papier ...........................................................................................4-24
Imprimer une source S7-SCL....................................................................................4-25
Choisir les options d'impression................................................................................4-25
Chargement de programmes ....................................................................................4-27
Effacement gnral de la mmoire de la CPU..........................................................4-27
Charger des programmes utilisateur dans la CPU ...................................................4-27
Test des programmes ...............................................................................................4-29
Fonctions de test de S7-SCL ....................................................................................4-29
Informations sur la fonction de test "Visualiser" ........................................................4-30
Informations sur le test avec points d'arrt / en pas pas........................................4-31
Marche suivre pour la visualisation ........................................................................4-32
Marche suivre pour la visualisation ........................................................................4-32
Dfinition d'un environnement d'appel des blocs ......................................................4-33
Marche suivre pour le test avec points d'arrt .......................................................4-34
Dfinir des points d'arrt ...........................................................................................4-34
Mettre fin au test avec points d'arrt .........................................................................4-34
Activer, dsactiver et effacer des points d'arrt ........................................................4-34
Dfinition d'un environnement d'appel des points d'arrt .........................................4-35
Test en pas pas......................................................................................................4-36
Utilisation des fonctions de test de STEP 7 ..............................................................4-36
Gnrer et afficher les donnes de rfrence ..........................................................4-36
Vrification de la cohrence des blocs......................................................................4-37

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Sommaire

4.11
4.11.1
4.11.2
4.11.3
4.11.4
4.11.5
4.11.6
4.11.7
4.11.8
4.11.9
4.11.10
5

Notions fondamentales dans S7-SCL.....................................................................................5-1


5.1
5.2
5.3
5.4
5.5
5.6
5.7
5.8
5.9
5.10
5.11
5.12
5.13
5.14
5.15

Afficher et modifier les proprits de la CPU ............................................................4-38


Afficher et modifier l'tat de fonctionnement de la CPU............................................4-38
Afficher et rgler la date et l'heure de la CPU...........................................................4-38
Afficher les donnes de la CPU ................................................................................4-39
Lire la mmoire de diagnostic de la CPU..................................................................4-39
Afficher/comprimer la mmoire utilisateur de la CPU ...............................................4-39
Afficher le temps de cycle de la CPU........................................................................4-40
Afficher l'horodatage de la CPU ................................................................................4-40
Afficher les blocs dans la CPU ..................................................................................4-40
Affichage des informations sur la communication de la CPU ...................................4-41
Affichage des piles de la CPU...................................................................................4-41

Interprtation des diagrammes syntaxiques ...............................................................5-1


Jeu de caractres........................................................................................................5-4
Mots rservs ..............................................................................................................5-5
Identificateur ................................................................................................................5-6
Identificateur standard.................................................................................................5-7
Dsignation de bloc.....................................................................................................5-7
Identificateur d'oprande.............................................................................................5-9
Dsignation de temporisation....................................................................................5-10
Dsignation de compteur ..........................................................................................5-10
Nombres ....................................................................................................................5-11
Chane de caractres ................................................................................................5-13
Mnmonique..............................................................................................................5-14
Bloc de commentaire.................................................................................................5-15
Ligne de commentaire...............................................................................................5-16
Variables....................................................................................................................5-17

Structure de programme S7-SCL ............................................................................................6-1


6.1
6.2
6.3
6.4
6.5
6.6
6.7
6.8
6.9
6.10
6.11
6.12
6.13
6.14
6.15
6.16
6.17

Blocs dans les sources S7-SCL ..................................................................................6-1


Ordre des blocs ...........................................................................................................6-2
Composition gnrale d'un bloc ..................................................................................6-3
Dbut et fin de bloc .....................................................................................................6-3
Attributs de bloc...........................................................................................................6-5
Commentaire de bloc ..................................................................................................6-7
Attributs systme pour bloc .........................................................................................6-8
Section de dclaration.................................................................................................6-9
Attributs systme pour paramtre .............................................................................6-10
Section des instructions ............................................................................................6-11
Instructions ................................................................................................................6-12
Composition d'un bloc fonctionnel (FB) ....................................................................6-13
Composition d'une fonction (FC)...............................................................................6-15
Composition d'un bloc d'organisation (OB) ...............................................................6-17
Composition d'un bloc de donnes (DB)...................................................................6-18
Composition d'un type de donnes utilisateur ..........................................................6-21
Options du compilateur dans les sources S7-SCL ...................................................6-23

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

xi

Sommaire

Types de donnes ....................................................................................................................7-1


7.1
7.2
7.2.1
7.2.2
7.2.3
7.2.4
7.3
7.3.1
7.3.2
7.3.3
7.3.4
7.4
7.4.1
7.5
7.5.1
7.5.2
7.5.3
7.6
7.6.1

Dclaration de variables locales et de paramtres ...............................................................8-1


8.1
8.2
8.3
8.4
8.5
8.6
8.7
8.8
8.8.1
8.8.2
8.8.3
8.8.4

Variables locales et paramtres de bloc .....................................................................8-1


Syntaxe gnrale d'une dclaration de variable ou de paramtre..............................8-2
Initialisation..................................................................................................................8-3
Dclaration d'accs des zones de variable..............................................................8-5
Utilisation de multi-instances.......................................................................................8-7
Dclaration d'une instance ..........................................................................................8-7
Drapeau OK ................................................................................................................8-8
Sections de dclaration ...............................................................................................8-9
Prsentation des sections de dclaration ...................................................................8-9
Variables statiques ....................................................................................................8-10
Variables temporaires ...............................................................................................8-11
Paramtres de bloc ...................................................................................................8-12

Dclaration de constantes et repres de saut .......................................................................9-1


9.1
9.1.1
9.1.2
9.1.3
9.1.3.1
9.1.3.2
9.1.3.3
9.1.3.4
9.1.3.5
9.1.3.6
9.1.3.7
9.1.3.8
9.1.3.9
9.2

xii

Prsentation des types de donnes dans S7-SCL .....................................................7-1


Types de donnes simples..........................................................................................7-3
Types de donnes binaires .........................................................................................7-3
Types de donnes sur caractre.................................................................................7-3
Types de donnes numriques ...................................................................................7-3
Types de donnes temporels ......................................................................................7-4
Types de donnes complexes ....................................................................................7-5
Type de donnes DATE_AND_TIME..........................................................................7-5
Type de donnes STRING ..........................................................................................7-7
Type de donnes ARRAY .........................................................................................7-10
Type de donnes STRUCT .......................................................................................7-12
Type de donnes utilisateur ......................................................................................7-14
Types de donnes utilisateur (UDT) .........................................................................7-14
Types de donnes pour paramtre ...........................................................................7-16
Types de donnes TIMER et COUNTER..................................................................7-16
Types de donnes BLOCK........................................................................................7-17
Type de donnes POINTER......................................................................................7-17
Type de donnes ANY ..............................................................................................7-19
Exemple de type de donnes ANY ...........................................................................7-20

Constantes ..................................................................................................................9-1
Dclaration de mnmoniques pour les constantes .....................................................9-2
Types de donnes des constantes .............................................................................9-3
Notation des constantes..............................................................................................9-4
Constante binaire........................................................................................................9-6
Constante entire........................................................................................................9-7
Constante relle..........................................................................................................9-8
Constante sur caractre (caractre unique) ...............................................................9-9
Constante sur chane................................................................................................9-11
Constante de date.....................................................................................................9-13
Constante de dure ..................................................................................................9-13
Constante d'heure du jour.........................................................................................9-16
Constante de date et d'heure....................................................................................9-17
Dclaration de repres de saut .................................................................................9-18

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Sommaire

10

Donnes globales ...................................................................................................................10-1


10.1
10.2
10.2.1
10.2.2
10.2.3
10.2.4
10.3
10.3.1
10.3.2
10.3.3
10.3.4

11

Expressions, oprations et oprandes ................................................................................11-1


11.1
11.2
11.3
11.4
11.5
11.6
11.7

12

Prsentation des donnes globales ..........................................................................10-1


Zones de mmoire de la CPU ...................................................................................10-2
Prsentation des zones de mmoire de la CPU .......................................................10-2
Adressage absolu des zones de mmoire de la CPU ..............................................10-3
Adressage symbolique des zones de mmoire de la CPU.......................................10-5
Adressage index des zones de mmoire de la CPU ..............................................10-6
Blocs de donnes......................................................................................................10-7
Prsentation des blocs de donnes ..........................................................................10-7
Adressage absolu des blocs de donnes .................................................................10-8
Adressage index des blocs de donnes ...............................................................10-10
Adressage structur des blocs de donnes ............................................................10-11

Oprations .................................................................................................................11-1
Oprandes.................................................................................................................11-2
Syntaxe d'une expression .........................................................................................11-4
Expression simple .....................................................................................................11-6
Expressions arithmtiques ........................................................................................11-7
Expressions logiques ................................................................................................11-9
Expressions de comparaison ..................................................................................11-11

Instructions .............................................................................................................................12-1
12.1
12.1.1
12.1.2
12.1.3
12.1.4
12.1.5
12.1.6
12.1.7
12.2
12.2.1
12.2.2
12.2.3
12.2.4
12.2.5
12.2.6
12.2.7
12.2.8
12.2.9
12.2.10
12.2.11
12.3
12.3.1
12.3.2
12.3.2.1
12.3.2.2
12.3.2.3
12.3.2.4
12.3.2.5
12.3.2.6
12.3.2.7

Affectations de valeur................................................................................................12-1
Affecter une valeur une variable de type de donnes simple ...............................12-2
Affecter une valeur des variables de type STRUCT et UDT..................................12-3
Affecter une valeur une variable de type ARRAY ..................................................12-5
Affecter une valeur une variable de type STRING .................................................12-7
Affecter une valeur une variable de type DATE_AND_TIME.................................12-8
Affecter une valeur une variable absolue pour zones de mmoire........................12-9
Affecter une valeur une variable globale..............................................................12-10
Instructions de contrle ...........................................................................................12-12
Prsentation des instructions de contrle ...............................................................12-12
Conditions ...............................................................................................................12-13
Instruction IF............................................................................................................12-14
Instruction CASE .....................................................................................................12-16
Instruction FOR .......................................................................................................12-18
Instruction WHILE ...................................................................................................12-21
Instruction REPEAT ................................................................................................12-22
Instruction CONTINUE ............................................................................................12-23
Instruction EXIT.......................................................................................................12-24
Instruction GOTO ....................................................................................................12-25
Instruction RETURN................................................................................................12-26
Appel de fonctions et de blocs fonctionnels ............................................................12-27
Appel et transmission de paramtres......................................................................12-27
Appel de blocs fonctionnels ....................................................................................12-29
Appel d'un bloc fonctionnel (FB ou SFB) ................................................................12-29
Dfinition des paramtres du FB.............................................................................12-31
Dfinition des entres (FB)......................................................................................12-33
Dfinition des entres/sorties (FB)..........................................................................12-34
Lecture des valeurs de sortie (appel de FB) ...........................................................12-35
Exemple d'appel d'une instance globale .................................................................12-35
Exemple d'appel d'une instance locale ...................................................................12-37

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

xiii

Sommaire

12.3.3
12.3.3.1
12.3.3.2
12.3.3.3
12.3.3.4
12.3.3.5
12.3.3.6
12.3.4
12.3.4.1
12.3.4.2
13

Appel de fonctions...................................................................................................12-38
Appel d'une fonction (FC)........................................................................................12-38
Valeur de retour (FC) ..............................................................................................12-39
Paramtres de FC ...................................................................................................12-40
Dfinition des entres (FC) .....................................................................................12-41
Dfinition des sorties et des entres/sorties (FC) ...................................................12-42
Exemple d'appel de fonction ...................................................................................12-44
Paramtres dfinis automatiquement .....................................................................12-45
Paramtre d'entre EN............................................................................................12-45
Paramtre de sortie ENO ........................................................................................12-46

Compteurs et temporisation..................................................................................................13-1
13.1
13.1.1
13.1.2
13.1.3
13.1.4
13.1.5
13.1.6
13.1.7
13.1.8
13.2
13.2.1
13.2.2
13.2.3
13.2.4
13.2.5
13.2.6
13.2.7
13.2.8

Compteurs .................................................................................................................13-1
Fonctions de comptage .............................................................................................13-1
Appel d'une fonction de comptage ............................................................................13-1
Dfinition des paramtres d'une fonction de comptage ............................................13-3
Saisie et exploitation de la valeur de comptage........................................................13-5
Compteur incrmental (S_CU) ..................................................................................13-6
Compteur dcrmental (S_CD).................................................................................13-6
Compteur incrmental/dcrmental (S_CUD) ..........................................................13-7
Exemple de fonction de comptage............................................................................13-7
Temporisations ..........................................................................................................13-9
Fonctions de temporisation .......................................................................................13-9
Appel d'une fonction de temporisation ......................................................................13-9
Dfinition des paramtres d'une fonction de temporisation ....................................13-11
Saisie et exploitation de la valeur de temps............................................................13-13
Dmarrer une temporisation sous forme d'impulsion (S_PULSE) ..........................13-15
Dmarrer une temporisation sous forme d'impulsion prolonge (S_PEXT) ...........13-16
Dmarrer une temporisation sous forme de retard la monte (S_ODT)..............13-17
Dmarrer une temporisation sous forme de retard
la monte mmoris (S_ODTS)...........................................................................13-18
13.2.9 Dmarrer une temporisation sous forme de retard
la retombe (S_OFFDT).......................................................................................13-19
13.2.10 Exemple de fonction de temporisation ....................................................................13-20
13.2.11 Choix de la temporisation approprie .....................................................................13-21
14

Fonctions standard de S7-SCL .............................................................................................14-1


14.1
14.1.1
14.1.2
14.1.2.1
14.1.3
14.1.3.1
14.1.3.2
14.1.3.3
14.2
14.2.1
14.2.2
14.2.3
14.2.4
14.3
14.3.1
14.4
14.4.1
14.4.2
14.4.3
14.4.4

xiv

Conversion de types de donnes..............................................................................14-1


Conversion de types de donnes..............................................................................14-1
Conversion automatique du type de donnes...........................................................14-2
Fonctions de conversion de classe A........................................................................14-2
Fonctions standard pour la conversion explicite du type de donnes ......................14-3
Fonctions de conversion de classe B........................................................................14-3
Fonctions d'arrondi et de troncature..........................................................................14-6
Exemples de conversion avec des fonctions standard .............................................14-7
Fonctions standard numriques ................................................................................14-9
Fonctions standard arithmtiques gnrales ............................................................14-9
Fonctions logarithmiques ..........................................................................................14-9
Fonctions trigonomtriques .....................................................................................14-10
Exemples de fonctions standard numriques .........................................................14-10
Fonctions standard sur chane binaire ....................................................................14-11
Exemple de fonctions standard sur chane binaire .................................................14-12
Fonctions de traitement de chane de caractres ...................................................14-13
Fonctions de manipulation de chane de caractres ..............................................14-13
Fonctions de comparaison de chanes de caractres ............................................14-17
Fonctions de conversion du type de donnes.........................................................14-19
Exemple de traitement de chanes de caractres...................................................14-21

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Sommaire

14.5
14.5.1
14.6
14.6.1
14.6.2
15

Description du langage ..........................................................................................................15-1


15.1
15.1.1
15.1.2
15.1.3
15.1.4
15.1.5
15.1.6
15.1.7
15.1.8
15.1.9
15.1.10
15.1.11
15.2
15.2.1
15.2.2
15.2.3
15.2.4
15.2.5
15.2.6
15.2.7
15.3
15.3.1
15.3.2
15.3.3
15.3.4
15.3.5
15.3.6
15.3.7
15.3.8

16

Fonctions de slection de valeurs...........................................................................14-26


Fonctions de slection de valeurs...........................................................................14-26
Fonctions systme, blocs fonctionnels systme et bibliothque standard .............14-31
Fonctions systme, blocs fonctionnels systme et bibliothque standard .............14-31
Interface d'change avec les OB ............................................................................14-33

Description formelle du langage................................................................................15-1


Prsentation des diagrammes syntaxiques ..............................................................15-1
Rgles .......................................................................................................................15-2
Blocs terminaux des rgles lexicales ........................................................................15-5
Caractres de mise en forme, sparateurs et oprations.........................................15-7
Mots-cls et identificateurs prdfinis ..................................................................... 15-10
Identificateurs d'oprande et mots-cls de bloc......................................................15-14
Prsentation des blocs non terminaux ....................................................................15-16
Prsentation des symboles .....................................................................................15-16
Identificateurs ..........................................................................................................15-17
Attribution de noms dans S7-SCL...........................................................................15-18
Constantes et drapeaux prdfinis .........................................................................15-20
Rgles lexicales ......................................................................................................15-21
Prsentation des rgles lexicales............................................................................15-21
Dsignations............................................................................................................15-21
Constantes ..............................................................................................................15-23
Adressage absolu....................................................................................................15-29
Commentaires .........................................................................................................15-31
Attributs de bloc.......................................................................................................15-32
Options du compilateur ...........................................................................................15-33
Rgles syntaxiques .................................................................................................15-34
Prsentation des rgles syntaxiques ......................................................................15-34
Organisation des sources S7-SCL..........................................................................15-35
Composition des sections de dclaration................................................................15-37
Types de donnes dans S7-SCL ............................................................................15-42
Section des instructions ..........................................................................................15-45
Affectations de valeur..............................................................................................15-47
Appel de fonctions et de blocs fonctionnels ............................................................15-50
Instructions de contrle ...........................................................................................15-52

Conseils et astuces ................................................................................................................16-1

Glossaire
Index

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

xv

Sommaire

xvi

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Prsentation du produit

1.1

Domaine d'application de S7-SCL


S7-SCL (Structured Control Language) est un langage de programmation volu proche du
PASCAL, utilis pour programmer des automates programmables avec SIMATIC S7.

Certificat PLCopen
S7-SCL correspond au langage volu textuel ST (Structured Text) dfini dans la norme
CEI 61131-3 et a t conu en vue de la certification pour Reusability Level.

Domaine d'application
S7-SCL est optimis pour la programmation d'automates programmables et contient, outre
des lments du langage de programmation PASCAL, galement des lments
d'automatisation typiques, tels que p. ex. des entres/sorties, temporisations et compteurs.
S7-SCL convient tout particulirement aux tches suivantes :
programmation d'algorithmes complexes,
programmation de fonctions mathmatiques,
gestion de donnes ou de recettes,
optimisation de processus.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

1-1

Prsentation du produit

1.2

Fonctionnement de S7-SCL

Intgration STEP 7
S7-SCL prend en charge le concept de blocs STEP 7.

OB

FC

FB

DB

UDT

SFC

SFB

Blocs STEP 7

Avec S7-SCL, vous pouvez crer les blocs STEP 7 suivants :


OB
FC
FB
DB
UDT
Dans un programme S7, vous pouvez galement combiner des blocs S7-SCL avec des
blocs issus d'autres langages de programmation STEP 7. Ces blocs sont en mesure de
s'appeler mutuellement. Les blocs S7-SCL peuvent galement tre enregistrs dans des
bibliothques pour tre insrs dans d'autres langues.
Puisque les programmes S7-SCL sont programms sous forme de sources ASCII, ils
peuvent aisment tre imports et exports.
Il est possible de dcompiler les blocs S7-SCL dans le langage de programmation LIST de
STEP 7 (liste d'instructions). Notez cependant qu'aprs un enregistrement dans LIST, il n'est
plus possible de les diter dans S7-SCL.

Environnement de dveloppement
Pour une utilisation facile, S7-SCL met votre disposition un environnement de
dveloppement efficace convenant aussi bien aux proprits spcifiques de S7-SCL qu'
STEP 7. Cet environnement de dveloppement comprend :
un diteur pour crire des programmes composs de fonctions (FC), blocs fonctionnels
(FB), blocs d'organisation (OB), blocs de donnes (DB) et types de donnes utilisateur
(UDT) ; des fonctions puissantes assistent le programmeur dans sa tche ;
un compilateur squentiel pour traduire en code machine MC7 le programme
pralablement dit ; le code MC7 gnr est excutable sur toutes les CPU des
systmes d'automatisation SIMATIC S7-300/400 partir de la CPU 314 ;
un dbogueur pour rechercher les erreurs de programmation logiques dans le rsultat
d'une compilation exempte d'erreurs ; la recherche d'erreurs est effectue dans le
langage source.

1-2

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Prsentation du produit

La figure suivante fournit un aperu des composants de l'environnement de dveloppement :

SCL pour S7-300/400

Editeur

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Compilateur
squentiel

Dbogueur

1-3

Prsentation du produit

1.3

Fonctions offertes par S7-SCL


S7-SCL offre non seulement tous les avantages d'un langage de programmation volu,
mais galement des caractristiques conues spcialement pour permettre une
programmation structure.

Bibliothques de blocs
Des blocs prdfinis sont fournis dans des bibliothques, p. ex. :
fonctions systme
fonctions CEI
fonctions de conversion
La navigation dans la bibliothque s'effectue dans une bote de dialogue. Lorsque vous
slectionnez un bloc, le modle des paramtres de la fonction est automatiquement copi
dans le fichier dit. Vous n'avez alors plus qu' entrer les paramtres souhaits.

Modles de programmes
L'diteur S7-SCL met votre disposition ces modles qu'il vous suffit de complter :
modles de blocs (p. ex. blocs fonctionnels, blocs de donnes) et leurs appels
modles pour commentaires de blocs, paramtres de blocs et constantes
modles pour structures de contrle (IF, CASE, FOR, WHILE, REPEAT)

Elments de langage issus de la programmation de langages volus


Cration de programmes simple, rapide et pratiquement sans erreurs grce l'utilisation
d'lments de langage performants, comme p. ex. :
boucles d'excution
branchements alternatifs (IF ... THEN ... ELSE)
sauts

Grande lisibilit du programme


Les caractristiques suivantes augmentent la lisibilit du programme :
programmation entirement symbolique
commentaires
types de donnes lmentaires et types de donnes dfinis par l'utilisateur
affichage de rfrences croises
formatage automatique de l'entre par indentation
mise en couleur des lments de langage en fonction de la syntaxe

1-4

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Prsentation du produit

Dbogueur du niveau de langage volu


Le dbogueur permet de tester le niveau de langage volu du programme. Il offre les
fonctionnalits suivantes :
visualisation continue de l'excution du programme
visualisation pas pas grce des points d'arrt qu'il est possible de dfinir
individuellement
fonctionnalit Step-in (possibilit de sauter dans des blocs appels durant le test)

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

1-5

Prsentation du produit

1.4

Nouveauts dans la version V5.3 SP1

Extension des langages


Une extension de S7-SCL V5.3 SP1 a t ralise avec de nouveaux utilitaires de langage
dfinis par CEI 61131-3 :
fonctions de traitement de valeurs en tant que fonctions S7-SCL internes (SEL, MAX,
MIN, LIMIT, MUX)
prise en charge de la reprsentation BCD de nombres entiers par des fonctions de
conversion (BCD_TO_INT, INT_TO_BCD, etc.)
oprateur d'affectation => pour paramtres de sortie de fonctions
initialisation de champs avec des parenthses
nouvelles fonctions de conversion (BYTE_TO_INT, INT_TO_BYTE, etc.)

Paramtres du compilateur dans la source


Les paramtres du compilateur peuvent tre enregistrs dans des sources S7-SCL ou dans
des fichiers d'information de compilation. Vous avez ainsi la possibilit de sauvegarder les
proprits d'une compilation spcifique une source.

Fonctions de test tendues


Les incohrences de blocs et les conflits d'horodatage dans les blocs S7-SCL peuvent
tre dtermins et corrigs avec la fonction de test "Vrifier la cohrence des blocs" de
STEP 7. Cette fonction de test est disponible partir de STEP 7 Version 5.3 SP2.
La fonction de test "Visualiser" peut tre mise en uvre de manire plus prcise par la
dfinition d'environnements d'appel.
La zone de visualisation de la fonction de test "Visualiser" peut tre restreinte de manire
prcise par slection d'une partie dans la source.

Impression en couleurs
Il est possible d'imprimer les sources S7-SCL en couleurs.

Fonction de recherche tendue


S7-SCL permet prsent galement la recherche partir de la position du curseur vers le
haut ainsi que la recherche dans une slection.

Positionnement de signets dans le texte source


L'utilisation de signets vous permet de naviguer rapidement dans une source.

1-6

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Prsentation du produit

Cration de blocs S7-SCL en utilisant des jeux de caractres de langues trangres


Les sources S7-SCL peuvent contenir des textes dans des jeux de caractres de langues
trangres. Vous pouvez ainsi crer des blocs destins au march mondial, dans lesquels
les principales parties visibles pour l'utilisateur apparaissent dans des jeux de caractres de
langues trangres (p. ex. les mnmoniques de blocs, les attributs et les commentaires).
Vous trouverez de plus amples informations sur les jeux de caractres de langues
trangres dans le fichier Lisezmoi.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

1-7

Prsentation du produit

1-8

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Installation

2.1

Automation License Manager

2.1.1

Licence d'utilisation avec Automation License Manager

Automation License Manager


Pour pouvoir utiliser le logiciel de programmation, une "License Key" spcifique au produit
(licence d'utilisation) est ncessaire. A partir de la version V5.3 de S7-SCL, celle-ci est
installe par Automation License Manager.
Automation License Manager est un produit logiciel de Siemens AG. Il permet de grer des
"License Keys" (reprsentants techniques de licences) dans l'ensemble du systme.
Automation License Manager est disponible :
sur le support d'installation de STEP 7
sur les pages Internet de A&D Customer Support de Siemens AG, sous forme de produit
tlcharger.
Automation License Manager dispose d'une aide en ligne contextuelle intgre, que vous
pouvez appeler aprs l'installation en appuyant sur la touche F1 ou en choisissant la
commande de menu ? > Aide de License Manager. Vous y trouverez des informations
dtailles sur la fonctionnalit et l'utilisation de Automation License Manager.

Licences
Des licences sont ncessaires pour l'utilisation des progiciels de STEP 7 protgs par des
droits de licence. Une licence est accorde comme droit d'utilisation de produits. Les
reprsentants de ce droit sont :
CoL (Certificate of License) et
License Key

Certificate of License (CoL)


Le "Certificate of License" contenu dans la livraison des produits respectifs constitue la
preuve juridique du droit d'utilisation. Seul le propritaire du CoL ou les personnes
mandates sont autorises utiliser le produit respectif.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

2-1

Installation

License Keys
La "License Key" est le reprsentant technique d'une licence (marque de licence
lectronique).
SIEMENS AG attribue une "License Key" pour tout logiciel protg par des droits de licence.
Le logiciel correspondant peut exclusivement tre utilis conformment aux conditions de
licence et d'utilisation lies la "Licence Key" correspondante si la prsence de la
"License Key" valide est constate sur un ordinateur, aprs dmarrage du logiciel.

Nota

Vous avez galement la possibilit d'utiliser le logiciel de base de S7-SCL sans


"License Key" pour en dcouvrir l'interface utilisateur et les fonctionnalits.

L'utilisation sans restrictions, conforme aux dclarations de droits de licence, n'est


cependant autorise et possible que lorsque la "License Key" est installe.

Si vous n'avez pas install de "License Key", vous tes sollicit intervalles rguliers de
raliser l'installation.

Les "License Keys" sont disponibles sur les supports de donnes suivants et peuvent tre
transfres d'un support l'autre :
disquettes "License Key",
disques durs locaux et
disques durs d'ordinateurs dans le rseau.
Des informations supplmentaires sur l'utilisation des "License Keys" sont fournies dans
l'aide en ligne de Automation License Manager.

2-2

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Installation

Types de licences
Pour les produits logiciels de Siemens AG, il existe les types suivants de licences orientes
application. Le comportement du logiciel est dtermin par les diverses "License Keys"
correspondant ces types de licences. Le type d'utilisation est dfini par le "Certificate of
License" respectif.
Type de licence

Description

Single License

L'utilisation du logiciel est autorise pour une dure illimite sur un ordinateur
quelconque.

Floating License

L'utilisation du logiciel est autorise pour une dure illimite sur un rseau
(utilisation " distance").

Trial License

L'utilisation du logiciel est restreinte :

Rental License

Upgrade License

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

une validit de 14 jours au maximum,

un nombre de jours dfini partir de la premire utilisation,

l'utilisation pour test et validation ( l'exclusion de toute responsabilit).

L'utilisation du logiciel est restreinte :

une validit de 50 jours au maximum

un nombre donn d'heures d'utilisation

Une mise niveau peut tre ncessaire en raison d'exigences spcifiques de l'tat
du systme :

Une licence de mise niveau permet de transformer une licence d'une


"ancienne" version x en une licence de version >x+....

Une mise niveau peut p. ex. tre requise en raison d'extension des
capacits.

2-3

Installation

2.1.2

Installation de Automation License Manager


L'installation de Automation License Manager est ralise par un Setup. Le logiciel
d'installation de Automation License Manager se trouve sur le CD du produit STEP 7.
Vous pouvez installer Automation License Manager avec S7-SCL ou ultrieurement.
Nota

Des informations dtailles sur la procdure d'installation de Automation License Manager


sont donnes dans son fichier Lisezmoi.wri actuel.
Tous les informations relatives la fonctionnalit et l'utilisation des "License Keys" de
Automation License Manager sont donnes dans l'aide en ligne.

Installation ultrieure de "License Keys" (cls de licence)


Si vous dmarrez le logiciel et qu'aucune "License Key" (cl de licence) n'est prsente, vous
obtenez un message correspondant.

Nota

Vous avez galement la possibilit d'utiliser le logiciel de base sans "License Key" pour
en dcouvrir l'interface utilisateur et les fonctionnalits.

L'utilisation sans restrictions, conforme aux dclarations de droits de licence, n'est


cependant autorise et possible que lorsque la "License Key" est installe.

Si vous n'avez pas install de "License Key", vous tes sollicit intervalles rguliers de
raliser l'installation.

Pour installer les "License Keys" ultrieurement, vous avez les possibilits suivantes :
installez les "License Keys" depuis les disquettes,
installez les "License Keys" en les tlchargeant depuis Internet (une commande
pralable est requise),
utilisez des "Floating License Keys" disponibles sur Internet.
Vous trouverez des informations dtailles sur la procdure dans l'aide en ligne contextuelle
de Automation License Manager, que vous pouvez appeler aprs l'installation en appuyant
sur la touche F1 ou en choisissant la commande de menu ? > Aide de License Manager.

Nota

2-4

Les "License Keys" sont uniquement fonctionnelles sous Windows 2000/XP si elles se
trouvent sur un disque dur possdant des droits d'accs en criture.

Les "Floating Licenses" peuvent galement tre utilises via un rseau, c'est--dire "
distance".

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Installation

2.1.3

Rgles d'utilisation des License Keys

Avertissement
Tenez compte des indications d'utilisation des "License Keys" dcrites dans l'aide en ligne et
dans le fichier Lisezmoi.wri de Automation License Manager. Le non-respect de ces rgles
risque d'entraner la perte irrmdiable des "License Keys".

Vous pouvez appeler l'aide en ligne contextuelle de Automation License Manager en


appuyant sur la touche F1 ou en choisissant la commande de menu ? > Aide de License
Manager.
Cette aide en ligne contient toutes les informations relatives la fonctionnalit et
l'utilisation des "License Keys".

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

2-5

Installation

2.2

Installation

2.2.1

Environnement requis

Environnement logiciel requis


Le logiciel S7-SCL V5.3 SP1 est excutable sur une PG ou un PC sur lesquels le logiciel de
base STEP 7 V5.3 ou suprieur est install.
Vous trouverez les conditions relatives au systme d'exploitation dans le fichier Lisezmoi.wri.

Environnement matriel requis


S7-SCL demande le mme environnement que le logiciel de base STEP 7. La place
mmoire ncessaire S7-SCL V5.3 SP1 est indique dans le fichier Lisezmoi.wri.

2.2.2

Installation de S7-SCL

Dmarrage du programme d'installation


S7-SCL contient un programme "Setup" qui effectue automatiquement l'installation. Il vous
donne toutes les indications ncessaires au cours de son excution.
Procdez de la manire suivante :
1. Dans le Panneau de configuration de Windows, cliquez deux fois sur l'icne
"Ajout/Suppression de programmes" pour ouvrir la bote de dialogue permettant d'installer
un logiciel.
2. Cliquez sur "Installer".
3. Insrez le support de donnes dans le lecteur et cliquez sur "Suite". Windows cherche
alors le programme d'installation "Setup.exe".
4. Suivez pas pas les instructions affiches par ce programme.

Installation de "License Keys"


Lors de l'installation, le programme vrifie si une "License Key" correspondante existe sur le
disque dur. Si aucune "License Key" valide n'est reconnue, un message vous avertit que
vous ne pouvez utiliser le logiciel qu'en prsence d'une "License Key". Vous pouvez, si vous
le dsirez, installer immdiatement les "License Keys" ou bien poursuivre l'installation de
STEP 7 et installer les "License Keys" ultrieurement. Dans le premier cas, insrez la
disquette "License Key" fournie lorsque le message correspondant vous y invite.

2-6

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dveloppement d'un programme S7-SCL

3.1

Bienvenue dans l'exemple pour dbutants "Saisie de valeurs


de mesure"

Objectifs
L'exemple propos veut vous apprendre utiliser au mieux les possibilits offertes par
S7-SCL. Les questions les plus frquentes au dbut sont par exemple :
Comment faire pour concevoir mon programme avec S7-SCL ?
Quels sont les lments de langage de S7-SCL adquats pour rsoudre ce problme ?
Quelles sont les fonctions de test mises ma disposition ?
Ce chapitre entend rpondre ces questions et quelques autres.

Elments de langage S7-SCL employs


Notre exemple prsente entre autres les lments de langage suivants :
Composition et utilisation des diffrents types de bloc de S7-SCL,
Appel des blocs avec transmission et exploitation des paramtres,
Divers formats d'entre et de sortie,
Programmation l'aide de types de donnes simples et de tableaux,
Initialisation de variables,
Structures de programme avec utilisation d'aiguillages et de boucles.

Matriel requis
Vous pouvez excuter le programme-exemple dans un automate SIMATIC S7-300 ou
SIMATIC S7-400 dot de la priphrie suivante :
Un module d'entre 16 voies,
Un module de sortie 16 voies.

Fonctions de test disponibles


Le programme est conu pour tre test rapidement l'aide des commutateurs de l'entre et
des indicateurs de la sortie. Pour un test plus dtaill, utilisez les fonctions de test de
S7-SCL.
De plus, toutes les possibilits offertes par le logiciel de base STEP 7 sont votre
disposition, indpendamment du langage utilis.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

3-1

Dveloppement d'un programme S7-SCL

3.2

Enonc du problme

Prsentation
Il s'agit de saisir des valeurs de mesure au moyen d'un module d'entre, pour les trier et
traiter ensuite l'aide d'un programme S7-SCL. Les rsultats seront indiqus par un module
de sortie.

Saisie des valeurs de mesure


Vous indiquez une valeur de mesure au moyen des 8 commutateurs d'entre. Il s'agit de
l'enregistrer en mmoire dans le tableau des valeurs de mesure l'instant exact d'un front
au commutateur de saisie (voir la figure ci-dessous).
La plage exige pour les valeurs de mesure tant de 0 255, 1 octet est ncessaire
l'entre.

Traitement des valeurs de mesure


Le tableau de valeurs de mesure sera organis sous forme de mmoire circulante contenant
8 enregistrements au plus.
Lorsqu'un front est dtect un commutateur de tri, il faut trier par ordre croissant les
valeurs enregistres dans le tableau des valeurs de mesure. Ensuite, il faut calculer la racine
carre et le carr de chaque valeur. Les fonctions de traitement ncessitent 1 mot.
Saisie des donnes :
Commutateur de
saisie

x=Evaluation du front

Valeur de mesure

Commutateur de tri

1 1 1 1 1 1 1 1

255
Racine carre

255

127

63

49

31

15

225

15

31

961

63

3969

3
1
Saisie des valeurs
de mesure

3-2

Carr

127
255
Tri des valeurs
de mesure

Calculs

11

16129

16

Dbordement
haut

Calcul des rsultats

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dveloppement d'un programme S7-SCL

Slection pour les sorties


Le module de sortie ne pouvant indiquer qu'une seule valeur la fois, il faudra disposer des
possibilits suivantes :
Slection d'un lment dans une liste,
Choix entre valeur de mesure, racine carre et carr.
La valeur indiquer est slectionne de la manire suivante :
Trois commutateurs forment un codage qui est valid en cas de front un quatrime
commutateur, le commutateur de codage. Ceci permet de calculer l'adresse de la sortie.
Trois valeurs sont mises disposition pour la sortie la mme adresse, la valeur de
mesure, la racine carre et le carr. Deux inverseurs sont prvoir pour choisir une
valeur parmi les trois.
Saisie des donnes :

x=Evaluation du front

Commutateur sur module d'entre

1
Codage

Deux inverseurs

Racine carre
ou carr

Commutateur de codage

Valeur de mesure
ou
rsultat

Valeur de mesure

Racine carre

1
3
7

Adressage
de la sortie

Carr

49

15

225

31

961

3969

Inverseur

63

Slection
de la sortie

127
255
Valeurs tries

11

16129

16

Dbordement
haut

Rsultats

Sortie des donnes :


Affichage sur le module
de sortie

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

4
Sortie

3-3

Dveloppement d'un programme S7-SCL

3.3

Composition d'un programme structur avec S7-SCL

Types de bloc
Un programme S7-SCL structur permet de rsoudre au mieux le problme pos. Un tel
programme est de construction modulaire, c'est--dire divis en blocs chargs chacun d'une
tche partielle bien dtermine. Comme dans les langages de programmation de STEP 7,
vous disposez dans S7-SCL des types de bloc suivants.

OB

FB

Blocs
STEP 7

FC

DB

UDT

3-4

Les blocs d'organisation constituent l'interface entre le systme d'exploitation


de la CPU S7 et le programme utilisateur. C'est ici qu'est dfini l'ordre
d'excution des blocs du programme utilisateur.
Les blocs fonctionnels sont des blocs de code donnes statiques. Le FB
disposant d'une mmoire, il est possible d'accder ses paramtres (par ex.
des sorties) depuis n'importe quelle position du programme utilisateur.
Les fonctions sont des blocs de code sans mmoire. De ce fait, il faut que les
valeurs calcules soient traites aussitt aprs l'appel de la fonction.
Les blocs de donnes sont des zones servant mmoriser les donnes
utilisateur. On distingue les DB globaux auxquels tous les blocs de code
ont accs et les DB d'instance qui sont associs un appel de FB
dtermin.
Les types de donn es utilisateur sont des types complexes que vous
dfinissez vous-mme au besoin et qui sont rutilisables. Ainsi, un type
de donnes utilisateur peut servir gnrer plusieurs blocs de donnes de
mme structure. Les UDT s'emploient comme des blocs.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dveloppement d'un programme S7-SCL

Rangement des blocs dans des sources S7-SCL


Un programme S7-SCL se compose d'une ou de plusieurs sources S7-SCL. Une source
peut contenir un seul bloc ou un programme complet constitu de diffrents blocs.
Une source pour
un programme

.
FB22
.
.
.
FC2
.
.
.
OB1
.
Source SCL

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Plusieurs sources pour


un programme
Source
SCL
pour
OB1

Source
SCL
pour
FC2

Source
SCL
pour
FB22

FB22
FC2
OB1

DB
D'instance

Dossier Blocs
Hors ligne

3-5

Dveloppement d'un programme S7-SCL

3.4

Dfinition des tches partielles

Tches partielles
Dans la figure ci-aprs, les tches partielles sont reprsentes par des blocs. Les zones
rectangulaires grises reprsentent les blocs. La disposition des blocs de code de la gauche
vers la droite correspond leur ordre d'appel.

CYCLE
Bloc d'organisation (OB)

CALCUL
Bloc fonctionnel (FB)

Entre des
donnes

Saisie des
valeurs de
mesure

Tri des
valeurs de
mesure

SQRT
(racine carre)
et CARRE
Fonctions (FC)

Sortie des
donnes

Adressage et
slection de
la sortie

Calcul des
rsultats

Racine carre,
carr

Appel
Cyclique

SAISIE_DONNEES
Bloc de donnes (DB)

3-6

SAISIE
Bloc fonctionnel (FB)

Enregistrement des
donnes

Sens de dplacement du
programme

Sens de dPlacement
des donnes

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dveloppement d'un programme S7-SCL

Choix et affectation des types de bloc possibles


Les diffrents blocs ont t choisis d'aprs les critres suivants :
Fonction

Nom de bloc

Un programme utilisateur ne peut tre dclench que dans un OB. Les valeurs de
mesure devant tre saisies cycliquement, il nous faut un OB d'appel cyclique (OB1).
Une partie du traitement - Entre des donnes et Sortie des donnes - sera
programme dans l'OB.

OB "CYCLE"

Pour la tche partielle Saisie des valeurs de mesure, il nous faut un bloc mmoire,
donc un FB, puisque certaines donnes locales (la mmoire circulante, par exemple)
doivent tre conserves d'un cycle de programme au suivant. Le lieu propre
l'Enregistrement des donnes (mmoire) est le bloc de donnes d'instance
SAISIE_DONNEES. Le mme FB peut encore se charger de la tche partielle
Adressage et slection de la sortie, puisqu'il dispose des donnes requises.

FB "SAISIE"

Dans le choix du type de bloc qui assumera les tches partielles Tri des valeurs de
mesure et Calcul des rsultats, il faut tenir compte du fait qu'une mmoire tampon de
sortie doit tre cre qui contiendra, pour chaque valeur de mesure, la racine carre
et le carr rsultant des calculs. Seul un FB entre en ligne de compte. Comme il est
appel par un FB de rang suprieur, il n'a pas besoin de DB en propre. Ses donnes
d'instance peuvent tre stockes dans le bloc de donnes d'instance du bloc
appelant.

FB "CALCUL"

Pour assumer la tche partielle Calcul de la racine carre ou du carr, c'est une FC

qui convient le mieux, parce que le rsultat peut tre retourn en tant que valeur de la
fonction. En outre, le calcul ne ncessite pas de donnes devant tre conserves au-
del d'un cycle d'excution du programme. La fonction standard de S7-SCL SQRT
peut servir calculer la racine carre. Pour calculer le carr, il faut crer une fonction
CARRE qui vrifie aussi les limites de la plage de valeurs.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

FC "SQRT" (racine
carre) et
FC "CARRE"

3-7

Dveloppement d'un programme S7-SCL

3.5

Dfinition des interfaces entre blocs

Prsentation
L'interface d'un bloc est forme de paramtres auxquels il est possible d'accder depuis
d'autres blocs.
Les paramtres dclars dans le bloc sont des marques de rservation dont les valeurs ne
sont fixes qu'au moment de l'utilisation concrte (appel). On les nomme paramtres
formels, tandis que les valeurs qui leur sont affectes l'appel du bloc sont dsignes par
paramtres effectifs. Lorsqu'un bloc est appel, des donnes d'entre lui sont transmises en
tant que paramtres effectifs. Aprs le retour au bloc appelant, les donnes de sortie sont
mises disposition pour tre prises en charge. Une fonction (FC) peut transmettre son
rsultat sous forme de valeur de la fonction.
On peut classer les paramtres de bloc dans les catgories suivantes :
Paramtres de bloc

Signification

Paramtres d'entre

A l'appel du bloc, les paramtres d'entre prennent VAR_INPUT


les valeurs d'entre actuelles. Vous pouvez y
accder uniquement en lecture.
Les paramtres de sortie transmettent les valeurs
VAR_OUTPUT
de sortie actuelles au bloc appelant. Vous pouvez y
accder en criture comme en lecture.
Les paramtres d'entre/sortie prennent en charge VAR_IN_OUT
la valeur actuelle d'une variable lors de l'appel, la
traitent et rangent ensuite les rsultats dans la
mme variable.

Paramtres de sortie

Paramtres
d'entre/sortie

Dclaration avec

OB CYCLE
L'OB CYCLE n'a pas de paramtres formels. Il appelle le FB SAISIE et lui transmet pour
ses paramtres formels la valeur de mesure et les donnes de commande.

FB SAISIE

3-8

Nom de paramtre

Type de
donnes

Type de
dclaration

Description

Entree_val_mesure
nouv_val

INT
BOOL

VAR_INPUT
VAR_INPUT

nouv_tri

BOOL

VAR_INPUT

choix_fonction

BOOL

VAR_INPUT

Selection
nouv_selection
Sortie_resultat
Sortie_val_mesure

WORD
BOOL
DWORD
DWORD

VAR_INPUT
VAR_INPUT
VAR_OUTPUT
VAR_OUTPUT

Valeur de mesure
Commutateur pour prendre en charge la valeur
de mesure dans la mmoire circulante
Commutateur pour trier et exploiter les valeurs
de mesure
Inverseur pour choisir la racine carre ou le
carr
Codage pour slectionner la valeur de sortie
Commutateur pour valider le codage
Sortie du rsultat calcul
Sortie de la valeur de mesure correspondante

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dveloppement d'un programme S7-SCL

FB CALCUL
Le FB SAISIE appelle le FB CALCUL. Les deux FB ont comme donnes communes le
tableau de valeurs de mesure trier. Il faut donc dclarer ce tableau comme paramtre
d'entre/sortie. Un tableau de structures est cr en tant que paramtre d'entre pour les
rsultats du calcul que sont la racine carre et le carr. Voici les paramtres formels :
Nom

Type de
donnes

Type de
dclaration

Description

Memoire_tri

ARRAY[..] OF VAR_IN_OUT
REAL

Tableau des valeurs de mesure, correspond


la mmoire circulante

Memoire_calcul

ARRAY[..] OF VAR_OUTPUT
STRUCT

Tableau pour les rsultats :


stucture avec les composants "racine_carree"
et "carre" de type INT

SQRT et CARRE
Ces fonctions sont appeles par CALCUL. Elles ncessitent une valeur d'entre et
fournissent le rsultat en tant que valeur de la fonction.
Nom

Type de
donnes

Type de
dclaration

Description

Valeur

REAL

VAR_INPUT

Entre pour SQRT

SQRT

REAL

valeur de la
fonction

Racine carre de la valeur d'entre

Valeur

INT

VAR_INPUT

Entre pour CARRE

CARRE

INT

Valeur de la
fonction

Carr de la valeur d'entre

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

3-9

Dveloppement d'un programme S7-SCL

3.6

Dfinition de l'interface d'entre/sortie


La figure ci-aprs montre l'interface d'entre/sortie. Notez que pour l'entre/sortie sous forme
d'octet, l'octet de poids faible se trouve en haut et l'octet de poids fort en bas. C'est l'inverse
pour l'entre/sortie sous forme de mot.
Octet 0

Octet 4

Octet 1

Octet 5

Systme d'automatisation

Module TOR
d'entre

Module
d'entre

Module TOR
de sortie

Octet 0

E 0.3
0
1
2
3
4
5
6
7

E 0.4

Validation de la valeur de mesure


Dclenchement du tri et du calcul
Choix du rsultat : racine carre ou carr
Slection sortie : valeur de mesure ou rsultat
Codage, bit 0
Codage, bit 1
Codage, bit 2
Validation du codage

07

Octet d'entre : valeur de mesure

07

Octet de poids fort du mot de sortie


(bits 8 15), requis seulement pour
l'lvation au carr, sinon 0.

07

Octet de poids faible du mot de sortie


(bits 0 7), valeur de mesure ou rsultat :
racine carre ou carr.

Octet 1
Module de
sortie

Octet 4

0
1
2
3
4
5
6
7

0
1
2
3
4
5
6

Octet 5

3-10

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dveloppement d'un programme S7-SCL

3.7

Dfinition de l'ordre des blocs dans la source


En ce qui concerne l'ordre des blocs dans la source S7-SCL, tenez compte du fait qu'un bloc
doit s'y trouver avant que vous l'utilisiez, c'est--dire l'appeliez depuis un autre bloc. La
source doit donc contenir les blocs dans l'ordre suivant :

FC CARRE
appelle
FB CALCUL
appelle
FB SAISIE
appelle
OB CYCLE

3.8

Dfinition des mnmoniques


Le programme sera plus facile lire si vous attribuez des noms symboliques aux adresses
des module et aux blocs. Pour cela, il faut dfinir des mnmoniques dans une table de
mnmoniques.
La figure ci-aprs montre la table des mnmoniques de notre exemple. Elle prsente les
noms symboliques que vous devez y dclarer pour pouvoir compiler la source sans erreurs.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

3-11

Dveloppement d'un programme S7-SCL

3.9

Cration de la fontion CARRE

3.9.1

Section des instructions de la fonction CARRE

Section des instructions


Il faut d'abord vrifier si la valeur d'entre ne dpasse pas la limite pour laquelle le rsultat
ne serait plus dans la plage de valeurs des entiers. Si c'est le cas, c'est la valeur maximale
pour entier qui est inscrite. Sinon, l'lvation au carr est effectue. Le rsultat est transmis
comme valeur de la fonction.
FUNCTION CARRE : INT
(*******************************************************************
Cette fonction fournit comme valeur le carr de la valeur d'entre
ou en cas de dbordement, la valeur maximale pouvant tre
reprsente par un entier.
*******************************************************************)
VAR_INPUT
valeur : INT;
END_VAR
BEGIN
IF valeur <= 181 THEN
CARRE := valeur * valeur; //Calcul de la valeur de la fonction
ELSE
CARRE := 32_767; // Fournir la valeur maximale en cas de
dbordement
END_IF;
END_FUNCTION

3-12

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dveloppement d'un programme S7-SCL

3.10

Cration du FB CALCUL

3.10.1

Organigramme de EXPLOITER
Cette figure reprsente l'algorithme sous forme d'organigramme.
CALCUL
Bloc fonctionnel

Dbut

Dbut de linstruction
REPEAT

changer := FALSE
I := LIMITE

I signifie index

Dbut de linstruction
FOR

non
I >= 1 ?
oui

mmoire_tri [I-1] >


mmoire_tri [I]
?

oui
Echanger les valeurs
de la mmoire de tri [I-1]
et de la mmoire de tri [I]

non

ECHANGER = TRUE

Fin de linstruction
FOR
Fin de linstruction
REPEAT

I := I-1

changer ?
TRUE

FALSE
I := 0

Dbut de linstruction
FOR

I <= LIMITE ?

non

oui
SQRT
CARRE
Fin de linstruction
FOR

Entrer les rsultats dans le tableau structur des rsultats.


Entrer les rsultats dans le
tableau structur des rsultats.

I := I+1

Fin

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

3-13

Dveloppement d'un programme S7-SCL

3.10.2 Section de dclaration du FB CALCUL

Composition de la section de dclaration


La section de dclaration de ce bloc se compose des blocs de dclaration suivants :
Dclaration des constantes

entre CONST et END_CONST,

Paramtres d'entre/sortie

entre VAR_IN_OUT et END_VAR,

Paramtres de sortie

entre VAR_OUTPUT et END_VAR,

Dclaration des variables temporaires

entre VAR_TEMP et END_VAR.

CONST
LIMITE := 7;
END_CONST
VAR_IN_OUT
memoire_tri
END_VAR

: ARRAY[0..LIMITE] OF INT;

VAR_OUTPUT
memoire_calcul : ARRAY[0..LIMITE] OF
STRUCT
racine_carree : INT;
carre
: INT;
END_STRUCT;
END_VAR
VAR_TEMP
echanger
: BOOL;
indice, aux
: INT;
valeur_r, resultat_r: REAL;
END_VAR

3-14

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dveloppement d'un programme S7-SCL

3.10.3 Section des instructions du FB CALCUL

Droulement du programme
Le paramtre d'entre/sortie "memoire_tri" est combin avec la mmoire circulante
"valeurs_mesure", c'est--dire que le contenu original de la mmoire est cras par les
valeurs de mesure tries.
Le nouveau tableau "memoire_calcul" est cr comme paramtre de sortie pour les rsultats
du calcul. Ses lments sont structurs de telle faon qu'ils contiennent la racine carre et le
carr de chaque valeur de mesure.
La figure ci-aprs montre le lien entre les tableaux dcrits.

mmoire_tri
valeurs_mesure

mmoire_calcul

CALCUL

Cette interface reprsente le noyau de l'change de donnes servant au traitement des


valeurs de mesure. Les valeurs sont enregistres dans le bloc de donnes d'instance
SAISIE_DONNEES, puisqu'une instance locale a t cre pour le FB CALCUL dans le FB
SAISIE appelant.

Section des instructions


Les valeurs de mesure sont d'abord tries dans la mmoire circulante, puis les calculs sont
effectus.
Mthode de l'algorithme de tri
C'est la mthode de permutation permanente des valeurs qui est utilise pour trier la
mmoire circulante ; en d'autres termes, deux valeurs conscutives sont compares l'une
l'autre et permutes jusqu' obtention de l'ordre de tri souhait. La mmoire utilise est
le paramtre d'entre/sortie "memoire_tri".
Dclenchement du calcul
Une fois le tri termin, une boucle de calcul est parcourue qui contient l'appel des
fonctions CARRE pour l'lvation au carr et SQRT pour l'extraction de la racine carre.
Les rsultats sont enregistrs dans le tableau de structures "memoire_calcul".

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

3-15

Dveloppement d'un programme S7-SCL

Section des instructions du FB CALCUL


La section des instructions du bloc de code se prsente comme suit :
BEGIN
(******************************************************************
1re partie : tri par change de paires. Les valeurs sont changes
par paires jusqu' ce que la mmoire des valeurs de mesure soit
trie.
*******************************************************************)
REPEAT
echanger := FALSE;
FOR indice := LIMITE TO 1 BY -1 DO
IF memoire_tri[indice-1] > memoire_tri[indice]
THEN aux
:=
memoire_tri[indice];
memoire_tri[indice]
:= memoire_tri[indice-1];
memoire_tri[indice-1] := aux;
echanger
:= TRUE;
END_IF;
END_FOR;
UNTIL NOT echanger
END_REPEAT;
(******************************************************************
2me partie : calcul de la racine carre avec la fonction standard
SQRT et lvation au carr avec la fonction CARRE.
*******************************************************************)
FOR indice := 0 TO LIMITE BY 1 DO
valeur_r
:= INT_TO_REAL(memoire_tri[indice]);
resultat_r := SQRT(valeur_r);
memoire_calcul[indice].racine_carree := REAL_TO_INT(resultat_r);
memoire_calcul[indice].carre
:=
CARRE(memoire_tri[indice]);
END_FOR;
END_FUNCTION_BLOCK

3-16

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dveloppement d'un programme S7-SCL

3.11

Cration du FB SAISIE

3.11.1 Organigramme de SAISIR


Cette figure reprsente l'algorithme sous forme d'organigramme.
SAISIE
Bloc fonctionnel
Dbut

Modifier
nouvelle
valeur ?

oui
Inscrire valeur de mesure
dans mmoire circulante,
recalculer lindex

non

Modifier
nouveau
tri ?

oui

non

CALCUL

Reprise des rsultats


des calculs dans le
tableau des rsultats

Modifier
nouveau
code ?

Trier la mmoire circulante et effectuer


les calculs (crer cet
effet le tableau des rsultats).

charger depuis le bloc


de donnes dinstance

oui
Evaluation du codage et
dtermination de ladresse
de sortie

non

Choix
fonction ?

La mmoire circulante est ralise


avec lopration MOD : lorsque la limite
est atteinte, elle recommence au
dbut.

Dabord dcaler les bits non


significatifs vers le bord droit,
puis masquer les places inutiles
laide de AND

TRUE

FALSE
Charger rsultat du calcul
de la racine carre

Charger valeur de mesure

Fin

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Charger rsultat du calcul


du cadre

Charger :
inscrire les lments de la liste
avec les adresses de sortie dans
les paramtres de sortie pour ensuite
afficher leurs valeurs.

3-17

Dveloppement d'un programme S7-SCL

3.11.2 Section de dclaration du FB SAISIE

Composition de la section de dclaration


La section de dclaration de ce bloc se compose des blocs de dclaration suivants :
Dclaration des constantes entre CONST et END_CONST,
Paramtres d'entre entre VAR_INPUT et END_VAR,
Paramtres de sortie entre VAR_OUTPUT et END_VAR,
Variables statiques entre VAR et END_VAR ; c'est ici aussi qu'est effectue la dclaration
de l'instance locale du bloc CALCUL.
CONST
LIMITE := 7;
NOMBRE := LIMITE + 1;
END_CONST
VAR_INPUT
entree_val_mesure
: INT ; // Nouvelle valeur de mesure
nouv_val
: BOOL; // Prendre en charge la valeur
// de mesure dans la mmoire
// circulante "valeurs_mesure"
nouv_tri
: BOOL; // Trier les valeurs de mesure
choix_fonction
: BOOL; // Choix de la fonction de calcul
Racine carre ou Carr
nouv_selection
: BOOL; // Valider l'adresse de sortie
selection
: WORD; // Adresse de sortie
END_VAR
VAR_OUTPUT
sortie_resultat
: INT; // Valeur calcule
sortie_val_mesure
: INT; // Valeur de mesure correspondante
END_VAR
VAR
valeurs_mesure
: ARRAY[0..LIMITE] OF INT := 8(0);
memoire_resultats
: ARRAY[0..LIMITE] OF
STRUCT
racine_carree
: INT;
carre
: INT;
END_STRUCT;
pointeur
: INT
:= 0;
anc_val
: BOOL := TRUE;
anc_tri
: BOOL := TRUE;
anc_selection
: BOOL := TRUE;
adresse
: INT
:= 0; //Adresse de sortie
convertie
instance_calcul
: CALCUL,
//Dfinition de l'instance
//locale
END_VAR

3-18

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dveloppement d'un programme S7-SCL

Variables statiques
Nous avons choisi le type de bloc FB parce qu'il y a des donnes enregistrer d'un cycle de
programme au suivant. Il s'agit des variables statiques qui sont dclares dans la section de
dclaration "VAR, END_VAR".
On appelle variables statiques les variables locales dont les valeurs sont conserves durant
toutes les excutions du bloc concern. Elles servent stocker les valeurs d'un bloc
fonctionnel et sont conserves dans le bloc de donnes d'instance.

Initialisation de variables
Notez les valeurs initiales qui sont crites dans les variables lors de l'initialisation du bloc
(aprs son chargement dans la CPU). L'instance locale du FB CALCUL est galement
dclare dans la section de dclaration "VAR, END_VAR". Ce nom sera utilis plus tard
pour l'appel et l'accs aux paramtres de sortie. L'instance globale SAISIE_DONNEES sert
de mmoire de donnes.
Nom

Type de donnes Valeur initiale

Description

Valeurs_mesure

ARRAY [..]
OF INT

8(0)

Mmoire circulante pour les valeurs de


mesure

Memoire_resultats ARRAY [..]


OF STRUCT

Tableau de structures avec les


composants "racine_carree" et "carre" de
type INT

Pointeur

INT

Pointeur de la mmoire circulante


dsignant l'endroit o la valeur de mesure
suivante est crite

anc_val

BOOL

FALSE

Valeur prcdente pour la prise en charge


de valeur de mesure avec "nouv_val"

anc_tri

BOOL

FALSE

Valeur prcdente pour le tri avec


"nouv_tri"

anc_selection

BOOL

FALSE

Valeur prcdente pour la validation du


codage avec "nouv_selection"

Adresse

INT

Adresse pour la sortie de valeur de mesure


ou de rsultat

Instance_calcul

Instance locale

Instance locale du FB CALCUL

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

3-19

Dveloppement d'un programme S7-SCL

3.11.3 Section des instructions du FB SAISIE

Composition de la section des instructions


La section des instructions de SAISIE comporte 3 parties.
Saisie des valeurs de mesure
Lorsque le paramtre d'entre "nouv_val" a chang par rapport "anc_val", une nouvelle
valeur de mesure est lue dans la mmoire circulante.
Dclenchement du tri et du calcul
Tri et calcul sont dclenchs par l'appel du bloc fonctionnel CALCUL lorsque le paramtre
d'entre "nouv_tri" a chang par rapport "anc_tri".
Evaluation du codage et prparation de la sortie
Le codage est lu sous forme de mot. Conformment la convention SIMATIC, cela
signifie que le groupe de commutateurs du haut (octet 0) contient les 8 bits de poids fort
du mot d'entre et que le groupe de commutateurs du bas (octet 1) contient ceux de
poids faible. La figure ci-aprs montre l'emplacement des commutateurs permettant
d'effectuer le codage.

3-20

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dveloppement d'un programme S7-SCL

Calcul de l'adresse
La figure ci-aprs montre le calcul de l'adresse. Le mot d'entre EW0 contient dans ses bits
12 14 le codage qui est valid lorsqu'un front est dtect au commutateur de codage
(bit 15). La valeur "adresse" est dtermine par dcalage vers la droite au moyen de la
fonction standard SHR et masquage des bits significatifs avec un masque AND.
C'est avec cette adresse que les lments du tableau (rsultat du calcul et valeur de mesure
correspondante) sont crits dans les paramtres de sortie. Le paramtre "choix_fonction"
dtermine si le rsultat est la racine carre ou le carr.
Un front du commutateur de codage est signal par le changement de "nouv_selection" par
rapport "anc_selection".

Commutateur
sur module

Commutateur
pour valeur
de codage
Commutateur
de codage

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

0
1
2
3
4
5
6
7

Mot dans
mmoire

Vers SHR
de 12 places

Vers AND,
Masque 0007

0
1
2
3
4
5
6
7

0
1
2
3
4
5
6
7

0
1
2
3
4
5
6
7

0
1
2
3
4
5
6
7

8
9
10
11
12
13
14
15

8
9
10
11
12
13
14
15

8
9
10
11
12
13
14
15

Octet 1

EW0

adresse

Octet 0

3-21

Dveloppement d'un programme S7-SCL

Section des instructions


La section des instructions du bloc de code se prsente comme suit.
BEGIN
(*****************************************************************
1re partie : saisie des valeurs de mesure.
La modification de "nouv_val" provoque la saisie de la valeur de
mesure. L'opration MOD permet de raliser une mmoire circulante
pour valeurs de mesure.
******************************************************************)
IF nouv_val <> anc_val THEN
pointeur
:= pointeur MOD NOMBRE;
valeurs_mesure[pointeur] := entree_val_mesure;
pointeur
:= pointeur + 1;
END_IF;
anc_val := nouv_val;
(******************************************************************
2me partie : dclenchement du tri et du calcul
La modification de "nouv_tri" dclenche le tri de la mmoire
circulante et l'excution de calculs avec les valeurs de mesure. Les
rsultats sont enregistrs dans un nouveau tableau "memoire_calcul".
******************************************************************)
IF nouv_tri <> anc_tri THEN
pointeur := 0;
//Remise 0 du pointeur de la mmoire circulante
instance_calcul(memoire_tri := valeurs_mesure);//Appel du FB
CALCUL
END_IF;
anc_tri
:= nouv_tri;
memoire_resultats := instance_calcul.memoire_calcul; //Carr et
racine carre
(******************************************************************
3me partie : valuation du codage et prparation de la sortie
Si modification de "nouv_selection", le codage pour adressage de
l'lment de tableau pour la sortie est dtermin de nouveau : les
bits significatifs de "selection" sont masqus et convertis en
entiers. Selon la position de l'inverseur de "choix_fonction", c'est
"racine_carree" ou "carre" qui est mis disposition pour la sortie.
*******************************************************************)
IF nouv_selection <> anc_selection THEN
adresse := WORD_TO_INT(SHR(IN := selection, N := 12) AND
16#0007);
END_IF;
anc_selection := nouv_selection;
IF choix_fonction THEN
sortie_resultat:= memoire_resultats[adresse].carre;
ELSE
sortie_resultat:= memoire_resultats[adresse].racine_carree;
END_IF;
sortie_val_mesure := valeurs_mesure[adresse]; //Indication de la
valeur de mesure
END_FUNCTION_BLOCK

3-22

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dveloppement d'un programme S7-SCL

3.12

Cration du bloc d'organisation CYCLE

Tches de l'OB CYCLE


Nous avons choisi un OB1, car il est appel de manire cyclique. Il sert raliser les tches
suivantes pour le programme :
Appel et dfinition des paramtres du bloc fonctionnel SAISIE avec donnes d'entre et
donnes de commande,
Prise en charge des donnes de rsultat du bloc fonctionnel SAISIE,
Sortie des valeurs indiquer.
La section de dclaration commence par la zone de donnes temporaire
"donnees_systeme" de 20 octets.

Code du programme de l'OB CYCLE


ORGANIZATION_BLOCK CYCLE
(*******************************************************************
CYCLE est identique un OB1, savoir qu'il est appel cycliquement
par le systme S7.
1re partie : appel du bloc fonctionnel et transmission des valeurs
d'entre
2me partie : prise en charge des valeurs de sortie et sortie avec
slection
*******************************************************************)
VAR_TEMP
donnees_systeme : ARRAY[0..20] OF BYTE; //Zone pour l'OB1
END_VAR
BEGIN
(* 1re partie :
***************************************************)
SAISIE.SAISIE_DONNEES(
entree_val_mesure := WORD_TO_INT(entree),
nouv_val
:= "entree 0.0", //Commutateur de saisie
//sous forme de mnmonique
nouv_tri
:= commutateur_de_tri,
choix_fonction
:= commutateur_de_fonction,
nouv_selection
:= commutateur_de_codage,
selection
:= codage);
(* 2me partie : **************************************************)
IF commutateur_de_sortie THEN
//Commutation de la sortie
sortie := SAISIE_DONNEES.sortie_resultat;
//Racine carre
//ou carr
ELSE
sortie := SAISIE_DONNEES.sortie_val_mesure; //Valeur de mesure
END_IF;
END_ORGANIZATION_BLOCK

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

3-23

Dveloppement d'un programme S7-SCL

Conversion du type de donnes


La valeur de mesure fournie au module d'entre est du type de donnes BYTE. Elle doit tre
convertie en INT : vous devez donc la convertir de WORD en INT, la conversion prcdente
de BYTE en WORD tant automatiquement effectue par le compilateur. Par contre, il n'est
pas ncessaire de convertir la sortie, puisqu'elle est dclare comme INT dans la table des
mnmoniques.

3-24

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dveloppement d'un programme S7-SCL

3.13

Donnes de test

Conditions requises
Vous avez besoin pour le test d'un module d'entre avec l'adresse 0 et d'un module de sortie
avec l'adresse 4.
Avant le test, poussez vers la gauche ("0") les 8 commutateurs suprieurs du module
d'entre et vers la droite ("1") les 8 commutateurs infrieurs.
Chargez nouveau les blocs dans la CPU, puisque les valeurs initiales des variables sont
galement testes.

Etapes du test
Effectuez maintenant le test en vous conformant aux tapes dcrites dans le tableau ciaprs.
Test Action
1

Rglez le codage sur "111" (E0.4, E0.5 et E0.6) et


validez-le l'aide du commutateur de codage
(E0.7).
2
Faites indiquer la racine carre correspondante en
positionnant le commutateur de sortie (E0.3) sur
"1".
3
Faites indiquer le carr correspondant en
positionnant le commutateur de fonction (E0.2) sur
"1".
4a Remettez le commutateur de sortie (E0.3) "0".

4b Donnez comme nouvelle valeur de mesure au


module d'entre la valeur 3, c'est--dire la valeur
binaire "11".
5a Observez la lecture de la valeur de mesure : rglez
le codage sur "000" et validez-le l'aide du
commutateur de codage (E0.7) afin de pouvoir
observer plus tard la saisie de la valeur.
5b Inversez le commutateur de saisie "entree 0.0"
(E0.0). Ceci provoque la lecture de la valeur
donne la 4e tape du test.
6
Dclenchez le tri et le calcul en inversant le
commutateur de tri (E0.1).
7
Indication de la valeur de mesure aprs le tri :
rglez le codage sur "110" (E0.6 = 1, E0.5 = 1,
E0.4 = 0 pour EB0, ce qui correspond aux bits 14,
13 et 12 de EW0) et validez-le en inversant le
commutateur de codage.
8a Indication des rsultats correspondants : une
inversion du commutateur de sortie (E0.3)
provoque l'indication du carr de la valeur de
mesure de l'tape 7 du test.
8b Inversez le commutateur de fonction (E0.2) pour
obtenir aussi la racine carre.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Consquence
Toutes les sorties du module de sortie (octet de poids
faible) sont actives et les diodes s'allument.
Les indications la sortie quivalent la valeur
binaire "10000" (=16).
15 indicateurs s'allument la sortie. Ceci signale un
dbordement, car 255 x 255 est une valeur trop
leve pour la plage des entiers.
La valeur de mesure est nouveau indique : tous les
indicateurs des sorties de l'octet de poids faible du
module de sortie sont "1".
Rien ne change encore sur le module de sortie.

La sortie indique 0, c'est--dire qu'aucun des


indicateurs ne s'allume.

La sortie indique la valeur de mesure 3 , valeur binaire


"11".
La sortie indique nouveau 0, puisque le tri a dcal
la valeur de mesure vers le haut du tableau.
La sortie indique nouveau la valeur de mesure "11",
puisque c'est la seconde valeur la plus leve dans le
tableau.

La valeur de sortie 9, c'est--dire la valeur binaire


"1001" est indique.

La valeur de sortie 2, c'est--dire la valeur binaire "10"


est indique.

3-25

Dveloppement d'un programme S7-SCL

Test complmentaire
Les tableaux ci-aprs expliquent les commutateurs du module d'entre et proposent des
modles de test pour la racine carre et le carr qui vous aideront dfinir vos propres
tapes de test.
L'entre est effectue au moyen des commutateurs : les 8 du haut permettent de
commander le programme, les 8 du bas de fournir une valeur de mesure.
La sortie est effectue au moyen d'indicateurs : le groupe du haut indique l'octet de sortie
de poids fort, celui du bas l'octet de poids faible.
Commutateurs de Nom
commande

Explication

Voie 0

Commutateur de saisie

Inversion pour prise en charge de la valeur de


mesure

Voie 1

Commutateur de tri

Inversion pour tri/exploitation

Voie 2

Commutateur de fonction A gauche ("0") : racine carre,


A droite ("1") : carr

Voie 3

Commutateur de sortie

A gauche ("0") : valeur de mesure,


A droite ("1") : rsultat

Voie 4

Codage

Adresse de sortie, bit 0

Voie 5

Codage

Adresse de sortie, bit 1

Voie 6

Codage

Adresse de sortie, bit 2

Voie 7

Commutateur de codage

Inversion pour validation du codage

Le tableau suivant contient 8 valeurs de mesure dj tries titre d'exemple.


Entrez les valeurs dans n'importe quel ordre. Pour cela, rglez la combinaison binaire
respective et prenez la valeur en charge en inversant le commutateur de saisie. Une fois
toutes les valeurs saisies, dclenchez le tri et l'exploitation en inversant le commutateur de
tri. Aprs cela, vous pouvez prendre connaissance des valeurs de mesure tries ou des
rsultats, racine carre ou carr.
Valeur de mesure
0000 0001 =

3-26

Racine carre
0, 0000 0001 = 1

Carr
0000 0000, 0000 0001 =

0000 0011 =

0, 0000 0010 = 2

0000 0000, 0000 1001 =

0000 0111 =

0, 0000 0011 = 3

0000 0000, 0011 0001 =

49

0000 1111 = 15

0, 0000 0100 = 4

0000 0000, 1110 0001 =

225

0001 1111 = 31

0, 0000 0110 = 6

0000 0011, 1100 0001 =

961

0011 1111 =

63

0, 0000 1000 = 8

0000 1111, 1000 0001 = 3969

0111 1111 = 127

0, 0000 1011 = 11

0011 1111, 0000 0001 = 16129

1111 1111 = 255

0, 0001 0000 = 16

0111 111, 1111 1111 = indication de dbordement !

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Utilisation de S7-SCL

4.1

Dmarrer le logiciel S7-SCL

Dmarrage depuis l'interface de Windows


Une fois que vous avez install le logiciel S7-SCL sur votre PG, vous pouvez le dmarrer au
moyen du bouton "Dmarrer" de la barre des tches de Windows (mention sous
"SIMATIC/STEP 7").

Dmarrage depuis SIMATIC Manager


La manire la plus rapide de dmarrer S7-SCL est de positionner le pointeur sur une source
S7-SCL dans SIMATIC Manager et de cliquer deux fois.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

4-1

Utilisation de S7-SCL

4.2

Interface utilisateur
Les fentres de S7-SCL comportent les lments standard suivants :

1. Barre de titre :
elle contient le titre de la fentre et les boutons permettant de la commander.
2. Barre des menus :
elle contient tous les menus disponibles dans cette fentre.
3. Barre d'outils :
elle contient des icnes permettant de dclencher rapidement les commandes les plus
frquentes.
4. Zone de travail :
elle contient les diffrentes fentres dans lesquelles vous ditez le texte du programme
ou consultez les informations du compilateur ou du test.
5. Barre d'tat :
elle affiche l'tat et d'autres informations sur l'objet slectionn.

4-2

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Utilisation de S7-SCL

4.3

Personnalisation de l'interface utilisateur

Personalisation de l'diteur
Pour adapter l'diteur vos besoins, choisissez la commande Outils > Paramtres et
cliquez sur l'onglet "Editeur" dans la bote de dialogue "Paramtres". Vous pouvez y faire les
choix suivants :
Options de l'onglet "Editeur"

Signification

Police

Dtermine la police pour tout le texte source.

Largeur tabulateurs

Dtermine la largeur de colonne des tabulations.

Numros de ligne

Affiche les numros au dbut des lignes.

Enregistrer avant de compiler

Propose d'enregistrer la source avant de la compiler.

Demande de confirmation

Demande confirmation avant d'enregistrer.

Personnalisation de la police et de la couleur des caractres


Pour modifier la police et la couleur utilises pour les diffrents lments de langage,
choisissez la commande Outils > Paramtres et cliquez sur l'onglet "Format" dans la bote
de dialogue "Paramtres". Vous pouvez y faire les choix suivants :
Options de l'onglet "Format"

Signification

Mots-cls en majuscules

Ecrit en majuscules la saisie les mots-cls de S7-SCL tels que


FOR, WHILE, FUNCTION_BLOCK, VAR ou END_VAR.

Indentation aprs mots-cls

Dcale la saisie les lignes des diffrentes sections de


dclaration et celles des instructions de contrle IF, CASE, FOR,
WHILE et REPEAT.

Indentation automatique

Aprs un changement de ligne, dcale automatiquement la


nouvelle ligne de la mme valeur que la ligne prcdente. Cette
option ne s'applique qu'aux nouvelles lignes saisies.

Style/Couleur

Dtermine le style et la couleur utiliss pour les diffrents


lments de langage.

Les choix faits dans cet onglet ne sont efficaces que si vous avez activ l'option "Utiliser les
formats suivants" en tte de l'onglet.

Barre d'outils, barre de points d'arrt, barre d'tat


Vous pouvez afficher et masquer ces trois barres indpendamment l'une de l'autre. Activez
ou dsactivez pour cela la commande correspondante du menu Affichage. Une coche
ct du nom de la commande indique si elle est active ou pas.

Fentre "Erreurs et avertissements"


La fentre "Erreurs et avertissements" affiche les erreurs et avertissements qui se produisent
lors de la compilation d'une source. Vous pouvez l'activer et la dsactiver en slectionnant la
commande de menu Affichage > Erreurs et avertissements.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

4-3

Utilisation de S7-SCL

4.4

Cration et manipulation d'une source S7-SCL

4.4.1

Crer une nouvelle source S7-SCL


Avant de pouvoir crire un nouveau programme S7-SCL, il vous faut d'abord crer une
nouvelle source S7-SCL. Ce que vous allez faire dans le dossier "Sources" sous un
programme S7.

Structure d'un programme S7 dans SIMATIC Manager


Les sources que vous crez avec S7-SCL peuvent tre ranges comme suit dans la
structure d'un programme S7 :
Programme S7
Blocs

Bloc
(par exemple, FB1, OB1)

Sources

Source
(par exemple, source SCL)

Mnmoniques

Procdez de la manire suivante :


1. Ouvrez la bote de dialogue "Nouveau"
-

en cliquant sur l'icne "Nouveau" dans la barre d'outils ou

en choisissant la commande Fichier > Nouveau.

2. Dans la bote de dialogue, choisissez


-

un projet,

le filtre "Source S7-SCL" et

le dossier "Sources" dans le programme S7.

3. Tapez le nom de l'objet source dans la zone de texte approprie. Il peut comporter
jusqu' 24 caractres.
4. Confirmez par "OK".
L'objet source est alors cr sous le nom que vous lui avez donn et il s'affiche dans une
fentre de travail pour que vous puissiez l'diter.

Nota
Vous pouvez aussi crer une source S7-SCL avec SIMATIC Manager en slectionnant un
dossier Sources, puis en choisissant la commande Insertion > Logiciel S7 > Source
S7-SCL.

4-4

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Utilisation de S7-SCL

4.4.2

Ouvrir une source S7-SCL


Vous pouvez ouvrir une source S7-SCL pour la compiler ou pour l'diter.
Procdez de la manire suivante :
1. Ouvrez la bote de dialogue "Ouvrir"
-

en cliquant sur l'icne "Ouvrir" ou

en choisissant la commande Fichier > Ouvrir.

2. Dans la bote de dialogue, choisissez


-

le projet souhait,

le programme S7 souhait et

le dossier Sources correspondant.

3. Slectionnez la source S7-SCL.


4. Cliquez sur le bouton "OK".

Nota
Vous pouvez aussi ouvrir des sources S7-SCL dans SIMATIC Manager en cliquant deux
fois sur leur icne ou en choisissant la commande Edition > Ouvrir l'objet aprs avoir
slectionn la source qui vous intresse.

4.4.3

Fermer une source S7-SCL


Procdez de la manire suivante :
Choisissez la commande Fichier > Fermer ou
cliquez sur le bouton "Fermer" dans la barre de titre de la fentre.

Nota
Si vous avez modifi la source, un message vous proposera d'enregistrer ces modifications
avant la fermeture. Si vous ne les enregistrez pas, elles seront perdues.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

4-5

Utilisation de S7-SCL

4.4.4

Ouvrir des blocs


Ouvrir des blocs n'est pas possible avec l'application S7-SCL. Vous pouvez uniquement
ouvrir la source correspondante. Les blocs crs avec S7-SCL peuvent cependant tre
ouverts avec l'diteur CONT/LOG/LIST qui les affiche en langage de programmation LIST et
en permet l'dition dans ce langage. N'effectuez aucune modification en reprsentation
LIST, car
les instructions MC7 affiches ne reprsentent pas ncessairement un bloc LIST correct,
une compilation sans erreur avec le compilateur LIST implique des modifications qui
exigent des connaissances approfondies en LIST comme en S7-SCL,
le bloc compil avec LIST affiche le code du langage LIST et non plus celui de S7-SCL,
la source S7-SCL et le code MC7 ne seraient plus cohrents.
Pour plus d'informations, veuillez consulter l'aide en ligne de STEP 7.

Nota
La maintenance de vos programmes de CPU sera plus facile si vous effectuez les
modifications ventuelles dans les sources S7-SCL et les compilez nouveau.

4.4.5

Dfinir les proprits de l'objet


Vous dfinissez les proprits de l'objet en donnant des attributs aux blocs. Quant aux
proprits de la source S7-SCL (ex. : Auteur), vous les dterminez dans la bote de dialogue
"Proprits".

Procdez de la manire suivante :


1. Choisissez la commande Fichier > Proprits.
2. Tapez les options dans la bote de dialogue qui s'ouvre.
3. Confirmez par "OK".

4.4.6

Gnrer des sources S7-SCL avec un diteur standard


Vous pouvez aussi utiliser un diteur standard ASCII pour diter votre source S7-SCL. Mais
dans ce cas, vous ne disposerez pas des fonctions d'dition si pratiques ni de l'aide en ligne
intgre de S7-SCL.
Une fois la source cre et enregistre, vous devez l'importer dans le dossier "Sources" d'un
programme S7 au moyen de SIMATIC Manager (voir la documentation de STEP 7). Aprs
quoi vous pouvez ouvrir la source dans S7-SCL pour en poursuivre l'dition ou pour la
compiler.

4-6

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Utilisation de S7-SCL

4.4.7

Protection de bloc
Vous pouvez instaurer pour vos blocs une protection de bloc, en indiquant dans la source
l'attribut KNOW_HOW_PROTECT lors de la programmation.

Protger un bloc a les consquences suivantes :


Lorsque vous ouvrirez plus tard un bloc compil avec l'diteur incrmental LIST, vous ne
pourrez pas examiner la section des instructions du bloc.
Dans la section de dclaration du bloc, seules les variables des types de dclaration
VAR_IN, VAR_OUT et VAR_IN_OUT s'afficheront. Les variables des sections VAR et
VAR_TEMP resteront caches.

Pour saisir la protection de bloc il faut savoir que :


Le mot-cl est KNOW_HOW_PROTECT ; il faut l'entrer avant tous les autres attributs de
bloc.
C'est ainsi que vous pouvez protger les OB, FB, FC et DB.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

4-7

Utilisation de S7-SCL

4.5

Rgles pour les sources S7-SCL

4.5.1

Rgles gnrales pour les sources S7-SCL


Les sources S7-SCL doivent suivre les rgles suivantes.
Dans une source S7-SCL, on peut diter autant de blocs de code (FB, FC, OB), de blocs
de donnes (DB) et de types de donnes utilisateur (UDT) que l'on veut.
Chaque sorte de bloc a une composition typique.
Chaque instruction et chaque dclaration de variable se termine par un point-virgule (;).
Il n'est pas fait de diffrence entre minuscules et majuscules.
Les commentaires ne servent qu' expliquer le programme. Ils n'ont pas d'influence sur
son droulement.
Des blocs de donnes d'instance sont automatiquement gnrs l'appel d'un bloc
fonctionnel. Il n'est pas ncessaire de les diter.
Le DB0 est rserv au systme. Vous ne pouvez donc pas gnrer de DB portant ce
nom.

4.5.2

Ordre des blocs


En crivant la source S7-SCL, vous devez tenir compte des principes suivants en ce qui
concerne l'ordre des blocs :
Un bloc appel doit prcder le bloc appelant.
Un type de donnes utilisateur (UDT) doit prcder les blocs dans lesquels il est utilis.
Un bloc de donnes auquel un type de donnes utilisateur (UDT) est associ vient aprs
cet UDT.
Un bloc de donnes est plac avant tous les blocs qui y ont accs.

4-8

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Utilisation de S7-SCL

4.5.3

Utilisation de mnmoniques
Dans un programme S7-SCL, vous travaillez avec des oprandes tels que signaux d'E/S,
mmentos, compteurs, temporisations et blocs. Vous pouvez les adresser de manire
absolue (ex. : E1.1, M2.0, FB11), mais vos sources S7-SCL seront beaucoup plus lisibles si
vous employez cet effet des mnmoniques (ex. : Moteur_marche). C'est alors par son
mnmonique que vous accderez un oprande dans votre programme utilisateur.

Mnmoniques locaux et globaux


Vous utiliserez des mnmoniques globaux pour les zones de mmoire de la CPU et les
dsignations de bloc. Ils sont connus dans l'ensemble du programme utilisateur et leur
dsignation doit donc tre univoque. Vous pouvez crer la table des mnmoniques
l'aide de STEP 7.
Les mnmoniques locaux sont connus seulement dans le bloc dont la section de dclaration
contient leur dfinition. Vous pouvez donner des noms symboliques aux variables,
paramtres, constantes et repres de saut, tout en employant le mme nom des fins
diffrentes dans des blocs diffrents.

Nota
Veillez ce que les mnmoniques soient univoques et qu'ils ne soient pas identiques un
mot-cl.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

4-9

Utilisation de S7-SCL

4.6

Editer dans des sources S7-SCL

4.6.1

Annuler la dernire action d'dition


La commande Edition > Annuler permet d'annuler une ou plusieurs actions.
Mais attention : toutes les oprations ne peuvent pas tre annules. La commande Fichier >
Enregistrer, par exemple, ne peut tre annule.

4.6.2

Rtablir une action d'dition


Aprs avoir annul une ou plusieurs actions, vous pouvez les restaurer avec la commande
Edition > Rtablir.

4.6.3

Rechercher et remplacer des parties de texte


Lorsque vous souhaitez retoucher ou modifier une source S7-SCL, vous pouvez souvent
gagner un temps prcieux en recherchant des parties de texte et en les remplaant par
d'autres au besoin. La recherche peut porter par exemple sur des mots-cls, des
identificateurs absolus, des identificateurs symboliques, etc.
Procdez de la manire suivante :
1. Choisissez la commande Edition > Rechercher/Remplacer....
2. Slectionnez les options dans la bote de dialogue "Rechercher/Remplacer".
3. Lancez la recherche

4-10

en cliquant sur le bouton "Rechercher" pour rechercher une partie de texte et la


slectionner ou

en cliquant sur le bouton "Remplacer" ou "Remplacer tout" pour rechercher le texte et


le remplacer par celui qui est indiqu dans la zone de texte "Remplacer par".

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Utilisation de S7-SCL

4.6.4

Slectionner des parties de texte


Vous pouvez slectionner des parties de texte en maintenant le bouton de la souris enfonc
et en faisant glisser le pointeur sur la partie du texte en question.
Vous pouvez en outre :
Slectionner tout le texte d'une source en choisissant la commande Edition >
Slectionner tout.
Slectionner un mot en cliquant deux fois dessus.
Slectionner toute une ligne en cliquant au bord gauche de la ligne.
La commande Edition > Annuler la slection permet de supprimer la slection.

4.6.5

Copier des parties de texte


Cette fonction permet de copier des parties de programme ou des programmes entiers. Le
texte copi est mmoris dans le presse-papiers partir duquel vous pouvez l'insrer un
autre endroit autant de fois que vous le voulez.
Procdez de la manire suivante :
1. Slectionnez la partie de texte copier.
2. Copiez-la
-

en cliquant sur l'icne "Copier" dans la barre d'outils ou

en choisissant la commande Edition > Copier.

3. Amenez le curseur l'endroit (dans la mme application ou dans une autre) o vous
voulez insrer (coller) la partie de texte.
4. Collez-la
-

en cliquant sur l'icne "Coller" de la barre d'outils ou

en choisissant la commande Edition > Coller.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

4-11

Utilisation de S7-SCL

4.6.6

Couper des parties de texte


Cette fonction permet d'amener le texte slectionn dans le presse-papiers. Habituellement,
elle est utilise avec la commande Edition > Coller qui insre le contenu du presse-papiers
la position du curseur.
Procdez de la manire suivante :
1. Slectionnez la partie de texte couper.
2. Coupez-la
-

en cliquant sur l'icne "Couper" dans la barre d'outils ou

en choisissant la commande Edition > Couper.

Nota

4.6.7

Il n'est pas possible de couper la partie de texte slectionne si la commande Edition >
Couper n'est pas disponible (affiche sur fond gris).

La commande Edition > Coller permet d'insrer la partie de texte coupe un autre
endroit (du mme programme ou d'un autre).

Le contenu du presse-papiers est conserv jusqu' ce que vous excutiez nouveau


l'une des commandes Edition > Couper ou Edition > Copier.

Effacer des parties de texte


Vous pouvez supprimer du texte source une partie de texte slectionne.
Procdez de la manire suivante :
1. Slectionnez le texte effacer.
2. Choisissez la commande Edition > Effacer.
Le texte effac n'est pas mmoris dans le presse-papiers. Il peut tre insr de nouveau
grce l'une des commandes Edition > Annuler ou Edition > Rtablir.

4-12

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Utilisation de S7-SCL

4.6.8

Positionner le curseur dans une ligne donne


Les fonctions suivantes vous permettent de positionner le curseur de manire prcise.

Positionnement dans un numro de ligne prcis


Vous pouvez positionner le curseur au dbut d'une ligne prcise :
1. Choisissez la commande de menu Edition > Aller la ligne.
La bote de dialogue "Aller " s'ouvre.
2. Entrez le numro de la ligne dans la bote de dialogue "Aller ".
3. Confirmez par "OK".

Positionnement sur le signet suivant / prcdent


Si vous avez dfini des signets dans la source, vous pouvez naviguer de l'un l'autre :
Choisissez la commande de menu Edition > Aller > Signet suivant / Signet
prcdent.

Positionnement sur l'erreur suivante / prcdente dans le code du programme


Aprs la compilation, la fentre "Erreurs et avertissements" affiche toutes les erreurs de
syntaxe en indiquant les numros de ligne et de colonne.
S7-SCL offre la possibilit de naviguer entre les diffrents emplacements d'erreurs dans le
programme et ainsi de corriger conscutivement toutes les erreurs dtectes lors du
processus de compilation prcdent :
1. Positionnez le curseur un emplacement quelconque dans le texte source.
2. Choisissez la commande de menu Edition > Aller > Erreur prcdente / Erreur
suivante.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

4-13

Utilisation de S7-SCL

4.6.9

Indentation des lignes selon la syntaxe


Les fonctions suivantes vous permettent de structurer les sources S7-SCL en dcalant la
marge des lignes.
Indentation automatique
Dcale automatiquement la nouvelle ligne de la mme valeur que la ligne prcdente
aprs un changement de ligne.
Indentation aprs mots-cls
Dcale les lignes des diffrentes sections de dclaration et celles des structures de
contrle IF, CASE, FOR, WHILE et REPEAT.

Procdez de la manire suivante :


1. Choisissez la commande Outils > Paramtres.
2. Dans la bote de dialogue qui s'ouvre, slectionnez l'onglet "Format".
3. Assurez-vous que l'option "Utiliser les formats suivants" est bien active.
4. Cochez l'option "Indentation automatique" ou "Indentation aprs mots-cls".

4-14

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Utilisation de S7-SCL

4.6.10 Choisir le style et la couleur des caractres


Employez des couleurs et des styles diffrents pour distinguer les lments de langage dans
votre source S7-SCL. Elle en sera plus lisible et aura un aspect plus professionnel. Vous
disposez des fonctions suivantes pour influencer la prsentation du texte source :
Mots-cls en majuscules
Si vous activez cette fonction, les mots-cls dfinis tels que FOR, WHILE,
FUNCTION_BLOCK, VAR ou END_VAR seront crits en majuscules.
Choix du style et de la couleur
Il y a dj des styles et des couleurs par dfaut pour les diffrents lments de langage
tels qu'oprations, commentaires ou constantes. Vous pouvez les modifier votre
convenance.
Voici les couleurs par dfaut :
Couleur
Bleu

Elment de langage

Exemple

Mot-cl

ORGANIZATION_BLOCK

Type de donnes prdfini

INT

Identificateur prdfini

ENO

Fonction standard

BOOL_TO_WORD

Ocre

Opration

NOT

Rose

Constante

TRUE

Bleu-vert

Commentaire

//... ou (*...*)

Violet

Mnmonique global (table des mnmoniques) crit "Moteur"


entre guillemets

Noir

Texte normal

Variable

Procdez de la manire suivante :


1. Choisissez la commande Outils > Paramtres.
2. Dans la bote de dialogue qui s'affiche, slectionnez l'onglet "Format".
3. Assurez-vous que l'option "Utiliser les formats suivants" est active.
4. Cochez les valeurs de votre choix. Si vous avez besoin d'instructions dtailles sur
l'emploi de la bote de dialogue, cliquez sur le bouton "Aide" alors que la bote est
ouverte.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

4-15

Utilisation de S7-SCL

4.6.11

Positionnement de signets dans le textes source


L'utilisation de signets vous permet de naviguer rapidement dans une source. Les signets
s'avrent utiles, p. ex. pour effectuer des modifications ayant des effets en divers endroits
d'une source. Vous pouvez les insrer des endroits quelconques dans une source. S'il en
existe plusieurs, vous pouvez naviguer de l'un l'autre vers le bas ou vers le haut.

Validit
Les signets sont valides tant que la source est ouverte. Ils ne sont pas enregistrs avec
cette dernire.

Insertion de signets
1. Positionnez le curseur dans la ligne que vous souhaitez slectionner.
2. Choisissez la commande de menu Edition > Afficher/Masquer les signets.

Naviguation entre les diffrents signets


1. Choisissez la commande de menu Edition > Aller > Signet prcdent/suivant.

Suppression de signets
Choisissez la commande de menu Edition > Supprimer tous les signets.

Nota
Les fonctions ncessaires l'utilisation de signets sont rapidement disponibles dans la barre
des signets. Vous affichez la barre des signets en slectionnant la commande de menu
Affichage > Barre des signets.

4-16

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Utilisation de S7-SCL

4.6.12 Insrer des modles


4.6.12.1 Insrer des modles de bloc
L'une des fonctions d'dition de S7-SCL est l'insertion de modles de bloc pour OB, FB, FC,
DB, DB d'instance, DB avec UDT et UDT. Ces modles vous facilitent la saisie et le respect
de la syntaxe.
Procdez de la manire suivante :
1. Positionnez le curseur l'endroit aprs lequel vous souhaitez insrer le modle de bloc.
2. Choisissez la commande approprie Insertion > Modle de bloc > OB/FB/FC/DB/DB
d'instance/DB avec UDT/UDT.

4.6.12.2 Insrer des appels de bloc


S7-SCL vous aide programmer des appels de bloc. Les blocs que vous pouvez appeler
sont :
Les blocs fonctionnels systme (SFB) et les fonctions systme (SFC) des bibliothques
SIMATIC.
Les blocs fonctionnels et les fonctions crs dans S7-SCL.
Les blocs fonctionnels et les fonctions crs dans d'autres langages de STEP 7.
Procdez de la manire suivante :
1. Choisissez la commande Insertion > Appel de bloc.
2. Dans la bote de dialogue qui s'ouvre, choisissez le bloc SFC, SFB, FC ou FB souhait et
confirmez par "OK".
S7-SCL copie automatiquement le bloc appel dans le programme S7 et inscrit dans la
source, sous une forme syntaxique correcte, l'appel du bloc ainsi que ses paramtres
formels.
3. Si vous avez appel un bloc fonctionnel, compltez le nom du bloc de donnes
d'instance.
4. Entrez les valeurs que devra recevoir le bloc (paramtres effectifs). Pour vous faciliter le
choix d'un paramtre effectif, S7-SCL indique le type de donnes requis sous forme de
commentaire.

4.6.12.3 Insrer des modles de commentaire


L'une des fonctions d'dition de S7-SCL est l'insertion de modles de commentaire. Ces
modles vous facilitent la saisie et le respect de la syntaxe.
Procdez de la manire suivante :
1. Positionnez le curseur aprs l'en-tte du bloc qui vous intresse.
2. Choisissez la commande approprie Insertion > Modle de bloc > Commentaire.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

4-17

Utilisation de S7-SCL

4.6.12.4 Insrer des modles de paramtre


L'une des fonctions d'dition de S7-SCL est l'insertion de modles de sections de
dclaration des paramtres. Ces modles vous facilitent la saisie et le respect de la syntaxe.
Vous pouvez dclarer des paramtres dans les blocs fonctionnels et dans les fonctions.
Procdez de la manire suivante :
1. Positionnez le curseur dans la section de dclaration d'un FB ou d'une FC.
2. Choisissez la commande Insertion > Modle de bloc > Paramtres.

4.6.12.5 Insrer des structures de contrle


L'une des fonctions d'dition de S7-SCL est l'insertion de modles de structure de contrle
pour blocs de code. Ces modles vous facilitent la saisie et le respect de la syntaxe.
Procdez de la manire suivante :
1. Positionnez le curseur l'endroit aprs lequel vous souhaitez insrer le modle.
2. Choisissez la commande approprie Insertion > Structure de contrle >
IF/CASE/FOR/WHILE/REPEAT.

4-18

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Utilisation de S7-SCL

4.7

Compiler und programme S7-SCL

4.7.1

Informations sur la compilation


Avant de pouvoir excuter votre programme ou de le tester, il faut d'abord le compiler. Vous
activerez le compilateur en lanant la compilation. Il a les proprits suivantes :
Vous pouvez compiler une source S7-SCL dans son entier ou seulement certains blocs
que vous aurez slectionns dans la source.
Toutes les erreurs de syntaxe dtectes au cours de la compilation s'affichent ensuite
dans une fentre.
Pour chaque appel de bloc fonctionnel, un bloc de donnes d'instance correspondant est
gnr s'il n'existe pas encore.
Vous pouvez aussi compiler plusieurs sources S7-SCL en une seule opration de
compilation ; crez pour cela un fichier d'informations compilation.
La commande Outils > Paramtres permet de choisir les options de compilation.
Quand vous aurez cr et compil un programme utilisateur sans erreur, vous pouvez
supposer qu'il est correct. Des problmes peuvent pourtant survenir lors de l'excution du
programme dans l'automate programmable. Servez-vous des fonctions de test de S7-SCL
pour dtecter ce type d'erreurs.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

4-19

Utilisation de S7-SCL

4.7.2

Choisir les options de compilation


Vous pouvez adapter la compilation vos besoins personnels.
Procdez de la manire suivante :
1. Choisissez la commande Outils > Paramtres pour ouvrir la bote de dialogue
"Paramtres".
2. Slectionnez l'onglet "Compilateur" ou l'onglet "Cration du bloc".
3. Cochez les options souhaites.

Options de l'onglet "Compilateur"


Gnrer code objet

Cette option vous permet d'indiquer si vous voulez gnrer ou pas un code
excutable. Une compilation sans cette option sert simplement vrifier la
syntaxe.

Optimiser code objet

Si vous cochez cette option, les blocs gnrs seront optimiss en ce qui
concerne la place mmoire requise et le temps d'excution dans l'automate
programmable. Il est conseill de toujours la cocher, puisqu'il n'en rsulte
aucun inconvnient qui limiterait les fonctionnalits du bloc.

Surveiller limites tableaux

Si vous cochez cette option, les indices des tableaux seront contrls durant
l'excution du programme S7 afin de garantir qu'ils se trouvent bien dans la
plage autorise par la dclaration du tableau (ARRAY). Lorsqu'un indice
dpasse la plage autorise, le drapeau OK est positionn sur FALSE.

Gnrer infos dbogage

Cette option vous permet d'effectuer une mise au point avec le dbogueur
aprs que vous avez compil le programme et l'avez charg dans la CPU.
Elle augmente toutefois la place mmoire requise par le programme et les
temps d'excution dans l'AS.

Activer drapeau OK

Cette option vous permet d'interroger le drapeau OK dans vos textes sources
S7-SCL.

Imbrication de commentaires
possible

Cochez cette option pour pouvoir crire des commentaires imbriqus dans
votre source S7-SCL.

Long. de chane max.

Vous pouvez rduire ici la longueur standard du type de donnes STRING.


Par dfaut, elle est de 254 caractres. La longueur choisie ici concerne tous
les paramtres de sortie et d'entre/sortie ainsi que les valeurs de retour des
FC. Notez bien qu'elle ne doit pas tre infrieure celle des variables
STRING employes dans le programme.

4-20

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Utilisation de S7-SCL

Options de l'onglet "Cration du bloc"


Ecrasement des blocs

Ecrase les blocs existant dj dans le dossier Blocs d'un programme S7 si des
blocs de mme nom sont gnrs au cours de la compilation.
De mme lors d'un chargement, les blocs de mme nom se trouvant dj dans le
systme cible seront crass.
Si vous ne cochez pas cette option, vous devrez confirmer un message avant que
le bloc soit cras.

Affichage des
avertissements

Les avertissements seront affichs en plus des erreurs aprs une compilation.

Erreurs avant
avertissements

Les erreurs sont affiches avant les avertissements dans la fentre des
avertissements et erreurs

Gnration des donnes


de rfrence

Cochez cette option pour que des donnes de rfrence soient gnres
automatiquement lorsqu'un bloc est gnr.
La commande Outils > Donnes de rfrence vous permet toutefois de gnrer
les donnes de rfrence ou de les mettre jour ultrieurement.

Prise en compte de
l'attribut systme
"S7_server"

Cochez cette option pour que l'attribut systme pour paramtre "S7_server" soit
pris en compte lors de la gnration d'un bloc. Cet attribut est requis lorsque le
paramtre pour la configuration des liaisons ou des messages est significatif. Il
contient le numro de liaison ou de message. Notez que cette option prolonge la
compilation.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

4-21

Utilisation de S7-SCL

4.7.3

Compiler le programme
Avant de pouvoir excuter un programme ou de le tester, il faut d'abord le compiler. Pour
tre sr(e) que vous compilez toujours la version la plus rcente de votre source S7-SCL, il
est conseill de choisir la commande Outils > Paramtres et de cocher l'option "Enregistrer
avant de compiler" dans l'onglet "Editeur". La commande Fichier > Compiler enregistre
alors automatiquement la source S7-SCL.

Procdez de la manire suivante :


1. Enregistrez la source S7-SCL compiler.
2. Pour gnrer un programme excutable, il est absolument ncessaire de cocher l'option
"Gnrer code objet" dans l'onglet "Compilateur" de la bote de dialogue "Paramtres".
3. Modifiez ventuellement d'autres options de compilation.
4. Assurez-vous que la table de mnmoniques correspondante se trouve bien dans le
mme rpertoire de programme.
5. Il y a plusieurs faons de dmarrer la compilation :
-

La commande Fichier > Compiler compile la source dans sa totalit.

La commande Fichier > Compilation partielle ouvre une bote de dialogue


permettant de slectionner certains blocs pour les compiler.

6. La bote de dialogue "Erreurs et avertissements" affiche toutes les erreurs et tous les
avertissements concernant la syntaxe qui ont t mis lors de la compilation du
programme. Corrigez les ventuelles erreurs signales, puis rptez les tapes dcrites
ci-dessus.

4.7.4

Crer un fichier d'informations compilation


Un fichier d'informations compilation vous permet de compiler en une fois plusieurs sources
S7-SCL d'un dossier Sources. Vous y crivez les noms des sources S7-SCL dans l'ordre
dans lequel vous voulez qu'elles soient compiles.

Procdez de la manire suivante :


1. Ouvrez la bote de dialogue "Nouveau" en choisissant la commande Fichier > Nouveau.
2. Slectionnez dans cette bote de dialogue
-

un dossier Sources dans un programme S7 et

le type d'objet "Fichier d'informations compilation".

3. Tapez le nom du fichier dans la zone de texte approprie (24 caractres au plus) et
confirmez par "OK".
4. Le fichier est cr et s'affiche dans une fentre de travail pour que vous puissiez l'diter.
Tapez dans l'ordre souhait les noms des sources S7-SCL compiler et enregistrez le
fichier.
5. Dmarrez ensuite la compilation en choisissant la commande Fichier > Compiler.

4-22

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Utilisation de S7-SCL

4.7.5

Eliminer les erreurs aprs la compilation


Toutes les erreurs et tous les avertissements relatifs la syntaxe, mis lors de la
compilation, s'affichent aprs l'opration dans la fentre "Erreurs et avertissements".
L'apparition d'une erreur empche la gnration du bloc concern, tandis que celle d'un
avertissement n'empche pas la gnration d'un bloc excutable. L'excution dans l'AS peut
toutefois se rvler errone.
Procdez de la manire suivante pour liminer une erreur :
1. Slectionnez l'erreur et appuyez sur la touche F1 pour appeler une description de l'erreur
et une solution pour l'liminer.
2. Si le message indique un numro de ligne (Lxx) et de colonne (Cxx), vous pouvez
localiser la position errone du texte source
-

en cliquant sur le message d'erreur dans la fentre "Erreurs et avertissements", puis


en appelant le menu contextuel avec le bouton droit de la souris et en y choisissant la
commande Afficher l'erreur ;

en cliquant deux fois sur le message d'erreur pour faire sauter le curseur la position
signale (ligne, colonne).

3. Renseignez-vous sur la syntaxe correcte dans la description du langage S7-SCL.


4. Rectifiez le texte source en consquence.
5. Enregistrez la source.
6. Compilez-la de nouveau.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

4-23

Utilisation de S7-SCL

4.8

Enregistrer et imprimer une source S7-SCL

4.8.1

Enregistrer une source S7-SCL


Dans S7-SCL, le terme "Enregistrer" s'applique toujours aux fichiers sources. Les blocs sont
gnrs lors de la compilation du fichier source et automatiquement stocks dans le
rpertoire de programme correspondant. Vous pouvez enregistrer une source S7-SCL tout
moment dans son tat actuel. L'enregistrement n'est pas accompagn d'une compilation.
Les erreurs de syntaxe sont galement enregistres.
Procdez de la manire suivante :
Choisissez la commande Fichier > Enregistrer ou cliquez sur l'icne "Enregistrer" dans
la barre d'outils.
La source S7-SCL est mise jour.
Pour crer une copie de la source S7-SCL actuelle, choisissez la commande Fichier >
Enregistrer sous. Vous voyez s'afficher la bote de dialogue "Enregistrer sous" dans
laquelle vous pouvez indiquer le nom et le chemin de la copie.

4.8.2

Choisir la taille de papier


Voici comment influencer l'aspect d'un listage.
La commande Fichier > Mise en page sert choisir la taille et l'orientation du papier
pour l'impression.
Vous pouvez dfinir les en-ttes et bas de page de vos documents imprimer en
choisissant la commande de menu Fichier > Mise en page, puis en slectionnant
l'onglet "En-ttes/bas page" dans la bote de dialogue suivante.
La commande de menu Fichier > Configuration de l'imprimante vous permet de dfinir
d'autres paramtres pour l'imprimante.

Important
Les indications sur l'orientation du papier doivent tre faites dans la bote de dialogue "Mise
en page". Celles effectues dans la bote de dialogue "Configuration de l'imprimante" ne
sont pas significatives pour l'impression de sources S7-SCL.

La commande Fichier > Aperu avant impression permet de vrifier l'effet obtenu par
les choix effectus avant d'envoyer le document l'imprimante.

4-24

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Utilisation de S7-SCL

4.8.3

Imprimer une source S7-SCL


C'est toujours la source S7-SCL figurant dans la fentre de travail active qui est imprime.
Pour pouvoir imprimer une source, il faut donc qu'elle soit ouverte.

Procdez de la manire suivante :


1. Activez la fentre de travail de la source S7-SCL dont vous souhaitez imprimer le
contenu.
2. Ouvrez la bote de dialogue "Imprimer"
-

en cliquant sur l'icne "Imprimer" ou

en choisissant la commande Fichier > Imprimer.

3. Choisissez les options d'impression dans la bote de dialogue, comme par exemple
l'tendue d'impression ou le nombre de copies.
4. Confirmez par "OK".

4.8.4

Choisir les options d'impression


Vous disposez des fonctions suivantes pour influencer la prsentation du texte source
l'impression :
Pagination chaque dbut de bloc/fin de bloc
Lorsque cette fonction est active, chaque bloc commence sur une nouvelle page ou se
termine par une nouvelle page l'impression.
Numros de ligne
Lorsque cette fonction est active, le numro est imprim au dbut de chaque ligne.
Impression en couleur
Lorsque cette fonction est active, les couleurs utilises dans la source sont imprimes.
Police d'impression
La police Courier New de taille 8 est prvue par dfaut pour l'ensemble du texte. Elle
fournit des rsultats d'impression optimums.
Style
Vous pouvez choisir des styles de caractres diffrents pour les divers lments de
langage. Il s'agit des lments individuels suivants :
Elment de langage

Exemple

Texte normal
Mot-cl

ORGANIZATION_BLOCK

Identificateur d'un type de donnes prdfini

INT

Identificateur prdfini

ENO

Identificateur d'une fonction standard

BOOL_TO_WORD

Opration

NOT

Constante

TRUE

Bloc de commentaire

(* *)

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

4-25

Utilisation de S7-SCL

Elment de langage

Exemple

Ligne de commentaire

//...

Mnmonique global (table des mnmoniques) crit entre


guillemets

"Moteur"

Procdez de la manire suivante :


1. Choisissez la commande Outils > Paramtres.
2. Dans la bote de dialogue qui s'ouvre, slectionnez l'onglet "Impression".
3. Assurez-vous que l'option "Utiliser les formats suivant l'impression" est active.
4. Cochez les valeurs de votre choix. Si vous avez besoin d'instructions dtailles sur
l'emploi de la bote de dialogue, cliquez sur le bouton "Aide" alors que la bote est
ouverte.

4-26

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Utilisation de S7-SCL

4.9

Chargement de programmes

4.9.1

Effacement gnral de la mmoire de la CPU


La fonction Effacement gnral permet d'effacer en ligne l'ensemble du programme
utilisateur dans une CPU.
Procdez de la manire suivante :
1. Choisissez la commande Systme cible > Etat de fonctionnement et mettez la CPU
l'ARRET.
2. Choisissez la commande Systme cible > Effacement gnral.
3. Confirmez cette action dans la bote de dialogue qui s'affiche.

4.9.2

Attention

La CPU est remise zro.

Toutes les donnes utilisateur sont effaces.

La CPU suspend toutes les liaisons existantes.

Lorsqu'une carte mmoire est enfiche, la CPU copie son contenu aprs l'effacement
gnral dans la mmoire de chargement interne.

Charger des programmes utilisateur dans la CPU

Conditions requises
Lors de la compilation d'une source S7-SCL , les blocs sont gnrs partir de la source et
enregistrs dans le dossier Blocs du programme S7.
Les blocs qui sont appels au premier niveau depuis les blocs S7-SCL sont recherchs,
puis copis automatiquement avec les autres dans le rpertoire "Blocs" et adopts dans la
liste de chargement.
Vous devez charger les autres blocs du programme utilisateur de la console de
programmation dans la CPU l'aide du SIMATIC Manager.
Pour que le chargement soit effectu, il faut qu'une liaison existe entre la PG et la CPU. Il
faut aussi qu'un programme utilisateur en ligne soit affect au module de CPU dans
SIMATIC Manager.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

4-27

Utilisation de S7-SCL

Marche suivre
Une fois que vous avez compil la source, vous avez le choix entre deux types de
chargement :
La commande Fichier > Charger charge tous les blocs contenus dans la source ainsi
que tous les blocs appels au premier niveau.
La commande Fichier > Chargement partiel ouvre une bote de dialogue permettant de
slectionner certains blocs pour les charger.
Les blocs sont alors transfrs dans la CPU. Si l'un d'eux se trouve dj dans la mmoire
vive (RAM) de la CPU, un message vous demandera d'en confirmer l'crasement.

Nota
Il est prfrable de charger le programme utilisateur l'tat de fonctionnement ARRET, car
l'crasement d'un ancien programme l'tat MARCHE risque de provoquer des erreurs.

4-28

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Utilisation de S7-SCL

4.10

Test des programmes

4.10.1

Fonctions de test de S7-SCL


Les fonctions de test de S7-SCL vous permettent de contrler un programme en cours
d'excution dans la CPU et donc de trouver les erreurs qu'il contient ventuellement. Les
erreurs de syntaxe sont signales la compilation. Les erreurs l'excution sont signales
par des alarmes systme. Les erreurs de programmation logiques peuvent tre dtectes
l'aide des fonctions de test.

Fonctions de test de S7-SCL


Vous disposez dans S7-SCL des fonctions de test suivantes :
Visualiser
Cette fonction permet de reprsenter les noms et les valeurs en cours des variables de la
source S7-SCL . Durant le test, les valeurs des variables et des paramtres de la zone
concerne sont affiches par ordre chronologique et actualises cycliquement.
Test avec points d'arrt / en pas pas
Cette fonction permet de dfinir des points d'arrt, puis d'effectuer un test en pas pas.
Vous pouvez par exemple excuter l'algorithme du programme instruction par instruction
et observer le changement des valeurs des variables traites.

Attention
Un test effectu sur une installation en fonctionnement peut causer des lsions corporelles
graves ou un dommage matriel important en cas de mauvais fonctionnement ou d'erreurs
de programmation.
Avant d'utiliser les fonctions de test, assurez-vous que des tats dangereux ne risquent pas
de se produire !

Conditions requises pour le test


Le programme a t compil avec les options "Gnrer code objet" et "Gnrer infos
dbogage" que vous pouvez cocher dans l'onglet "Compilateur" de la bote de dialogue
"Paramtres" (commande Outils > Paramtres).
Des donnes de rfrence actuelles sont disponibles.
Les donnes de rfrence sont gnres automatiquement lors de la compilation si
l'option "Gnrer infos dbogage" est active.
Il existe une liaison en ligne entre PG/PC et CPU.
Le programme a t charg dans la CPU.
Ceci peut tre ralis avec la commande de menu Systme cible > Charger.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

4-29

Utilisation de S7-SCL

4.10.2 Informations sur la fonction de test "Visualiser"


La visualisation continue d'un programme permet de tester un groupe d'instructions qu'on
appelle zone de visualisation. Au cours du test, les valeurs des variables et des paramtres
de cette zone s'affichent par ordre chronologique et sont actualises. Si la zone de
visualisation se trouve dans une partie du programme qui est parcourue chaque cycle, il
n'est gnralement pas possible de saisir les valeurs des variables dans des cycles
conscutifs.
Vous pouvez distinguer par la couleur les valeurs qui ont chang lors du passage actuel et
celles qui n'ont pas chang.

Zone de visualisation
Le volume d'instructions visualiser est limit par les performances de la CPU connecte.
Les instructions S7-SCL du code source tant reprsentes par un nombre diffrent
d'instructions en code machine, la longueur de la zone de visualisation est variable ; le
dbogueur S7-SCL la dtermine et l'affiche lorsque vous slectionnez la premire instruction
de la zone qui vous intresse.
Vous avez en outre la possibilit de dfinir une zone de visualisation prcise. Slectionnez
cet effet les instructions visualiser dans la source.

Modes de test
L'interrogation des informations de test provoque le plus souvent un allongement des temps
de cycle. S7-SCL propose deux modes diffrents qui permettent d'influencer cet
allongement.
Mode de test

Explication

Test

En mode test, la zone de visualisation n'est limite que par les performances de la CPU
connecte. Toutes les fonctions de test sont utilisables sans restriction. Le temps de cycle de
la CPU peut s'en trouver considrablement allong, tant donn que l'tat des instructions
dans les boucles programmes, par exemple, est dtermin pour chaque passage.

Processus

En mode processus, le dbogueur de S7-SCL limite la zone de visualisation maximale de


faon que les temps de cycle raliss au cours du test ne dpassent pas ou trs peu les
temps d'excution rels du processus.

Restrictions
Avec la fonction "Visualiser", vous devez tenir compte des restrictions suivantes.
Il n'est pas possible d'afficher dans leur entier les variables de type de donnes
complexe. Mais il est possible de visualiser les lments de telles variables s'ils sont d'un
type de donnes simple.
Les variables de type DATE_AND_TIME et STRING ainsi que les paramtres de type
BLOCK_FB, BLOCK_FC, BLOCK_DB, BLOCK_SDB, TIMER et COUNTER ne s'affichent
pas.
Les accs des blocs de donnes qui ont la forme < mnmonique >.< adresse absolue >
ne s'affichent pas (ex. : donnees.DW4).

4-30

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Utilisation de S7-SCL

4.10.3 Informations sur le test avec points d'arrt / en pas pas


Le test avec points d'arrt est effectu en pas pas. Vous pouvez excuter l'algorithme du
programme instruction par instruction et observer le changement des valeurs des variables
traites.
Aprs avoir dfini des points d'arrt, vous pouvez d'abord excuter le programme jusqu' un
point d'arrt, puis commencer partir de l la visualisation pas pas.

Fonctions de pas pas


Lorsque le test "Avec points d'arrt" est dmarr, vous pouvez utiliser les fonctions
suivantes :
Instruction suivante
Excution de l'instruction slectionne.
Poursuivre
Poursuite jusqu'au prochain point d'arrt activ.
Jusqu' la slection
Poursuite jusqu' une marque que vous dfinissez dans le texte source.
Excuter l'appel
Saut dans un bloc S7-SCL de niveau infrieur ou appel d'un bloc de niveau infrieur.

Points d'arrt
Vous pouvez dfinir des points d'arrt n'importe quel endroit de la section des instructions
du texte source.
Ils ne sont transfrs dans le systme d'automatisation et activs que lorsque vous
choisissez la commande Test > Activer les points d'arrt. Le programme est alors excut
jusqu' ce que la CPU atteigne le premier point d'arrt.
Le nombre maximal de points d'arrt activs dpend de la CPU.

Condition requise
La source ouverte ne doit pas avoir t modifie dans l'diteur.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

4-31

Utilisation de S7-SCL

4.10.4

Marche suivre pour la visualisation

4.10.4.1 Marche suivre pour la visualisation


Une fois que vous avez charg le programme compil dans le systme cible, vous pouvez le
tester avec la fonction "Visualiser".
Nota
La quantit d'instructions tester (zone de visualisation la plus grande possible) dpend de
la performance de la CPU connecte.
Procdez de la manire suivante :
1. Assurez-vous que les conditions requises pour le test sont bien remplies et que la CPU
est l'tat de fonctionnement RUN ou RUN-P.
2. Slectionnez la fentre contenant la source du programme tester.
3. Si vous ne voulez pas rester dans le mode de test par dfaut (Processus), choisissez la
commande Test > Mode > Test.
4. Dfinissez la zone de visualisation. Pour cela, vous avez deux possibilits :
-

Positionnez le curseur dans la ligne du texte source qui contient la premire


instruction de la zone tester. S7-SCL slectionne alors la zone de visualisation la
plus grande possible partir de la position du curseur.

Dans le texte source, slectionnez exactement les instructions que vous souhaitez
visualiser.

5. Assurez-vous qu'aucun tat dangereux ne risquent de se produire.


6. Choisissez la commande Test > Visualiser.
7. Dsactivez la commande Test > Visualiser pour interrompre le test.
8. Choisissez la commande Test > Mettre fin au test pour mettre fin ce dernier.

Rsultat
La zone de visualisation est dtermine et indique par une barre grise sur le ct gauche
de la fentre. La fentre se fractionne et le volet droit affiche les noms et les valeurs en
cours des variables se trouvant dans la zone de visualisation.

Adaptation de la fonction de visualisation


Vous avez les possibilits suivantes pour adapter la fonction de visualisation vos
exigences :
Dfinissez un environnement dappel pour le bloc visualiser.
Choisissez la commande de menu Affichage > Reprsentation symbolique pour
activer ou dsactiver l'affichage des noms symboliques dans le programme.
Choisissez la commande de menu Outils > Paramtres, puis l'onglet "Format" pour
effectuer les paramtrages souhaits concernant la couleur des valeurs afficher.

4-32

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Utilisation de S7-SCL

4.10.4.2 Dfinition d'un environnement d'appel des blocs


Environnement d'appel
Afin de dfinir l'environnement d'appel de manire encore plus prcise, vous avez la
possibilit de dfinir un environnement d'appel des blocs visualiser. Vous spcifiez ainsi
qu'un bloc est uniquement visualis dans l'une des conditions suivantes :
Condition

Possibilit de slection

Le bloc est appel par un certain bloc de niveau suprieur.

Chemin d'appel

Le bloc est appel avec un certain bloc de donnes.

Bloc de donnes global


et / ou
bloc de donnes d'instance

Pour dfinir un chemin d'appel, procdez de la manire suivante :


1. Choisissez la commande de menu Test > Environnement d'appel des blocs.
La bote de dialogue suivante affiche une liste des blocs existants.
2. Slectionnez un bloc dans la liste.
3. Activez l'option "Activer le chemin d'appel".
4. Les chemins d'appel possibles sont alors reprsents graphiquement dans la partie
infrieure de la fentre.
5. Slectionnez le chemin d'appel souhait.

Pour dfinir un bloc de donnes, procdez de la manire suivante :


1. Choisissez la commande de menu Test > Environnement d'appel des blocs.
La bote de dialogue suivante affiche une liste des blocs existants.
2. Slectionnez un bloc dans la liste.
3. Activez l'option "Blocs de donnes ouverts".
4. Entrez le numro du DB souhait.

Nota
Lorsque vous avez dfini un environnement dappel, procdez comme suit pour dmarrer la
visualisation :
1. Positionnez le curseur sur le bloc visualiser pour lequel vous avez dfini
lenvironnement dappel.
2. Slectionnez la commande de menu Test > Visualiser.
La fonction de visualisation est lance. Le bloc est visualis si toutes les conditions
dappel que vous avez dfinies sont remplies.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

4-33

Utilisation de S7-SCL

4.10.5

Marche suivre pour le test avec points d'arrt

4.10.5.1 Dfinir des points d'arrt


Procdez de la manire suivante pour dfinir des points d'arrt.
1. Ouvrez la source tester.
2. Affichez la barre de points d'arrt au moyen de la commande Affichage > Barre de
points d'arrt.
3. Positionnez le curseur l'endroit qui vous convient et choisissez la commande
Test > Dfinir un point d'arrt ou cliquez sur l'icne correspondante de la barre de
points d'arrt. Les points d'arrt sont reprsents par un cercle rouge au bord gauche de
la fentre.
4. La commande Test > Editer les points d'arrt permet de dfinir un contexte d'appel en
fonction duquel le point d'arrt sera activ.
-

si le bloc dans lequel il se trouve est appel par un bloc de niveau suprieur donn et
(ou)

s'il est appel avec un bloc de donnes/bloc de donnes d'instance dfini.

4.10.5.2 Mettre fin au test avec points d'arrt


Pour revenir au droulement normal du programme, procdez de la manire suivante :
Dsactivez la commande Test > Activer les points d'arrt pour interrompre le test ou
Choisissez la commande Test > Mettre fin au test pour y mettre fin.

4.10.5.3 Activer, dsactiver et effacer des points d'arrt


Vous pouvez activer, dsactiver et effacer un par un les points d'arrt dfinis.
1. Choisissez la commande Test > Editer les points d'arrt.
2. La bote de dialogue qui s'ouvre vous permet
-

d'activer ou de dsactiver des points d'arrt particuliers en les cochant ou en retirant


la coche,

d'effacer des points d'arrt particuliers.

Pour effacer tous les points d'arrt, choisissez la commande Test > Supprimer tous les
points d'arrt.

4-34

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Utilisation de S7-SCL

4.10.5.4 Dfinition d'un environnement d'appel des points d'arrt


Environnement d'appel
En dfinissant un environnement d'appel, vous spcifiez qu'un point d'arrt est uniquement
valable dans l'une des conditions suivantes :
Condition

Possibilit de slection

Le bloc dans lequel se trouve le point d'arrt est appel par un certain bloc de
niveau suprieur.

Chemin d'appel

Le bloc dans lequel se trouve le point d'arrt est appel avec un certain bloc de
donnes.

Bloc de donnes global


et / ou
bloc de donnes d'instance

Pour dfinir un chemin d'appel, procdez de la manire suivante :


1. Choisissez la commande de menu Test > Editer les points d'arrt.
La bote de dialogue suivante affiche une liste des points d'arrt existants.
2. Slectionnez un point d'arrt dans la liste.
3. Activez l'option "Activer le chemin d'appel".
Les chemins d'appel possibles sont alors reprsents graphiquement dans la partie
infrieure de la fentre.
4. Slectionnez le chemin d'appel souhait.

Pour dfinir un bloc de donnes, procdez de la manire suivante :


1. Choisissez la commande de menu Test > Editer les points d'arrt.
La bote de dialogue suivante affiche une liste des points d'arrt existants.
2. Slectionnez un point d'arrt dans la liste.
3. Activez l'option "Blocs de donnes ouverts".
4. Entrez le numro du DB souhait.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

4-35

Utilisation de S7-SCL

4.10.5.5 Test en pas pas


Procdez de la manire suivante :
1. Dfinissez un point d'arrt avant la ligne d'instruction partir de laquelle vous voulez
tester le programme en pas pas.
2. Choisissez la commande Test > Activer les points d'arrt.
3. Excutez le programme jusqu' ce point d'arrt.
4. Pour excuter l'instruction suivante, choisissez la commande Test > Instruction
suivante.
-

S'il s'agit d'un appel de bloc, il est alors trait et il est suivi d'un saut la premire
instruction lui succdant.

La commande Test > Excuter l'appel permet de sauter dans le bloc. Vous pouvez
alors y poursuivre le test en pas pas ou dfinir des points d'arrt. A la fin du bloc, le
programme saute l'instruction suivant l'appel de bloc.

4.10.6 Utilisation des fonctions de test de STEP 7


4.10.6.1 Gnrer et afficher les donnes de rfrence
Vous pouvez gnrer des donnes de rfrence et les valuer pour faciliter le test et la
modification de votre programme utilisateur.

Il est possible d'afficher les donnes de rfrence suivantes :


La structure du programme utilisateur
La liste des rfrences croises
Le tableau d'affectation
La liste des oprandes libres
La liste des mnmoniques manquants

Gnration des donnes de rfrence


Il y a plusieurs manires de gnrer les donnes.
Avec la commande Outils > Donnes de rfrence > Afficher, vous les gnrez ou les
actualisez et les affichez.
L'utilisation de filtres permet de limiter la quantit de donnes afficher et permet ainsi
d'acclrer la gnration et l'affichage de celles-ci. Choisissez pour cela la commande
Outils > Donnes de rfrence > Filtrer.
Si vous cochez l'option "Gnration des donnes de rfrence" dans l'onglet "Cration du
bloc" (commande Outils > Paramtres) les donnes de rfrence seront gnres
automatiquement lors de la compilation d'une source.
Sachez toutefois que la gnration automatique des donnes de rfrence allonge la
dure de la compilation.

4-36

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Utilisation de S7-SCL

4.10.6.2 Vrification de la cohrence des blocs


Nota
Cette fonction est disponible partir de STEP 7 V5.3 SP2.
Lorsque vous modifiez une source S7-SCL, vous devez, le cas chant, galement adapter
les blocs qui y sont rfrencs. Sinon, des incohrences risquent de se produire dans le
programme. Ces dernires risquent galement de survenir lorsque les horodatages des
sources et des blocs ne correspondent pas.
Grce la fonction "Vrifier la cohrence des blocs" de STEP 7, vous pouvez dtecter de
telles incohrences et corriger plus rapidement les erreurs.
Aprs avoir effectu des modifications dans le programme, lancez une vrification de
cohrence de toutes les sources S7-SCL dans le projet. S'il existe des incohrences ne
pouvant pas tre corriges automatiquement, la fonction saute aux positions modifier dans
la source. Vous y effectuez les modifications requises. Vous corrigez ainsi toutes les
incohrences, les unes aprs les autres.

Conditions
STEP 7 V5.3 SP2 ou une version suprieure est install sur votre appareil.
Une source concerne par la fonction "Vrifier la cohrence des blocs" doit avoir t
compile une fois avec S7-SCL V5.3 SP1 ou une version suprieure.
S7-SCL doit tre install sur l'appareil sur lequel vous ralisez la vrification de
cohrence.

Procdez de la manire suivante


1. Ouvrez SIMATIC Manager.
2. Slectionnez le dossier "Blocs".
3. Choisissez la commande de menu Edition > Vrifier la cohrence des blocs.
4. Choisissez la commande de menu Affichage > Afficher les rfrences source
S7-SCL.

Rsultat
STEP 7 vrifie les horodatages et interfaces de tous les blocs et de toutes les sources
correspondantes dans le dossier actuel et signale les conflits suivants :
conflits d'horodatage entre sources S7-SCL et blocs,
rfrences entre diffrents blocs et conflits d'interface qui en rsultent.
Lorsqu'une incohrence est dtecte, une nouvelle compilation de la source correspondante
est lance. Si la source contient plusieurs sources de blocs, tous les blocs rsultant de cette
source sont de nouveau gnrs. Lors de la compilation, les options actuelles paramtres
sont valables.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

4-37

Utilisation de S7-SCL

Nota
Vous trouverez de plus amples informations sur cette fonction dans l'aide de STEP 7.

4.11

Afficher et modifier les proprits de la CPU

4.11.1

Afficher et modifier l'tat de fonctionnement de la CPU


Vous pouvez interroger l'tat de fonctionnement actuel d'une CPU et le modifier, condition
qu'une liaison existe cette CPU.
Procdez de la manire suivante :
1. Choisissez la commande Systme cible > Etat de fonctionnement.
2. Dans la bote de dialogue qui s'ouvre, slectionnez l'un des tats suivants :

Dmarrage chaud

Dmarrage froid

Redmarrage

Arrt

Attention
Modifier l'tat de fonctionnement d'une installation en marche peut causer des lsions
corporelles graves ou un dommage matriel important en cas de mauvais fonctionnement
ou d'erreurs de programmation.
Avant d'utiliser cette fonction, assurez-vous que des situations dangereuses ne risquent pas
de se produire !

4.11.2 Afficher et rgler la date et l'heure de la CPU


Vous pouvez interroger l'heure momentane d'une CPU et la modifier, condition qu'une
liaison existe cette CPU.
Procdez de la manire suivante :
1. Choisissez la commande Systme cible > Mettre l'heure.
2. Dans la bote de dialogue qui s'affiche, tapez la date et l'heure pour l'horloge temps rel
de la CPU.
Si la CPU n'est pas quipe d'une horloge temps rel, le dialogue indique "00:00:00" pour
l'heure et "00.00.00" pour la date. Dans ce cas, vous ne pouvez rien changer.

4-38

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Utilisation de S7-SCL

4.11.3

Afficher les donnes de la CPU


Vous pouvez obtenir les informations suivantes sur une CPU :
Famille du systme, type de CPU, numro de rfrence et version de la CPU ;
Taille de la mmoire de travail et de la mmoire de chargement et taille maximale
possible de la mmoire de chargement ;
Nombre et plage d'adresse des entres, sorties, temporisations, compteurs et
mmentos ;
Nombre de donnes locales avec lesquelles la CPU peut travailler ;
Indication si la CPU peut tre employe en mode multiprocesseur.
Pour cela, il faut qu'une liaison existe la CPU.
Procdez de la manire suivante :
1. Choisissez la commande Systme cible > Etat du module.
2. Dans la bote de dialogue qui s'ouvre, slectionnez l'onglet "Gnral".

4.11.4

Lire la mmoire de diagnostic de la CPU


En lisant la mmoire tampon de diagnostic, vous pouvez dterminer la cause de l'tat de
fonctionnement ARRET ou remonter l'origine de certains vnements de diagnostic.
Pour cela, il faut qu'une liaison existe la CPU.
Procdez de la manire suivante :
1. Choisissez la commande Systme cible > Etat du module.
2. Dans la bote de dialogue qui s'ouvre, slectionnez l'onglet "Mmoire tampon de
diagnostic".

4.11.5 Afficher/comprimer la mmoire utilisateur de la CPU


Cette fonction vous permet de vous renseigner sur l'utilisation de la mmoire de la CPU et
de rorganiser la mmoire au besoin. Ceci devient ncessaire lorsque la taille de la plus
grande zone de mmoire libre continue ne suffit plus charger un nouvel objet de la PG
dans la CPU.
Pour cela, il faut qu'une liaison existe la CPU.
Procdez de la manire suivante :
1. Choisissez la commande Systme cible > Etat du module.
2. Dans la bote de dialogue qui s'ouvre, slectionnez l'onglet "Mmoire".

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

4-39

Utilisation de S7-SCL

4.11.6 Afficher le temps de cycle de la CPU


Les temps suivants sont reprsents, dans le cadre des deux valeurs limites paramtres :
Dure du cycle le plus long depuis le dernier passage d'ARRET MARCHE
Dure du cycle le plus court depuis le dernier passage d'ARRET MARCHE
Dure du dernier cycle
Quand la dure du dernier cycle se rapproche du temps de surveillance, il est possible que
celui-ci soit dpass et que la CPU passe l'tat de fonctionnement ARRET. Le temps de
cycle peut se prolonger lorsque vous testez des blocs dans la visualisation d'tat du
programme, par exemple. Pour que les temps de cycle de votre programme soient affichs,
il faut qu'une liaison existe la CPU.
Procdez de la manire suivante :
1. Choisissez la commande Systme cible > Etat du module.
2. Dans la bote de dialogue qui s'ouvre, slectionnez l'onglet "Temps de cycle".

4.11.7 Afficher l'horodatage de la CPU


L'horodatage de l'unit centrale (CPU) comprend des informations sur l'horloge interne et sur
la synchronisation entre plusieurs CPU.
Pour cela, il faut qu'une liaison existe la CPU.
Procdez de la manire suivante :
1. Choisissez la commande Systme cible > Etat du module.
2. Dans la bote de dialogue qui s'ouvre, slectionnez l'onglet "Horodatage".

4.11.8 Afficher les blocs dans la CPU


Vous pouvez demander l'affichage des blocs disponibles en ligne pour la CPU.
Pour cela, il faut qu'une liaison existe la CPU.
Procdez de la manire suivante :
1. Choisissez la commande Systme cible > Etat du module.
2. Dans la bote de dialogue qui s'ouvre, slectionnez l'onglet "Performances/Blocs".

4-40

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Utilisation de S7-SCL

4.11.9 Affichage des informations sur la communication de la CPU


Pour chaque CPU en ligne, vous pouvez demander l'affichage des informations concernant
les vitesses de transmission choisies et maximales, les liaisons et la charge de
communication.
Pour cela, il faut qu'une liaison existe la CPU.
Procdez de la manire suivante :
1. Choisissez la commande Systme cible > Etat du module.
2. Dans la bote de dialogue qui s'ouvre, slectionnez l'onglet "Communication".

4.11.10 Affichage des piles de la CPU


Cet onglet vous permet d'afficher, pour chaque unit centrale (CPU) en ligne, les
informations concernant le contenu des piles. Pour cela, la CPU doit se trouver l'tat de
fonctionnement ARRET ou avoir atteint un point d'arrt.
Afficher les piles est trs utile pour trouver les erreurs, par exemple lorsque vous testez vos
blocs. Si la CPU est passe l'tat d'arrt, vous pouvez afficher, dans la pile des
interruptions, le point d'interruption avec les indications et les contenus d'accumulateurs qui
y sont actuels, afin d'en dcouvrir la cause (une erreur de programmation, par exemple).
Pour cela, il faut qu'une liaison existe la CPU.
Procdez de la manire suivante :
1. Choisissez la commande Systme cible > Etat du module.
2. Dans la bote de dialogue qui s'ouvre, slectionnez l'onglet "Piles".

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

4-41

Utilisation de S7-SCL

4-42

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Notions fondamentales dans S7-SCL

5.1

Interprtation des diagrammes syntaxiques


La description du langage faite dans les diffrents chapitres se base sur des diagrammes
syntaxiques. Ils vous montrent bien la structure syntaxique de S7-SCL. Ils sont regroups au
complet avec les lments de langage correspondants dans le chapitre "Description du
langage".

Qu'entend-on par diagramme syntaxique ?


Il s'agit d'une reprsentation graphique de la structure du langage. Cette structure est dcrite
par une suite de rgles, pouvant elles-mmes se fonder sur des rgles dj nonces.
Nom de la rgle

Squence
Bloc 3
Bloc 1

Bloc 2

Option

Bloc 4
Bloc 5

Itration
Alternative

Le diagramme syntaxique se lit de gauche droite. Il peut comporter :


Squence : suite de blocs
Option : branche facultative
Itration : rptition de branches
Alternative : aiguillage.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

5-1

Notions fondamentales dans S7-SCL

Quelles sont les diffrentes sortes de blocs ?


Un bloc est un lment de base ou un lment compos lui-mme de blocs. La figure
suivante montre la reprsentation des diffrentes sortes de blocs :

Elment de base qui ne ncessite


pas de description supplmentaire.
Il s'agit de caractres imprimables et
de caractres spciaux, de mots-cls
et d'identificateurs prdfinis.
Les donnes relatives ces blocs
doivent tre reprises telles quelles.

Elment compos qui est dcrit par


d'autres diagrammes syntaxiques.

Qu'entend-on par libert de format ?


Lorsque vous saisissez un texte source, vous devez tenir compte tant des rgles
syntaxiques que des rgles lexicales.
Ces deux types de rgles sont dcrits dans le chapitre "Description du langage". Libert de
format signifie qu'il est permis d'insrer entre les blocs fournis par les rgles des caractres
de mise en forme tels qu'espaces, tabulations et changements de page ainsi que des
commentaires.
Les rgles lexicales ne vous laissent pas de libert de format. Lorsque vous utilisez une
rgle lexicale, vous devez reprendre les donnes telles quelles.

Rgle lexicale
Lettre

_
Caractre de
soulignement

Lettre

Chiffre

_
Caractre de
soulignement

Lettre

Chiffre

Exemples dans lesquels la rgle reprsente est correctement applique :


R_REGULATEUR3
_A_TABLEAU
_100_3_3_10
Exemples incorrects pour les raisons nommes ci-dessus :
1_1AB
RR__20
*#AB

5-2

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Notions fondamentales dans S7-SCL

Rgle syntaxique
Les rgles syntaxiques vous laissent la libert de format.

Variable simple

:=

Constante

Exemples dans lesquels la rgle reprsente est correctement applique :


VARIABLE_1 := 100;
VARIABLE_2 := 3.2;

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

COMMUTATEUR:=FALSE;

5-3

Notions fondamentales dans S7-SCL

5.2

Jeu de caractres

Lettres et chiffres
Dans le jeu de caractres ASCII, S7-SCL utilise :
Les lettres (majuscules et minuscules) de A Z
Les chiffres arabes 0 9
Le caractre d'espacement (valeur ASCII 32) et tous les caractres de commande
(ASCII 0- 31), y compris le caractre de fin de ligne (ASCII 13)

Autres caractres
Les caractres suivants ont une signification bien prcise dans S7-SCL :
+

<

>

"

'

Nota

Le chapitre "Description du langage" offre une liste dtaille de tous les caractres
utilisables en prcisant comment ils sont interprts dans S7-SCL.

5-4

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Notions fondamentales dans S7-SCL

5.3

Mots rservs
Il s'agit de mots-cls dont l'usage est prdfini. La distinction entre les majuscules et les
minuscules n'est pas faite.

Mots-cls dans S7-SCL


AND

END_CASE

ORGANIZATION_BLOCK

ANY

END_CONST

POINTER

ARRAY

END_DATA_BLOCK

PROGRAM

AT

END_FOR

REAL

BEGIN

END_FUNCTION

REPEAT

BLOCK_DB

END_FUNCTION_BLOCK

RETURN

BLOCK_FB

END_IF

S5TIME

BLOCK_FC

END_LABEL

STRING

BLOCK_SDB

END_TYPE

STRUCT

BLOCK_SFB

END_ORGANIZATION_BLOCK

THEN

BLOCK_SFC

END_REPEAT

TIME

BOOL

END_STRUCT

TIMER

BY

END_VAR

TIME_OF_DAY

BYTE

END_WHILE

TO

CASE

ENO

TOD

CHAR

EXIT

TRUE

CONST

FALSE

TYPE

CONTINUE

FOR

VAR

COUNTER

FUNCTION

VAR_TEMP

DATA_BLOCK

FUNCTION_BLOCK

UNTIL

DATE

GOTO

VAR_INPUT

DATE_AND_TIME

IF

VAR_IN_OUT

DINT

INT

VAR_OUTPUT

DIV

LABEL

VOID

DO

MOD

WHILE

DT

NIL

WORD

DWORD

NOT

XOR

ELSE

OF

Noms des fonctions standard

ELSIF

OK

EN

OR

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

5-5

Notions fondamentales dans S7-SCL

5.4

Identificateur

Dfinition
Un identificateur est un nom que vous pouvez attribuer un objet du langage S7-SCL,
savoir une constante, une variable ou un bloc.

Rgles
Il peut s'agit d'une combinaison quelconque de 24 lettres (non accentues) et chiffres au
maximum, le premier caractre devant tre une lettre ou le caractre de soulignement. Vous
pouvez employer aussi bien des majuscules que des minuscules, sachant qu'aucune
distinction n'est faite entre elles (par exemple, AnNa et AnnA sont quivalents).

Lettre

Lettre

_
Caractre de
soulignement

Chiffre

_
Caractre de
soulignement

Lettre

Chiffre

Exemples
Voici des exemples d'identificateurs autoriss :
X

y12

Somme

Temprature

Noms

Surface

Rgulateur

Tableau

Voici des identificateurs interdits pour les raisons indiques :


4me

//Le premier caractre doit tre une lettre ou


//le caractre de soulignement.

Array

//ARRAY est un mot-cl.

S Valeur

//Les espaces ne sont pas autoriss


//(n'oubliez pas qu'un espace est un caractre).

Nota

5-6

Assurez-vous que le nom n'a pas encore t attribu un mot-cl ou un identificateur standard.

Nous vous recommandons de choisir des noms univoques et vocateurs qui contribuent
l'intelligibilit du texte source.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Notions fondamentales dans S7-SCL

5.5

Identificateur standard
S7-SCL propose une srie d'identificateurs prdfinis. Il s'agit des identificateurs standard
suivants :
Les dsignations de bloc ;
Les identificateurs d'oprande permettant d'adresser les zones de mmoire de la CPU ;
Les dsignations de temporisation et
Les dsignations de compteur.

5.6

Dsignation de bloc

Dfinition
Ces identificateurs standard sont utiliss pour l'adressage absolu de blocs.

Rgles
Le tableau suivant donne la liste des mots-cls de bloc classs d'aprs les abrviations
allemandes, avec les abrviations anglaises correspondantes. La lettre x correspond un
nombre compris entre 0 et 65533 (ou entre 0 et 65535 pour les compteurs et
temporisations).
Abrviations
allemandes

Abrviations
anglaises

Pour dsigner

DBx

DBx

Bloc de donnes (Data Block). La dsignation de bloc DB0 est rserve


S7-SCL.

FBx

FBx

Bloc fonctionnel (Function Block)

FCx

FCx

Fonction (Function)

Obx

OBx

Bloc d'organisation (Organization Block)

SDBx

SDBx

Bloc de donnes systme (System Data Block)

SFCx

SFCx

Fonction systme (System Function)

SFBx

SFBx

Bloc fonctionnel systme (System Function-Block)

Tx

Tx

Temporisation (Timer)

UDTx

UDTx

Type de donnes global ou utilisateur (User defined Data Type)

Zx

Cx

Compteur (Counter)

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

5-7

Notions fondamentales dans S7-SCL

Il y a plusieurs manires de dsigner un bloc dans S7-SCL. Le numro du bloc peut tre un
nombre dcimal entier.
Mot-cl
de bloc

Numro

DB, FB, FC, OB, UDT

IDENTIFICATEUR

Mnmonique

Exemple
Voici des dsignations autorises :
FB10
DB100
T141

5-8

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Notions fondamentales dans S7-SCL

5.7

Identificateur d'oprande

Dfinition
Un identificateur d'oprande permet d'adresser une zone de mmoire de la CPU, partir
d'un endroit quelconque du programme.

Rgles
Le tableau suivant donne la liste des identificateurs d'oprande classs d'aprs les
abrviations allemandes, avec les abrviations anglaises correspondantes. Les
identificateurs d'oprande pour blocs de donnes doivent tre indiqus avec le bloc de
donnes correspondant.
Abrviations
allemandes

Abrviations
anglaises

Pour adresser

Type de donnes

Ax.y
Abx
Adx
Awx
AXx.y
Dx.y
DBx
DDx
DWx
DXx.y
Ex.y
Ebx
Edx
Ewx
EXx.y
Mx.y
MBx.y
MDx
MWx.y
MXx
PABx
PADx
PAWx
PEBx
PEDx
PEWx

Qx,y
QBx
QDx
QWx
QXx.y
Dx.y
DBx
DDx
DWx
DXx.y
Ix.y
IBx
IDx
IWx
IXx.y
Mx.y
MBx.y
MDx
MWx
MXx
PQBx
PQDx
PQWx
PIBx
PIDx
PIWx

Sortie (par la mmoire image)


Sortie (par la mmoire image)
Sortie (par la mmoire image)
Sortie (par la mmoire image)
Sortie (par la mmoire image)
Bloc de donnes
Bloc de donnes
Bloc de donnes
Bloc de donnes
Bloc de donnes
Entre (par la mmoire image)
Entre (par la mmoire image)
Entre (par la mmoire image)
Entre (par la mmoire image)
Entre (par la mmoire image)
Mmento
Mmento
Mmento
Mmento
Mmento
Sortie (priphrie directe)
Sortie (priphrie directe)
Sortie (priphrie directe)
Entre (priphrie directe)
Entre (priphrie directe)
Entre (priphrie directe)

Bit
Octet
Double mot
Mot
Bit
Bit
Octet
Double mot
Mot
Bit
Bit
Octet
Double mot
Mot
Bit
Bit
Octet
Double mot
Mot
Bit
Octet
Double mot
Mot
Octet
Double mot
Mot

x = nombre compris entre 0 et 65535 (adresse absolue)

Exemple
E1.0 MW10 PAW5 DB20.DW3

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

5-9

Notions fondamentales dans S7-SCL

5.8

Dsignation de temporisation

Rgles
Il y a plusieurs manires de dsigner une temporisation dans S7-SCL. Le numro de la
temporisation peut tre un nombre dcimal entier.
T

Numro

Abrviation allemande
et anglaise

IDENTIFICATEUR

Mnmonique

5.9

Dsignation de compteur

Rgles
Il y a plusieurs manires de dsigner un compteur dans S7-SCL. Le numro du compteur
peut tre un nombre dcimal entier.
Z

Numro

Abrviation allemande 'Z'


Abrviation anglaise 'C'
IDENTIFICATEUR

Mnmonique

5-10

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Notions fondamentales dans S7-SCL

5.10

Nombres
Il y a plusieurs faons d'crire un nombre dans S7-SCL. Les rgles suivantes s'appliquent
tous les nombres.
Il peut comporter un signe, une virgule dcimale (reprsente par un point dans S7-SCL)
ou un exposant.
Un nombre ne doit comporter ni virgule, ni caractre d'espacement.
Le caractre de soulignement (_) peut tre utilis comme sparateur optique.
Un nombre peut tre prcd soit d'un plus (+), soit d'un moins(-). En l'absence de signe,
le nombre est considr comme tant positif.
Un nombre doit tre compris entre des valeurs minimales et maximales donnes.

Nombre entier
Un nombre entier ne comporte ni virgule dcimale, ni exposant. Il s'agit simplement d'une
simple suite de chiffres, pouvant tre signe. Dans S7-SCL, il existe deux types d'entier avec
des plages de valeurs diffrentes, INT et DINT.
Voici des nombres entiers autoriss :
0

743

-5280

+1

-1

600_00

-32_211

Les nombres suivants ne sont pas autoriss pour les raisons indiques :

123,456

Les virgules sont interdites.

36.
10

20

La virgule dcimale (reprsente par un point) est


interdite dans un nombre entier.
30

Les espaces ne sont pas autoriss.

Dans S7-SCL, vous pouvez reprsenter un nombre entier dans diffrents systmes de
numration. Il faut alors le faire prcder d'un mot-cl dsignant le systme employ. 2#
dsigne le systme binaire, 8# dsigne le systme octal et 16# dsigne le systme
hexadcimal.
Voici le nombre dcimal 15 correctement reprsent dans d'autres systmes de
numration :
2#1111

8#17

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

16#F

5-11

Notions fondamentales dans S7-SCL

Nombre rel
Un nombre rel doit comporter une virgule dcimale ou un exposant (ou les deux). La virgule
dcimale doit figurer entre deux chiffres. Un nombre rel ne peut donc ni commencer, ni se
terminer par une virgule dcimale.
Voici des nombres rels autoriss :
0.0

1.0

50000.0

-0.000743

-0.2

827.602

12.3

-315.0066

Les nombres rels suivants ne sont pas corrects pour les raisons indiques :

1.

La virgule dcimale (point) doit figurer entre deux chiffres.


1,000.0

.3333

Les virgules sont interdites.


La virgule dcimale (point) doit figurer entre deux chiffres.

Un exposant sert indiquer la position de la virgule dcimale. En l'absence de cette


dernire, on considre qu'elle se trouve droite du chiffre. Quant l'exposant, il doit s'agir
d'un nombre entier positif ou ngatif. La base 10 est reprsente par la lettre E.
Dans S7-SCL, la grandeur 3 x 10 exposant 10 quivaut aux nombres rels suivants :

3.0E+10

3.0E10

3e+10

3E10

0.3E+11

0.3e11

30.0E+9

30e9

Les nombres rels suivants ne sont pas corrects pour les raisons indiques :

5-12

3.E+10

La virgule dcimale doit figurer entre deux chiffres.

8e2.3

L'exposant doit tre un nombre entier.

.333e-3

La virgule dcimale doit figurer entre deux chiffres.

30

Les espaces ne sont pas autoriss.

E10

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Notions fondamentales dans S7-SCL

5.11

Chane de caractres

Dfinition
Une chane de caractres est une suite de caractres (lettres, chiffres et caractres
spciaux) place entre apostrophes.
Voici des chanes de caractres autorises :
'ROUGE'
'75 000 Paris'
'270-32-3456'
'Fr19.95' 'Le rsultat correct est :'

Rgles
Pour saisir un caractre de mise en forme spcial, une apostrophe ( ' ) ou le caractre $,
faites-le prcder du caractre $.
Texte source

Aprs compilation

'SIGNAL$'ROUGE$''

SIGNAL'ROUGE'

'50.0$$'

50.0$

'VALEUR$P'

VALEUR nouvelle page

'REG-$L'

REG-changement de ligne

'REGULATEUR$R

REGULATEUR retour chariot

'ETAPE$T'

ETAPE tabulation

Pour indiquer un caractre non imprimable, entrez sa reprsentation en code hexadcimal


$hh, o hh correspond la valeur hexadcimale du caractre ASCII.
Pour interrompre une chane de caractres (pour des commentaires qui ne doivent tre ni
imprims, ni affichs), S7-SCL met votre disposition les caractres $> et $< .

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

5-13

Notions fondamentales dans S7-SCL

5.12

Mnmonique
Dans S7-SCL, vous pouvez indiquer un mnmonique selon la syntaxe suivante. Il n'est
ncessaire de le placer entre guillemets que s'il n'est pas conforme la rgle
IDENTIFICATEUR.

Syntaxe :

"

5-14

Caractre
imprimable

"

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Notions fondamentales dans S7-SCL

5.13

Bloc de commentaire

Rgles
Commentaire pouvant s'tendre sur plusieurs lignes, introduit par "(*" et clos par "*)".
L'imbrication de blocs de commentaire est autorise par dfaut. Mais vous pouvez
modifier cette option et interdire l'imbrication de blocs de commentaire.
Un commentaire ne doit interrompre ni un mnmonique, ni une constante. L'interruption
de chanes de caractre est cependant permise.

Syntaxe
Le bloc de commentaire est reprsent par le diagramme syntaxique suivant :

Bloc de commentaire

(*

Caractre

*)

Exemple
(* Ceci est un exemple de bloc de commentaire
pouvant s'tendre sur plusieurs lignes.*)
COMMUTATEUR := 3 ;
END_FUNCTION_BLOCK

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

5-15

Notions fondamentales dans S7-SCL

5.14

Ligne de commentaire

Rgles
Une ligne de commentaire est introduite par "//" et s'tend jusqu' la fin de la ligne.
La longueur du commentaire est limite 254 caractres, y compris les caractres
d'introduction //.
Un commentaire ne doit interrompre ni un mnmonique, ni une constante. L'interruption
des chanes de caractre est cependant permise.

Syntaxe
La ligne de commentaire est reprsente par le diagramme syntaxique suivant :
Ligne de commentaire

//

Caractre
imprimable

CR
Retour chariot (carriage return)

Exemple
VAR
COMMUTATEUR : INT ; // Ligne de commentaire
END_VAR

Nota

5-16

Les commentaires commenant par // dans la section de dclaration sont adopts dans l'interface
du bloc et peuvent donc s'afficher galement dans l'diteur CONT/LOG/LIST.

La liste des caractres imprimables est donne au chapitre "Description du langage".

Dans une ligne de commentaire, le couple de caractres "(*" et "*)" n'a pas de signification.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Notions fondamentales dans S7-SCL

5.15

Variables
On appelle variable un identificateur dont la valeur peut tre modifie durant l'excution du
programme. Toute variable doit tre dclare individuellement avant de pouvoir tre utilise
dans un bloc de code ou de donnes. La dclaration de la variable permet de dfinir un
identificateur comme variable (et non pas comme constante, etc.) et d'en spcifier le type en
l'affectant au type de donnes.
On distingue les variables suivantes :
Donnes locales ;
Donnes utilisateur globales ;
Variables prdfinies autorises (zones de mmoire d'une CPU).

Donnes locales
Il s'agit de donnes qui sont dclares dans un bloc de code (FC, FB, OB) et qui ne sont
valables que pour celui-ci.
Variables

Signification

Variables statiques

Une variable statique est une variable locale dont la valeur reste inchange
durant toutes les excutions du bloc (mmoire du bloc). Elle sert
enregistrer les valeurs d'un bloc fonctionnel.

Variables temporaires

Une variable temporaire appartient localement un bloc de code et


n'occupe aucune zone de mmoire statique. Sa valeur n'est conserve que
durant une excution du bloc. Il n'est pas possible d'accder aux variables
temporaires en dehors du bloc dans lequel elles ont t dclares.

Paramtres de bloc

Il s'agit d'un paramtre formel de bloc fonctionnel ou de fonction. C'est une


variable locale qui sert transmettre les paramtres effectifs indiqus
l'appel du bloc.

Donnes utilisateur globales


Les donnes utilisateur globales sont des donnes ou zones de donnes que vous pouvez
utiliser partir d'un endroit quelconque du programme. Vous devez pour cela crer des
blocs de donnes (DB).
Lorsque vous crez un DB, vous dfinissez sa structure en la dclarant. Vous pouvez
cependant galement utiliser un type de donnes utilisateur (UDT) au lieu de dclarer la
structure du DB. L'ordre dans lequel vous indiquez le composant de la structure dtermine
celui des donnes dans le DB.

Zones de mmoire d'une CPU


Vous pouvez adresser les zones de mmoire d'une CPU directement partir d'un endroit
quelconque du programme en utilisant des identificateurs d'oprandes qu'il est inutile de
dclarer.
Vous avez en outre toujours la possibilit d'adresser ces zones de donnes de faon
symbolique. Dans ce cas, vous leur affectez des mnmoniques dans STEP 7, avec une
table des mnmoniques.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

5-17

Notions fondamentales dans S7-SCL

5-18

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Structure de programme S7-SCL

6.1

Blocs dans les sources S7-SCL


Dans une source S7-SCL, vous pouvez programmer de 1 n blocs. De par leur fonction,
leur structure ou leur emploi prvu, les blocs STEP 7 sont des parties limites d'un
programme utilisateur.

Types de bloc
Les blocs suivants sont disponibles :

OB

FC

FB

DB

UDT

Blocs STEP 7

Blocs prprogramms
Vous ne devez pas programmer vous-mme chaque fonction. Vous pouvez aussi avoir
recours des blocs prprogramms. Ils se trouvent dans le systme d'exploitation de l'unit
centrale ou dans des bibliothques (S7lib) du logiciel de base STEP 7. Vous pouvez les
utiliser pour programmer des fonctions de communication, par exemple.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

6-1

Structure de programme S7-SCL

6.2

Ordre des blocs


La rgle fondamentale est la suivante :
Un bloc appel doit prcder le bloc appelant.
Ce qui signifie en dtail :
Un type de donnes utilisateur (UDT) doit prcder les blocs dans lesquels il est utilis.
Un bloc de donnes avec un type de donnes utilisateur associ suit cet UDT.
Un bloc de donnes auquel tout bloc de code peut accder prcde les blocs dans
lesquels il est appel.
Un bloc de donnes avec un bloc fonctionnel associ suit ce bloc fonctionnel.
Le bloc d'organisation OB1 qui appelle d'autres blocs doit tre plac en dernier. Les blocs
appels par ceux qui sont appels dans l'OB1 doivent prcder ces derniers.
Les blocs que vous appelez dans un fichier source sans pour autant les programmer
dans ce mme fichier source doivent se trouver dj dans le programme utilisateur
concern au moment de la compilation du fichier.
Outre des blocs, les sources S7-SCL peuvent galement contenir des indications sur les
paramtres du compilateur avec lesquels les diffrents blocs doivent tre compils. Les
options de compilation se trouvent en dehors des limites des blocs.

affect
UDT
appelle
DB

Ordre dans le fichier source

appelle
DB avec UDT
affect

appelle
FB 3

DB d'instance du FB 3
appelle
FC 5

OB 1

6-2

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Structure de programme S7-SCL

6.3

Composition gnrale d'un bloc


Un bloc se compose des zones suivantes :
L'en-tte du bloc, caractris par un mot-cl et un numro de bloc ou un nom de bloc,
comme par exemple "ORGANISATION_BLOCK OB1", dans le cas d'un bloc
d'organisation.
S'il s'agit d'une fonction, le type de fonction est galement prcis ; il dtermine le type
de donnes de la valeur de retour ; si aucune valeur de retour n'est attendue, vous devez
indiquer le mot-cl VOID.
Un titre de bloc facultatif introduit par le mot-cl "TITLE =".
Un commentaire de bloc facultatif ; il peut s'tendre sur plusieurs lignes, chacune d'elles
commenant par "//".
La mention des attributs de bloc (facultative).
La mention des attributs systme pour bloc (facultative).
La section de dclaration (diffrente selon le type de bloc).
La section des instructions dans les blocs de code ou
l'affectation de valeurs effectives dans les blocs de donnes (facultative).
Dans les blocs de code : des instructions.
La fin du bloc, caractrise par END_ORGANIZATION_BLOCK,
END_FUNCTION_BLOCK ou END_FUNCTION.

6.4

Dbut et fin de bloc


Le texte source pour un bloc particulier est introduit, en fonction du type de bloc, par un
identificateur standard de dbut de bloc et par la dsignation de bloc. Il est cltur par un
identificateur standard de fin de bloc.
Le tableau suivant indique la syntaxe propre chaque type de bloc :
Dsignation

Type de bloc

Syntaxe

Bloc fonctionnel

FB

FUNCTION_BLOCK nom_fb
...
END_FUNCTION_BLOCK

Fonction

FC

FUNCTION nom_fc : type de fonction


...
END_FUNCTION

Bloc d'organisation

OB

ORGANIZATION_BLOCK nom_ob
...
END_ORGANIZATION_BLOCK

Bloc de donnes

DB

DATA_BLOCK nom_db
...
END_DATA_BLOCK

Type de donnes global (ou


utilisateur)

UDT

TYPE nom_udt
...
END_TYPE

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

6-3

Structure de programme S7-SCL

Dsignation de bloc
Dans le tableau , nom_xx reprsente la dsignation de bloc conformment la syntaxe
suivante :

Mot-cl
de bloc

Numro

DB, FB, FC, OB, UDT

IDENTIFICATEUR

Mnmonique

Le numro de bloc peut aller de 0 65533, mais l'identificateur de bloc DB0 est rserv.
N'oubliez pas que vous devez dfinir un identificateur ou un mnmonique dans la table des
mnmoniques de STEP 7.

Exemples
FUNCTION_BLOCK FB10
FUNCTION_BLOCK Bloc rgulateur
FUNCTION_BLOCK "Rgulateur.B1&U2"

6-4

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Structure de programme S7-SCL

6.5

Attributs de bloc

Dfinition
Un attribut de bloc est une proprit de bloc que vous pouvez par exemple utiliser pour
indiquer le titre du bloc, la version, la protection du bloc ou encore l'auteur. Lorsque vous
choisissez des blocs pour votre application, vous pouvez afficher leurs proprits dans une
fentre de STEP 7.
Vous pouvez donner les attributs suivants :
Mot-cl / attribut

Signification

Exemples

TITLE='caractre imprimable'

Titre du bloc

TITLE='TRIER'

VERSION :
'suite de chiffres dcimaux.
suite de chiffres dcimaux'

Numro de version du bloc (0 15)


Nota : pour les blocs de donnes (DB)
l'attribut VERSION ne doit pas tre plac
entre apostrophes.

VERSION : '3.1'

KNOW_HOW_PROTECT

Protection du bloc ; un bloc compil avec


cette option ne peut pas tre ouvert avec
STEP 7.

KNOW_HOW_PROTECT

AUTHOR :

Nom de l'auteur : nom de la socit, du


dpartement ou autres noms
(IDENTIFICATEUR et caractres
imprimables)

AUTHOR : Siemens

Nom du bloc (IDENTIFICATEUR et


caractres imprimables)

NAME : PID

Nom de la famille du bloc : par exemple


Moteurs ; enregistre le bloc dans un groupe
de blocs, afin qu'il puisse tre retrouv plus
facilement (IDENTIFICATEUR et caractres
imprimables)).

FAMILY : Exemple

NAME :
FAMILY :

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

//Pour les DB :
VERSION : 3.1

AUTHOR : 'A&D AS'

NAME : 'A&D AS'


FAMILY : 'A&D AS'

6-5

Structure de programme S7-SCL

Rgles
Vous dclarez les attributs de bloc l'aide de mots-cls directement aprs l'instruction de
dbut de bloc.
Les identificateurs peuvent comporter au plus 8 caractres.
La saisie d'attributs de bloc doit respecter la syntaxe suivante :
7LWUH
&DUDFWUH
LPSULPDEOH

7,7/(

9HUVLRQ
9HUVLRQ

120%5(
'(&,0$/

120%5(
'(&,0$/

3URWHFWLRQGHEORF
.12:B+2:B3527(&7

FDUDFWUHVPD[

$XWHXU
$87+25

,'(17,),&$7(85

&DUDFWUH
LPSULPDEOH

FDUDFWUHVPD[

1RP
1$0(

,'(17,),&$7(85

&DUDFWUH
LPSULPDEOH
LPSULPDEOH

)DPLOOHGHEORFV
)$0,/<

FDUDFWUHVPD[
,'(17,),&$7(85

&DUDFWUH
LPSULPDEOH
LPSULPDEOH

Exemples
FUNCTION_BLOCK FB10
TITLE = 'Moyenne'
VERSION : '2.1'
KNOW_HOW_PROTECT
AUTHOR : AUT_1

6-6

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Structure de programme S7-SCL

6.6

Commentaire de bloc
Les commentaires concernant l'ensemble du bloc sont saisir dans l'en-tte la suite de la
ligne "TITLE:". Utilisez pour cela la notation de la ligne de commentaire. Si le commentaire
s'tend sur plusieurs lignes, chacune d'elles commence par //.
Le commentaire de bloc s'affiche par exemple dans la fentre des proprits du bloc dans
SIMATIC Manager ou dans l'diteur CONT/LOG/LIST.

Exemple
FUNCTION_BLOCK FB15
TITLE=MON_BLOC
//Ceci est un commentaire de bloc.
//Il est saisi sous la forme d'une suite de lignes de commentaire
//et peut tre affich dans SIMATIC Manager, par exemple.
AUTHOR...
FAMILY...

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

6-7

Structure de programme S7-SCL

6.7

Attributs systme pour bloc

Dfinition
Les attributs systme sont en vigueur dans le systme de conduite au-del des limites d'une
application particulire. Les attributs systme pour bloc s'appliquent l'ensemble d'un bloc.

Rgles
Vous dclarez les attributs systme directement aprs l'instruction de dbut de bloc.
La saisie doit respecter la syntaxe suivante :

Attributs systme de blocs


24 caractres au maximum

IDENTIFICATEUR

:=

'

caractre
imprimable

'

Exemples
FUNCTION_BLOCK FB10
{S7_m_c := 'true' ;
S7_blockview := 'big'}

6-8

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Structure de programme S7-SCL

6.8

Section de dclaration

Dfinition
La section de dclaration sert dclarer les variables locales, les paramtres, les
constantes et les repres de saut.
Dfinissez dans la section de dclaration du bloc de code les variables locales, les
paramtres, les constantes et les repres de saut qui ne doivent tre valables que dans
un bloc.
Dfinissez dans la section de dclaration de blocs de donnes les zones de donnes qui
doivent tre adressables par tout bloc de code.
Dans la section de dclaration d'un UDT, vous dfinissez un type de donnes utilisateur.

Composition
Une section de dclaration se divise elle-mme en plusieurs sections, respectivement
caractrises par un couple de mots-cls. Chacune d'entre elles contient une liste de
dclaration pour des donnes de mme type. L'ordre de ces sections est libre. Le tableau
suivant numre les sections de dclaration possibles :
Donnes

Syntaxe

Constantes

CONST;
Liste de dclaration
END_CONST
LABEL;
Liste de dclaration
END_LABEL
VAR_TEMP;
Liste de dclaration
END_VAR
VAR;
Liste de dclaration
END_VAR
VAR_INPUT;
Liste de dclaration
END_VAR
VAR_OUTPUT;
Liste de dclaration
END_VAR
VAR_IN_OUT;
Liste de dclaration
END_VAR

Repres de saut

Variable temporaire

Variable statique

Paramtre d'entre

Paramtre de sortie

Paramtre
d'entre/sortie

FB

FC

OB

X *)

DB

UDT

X **)

X **)

*) La dclaration de variables entre le couple de mots-cls VAR et END_VAR est certes


autorise pour les fonctions, cependant les dclarations sont dplaces dans la zone
temporaire lors de la compilation de la source.
**) Pour les DB et UDT, les mots-cls VAR et END_VAR sont remplacs par STRUCT et
END_STRUCT.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

6-9

Structure de programme S7-SCL

6.9

Attributs systme pour paramtre

Dfinition
Les attributs systme sont en vigueur dans le systme de conduite au-del des limites d'une
application particulire. Ils servent par exemple la configuration de messages ou de
liaisons. Les attributs systme pour paramtre ne s'appliquent chaque fois qu'au seul
paramtre configur. Vous pouvez affecter des attributs systme aux paramtres d'entre,
de sortie ou d'entre/sortie.

Rgles
Vous affectez les attributs systme pour paramtre dans les sections de dclaration des
paramtres d'entre, de sortie ou d'entre/sortie.
Un identificateur doit comporter au plus 24 caractres.
La saisie doit respecter la syntaxe suivante :

Attributs systme de paramtres


24 caractres au maximum

IDENTIFICATEUR

:=

'

caractre
imprimable

'

Exemple
VAR_INPUT
in1

{S7_server:='alarm_archiv';
S7_a_type:='ar_send'}: DWORD ;

END_VAR

Vous pouvez appeler l'aide sur les attributs systme depuis la documentation en ligne de
S7-SCL. Choisissez pour cela la rubrique "Appel des aides de rfrence".

6-10

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Structure de programme S7-SCL

6.10

Section des instructions

Dfinition
La section des instructions contient les instructions qui doivent tre excutes aprs l'appel
d'un bloc de code. Elles servent traiter des donnes ou des adresses.
La section des instructions d'un bloc de donnes contient des instructions pour donner une
valeur par dfaut ses variables.

Rgles
La section des instructions peut tre introduite facultativement par le mot-cl BEGIN.
Dans les blocs de donnes, BEGIN est imprativement ncessaire. La section des
instructions se termine par le mot-cl de fin de bloc.
Chaque instruction se termine par un point-virgule.
Tous les identificateurs employs dans la section des instructions doivent tre au
pralable dclars.
Chaque instruction peut tre prcde facultativement de repres de saut.
La saisie doit respecter la syntaxe suivante :

Section des instructions

IDENTIFICATEUR

Instruction

Repre de saut

Exemple
BEGIN
VALEUR_DEBUT :=0;
VALEUR_FIN
:=200;
.
.
ENREGISTRER:
RESULTAT
.
.
END_FUNCTION_BLOCK

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

:=CONSIGNE;

6-11

Structure de programme S7-SCL

6.11

Instructions

Dfinition
Une instruction est la plus petite unit autonome du programme utilisateur. Elle reprsente
une tche que doit excuter le processeur.
S7-SCL connat les types d'instruction suivants :
Affectations de valeur permettant d'attribuer une variable soit une valeur, soit le rsultat
d'une expression ou encore la valeur d'une autre variable ;
Instructions de contrle (de branchement) servant rpter des instructions ou des
groupes d'instructions ou orienter la suite du droulement d'un programme ;
Excutions de sous-programmes destins appeler des fonctions et des blocs
fonctionnels.

Rgles
La saisie doit respecter la syntaxe suivante :

Instruction
Affectation de valeur

Excution de
sous-programme

Instruction de contrle

Exemples
Les exemples suivants montrent les divers types d'instructions.
// Exemple d'affectation de valeur
VALEUR_MESURE:= 0 ;
// Exemple d'excution de sous-programme
FB1.DB11 (TRANSFERT:= 10) ;
// Exemple d'instruction de contrle
WHILE COMPTEUR < 10 DO..
.
.
END_WHILE;

6-12

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Structure de programme S7-SCL

6.12

Composition d'un bloc fonctionnel (FB)

Dfinition
Un bloc fonctionnel (FB) est un bloc de code contenant une partie d'un programme et
disposant d'une zone de mmoire qui lui est affecte. Chaque fois qu'un bloc fonctionnel est
appel, il faut lui associer un DB d'instance. Vous dterminez la composition de ce DB
d'instance en dfinissant la section de dclaration du FB.

Syntaxe

Bloc fonctionnel
PROGRAM

DESIGNATION
DU FB

Section de dclaration du FB

FUNCTION_BLOCK

END_PROGRAM

BEGIN

Section des instructions


END_FUNCTION_BLOCK

Dsignation de FB
Indiquez comme dsignation de FB la suite du mot-cl FUNCTION_BLOCK ou
PROGRAM le mot-cl FB suivi du numro de bloc ou du nom symbolique du FB. Le numro
de bloc peut aller de 0 65533.
Exemples :
FUNCTION_BLOCK FB10
FUNCTION_BLOCK MOTEUR1

Section de dclaration du FB
La section de dclaration du FB sert dclarer les donnes spcifiques au bloc. Les
sections de dclaration autorises sont indiques la rubrique "Section de dclaration".
N'oubliez pas que la section de dclaration dtermine aussi la composition du DB d'instance
associ au FB.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

6-13

Structure de programme S7-SCL

Exemple
FUNCTION_BLOCK FB11
VAR_INPUT
V1 : INT := 7 ;
END_VAR
VAR_OUTPUT
V2 : REAL ;
END_VAR
VAR
FX1, FX2, FY1, FY2

REAL ;

END_VAR
BEGIN
IF V1 = 7 THEN
FX1 := 1.5 ;
FX2 := 2.3 ;
FY1 := 3.1 ;
FY2 := 5.4 ;
//Appel de la fonction FC11 avec affectation
//de valeurs
//aux paramtres par les variables statiques.
V2 := FC11 (X1:= FX1, X2 := FX2, Y1 := FY1,
Y2 := FY2) ;
END_IF ;
END_FUNCTION_BLOCK

6-14

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Structure de programme S7-SCL

6.13

Composition d'une fonction (FC)

Dfinition
Une fonction (FC) est un bloc de code auquel aucune zone de mmoire n'est affecte en
propre. Elle n'a pas besoin de DB d'instance. Contrairement un FB, une fonction peut
fournir un rsultat (valeur de retour) au point d'appel. Elle peut tre utilise de ce fait comme
une variable dans une expression. Les fonctions de type VOID ne fournissent pas de valeur
de retour.

Syntaxe
Fonction
VOID

FUNCTION

Section de dclaration de la FC

DESIGNATION
DE LA FC

BEGIN

Section des instructions

Spcification du
type de donnes

END_FUNCTION

Dsignation de FC
Indiquez comme dsignation de FC la suite du mot-cl "FUNCTION" le mot-cl FC suivi du
numro de bloc ou du nom symbolique de la FC. Le numro de bloc peut aller de 0 65533.
Exemple :
FUNCTION FC17 : REAL
FUNCTION FC17 : VOID

Spcification du type de donnes


La spcification du type de donnes dtermine le type de donnes de la valeur de retour.
Tous les types de donnes sont autoriss, l'exception de STRUCT et d'ARRAY. Cette
indication est inutile lorsque vous renoncez la valeur de retour en utilisant VOID.

Section de dclaration de la FC
La section de dclaration de la FC sert dclarer les donnes locales (variables
temporaires, paramtres d'entre, de sortie, d'entre/sortie, constantes, repres de saut).

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

6-15

Structure de programme S7-SCL

Section des instructions de la FC


Dans la section des instructions, il faut associer le rsultat de la fonction au nom de la
fonction. Cette instruction est inutile pour les fonctions de type VOID. Voici un exemple
d'instruction correcte pour la fonction FC31 :
FC31:= VALEUR;

Exemple
FUNCTION FC11: REAL
VAR_INPUT
x1: REAL ;
x2: REAL ;
x3: REAL ;
x4: REAL ;
END_VAR
VAR_OUTPUT
Q2: REAL ;
END_VAR
BEGIN
// Retour de la valeur de la fonction
FC11:= SQRT( (x2 - x1)**2 + (x4 - x3) **2 ) ;
Q2:= x1 ;
END_FUNCTION

6-16

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Structure de programme S7-SCL

6.14

Composition d'un bloc d'organisation (OB)

Dfinition
Comme un FB ou une FC, un bloc d'organisation est une partie du programme utilisateur,
que le systme d'exploitation appelle cycliquement ou lors d'vnements prcis. Il constitue
l'interface entre le programme utilisateur et le systme d'exploitation.

Syntaxe
Bloc d'organisation

ORGANIZATION_BLOCK

BEGIN

DESIGNATION
DE L'OB

Section des instructions

Section de dclaration de l'OB

END_ORGANIZATION_BLOCK

Dsignation d'OB
Indiquez comme dsignation la suite du mot-cl "ORGANIZATION_BLOCK" le mot-cl OB
suivi du numro de bloc ou du nom symbolique de l'OB. Le numro de bloc peut aller de
1 65533.
Exemples :
ORGANIZATION_BLOCK OB1
ORGANIZATION_BLOCK ALARM

Section de dclaration de l'OB


La section de dclaration de l'OB sert dclarer les donnes locales (variables temporaires,
constantes, repres de saut).
Chaque OB requiert en principe pour son excution 20 octets de donnes locales pour le
systme d'exploitation. Pour cela, vous devez dclarer un tableau avec un identificateur
quelconque. Si vous insrez le modle de bloc pour OB, cette dclaration s'y trouve dj.

Exemple
ORGANIZATION_BLOCK OB1
VAR_TEMP
EN_TETE : ARRAY [1..20] OF BYTE ; //20 octets pour le
systme d'exploitation
END_VAR
BEGIN
FB17.DB10 (V1 := 7) ;
END_ORGANIZATION_BLOCK

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

6-17

Structure de programme S7-SCL

6.15

Composition d'un bloc de donnes (DB)

Dfinition
Les donnes globales spcifiques l'utilisateur qui doivent tre accessibles tous les blocs
d'un programme sont stockes dans des blocs de donnes. Chaque FB, FC ou OB peut lire
ou crire dans ces blocs de donnes.
Il y a deux types de blocs de donnes.
Blocs de donnes
Il s'agit de blocs de donnes auxquels tout bloc de code du programme CPU peut
accder. Tout bloc fonctionnel (FB), toute fonction (FC) ou tout bloc d'organisation (OB) a
accs en lecture et en criture aux donnes contenues dans ces blocs de donnes.
Blocs de donnes d'instance
Les blocs de donnes d'instance sont associs un bloc fonctionnel (FB) prcis. Ils
contiennent les donnes locales pour ce bloc fonctionnel associ. Ils sont gnrs
automatiquement par le compilateur S7-SCL ds que vous appelez le FB dans le
programme utilisateur.

Syntaxe
Bloc de donnes

DATA_BLOCK

BEGIN

DESIGNATION
DU DB

Section d'affectation du DB

Section de dclaration du DB

END_DATA_BLOCK

Dsignation de DB
Indiquez comme dsignation de DB la suite du mot-cl "DATA_BLOCK" le mot-cl DB
suivi du numro de bloc ou du nom symbolique du DB. Le numro de bloc peut aller de 1
65533.
Exemples :
DATA_BLOCK DB20
DATA_BLOCK PLAGE_MESURE

6-18

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Structure de programme S7-SCL

Section de dclaration du DB
Dans la section de dclaration du DB, vous dfinissez la structure des donnes du DB. Ceci
peut tre ralis de deux manires diffrentes :
En affectant un type de donnes utilisateur
Vous pouvez indiquer ici la dsignation d'un type de donnes utilisateur dfini
prcdemment dans le programme. Le bloc de donnes prend alors la structure de cet
UDT. Vous pouvez attribuer les valeurs initiales des variables dans la section
d'affectation du DB.
En dfinissant un type de donnes STRUCT
Dans la spcification du type de donnes STRUCT, vous dterminez le type de donnes
de chaque variable enregistrer dans le DB et les valeurs initiales au besoin.

Section de dclaration du DB
DESIGNATION
DE L'UDT
Spcification du type
de donnes STRUCT

Exemple :
DATA_BLOCK DB20
STRUCT

// Section de dclaration
VALEUR:ARRAY [1..100] OF INT;
END_STRUCT

BEGIN
:
END_DATA_BLOCK

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

// Dbut de la section d'affectation


// Fin du bloc de donnes

6-19

Structure de programme S7-SCL

Section d'affectation du DB
La section d'affectation vous sert affecter des valeurs spcifiques de votre application
particulire aux donnes que vous avez dclares dans la section de dclaration.
La section d'affectation est introduite par le mot-cl BEGIN et se compose d'une suite
d'affectations de valeurs.
Section d'affectation du DB
Variable simple

:=

Constante*

* en notation LIST

Il convient de respecter la syntaxe de LIST lors de l'attribution des valeurs initiales


(initialisation) et de l'indication d'attributs et de commentaires au sein du DB. La notation des
constantes, des attributs et des commentaires est dcrite dans l'aide en ligne de LIST et
dans la documentation de STEP 7.

Exemple
// Bloc de donnes auquel on a affect un type de donnes STRUCT
DATA_BLOCK DB10
STRUCT // Dclaration de donnes avec valeurs par dfaut
VALEUR :
ARRAY [1..100] OF INT := 100 (1) ;
COMMUT :
BOOL
:= TRUE ;
S_MOT :
WORD := W#16#FFAA ;
S_OCTET
:
BYTE := B#16#FF ;
S_DUREE
:
S5TIME
:= S5T#1h30m10s ;
END_STRUCT
BEGIN

// Section d'affectation
// Affectation de valeur pour certains lments de tableau
VALEUR [1] := 5;
VALEUR [5] := -1 ;

END_DATA_BLOCK
// Bloc de donnes auquel on a affect un type de donnes
utilisateur
DATA_BLOCK DB11
UDT 51
BEGIN
END_DATA_BLOCK

6-20

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Structure de programme S7-SCL

6.16

Composition d'un type de donnes utilisateur


Un type de donnes utilisateur (UDT) est une structure de donnes spciale que vous crez
vous-mme. Puisqu'il possde un nom, il peut tre utilis plusieurs fois. Une fois dfini, il
peut tre utilis dans l'ensemble du programme utilisateur et constitue donc un type de
donnes global. Vous pouvez ainsi l'utiliser :
comme un type de donnes simple ou complexe dans un bloc ou
comme modle pour crer des blocs de donnes de structure identique.
Lorsque vous saisissez un type de donnes utilisateur, veillez ce qu'il prcde dans la
source S7-SCL le bloc dans lequel il est utilis.

Type de donnes utilisateur

TYPE

DESIGNATION
DE L`UDT

Spcification
du type de donnes
STRUCT

END_TYPE

Dsignation d'UDT
Indiquez la suite du mot-cl TYPE le mot-cl UDT suivi d'un numro ou simplement du
nom symbolique de l'UDT. Le numro de bloc peut aller de 0 65533.
Exemples :
TYPE UDT10
TYPE SECTION_AFFECTATION

Spcification du type de donnes


Elle est toujours ralise l'aide d'une spcification de type de donnes STRUCT. Vous
pouvez utiliser le type de donnes UDT dans les sections de dclaration de blocs de code
ou de blocs de donnes, ou alors l'affecter des DB.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

6-21

Structure de programme S7-SCL

Exemple de dfinition d'un UDT


TYPE VALEURS_MESURE
STRUCT
// Dfinition d'UDT avec dsignation symbolique
BIPOL_1 : INT := 5;
BIPOL_2 : WORD := W#16#FFAA ;
BIPOL_3 : BYTE := B#16#F1 ;
BIPOL_4 : WORD := B#(25,25) ;
MESURE : STRUCT
BIPOLAIRE_10V : REAL ;
UNIPOLAIRE_4_20MA : REAL ;
END_STRUCT ;
END_STRUCT ;
END_TYPE
//Utilisation de l'UDT dans un FB
FUNCTION_BLOCK FB10
VAR
PLAGE_MESURE : VALEURS_MESURE;
END_VAR
BEGIN
// . . .
PLAGE_MESURE.BIPOL_1 := -4 ;
PLAGE_MESURE.MESURE.UNIPOLAIRE_4_20MA
// . . .
END_FUNCTION_BLOCK

6-22

:=

2.7 ;

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Structure de programme S7-SCL

6.17

Options du compilateur dans les sources S7-SCL

Dfinition
Outre des blocs, les sources S7-SCL peuvent galement contenir des indications sur les
paramtres du compilateur avec lesquels les diffrents blocs doivent tre compils.
Les options du compilateur dfinissent le processus de compilation des blocs individuels ou
de la source globale, quels que soient les paramtres figurant dans l'onglet "Compiler
(paramtres)".
Vous pouvez utiliser les options du compilateur dans les sources S7-SCL ou dans les
fichiers d'information de compilation.

Validit
Les options sont uniquement valables pour la compilation de la source pour laquelle elles
ont t dfinies. L'application d'une option du compilateur commence par sa dsignation et
se termine la fin de la source ou du fichier d'information de compilation. En prsence
d'options identiques du compilateur, c'est la dernire en date qui s'applique.
Si des options du compilateur ont t dfinies pour un bloc, leur priorit est plus leve que
les paramtrages de l'onglet "Compiler (paramtres)". Les paramtrages dans l'onglet
restent cependant valables.

Rgles
Les rgles suivantes s'appliquent aux options du compilateur :
Dans la source, les options se trouvent en dehors des limites des blocs.
Les options figurent dans une ligne distincte.
Aucune distinction n'est faite entre les minuscules et les majuscules.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

6-23

Structure de programme S7-SCL

Options disponibles
Le tableau indique les options disponibles :
Option

Valeur

Signification

[Scl_]ResetOptions

Aucune indication de
valeur possible

Rinitialiser les paramtres


par dfaut du compilateur
(paramtres de la bote de
dialogue)

[Scl_]OverwriteBlocks

'y[es]' ou 'n[o]'

Ecraser les blocs

[Scl_]GenerateReferenceData

'y[es]' ou 'n[o]'

Crer des donnes de


rfrence

[Scl_]S7ServerActive

'y[es]' ou 'n[o]'

Prendre en compte l'attribut


systme "S7_server"

[Scl_]CreateObjectCode

'y[es]' ou 'n[o]'

Crer le code de l'objet

[Scl_]OptimizeObjectCode

'y[es]' ou 'n[o]'

Optimiser le code de l'objet

[Scl_]MonitorArrayLimits

'y[es]' ou 'n[o]'

Surveiller les limites de


champs

[Scl_]CreateDebugInfo

'y[es]' ou 'n[o]'

Crer les informations de


dbogage

[Scl_]SetOKFlag

'y[es]' ou 'n[o]'

Mettre le drapeau OK 1

[Scl_]SetMaximumStringLength

'1 .. 254'

Longueur maximale d'une


chane de caractres

Exemple
{SCL_OverwriteBlocks := 'y'
; SCL_CreateDebugInfo
{SetOKFlag := 'y'
; OptimizeObjectCode
:= 'y'}

6-24

:= 'y'}

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Structure de programme S7-SCL

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

6-25

Types de donnes

7.1

Prsentation des types de donnes dans S7-SCL


Les types de donnes dterminent :
La nature et la signification des lments de donnes
Les plages autorises pour les lments de donnes
Le nombre d'oprations excutables avec un oprande d'un type de donnes
La notation des constantes de ce type

Types de donnes simples


Un type de donnes simple dfinit la structure de donnes qui ne peuvent pas tre divises
en lments plus petits. Il rpond la norme EN 1131-3. Un type de donnes simple dcrit
une zone de mmoire de longueur fixe et correspond une grandeur exprime sous forme
binaire, entire, relle, sous forme de dure, d'heure ou de caractre. Les types de donnes
suivants sont prdfinis dans S7-SCL.
Groupe

Types de donnes

Signification

Types de donnes
binaires

BOOL

Les donnes de ce type occupent 1 bit , 8 bits, 16


bits ou 32 bits.

BYTE
WORD
DWORD

Types de donnes sur CHAR


caractre

Les donnes de ce type occupent 1 caractre et un


seul du jeu de caractres ASCII.

Types de donnes
numriques

Les donnes de ce type permettent de traiter des


valeurs numriques.

INT
DINT
REAL

Types de donnes
temporels

TIME
DATE

Les donnes de ce type reprsentent les diverses


valeurs de dure et de date dans STEP 7.

TIME_OF_DAY
S5TIME

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

7-1

Types de donnes

Types de donnes complexes


S7-SCL autorise les types de donnes complexes suivants :
Types de donnes

Signification

DATE_AND_TIME

Dfinit une zone de 64 bits (8 octets). Ce type de donnes, prdfini dans


S7-SCL, enregistre la date et l'heure (en format dcimal cod binaire).

DT
STRING

Dfinit une zone pour une chane de 254 caractres au maximum (type de
donnes CHAR).

ARRAY

Dfinit un tableau form de composants d'un mme type de donnes (simples


ou complexes).

STRUCT

Dfinit un groupe form d'une combinaison quelconque de types de donnes.


Vous pouvez dfinir un tableau compos de structures ou une structure
compose d'autres structures et de tableaux.

Types de donnes utilisateur


Vous pouvez crer vous-mme les types de donnes utilisateur avec la dclaration de type
de donnes. Ils ont leur propre nom et sont donc rutilisables. Un type de donnes
utilisateur peut, par exemple, servir la cration de plusieurs blocs de donnes de mme
composition.

Types de paramtre
Les types de paramtre sont des types de donnes spciaux pour les temporisations, les
compteurs et les blocs ; vous pouvez les utiliser comme paramtres formels.
Types de donnes

Signification

TIMER

Sert dclarer des fonctions de temporisation comme paramtres.

COUNTER

Sert dclarer des fonctions de comptage comme paramtres.

BLOCK_xx

Sert dclarer des FC, FB, DB et SDB comme paramtres.

ANY

Sert autoriser un oprande d'un type de donnes quelconque comme


paramtre.

POINTER

Sert autoriser l'utilisation d'une zone de mmoire comme paramtre.

Type de donnes ANY


Dans S7-SCL, vous pouvez utiliser des variables du type de donnes ANY comme
paramtres formels d'un bloc. Vous pouvez en outre crer des variables temporaires de ce
type et les employer dans des affectations de valeur.

7-2

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Types de donnes

7.2

Types de donnes simples

7.2.1

Types de donnes binaires


Les donnes de ce type sont des combinaisons binaires occupant 1 bit (type de donnes
BOOL), 8 bits, 16 bits ou 32 bits. Pour les types de donnes octet, mot et double mot, la
plage de valeurs ne peut pas tre indique. Il s'agit ici de combinaisons binaires permettant
uniquement la formation d'expressions boolennes.

7.2.2

Type

Mot-cl

Longueur en bits Cadrage

Plage de valeurs

Bit

BOOL

1 bit

Commence au bit de
poids faible de l'octet

0, 1 ou FALSE
(FAUX), TRUE (VRAI)

Octet

BYTE

8 bits

commence l'octet de
poids faible du mot

Mot

WORD

16 bits

commence une limite


de mot

Double mot

DWORD

32

commence une limite


de mot

Types de donnes sur caractre


Les donnes de ce type occupent 1 caractre et un seul du jeu de caractres ASCII.

7.2.3

Type

Mot-cl

Longueur en bits

Plage de valeurs

Caractre unique

CHAR

Jeu de caractres ASCII tendu

Types de donnes numriques


Les types de donnes numriques servent traiter les valeurs numriques (par exemple
calculer des expressions arithmtiques).
Type

Mot-cl

Longueur Cadrage
en bits

Plage de valeurs

Entier
(nombre entier)

INT

16

commence une
limite de mot

-32_768 32_767

Entier double

DINT

32

commence une
limite de mot

-2_147_483_648 2_147_483_647

Virgule flottante
(nombre virgule
flottante IEEE)

REAL

32

commence une
limite de mot

-3.402822E+38 -1.175495E-38
+/- 0
1.175495E-38 3.402822E+38

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

7-3

Types de donnes

7.2.4

Types de donnes temporels


Les donnes de ce type reprsentent les diverses valeurs de dure et de date dans STEP 7
(par exemple pour rgler la date ou saisir la dure d'une temporisation).

Type

Mot-cl

Longueur en
bits

Cadrage

Plage de valeurs

Dure S5

S5TIME

16

commence une
limite de mot

T#0H_0M_0S_10MS
T#2H_46M_30S_0MS

Dure :
TIME
dure CEI par pas T
de 1 ms.

32

commence une
limite de mot

T#0D_0H_0M_0S_0MS
T#24D_20H_31M_23S_647MS

Date :
date CEI par pas
de 1 jour.

16

commence une
limite de mot

D#1990-01-01
D#2168-12-31

32

commence une
limite de mot

TOD#0:0:0.0
TOD#23:59:59.999

S5T

DATE
D

Heure du jour :
TIME_OF_DAY
heure par pas de TOD
1 ms.

Pour les variables du type de donnes S5TIME, la rsolution est limite, c'est--dire que
seules les bases de temps 0,01 s, 0,1 s, 1s et 10 s sont disponibles. Le compilateur arrondit
les valeurs en consquence. Si la valeur choisie dpasse la limite suprieure de la plage des
valeurs autorises, c'est la valeur limite suprieure qui est utilise.

7-4

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Types de donnes

7.3

Types de donnes complexes

7.3.1

Type de donnes DATE_AND_TIME

Dfinition
Ce type de donnes dfinit une zone de 64 bits (8 octets) pour l'indication de la date et de
l'heure. Cette zone de donnes enregistre les informations suivantes :
anne, mois, jour, heures, minutes, secondes, millisecondes.

Syntaxe
DATE_AND_TIME
DATE_AND_TIME#
Indication de la date

Indication de l'heure du jour

DT#

La syntaxe exacte pour indiquer la date et l'heure du jour est donne dans la rubrique
"Dclaration de constantes".

Plage de valeurs
Type

Mot-cl

Longueur en bits Cadrage

Date et heure

DATE_AND_TIME 64
DT

commence et finit
une limite de mot

Plage de valeurs
DT#1990-01-01-0:0:0.0

DT#2089-12-31-23:59:59.999

Le type de donnes DATE_AND_TIME est enregistr en format DCB.


Octets
0
1
2
3
4
5
6
7 (4 BPS)
7 (4 BMS)

Contenu
Anne
Mois
Jour
Heures
Minutes
Secondes
2 DPS (dcades les plus
significatives) de ms
DMS (dcade la moins
significative) de ms
Jour de la semaine

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Plage
1990 ... 2089
01 ... 12
1 ... 31
0 ... 23
0 ... 59
0 ... 59
00 ... 99
0 ... 9
1 ... 7

(1 = dimanche)

7-5

Types de donnes

Exemple
Voici la dfinition correcte du 20.10.1995 12 heures 20 min. 30 s et 10 ms :
DATE_AND_TIME#1995-10-20-12:20:30.10
DT#1995-10-20-12:20:30.10

Nota
Des fonctions standard sont votre disposition (dans la bibliothque de STEP 7) pour vous
permettre d'accder avec prcision aux composants DATE ou TIME.

7-6

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Types de donnes

7.3.2

Type de donnes STRING

Dfinition
Le type de donnes STRING dfinit une chane de 254 caractres au plus. La zone de
mmoire standard rserve une chane de caractres est de 256 octets. Cette zone de
mmoire est requise pour enregistrer les 254 caractres ainsi qu'un en-tte de 2 octets.
Vous pouvez rduire la place mmoire requise par une chane de caractres en indiquant
dans sa dfinition le nombre maximal de caractres enregistrer dans la chane. Une
chane de longueur nulle, c'est--dire sans contenu, reprsente la plus petite valeur possible.

Syntaxe

Spcification du type de donnes STRING

STRING

Expression
simple

Longueur de la chane

L'expression simple reprsente le nombre maximal de caractres dans la chane. Tous les
caractres du code ASCII sont autoriss. Une chane peut contenir aussi des caractres
spciaux, comme par exemple des caractres de commande, et des caractres non
imprimables. Vous les entrez au moyen de la syntaxe $hh, hh reprsentant la valeur
hexadcimale du caractre ASCII (ex. : '$0D$0AText' ).
Quand vous dclarez la place mmoire requise par une chane de caractres, vous pouvez
fixer le nombre maximal de caractres enregistrer dans cette chane. Si vous n'indiquez
pas ici de longueur maximale, c'est une chane de longueur 254 qui sera cre.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

7-7

Types de donnes

Exemple :
VAR
Text1
Text2
END_VAR

: String [123];
: String;

Dans la dclaration de la variable "Text1", la constante "123" reprsente le nombre maximal


de caractres dans la chane. Pour la variable "Text2" , c'est une longueur de 254 caractres
qui sera rserve.

Nota
Pour les paramtres de sortie et d'entre/sortie ainsi que pour les valeurs de retour de
fonctions, vous pouvez rduire la zone de 254 caractres rserve de manire standard afin
de mieux utiliser les ressources de votre CPU. Choisissez cet effet la commande Outils >
Paramtres, puis l'onglet "Compilateur" dans la bote de dialogue qui s'affiche.
L'option "Long. chane max." vous permet d'indiquer le nombre de caractres souhait.
Notez que cette valeur s'appliquera toutes les variables STRING de la source. Elle ne doit
donc pas tre infrieure celle des variables STRING employes dans le programme.

Initialisation de chanes de caractres


Dans la dclaration des paramtres de blocs fonctionnels (FB), il est possible d'initialiser les
variables STRING, tout comme les autres variables, avec des chanes de caractres
constantes. Pour les paramtres des fonctions (FC), l'initialisation n'est pas possible.
Lorsque la chane de caractres initiale est plus courte que la longueur maximale dclare,
les positions restantes demeurent libres. Le traitement ultrieur de la variable ne tient
compte que des positions rellement occupes.
Exemple :
x : STRING[7]:='Adresse';
Si vous avez besoin de variables temporaires de type STRING, par exemple pour la
sauvegarde temporaire de rsultats, il faut entrer une valeur initiale (constante STRING) soit
dans la dclaration de la variable, soit dans une affectation de valeur avant de les utiliser.

Nota
Quand une fonction provenant d'une bibliothque standard fournit une valeur de retour qui est du type
de donnes STRING et que cette valeur doit tre affecte une variable temporaire, il faut d'abord
initialiser la variable.

7-8

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Types de donnes

Exemple :
FUNCTION Test : STRING[45]
VAR_TEMP
x : STRING[45];
END_VAR
x := 'a';
x := concat (in1 := x, in2 := x);
Test := x;
END_FUNCTION
Sans l'initialisation x := 'a'; la fonction fournirait un rsultat faux.

Cadrage
Les variables de type STRING commencent et finissent une limite de mot.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

7-9

Types de donnes

7.3.3

Type de donnes ARRAY

Dfinition
Un type de donnes ARRAY possde un nombre dtermin de composants d'un seul et
mme type de donnes. S7-SCL distingue :
le type de donnes ARRAY unidimensionnel : c'est une liste d'lments de donnes
disposs selon un ordre croissant ;
le type de donnes ARRAY bidimensionnel : c'est un tableau de donnes comportant des
lignes et des colonnes ; la premire dimension se rapporte au numro de ligne, la
seconde au numro de colonne ;
le type de donnes ARRAY de dimension suprieure : c'est l'extension du type ARRAY
bidimensionnel des dimensions supplmentaires ; le nombre maximal de dimensions
autorises est de 6.

Syntaxe
Spcification du type de donnes ARRAY

ARRAY

Spcification des indices

Indice
1

..

Indice
n

,
6 dimensions au plus

OF

Spcification du
type de donnes

Spcification des indices


Elle dcrit les dimensions du type de donnes ARRAY.
Elle indique en effet le plus petit indice et le plus grand indice possibles (plage d'indices)
pour chaque dimension.
L'indice peut tre une valeur entire quelconque (-32768 32767).
Les limites doivent tre spares par deux points. Les diffrentes plages d'indices sont
spares l'une de l'autre par des virgules.
L'ensemble de la spcification des indices figure entre crochets.

Spcification du type de donnes


Elle consiste dclarer le type de donnes des composants. Tous les types de donnes
sont autoriss. Le type de donnes des composants d'un tableau peut tre aussi STRUCT.
Les types de paramtre ne sont pas autoriss comme type des lments d'un tableau.

7-10

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Types de donnes

Exemple
VAR
REGULATEUR1 :
ARRAY[1..3,1..4] OF INT:=
-1289,

10362,

385,

-54,

736,

-83,

77,

2,

60,

-37, -7,
103 ;
REGULATEUR2 : ARRAY[1..10] OF REAL ;
END_VAR

Cadrage
Les variables de type ARRAY sont cres ligne par ligne. Chaque dimension d'une variable
de type BOOL, BYTE ou CHAR se termine une limite d'octet, toutes les autres une limite
de mot.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

7-11

Types de donnes

7.3.4

Type de donnes STRUCT

Dfinition
Un type de donnes STRUCT dcrit une zone comportant un nombre fixe de composants
dont les types de donnes peuvent tre diffrents. Ces lments de donnes sont indiqus
dans la dclaration des composants, immdiatement aprs le mot-cl STRUCT.
Un lment de donnes de type STRUCT peut tre lui-mme complexe, ce qui autorise
l'imbrication des types de donnes STRUCT.

Syntaxe

Spcification du type de donnes STRUCT

Dclaration des
composants

STRUCT

END_STRUCT

Dclaration des composants


La dclaration des composants est une liste des diverses composants du type de donnes
STRUCT. Elle comporte :
1 n identificateurs avec le type de donnes affect et
des valeurs initiales par dfaut facultatives.
Dclaration des composants
IDENTIFICATEUR

Spcification du
type de donnes

Initialisation du
type de donnes

Nom du composant
Nom du composant dans les tableaux

L'identificateur est le nom d'un composant de la structure laquelle s'applique la


spcification de type de donnes qui suit.
Tous les types de donnes sont autoriss dans la spcification, sauf les types de paramtre.
A la suite de la spcification du type, vous pouvez affecter une valeur initiale un
composant de la structure ; ceci est facultatif. Pour cela, vous avez recours une affectation
de valeur.

7-12

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Types de donnes

Exemple
VAR
MOTEUR : STRUCT
DONNEES : STRUCT
COURANT_CHARGE : REAL ;
TENSION
: INT := 5 ;
END_STRUCT ;
END_STRUCT ;
END_VAR

Cadrage
Les variables de type STRUCT commencent et finissent une limite de mot.

Important
Si vous dfinissez une structure qui ne se termine pas une limite WORD, S7-SCL
complte automatiquement les octets manquants et adapte ainsi la taille de la structure.
L'adaptation de la taille de la structure risque d'entraner des conflits d'accs aux types de
donnes possdant une longueur d'octets impaire.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

7-13

Types de donnes

7.4

Type de donnes utilisateur

7.4.1

Types de donnes utilisateur (UDT)

Dfinition
Vous dfinissez un type de donnes utilisateur (UDT) en tant que bloc. Une fois dfini, il
peut tre utilis dans l'ensemble du programme utilisateur. Il s'agit donc d'un type de
donnes global. Vous pouvez l'utiliser dans la section de dclaration d'un bloc ou d'un bloc
de donnes en indiquant sa dsignation UDTx (x reprsente un numro) ou le mnmonique
qui lui est affect.
Le type de donnes utilisateur peut servir dclarer des variables, des paramtres, des
blocs de donnes et d'autres types de donnes utilisateur. Il permet galement de dclarer
des composants de structures ou de tableaux.

Syntaxe
Type de donnes utilisateur

TYPE

DESIGNATION
DE L`UDT

Spcification
du type de donnes
STRUCT

END_TYPE

Dsignation d'UDT
La dclaration d'un type de donnes utilisateur est introduite par le mot-cl TYPE, suivi du
nom du type de donnes utilisateur (identificateur de l'UDT). Ce nom peut tre indiqu de
manire absolue comme nom standard de forme UDTx (x reprsente un numro) ou de
manire symbolique avec un mnmonique.
Exemples :
TYPE UDT10
TYPE VALEURS_MESURE

7-14

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Types de donnes

Spcification du type de donnes


La dsignation d'UDT est suivie de la spcification du type de donnes. Seule la
spcification STRUCT est autorise ici :
STRUCT
:
END_STRUCT

Nota
Dans un type de donnes utilisateur, il faut employer la syntaxe de LIST. Ceci concerne par
exemple la manire d'crire les constantes et l'attribution de valeurs initiales (initialisation).
L'aide en ligne relative LIST fournit des informations sur l'criture des constantes.

Exemple
// Dfinition d'UDT avec dsignation symbolique
TYPE
VALEURS_MESURE: STRUCT
BIPOL_1 : INT := 5;
BIPOL_2 : WORD := W#16#FFAA ;
BIPOL_3 : BYTE := B#16#F1 ;
BIPOL_4 : WORD := W#16#1919 ;
MESURE : STRUCT
BIPOLAIRE_10V : REAL ;
UNIPOLAIRE_4_20MA : REAL ;
END_STRUCT;
END_STRUCT;
END_TYPE
//Utilisation de l'UDT dans un FB
FUNCTION_BLOCK FB10
VAR
PLAGE_MESURE : VALEURS_MESURE;
END_VAR
BEGIN
// . . .
PLAGE_MESURE.BIPOL_1 := -4 ;
PLAGE_MESURE.MESURE.UNIPOLAIRE_4_20MA
// . . .
END_FUNCTION_BLOCK

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

:=

2.7 ;

7-15

Types de donnes

7.5

Types de donnes pour paramtre


Pour dterminer les paramtres de bloc formels des FB et FC, vous pouvez utiliser non
seulement les types de donnes dj prsents, mais galement ce qu'on appelle des types
de paramtre.
Paramtre
TIMER

Longueur
2 octets

Description
Caractrise une temporisation particulire qui doit tre utilise par
le programme dans le bloc de code appel.

Paramtre effectif :
COUNTER

2 octets

Caractrise un compteur particulier qui doit tre utilis par le


programme dans le bloc de code appel.

Paramtre effectif :
BLOCK_FB
BLOCK_FC
BLOCK_DB
BLOCK_SDB

2 octets

p. ex. T1

p. ex. Z10

Caractrise un bloc particulier qui doit tre utilis par un bloc de


code List appel.

Paramtre effectif :

p. ex. FC101, DB42


DB42

Notas :
Il est impossible daccder au type de donnes BLOCK_DB
(myDB.dw10) Vous pouvez cependant continuer lditer avec
BLOCK_DB_TO_WORD().
Le types de donnes BLOCK_SDB, BLOCK_FB et BLOCK_FC ne
peuvent pas tre exploits par des programmes S7-SCL
Vous pouvez les utiliser pour attribuer des valeurs des
paramtres de ce type lappel de blocs LIST.
ANY

10 octets

S'utilise pour autoriser un type de paramtre quelconque pour le


paramtre effectif.

POINTER

6 octets

Caractrise une zone de mmoire particulire qui doit tre utilise


par le programme.

Paramtre effectif :

7.5.1

p. ex. M50.0

Types de donnes TIMER et COUNTER


Vous dterminez une temporisation ou un compteur utiliser lors de l'excution d'un bloc.
Les types de donnes TIMER et COUNTER ne sont autoriss que pour les paramtres
d'entre (VAR_INPUT).

7-16

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Types de donnes

7.5.2

Types de donnes BLOCK


Vous dterminez un bloc utiliser comme paramtre d'entre. C'est la dclaration du
paramtre d'entre qui dcide du type de bloc (FB, FC, DB). Pour dfinir le paramtre, vous
indiquez l'identificateur du bloc, sous forme absolue ou symbolique.
L'adressage absolu du type de donnes BLOCK_DB est possible (myDB.dw10). Pour les
autres types de donnes BLOCK, S7-SCL ne fournit pas d'opration. Il n'est possible de
dfinir des paramtres de ce type que lors des appels de bloc. Pour les fonctions, la
transmission d'un paramtre d'entre n'est pas possible.
Dans S7-SCL, vous pouvez affecter comme paramtres effectifs des oprandes des types
de donnes suivants :
Blocs fonctionnels sans paramtres formels
Fonctions sans paramtres formels ni valeur de retour (fonctions VOID)
Blocs de donnes et blocs de donnes systme

7.5.3

Type de donnes POINTER


Vous pouvez affecter au type de donnes POINTER des variables que vous dclarez en tant
que paramtres formels d'un bloc. A l'appel d'un tel bloc, ces paramtres peuvent tre
dfinis avec des oprandes de type de donnes quelconque (sauf ANY).
S7-SCL n'offre toutefois qu'une seule instruction pour le traitement du type de donnes
POINTER : la transmission des blocs de niveau hirarchique infrieur.
Vous pouvez affecter les types d'oprande suivants comme paramtres effectifs :
Adresses absolues
Mnmoniques
Oprandes du type de donnes POINTER
(seulement si l'oprande est un paramtre formel compatible)
Constante NIL :
vous indiquez un pointeur zro.

Restrictions
Le type de donnes POINTER est autoris pour les paramtres formels d'entre,
d'entre/sortie de FB et de FC de mme que pour les paramtres de sortie de FC. Les
constantes ne sont pas autorises comme paramtres effectifs ( l'exception de la
constante NIL).
Lorsque vous affectez une variable temporaire un paramtre formel de type POINTER
l'appel d'un FB ou d'une FC, vous ne pouvez pas transmettre ce paramtre un autre
bloc. Les variables temporaires perdent leur validit lors de la transmission.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

7-17

Types de donnes

A l'appel d'une FC ou d'un FB, vous pouvez uniquement affecter des paramtres formels
du type Pointer des entres du processus (%PEW), si le paramtre formel a t dclar
comme paramtre d'entre.
A l'appel d'un FB, vous pouvez uniquement affecter des paramtres formels du type
Pointer des sorties du processus (%PEW), si le paramtre formel a t dclar comme
paramtre de sortie.

Exemple
FUNCTION FC100 : VOID
VAR_IN_OUT
N_out : INT;
out
: POINTER;
END_VAR
VAR_TEMP
ret
: INT;
END_VAR
BEGIN
// ...
ret := SFC79(N := N_out, SA := out);
// ...
END_FUNCTION
FUNCTION_BLOCK FB100
VAR
ii
: INT;
aa : ARRAY[1..1000] OF REAL;
END_VAR
BEGIN
// ...
FC100( N_out := ii, out := aa);
// ...
END_FUNCTION_BLOCK

7-18

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Types de donnes

7.6

Type de donnes ANY


Dans S7-SCL, vous pouvez dclarer des variables du type de donnes ANY comme suit :
En tant que paramtres formels d'un bloc, ces paramtres pouvant tre remplacs
l'appel du bloc par des paramtres effectifs d'un type de donnes quelconque ;
En tant que variables temporaires pouvant recevoir des valeurs d'un type de donnes
quelconque.
Vous pouvez utiliser les donnes suivantes comme paramtres effectifs ou droite d'une
affectation de valeur :
Variables locales et globales
Variables dans le DB (avec adressage absolu ou symbolique)
Variables dans l'instance locale (avec adressage absolu ou symbolique)
Constante NIL :
vous indiquez un pointeur zro
Type de donnes ANY
Temporisations, compteurs et blocs :
vous indiquez leur identificateur (par exemple T1, Z20 ou FB6).

Restrictions
Le type de donnes ANY est autoris pour les paramtres formels d'entre,
d'entre/sortie de FB et de FC de mme que pour les paramtres de sortie de FC. Les
constantes ne sont pas autorises comme paramtres effectifs ou droite d'une
affectation ( l'exception de la constante NIL).
Lorsque vous affectez une variable temporaire un paramtre formel de type ANY lors
de l'appel d'un FB ou d'une FC, vous ne pouvez pas transmettre ce paramtre un autre
bloc. Les variables temporaires perdent leur validit lors de la transmission.
Il n'est pas permis d'utiliser les variables de ce type comme composant d'une structure ou
lment d'un tableau.
A l'appel d'une FC ou d'un FB, vous pouvez uniquement affecter des paramtres formels
du type ANY des entres du processus (%PEW), si le paramtre formel a t dclar
comme paramtre d'entre.
A l'appel d'un FB, vous pouvez uniquement affecter des paramtres formels du type ANY
des sorties du processus (%PEW), si le paramtre formel a t dclar comme
paramtre de sortie.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

7-19

Types de donnes

7.6.1

Exemple de type de donnes ANY


VAR_INPUT
iANY : ANY;
END_VAR
VAR_TEMP
pANY : ANY;
END_VAR

CASE ii OF
1:
pANY := MW4;

// pANY contient l'adresse de MW4

3..5:
pANY:= aINT[ii];

// pANY contient l'adresse du ii-me


// lment du tableau aINT;

pANY := iANY;

// pANY contient la valeur


// de la variable d'entre iANY ELSE
// pANY contient la valeur du pointeur NIL

100:

pANY := NIL;
END_CASE;
SFCxxx(IN := pANY);

7-20

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dclaration de variables locales et de


paramtres

8.1

Variables locales et paramtres de bloc

Catgories de variables
Le tableau suivant dcrit les catgories servant classer les variables locales :
Variable

Signification

Variables statiques

Les variables statiques sont des variables locales dont la valeur reste la mme
durant toutes les excutions du bloc (mmoire du bloc). Elles servent stocker les
valeurs d'un bloc fonctionnel et sont stockes dans le bloc de donnes d'instance.
Les variables temporaires appartiennent localement un bloc de code et
n'occupent aucune zone de mmoire statique, puisqu'elles sont ranges dans la
pile de la CPU. Leur valeur ne reste la mme que le temps d'une excution du
bloc. Il n'est pas possible d'adresser les variables temporaires en dehors du bloc
dans lequel elles ont t dclares.

Variables temporaires

Catgories de paramtres de bloc :


Les paramtres de bloc servent rserver de la place et sont dtermins seulement quand
le bloc est utilis concrtement (appel). Les paramtres dclars dans le bloc sont les
paramtres formels, les valeurs qui leur sont affectes l'appel du bloc sont les paramtres
effectifs. Les paramtres formels d'un bloc peuvent tre considrs comme des variables
locales.
On peut classer les paramtres de bloc dans les catgories suivantes :
Paramtres de bloc

Signification

Paramtres d'entre

A l'appel du bloc, les paramtres d'entre prennent les valeurs d'entre actuelles.
Vous pouvez y accder uniquement en lecture.
Les paramtres de sortie transmettent les valeurs de sortie actuelles au bloc
appelant. Vous pouvez y accder en criture comme en lecture.
A l'appel d'un bloc, les paramtres d'entre/sortie prennent les valeurs d'entre
actuelles. Une fois la valeur traite, ils enregistrent le rsultat et le retourne au
bloc appelant.

Paramtres de sortie
Paramtres d'entre/sortie

Drapeau OK
Le compilateur de S7-SCL offre un drapeau servant dceler les erreurs durant l'excution
de programmes dans la CPU. Il s'agit d'une variable locale de type BOOL dont le nom
prdfini est "OK".

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

8-1

Dclaration de variables locales et de paramtres

8.2

Syntaxe gnrale d'une dclaration de variable ou de


paramtre
Il faut dclarer un par un les variables ou les paramtres de bloc avant de pouvoir les utiliser
dans un bloc de code ou dans un bloc de donnes. La dclaration tablit qu'un identificateur
est utilis comme paramtre de bloc ou comme variable et lui associe un type de donnes.
Une dclaration de variable ou de paramtre se compose d'un identificateur au choix et
d'une indication de type de donnes. Le diagramme syntaxique suivant en montre la forme
gnrale.

Syntaxe de la dclaration de variable ou de paramtre

Dclaration de variable

IDENTIFICATEUR

1)

AT

Variable
simple

Spcification du
type de donnes

2)

Initialisation du
type de donnes

Nom de variable,
de paramtre
ou
de composant
,

1) Attributs systme pour paramtre


2) sauf pour AT

Exemples
VALEUR1
:
REAL;
S'il y a plusieurs variables du mme type :
VALEUR2, VALEUR3,VALEUR4,....: INT;
TABLEAU
:
ARRAY[1..100, 1..10] OF REAL;
PHRASE
:
STRUCT
TABLEAU_MESURE:ARRAY[1..20] OF REAL;
COMMUTATEUR:BOOL;
END_STRUCT

Nota
Pour utiliser des mots rservs comme identificateurs, vous devez les faire prcder du
signe # (par exemple, #FOR).

8-2

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dclaration de variables locales et de paramtres

8.3

Initialisation
Lorsque vous dclarez des variables statiques, des paramtres d'entre et des paramtres
de sortie d'un FB, vous pouvez leur affecter une valeur par dfaut. De mme pour les
paramtres d'entre/sortie, mais seulement quand ils sont d'un type de donnes simple.
Pour les variables simples, vous devez affecter (:=) une constante aprs avoir indiqu le
type de donnes.

Syntaxe

INITIALISATION

CONSTANTE

LISTE DINITIAL.
DUN TABLEAU

Exemple
VALEUR

:REAL := 20.25;

Nota
Il n'est pas possible d'initialiser une liste de variables (A1, A2, A3,...: INT:=...). Dans ce cas,
il faut initialiser les variables sparment.

Initialisation de tableaux
Pour initialiser un type de donnes ARRAY, vous pouvez soit indiquer une valeur spare
par une virgule pour chaque composant du tableau, soit affecter une mme valeur
plusieurs composants en plaant devant un facteur de rptition (nombre entier).
Les valeurs d'initialisation peuvent tre mises entre parenthses, en option. Mme dans le
cas de tableaux multi-dimensionnels, une seule paire de parenthses est indique.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

8-3

Dclaration de variables locales et de paramtres

Syntaxe de l'initialisation de tableaux

LISTE DE REPETITION DE CONSTANTES

LISTE DE REPET.
DE CONSTANTES
CHAINE DE CHIFFRES
DECIMALES
FACTEUR DE REPETITION

CONSTANTE

Exemples

//Initialisation de variables statiques :


INDICE1 : INT := 3 ;
//Initialisation de tableaux :
EGULATEUR1 : ARRAY [1..2, 1..2] OF INT := -54, 736, -83, 77;
REGULATEUR2 : ARRAY[1..10] OF REAL := 10(2.5);
REGULATEUR1 : ARRAY [1..2, 1..2] OF INT := [-54, 736, -83, 77];
REGULATEUR2 : ARRAY[1..10] OF REAL := [10(2.5)];
//Initialisation de structures :
GENERATEUR: STRUCT
DAT1 :
REAL
:= 100.5;
A1 :
INT
:= 10 ;
A2 :
STRING[6]
:= 'FACTEUR';
A3 :
ARRAY[1..12] OF REAL
:= 0.0, 10(100.0), 1.0;
END_STRUCT ;
END_VAR

8-4

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dclaration de variables locales et de paramtres

8.4

Dclaration d'accs des zones de variable


Pour adresser avec un type de donnes supplmentaire une variable dclare, vous pouvez
dfinir un accs la variable ou des zones au sein de la variable. Vous employez pour
cela le mot-cl "AT". Cet accs n'apparatra que localement dans le bloc, il ne sera pas
adopt dans l'interface. Il peut tre utilis dans le bloc comme toute autre variable. Il hrite
de tous les attributs de la variable qu'il dsigne, seul le type de donnes est nouveau.

Exemple
Dans l'exemple ci-aprs, plusieurs accs un paramtre d'entre sont rendus possibles :
VAR_INPUT
Tampon : ARRAY[0..255] OF BYTE;
Telegramme1 AT Tampon : UDT100 ;
Telegramme2 AT Tampon : UDT200 ;
END_VAR
Le bloc appelant dfinit le paramtre Tampon, il ne voit pas les noms Telegramme1 et
Telegramme2. Le bloc appel dispose alors de 3 faons d'interprter les donnes, savoir
comme tableau de nom Tampon ou organises autrement sous Telegramme1 ou
Telegramme2.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

8-5

Dclaration de variables locales et de paramtres

Rgles
La dclaration d'un accs supplmentaire une variable doit tre effectue dans le
mme bloc de dclaration et la suite de la dclaration de la variable sur laquelle il doit
pointer.
L'initialisation n'est pas possible.
Le type de donnes de l'accs doit tre compatible avec celui de la variable. C'est la
variable qui impose la taille de la zone de mmoire. La place mmoire requise par l'accs
peut tre infrieure ou gale cette taille. Il faut respecter en outre les rgles de
combinaison suivantes :
Type de donnes
de l'accs

Type de donnes
de la variable
simple

FB

Complexe

Dclaration d'un accs dans


VAR, VAR_TEMP, VAR_IN
ou VAR_OUT

simple

complexe

Dclaration d'un accs dans


VAR_IN_OUT

simple

ANY/POINTER

ANY/POINTER

x (1)

x (1)
x

complexe

ANY/POINTER
FC

Dclaration d'un accs dans


VAR ou VAR_TEMP

simple

complexe

ANY/POINTER
Dclaration d'un accs dans
VAR_IN, VAR_OUT ou
VAR_IN_OUT

simple

x
x

complexe

ANY/POINTER

(1) Any_Pointer n'est pas autoris dans VAR_OUT.

simple = BOOL, BYTE, WORD, DWORD, INT, DINT, DATE, TIME, S5TIME, CHAR
complexe = ARRAY, STRUCT, DATE_AND_TIME, STRING

8-6

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dclaration de variables locales et de paramtres

8.5

Utilisation de multi-instances
Il est possible qu'en raison des performances des CPU S7 utilises (par exemple espace
mmoire), vous ne puissiez ou ne souhaitiez associer qu'un nombre limit de blocs de
donnes aux donnes d'instance. Si d'autres blocs fonctionnels dj existants sont appels
dans un FB de votre programme utilisateur (hirarchie d'appel de FB), vous pouvez les
appeler sans DB d'instance en propre (c'est--dire sans DB d'instance supplmentaire).
Vous pouvez employer pour cela la solution suivante :
Entrez les FB appeler comme variables statiques dans la dclaration des variables du
FB appelant.
Appelez dans ce bloc fonctionnel d'autres blocs fonctionnels sans DB d'instance en
propre.
Vous pouvez ainsi regrouper les donnes d'instance dans un seul DB d'instance, et donc
mieux utiliser le nombre de DB disponibles.

8.6

Dclaration d'une instance


Dans la section de dclaration des variables statiques d'un bloc fonctionnel (VAR ;
END_VAR), vous pouvez non seulement dclarer des variables d'un type de donnes
simple, complexe ou utilisateur, mais galement des variables de type FB ou SFB. On les
appelle instances locales du FB ou du SFB.
Les donnes d'instance locales sont enregistres dans le bloc de donnes d'instance du
bloc fonctionnel appelant. Une initialisation locale, spcifique l'instance n'est pas possible.
Pour un bloc appel comme instance locale, la longueur 0 n'est pas autorise. Il doit contenir
au moins la dclaration d'une variable statique ou d'un paramtre.

Syntaxe
Le FB et le SFB doivent
dj exister !

Dclaration d'instances
DESIGNATION
DU FB
IDENTIFICATEUR
Nom de l'instance locale

:
DESIGNATION
DU SFB

Exemple
Dfinition1
: FB10;
Dfinition2,Dfinition3,Dfinition4
Moteur1
: Moteur ;

: FB100;

Moteur tant un mnmonique enregistr pour un FB dans la table des mnmoniques.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

8-7

Dclaration de variables locales et de paramtres

8.7

Drapeau OK
Le drapeau OK sert noter l'excution correcte ou incorrecte d'un bloc. Il s'agit d'une
variable locale de type BOOL dont le nom prdfini est "OK".
Au dbut de l'excution d'un programme, le drapeau OK a la valeur TRUE. Des instructions
S7-SCL permettent de l'interroger un endroit quelconque du bloc ou de lui donner la valeur
TRUE / FALSE. Si une erreur se produit durant l'excution d'une opration (par exemple une
division par zro), le drapeau OK prend la valeur FALSE. Lorsque vous quittez le bloc, la
valeur du drapeau OK est enregistre dans le paramtre de sortie ENO o elle peut tre
exploite par le bloc appelant.

Dclaration
Le drapeau OK est une variable dclare dans le systme. Il n'est donc pas ncessaire de la
dclarer. Si vous souhaitez vous en servir dans votre programme utilisateur, vous devez
cocher l'option de compilation "Activer drapeau OK" avant d'effectuer la compilation.

Exemple
// Mettre le drapeau OK sur TRUE,
// afin de pouvoir vrifier
// que l'action se droule correctement.
OK:= TRUE;
Division:= 1 / IN;
IF OK THEN
// La division a t excute correctement.
// :
// :
ELSE

// La division a t excute avec une erreur.


// :

END_IF;

8-8

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dclaration de variables locales et de paramtres

8.8

Sections de dclaration

8.8.1

Prsentation des sections de dclaration


A chaque catgorie de variable locale ou de paramtre est affect une section de
dclaration propre, caractrise par un couple de mots-cls. Chaque section contient les
dclarations qui y sont autorises. L'ordre de ces sections est quelconque.
Le tableau suivant indique les types de variables ou de paramtres que vous pouvez
dclarer dans les divers blocs de code :
Donnes

Syntaxe

FB

FC

Variable comme :
variable statique

VAR
...
END_VAR

X *)

VAR_TEMP
...
END_VAR

Paramtre de bloc comme : VAR_INPUT


paramtre d'entre
...
END_VAR

variable temporaire

paramtre de sortie

VAR_OUTPUT
...
END_VAR

paramtre d'entre/sortie

VAR_IN_OUT
...
END_VAR

OB

*) La dclaration de variables l'intrieur du couple de mots-cls VAR et END_VAR est


certes autorise pour les fonctions, mais les dclarations sont cres dans la zone
temporaire lors de la compilation de la source.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

8-9

Dclaration de variables locales et de paramtres

8.8.2

Variables statiques
Les variables statiques sont des variables locales dont la valeur reste la mme durant toutes
les excutions d'un bloc (mmoire du bloc). Elles servent stocker les valeurs d'un bloc
fonctionnel et sont enregistres dans un bloc de donnes d'instance associ.

Syntaxe
Les variables statiques sont dclares dans la section de dclaration VAR / END_VAR.
Cette section fait partie de la section de dclaration du FB. Aprs la compilation, c'est cette
section qui, avec les sections pour les paramtres de bloc, dterminera la composition du
bloc de donnes d'instance associ.
Vous pouvez :
Y crer des variables, affecter aux variables des types de donnes ainsi que des valeurs
initiales
ou dclarer en tant que variable statique un FB appeler si vous souhaitez l'appeler
comme instance locale dans le FB actif.
Section de variables statiques

Dclaration
de la variable
END_VAR

VAR
Dclaration
de l'instance

Exemple
VAR
PASSAGE
TABLEAU_MESURE
COMMUTATEUR
MOTEUR_1,MOTEUR_2

:INT;
:ARRAY [1..10] OF REAL;
:BOOL;
:FB100;
//Dclaration d'instance

END_VAR

Adressage
L'adressage des variables s'effectue dans la section des instructions.
Adressage au sein du bloc : vous pouvez adresser une variable dans la section des
instructions du bloc fonctionnel dont la section de dclaration contient la dclaration de
cette variable. La marche suivre est explique avec prcision dans la rubrique
"Affectation de valeur".
Adressage depuis l'extrieur par le DB d'instance : vous pouvez adresser une
variable depuis d'autres blocs au moyen d'un adressage index, par ex. DBx.variable.

8-10

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dclaration de variables locales et de paramtres

8.8.3

Variables temporaires
Les variables temporaires appartiennent localement un bloc de code et n'occupent aucune
zone de mmoire statique. Elles sont stockes dans la pile de la CPU. Leur valeur ne reste
la mme que durant une excution du bloc. Il n'est pas possible d'adresser les variables
temporaires en dehors du bloc dans lequel elles ont t dclares. Au dbut de l'excution
d'un OB, d'un FB ou d'une FC, la valeur des donnes temporaires n'est pas dfinie.
L'initialisation n'est pas possible.
Dclarez des donnes comme temporaires lorsque vous en avez besoin seulement pour y
enregistrer des rsultats intermdiaires lors du traitement de votre OB, FB ou FC.

Syntaxe
La dclaration des variables temporaires s'effectue dans la section de dclaration
VAR_TEMP / END_VAR. Cette section fait partie d'un FB, d'une FC ou d'un OB. Le nom de
la variable et son type de donnes sont indiqus dans la dclaration de la variable.

Section de variables temporaires

VAR_TEMP

Dclaration
de la variable

END_VAR

,
L'initialisation n'est pas possible

Exemple
VAR_TEMP
TAMPON 1 : ARRAY [1..10] OF INT ;
AIDE1, AIDE2
: REAL;
END_VAR

Adressage
L'adressage de ces variables s'effectue toujours dans la section des instructions du bloc de
code dont la section de dclaration contient la dclaration de la variable (adressage interne),
voir la rubrique "Affectation de valeur".

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

8-11

Dclaration de variables locales et de paramtres

8.8.4

Paramtres de bloc
Les paramtres de bloc servent rserver de la place et ne sont dtermins que lors de
l'utilisation concrte du bloc (appel). Ceux qui sont dclars dans le bloc sont appels
paramtres formels, les valeurs qui leur sont affectes l'appel du bloc sont appeles
paramtres effectifs. Ainsi, les paramtres constituent un mcanisme d'change
d'informations entre les blocs.

Types de paramtres de bloc


Les paramtres d'entre formels prennent les valeurs d'entre en cours
(flux de donnes de l'extrieur vers l'intrieur).
Les paramtres de sortie formels servent transfrer des valeurs de sortie
(flux de donnes de l'intrieur vers l'extrieur).
Les paramtres d'entre/sortie formels ont la fois la fonction d'un paramtre d'entre et
celle d'un paramtre de sortie.

Syntaxe
Les paramtres formels doivent tre dclars dans la section de dclaration d'un bloc
fonctionnel ou d'une fonction. Suivant le type de paramtre, ils sont dclars dans l'une des
trois sections de dclaration des paramtres. Vous dterminez leur nom et leur type de
donnes dans la dclaration des variables. Seuls les paramtres d'entre et les paramtres
de sortie d'un FB peuvent tre initialiss.
Pour la dclaration des paramtres formels, vous pouvez non seulement utiliser des types
de donnes simples, complexes et utilisateur, mais galement des types de donnes pour
paramtre.
Section des paramtres
VAR_INPUT
VAR_OUTPUT

Dclaration
de la variable

END_VAR

VAR_IN_OUT
L'initialisation est uniquement possible pour VAR_INPUT et VAR_OUTPUT

8-12

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dclaration de variables locales et de paramtres

Exemple
VAR_INPUT
// Paramtre d'entre
MON_DB
: BLOCK_DB ;
REGULATEUR
: DWORD ;
HEURE_DU_JOUR : TIME_OF_DAY ;
END_VAR
VAR_OUTPUT
// Paramtre de sortie
CONSIGNES: ARRAY [1..10] of INT ;
END_VAR
VAR_IN_OUT
// Paramtre d'entre/sortie
REGLAGE : INT ;
END_VAR

Adressage
L'adressage des paramtres de bloc s'effectue dans la section des instructions d'un bloc de
code.
Adressage interne : c'est--dire dans la section des instructions du bloc dont la section
de dclaration contient la dclaration des paramtres. Ceci est expliqu la rubrique
"Affectations de valeur" et la rubrique " "Expressions, oprations et oprandes".
Adressage depuis l'extrieur par DB d'instance : vous pouvez adresser les
paramtres d'un bloc fonctionnel par l'intermdiaire du DB d'instance associ.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

8-13

Dclaration de variables locales et de paramtres

8-14

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dclaration de constantes et repres de saut

9.1

Constantes
Les constantes sont des donnes possdant une valeur fixe qui ne varie pas durant
l'excution du programme.
S7-SCL connat les catgories suivantes de constantes.
Constantes binaires
Constantes numriques :
-

Constantes entires

Constantes relles

Constantes sur caractres :


-

Constantes sur caractre

Constantes sur chane

Constantes temporelles :
-

Constantes de date

Constantes de dure

Constantes d'heure du jour

Constantes de date et heure

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

9-1

Dclaration de constantes et repres de saut

9.1.1

Dclaration de mnmoniques pour les constantes


Il n'est pas ncessaire de dclarer les constantes. Vous pouvez toutefois leur attribuer des
mnmoniques dans la section de dclaration.
La dclaration des mnmoniques de constantes s'effectue avec l'instruction CONST dans la
section de dclaration de votre bloc de code. Elle est recommande pour toutes les
constantes du bloc, car elle contribue une meilleure lisibilit et facilite le traitement du bloc
lorsque vous modifiez les valeurs constantes.

Syntaxe
Section des constantes

CONST

IDENTIFICATEUR

:=

Expression
simple

END_CONST

Mnmonique de
la constante

Dans les expressions simples, seules les oprations arithmtiques de base sont autorises
(*, /, +, -, DIV, MOD).

Exemple
CONST
Nombre
:= 10 ;
HEURE1 := TIME#1D_1H_10M_22S_2MS ;
NOM
:= 'SIEMENS' ;
NOMBRE2
:= 2 * 5 + 10 * 4 ;
NOMBRE3
:= 3 + ZAHL2 ;
END_CONST

9-2

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dclaration de constantes et repres de saut

9.1.2

Types de donnes des constantes


Les types de donnes ne sont pas affects aux constantes comme dans LIST.
Une constante ne reoit son type de donnes qu'avec la combinaison arithmtique ou
logique dans laquelle elle est employe, par ex. :
Int1:=Int2 + 12345
Real1:=Real2 + 12345

//"12345" reoit le type de donnes INT


//"12345" reoit le type de donnes REAL

Le type de donnes affect une constante est celui dont la plage de valeurs suffit juste
encore prendre en charge la constante sans perte de valeur. Par exemple, la constante
"12345" n'est pas toujours du type INT comme dans LIST, mais elle fait partie de la classe
de types de donnes ANY_NUM, c'est--dire qu'elle sera INT, DINT ou REAL suivant
l'emploi.

Constantes types
La notation type des constantes vous permet d'indiquer aussi explicitement un type de
donnes pour les types numriques suivants.
Exemples :
Type de donnes

Notation type

BOOL

BOOL#1
Bool#false

bool#0
BOOL#TRUE

BYTE

BYTE#0
Byte#''

B#2#101
b#16#f

WORD

WORD#32768 word#16#f
W#2#1001_0100 WORD#8#177777

DWORD

DWORD#16#f000_0000
DW#2#1111_0000_1111_0000

INT

INT#16#3f_ff
int#-32768
Int#2#1111_0000 inT#8#77777

DINT

DINT#16#3fff_ffff dint#-65000
DInt#2#1111_0000

REAL

REAL#1
real#2e4

real#1.5
real#3.1

CHAR

CHAR#A

CHAR#49

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

dword#32768
DWord#8#37777777777

dinT#8#17777777777

9-3

Dclaration de constantes et repres de saut

9.1.3

Notation des constantes


Une notation prcise (format) sert indiquer la valeur d'une constante suivant le type et le
format de donnes choisis. Le type et la valeur de la constante rsultant directement de la
notation, il n'est pas ncessaire de les dclarer.
Exemples :
15
VALEUR 15
2#1111
VALEUR 15
16#F
VALEUR 15
hexadcimale

en tant que constante entire en reprsentation dcimale


en tant que constante entire en reprsentation binaire
en tant que constante entire en reprsentation

Tableau des notations possibles


Type de donnes

Description

Exemples en S7-SCL

BOOL

1 bit

FALSE
TRUE
BOOL#0
BOOL#1
BOOL#FALSE
BOOL#TRUE

BYTE

Nombre hexadcimal de 8 bits

B#16#00
B#16#FF
BYTE#0
B#2#101
Byte#''
b#16#f

CHAR

8 bits
(1 caractre ASCII)

'A'
CHAR#49

STRING

254 caractres ASCII maximum

'adresse'

WORD

Nombre hexadcimal de 16 bits

W#16#0000
W#16#FFFF
word#16#f

Nombre octal de 16 bits

WORD#8#177777
8#177777

Nombre binaire de 16 bits

W#2#1001_0100
WORD#32768

Nombre hexadcimal de 32 bits

DW#16#0000_0000
DW#16#FFFF_FFFF

Nombre octal de 32 bits

Dword#8#37777777777
8#37777777777

Nombre binaire de 32 bits

DW#2#1111_0000_1111_000
0
dword#32768

DWORD

9-4

Exemples en LIST, si
diffrents

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dclaration de constantes et repres de saut

Type de donnes

Description

Exemples en S7-SCL

INT

16 bits
Nombre virgule fixe

-32768
+32767
INT#16#3f_ff
int#-32768
Int#2#1111_0000
inT#8#77777

DINT

32 bits
Nombre virgule fixe

-2147483648
+2147483647
DINT#16#3fff_ffff
dint#-65000
Dint#2#1111_0000
dinT#8#17777777777

REAL

Nombre virgule flottante de 32


bits

Reprsentation dcimale
123.4567
REAL#1
real#1.5

Exemples en LIST, si
diffrents

L#-2147483648
L#+2147483647

Reprsentation exponentielle
real#2e4
+1.234567E+02
S5TIME

16 bits
Dure en format SIMATIC

T#0ms
TIME#2h46m30s
T#0.0s
TIME#24.855134d

TIME

32 bits
Dure en format CEI

-T#24d20h31m23s647ms
TIME#24d20h31m23s647ms
T#0.0s
TIME#24.855134d

DATE

16 bits
Date

D#1990-01-01
DATE#2168-12-31

TIME_OF_DAY

32 bits
Heure du jour

TOD#00:00:00
TIME_OF_DAY#23:59:59.999

DATE_AND_TIME Date et heure

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

S5T#0ms
S5TIME#2h46m30s

DT#1995-01-01-12:12:12.2

9-5

Dclaration de constantes et repres de saut

9.1.3.1 Constante binaire


Les constantes binaires contiennent des valeurs de 1 bit, 8 bits, 16 bits ou 32 bits de
longueur. Vous pouvez les affecter dans le programme S7-SCL des variables de types de
donnes BOOL, BYTE, WORD ou DWORD (selon la longueur).

Syntaxe
CONSTANTE BINAIRE
BOOL#
BYTE#

WORD#

SUITE DE CHIFFRES DECIMAUX


SUITE DE CHIFFRES OCTAUX
SUITE DE CHIFFRES HEXA
SUITE DE CHIFFRES BINAIRES
CARACTERES (1)

DWORD#
(1) pour le type BYTE seulement

Suite de chiffres dcimaux


Dans une constante, une suite de chiffres dcimaux peut tre spare par des caractres de
soulignement pour amliorer la lisibilit des grands nombres ; ceci est facultatif. Voici des
notations correctes de suites de chiffres dcimaux dans les constantes :
DW#2#1111_0000_1111_0000
dword#32768

Valeurs binaires, octales et hexadcimales


Pour indiquer une constante entire dans un autre systme de numration que le systme
dcimal, il faut placer devant le prfixe 2#, 8# ou 16#, suivi du nombre dans la
reprsentation du systme respectif. La figure suivante prend pour exemple une suite de
chiffres formant un nombre octal :
Suite de chiffres octaux
8#

Chiffre octal

_
Caractre de soulignement

Exemple
Les exemples suivants montrent des notations correctes de constantes binaires :
Bool#false
8#177777
DW#16#0000_0000

9-6

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dclaration de constantes et repres de saut

9.1.3.2 Constante entire


Les constantes entires contiennent des valeurs entires de 16 bits ou 32 bits de longueur.
Vous pouvez les affecter dans le programme S7-SCL des variables du type de donnes
INT ou DINT (suivant la longueur).

Syntaxe

CONSTANTE ENTIERE
INT#

DINT#

SUITE DE CHIFFRES DECIMAUX


SUITE DE CHIFFRES OCTAUX
SUITE DE CHIFFRES HEXA
SUITE DE CHIFFRES BINAIRES
CARACTERES (1)

(1) pour le type INT seulement

Suite de chiffres dcimaux


Dans une constante, une suite de chiffres dcimaux peut tre spare par des caractres de
soulignement pour amliorer la lisibilit des grands nombres ; ceci est facultatif. Voici des
notations correctes de suites de chiffres dcimaux dans les constantes :
1000
1_120_200
666_999_400_311

Valeurs binaires, octales et hexadcimales


Vous pouvez indiquer une constante entire dans un autre systme de numration que le
systme dcimal, en plaant devant le prfixe 2#, 8# ou 16#, suivi du nombre dans la
reprsentation du systme respectif.

Exemple
Les exemples suivants montrent des notations correctes de constantes entires :
Valeur_2:=2#0101;
Valeur_3:=8#17;
Valeur_4:=16#F;
Valeur_5:=INT#16#3f_ff

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

//
//
//
//

Nombre
Nombre
Nombre
Nombre

binaire, valeur dcimale 5


octal, valeur dcimale 14
hexadcimal, valeur dcimale 15
hexadcimal, notation type

9-7

Dclaration de constantes et repres de saut

9.1.3.3 Constante relle


Les constantes relles sont des valeurs comportant des positions aprs la virgule. Vous
pouvez les affecter des variables de type de donnes REAL.

Syntaxe
CONSTANTE REELLE

SUITE DE CHIFFRE
DECIMAUX

SUITE DE CHIFFRE
DECIMAUX

REAL#
-

SUITE DE CHIFFRE
DECIMAUX

SUITE DE CHIFFRE
DECIMAUX

Exposant

L'indication du signe est facultative. En l'absence de signe, le nombre est interprt comme
nombre positif.
Dans une constante, une suite de chiffres dcimaux peut tre spare par des caractres de
soulignement pour amliorer la lisibilit des grands nombres ; ceci est facultatif. Voici des
notations correctes de suites de chiffres dcimaux dans les constantes :
1000
1_120_200
666_999_400_311

Exposants
En notation exponentielle, vous pouvez avoir recours un exposant pour indiquer des
nombres virgule flottante. L'exposant est indiqu par la lettre "E" ou "e", suivie du nombre
entier.
10

La grandeur 3x10 peut tre reprsente en S7-SCL par les nombres rels suivants :
3.0E+10
0.3E+11

3.0E10
0.3e11

3e+10
30.0E+9

3E10
30e9

Exemples
NOMBRE4:= -3.4 ;
NOMBRE5:= 4e2 ;
NOMBRE6:= real#1.5;

9-8

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dclaration de constantes et repres de saut

9.1.3.4 Constante sur caractre (caractre unique)


La constante sur caractre contient un caractre et un seul plac entre deux apostrophes (').
Elle ne peut pas tre employe dans des expressions.

Syntaxe
CONSTANTE SUR CARACTERE
CHAR#

'

Caractre

'

SUITE DE CHIFFRES
DECIMAUX

Exemple
Caractre_1 := 'B';
Caractre_2 := char#43;
Caractre_3 := char#'B';

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

9-9

Dclaration de constantes et repres de saut

Syntaxe du caractre
Il peut provenir du jeu tendu complet de caractres ASCII. Pour saisir un caractre de mise
en forme spcial, une apostrophe (') ou le caractre $, placez devant le caractre $.
Vous pouvez galement utiliser des caractres non imprimables du jeu de caractres ASCII
tendu. Il vous suffit pour cela d'indiquer leur reprsentation en code hexadcimal.
&DUDFWUH
&DUDFWUH
LPSULPDEOH


&DUDFWUHGDOLJQHPHQW
&DUDFWGHUHPSODFHPHQW
RX
&DUDFWGHFRPPDQGH
3RX/RX5RX7RX1
&KLIIUH
KH[DGHFLPDO

&KLIIUH
KH[DGHFLPDO

5HSUVHQWDWLRQGHVXEVWLWXWLRQHQFRGHKH[DGFLPDOH
3
/
5
7
1

6DXWGHSDJH
&KDQJHPHQWGHOLJQH
5HWRXUFKDULRW
7DEXODWLRQ
1RXYHOOHOLJQH

QRQDXWRULVH

Exemple de caractre en code hexadcimal :


CARACTERE
Espace

9-10

:= '$41' ;
:='$20';

//quivaut au caractre 'A'


//quivaut au caractre _
|

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dclaration de constantes et repres de saut

9.1.3.5 Constante sur chane


Une constante sur chane est une chane de 254 caractres au maximum. Les caractres
sont placs entre deux apostrophes ('). Les constantes sur chane ne peuvent pas tre
employes dans les expressions.

Syntaxe
CONSTANTE SUR CHAINE

'

Interruption
de la chane

Caractre

Caractre

'

Syntaxe du caractre
Vous pouvez utiliser tous les caractres de tout le jeu de caractres ASCII tendu. Pour
saisir un caractre de mise en forme spcial, une apostrophe (') ou le caractre $, placez
devant le caractre $.
Vous pouvez aussi utiliser les caractres non imprimables du jeu de caractres ASCII
tendu complet. Il vous suffit pour cela d'indiquer leur reprsentation en code hexadcimal.
&DUDFWUH
&DUDFWUH
LPSULPDEOH


&DUDFWUHGDOLJQHPHQW
&DUDFWGHUHPSODFHPHQW
RX
&DUDFWGHFRPPDQGH
3RX/RX5RX7RX1
&KLIIUH
KH[DGHFLPDO

&KLIIUH
KH[DGHFLPDO

5HSUVHQWDWLRQGHVXEVWLWXWLRQHQFRGHKH[DGFLPDOH
3
/
5
7
1

6DXWGHSDJH
&KDQJHPHQWGHOLJQH
5HWRXUFKDULRW
7DEXODWLRQ
1RXYHOOHOLJQH

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

QRQDXWRULVH

9-11

Dclaration de constantes et repres de saut

Interruption d'une chane de caractres


Vous pouvez interrompre plusieurs fois puis continuer une constante sur chane.
Une chane de caractres peut figurer sur une seule ligne d'un bloc S7-SCL ou tre rpartie
sur plusieurs lignes avec des codes spciaux. Le code $> sert interrompre une chane et le
code $< sert la continuer la ligne suivante. L'espace entre le code d'interruption et le
code de continuation peut s'tendre sur plusieurs lignes ; il ne doit pas contenir autre chose
que des caractres d'espacement et du commentaire.
Interruption d'une chane de caractres

Caractre de
mise en forme

Caractre d'espacement (blank)


de changement de ligne (linefeed)
de retour chariot (carriage return)
de saut de page (formfeed, page)
de tabulation horizontale (tabulator)

$>

$<
Commentaire

Exemples
// Constante sur chane:
NOM:= 'SIEMENS';
//Interruption d'une constante sur chane
MESSAGE1:= 'MOTEUR- $>
$< Commande';
// Chane en reprsentation hexadcimale:
MESSAGE1:= '$41$4E' (*suite de caractres AN*);

9-12

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dclaration de constantes et repres de saut

9.1.3.6 Constante de date


Une date est introduite par les prfixes DATE# ou D#. Pour indiquer la date, vous utilisez
des nombres entiers pour l'anne (4 positions), le mois et le jour, spars par des tirets.

Syntaxe
Indication de la date
SUITE DE CHIFFRES
DECIMAUX

SUITE DE CHIFFRES
DECIMAUX

Anne

Mois

SUITE DE CHIFFRES
DECIMAUX
Jour

Exemple
VARIABLE_TEMPS1:= DATE#1995-11-11 ;
VARIABLE_TEMPS2:= D#1995-05-05 ;

9.1.3.7 Constante de dure


Une dure est introduite par les prfixes TIME# ou T#. Il y a deux faons d'indiquer la
dure :
La reprsentation dcimale
La reprsentation par niveaux

Syntaxe
Dure
TIME#

Reprsentation dcimale

T#

Reprsentation par niveau

Reprsentation dcimale

-Chaque unit de temps (heures, minutes) ne doit tre indique qu'une seule fois
-L'ordre - jours, heures, minutes, secondes, millisecondes - doit tre respect

Passer de la reprsentation par niveaux la reprsentation dcimale n'est possible que tant
que les units horaires ne sont pas encore indiques.
Aprs les prfixes introductifs T# ou TIME#, vous devez indiquer au moins une unit horaire.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

9-13

Dclaration de constantes et repres de saut

Reprsentation dcimale
Utilisez la reprsentation dcimale si vous souhaitez indiquer sous forme de nombre dcimal
un composant horaire, comme par exemple les heures ou les minutes.
Reprsentation dcimale
SUITE DE CHIFFRES
DECIMAUX

SUITE DE CHIFFRES
DECIMAUX

SUITE DE CHIFFRES
DECIMAUX

Jours

SUITE DE CHIFFRES
DECIMAUX

Heures

SUITE DE CHIFFRES
DECIMAUX

SUITE DE CHIFFRES
DECIMAUX

SUITE DE CHIFFRES
DECIMAUX

Secondes

SUITE DE CHIFFRES
DECIMAUX

SUITE DE CHIFFRES
DECIMAUX

MS

Millisecondes

SUITE DE CHIFFRES
DECIMAUX

Minutes

Pour passer la reprsentation dcimale, il faut que les units temporelles


n'aient pas encore t dfinies

9-14

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dclaration de constantes et repres de saut

Reprsentation par niveaux


La reprsentation par niveaux est une suite de composants horaires individuels. Vous
indiquez d'abord les jours, puis les heures, etc., spars par des caractres de
soulignement, l'omission de composants tant permise. Vous devez cependant en indiquer
une au moins.
Reprsentation par niveaux

SUITE DE CHIFFRES
DECIMAUX

SUITE DE CHIFFRES
DECIMAUX

SUITE DE CHIFFRES
DECIMAUX

Secondes

Minutes

SUITE DE CHIFFRES
DECIMAUX

Heures

Jours

SUITE DE CHIFFRES
DECIMAUX

MS

Millisecondes

Exemple
// Reprsentation dcimale
Intervalle1:= TIME#10.5S ;
// Reprsentation par niveaux
Intervalle2:= T#3D_2S_3MS ;
// Reprsentation par niveaux et dcimale
Intervalle3 := T#2D_2.3s ;

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

9-15

Dclaration de constantes et repres de saut

9.1.3.8 Constante d'heure du jour


L'heure du jour est introduite par les prfixes TIME_OF_DAY# ou TOD#.

Syntaxe
Heure du jour
TIME_OF_DAY#
Indication de l'heure du jour
TOD#

Pour indiquer l'heure du jour, vous entrez les heures, minutes et secondes spares par
deux-points. L'indication des millisecondes est facultative. Elle est spare des autres par un
point.

Indication de l'heure du jour


Indication de l'heure du jour
SUITE DE CHIFFRES
DECIMAUX

Indication des heures

SUITE DE CHIFFRES
DECIMAUX
Indication des secondes

SUITE DE CHIFFRES
DECIMAUX

Indication des minutes

SUITE DE CHIFFRES
DECIMAUX
Indication des millisecondes

Exemple
HEURE1:= TIME_OF_DAY#12:12:12.2 ;
HEURE2:= TOD#11:11:11 ;

9-16

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Dclaration de constantes et repres de saut

9.1.3.9 Constante de date et d'heure


L'indication de la date et de l'heure est introduite par les prfixes DATE_AND_TIME# ou
DT#. Il s'agit d'une constante compose de l'indication de la date et de celle de l'heure du
jour.

Syntaxe
Date et heure
DATE_AND_TIME#
Indication de la date

SUITE DE CHIFFRES
DECIMAUX

Indication de l'heure du jour

DT#

Indication de la date
Indication de la date
SUITE DE CHIFFRES
DECIMAUX

Anne

SUITE DE CHIFFRES
DECIMAUX
Jour

Mois

Indication de l'heure du jour


Indication de l'heure du jour
SUITE DE CHIFFRES
DECIMAUX

Indication des heures

SUITE DE CHIFFRES
DECIMAUX
Indication des secondes

SUITE DE CHIFFRES
DECIMAUX

Indication des minutes

SUITE DE CHIFFRES
DECIMAUX
Indication des millisecondes

Exemple
HEURE1:= DATE_AND_TIME#1995-01-01-12:12:12.2 ;
HEURE2:= DT#1995-02-02-11:11:11;

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

9-17

Dclaration de constantes et repres de saut

9.2

Dclaration de repres de saut


Les repres de saut (labels) servent dfinir la destination d'une instruction GOTO. Vous les
dclarez dans la section de dclaration d'un bloc de code en indiquant leur mnmonique.

Syntaxe
Section de dclaration des repres de saut

LABEL

IDENTIFICATEUR

END_LABEL

Repre de saut
,

Exemple
LABEL
REPERE1, REPERE2, REPERE3;
END_LABEL

9-18

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

10

Donnes globales

10.1

Prsentation des donnes globales


Dans S7-SCL, vous avez la possibilit d'adresser des donnes globales. Il en existe deux
sortes :
Les zones de mmoire de la CPU
Il s'agit de donnes dclares dans le systme comme par exemple les entres, les
sorties et les mmentos. Leur nombre dpend de votre CPU.
Les donnes utilisateur globales, sous forme de blocs de donnes que vous
pouvez charger
Ces zones de donnes se trouvent dans des blocs de donnes. Pour pouvoir les utiliser,
vous devez pralablement crer les blocs et y dclarer les donnes. Dans le cas de blocs
de donnes d'instance, elles rsultent de blocs fonctionnels et sont gnres
automatiquement.

Adressage des donnes globales


L'adressage des donnes globales peut tre :
Absolu : par un identificateur d'oprande et une adresse absolue.
Symbolique : par un mnmonique que vous avez pralablement dfini dans la table des
mnmoniques.
Index : par un identificateur d'oprande et un indice de tableau.
Structur : par une variable.
Mode d'adressage

Zones de mmoire de la CPU

Donnes utilisateur globales

Absolu

oui

oui

Symbolique

oui

oui

Index

oui

oui

Structur

non

oui

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

10-1

Donnes globales

10.2

Zones de mmoire de la CPU

10.2.1 Prsentation des zones de mmoire de la CPU


Les zones de mmoire d'une CPU sont dclares dans le systme. Vous n'avez donc pas
besoin de les dclarer dans votre bloc de code. Chaque CPU met votre disposition les
zones de mmoire suivantes possdant leur propre espace d'adressage :
Entres/sorties dans la mmoire image (par exemple A1.0)
Entres/sorties de priphrie (par exemple PA1.0)
Mmentos (par exemple M1.0)
Temporisations, compteurs (C1)

Syntaxe de l'adressage
Vous adressez une zone de mmoire de la CPU dans une affectation de valeur ralise
dans la section des instructions d'un bloc de code par :
Adressage simple indiqu de manire absolue ou symbolique, ou
adressage index.
Adressage simple de la mmoire
IDENTIFICATEUR
D'OPERANDE

Adresse
Adressage absolu

IDENTIFICATEUR

Adressage symbolique

Mnmonique

Adressage index de la mmoire

IDENTIFICATEUR
D'OPERANDE

Indice
[

Expression
de base

10-2

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Donnes globales

10.2.2 Adressage absolu des zones de mmoire de la CPU


L'adressage absolu d'une zone de mmoire de la CPU s'effectue, par exemple, au moyen de
l'affectation d'un identificateur absolu une variable de mme type.
ETAT_2:= EB10;
Adressage absolu
Variable de mme type

L'identificateur absolu renvoie une zone de mmoire dans la CPU que vous spcifiez en
indiquant l'identificateur d'oprande (EB dans notre exemple) suivi de l'adresse (ici 10).

Syntaxe de l'identificateur absolu


Identificateur d'oprande
Prfixe
de mmoire

Prfixe
de taille

Prfixe de mmoire
Le prfixe de mmoire vous permet de dterminer la nature des zones de mmoire
adresser.
Prfixe de mmoire
E
A

Entre

Sortie

Mmento

PE

PI

Priphrie des entres

PA

PQ

Priphrie des sorties

Abrviations allemandes

Abrviations anglaises

Selon le jeu d'abrviations slectionn, la signification des identificateurs d'oprandes


allemands ou anglais est rserve.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

10-3

Donnes globales

Prfixe de taille
En indiquant le prfixe de taille, vous spcifiez la largeur de la zone de mmoire qui doit tre
lue dans la priphrie. Vous pouvez par exemple lire un octet ou un mot. Si vous ne
souhaitez spcifier qu'un bit, l'indication du prfixe de taille est facultative.
Prfixe de taille
X

Bit

Octet

Mot

Double mot

Adresse
Pour prciser l'adresse, vous devez d'abord indiquer l'adresse d'octet absolue, puis spare
par un point, l'adresse de bit de l'octet concern. L'indication de l'adresse de bit est
facultative.
Adresse
Numro

Numro

uniquement pour une adresse binaire

Exemples
OCTET_ETAT :=EB10;
ETAT_3
:=E1.1;
VAL_MESURE :=EW20;

10-4

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Donnes globales

10.2.3 Adressage symbolique des zones de mmoire de la CPU


L'adressage symbolique vous permet d'utiliser des mnmoniques au lieu des identificateurs
absolus pour adresser les zones de mmoire de la CPU.
Vous associez les mnmoniques aux oprandes respectifs de votre programme utilisateur
dans la table de mnmoniques. La commande Outils > Table des mnmoniques vous
permet tout moment d'ouvrir la table de mnmoniques depuis S7-SCL pour y ajouter
d'autres mnmoniques.
Tous les types de donnes simples sont autoriss, si tant est que leur longueur suffit la
longueur d'adressage. Le tableau ci-aprs donne un exemple de table des mnmoniques.
Mnmonique

Oprande

Type de donnes

Commentaire

Contact_moteur_1

E 1.7

BOOL

Commutateur de
contact 1 pour le moteur
A

Entre1

EW 10

INT

Mot d'tat

Adressage
Pour raliser l'adressage, vous affectez le mnmonique dclar une variable de mme
type.

Exemple
VAL_MESURE_1 := Contact_moteur_1;
Etat_moteur1 := entree1 ;

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

10-5

Donnes globales

10.2.4 Adressage index des zones de mmoire de la CPU


Vous avez galement la possibilit d'accder aux zones de mmoire de la CPU de manire
indexe. Par rapport l'adressage absolu, l'avantage rside dans le fait que vous pouvez
adresser les zones de mmoire de manire dynamique, en utilisant des indices variables.
Ainsi, vous pouvez par exemple utiliser la variable de contrle d'une boucle FOR comme
adresse.
L'adressage index d'une zone de mmoire ressemble l'adressage absolu. La seule
diffrence rside dans l'indication de l'adresse. A la place de l'adresse, vous spcifiez un
indice qui peut tre une constante, une variable ou une expression arithmtique.
Pour l'adressage index, l'identificateur absolu est compos de l'identificateur d'oprande
(prfixe de mmoire et prfixe de taille) et d'une expression de base pour l'indexation.
Prfixe de taille
Prfixe de mmoire

E X [i,j]

Adresse
Expression de base

Identificateur d'oprande

comme indice,
indique entre crochets

Syntaxe de l'identificateur absolu

Prfixe de
mmoire

Prfixe de
taille

Identificateur d'oprande

Expression
de base

Expression
de base

Indice
Pour adressage binaire seulement

L'indexation (expression de base) doit tre conforme aux rgles suivantes :


Chaque indice doit tre une expression arithmtique du type de donnes INT.
Dans le cas d'un adressage du type de donnes BYTE, WORD ou DWORD, vous devez
utiliser un indice et un seul. Il est interprt comme adresse d'octet. La longueur
d'adressage est dtermine par le prfixe de taille.
Dans le cas d'un adressage du type de donnes BOOL, vous devez utiliser deux indices.
Le premier spcifie l'adresse d'octet, le second la position du bit dans cet octet.

Exemple
VAL_MESURE_1
REPERE

10-6

:=EW[COMPTEUR];
:=E[NOCTET, NBIT];

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Donnes globales

10.3

Blocs de donnes

10.3.1 Prsentation des blocs de donnes


Dans les blocs de donnes, vous pouvez enregistrer et traiter pour votre application toutes
les donnes valables pour l'ensemble du programme ou du projet. Tout bloc de code a
accs en criture ou en lecture aux donnes utilisateur globales.

Adressage
Il y a plusieurs faons d'adresser les donnes d'un bloc de donnes global :
Adressage absolu ou simple,
Adressage structur ,
Adressage index.
Adressage absolu d'un DB
Identificateur d'oprande

Adresse

Adressage index d'un DB

Identificateur d'oprande

Index
Expression
de base

Adressage structur d'un DB

Identificateur d'oprande

Variable
simple

Adressage symbolique d'un DB

Mnmonique d'un DB

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Variable
simple

10-7

Donnes globales

10.3.2 Adressage absolu des blocs de donnes


De mme que pour les zones de mmoire de la CPU, l'adressage absolu d'un bloc de
donnes est ralis par affectation d'une valeur une variable de mme type. Aprs la
dsignation du DB, vous indiquez le mot-cl "D" avec le prfixe de taille (par exemple X pour
bit) et l'adresse d'octet (par exemple 13.1).

ETAT_5:= DB11.DX13.1;
Adresse
Prfixe de taille
Dsignation du DB
Variable de
mme type

Syntaxe
Vous spcifiez l'adressage en indiquant la dsignation du DB, suivie du prfixe de taille et de
l'adresse.
Adressage absolu d'un DB
Identificateur d'oprande
DESIGNATION
DU DB

Prfixe
de taille

Adresse

Prfixe de taille
Le prfixe de taille indique la longueur de la zone de mmoire qui doit tre adresse dans le
bloc de donnes. Vous pouvez par exemple lire un octet ou un mot du DB. Si vous ne
souhaitez spcifier qu'un bit, l'indication du prfixe de taille est facultative.
Prfixe de taille

10-8

Bit

Octet

Mot

Double mot

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Donnes globales

Adresse
Pour prciser l'adresse, vous devez d'abord indiquer l'adresse d'octet absolue, puis spare
par un point, l'adresse de bit de l'octet concern (uniquement en cas d'adressage binaire).
Adresse

Numro

Numro

uniquement pour une adresse binaire

Exemple
Voici quelques exemples d'adressage absolu d'un bloc de donnes. Le bloc de donnes luimme est indiqu de manire absolue dans la premire partie et de manire symbolique
dans la seconde :
OCTET_ETAT :=DB101.DB10;
ETAT_3
:=DB30.D1.1;
VAL_MESURE :=DB25.DW20;
OCTET_ETAT :=Donnees_etat.DB10;
ETAT_3
:="Nouvelles_donnees".D1.1;
VAL_MESURE :=Donnees_mesure.DW20.DW20;
ETAT_1

:=WORD_TO_BLOCK_DB (INDICE).DW10;

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

10-9

Donnes globales

10.3.3 Adressage index des blocs de donnes


Vous avez galement la possibilit d'accder aux blocs de donnes de manire indexe. Par
rapport l'adressage absolu, l'avantage rside dans le fait que vous pouvez adresser des
oprandes dont l'adresse n'est connue qu' l'excution. Ainsi, vous pouvez par exemple
utiliser la variable de contrle d'une boucle FOR comme adresse.
L'adressage index d'un bloc de donnes s'effectue de manire similaire l'adressage
absolu. Seule l'indication de l'adresse est diffrente.
A la place de l'adresse, vous spcifiez un indice qui peut tre une constante, une variable ou
une expression arithmtique.
L'adressage index est compos de la dsignation du DB, de l'identificateur d'oprande
(mot-cl "D" et prfixe de taille) ainsi que d'une expression de base pour l'indexation.

Prfixe de mmoire

Prfixe de taille

Dsignation du DB.

D X [i,j]

Adresse
Expression de base comme indice,
indique entre crochets

Identificateur d'oprande

Syntaxe

Identificateur d'oprande
IDENTIFICATION
DU DB

Prfixe
de taille

Expression
de base

Expression
de base

L'indexation doit tre conforme aux rgles suivantes :


Dans le cas d'un adressage du type de donnes BYTE, WORD ou DWORD, vous devez
utiliser un indice et un seul. Il est interprt comme adresse d'octet. La longueur
d'adressage est dtermine par le prfixe de taille.
Dans le cas d'un adressage du type de donnes BOOL, vous devez utiliser deux indices.
Le premier spcifie l'adresse d'octet, le second la position du bit dans cet octet.
Chaque indice doit tre une expression arithmtique du type de donnes INT.

Exemple
ETAT_1:=
ETAT_2:=
ETAT_1:=
ETAT_2:=
ETAT_1:=

10-10

DB11.DW[COMPTEUR];
DB12.DX[NMOT, NBIT];
Base_de_donnees1.DW[COMPTEUR];
Base_de_donnees2.DX[NMOT, NBIT];
WORD_TO_BLOCK_DB(INDICE).DW[COMPTEUR];

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Donnes globales

10.3.4 Adressage structur des blocs de donnes


L'adressage structur est ralis au moyen de l'identificateur de la variable dclare dans le
bloc de donnes. Vous pouvez affecter la variable toute variable de mme type.
Pour rfrencer la variable dans le bloc de donnes, vous indiquez le nom du DB, puis
spar par un point, le nom de la variable simple.

Syntaxe

IDENTIFICATION
DU DB

Variable
simple

Ce faisant, la variable simple reprsente une variable laquelle vous avez affect un type
de donnes simple ou complexe lors de la dclaration du DB.
L'utilisation, pour introduire l'adressage d'un bloc de donnes, d'un paramtre de type
BLOCK_DB ou du rsultat de la fonction de conversion WORD_TO_BLOCk_DB ne permet
pas l'adressage structur, mais seulement l'adressage absolu ou index.

Exemple
Dans la section de dclaration du FB10 :
VAR
Rsultat :
STRUCT RES1 : INT;
RES2 : WORD;
END_STRUCT
END_VAR
Type de donnes utilisateur UDT1
TYPE UDT1
STRUCT RES1 : INT;
RES2 : WORD;
END_STRUCT
DB20 avec type de donnes utilisateur :
DB20
UDT1
BEGIN ...
DB30 sans type de donnes utilisateur :
DB30
STRUCT RES1 : INT;
RES2 : WORD;
END_STRUCT
BEGIN ...
Bloc fonctionnel
..
FB10.DB10();
MOT_RES_A
:=
MOT_RES_B
:=
MOT_RES_C
:=

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

avec les adressages :

DB10.resultat.RES2;
DB20.RES2;
DB30.RES2;

10-11

Donnes globales

10-12

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

11

Expressions, oprations et oprandes

11.1

Oprations
Une expression se compose d'oprations et d'oprandes. La plupart des oprations de
S7-SCL combinent deux oprandes et sont par suite qualifies de binaires. Les autres
oprations n'utilisant qu'un oprande sont des oprations unaires.
Une opration binaire s'crit entre les oprandes (par exemple A + B). Une opration
unaire prcde immdiatement son oprande (par exemple -B).
C'est la priorit des oprations, indique dans le tableau suivant, qui dtermine l'ordre de
calcul. Le chiffre "1" correspond la priorit la plus leve.
Classe

Opration

Reprsentation

Priorit

Opration d'affectation :
Oprations arithmtiques :

Affectation
Puissance
Oprations unaires
Plus unaire
Moins unaire
Oprations arithmtiques de
base
Multiplication
Division
Fonction modulo
Division entire
Addition
Soustraction

:=
**

11
2

+
-

3
3

*
/
MOD
DIV
+
<
>
<=
>=
=
<>
NOT

4
4
4
4
5
5
6
6
6
6
7
7
3

AND ou &
XOR
OR
()

8
9
10
1

Oprations de comparaison :

Oprations logiques :

Infriorit
Supriorit
Infriorit ou galit
Supriorit ou galit
Egalit
Diffrence
Ngation
Oprations logiques de base
Et
Ou exclusif
Ou

Caractres de parenthse :

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Parenthses

11-1

Expressions, oprations et oprandes

11.2

Oprandes
Les oprandes sont des objets avec lesquels vous pouvez former une expression. Voici les
lments autoriss pour former des oprandes :
Oprande
Constante
Variable tendue

(Expression)

NOT

Oprande

Constantes
Vous pouvez utiliser des constantes sous forme de valeur numrique, de mnmonique ou de
chane de caractres.
Constante
Valeur numrique

Chane de caractres

Mnmonique

Voici des exemples de constantes autorises :


4_711
4711
30.0
'CARACTERE'
FACTEUR

11-2

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Expressions, oprations et oprandes

Variable tendue
Variable tendue est un terme gnrique dsignant une srie de variables qui sont traites
plus en dtail au chapitre "Affectations de valeur".
Variable tendue
Variable simple
Variable absolue
pour les zones de mmoire
de la CPU
Variable dans un DB

Variable dans une


instance locale
Appel de FC

Exemples de variables correctes :


CONSIGNE
variable simple
EW10 variable absolue
E100.5
variable absolue
DB100.DW [INDICE]
variable dans le DB
MOTEUR.VITESSE
variable dans l'instance locale
SQR (20)
fonction standard
FC192 (CONSIGNE) appel de fonction

Nota
Dans un appel de fonction, le rsultat du calcul, c'est--dire la valeur de retour, remplace le
nom de la fonction dans l'expression. Les fonctions VOID qui ne possdent pas de valeur de
retour ne sont donc pas autorises comme oprandes dans des expressions.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

11-3

Expressions, oprations et oprandes

11.3

Syntaxe d'une expression

Syntaxe
Expression
Oprande
Oprations logiques
de base

Expression

Expression

Oprations de
comparaison

Oprations
arithmtiques de base
Puissance

Exposants

**

Expression

Expression
Plus unaire

Moins unaire

NOT

Ngation
(

Expression

Rsultat d'une expression


Le rsultat d'une expression peut tre :
Affect une variable
Utilis comme condition d'une instruction de contrle,
Utilis comme paramtre pour l'appel d'une fonction ou d'un bloc fonctionnel.

Ordre de calcul
L'ordre de calcul de l'expression est dtermin par :
Lapriorit des oprations prsentes ;
Leur position de gauche droite ;
Les parenthses utilises dans le cas d'oprations de mme priorit.

11-4

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Expressions, oprations et oprandes

Rgles
Les rgles suivantes s'appliquent la rsolution des expressions :
Un oprande plac entre deux oprations de priorits diffrentes est toujours li celle
qui a la plus haute priorit.
Les oprations sont traites dans l'ordre hirarchique.
Les oprations de mme priorit sont traites de gauche droite.
Faire prcder un identificateur d'un signe moins quivaut le multiplier par -1.
Les oprations arithmtiques ne peuvent pas venir immdiatement la suite l'une de
l'autre. Ainsi l'expression a * - b n'est pas autorise, par contre a*(-b) l'est.
L'utilisation de parenthses peut annuler la priorit entre des oprations, car les
parenthses possdent la priorit la plus leve.
Les expressions entre parenthses sont considres comme des oprandes uniques et
sont toujours traites en premier.
Le nombre de parenthses d'ouverture doit tre quivalent celui des parenthses de
fermeture.
Les oprations arithmtiques ne peuvent s'appliquer des caractres ou des donnes
logiques. Ainsi des expressions telles 'A' + 'B' et (n<=0) + (m>0) sont incorrectes.

Exemples d'expressions
EB10
A1 AND (A2)
(A3) < (A4)
3+3*4/2

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

//
//
//
//

oprande
expression logique
expression de comparaison
expression arithmtique

11-5

Expressions, oprations et oprandes

11.4

Expression simple
Dans S7-SCL, on entend par expression simple une expression arithmtique simple. Vous
pouvez multiplier ou diviser des valeurs constantes deux par deux, puis combiner ces
couples par addition ou soustraction.

Syntaxe d'une expression simple :

+
Expression
simple

Multiplication
simple
-

Syntaxe d'une multiplication simple :

Multiplication
simple

DIV
MOD

Constante
(

Expression
simple

Exemple :
EXPRESSION_SIMPLE= A * B + D / C - 3 * VALEUR1;

11-6

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Expressions, oprations et oprandes

11.5

Expressions arithmtiques
Il s'agit d'expressions formes d'oprations arithmtiques. Elles permettent de traiter des
types de donnes numriques.
Le tableau ci-aprs regroupe les oprations possibles et indique quel type il faut associer
le rsultat, en fonction des oprandes utiliss. Nous employons les abrviations suivantes :
ANY_INT

pour les types de donnes

INT, DINT

ANY_NUM

pour les types de donnes

ANY_INT et REAL

Opration

Identificateur

Puissance
Plus unaire
Moins unaire

**
+
-

1er oprande
ANY_NUM

2nd oprande
ANY_NUM

Rsultat

Priorit

REAL

ANY_NUM

ANY_NUM

TIME

TIME

ANY_NUM

ANY_NUM

TIME

TIME

ANY_NUM

Multiplication

ANY_NUM

ANY_NUM

TIME

ANY_INT

TIME

Division

ANY_NUM

ANY_NUM

ANY_NUM

TIME

ANY_INT

TIME

ANY_INT

ANY_INT

ANY_INT

TIME

ANY_INT

TIME

Division entire

DIV

Division modulo

MOD

ANY_INT

ANY_INT

ANY_INT

Addition

ANY_NUM

ANY_NUM

ANY_NUM

TIME

TIME

TIME

TOD

TIME

TOD

DT

TIME

DT

ANY_NUM

ANY_NUM

ANY_NUM

TIME

TIME

TIME

TOD

TIME

TOD

Soustraction

DATE

DATE

TIME

TOD

TOD

TIME

DT

TIME

DT

DT

DT

TIME

Nota
Le type de donnes du rsultat d'une division (/) est dtermin par le type de donnes de
l'oprande de poids le plus lev.
Si p. ex. deux oprandes du type de donnes INT sont diviss, le rsultat est galement du
type de donnes INT (c'est--dire 10/3=3 correspond 10.0/3=3.33).

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

11-7

Expressions, oprations et oprandes

Rgles
L'ordre de traitement des oprations dans une expression arithmtique est fonction de leur
priorit.
Pour une meilleure lisibilit, il est recommand d'indiquer les nombres ngatifs entre
parenthses, mme lorsque cela n'est pas indispensable.
Pour les divisions avec deux oprandes entiers de type INT, les oprations "DIV" et "/"
fournissent le mme rsultat (voir l'exemple ci-aprs).
Pour les oprations de division "/", "MOD" et "DIV", le second oprande doit tre diffrent
de zro.
Lorsque l'un des oprandes est du type INT (entier) et le second du type REAL (nombre
virgule flottante), le rsultat est toujours du type REAL.
Pour la soustraction de donns du type DATE_AND_TIME et TIME, l'oprande avec le
type de donnes TIME doit toujours se trouver droite de l'oprateur "-".

Exemples
// Le rsultat (11) de l'expression arithmtique
// est affect la variable "VALEUR"
VALEUR1 := 3 + 3 * 4 / 2 - (7+3) / (-5) ;
// La VALEUR de l'expression suivante est 1
VALEUR2 := 9 MOD 2 ;

11-8

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Expressions, oprations et oprandes

11.6

Expressions logiques
Il s'agit d'une expression forme d'oprations logiques.

Oprations logiques de base


Vous pouvez combiner les oprations AND, &, XOR et OR avec des oprandes logiques (de
type BOOL) ou des variables du type de donnes BYTE, WORD ou DWORD pour former
des expressions logiques. L'opration NOT permet de former la ngation d'un oprande
logique.
NOT n'est pas un oprateur logique de base !
L'oprateur agit comme un signe.

Oprateurs logiques de base

AND

&

XOR

OR

Oprations logiques
Le rsultat de l'expression est soit TRUE ou FALSE lorsque vous combinez des oprandes
boolens, soit un profil binaire aprs combinaison binaire des deux oprandes.
Le tableau ci-aprs indique les expressions logiques disponibles ainsi que le type de
donnes du rsultat et des oprandes. Nous employons l'abrviation suivante :
ANY_BIT

pour les types de donnes

BOOL, BYTE, WORD, DWORD

Opration

Identificateur

1er oprande

2nd oprande

Rsultat

Priorit

Ngation

NOT

ANY_BIT

ANY_BIT

Intersection

AND

ANY_BIT

ANY_BIT

ANY_BIT

OU exclusif

XOR

ANY_BIT

ANY_BIT

ANY_BIT

OU inclusif

OR

ANY_BIT

ANY_BIT

ANY_BIT

10

Rsultat
Le rsultat d'une expression logique sera :
soit 1 (true) ou 0 (false) dans le cas d'une combinaison d'oprandes boolens,
soit un profil binaire aprs la combinaison binaire des deux oprandes.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

11-9

Expressions, oprations et oprandes

Exemples
// Inversion du rsultat de l'expression de comparaison
IF NOT (COMPTEUR > 5) THEN . . . ;
// Inversion du rsultat de la premire expression de comparaison et
// intersection avec le rsultat de la seconde expression
A := NOT (COMPTEUR1 = 4) AND (COMPTEUR2 = 10) ;
// Runion de deux expressions de comparaison
WHILE (A >= 9) OR (INTERROGATION <> "n") DO.... ;
// Masquage d'un octet d'entre (combinaison binaire)
Rsultat := EB10 AND 2#11110000 ;

11-10

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Expressions, oprations et oprandes

11.7

Expressions de comparaison
Les oprations de comparaison comparent les valeurs de deux oprandes et fournissent une
valeur boolenne. Si la comparaison s'avre juste, le rsultat est TRUE, dans le cas
contraire il est FALSE.

Syntaxe
Opration de comparaison

<

>

<=

>=

<>

Rgles
Le tableau suivant indique les types de donnes comparables ainsi que les rgles
appliquer pour la comparaison :
Type de
donnes

<>

>0

<0

>

<

Rgles

INT

Au sein de la classe des types de donnes


numriques, tous les oprateurs de
comparaison sont autoriss.
L'oprateur avec le type le plus fort
dtermine le type de l'opration.

DINT

REAL

BOOL

Au sein de la classe des types de donnes


binaires, seul EGAL et DIFFERENT sont
autoriss comme oprateurs de
comparaison.
L'oprateur avec le type le plus fort
dtermine le type de l'opration.

BYTE

WORD

DWORD

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

11-11

Expressions, oprations et oprandes

Type de
donnes

<>

>0

<0

>

<

Rgles

CHAR

Dans le cas des caractres et des chanes


de caractres, la longueur des variables
ainsi que la valeur numrique de chaque
caractre ASCII sont pris en compte pour la
comparaison.
Dans le cas de STRING, la comparaison est
ralise en interne par les fonctions
EQ_STRNG, GE_STRNG, LE_STRNG,
GT_STRNG et LT_STRNG de la
bibliothque CEI.
Les oprandes suivants ne sont pas
autoriss pour ces fonctions :

STRING

DATE

TIME

DT

paramtres d'une FC

paramtre IN_OUT d'un FB du type


STRUCT ou ARRAY.

Dans le cas de DT, la comparaison est


ralise en interne par les fonctions

EQ_DT, GE_ DT, LE_ DT, GT_STRNG


et LT_ DT de la bibliothque CEI.
Les oprandes suivants ne sont pas
autoriss pour ces fonctions :

TOD

S5-TIME

paramtres d'une FC

paramtre IN_OUT d'un FB du type


STRUCT ou ARRAY.

9
Les variables S5-TIME ne sont pas
autorises comme oprandes de
comparaison. Une conversion explicite de
S5TIME en TIME au moyen de fonctions
CEI s'avre ncessaire.

Combinaison de comparaisons
Vous pouvez combiner des expressions de comparaison selon la logique boolenne. Vous
pouvez ainsi former des interrogations telles que "si a < b et b < c alors ...".
Les diffrentes oprations sont excutes dans l'ordre de priorit. Vous pouvez modifier la
priorit l'aide de parenthses.

11-12

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Expressions, oprations et oprandes

Exemples
// Comparaison 3 INFERIEUR OU EGAL A 4. Le rsultat
// est "TRUE"
A := 3 <= 4
// Comparaison 7 DIFFERENT DE 7. Le rsultat
// est "FALSE"
7 <> 7
// Rsolution d'une expression de comparaison dans
// un aiguillage IF
IF COMPTEUR < 5 THEN ....
// Combinaison de deux expressions de comparaison
Valeur_A > 20 AND Valeur_B < 20
// Combinaison de deux expressions de comparaison avec
// des parenthses
A<>(B AND C)

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

11-13

Expressions, oprations et oprandes

11-14

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

12

Instructions

12.1

Affectations de valeur
Une affectation de valeur remplace la valeur momentane d'une variable par une nouvelle
valeur, indique sous forme d'expression. Cette expression peut aussi contenir des
identificateurs de fonctions qui s'en trouvent actives et fournissent des valeurs
correspondantes (valeurs de retour).
Conformment la figure ci-dessous, l'expression figurant dans la partie droite de
l'affectation de valeur est value et le rsultat est mmoris dans la variable dont le nom
figure gauche du signe d'affectation. Les variables autorises sont indiques dans la figure
suivante.

Syntaxe de l'affectation de valeur :


Affectation de valeur

Variable simple

:=

Expression

Variable absolue
Dans zones de mmoire CPU
Variable dans DB

Variable instance locale

Le type d'une expression d'affectation est celui de l'oprande de gauche. La variable simple
peut tre d'un type de donnes simple ou complexe.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

12-1

Instructions

12.1.1

Affecter une valeur une variable de type de donnes simple


Toute expression et toute variable de type de donnes simple peuvent tre affectes une
autre variable de mme type.
Identificateur := expression ;
Identificateur := variable ;

Exemple
FUNCTION_BLOCK FB12
VAR
COMMUTATEUR_1
: INT ;
COMMUTATEUR_2
: INT ;
CONSIGNE_1
: REAL ;
CONSIGNE_2
: REAL ;
INTERROG_1
: BOOL ;
DUREE_1
: S5TIME ;
DUREE_2
: TIME ;
DATE_1
: DATE ;
HEURE_DU_JOUR_1
: TIME_OF_DAY ;
END_VAR
BEGIN
// Affectation d'une constante une variable
COMMUTATEUR_1
:= -17 ;
CONSIGNE_1
:= 100.1 ;
INTERROG_1
:= TRUE ;
DUREE_1
:= T#1H_20M_10S_30MS ;
DUREE_2
:= T#2D_1H_20M_10S_30MS ;
DATE_1
:= D#1996-01-10 ;
// Affectation d'une variable une autre variable
CONSIGNE_1
:= CONSIGNE_2 ;
COMMUTATEUR_2
:= COMMUTATEUR_1 ;
// Affectation d'une expression une variable
COMMUTATEUR_2
:= COMMUTATEUR_1 * 3 ;
END_FUNCTION_BLOCK

12-2

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Instructions

12.1.2 Affecter une valeur des variables de type STRUCT et UDT


Les variables de type STRUCT et UDT sont des variables complexes qui reprsentent soit
une structure complte, soit un composant de cette structure.
Voici des indications correctes de variables complexes :
Image
Image.element
Image.tableau
Image.tableau[2,5]

//Identificateur d'une structure


//Identificateur d'un composant de structure
//Identificateur d'un tableau simple
//au sein d'une structure
//Identificateur d'un composant de tableau
//au sein d'une structure

Affectation d'une structure complte


Une structure complte ne peut tre affecte une autre structure que si les types de
donnes et les noms des composants sont identiques. Voici une affectation correcte :
nomstruct_1 := nomstruct_2;

Affectation de composants de structure


Vous pouvez affecter tout composant d'une structure une variable ou une expression de
type compatible ou encore un autre composant de structure.
Pour spcifier un composant de structure, vous indiquez l'identificateur de la structure suivi
d'un point et de l'identificateur du composant. Voici des affectations correctes :
nomstruct_1.element1
nomstruct_1.element1
nomstruct_1.element1
nomstruct_1.nomtableau1
nomstruct_1.nomtableau[10]

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

:=
:=
:=
:=
:=

valeur ;
20.0 ;
nomstruct_2.element1 ;
nomstruct_2.nomtableau2 ;
100 ;

12-3

Instructions

Exemple
FUNCTION_BLOCK FB3
VAR
VAR_AUX : REAL ;
VALEUR_MESURE : STRUCT

//Structure cible
TENSION : REAL ;
RESISTANCE : REAL ;
TABLEAU_SIMPLE : ARRAY

[1..2, 1..2] OF INT ;


END_STRUCT ;
VALEUR_EFFECTIVE : STRUCT //Structure source
TENSION : REAL ;
RESISTANCE : REAL ;
TABLEAU_SIMPLE : ARRAY
[1..2, 1..2] OF INT ;
END_STRUCT ;
END_VAR
BEGIN
//Affectation d'une structure complte une autre structure
//complte
VALEUR_MESURE := VALEUR_EFFECTIVE ;
//Affectation d'un composant de structure un autre composant de
//structure
VALEUR_MESURE.TENSION := VALEUR_EFFECTIVE.TENSION ;
//Affectation d'un composant de structure une variable de type
//identique
VAR_AUX := VALEUR_EFFECTIVE.RESISTANCE ;
//Affectation d'une constante un composant de structure
VALEUR_MESURE.RESISTANCE := 4.5;
//Affectation d'une constante un lment de tableau simple
VALEUR_MESURE.TABLEAU_SIMPLE[1,2] := 4;
END_FUNCTION_BLOCK

12-4

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Instructions

12.1.3 Affecter une valeur une variable de type ARRAY


Un tableau se compose de 1 6 dimensions au maximum et contient des lments qui sont
tous du mme type. Deux possibilits s'offrent vous pour affecter un tableau une
variable. Vous pouvez rfrencer des tableaux complets ou des tableaux partiels.

Affectation d'un tableau complet


Pour que vous puissiez affecter un tableau complet un autre tableau, il faut que les types
de donnes des composants et les limites du tableau (plus petit et plus grand indice) soient
identiques. Si tel est le cas, indiquez l'identificateur du tableau la suite du signe
d'affectation. Voici une affectation correcte :
nomtableau_1:=nomtableau_2;

Nota
Vous ne devez pas affecter de constantes des tableaux complets.

Affectation d'un composant de tableau


Pour adresser un lment particulier du tableau, vous devez indiquer le nom du tableau suivi
des valeurs appropries des indices entre crochets. A chaque dimension correspond un
indice. Ils sont spars par des virgules et placs entre crochets. Un indice doit tre une
expression arithmtique de type INT.
Pour affecter une valeur un tableau partiel, supprimez des indices entre les crochets qui
suivent le nom du tableau, en commenant par la droite. Vous adressez ainsi un tableau
partiel dont le nombre de dimensions correspond au nombre d'indices omis. Voici des
affectations correctes :
nomtableau_1[ i ] := nomtableau_2[ j ] ;
nomtableau_1[ i ] := expression ;
identificateur_1 := nomtableau_1[ i ] ;

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

12-5

Instructions

Exemple
FUNCTION_BLOCK FB3
VAR
CONSIGNES
: ARRAY [0..127] OF INT ;
VALEURS_EFFECTIVES : ARRAY [0..127] OF INT ;
//Dclaration d'une matrice (=tableau bidimensionnel)
//comportant 3 lignes et 4 colonnes
REGULATEUR : ARRAY [1..3, 1..4] OF INT ;
//Dclaration d'un vecteur (=tableau unidimensionnel)
// 4 composants
REGULATEUR_1 : ARRAY [1..4] OF INT ;
END_VAR
BEGIN
//Affectation d'un tableau complet un autre tableau
CONSIGNES := VALEURS_EFFECTIVES ;
//Affectation d'un vecteur la deuxime ligne
//du tableau REGULATEUR
REGULATEUR[2] := REGULATEUR_1 ;
//Affectation d'un composant de tableau un composant
//du tableau REGULATEUR
REGULATEUR[1,4] := REGULATEUR_1 [4] ;
END_FUNCTION_BLOCK

12-6

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Instructions

12.1.4 Affecter une valeur une variable de type STRING


Une variable de type STRING contient une chane de 254 caractres au maximum. Vous
pouvez lui affecter une autre variable de mme type. Voici des affectations correctes :
variable_string_1 := constante_chaine;
variable_string_1 := variable_string_2 ;

Exemple
FUNCTION_BLOCK FB3
VAR
AFFICHAGE_1 : STRING[50] ;
STRUCTURE1
: STRUCT
AFFICHAGE_2
: STRING[100] ;
AFFICHAGE_3
: STRING[50] ;
END_STRUCT ;
END_VAR
BEGIN
// Affectation d'une constante une variable de type STRING
AFFICHAGE_1 := 'Erreur dans le module 1' ;
// Affectation d'un composant de structure une variable
// de type STRING.
AFFICHAGE_1 := STRUCTURE1.AFFICHAGE_3 ;
// Affectation d'une variable STRING une autre variable
// de type STRING
If AFFICHAGE_1 <> STRUCTURE1.AFFICHAGE_3 THEN
AFFICHAGE_1 := STRUCTURE1.AFFICHAGE_3 ;
END_IF;
END_FUNCTION_BLOCK

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

12-7

Instructions

12.1.5 Affecter une valeur une variable de type DATE_AND_TIME


Le type de donnes DATE_AND_TIME dfinit une zone de 64 bits (8 octets) pour indiquer la
date et l'heure. A toute variable de type DATE_AND_TIME, vous pouvez affecter une autre
variable de mme type ou une constante. Voici des affectations correctes :
variable_dt_1 := constante_date_heure;
variable_dt_1 := variable_dt_2 ;

Exemple
FUNCTION_BLOCK FB3
VAR
DUREE_1
: DATE_AND_TIME ;
STRUCTURE1
:
STRUCT
DUREE_2 : DATE_AND_TIME ;
DUREE_3 : DATE_AND_TIME ;
END_STRUCT ;
END_VAR
BEGIN
// Affectation d'une constante une variable de type DATE_AND_TIME
DUREE_1 := DATE_AND_TIME#1995-01-01-12:12:12.2 ;
STRUCTURE1.DUREE_3 := DT#1995-02-02-11:11:11 ;
// Affectation d'un composant de structure une variable
// de type DATE_AND_TIME
DUREE_1 := STRUCTURE1.DUREE_2 ;
// Affectation d'une variable DATE_AND_TIME une
// autre variable DATE_AND_TIME
If DUREE_1 < STRUCTURE1.DUREE_3 THEN
DUREE_1 := STRUCTURE1.DUREE_3 ;
END_IF ;
END_FUNCTION_BLOCK

12-8

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Instructions

12.1.6

Affecter une valeur une variable absolue pour zones de mmoire


Une variable absolue dsigne les zones de mmoire d'une CPU valables globalement. Trois
possibilits s'offrent vous pour adresser ces zones de mmoire :
Adressage absolu
Adressage index
Adressage symbolique

Syntaxe de la variable absolue

Variable absolue
Identificateur d'oprande
Prfixe
de mmoire

Prfixe
de taille

Adresse

Exemple
FUNCTION_BLOCK FB3
VAR
MOT_ETAT1
: WORD ;
MOT_ETAT2
: BOOL ;
MOT_ETAT3
: BYTE ;
MOT_ETAT4
: BOOL ;
ADRESSE
: INT ;
END_VAR
BEGIN
ADRESSE := 10 ;
// Affectation d'un mot d'entre une variable (adressage simple)
MOT_ETAT1 := EW4 ;
// Affectation d'une variable un bit de sortie (adressage simple)
a1.1 := MOT_ETAT2 ;
// Affectation d'un octet d'entre une variable (adressage index)
MOT_ETAT3 := EB[ADRESSE] ;
// Affectation d'un bit d'entre une variable (adressage index)
FOR ADRESSE := 0 TO 7 BY 1 DO
MOT_ETAT4 := e[1, ADRESSE] ;
END_FOR ;
END_FUNCTION_BLOCK

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

12-9

Instructions

12.1.7

Affecter une valeur une variable globale


L'accs aux donnes dans des blocs de donnes s'effectue galement en affectant une
valeur une variable de mme type et inversement. Vous pouvez affecter toute variable
globale une variable ou une expression de type identique. Vous pouvez adresser ces
donnes de diverses manires :
Adressage structur
Adressage absolu
Adressage index

Syntaxe de la variable de DB
Variable de DB
Identificateur d'oprande
DESIGNATION
DU DB

12-10

Prfixe
de taille

Adresse

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Instructions

Exemple
FUNCTION_BLOCK FB3
VAR
REGULATEUR_1 : ARRAY [1..4] OF INT ;
MOT_ETAT1
: WORD ;
MOT_ETAT2
: ARRAY [0..10] OF WORD ;
MOT_ETAT3
: INT ;
MOT_ETAT4
: WORD ;
ADRESSE
: INT ;
END_VAR
VAR_INPUT
MOT_ADRESSE : WORD ;
END_VAR
BEGIN
// Affectation du mot 1 du DB11
// une variable (adressage simple)
MOT_ETAT1 := DB11.DW1 ;
// La valeur de la variable "NOMBRE" est affecte
// le composant de la 1re ligne et de la 1re
// colonne de la matrice (adressage structur) :
REGULATEUR_1[1] := DB11.CHIFFRE;
// Affectation du composant "NOMBRE2"
// de la structure "NOMBRE1" la variable MOT_ETAT3
MOT_ETAT3 := DB11.NOMBRE1.NOMBRE2 ;
// Affectation d'un mot du DB11 avec adresse indexe
// une variable (adressage index)
FOR
ADRESSE := 1 TO 10 BY 1 DO
MOT_ETAT2[ADRESSE] := DB11.DW[ADRESSE] ;
// Le paramtre d'entre MOT_ADRESSE est utilis ici
// comme numro du DB et l'indice ADRESSE
// pour indiquer l'adresse du mot dans le DB
MOT_ETAT4 := WORD_TO_BLOCK_DB(MOT_ADRESSE).DW[ADRESSE] ;
END_FOR ;
END_FUNCTION_BLOCK

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

12-11

Instructions

12.2

Instructions de contrle

12.2.1 Prsentation des instructions de contrle

Instructions de slection
Une instruction de slection vous permet d'aiguiller le droulement du programme vers
diffrentes squences d'instructions en fonction de conditions.
Type de branchement

Fonction

Instruction IF

L'instruction IF vous permet d'aiguiller le droulement du programme


vers l'une de deux alternatives, en fonction d'une condition qui est soit
vraie, soit fausse.

Instruction CASE

L'instruction CASE vous permet d'orienter le droulement du programme


vers l'une parmi n variantes, en faisant prendre une variable une valeur
parmi n valeurs possibles.

Traitement de boucles
Vous pouvez programmer l'excution de boucles en utilisant des instructions d'itration. Une
instruction d'itration indique quelles parties d'un programme doivent tre rptes en
fonction de certaines conditions.
Type de branchement

Fonction

Instruction FOR

Elle sert rpter une suite d'instructions tant que la variable de contrle
reste dans la plage de valeurs indique.

Instruction WHILE

Elle sert rpter une suite d'instructions tant qu'une condition


d'excution est ralise.

Instruction REPEAT

Elle sert rpter une suite d'instructions jusqu' ce qu'une condition


d'achvement soit obtenue.

Saut dans le programme


Un saut dans le programme provoque le saut immdiat un repre spcifi et donc une
autre instruction dans le mme bloc.

12-12

Type de branchement

Fonction

Instruction CONTINUE

Elle sert abandonner l'excution du parcours momentan de la


boucle.

Instruction EXIT

Elle sert quitter une boucle un endroit quelconque, que la condition


d'abandon soit remplie ou pas.

Instruction GOTO

Elle provoque le saut immdiat un repre de saut spcifi.

Instruction RETURN

Elle permet de quitter un bloc en cours d'excution.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Instructions

12.2.2 Conditions
Une condition peut tre une expression de comparaison, une expression logique ou une
expression arithmtique. Elle est du type de donnes BOOL et peut prendre les valeurs
TRUE (VRAI) ou FALSE (FAUX). Une expression arithmtique est TRUE si elle prend une
valeur diffrente de zro et FALSE si le rsultat est gal zro. Le tableau suivant prsente
des exemples de conditions :
Type

Exemple

Expression de comparaison

TEMPO > 50
COMPTEUR <= 100
CAR1 < 'S'

Expression de comparaison et expression logique

(ALPHA <> 12) AND NOT BETA

Oprande boolen

E1.1

Expression arithmtique

ALPHA = (5 + BETA)

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

12-13

Instructions

12.2.3 Instruction IF
Il s'agit d'une instruction conditionnelle. Elle propose une ou plusieurs options et slectionne
l'une (ou aucune) des sections d'instructions pour l'excuter.
L'excution de l'instruction conditionnelle provoque l'valuation des expressions logiques
spcifies. Si la valeur d'une expression est vraie, la condition est considre comme
remplie ; elle ne l'est pas si la valeur est fausse.

Syntaxe
Instruction IF

IF

Expression

THEN

Section
des instructions

THEN

Section
des instructions

Condition

ELSIF

Expression
Condition

ELSE

Section
des instructions

END_IF

Rgles rgissant l'excution de l'instruction IF :


La premire suite d'instructions dont l'expression logique est vraie (TRUE) vient
excution, les autres suites d'instructions ne sont pas excutes.
Si aucune expression boolenne n'est vraie (TRUE), c'est la suite d'instructions indique
aprs ELSE qui est excute (ou aucune instruction s'il n'y a pas de branche ELSE).
Le nombre d'instructions ELSIF possibles est illimit.

Nota
L'avantage d'utiliser une ou plusieurs branches ELSIF plutt qu'une squence d'instructions
IF rside dans le fait qu'aprs la premire expression logique vraie, les suivantes ne sont
plus values ce qui permet de diminuer la dure d'excution d'un programme.

12-14

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Instructions

Exemple
IF

E1.1 THEN
N := 0 ;
SOMME := 0 ;
OK := FALSE ; // Attribuer la valeur FALSE au drapeau OK
ELSIF START = TRUE THEN
N := N + 1 ;
SOMME := SOMME + N ;
ELSE
OK := FALSE ;
END_IF ;

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

12-15

Instructions

12.2.4 Instruction CASE


L'instruction CASE sert choisir entre 1 n variantes de parties de programmes. Cette
slection repose sur la valeur en cours d'une expression de slection.

Syntaxe
Instruction CASE
Expression de slection (entier)
CASE

Expression

OF

Valeur

Liste de valeurs

ELSE

Section
des instructions

Section
des instructions

END_CASE

Rgles rgissant l'excution d'une instruction CASE :


L'expression de slection doit fournir une valeur de type INTEGER.
Lors de l'excution d'une instruction CASE, le programme vrifie si la valeur de
l'expression de slection figure dans la liste de valeurs spcifie. Si tel est le cas, la
section d'instructions affecte la liste est excute.
Si l'opration de comparaison ne trouve pas la valeur en question dans la liste, c'est la
section d'instructions indique aprs ELSE qui est excute, ou aucune instruction s'il n'y
a pas de branche ELSE.

12-16

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Instructions

Liste de valeurs
Elle contient les valeurs autorises pour l'expression de slection.
Liste de valeurs
Nombre entier
Valeur

Valeur

Valeur

..

Rgles en vigueur :
Toute liste de valeurs commence par une constante, une liste de constantes ou une
plage de constantes.
Les valeurs contenues dans la liste doivent tre du type de donnes entier (INTEGER).
Chaque valeur doit n'y figurer qu'une seule fois.

Valeur
La syntaxe de la valeur est la suivante :

Constante numrique

IDENTIFICATEUR
Nom de la constante

Exemple
CASE TW OF
1 :
2 :
3 :
4..10:
11,13,19:

AFFICHAGE:= TEMP_FOUR;
AFFICHAGE:= VITESSE_MOTEUR;
AFFICHAGE:= TARE_BRUTE;
AW4:= 16#0003;
AFFICHAGE:= INT_TO_DINT (TW);
AW4:= 16#0004;
AFFICHAGE:= 99;
AW4:= 16#0005;

ELSE:
AFFICHAGE:= 0;
TW_ERREUR:= 1;
END_CASE ;

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

12-17

Instructions

12.2.5 Instruction FOR


Une instruction FOR sert rpter une suite d'instructions aussi longtemps qu'une variable
de contrle se trouve dans la plage de valeurs spcifie. La variable de contrle doit tre
l'identificateur d'une variable locale de type INT ou DINT. En dfinissant une boucle,
l'instruction FOR fixe aussi une valeur initiale et une valeur finale. Toutes deux doivent tre
du mme type que la variable de contrle.

Syntaxe
Instruction FOR

FOR

Affectation
initiale

TO

pour la valeur terminale

pour la valeur initiale

BY

Expression
de base

Expression
de base

DO

Section
des instructions

pour l'incrment

END_FOR

Excution d'une instruction FOR


Au dpart de la boucle, la valeur initiale est attribue la variable de contrle (affectation
initiale) qui est ensuite augmente (pas positif) ou diminue (pas ngatif) du pas indiqu
aprs chaque nouvelle itration, jusqu' ce que la valeur finale soit atteinte.
Aprs chaque parcours, le programme vrifie si la condition (variable de contrle dans la
plage de valeurs) est remplie. Si c'est le cas, la suite d'instructions est excute, sinon la
boucle (c'est--dire la suite d'instructions) est saute.

Rgles
Rgles dont il faut tenir compte pour formuler une instruction FOR :
La variable de contrle doit tre exclusivement du type de donnes INT ou DINT.
L'indication de BY [incrment] est facultative. En son absence, la valeur utilise est +1.

12-18

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Instructions

Affectation initiale
Pour la valeur initiale de la variable de contrle, la syntaxe doit tre la suivante. La variable
simple se trouvant gauche de l'affectation doit tre du type INT ou DINT.
Instruction initiale
Variable
tendue

Expression
de base

:=

pour la valeur initiale

Type de donnes
INT/DINT

Voici des exemples d'affectations initiales correctes :


FOR I := 1 TO 20
FOR I := 1 TO (INITIALE + J)

Valeur finale et incrment


Pour former la valeur finale et l'incrment, vous pouvez respectivement crer une expression
de base. La syntaxe de l'expression de base doit tre la suivante :

Oprande
Expression
de base

Oprateur arithmtique de base

Expression
de base

exclusivement pour une instruction FOR


+

Expression
de base

Expression
de base

L'indication de BY [incrment] est facultative. En son absence, la valeur utilise est


+1.
Valeur initiale, valeur finale et incrment sont des expressions (voir au chapitre
"Expressions, oprations, oprandes") dont l'valuation est ralise une seule fois au
dbut de l'excution de l'instruction FOR.
Il n'est pas permis de modifier la valeur finale et l'incrment pendant l'excution de la
boucle.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

12-19

Instructions

Exemple
FUNCTION_BLOCK FOR_BSP
VAR
INDICE: INT ;
MOT_CLE: ARRAY [1..50] OF STRING;
END_VAR
BEGIN
FOR INDICE := 1 TO 50 BY 2 DO
IF MOT_CLE [INDICE] = 'CLE' THEN
EXIT;
END_IF;
END_FOR;
END_FUNCTION_BLOCK

12-20

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Instructions

12.2.6 Instruction WHILE


L'instruction WHILE permet de reprendre l'excution d'une suite d'instructions tant qu'une
condition d'excution est remplie. Cette condition est forme conformment aux rgles d'une
expression logique.

Syntaxe
Instruction WHILE

WHILE

Expression

DO

Section
des instructions

END_WHILE

Condition d'excution

Rgles rgissant l'excution d'une instruction WHILE :


Avant chaque excution de la section d'instructions, la condition d'excution est value
(boucle de refus).
La section d'instructions suivant DO est rpte tant que la condition d'excution fournit
la valeur TRUE.
Si la condition d'excution fournit la valeur FALSE, la boucle est saute et c'est
l'instruction suivante qui est excute.

Exemple
FUNCTION_BLOCK WHILE_BSP
VAR
INDICE: INT ;
MOT_CLE: ARRAY [1..50] OF STRING ;
END_VAR
BEGIN
INDICE := 1 ;
WHILE INDICE <= 50 AND MOT_CLE[INDICE] <> 'CLE' DO
INDICE := INDICE + 2;
END_WHILE ;
END_FUNCTION_BLOCK

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

12-21

Instructions

12.2.7 Instruction REPEAT


L'instruction REPEAT provoque l'excution rpte de la suite d'instructions figurant entre
REPEAT et UNTIL, jusqu' ce que la condition d'abandon soit remplie. Cette condition est
forme suivant les rgles d'une expression logique.

Syntaxe
Instruction REPEAT

REPEAT

Section
des instructions

UNTIL

Expression

END_REPEAT

Condition d'abandon

La condition est vrifie chaque parcours aprs l'excution du tronc. Cela signifie que le
tronc est excut au moins une fois, mme si la condition d'abandon est remplie ds le
dbut.

Exemple
FUNCTION_BLOCK REPEAT_BSP
VAR
INDICE: INT ;
MOT_CLE: ARRAY [1..50] OF STRING ;
END_VAR
BEGIN
INDICE := 0 ;
REPEAT
INDICE := INDICE + 2 ;
UNTIL INDICE > 50 OR MOT_CLE[INDICE] = 'CLE'
END_REPEAT ;
END_FUNCTION_BLOCK

12-22

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Instructions

12.2.8 Instruction CONTINUE


L'instruction CONTINUE sert abandonner l'excution du parcours momentan d'une
instruction d'itration (FOR, WHILE ou REPEAT).

Syntaxe
Instruction CONTINUE

CONTINUE

Rgles rgissant l'excution d'une instruction CONTINUE :


Cette instruction provoque l'abandon immdiat de l'excution de la suite d'instructions.
Selon que la condition de rptition de la boucle est remplie ou pas, le tronc est excut
encore une fois ou bien le programme quitte l'instruction d'itration pour excuter
l'instruction immdiatement suivante.
Dans une instruction FOR, la variable de contrle est augmente du pas indiqu, aussitt
aprs une instruction CONTINUE.

Exemple
FUNCTION_BLOCK CONTINUE_EX
VAR
INDICE :INT ;
TABLEAU
:ARRAY[1..100] OF INT ;
END_VAR
BEGIN
INDICE := 0 ;
WHILE INDICE <= 100 DO
INDICE := INDICE + 1 ;
// Si TABLEAU[INDICE] est gal INDICE,
// alors TABLEAU [INDICE] n'est pas modifi :
IF TABLEAU[INDICE] = INDICE THEN
CONTINUE ;
END_IF ;
TABLEAU[INDICE] := 0 ;
// Autres instructions
END_WHILE ;
END_FUNCTION_BLOCK

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

12-23

Instructions

12.2.9 Instruction EXIT


L'instruction EXIT sert quitter une boucle (FOR, WHILE ou REPEAT) un endroit
quelconque, que la condition d'abandon soit remplie ou pas.

Syntaxe
Instruction EXIT

EXIT

Rgles rgissant l'excution d'une instruction EXIT :


Cette instruction provoque l'abandon instantan de l'instruction d'itration qui est dans
son entourage immdiat.
L'excution du programme se poursuit aprs la fin de la boucle d'itration (par exemple
aprs END_FOR).

Exemple
FUNCTION_BLOCK EXIT_EX
VAR
INDICE_1
INDICE_2
INDICE_CHERCHE
MOT_CLE
END_VAR

:
:
:
:

INT ;
INT ;
INT ;
ARRAY[1..51] OF STRING ;

BEGIN
INDICE_2
:= 0 ;
FOR INDICE_1
:= 1 TO 51 BY 2 DO
// Quitter la boucle FOR si
// MOT_CLE[INDICE_1] est gal 'CLE'
IF MOT_CLE[INDICE_1] = 'CLE' THEN
INDICE_2 := INDICE_1 ;
EXIT ;
END_IF ;
END_FOR ;
// L'affectation de valeur suivante est excute
// aprs l'excution de l'instruction EXIT ou
// aprs la fin normale de la boucle FOR :
INDICE_CHERCHE := INDICE_2 ;
END_FUNCTION_BLOCK

12-24

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Instructions

12.2.10 Instruction GOTO


L'instruction GOTO vous permet de raliser un saut (un branchement) dans le programme.
Elle provoque le saut immdiat un repre de saut spcifi, c'est--dire une autre
instruction dans le mme bloc.
L'instruction GOTO ne doit tre utilise qu' titre exceptionnel, par exemple pour le
traitement des erreurs. En effet, son utilisation est contraire aux rgles de la programmation
structure.

Syntaxe
Branchement de
programme
GOTO

IDENTIFICATEUR
Repre de saut

"Repre de saut" dsignant un repre dans la section de dclaration LABEL/END_LABEL. Il


est plac devant l'instruction qui doit tre excute immdiatement aprs GOTO.
Rgles dont il faut tenir compte pour utiliser une instruction GOTO :
La cible d'une instruction de saut doit se trouver dans le mme bloc.
La cible doit tre univoque.
Un saut menant dans une boucle n'est pas autoris. Un saut sortant d'une boucle est
possible.

Exemple
FUNCTION_BLOCK GOTO_EX
VAR
INDICE : INT ;
A
: INT ;
B
: INT ;
C
: INT ;
MOT_CLE
: ARRAY[1..51] OF STRING ;
END_VAR
LABEL
REPERE1, REPERE2, REPERE3 ;
END_LABEL
BEGIN
IF A > B THEN
GOTO REPERE1 ;
ELSIF A > C THEN
GOTO REPERE2 ;
END_IF ;
// . . .
REPERE1: INDICE := 1 ;
GOTO REPERE3
REPERE2: INDICE := 2 ;
// . . .
REPERE3:
// . . .

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

12-25

Instructions

12.2.11 Instruction RETURN


L'instruction RETURN permet de quitter le bloc actif (OB, FB, FC) et de revenir au bloc
appelant ou au systme d'exploitation, si c'est un OB qui est quitt.

Syntaxe
Instruction RETURN
RETURN

Nota
A la fin de la section d'excution d'un bloc de code ou de la section de dclaration d'un bloc
de donnes, l'instruction RETURN serait redondante puisqu'elle est excute
automatiquement.

12-26

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Instructions

12.3

Appel de fonctions et de blocs fonctionnels

12.3.1 Appel et transmission de paramtres

Appel de FC et FB
Afin d'assurer une meilleure lisibilit et une maintenance plus aise des programmes
utilisateur, il est usuel de diviser l'ensemble des fonctions d'un programme en tches
partielles, ralises par des blocs fonctionnels (FB) et des fonctions (FC). Dans un bloc
S7-SCL, vous avez galement la possibilit d'appeler d'autres FC ou FB, savoir :
les blocs fonctionnels et fonctions crs dans S7-SCL,
les blocs fonctionnels et fonctions crs dans d'autres langages de programmation de
STEP 7 (CONT, LOG, LIST),
des fonctions systme (SFC) et blocs fonctionnels systme (SFB), disponibles dans le
systme d'exploitation de votre CPU.

Principe de la transmission de paramtres


Lorsque vous appelez une fonction ou un bloc fonctionnel, un change de donnes a lieu
entre le bloc appelant et le bloc appel. Dans l'interface du bloc appel sont dfinis des
paramtres avec lesquels le bloc travaille. Ce sont les paramtres formels. Leur unique
fonction est de rserver la place pour les paramtres qui seront transmis au bloc lors de son
appel. Ces derniers sont les paramtres effectifs.

Syntaxe de la transmission de paramtres


Les paramtres transmettre doivent tre indiqus sous forme de liste de paramtres lors
de l'appel. Ils doivent figurer entre parenthses et tre spars par des virgules.
L'exemple suivant montre l'appel d'une fonction indiquant un paramtre d'entre, un
paramtre d'entre/sortie et un paramtre de sortie.

Paramtres effectifs
3
LONGUEUR
Somme_chif

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Paramtres formels
Par_E
Par_E/S
Par_S

12-27

Instructions

L'indication des paramtres a la forme d'une affectation de valeur. Elle consiste en effet
affecter des valeurs (paramtres effectifs) aux paramtres que vous avez dfinis dans la
section de dclaration du bloc appel (paramtres formels).

Appel absolu :
FB10.DB20 (X1:=5,X2:=78,......);
Affectation des paramtres

Appel symbolique :
MOTEUR.MARCHE (X1:=5,X2:=78,......);

12-28

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Instructions

12.3.2

Appel de blocs fonctionnels

12.3.2.1 Appel d'un bloc fonctionnel (FB ou SFB)


Pour l'appel d'un bloc fonctionnel, vous pouvez utiliser aussi bien un bloc de donnes
d'instance global qu'une zone d'instance locale du bloc de donnes d'instance actif.
C'est l'endroit o les donnes sont enregistres qui distingue l'appel d'un FB comme
instance locale de son appel comme instance globale. Dans le premier cas, les donnes ne
sont pas stockes dans un DB spar, mais dans le bloc de donnes d'instance du FB
appelant.

Syntaxe
Appel d 'un FB
FB : bloc fonctionnel
SFB : bloc fonctionnel systme

DESIGNATION
DU FB

Nom de l'instance globale


DESIGNATION
DU SFB

DESIGNATION
DU DB

Paramtres du FB

IDENTIFICATEUR

Nom de l'instance locale

Appel comme instance globale


Vous indiquez dans l'instruction d'appel :
Le nom du bloc fonctionnel ou du bloc fonctionnel systme (dsignation de FB ou de
SFB)
Le bloc de donnes d'instance (dsignation de DB)
Les valeurs des paramtres (paramtres du FB)
L'appel d'une instance globale peut tre absolu ou symbolique.

Appel absolu :
FB10.DB20 (X1:=5,X2:=78,......);
Affectation des paramtres

Appel symbolique :
MOTEUR.MARCHE (X1:=5,X2:=78,......);

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

12-29

Instructions

Appel comme instance locale


Vous indiquez dans l'instruction :
Le nom de l'instance locale (identificateur)
Les valeurs des paramtres (paramtres du FB)
L'appel d'une instance locale est toujours symbolique. Vous devez dclarer le mnmonique
correspondant dans la section de dclaration du bloc appelant.

MOTEUR (X1:=5,X2:=78,......);
Affectation des paramtres

12-30

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Instructions

12.3.2.2 Dfinition des paramtres du FB


A l'appel d'un bloc fonctionnel comme instance globale ou locale vous devez dfinir les
paramtres suivants dans la liste des paramtres :
Les paramtres d'entre
Les paramtres d'entre/sortie
Les paramtres de sortie ne sont pas spcifis l'appel d'un FB, mais reoivent des valeurs
aprs l'appel de ce dernier.

Syntaxe d'une affectation de valeur aux paramtres du FB :


Elle est la mme qu'il s'agisse d'appeler une instance globale ou une instance locale.
Paramtres du FB
Affectation
de l'entre

Affectation de
l'entre/sortie

Pour dfinir un paramtre, vous devez tenir compte des rgles suivantes :
L'ordre des affectations est quelconque.
Les types de donnes paramtre formel et paramtre effectif doivent tre identiques.
Chaque affectation est spare de la prcdente par une virgule.
Affecter des valeurs aux sorties n'est pas possible dans un appel de FB. La valeur d'un
paramtre de sortie que vous avez dclar est enregistre dans les donnes d'instance
o elle peut tre adresse par tous les FB. Pour la lire, vous devez dfinir son adressage
partir d'un FB.
Tenez compte des particularits des paramtres de type de donnes ANY et de type de
donnes POINTER.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

12-31

Instructions

Rsultat aprs l'excution du bloc


Aprs l'excution du bloc
Les paramtres d'entre actuels transmis n'ont pas chang ;
Les valeurs des paramtres d'entre/sortie transmises mais modifies sont actualises,
l'exception des paramtres d'entre/sortie de type de donnes simple ;
Les paramtres de sortie du bloc appelant peuvent tre lus dans le bloc de donnes
d'instance ou dans la zone d'instance locale.

Exemple
Voici un exemple d'appel avec dfinition d'un paramtre d'entre et d'un paramtre
d'entre/sortie :
FB31.DB77(Par_E:=3, Par_ES:=LONGUEUR);

12-32

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Instructions

12.3.2.3 Dfinition des entres (FB)


Des paramtres effectifs sont affects aux paramtres formels d'entre au moyen
d'affectations de valeur. Le FB ne peut pas modifier ces paramtres effectifs. L'affectation de
valeurs actuelles aux paramtres d'entre est facultative. Si vous n'indiquez pas de
nouveaux paramtres effectifs, les valeurs du dernier appel restent en vigueur.
Paramtres effectifs possibles :
Paramtre effectif

Explication

Expression

Expression arithmtique, logique ou de comparaison


Constante

Variable tendue

Dsignation de temporisation/
de compteur

Vous dterminez une temporisation ou un compteur qui doivent tre utiliss


l'excution d'un bloc.

Dsignation de bloc

Vous dterminez un bloc qui doit tre utilis comme paramtre d'entre. Le
type de bloc (FB, FC, DB) est fix dans la dclaration du paramtre d'entre.
Dans la dfinition du paramtre, vous indiquez l'adresse du bloc sous forme
absolue ou symbolique.

Syntaxe
Affectation de l'entre

Paramtre effectif
Expression
DESIGNATION DE
LA TEMPORISATION

IDENTIFICATEUR
Nom du paramtre
d'entre
(Paramtre formel)

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

:=
DESIGNATION
DU COMPTEUR
DESIGNATION
DU BLOC

12-33

Instructions

12.3.2.4 Dfinition des entres/sorties (FB)


Des paramtres effectifs sont affects aux paramtres formels d'entre/sortie du FB appel
au moyen d'affectations de valeur. Les paramtres d'entre/sortie peuvent tre modifis par
le FB appel. La nouvelle valeur du paramtre qui rsulte de l'excution du FB s'inscrit dans
le paramtre effectif o elle crase la valeur initiale.
Si vous avez dclar des paramtres d'entre/sortie dans le FB appel, vous devez les
dfinir lors du premier appel. Pour les passages suivants, l'indication de paramtres effectifs
est facultative. Cependant, dans le cas de paramtres d'entre/sortie d'un type de donnes
simple, les paramtres effectifs ne sont pas actualiss si les paramtres formels ne sont pas
dfinis lors de l'appel.
Puisque le paramtre effectif attribu peut tre modifi durant l'excution du FB, en sa
qualit de paramtre d'entre/sortie, il doit s'agir d'une variable.
Paramtre effectif

Variable tendue

Explication

Vous pouvez utiliser les types de variables tendues suivants :

Variable simple et paramtre

Adressage de variable absolue

Adressage de bloc de donnes

Appel de fonction

Syntaxe
Affectation de l'entre/sortie

IDENTIFICATEUR

:=

Nom du paramtre
d'entre/sortie

Variable
tendue
Paramtre effectif

(Paramtre formel)

Nota

12-34

Pour les types de donnes ANY et POINTER, il faut tenir compte de rgles spciales
lors du paramtrage.

Les paramtres effectifs suivants ne peuvent pas tre affects aux paramtres
d'entre/sortie d'un type de donnes non simple :
-

Paramtre d'entre/sortie d'un FB

Paramtre d'une FC

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Instructions

12.3.2.5 Lecture des valeurs de sortie (appel de FB)


Une fois le bloc appel excut, les paramtres de sortie peuvent tre lus dans le bloc
d'instance globale ou dans la zone d'instance locale l'aide d'une affectation de valeur.

Exemple
RESULTAT := DB10.CONTROLE ;

12.3.2.6 Exemple d'appel d'une instance globale


Un bloc fonctionnel comportant une boucle FOR pourrait se prsenter comme dans les
exemples suivants. On y suppose que le mnmonique TEST a t dclar pour le FB17
dans la table des mnmoniques.

Bloc fonctionnel
FUNCTION_BLOCK TEST
VAR_INPUT
VALEUR_FINALE:
INT;
END_VAR
VAR_IN_OUT
IQ1
:
REAL;
END_VAR
VAR_OUTPUT
CONTROLE:
BOOL;
END_VAR
VAR
INDICE: INT;
END_VAR

// Paramtre d'entre

//Paramtre d'entre/sortie

//Paramtre de sortie

BEGIN
CONTROLE
FOR INDICE
IQ1
IF

:=FALSE;
:= 1 TO VALEUR_FINALE DO
:=IQ1*2;
IQ1 > 10000 THEN
CONTROLE
:= TRUE;
END_IF;

END_FOR;
END_FUNCTION_BLOCK

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

12-35

Instructions

Appel
Vous pouvez appeler ce FB de l'une des faons suivantes. On suppose que VARIABLE1 a
t dclare comme variable de type REAL dans le bloc appelant.
//Appel absolu, instance globale :
FB17.DB10 (VALEUR_FINALE:=10, IQ1:=VARIABLE1);
//Appel symbolique, instance globale :
TEST.TEST_1 (VALEUR_FINALE:= 10, IQ1:= VARIABLE1) ;

Rsultat
Une fois le bloc excut, la valeur fournie pour le paramtre d'entre/sortie IQ1 est
disponible dans la VARIABLE1.

Lecture de la valeur de sortie


Il y a plusieurs faons de lire le paramtre de sortie CONTROLE :
// L'adressage du paramtre de sortie
// est ralis par
RESULTAT:= DB10.CONTROLE;
//Vous avez galement la possibilit d'affecter
//directement le paramtre de sortie un
//paramtre d'entre l'appel d'un autre FB :
FB17.DB12 (ENTREE_1:= DB10.CONTROLE);

12-36

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Instructions

12.3.2.7 Exemple d'appel d'une instance locale


Un bloc fonctionnel avec une boucle FOR simple pourrait tre programm comme dans
l'exemple "Appel en tant qu'instance globale", le mnmonique TEST ayant t dclar pour
le FB17 dans la table de mnmoniques.
En supposant que VARIABLE1 est dclare comme variable de type REAL dans le bloc
appelant, vous pouvez appeler le FB comme suit.

Appel
FUNCTION_BLOCK CALL
VAR
// Dclaration d'instance locale
TEST_L : TEST ;
VARIABLE1 : REAL ;
RESULTAT : BOOL ;
END_VAR
BEGIN
. . .
// Appel, instance locale :
TEST_L (VALEUR_FINALE:= 10, IQ1:= VARIABLE1) ;

Lecture de la valeur de sortie


Le paramtre de sortie CONTROLE peut tre lu de la manire suivante :
// L'adressage du paramtre de sortie
// est ralis par
RESULTAT := TEST_L.CONTROLE ;
END_FUNCTION_BLOCK

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

12-37

Instructions

12.3.3

Appel de fonctions

12.3.3.1 Appel d'une fonction (FC)


Pour appeler une fonction, vous indiquez son nom (DESIGNATION DE LA FC, DE LA SFC
ou IDENTIFICATEUR) ainsi que la liste des paramtres. Le nom de la fonction qui dsigne
la valeur de retour peut tre absolu ou symbolique :
FC31 (X1:=5, Q1:=total_horizontal)
ECART (X1:=5, Q1=:total_horizontal)

// sous forme absolue


// sous forme symbolique

Aprs l'appel, les rsultats de la fonction sont disponibles comme valeurs de retour ou
comme paramtres de sortie et d'entre/sortie (paramtres effectifs).

Syntaxe

Appel de fonction

DESIGNATION
DE LA FC

DESIGNATION
DE LA SFC

IDENTIFICATEUR
Nom de la fonction standard
ou mnmonique

Paramtres
de la FC

FC : fonction
SFC : fonction systme
Fonction standard ralise dans le compilateur

Nota
L'appel dans S7-SCL d'une fonction dont la valeur de retour n'a pas t dfinie peut
entraner une excution errone du programme utilisateur.

12-38

Pour une fonction programme dans S7-SCL, ce cas peut se produire quand la valeur
de retour a certes t dfinie, mais que l'instruction en question n'est pas parcourue.

Pour une fonction programme dans CONT/LOG/LIST, ce cas peut se produire quand la
fonction a t programme sans dfinition de la valeur de retour ou quand l'instruction
en question n'est pas excute.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Instructions

12.3.3.2 Valeur de retour (FC)


Contrairement au blocs fonctionnels, les fonctions fournissent la valeur de retour comme
rsultat. C'est la raison pour laquelle elles peuvent tre traites comme des oprandes (
l'exception des fonctions du type VOID).
La fonction calcule la valeur de retour qui porte le mme nom qu'elle et la retourne au bloc
appelant, o elle remplace l'appel de la fonction.
L'exemple suivant montre l'appel de la fonction ECART et l'affectation de son rsultat la
variable LONGUEUR.
LONGUEUR:= ECART (X1:=-3, Y1:=2);
La valeur de retour peut tre utilise dans les lments suivants d'une FC ou d'un FB :
Dans une affectation de valeur,
Dans une expression logique, arithmtique ou de comparaison ou
Comme paramtre pour un autre appel de bloc fonctionnel ou de fonction.

Nota

Avec les fonctions dont la valeur de retour est du type ANY, il faut qu'un paramtre
d'entre ou d'entre/sortie au moins soit aussi du type ANY. Si vous avez dfini
plusieurs paramtres ANY, vous devez leur affecter des paramtres effectifs de la
mme classe (par exemple INT, DINT et REAL). La valeur de retour est alors
automatiquement du plus grand type de donnes utilis dans cette classe.

La longueur maximale du type de donnes STRING peut tre rduite de 254 caractres
un nombre de caractres quelconque.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

12-39

Instructions

12.3.3.3 Paramtres de FC
Contrairement aux blocs fonctionnels, les fonctions n'ont pas de mmoire o enregistrer les
valeurs des paramtres. Les donnes locales ne sont enregistres que temporairement
durant l'excution de la fonction. C'est la raison pour laquelle, lorsque vous appelez une
fonction, vous devez affecter un paramtre effectif chaque paramtre formel d'entre,
d'entre/sortie et de sortie que vous avez dclar dans la section de dclaration de la
fonction.

Syntaxe
Paramtres d'une FC
Expression
Affectation
de l'entre
Affectation de
la sortie ou de
l'entre/sortie
,

Rgles
Pour dfinir un paramtre, vous devez tenir compte des rgles suivantes :
L'ordre des affectations est quelconque.
Les types de donnes du paramtre formel et du paramtre effectif doivent tre
identiques.
Chaque affectation est spare de la prcdente par une virgule.

Exemple
Voici un exemple d'appel avec dfinition d'un paramtre d'entre, d'un paramtre de sortie et
d'un paramtre d'entre/sortie :
FC32 (Param_e1:=5,Param_es1:=LONGUEUR,
Param_s1:=total_horizontal)

12-40

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Instructions

12.3.3.4 Dfinition des entres (FC)


Des valeurs (paramtres effectifs) sont affects aux paramtres formels d'entre de la FC
appele, au moyen d'affectations de valeur. La FC peut travailler avec ces paramtres, mais
pas les modifier. Contrairement ce qui se passe pour l'appel d'un FB, ce paramtrage est
obligatoire dans l'appel d'une FC.
Les paramtres effectifs suivants peuvent tre affects une entre :
Paramtre effectif

Explication

Expression

Une expression reprsente une valeur et se compose d'oprandes et


d'oprations. Voici les types d'expressions disponibles :

Expression arithmtique, logique ou de comparaison

Constante

Variable tendue

Dsignation de temporisation/
de compteur

Vous dterminez une temporisation ou un compteur qui doivent tre utiliss


l'excution d'un bloc

Dsignation de bloc

Vous dterminez un bloc qui doit tre utilis comme paramtre d'entre. Le
type de bloc (FB, FC, DB) est fix dans la dclaration du paramtre
d'entre. En dfinissant le paramtre, vous indiquez l'adresse du bloc sous
forme absolue ou symbolique

Syntaxe
Affectation de l'entre
Paramtre effectif
Expression
DESIGNATION DE
LA TEMPORISATION
IDENTIFICATEUR
Nom du paramtre
d'entre

(Paramtre formel)

:=
DESIGNATION
DU COMPTEUR
DESIGNATION
DU BLOC

Nota
Pour les paramtres formels d'entre qui ne sont pas d'un type de donnes simple, les
paramtres d'entre/sortie de FB et les paramtres de FC ne sont pas autoriss comme
paramtres effectifs. Tenez compte aussi des particularits des types de donnes ANY et
POINTER.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

12-41

Instructions

12.3.3.5 Dfinition des sorties et des entres/sorties (FC)


Dfinir les sorties consiste spcifier la variable du bloc appelant dans laquelle seront
crites les valeurs de sortie rsultant de l'excution de la fonction. Dfinirr les entres/sorties
consiste affecter une valeur effective chaque paramtre d'entre/sortie.
Dans la dfinition des sorties et des entres/sorties, les paramtres effectifs doivent tre des
variables, puisque la FC doit crire des valeurs dans les paramtres. C'est la raison pour
laquelle vous ne pouvez pas affecter un paramtre d'entre un paramtre d'entre/sortie
(la nouvelle valeur ne pourrait pas y tre crite). Ainsi donc, seule une variable tendue peut
tre affecte dans la dfinition des sorties et des entres/sorties :
Paramtre effectif

Explication

Variable tendue

Vous pouvez utiliser les types de variables tendues suivants :

Variable simple et paramtre

Adressage de variable absolue

Adressage de bloc de donnes

Appel de fonction

Syntaxe
$IIHFWDWLRQGHOHQWUHVRUWLH


9DULDEOH
WHQGXH

,'(17,),&$7(85
1RPGXSDUDPWUH
GHQWUHVRUWLH
SDUDPWUHIRUPHO

3DUDPWUHHIIHFWLI

!
DSSHOGXQ)&

Affectation de la sortie ou de l'entre/sortie

IDENTIFICATEUR
Nom du paramtre
de sortie ou
d'entre/sortie

:=

Variable
tendue
Paramtre effectif

(Paramtre formel)

12-42

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Instructions

Nota
Les paramtres effectifs suivants ne sont pas autoriss pour les paramtres formels
d'entre/sortie :

Les paramtres d'entre de FB/FC

Les paramtres d'entre/sortie de FB d'un type de donnes non simple

Les paramtres de sortie et d'entre/sortie de FC d'un type de donnes non simple

Tenez compte aussi des particularits des types de donnes ANY et POINTER.
La longueur maximale du type de donnes STRING peut tre rduite de 254 caractres un
nombre de caractres quelconque.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

12-43

Instructions

12.3.3.6 Exemple d'appel de fonction


Fonction appele
Soit la fonction ECART permettant de calculer l'cart entre deux points (X1,Y1) et (X2,Y2)
dans un plan l'aide de leur coordonnes cartsiennes (il est suppos que le mnmonique
ECART a t dclar pour la FC37 dans la table des mnmoniques) :
FUNCTION ECART: REAL // sous forme symbolique
VAR_INPUT
X1: REAL;
X2: REAL;
Y1: REAL;
Y2: REAL;
END_VAR
VAR_OUTPUT
Q2: REAL;
END_VAR
BEGIN
ECART:= SQRT( (X2-X1)**2 + (Y2-Y1)**2 );
Q2:= X1+X2+Y1+Y2;
END_FUNCTION

Bloc appelant
Diverses possibilits s'offrent vous pour utiliser ultrieurement la valeur de la fonction :
FUNCTION_BLOCK CALL
VAR
LONGUEUR : REAL ;
TOTAL_HORIZONTAL : REAL ;
RAYON : REAL;
Y : REAL;
END_VAR
BEGIN
. . .
// Appel dans une affectation de valeur
LONGUEUR := ECART (X1:=3, Y1:=2, X2:=8.9, Y2:= 7.4,
Q2:=TOTAL_HORIZONTAL) ;
//Appel dans une expression arithmtique ou logique, par exemple
Y := RAYON + ECART (X1:=-3, Y1:=2, X2:=8.9, Y2:=7.4,
Q2:=total_horizontal)
//Utilisation dans la dfinition des paramtres d'un autre bloc
appel
FB32.DB32 (DISTANCE:= ECART (X1:=-3, Y1:=2, X2:=8.9,
Y2:=7.4), Q2:=total_horizontal)
. . .
END_FUNCTION_BLOCK

12-44

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Instructions

12.3.4 Paramtres dfinis automatiquement


12.3.4.1 Paramtre d'entre EN
Tout bloc fonctionnel et toute fonction possdent un paramtre d'entre dfini
automatiquement, le paramtre EN, qui est du type de donnes BOOL. Il est stock dans la
zone des donnes temporaires du bloc. Le bloc appel est excut si EN est vrai, sinon il ne
l'est pas. L'affectation d'une valeur au paramtre EN est facultative. Il faut cependant veiller
ne pas dclarer EN dans la section de dclaration d'un bloc ou d'une fonction.
EN tant un paramtre d'entre, vous ne pouvez pas le modifier dans un bloc.

Nota
La valeur de retour d'une fonction n'est pas dfinie si la fonction n'a pas t appele (EN :
FALSE).

Exemple
FUNCTION_BLOCK FB57
VAR
MON_ACTIVE: BOOL ;
Rsultat : REAL;
END_VAR
// . . .
BEGIN
// . . .
MON_ACTIVE:= FALSE ;
// Appel d'une fonction avec dfinition du paramtre EN :
Rsultat := FC85 (EN:= MON_ACTIVE, PAR_1:= 27) ;
// FC85 n'a pas t excute, car MON_ACTIVE a t mis FALSE cidessus....
END_FUNCTION_BLOCK

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

12-45

Instructions

12.3.4.2 Paramtre de sortie ENO


Tout bloc fonctionnel et toute fonction possdent un paramtre de sortie dfini
automatiquement, le paramtre ENO, qui est du type de donnes BOOL. Il est stock dans
la zone des donnes temporaires du bloc. A la fin de l'excution d'un bloc, la valeur actuelle
du drapeau OK est stocke dans ENO.
Immdiatement aprs l'appel d'un bloc, vous pouvez vrifier, l'aide de la valeur de ENO, si
toutes les oprations dans le bloc se sont droules correctement ou si des erreurs sont
survenues.

Exemple
// Appel d'un bloc fonctionnel :
FB30.DB30 ([dfinition des paramtres]);
// Vrification du droulement correct dans le bloc appel :
IF ENO THEN
// tout s'est droul correctement
// . . .
ELSE
// une erreur est survenue et doit tre corrige
// . . .
END_IF;

12-46

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

13

Compteurs et temporisation

13.1

Compteurs

13.1.1 Fonctions de comptage


STEP 7 vous propose diverses fonctions standard de comptage que vous pouvez utiliser
dans votre programme S7-SCL sans devoir les dclarer au pralable. Il vous suffit de leur
affecter les paramtres requis. Voici les fonctions de comptage disponibles :
Fonction de comptage

Signification

S_CU

Compteur incrmental (Counter Up)

S_CD

Compteur dcrmental (Counter Down)

S_CUD

Compteur incrmental/dcrmental (Counter Up Down)

13.1.2

Appel d'une fonction de comptage


Les fonctions de comptage sont appeles comme des fonctions. La dsignation de fonction
peut tre employe partout la place d'un oprande dans une expression, condition que la
valeur de la fonction soit d'un type compatible avec celui de l'oprande remplac.
La valeur de la fonction (valeur de retour), fournie la position appelante, est la valeur de
comptage actuelle (format DCB) dans le type de donnes WORD.

Appel absolu ou dynamique


Vous pouvez entrer une valeur absolue comme numro de compteur dans l'appel (par ex.
C_NO:=Z10). Mais il faut savoir qu'une telle valeur n'est plus modifiable l'excution.
A la place du numro de compteur absolu, vous pouvez aussi indiquer une variable ou une
constante du type de donnes INT. Ceci a l'avantage de permettre un appel dynamique de
la fonction de comptage, si vous affectez un autre numro la variable ou la constante
chaque appel.
Une autre possibilit pour l'appel dynamique est l'indication d'une variable du type de
donnes COUNTER.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

13-1

Compteurs et temporisation

Exemples
//Exemple d'appel absolu :
S_CUD (C_NO:=Z12,
CD:=E0.0,
CU:=E0.1,
S:=E0.2 & E0.3,
PV:=120,
R:=FALSE,
CV:=binVal,
Q:=actFlag);
//Exemple d'appel dynamique : un autre compteur est appel
// chaque parcours d'une boucle FOR :
FUNCTION_BLOCK COMPT
VAR_INPUT
Compt: ARRAY [1..4] of STRUCT
C_NO: INT;
PV : WORD;
END_STRUCT;
.
.
END_VAR
.
.
FOR I:= 1 TO 4 DO
S_CD(C_NO:=compt[I].C_NO, S:=true, PV:= compt[I].PV);
END_FOR;
//Exemple d'appel dynamique grce l'emploi d'une variable
//du type de donnes COUNTER :
FUNCTION_BLOCK COMPTEUR
VAR_INPUT
MonCompteur:COUNTER;
END_VAR
.
.
Val_cour:=S_CD (C_NO:=MonCompteur,.....);

Nota
Les noms des fonctions et des paramtres sont les mmes dans les jeux d'abrviations
allemand et anglais. Seule la dsignation du compteur dpend du jeu d'abrviations utilis
(allemand : Z, anglais : C).

13-2

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Compteurs et temporisation

13.1.3 Dfinition des paramtres d'une fonction de comptage


Le tableau suivant indique les paramtres des fonctions de comptage :
Paramtre Type de donnes Description

C_NO

COUNTER
INT

Numro du compteur (DESIGNATION DU COMPTEUR) ; la plage


dpend de la CPU.

CD

BOOL

Entre CD : dcrmenter

CU

BOOL

Entre CU : incrmenter

BOOL

Entre d'initialisation du compteur

PV

WORD

Valeur comprise entre 0 et 999 pour initialiser le compteur (saisie


sous la forme 16#<valeur>, la valeur tant en format DCB)

BOOL

Entre de remise "0" du compteur

BOOL

Sortie : tat du compteur

CV

WORD

Sortie : tat du compteur en binaire

RET_VAL

WORD

Rsultat en format BCD

Rgles
Les valeurs des paramtres (par ex. CD:=E0.0) tant enregistres globalement, leur
indication est facultative dans certains cas. Tenez compte des rgles gnrales suivantes
pour la dfinition des paramtres.
A l'appel, vous devez affecter une valeur au paramtre C_NO dsignant le compteur. Au
lieu du numro absolu du compteur (par ex. Z12), vous pouvez aussi indiquer une
variable ou une constante du type de donnes INT ou un paramtre d'entre du type de
donnes COUNTER.
Vous devez affecter une valeur soit au paramtre CU (compteur incrmental), soit au
paramtre CD (compteur dcrmental).
L'indication du couple de paramtres PV (valeur d'initialisation) et S (initialiser) est
facultative.
La valeur de rsultat en format DCB est toujours la valeur de la fonction.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

13-3

Compteurs et temporisation

Exemple
FUNCTION_BLOCK FB1
VAR
CurrVal, binVal: word;
actFlag: bool;
END_VAR
BEGIN
CurrVal

:=S_CD (C_NO:= Z10, CD:=TRUE, S:=TRUE, PV:=100, R:=FALSE,


CV:=binVal,Q:=actFlag);
CurrVal
:=S_CU (C_NO:= Z11, CU:=M0.0, S:=M0.1, PV:=16#110,
R:=M0.2,
CV:=binVal,Q:=actFlag);
CurrVal
:=S_CUD(C_NO:= Z12, CD:=E0.0, CU:=E0.1,
S:=E0.2 &E0.3, PV:=120,
R:=FALSE, CV:=binVal,Q:=actFlag);
CurrVal
:=S_CD (C_NO:= Z10, CD:=FALSE, S:=FALSE,
PV:=100, R:=TRUE,
CV:=binVal,Q:=actFlag);
END_FUNCTION_BLOCK

13-4

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Compteurs et temporisation

13.1.4 Saisie et exploitation de la valeur de comptage


Pour saisir la valeur d'initialisation ou exploiter le rsultat de la fonction, vous avez besoin de
la reprsentation interne de la valeur de comptage. Il s'agit du type de donnes WORD, les
bits 0-11 indiquant la valeur de comptage dans le format DCB. Les bits 12-15 ne sont pas
utiliss.
Lorsque vous initialisez le compteur, la valeur que vous avez fixe s'y inscrit. La plage des
valeurs autorises va de 0 999. Vous pouvez modifier la valeur de comptage dans cette
plage en utilisant les fonctions compteur incrmental/dcrmental (S_CUD), compteur
incrmental (S_CU) ou compteur dcrmental (S_CD).

Format
La figure suivante donne la reprsentation de la valeur de comptage en bits :

15

14

13

12 11 10

X I X I X I X

0 I 0 I 0 I 1

0 I 0 I 1 I 0

0 I 1 I 1 I 1

Valeur de comptage dans le format DCB (0 999)


Ces bits sont insignifiants et ne sont donc pas pris en compte lorsque le
compteur est mis 1 .

Saisie :
Dcimale sous forme de valeur entire : par exemple 295, si cette valeur correspond un
format DCB_ autoris
DCB (saisie sous forme de constante hexadcimale) : p. ex. 16#127

Exploitation :
Comme rsultat de la fonction (type WORD) : format DCB
Comme paramtre de sortie CV (type WORD) : binaire

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

13-5

Compteurs et temporisation

13.1.5 Compteur incrmental (S_CU)


Le compteur incrmental (S_CU) vous permet uniquement d'excuter des oprations de
comptage incrmental. Le tableau suivant indique comment le compteur fonctionne.
Opration

Fonctionnement

Incrmenter

La valeur du compteur est augmente de 1 lorsque l'tat logique de l'entre


CU passe de "0" "1" et si la valeur de comptage est infrieure 999.

Initialiser le compteur

Lorsque l'tat logique de l'entre S passe de "0" "1", le compteur est


initialis avec la valeur de l'entre PV. Un tel changement d'tat logique est
toujours requis pour initialiser un compteur.

Mettre le compteur 0

Le compteur est mis 0 lorsque l'entre R = 1. A la mise 0 du compteur,


la valeur de comptage prend la valeur 0.

Interroger le compteur

L'interrogation de l'tat logique de la sortie Q fournit la valeur "1" si la valeur


de comptage est suprieure 0. Elle fournit la valeur "0" si la valeur de
comptage est gale 0.

13.1.6 Compteur dcrmental (S_CD)


Le compteur dcrmental (S_CD) vous permet uniquement d'excuter des oprations de
comptage dcrmental. Le tableau suivant indique comment le compteur fonctionne :
Opration

Fonctionnement

Dcrmenter

La valeur du compteur est diminue de 1 lorsque l'tat logique de l'entre CD


passe de "0" "1" (front montant) et si la valeur de comptage est suprieure
0.

Initialiser le compteur

Lorsque l'tat logique de l'entre S passe de "0" "1", le compteur est


initialis avec la valeur de l'entre PV. Un tel changement d'tat logique est
toujours requis pour initialiser un compteur.

Mettre le compteur 0 Le compteur est mis 0 lorsque l'entre R = 1. A la mise 0 du compteur, la


valeur de comptage prend la valeur 0.
Interroger le compteur L'interrogation de l'tat logique de la sortie Q fournit la valeur "1" si la valeur
de comptage est suprieure 0. Il fournit la valeur "0" si la valeur de
comptage est gale 0.

13-6

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Compteurs et temporisation

13.1.7 Compteur incrmental/dcrmental (S_CUD)


Le compteur incrmental et dcrmental (S_CUD) vous permet d'excuter des oprations de
comptage aussi bien incrmental que dcrmental. Lorsque leurs impulsions sont
simultanes, les deux oprations sont traites. La valeur de comptage ne change pas. Le
tableau suivant indique comment le compteur fonctionne.
Opration

Fonctionnement

Incrmenter

La valeur du compteur est augmente de 1 lorsque l'tat logique de


l'entre CU passe de "0" "1" et si la valeur de comptage est infrieure
999.

Dcrmenter

La valeur du compteur est diminue de 1 lorsque l'tat logique de l'entre


CD passe de "0" "1" et si la valeur de comptage est suprieure 0.

Initialiser le compteur

Lorsque l'tat logique de l'entre S passe de "0" "1", le compteur est


initialis avec la valeur de l'entre PV. Un tel changement d'tat logique
est toujours requis pour initialiser un compteur.

Mettre le compteur 0

Le compteur est mis 0 lorsque l'entre R = 1. A la mise 0 du


compteur, la valeur de comptage prend la valeur 0.

Interroger le compteur

L'interrogation de l'tat logique de la sortie Q fournit la valeur 1 si la


valeur de comptage est suprieure 0. Il fournit la valeur 0 si la valeur de
comptage est gale 0.

13.1.8 Exemple de fonction de comptage

Dfinition des paramtres


Le tableau montre la dfinition des paramtres de la fonction S_CD prise pour exemple.
Paramtre

Description

C_NO

MONCOMPTEUR

CD

ENTREE E0.0

INITIALISER

PV

VALEUR INITIALE 16#0089

METTRE_0

A0.7

CV

VAL_BIN

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

13-7

Compteurs et temporisation

Exemple
FUNCTION_BLOCK COMPTEUR
VAR_INPUT
MONCOMPTEUR : COUNTER ;
END_VAR
VAR_OUTPUT
RESULTAT
: INT ;
END_VAR
VAR
INITIALISER : BOOL ;
METTRE_0
: BOOL ;
VAL_DCB
: WORD ;
// Etat du compteur cod DCB
VAL_BIN
: WORD ;
// Etat du compteur binaire
VAL_INITIALE : WORD ;
END_VAR
BEGIN
A0.0
:= 1 ;
INITIALISER
:= E0.2 ;
METTRE_0 := E0.3 ;
VAL_INITIALE
:= 16#0089 ;
//Dcrmenter
VAL_DCB := S_CD (C_NO := MONCOMPTEUR,
CD:= E0.0 ,
S := INITIALISER ,
PV:= VAL_INITIALE,
R := METTRE_0 ,
CV:= VAL_BIN ,
Q := A0.7) ;
//Traitement ultrieur en tant que paramtre de sortie
RESULTAT := WORD_TO_INT (VAL_BIN) ;
AW4
:= VAL_DCB ;
END_FUNCTION_BLOCK

13-8

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Compteurs et temporisation

13.2

Temporisations

13.2.1 Fonctions de temporisation


Les temporisations sont des lments fonctionnels de votre programme vous permettant
d'excuter et de contrler des squences dclenches par horloge. STEP 7 propose
diverses fonctions standard de temporisation que vous pouvez utiliser avec S7-SCL.

13.2.2

Fonction de temporisation

Signification

S_PULSE

Dmarrer une temporisation sous forme d'impulsion

S_PEXT

Dmarrer une temporisation sous forme d'impulsion prolonge

S_ODT

Dmarrer une temporisation sous forme de retard la monte

S_ODTS

Dmarrer une temporisation sous forme de retard la monte


mmoris

S_OFFDT

Dmarrer une temporisation sous forme de retard la retombe

Appel d'une fonction de temporisation


Les fonctions de temporisation sont appeles comme des fonctions. La dsignation d'une
fonction peut remplacer un oprande dans une expression, condition que le rsultat de la
fonction soit d'un type compatible avec celui de l'oprande remplac.
La valeur de la fonction (valeur de retour), fournie la position appelante, est une dure du
type de donnes S5TIME.

Appel absolu ou dynamique


Vous pouvez entrer dans l'appel une valeur absolue de type TIMER comme numro de la
temporisation (par ex. T_NO:=T10). Mais il faut savoir qu'une telle valeur n'est plus
modifiable l'excution.
A la place du numro absolu, vous pouvez aussi indiquer une variable ou une constante de
type de donnes INT. Ceci a l'avantage de permettre un appel dynamique de la fonction, si
vous affectez un autre numro la variable ou la constante chaque appel.
Une autre possibilit pour l'appel dynamique est l'indication d'une variable du type de
donnes TIMER.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

13-9

Compteurs et temporisation

Exemples
//Exemple d'appel absolu :
CurrTime:=S_ODT (T_NO:=T10,
S:=TRUE,
TV:=T#1s,
R:=FALSE,
BI:=biVal,
Q:=actFlag);
//Exemple d'appel dynamique : une autre temporisation est appele
// chaque parcours d'une boucle FOR :
FUNCTION_BLOCK TEMPO
VAR_INPUT
MA_TEMPO: ARRAY [1..4] of STRUCT
T_NO: INT;
TV : WORD;
END_STRUCT;
.
.
END_VAR
.
.
FOR I:= 1 TO 4 DO
CurrTime:= S_ODT(T_NO:=MA_TEMPO[I].T_NO, S:=true, TV:=
MA_TEMPO[I].TV);
END_FOR;
//Exemple d'appel dynamique grce l'emploi d'une variable
//du type de donnes TIMER :
FUNCTION_BLOCK TEMPORISATION
VAR_INPUT
maTempo:TIMER;
END_VAR
.
.
Tempo_cour:=S_ODT (T_NO:=maTempo,.....);

Nota
Les noms des fonctions sont les mmes dans les jeux d'abrviations allemand et anglais.

13-10

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Compteurs et temporisation

13.2.3

Dfinition des paramtres d'une fonction de temporisation


Le tableau suivant indique les paramtres pour une fonction de temporisation.
Paramtre

Type de donnes

Description

T_NO

TIMER
INTEGER

Numro d'identification de la temporisation ; la plage dpend de


la CPU.

BOOL

Entre de dmarrage

TV

S5TIME

Valeur par dfaut de la dure (format DCB)

BOOL

Entre de remise 0

BOOL

Etat de la temporisation

BI

WORD

Dure restante (binaire)

RET_VAL

S5TIME

Valeur de la temporisation

Rgles
Les valeurs des paramtres tant enregistres globalement, leur indication est facultative
dans certains cas. Tenez compte des rgles gnrales suivantes pour la dfinition des
paramtres.
A l'appel, il faut affecter une valeur au paramtre T_NO qui dsigne la temporisation. Au
lieu du numro absolu de la temporisation (ex. T10), vous pouvez aussi indiquer une
variable du type de donnes INT ou un paramtre d'entre du type TIMER.
L'indication du couple de paramtres TV (valeur par dfaut) et S (dmarrer) est
facultative.
La valeur de rsultat en format S5TIME est toujours la valeur de la fonction.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

13-11

Compteurs et temporisation

Exemple
FUNCTION_BLOCK FB2
VAR
Duree_cour
: S5time;
Val_bin
: word;
Drapeau_act : bool;
END_VAR
BEGIN
Duree_cour :=S_ODT
(T_NO:= T10, S:=TRUE, TV:=T#1s, R:=FALSE,
BI:=Val_bin,Q:=Drapeau_act);
Duree_cour :=S_ODTS (T_NO:= T11, S:=M0.0, TV:= T#1s, R:=M0.1,
BI:=Val_bin,Q:=Drapeau_act);
Duree_cour :=S_OFFDT(T_NO:= T12, S:=E0.1 & Drapeau_act, TV:= T#1s,
R:=FALSE,
BI:=Val_bin,Q:=Drapeau_act);
Duree_cour :=S_PEXT (T_NO:= T13, S:=TRUE, TV:= T#1s, R:=E0.0,
BI:=Val_bin,Q:=Drapeau_act);
Duree_cour :=S_PULSE(T_NO:= T14, S:=TRUE, TV:= T#1s, R:=FALSE,
BI:=Val_bin,Q:=Drapeau_act);
END_FUNCTION_BLOCK

13-12

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Compteurs et temporisation

13.2.4 Saisie et exploitation de la valeur de temps


Pour saisir la valeur par dfaut ou exploiter le rsultat de la fonction en code DCB, vous
avez besoin de la reprsentation interne de la valeur de temps. Il s'agit du type de donnes
WORD, les bits 0 11 indiquant la valeur de temps en format DCB, les bits 12 et 13 la base
de temps. Les bits 14 et 15 ne sont pas utiliss.
La mise jour de la temporisation diminue la valeur de temps d'une unit par intervalle,
celui-ci ayant t dtermin partir de la base de temps. La valeur de temps est diminue
jusqu' ce qu'elle soit gale 0. La plage de valeurs de la temporisation est comprise entre
0 et 9990 secondes.

Format
La figure suivante donne la reprsentation de la valeur de temps en bits :
15...

...8

X I X I 1 I 0

0 I 0 I 0 I 1

Base de temps
1 seconde

7...

...0

0 I 0 I 1 I 0

0 I 1 I 1 I 1

Valeur de temps dans le format DCB (0 999)

Ces bits sont insignifiants l'appel de la temporisation

Saisie
Vous pouvez charger une valeur de temps prdfinie dans les formats suivants :
En reprsentation par niveaux
En reprsentation dcimale
Dans les deux cas, la base de temps est adapte automatiquement et la valeur est arrondie
au nombre infrieur le plus proche avec cette base de temps.

Exploitation
Vous pouvez exploiter le rsultat dans deux formats diffrents :
Comme rsultat de la fonction (type S5TIME) en format DCB
Comme paramtre de sortie (valeur de temps sans base de temps du type WORD) en
binaire

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

13-13

Compteurs et temporisation

Base de temps des valeurs de temps


Vous avez besoin de la base de temps (bits 12 et 13 du mot de temporisation) pour saisir et
exploiter la valeur de temps. Elle dtermine l'intervalle selon lequel la valeur de temps est
diminue d'une unit (voir le tableau suivant). La plus petite base de temps est de 10 ms, la
plus grande de 10 s.
Base de temps

Code binaire

10 ms

00

100 ms

01

1s

10

10 s

11

Nota
Les valeurs de temps n'tant enregistres qu' l'intervalle de temps donn, celles qui ne
sont pas un multiple exact de cet intervalle sont tronques. Celles dont la rsolution est trop
grande pour la plage souhaite sont arrondies, de sorte que la plage souhaite est obtenue,
mais pas la rsolution souhaite.

13-14

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Compteurs et temporisation

13.2.5 Dmarrer une temporisation sous forme d'impulsion (S_PULSE)


La dure maximale pendant laquelle le signal de sortie reste "1" correspond la valeur de
temps programme. Si l'entre prend l'tat logique "0" durant l'excution de la temporisation,
celle-ci est mise "0". Ceci reprsente un arrt prmatur de l'excution.

Signal d'entre

E 2.1

Signal de sortie
A 4.0 S_PULSE
(temporisation sous forme
d'impulsion)

Fonctionnement
Le tableau suivant explique comment procde la fonction "Dmarrer une temporisation sous
forme d'impulsion".
Opration

Fonctionnement

Dmarrer la
temporisation

L'opration "Dmarrer une temporisation sous forme d'impulsion" dmarre la


temporisation indique lorsque l'tat logique de l'entre de dmarrage (S) passe
de "0" "1". Un changement d'tat logique est toujours requis pour valider la
temporisation.

Fixer la dure
d'excution

La temporisation continue courir avec la valeur indique l'entre TV, jusqu'


ce que la dure programme soit coule et tant que l'entre S = 1.

Arrter la
temporisation avant
la fin

Si l'entre S passe de "1" "0" avant que la valeur de temps ne soit coule, la
temporisation est arrte.

Remettre la
temporisation 0

La temporisation est remise 0 lorsque l'entre de remise zro (R) passe de


"0" "1" pendant que la temporisation court. La valeur de temps et la base de
temps sont alors galement remises zro. L'tat logique "1" de l'entre R n'a
aucun effet lorsque la temporisation ne court pas.

Interroger l'tat
logique

Tant que la temporisation court, l'interrogation "1" de la sortie Q fournit le


rsultat "1". Si l'excution a t arrte avant la fin, l'interrogation de la sortie Q
fournit le rsultat "0".

Interroger la valeur
de temps actuelle

Vous pouvez interroger la valeur de temps actuelle la sortie BI l'aide de la


valeur de la fonction S_PULSE.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

13-15

Compteurs et temporisation

13.2.6

Dmarrer une temporisation sous forme d'impulsion prolonge


(S_PEXT)
Le signal de sortie reste "1" durant le temps (t) programm, quel que soit le temps pendant
lequel le signal d'entre reste "1". Si l'impulsion de dmarrage est nouveau dclenche,
la valeur de temps s'coule de nouveau, de sorte que l'impulsion de sortie est prolonge
dans le temps (redmarrage).

Signal d'entre

E 2.1

Signal de sortie
A 4.0 S_PEXT
(temporisation sous forme
d'impulsion prolonge)

Fonctionnement
Le tableau suivant explique comment procde la fonction "Dmarrer une temporisation sous
forme d'impulsion prolonge".
Opration

Fonctionnement

Dmarrer la temporisation

L'opration "Dmarrer une temporisation sous forme d'impulsion prolonge"


dmarre la temporisation indique lorsque l'tat logique de l'entre de dmarrage
(S) passe de "0" "1". Un changement d'tat logique est toujours requis pour
valider la temporisation.

Redmarrer la dure
d'excution

Si l'tat logique de l'entre S passe nouveau "1" durant l'excution, la


temporisation est redmarre avec la valeur de temps indique.

Fixer la dure d'excution

La temporisation continue courir avec la valeur indique l'entre TV jusqu' ce


que la dure programme soit coule.

Remettre la temporisation
0

La temporisation est remise 0 lorsque l'entre de remise zro (R) passe de "0"
"1" pendant que la temporisation court. La valeur de temps et la base de temps
sont alors galement remises zro. L'tat logique "1" de l'entre R n'a aucun effet
lorsque la temporisation ne court pas.

Interroger l'tat logique

Tant que la temporisation court, l'interrogation "1" de la sortie Q fournit le rsultat


"1", quelle que soit la longueur du signal d'entre.

Interroger la valeur de
temps actuelle

Vous pouvez interroger la valeur de temps actuelle la sortie BI l'aide de la


valeur de la fonction S_PEXT.

13-16

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Compteurs et temporisation

13.2.7 Dmarrer une temporisation sous forme de retard la monte (S_ODT)


Le signal de sortie ne passe de "0" "1" que lorsque la temporisation programme s'est
coule et que le signal d'entre est toujours "1". Ceci signifie que la sortie est active avec
un retard. Les signaux d'entre dont la dure est plus courte que celle de la temporisation
programme n'apparaissent pas la sortie.

Signal d'entre

E 2.1

A 4.0
Signal de sortie
(temporisation sous forme
de retard la monte)

S_ODT
t

Fonctionnement
Le tableau suivant explique comment procde la fonction "Dmarrer une temporisation sous
forme de retard la monte".
Opration

Fonctionnement

Dmarrer la
temporisation

L'opration "Dmarrer une temporisation sous forme de retard la monte" dmarre


la temporisation indique lorsque l'tat logique de l'entre de dmarrage (S) passe de
"0" "1". Un changement d'tat logique est toujours requis pour valider la
temporisation.

Arrter la temporisation

Si l'tat logique de l'entre S passe de "1" "0" pendant que la temporisation court,
celle-ci est arrte.

Fixer la dure
d'excution

La temporisation continue de courir avec la valeur indique l'entre TV tant que


l'tat logique de l'entre S = 1.

Remettre la
temporisation "0"

La temporisation est remise 0 lorsque l'entre de remise zro (R) passe de "0"
"1" pendant que la temporisation court. La valeur de temps et la base de temps sont
alors galement remises zro. La temporisation est aussi remise zro lorsque R =
1 pendant qu'elle ne court pas.

Interroger l'tat logique

Une interrogation "1" de la sortie Q fournit le rsultat "1" lorsque la temporisation


s'est coule correctement et que l'entre S est toujours "1".
Si la temporisation a t arrte, l'interrogation "1" donne toujours "0".
Une interrogation "1" de la sortie Q fournit galement le rsultat "0" lorsque la
temporisation ne court pas et que l'tat logique de l'entre S est toujours "1".

Interroger la valeur de
temps actuelle

Vous pouvez interroger la valeur de temps actuelle la sortie BI l'aide de la valeur


de la fonction S_ODT.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

13-17

Compteurs et temporisation

13.2.8 Dmarrer une temporisation sous forme de retard la monte


mmoris (S_ODTS)
Le signal de sortie ne passe de "0" "1" que lorsque la temporisation programme s'est
coule, quel que soit le temps pendant lequel le signal d'entre reste "1".

Signal d'entre

E 2.1

A 4.0 S_ODTS
Signal de sortie
(temporisation sous forme de
retard la monte mmoris)

Fonctionnement
Le tableau suivant explique comment procde la fonction "Dmarrer une temporisation sous
forme de retard la monte mmoris".
Opration

Fonctionnement

Dmarrer la temporisation

L'opration "Dmarrer une temporisation sous forme de retard la monte


mmoris" dmarre la temporisation indique lorsque l'tat logique de l'entre de
dmarrage (S) passe de "0" "1". Un changement d'tat logique est toujours requis
pour valider la temporisation.

Redmarrer la
temporisation

La temporisation est redmarre avec la valeur indique lorsque l'entre S passe


de "0" "1" pendant que la temporisation court.

Fixer la dure d'excution

La temporisation continue de courir avec la valeur indique l'entre TV, mme


lorsque l'tat logique de l'entre S passe "0" avant que la temporisation ne soit
coule.

Remettre la temporisation
"0"

La temporisation est remise 0 lorsque l'entre de remise zro (R) passe de "0"
"1", quel que soit l'tat logique de l'entre S.

Interroger l'tat logique

Une interrogation "1" de la sortie Q fournit le rsultat "1" lorsque la temporisation


s'est coule, quel que soit l'tat logique de l'entre S.

Interroger la valeur de
temps actuelle

Vous pouvez interroger la valeur de temps actuelle la sortie BI l'aide de la


valeur de la fonction S_ODTS.

13-18

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Compteurs et temporisation

13.2.9 Dmarrer une temporisation sous forme de retard la retombe


(S_OFFDT)
Lorsque l'tat logique de l'entre S passe de "0" "1", la sortie Q prend l'tat logique "1".
Lorsque l'tat logique de l'entre de dmarrage passe de "1" "0", la temporisation est
dmarre. Ce n'est qu'une fois la dure coule que la sortie prend l'tat logique "0". La
sortie est donc dsactive avec un retard.

Signal d'entre

E 2.1

A 4.0
Signal de sortie
(temporisation sous forme
de retard la retombe)

S_OFFDT
t

Fonctionnement
Le tableau suivant explique comment procde la fonction "Dmarrer une temporisation sous
forme de retard la retombe".
Opration

Fonctionnement

Dmarrer la temporisation

L'opration "Dmarrer une temporisation sous forme de retard la retombe"


dmarre la temporisation indique lorsque l'tat logique de l'entre de dmarrage
(S) passe de "1" "0". Un changement d'tat logique est toujours requis pour
valider la temporisation.

Redmarrer la
temporisation

La temporisation est redmarre lorsque l'tat logique de l'entre S passe


nouveau de "1" "0" (par exemple aprs la remise 0).

Fixer la dure d'excution

La temporisation court avec la valeur indique l'entre TV.

Remettre la temporisation
0

La temporisation est remise 0 lorsque l'entre de remise zro (R) passe de "0"
"1" pendant que la temporisation court.

Interroger l'tat logique

Une interrogation "1" de la sortie Q fournit le rsultat "1" lorsque l'tat logique de
l'entre S = 1 ou lorsque la temporisation court.

Interroger la valeur de
temps actuelle

Vous pouvez interroger la valeur de temps actuelle la sortie BI l'aide de la


valeur de la fonction S_OFFDT.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

13-19

Compteurs et temporisation

13.2.10 Exemple de fonction de temporisation


FUNCTION_BLOCK TEMPORISATION
VAR_INPUT
maTempo
: TIMER ;
END_VAR
VAR_OUTPUT
resultat
: S5TIME ;
END_VAR
VAR
initialiser
: BOOL ;
remettre_zero
: BOOL ;
val_dcb
: S5TIME ;//Base de temps et valeur restante
//codes DCB
val_bin
: WORD ; //Valeur de temps binaire
val_defaut
: S5TIME ;
END_VAR
BEGIN
A0.0
:= 1;
initialiser
:= E0.0 ;
remettre_zero
:= E0.1;
val_defaut
:= T#25S ;
val_dcb
:= S_PEXT (T_NO := maTempo ,
S
:= initialiser ,
TV := val_defaut ,
R
:= remettre_zero ,
BI := val_bin ,
Q
:= A0.7) ;
//Traitement ultrieur en tant que paramtre de sortie
resultat := valeur_dcb ;
//A la sortie pour affichage
AW4 := val_bin ;
END_FUNCTION_BLOCK

13-20

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Compteurs et temporisation

13.2.11 Choix de la temporisation approprie


La figure suivante prsente les cinq temporisations qui ont t dcrites dans ce chapitre
pour vous aider choisir celle qui correspond vos besoins.

Signal d'entre

E 2.1

Signal de sortie
(temporisation
sous forme
d'impulsion)

A 4.0 S_PULSE

Signal de sortie
(temporisation sous
forme d'impulsion
prolonge)

A 4.0 S_PEXT

t
Le temps maximal durant lequel le signal de sortie reste
1 est gal la valeur de temps t programme. Il reste
1 pour une dure plus courte, si le signal d'entre passe
0 .

t
Le signal de sortie reste 1 pendant la dure programme,
quelle que soit la dure pendant laquelle le signal d'entre
reste 1 . L'impulsion est nouveau lance lorsque le
signal de dclenchement est activ durant la priode t .

Signal de sortie
A 4.0
(impulsion sous forme
de retard la monte

S_ODT
t
Le signal de sortie ne passe de 0 1 que lorsque le
temps programm s'est coul et si le signal d'entre est
toujours 1 .

Signal de sortie
(temporisation sous
forme de retard la
monte mmoris)

A 4.0 S_ODTS

Signal de sortie
(temporisation sous
forme de retard la
retombe)

A 4.0 S_OFFDT

t
Le signal de sortie ne passe de 0 1
temps programm s'est coul, quelle que soit la dure
pendant laquelle le signal d'entre reste 1

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

t
Le signal de sortie ne passe de 0 1 que lorsque le
signal d'entre passe de 0 1 . Il reste 1 pendant
le temps programm. Le temps est dmarr lorsque le signal
d'entre passe de 1 0 .

13-21

Compteurs et temporisation

13-22

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

14

Fonctions standard de S7-SCL

14.1

Conversion de types de donnes

14.1.1 Conversion de types de donnes


Lorsque vous combinez deux oprandes dans une opration, vous devez vous assurer de la
compatibilit de leurs types de donnes. S'ils ne sont pas du mme type, il faut effectuer une
conversion. S7-SCL connat plusieurs sortes de conversion du type de donnes.
Conversion automatique du type de donnes
Les types de donnes sont rpartis en classes. S7-SCL effectue une conversion
automatique au sein de ces classes. Les fonctions que le compilateur utilise cet effet
sont regroupes en "Fonctions de conversion de classe A".
Conversion explicite du type de donnes
Quand les oprandes ne font pas partie de la mme classe, c'est vous d'appeler une
fonction de conversion. Pour cette conversion explicite du type de donnes, S7-SCL met
votre disposition de nombreuses fonctions standard que l'on peut rpartir dans les
classes suivantes :
-

Fonctions de conversion de classe B

Fonctions d'arrondi et de troncature.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

14-1

Fonctions standard de S7-SCL

14.1.2 Conversion automatique du type de donnes


Au sein des classes dfinies dans le tableau suivant, le compilateur effectue une conversion
automatique des types de donnes conformment l'ordre indiqu. Le type commun de
deux oprandes est toujours le plus grand des deux types de donnes. Ainsi, INTEGER est
le type commun de BYTE et WORD - WORD, par exemple.
Sachez que la conversion d'un type de donnes dans la classe ANY_BIT met 0 les bits
gauche.
Classes

Ordre de conversion

ANY_BIT

BOOL > BYTE > WORD > DWORD

ANY_NUM

INT > DINT > REAL

Exemple de conversion automatique de types de donnes


VAR
REGULATEUR_PID_1 : BYTE ;
REGULATEUR_PID_2 : WORD ;
END_VAR
BEGIN
IF (REGULATEUR_PID_1 <> REGULATEUR_PID_2) THEN ...
(* Dans l'instruction IF ci-dessus, REGULATEUR_PID_1 est converti
automatiquement de BYTE en WORD. *)

14.1.2.1 Fonctions de conversion de classe A


Le tableau suivant numre les fonctions de conversion du type de donnes appartenant
la classe A. Quoique le compilateur les lance automatiquement, vous pouvez aussi les
indiquer de manire explicite. Leur rsultat est toujours dfini.

14-2

Nom de la fonction

Rgle de conversion

BOOL_TO_BYTE

Complment par des zros gauche

BOOL_TO_DWORD

Complment par des zros gauche

BOOL_TO_WORD

Complment par des zros gauche

BYTE_TO_DWORD

Complment par des zros gauche

BYTE_TO_WORD

Complment par des zros gauche

CHAR_TO_STRING

Transformation en chane (de longueur 1) contenant le mme caractre.

DINT_TO_REAL

Transformation en REAL conformment la norme IEEE ; la valeur peut


tre modifie en raison de l'autre prcision pour REAL.

INT_TO_DINT

Pour un paramtre d'entre ngatif, le mot de poids fort de la valeur de la


fonction est complt par 16#FFFF, dans tous les autres cas par des zros ;
la valeur reste la mme.

INT_TO_REAL

Transformation en REAL conformment la norme IEEE ; la valeur reste la


mme.

WORD_TO_DWORD

Complment par des zros gauche

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Fonctions standard de S7-SCL

14.1.3 Fonctions standard pour la conversion explicite du type de donnes


Vous trouverez la description gnrale d'un appel de fonction dans la rubrique "Appel d'une
fonction".
Particularits dont vous devez tenir compte pour l'appel d'une fonction de conversion :
Paramtre d'entre
Toute fonction de conversion d'un type de donnes possde un paramtre d'entre et un
seul, appel IN. Puisqu'il s'agit d'un paramtre unique, il n'est pas ncessaire de
l'indiquer.
Valeur de la fonction
Le rsultat est toujours la valeur de la fonction.
Nom de la fonction
Les types de donnes du paramtre d'entre et de la valeur de la fonction rsultant du
nom de la fonction, ils ne sont pas mentionns dans la liste des fonctions de classe A ou
B. Dans le cas de la fonction BOOL_TO_BYTE, par exemple, le type du paramtre
d'entre est BOOL, celui de la valeur de la fonction tant BYTE.

14.1.3.1 Fonctions de conversion de classe B


Le tableau suivant numre les fonctions de conversion du type de donnes appartenant
la classe B. Vous devez les spcifier explicitement. Leur rsultat peut tre indfini si la taille
du type de donnes cible est insuffisante.
Vous pouvez soit contrler vous-mme cette ventualit en plaant une vrification de
limites en amont, soit demander au systme de le faire en slectionnant l'option "Activer
drapeau OK" avant d'effectuer la compilation. Dans les cas o le rsultat est indfini, le
systme affecte la valeur FALSE au drapeau OK.
Nom de la fonction

Rgle de conversion

OK

BOOL_TO_INT

WORD_TO_INT(BOOL_TO_WORD(x))

BOOL_TO_DINT

DWORD_TO_DINT(BOOL_TO_DWORD(x))

BYTE_TO_BOOL

Copie du bit de poids faible

BYTE_TO_CHAR

Prise en charge de la chane binaire

BYTE_TO_INT

WORD_TO_INT(BYTE_TO_WORD(x))

BYTE_TO_DINT

DWORD_TO_DINT(BYTE_TO_DWORD(x))

CHAR_TO_BYTE

Prise en charge de la chane binaire

CHAR_TO_INT

La chane binaire du paramtre d'entre est inscrite dans l'octet de poids N


faible de la valeur de la fonction ; l'octet de poids fort est complt par
des zros.

DATE_TO_DINT

Prise en charge de la chane binaire

DINT_TO_DATE

Prise en charge de la chane binaire

DINT_TO_DWORD

Prise en charge de la chane binaire

DINT_TO_INT

Copie du bit de signe ; la valeur contenue dans le paramtre d'entre est O


interprte dans le type de donnes INT ; si elle est infrieure - 32_768
ou suprieure 32_767, la variable OK prend la valeur FALSE.

DINT_TO_TIME

Prise en charge de la chane binaire

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

14-3

Fonctions standard de S7-SCL

Nom de la fonction

Rgle de conversion

OK

DINT_TO_TOD

Prise en charge de la chane binaire

DINT_TO_BOOL

DWORD_TO_BOOL(DINT_TO_DWORD(x))

DINT_TO_BYTE

DWORD_TO_BYTE(DINT_TO_DWORD(x))

DINT_TO_STRING

DI_STRNG

DINT_TO_WORD

DWORD_TO_WORD(DINT_TO_DWORD(x))

DWORD_TO_BOOL

Copie du bit de poids faible

DWORD_TO_BYTE

Copie des 8 bits de poids faible

DWORD_TO_DINT

Prise en charge de la chane binaire

DWORD_TO_REAL

Prise en charge de la chane binaire

DWORD_TO_WORD

Copie des 16 bits de poids faible

DWORD_TO_INT

DINT_TO_INT (DWORD_TO_ DINT(x))

INT_TO_CHAR

Prise en charge de la chane binaire

INT_TO_WORD

Prise en charge de la chane binaire

INT_TO_BOOL

WORD_TO_BOOL(INT_TO_WORD(x))

INT_TO_BYTE

WORD_TO_BYTE(INT_TO_WORD(x))

INT_TO_DWORD

WORD_TO_DWORD(INT_TO_WORD(x))

INT_TO_STRING

I_STRNG(x)

REAL_TO_DINT

Arrondi de la valeur REAL IEEE DINT ; si la valeur est infrieure 2_147_483_648 ou suprieure 2_147_483_647, la variable OK prend
la valeur FALSE.

REAL_TO_DWORD

Prise en charge de la chane binaire

REAL_TO_INT

Arrondi de la valeur REAL IEEE INT ; si la valeur est infrieure 32_768 ou suprieure 32_767, la variable OK prend la valeur FALSE.

REAL_TO_STRING

R_STRNG(x)

STRING_TO_CHAR

Copie du premier caractre de la chane ; si la longueur de STRING est


diffrente de 1, la variable OK prend la valeur FALSE.

STRING_TO_INT

STRNG_I(x)

STRING_TO_DINT

STRNG_DI(x)

STRING_TO_REAL

STRNG_R(x)

TIME_TO_DINT

Prise en charge de la chane binaire

TOD_TO_DINT

Prise en charge de la chane binaire

WORD_TO_BOOL

Copie du bit de poids faible

WORD_TO_BYTE

Copie des 8 bits de poids faible

WORD_TO_INT

Prise en charge de la chane binaire

WORD_TO_DINT

INT_TO_DINT(WORD_TO_INT(x))

WORD_TO_BLOCK_DB

La configuration binaire de WORD est interprte comme numro de


bloc de donnes.

BLOCK_DB_TO_WORD

Le numro de bloc de donnes est interprt comme configuration


binaire de WORD.

BCD_TO_INT(x)

L'expression x a le type WORD et est interprte comme valeur code


BCD entre -999 et +999. Aprs la conversion, le rsultat se prsente
sous forme de nombre entier (reprsentation binaire) de type INT.

WORD_BCD_TO_INT(x)

Si une erreur survient lors de la conversion, le systme d'automatisation


se met en STOP. Une exploitation de la cause de l'arrt est possible
dans l'OB121.

14-4

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Fonctions standard de S7-SCL

Nom de la fonction

Rgle de conversion

OK

INT_TO_BCD(x)

L'expression x a le type INT et est interprte comme nombre entier


avec une valeur comprise entre -999 et +999. Aprs la conversion, le
rsultat se prsente sous forme de nombre cod BCD de type WORD.

INT_TO_BCD_WORD(x)

En dehors de la plage de valeurs, le rsultat est indfini. Lorsque l'option


"Mettre le drapeau OK 1" est active, la valeur false est affecte au
drapeau OK.
BCD_TO_DINT(x)
DWORD_BCD_TO_DINT(x)

L'expression x a le type DWORD et est interprte comme valeur code


BCD comprise entre -9999999 et +9999999. Aprs la conversion, le
rsultat se prsente sous forme de nombre entier (reprsentation
binaire) de type DINT

Si une erreur se produit lors de la conversion, le systme


d'automatisation se met en STOP. Une exploitation de la cause de l'arrt
est possible dans l'OB121.
DINT_TO_BCD(x)
DINT_TO_BCD_DWORD(x)

L'expression x a le type DINT et est interprte comme nombre entier


avec une valeur comprise entre 9999999 et +9999999. Aprs la
conversion, le rsultat se prsente sous forme de nombre cod BCD de
type DWORD
En dehors de la plage de valeurs, le rsultat est indfini. Lorsque l'option
"Mettre le drapeau OK 1" est active, la valeur false est affecte au
drapeau OK.

Attention
Si une constante est convertie dun type de donnes dun niveau lev en un type de
donnes moins lev, un message derreur saffichera la compilation si la constante se
trouve en dehors de la plage du type de donnes de niveau bas
Exemples :
M0.0 :=WORD_TO_BOOL(W#16#FFFF);
MW0 :=DINT_TO_INT(35000);

Nota
Vous avez en outre la possibilit d'utiliser d'autres fonctions CEI pour effectuer la conversion des types
de donnes. Vous trouverez des informations dtailles sur chacune de ces fonctions dans le manuel
de rfrence STEP 7 "Fonctions standard et fonctions systme pour S7-300/400".

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

14-5

Fonctions standard de S7-SCL

14.1.3.2 Fonctions d'arrondi et de troncature


Les fonctions d'arrondi et de troncature de nombres font galement partie de la conversion
du type de donnes. Le tableau suivant indique le nom, le type de donnes (du paramtre
d'entre et de la valeur de la fonction) et la tche de ces fonctions.
Nom de la
fonction

Type du paramtre
d'entre

Type de la valeur de Tche


la fonction

ROUND

REAL

DINT

Arrondir (former un nombre DINT)


Conformment la norme DIN EN 61131-3,
l'arrondi se fait toujours l'entier pair le plus
proche, c'est--dire que 1.5 est arrondi 2 et
2.5 galement 2.

TRUNC

REAL

DINT

Tronquer (former un nombre DINT)

Nota
Vous avez en outre la possibilit d'utiliser d'autres fonctions CEI pour effectuer la conversion
du type de donnes. Vous trouverez des informations dtailles sur chacune de ces
fonctions dans le manuel de rfrence STEP 7 "Fonctions standard et fonctions systme
pour S7-300/400".

Exemple
// Arrondi la valeur infrieure (rsultat : 3)
ROUND (3.14) ;
// Arrondi la valeur suprieure (rsultat : 4)
ROUND (3.56) ;
// Troncature (rsultat : 3)
TRUNC (3.14) ;
// Troncature (rsultat : 3)
TRUNC (3.56) ;

14-6

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Fonctions standard de S7-SCL

14.1.3.3 Exemples de conversion avec des fonctions standard


Dans l'exemple suivant, une conversion explicite s'avre indispensable, car le type de
donnes cible est moins puissant que le type de donnes source.
FUNCTION_BLOCK FB10
VAR
COMMUTATEUR : INT;
REGULATEUR : DINT;
END_VAR
(* INT est moins puissant que DINT *)
COMMUTATEUR := DINT_TO_INT (REGULATEUR) ;
// . . .
END_FUNCTION_BLOCK

Dans l'exemple suivant, une conversion explicite est ncessaire, car le type de donnes
REAL n'est pas autoris dans une expression arithmtique comportant l'opration MOD.
FUNCTION_BLOCK FB20
VAR
COMMUTATEUR : REAL
VAL_ENT
: INT := 17;
CONV2
: INT ;
END_VAR
(* L'utilisation de MOD n'est autorise qu'avec des donnes de type
INT ou DINT *)
CONV2 := VAL_ENT MOD REAL_TO_INT (COMMUTATEUR);
// . . .
END_FUNCTION_BLOCK
Dans l'exemple suivant, la conversion est indispensable car le type de donnes n'est pas
autoris pour une opration logique. NOT ne peut tre applique qu' des donnes de type
BOOL, BYTE, WORD ou DWORD.
FUNCTION_BLOCK FB30
VAR
VAL_ENT
: INT := 17;
CONV1
: WORD ;
END_VAR
(* L'utilisation de NOT n'est pas autorise avec des donnes de type
INT *)
CONV1 := NOT INT_TO_WORD(VAL_ENT);
// . . .
END_FUNCTION_BLOCK

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

14-7

Fonctions standard de S7-SCL

L'exemple suivant montre la conversion de valeurs d'entre et de sortie de la priphrie :


FUNCTION_BLOCK FB40
VAR
Rayon_ent
: WORD ;
Rayon
: INT;
END_VAR
Rayon_ent
:= %EB0;
Rayon
:= WORD_TO_INT (rayon_ent);
(* Conversion en cas de passage dans une autre classe de types de
donnes. La valeur provient du module d'entres, elle est convertie
pour la suite du calcul.*)
Rayon
:= Rayon (surface:= donnees_cercle.surface)
%AB0
:=WORD_TO_BYTE (INT_TO_WORD(RAYON));
(*Le rayon est obtenu partir de la surface sous forme d'entier.
Pour la sortie, la valeur est d'abord convertie en une autre classe
de type (INT_TO_WORD), puis en un type moins puissant
(WORD_TO_BYTE).*)
// . . .
END_FUNCTION_BLOCK

14-8

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Fonctions standard de S7-SCL

14.2

Fonctions standard numriques

14.2.1

Fonctions standard arithmtiques gnrales


Il s'agit des fonctions permettant de calculer la valeur absolue, le carr ou la racine carre
d'une grandeur.
Le type de donnes ANY_NUM reprsente INT, DINT ou REAL. Sachez que les paramtres
d'entre du type INT ou DINT sont convertis de manire interne en variables REAL quand la
valeur de la fonction est de type REAL.
Nom de la fonction

Type du paramtre
d'entre

Type de la valeur de la Description


fonction

ABS

ANY_NUM

ANY_NUM

Valeur absolue

SQR

ANY_NUM

REAL

Carr

SQRT

ANY_NUM

REAL

Racine carre

Nota
Vous avez en outre la possibilit d'utiliser d'autres fonctions CEI pour effectuer la conversion du type
de donnes. Vous trouverez des informations dtailles sur chacune de ces fonctions dans le manuel
de rfrence STEP 7 "Fonctions standard et fonctions systme pour S7-300/400".

14.2.2

Fonctions logarithmiques
Il s'agit des fonctions permettant de calculer une valeur exponentielle ou le logarithme d'une
grandeur.
Le type de donnes ANY_NUM reprsente INT, DINT ou REAL. Sachez que les paramtres
d'entre de type ANY_NUM sont convertis de manire interne en variables de type REAL.

Nom de la fonction

Type du paramtre
d'entre

Type de la valeur de la
fonction

Description

EXP

ANY_NUM

REAL

e puissance IN

EXPD

ANY_NUM

REAL

10 puissance IN

LN

ANY_NUM

REAL

Logarithme naturel

LOG

ANY_NUM

REAL

Logarithme dcimal

Nota
Vous avez en outre la possibilit d'utiliser d'autres fonctions CEI pour effectuer la conversion
des types de donnes. Vous trouverez des informations dtailles sur chacune de ces
fonctions dans le manuel de rfrence STEP 7 "Fonctions standard et fonctions systme
pour S7-300/400".

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

14-9

Fonctions standard de S7-SCL

14.2.3

Fonctions trigonomtriques
Les fonctions trigonomtriques suivantes calculent des angles en radians.
Le type de donnes ANY_NUM reprsente INT, DINT ou REAL. Sachez que les paramtres
d'entre de type ANY_NUM sont convertis de manire interne en variables de type REAL.

Nom de la fonction

Type du paramtre
d'entre

Type de la valeur de la
fonction

Description

ACOS

ANY_NUM

REAL

Arccosinus

ASIN

ANY_NUM

REAL

Arcsinus

ATAN

ANY_NUM

REAL

Arctangente

COS

ANY_NUM

REAL

Cosinus

SIN

ANY_NUM

REAL

Sinus

TAN

ANY_NUM

REAL

Tangente

Nota
Vous avez en outre la possibilit d'utiliser d'autres fonctions CEI pour effectuer la conversion
des types de donnes. Vous trouverez des informations dtailles sur chacune de ces
fonctions dans le manuel de rfrence STEP 7 "Fonctions standard et fonctions systme
pour S7-300/400".

Appel des aides de rfrence sur les fonctions standard

14.2.4 Exemples de fonctions standard numriques

14-10

Appel

Rsultat

RESULTAT := ABS (-5) ;

// 5

RESULTAT := SQRT (81.0);

// 9

RESULTAT := SQR (23);

// 529

RESULTAT := EXP (4.1);

// 60.340 ...

RESULTAT := EXPD (3);

// 1_000

RESULTAT := LN (2.718 281) ;

// 1

RESULTAT := LOG (245);

// 2.389_166 ...

PI := 3.141592 ;
RESULTAT := SIN (PI / 6) ;

// 0.5

RESULTAT := ACOS (0.5);

// 1.047_197 (=PI / 3)

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Fonctions standard de S7-SCL

14.3

Fonctions standard sur chane binaire


Chaque fonction standard sur chane binaire possde deux paramtres d'entre dsigns
par IN et N. Le rsultat est toujours la valeur de la fonction. Le tableau suivant indique les
noms des fonctions ainsi que les types de donnes des deux paramtres d'entre et de la
valeur de la fonction. La signification des paramtres d'entre est la suivante :
paramtre d'entre IN : mmoire dans laquelle sont excutes les oprations de
dcalage de bits ; le type de donnes de ce paramtre dtermine celui de la valeur de la
fonction ;
paramtre d'entre N : nombre de rotations pour les fonctions de rotation ROL et ROR ou
nombre de positions dcaler pour les fonctions SHL et SHR.

Le tableau suivant dcrit toutes les fonctions standard sur chane binaire disponibles.
Nom de la Type du paramtre
fonction d'entre IN

Type du paramtre
d'entre N

Type de la valeur
de la fonction

Tche

ROL

BOOL
BYTE
WORD
DWORD

INT
INT
INT
INT

BOOL
BYTE
WORD
DWORD

Une rotation vers la gauche


du nombre de positions
indiqu par le paramtre N va
tre effectue sur la valeur
donne par le paramtre IN.

ROR

BOOL
BYTE
WORD
DWORD

INT
INT
INT
INT

BOOL
BYTE
WORD
DWORD

Une rotation vers la droite du


nombre de positions indiqu
par le paramtre N va tre
effectue sur la valeur
donne par le paramtre IN.

SHL

BOOL
BYTE
WORD
DWORD

INT
INT
INT
INT

BOOL
BYTE
WORD
DWORD

Dans la valeur donne par le


paramtre IN, le nombre de
positions indiqu par le
paramtre N va tre dcal
vers la gauche et complt
par des 0 droite.

SHR

BOOL
BYTE
WORD
DWORD

INT
INT
INT
INT

BOOL
BYTE
WORD
DWORD

Dans la valeur donne par le


paramtre IN, le nombre de
positions indiqu par le
paramtre N va tre dcal
vers la droite et complt par
des 0 gauche.

Nota
Vous avez en outre la possibilit d'utiliser d'autres fonctions CEI pour effectuer la
conversion des types de donnes. Vous trouverez des informations dtailles sur chacune
de ces fonctions dans le manuel de rfrence STEP 7 "Fonctions standard et fonctions
systme pour S7-300/400".

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

14-11

Fonctions standard de S7-SCL

14.3.1 Exemple de fonctions standard sur chane binaire

Appel

RESULTAT := ROL (IN:=BYTE#2#1101_0011, N:=5);

Rsultat

// 2#0111_1010
// (= 122 dcimal)

RESULTAT := ROR (IN:=BYTE#2#1101_0011, N:=2);

// 2#1111_0100
// (= 244 dcimal)

RESULTAT := SHL (IN:=BYTE#2#1101_0011, N:=3);

// 2#1001_1000
// (= 152 dcimal)

RESULTAT := SHR (IN:=BYTE#2#1101_0011, N:=2);

// 2#0011_0100
// (= 52 dcimal)

14-12

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Fonctions standard de S7-SCL

14.4

Fonctions de traitement de chane de caractres

14.4.1

Fonctions de manipulation de chane de caractres

LEN
La fonction LEN (FC21) fournit comme valeur de retour la longueur en cours d'une chane de
caractres (nombre de caractres valables). Une chane vide ('') a la longueur zro. La
fonction ne signale pas d'erreur.
Exemple : LEN (S:= 'XYZ' )
Paramtre

Dclaration

Type de
donnes

Zone de mmoire

Description

INPUT

STRING

D, L

Variable d'entre en format STRING

INT

E, A, M, D, L

Nombre de caractres en cours

Valeur de
retour

CONCAT
La fonction CONCAT regroupe 32 variables STRING au maximum en une seule chane de
caractres. Si la chane en rsultant est plus longue que la variable dfinie pour le
paramtre de sortie, elle est rduite la longueur maximale dfinie. En cas dutilisation de la
fonction S7-SCL CONCAT, le FC2 de la bibliothque "Fonctions CEI" est implicitement
appel.
Exemple : CONCAT (IN1:= 'soupape', IN2:= ' ouverte')
Paramtre

Dclaration

IN1

INPUT

Type de
donnes

Zone de mmoire

Description

STRING

D, L

Variable d'entre en format STRING ou


CHAR

D, L

Variable d'entre en format STRING ou


CHAR

D, L

Variable d'entre en format STRING ou


CHAR

D, L

Chane de caractres forme par la runion


des deux chanes

CHAR
IN2

INPUT

STRING
CHAR

INn

INPUT

STRING
CHAR

Valeur de
retour

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

STRING
CHAR

14-13

Fonctions standard de S7-SCL

LEFT ou RIGHT
Les fonctions LEFT et RIGHT (FC20 et FC32) fournissent les L premiers ou derniers
caractres d'une chane de caractres. Si L est suprieur la longueur en cours de la
variable STRING, c'est la chane complte qui est fournie comme valeur de retour. Si L = 0,
la valeur de retour est une chane vide. Si L est une valeur ngative, la valeur de retour est
une chane vide.
Exemple : LEFT (IN:= 'soupape', L:= 4)
Paramtre

Dclaration

Type de
donnes

Zone de mmoire

Description

IN

INPUT

STRING

D, L

Variable d'entre en format STRING

INPUT

INT

E, A, M, D, L, const.

Longueur de la partie gauche de la chane

STRING

D, L

Variable de sortie en format STRING

Valeur de
retour

MID
La fonction MID (FC26) fournit une partie d'une chane de caractres. L est la longueur de la
chane lire, P est la position du premier caractre lire.
Si la somme de L et de (P-1) dpasse la longueur en cours de la variable STRING, le
rsultat de la fonction sera une chane dmarrant P et allant jusqu' la fin de la valeur
d'entre. Dans tous les autres cas (P hors de la longueur en cours, P et/ou L galent zro ou
ngatifs), la valeur de retour est une chane vide.
Exemple : MID (IN:= 'temperature', L:= 2, P:= 3)
Paramtre

Dclaration

Type de
donnes

Zone de mmoire

Description

IN

INPUT

STRING

D, L

Variable d'entre en format STRING

INPUT

INT

E, A, M, D, L, const.

Longueur de la partie centrale de la


chane

INPUT

INT

E, A, M, D, L, const.

Position du premier caractre

STRING

D, L

Variable de sortie en format STRING

Valeur de
retour

14-14

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Fonctions standard de S7-SCL

INSERT
La fonction INSERT (FC17) insre la chane de caractres du paramtre IN2 dans celle du
paramtre IN1 aprs le Pme caractre. Si P gale zro, la seconde chane sera insre
avant la premire. Si P est suprieur la longueur en cours de la premire chane de
caractres, la seconde chane sera accole la premire. Si P est ngatif, la valeur de
retour sera une chane vide. Si la chane de rsultat est plus longue que la variable affecte
au paramtre de sortie, la chane de rsultat sera limite la longueur maximale dfinie.
Exemple : INSERT (IN1:= 'Participant
P:= 12)
Paramtre

Dclaration

Type de
donnes

Zone de mmoire

arriv', IN2:='Durand':= 2,

Description

IN1

INPUT

STRING

D, L

Variable STRING dans laquelle insrer

IN2

INPUT

STRING

D, L

Variable STRING insrer

INPUT

INT

E, A, M, D, L, const.

Position d'insertion

STRING

D, L

Chane rsultant de l'opration

Valeur de
retour

DELETE
La fonction DELETE (FC4) efface, dans une chane de caractres, L caractres partir du
Pme caractre compris. Si L et/ou P galent zro ou si P est suprieur la longueur en
cours de la chane d'entre, c'est cette chane d'entre qui sera fournie comme valeur de
retour. Si la somme de L et de P est suprieure la chane d'entre, les caractres seront
effacs jusqu' la fin de la chane. Si L et/ou P sont ngatifs, la valeur de retour sera une
chane vide.
Exemple : DELETE (IN:= 'temperature ok', L:= 6, P:= 5)

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

14-15

Fonctions standard de S7-SCL

REPLACE
La fonction REPLACE (FC31) remplace, partir du caractre P compris, L caractres de la
premire chane (IN1) par la seconde chane (IN2). Si L gale zro, c'est la premire chane
de caractres qui sera indique comme valeur de retour. Si P gale 0 ou 1, les caractres
seront remplacs en partant du premier (y compris celui-ci). Si P se trouve hors de la
premire chane, la seconde chane sera accole la premire. Si L et/ou P sont ngatifs, la
valeur de retour sera une chane vide. Si la chane rsultant de l'opration est plus longue
que la variable affecte comme paramtre de sortie, la chane sera limite la longueur
maximale dfinie.
Exemple : REPLACE (IN1:= 'temperature', IN2:= ' haute' L:= 7, P:= 5)
Paramtre

Dclaration

Type de
donnes

Zone de mmoire

Description

IN1

INPUT

STRING

D, L

Variable STRING dans laquelle remplacer

IN2

INPUT

STRING

D, L

Variable STRING de remplacement

INPUT

INT

E, A, M, D, L, const.

Nombre de caractres remplacer

INPUT

INT

E, A, M, D, L, const.

Position du premier caractre remplac

STRING

D, L

Chane rsultant de l'opration

Valeur de
retour

FIND
La fonction FIND (FC11) fournit la position de la seconde chane de caractres (IN2) dans la
premire (IN1). La recherche part de la gauche ; c'est la premire occurrence de la chane
qui est signale. Si la seconde chane n'est pas contenue dans la premire, la valeur de
retour est 0. La fonction ne signale pas d'erreur.
Exemple : FIND (IN1:= 'station_de_traitement', IN2:='station')
Paramtre

Dclaration

Type de
donnes

Zone de mmoire

Description

IN1

INPUT

STRING

D, L

Variable STRING dans laquelle chercher

IN2

INPUT

STRING

D, L

Variable STRING rechercher

INT

E, A, M, D, L

Position de la chane trouve

Valeur de
retour

14-16

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Fonctions standard de S7-SCL

14.4.2

Fonctions de comparaison de chanes de caractres


Les oprations de comparaison de S7-SCL =, <>, <, >, <= et >= acceptent les chanes de
caractres comme oprandes. Le compilateur intgre automatiquement l'appel de fonction
ncessaire. Les fonctions qui suivent ne sont mentionnes ici qu' titre complmentaire.

EQ_STRNG et NE_STRNG
Les fonctions EQ_STRNG (FC10) et NE_STRNG (FC29) comparent les contenus de deux
variables en format STRING pour en constater l'galit (FC10) ou la diffrence (FC29). Elles
donnent le rsultat comme valeur de retour. Cette valeur de retour est "1" quand la chane
de caractres du paramtre S1 est gale (diffrente de) celle du paramtre S2. La fonction
ne signale pas d'erreur.
Paramtre

Dclaration

Type de
donnes

Zone de mmoire

Description

S1

INPUT

STRING

D, L

Variable d'entre en format STRING

S2

INPUT

STRING

D, L

Variable d'entre en format STRING

BOOL

E, A, M, D, L

Rsultat de la comparaison

Valeur de
retour

GE_STRNG et LE_STRNG
Les fonctions GE_STRNG (FC13) et LE_STRNG (FC19) comparent les contenus de deux
variables en format STRING dans le rapport "suprieur (infrieur) ou gal " et elles donnent
le rsultat de la comparaison comme valeur de retour. Cette valeur de retour est "1" quand
la chane de caractres du paramtre S1 est suprieure (infrieure) ou gale celle du
paramtre S2. La fonction compare les caractres en partant de la gauche et au moyen de
leur codage ASCII (par ex. 'a' est suprieur 'A'). Le premier caractre diffrent dcide du
rsultat de la comparaison. Quand la partie gauche de la chane la plus longue est identique
la chane la plus courte, c'est la chane la plus longue qui est suprieure. La fonction ne
signale pas d'erreur.
Paramtre

Dclaration

Type de
donnes

Zone de mmoire

Description

S1

INPUT

STRING

D, L

Variable d'entre en format STRING

S2

INPUT

STRING

D, L

Variable d'entre en format STRING

BOOL

E, A, M, D, L

Rsultat de la comparaison

Valeur de
retour

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

14-17

Fonctions standard de S7-SCL

GT_STRNG et LT_STRNG
Les fonctions GT_STRNG (FC15) et LT_STRNG (FC24) comparent les contenus de deux
variables en format STRING dans le rapport "suprieur (infrieur) " et donnent le rsultat de
la comparaison comme valeur de retour. Cette valeur de retour est "1" quand la chane de
caractres du paramtre S1 est suprieure (infrieure) celle du paramtre S2. La fonction
compare les caractres en partant de la gauche et au moyen de leur codage ASCII (par ex.
'a' est suprieure 'A'). Le premier caractre diffrent dcide du rsultat de la comparaison.
Quand la partie gauche de la chane la plus longue est identique la chane la plus courte,
c'est la chane la plus longue qui est suprieure. La fonction ne signale pas d'erreur.
Paramtre

Dclaration

Type de
donnes

Zone de mmoire

Description

S1

INPUT

STRING

D, L

Variable d'entre en format STRING

S2

INPUT

STRING

D, L

Variable d'entre en format STRING

BOOL

E, A, M, D, L

Rsultat de la comparaison

Valeur de
retour

14-18

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Fonctions standard de S7-SCL

14.4.3 Fonctions de conversion du type de donnes

INT_TO_STRING et STRING_TO_INT
Les fonctions INT_TO_STRING et STRING_TO_INT convertissent une variable de format
INT en une chane de caractres ou une chane de caractres en une variable INT. Les
fonctions I_TRNG (FC16) ou STRNG_I (FC38) de la bibliothque "Fonctions CEI" sont alors
utilises de manire implicite. La chane sera prcde d'un signe. Si la variable affecte
comme valeur de retour est trop courte, la conversion n'a pas lieu.
Paramtre

Dclaration

Type de
donnes

Zone de mmoire

Description

INPUT

INT

E, A, M, D, L, const.

Valeur d'entre

STRING

D, L

Chane de caractres rsultant de


l'opration

STRING

D, L

Chane d'entre

INT

E, A, M, D, L

Rsultat

INT_TO_ST
RING

I
Valeur de
retour
STRING_TO
_INT

INPUT

Valeur de
retour

DINT_TO_STRING et STRING_TO_DINT
Les fonctions DINT_TO_STRING et STRING_TO_DINT convertissent une variable de
format DINT en une chane de caractres ou une chane de caractres en une variable
DINT. Les fonctions DI_STRNG (FC5) ou STRNG_I (FC37) de la bibliothque "Fonctions
CEI" sont alors utilises de manire implicite. La chane sera prcde d'un signe. Si la
variable affecte comme valeur de retour est trop courte, la conversion n'a pas lieu.
Paramtre

Dclaration

Type de
donnes

Zone de mmoire

Description

INPUT

DINT

E, A, M, D, L, const.

Valeur d'entre

STRING

D, L

Chane de caractres rsultant de


l'opration

STRING

D, L

Chane d'entre

DINT

E, A, M, D, L

Rsultat

DINT_TO_S
TRING

I
Valeur de
retour
STRING_TO
_DINT

INPUT

Valeur de
retour

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

14-19

Fonctions standard de S7-SCL

REAL_TO_STRING und STRING_TO_REAL


Les fonctions REAL_TO_STRING et STRING_TO_REAL convertissent une variable de
format REAL en une chane de caractres ou une chane de caractres en une variable
REAL. Les fonctions (FC30) ou (FC39) de la bibliothque "Fonctions CEI" sont alors utilises
de manire implicite. La chane de caractres doit avoir le format suivant :
v.nnnnnnnExx ( = signe, v = position prcdant la virgule,n = positions suivant la virgule,
x = exposants)
Si la longueur de la chane est infrieure 14 ou si sa structure diffre de la structure cidessus, la conversion n'a pas lieu.
Si la variable affecte comme valeur de retour est trop courte ou si le paramtre IN ne
prsente pas de nombre virgule flottante correct, la conversion n'a pas lieu.
Paramtre

Dclaration

Type de
donnes

Zone de mmoire

Description

INPUT

REAL

E, A, M, D, L, const.

Valeur d'entre

STRING

D, L

Chane de caractres rsultant de


l'opration

STRING

D, L

Chane d'entre

REAL

E, A, M, D, L

Rsultat

REAL_TO_S
TRING

IN
Valeur de
retour
STRING_TO
_REAL

S
Valeur de
retour

14-20

INPUT

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Fonctions standard de S7-SCL

14.4.4 Exemple de traitement de chanes de caractres

Assembler des textes de signalisation


//Assemblage et mmorisation commands par le processus
//des textes de signalisation
////////////////////////////////////////////////////////////////////
//Le bloc contient les textes de signalisation requis et les
//
//20 derniers messages gnrs
//
////////////////////////////////////////////////////////////////////
DATA_BLOCK Textes_signalisation
STRUCT
indice
memoire_textes
materiel
etats
END_STRUCT
BEGIN
indice :=0;
materiel[1]
materiel[2]
materiel[3]
materiel[4]
materiel[5]
etats[1]
etats[2]
etats[3]
etats[4]
etats[5]
END_DATA_BLOCK

:=
:=
:=
:=
:=
:=
:=
:=
:=
:=

: int;
: array [0..19] of string[34];
: array [1..5] of string[16];
// 5 appareils diffrents
: array [1..5] of string[12];
// 5 tats diffrents

'moteur ';
'soupape ';
'presse ';
'station_soudage ';
'bruleur ';
' defecteux';
' demarre';
' temperature';
' repare';
' revise';

////////////////////////////////////////////////////////////////////
//La fonction assemble des textes de signalisation et les crit
//
//dans le DB Textes_signalisation. Les textes de signalisation
//
//sont stocks dans une mmoire circulaire. Le dernier indice
//
//libre de la mmoire e textes figure aussi dans le DB
//
//textes_signalisation o il est actualis par la fonction.
//
////////////////////////////////////////////////////////////////////

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

14-21

Fonctions standard de S7-SCL

FUNCTION Generateur_textes : bool


VAR_INPUT
unite
: int; //Indice du texte d'un appareil
no
: int; // N d'identification de l'appareil
etat
: int;
valeur
: int;
END_VAR
VAR_TEMP
texte
: string[34];
i
: int;
END_VAR
//Initialisation des variables temporaires
texte := '';
Generateur_textes := true;
Case unite of
1..5 : case etat of
1..5 : texte := concat( in1 :=
textes_signalisation.materiel[unite],
in2 := right(l:=2,in:=I_STRNG(no)));
texte := concat( in1 := texte,
in2 :=
Textes_signalisation.etats[etat]);
if valeur <> 0 then
texte := concat( in1 := texte,
in2 := I_STRNG(valeur));
end_if;
else Generateur_textes := false;
end_case;
else Generateur_textes := false;
end_case;
i := Textes_signalisation.indice;
Textes_signalisation.memoire_textes[i] := texte;
Textes_signalisation.indice := (i+1) mod 20;
END_FUNCTION
////////////////////////////////////////////////////////////////////
//La fonction est appele dans le programme cyclique en cas
//
//de front dans le %M10.0 et elle provoque l'criture unique d'un //
//message si un paramtre change.
//
////////////////////////////////////////////////////////////////////
Organization_block zyklus
Var_temp
Besy_ifx : array [0..20] of byte;
erreur: BOOL;
End_var;

14-22

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Fonctions standard de S7-SCL

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

14-23

Fonctions standard de S7-SCL

14-24

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Fonctions standard de S7-SCL

////////////////////////////////////////////////////////////////////
//L'appel suivant provoque l'entre "Moteur 12 demarre" dans la
//
//mmoire de textes du DB Textes_signalisation, sachant qu'il faut//
//transfrer un 1 par %MW0, le 12 par %EW2 et un 2 par %MW2. *)
//
////////////////////////////////////////////////////////////////////
if %M10.0 <> %M10.1 then
erreur := Generateur_textes (unite := word_to_int(%MW0),
no
:= word_to_int(%EW2),
etat := word_to_int(%MW2),
valeur
:= 0);
%M10.1:=M10.0;
end_if;
end_organization_block

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

14-25

Fonctions standard de S7-SCL

14.5

Fonctions de slection de valeurs

14.5.1 Fonctions de slection de valeurs


Les fonctions suivantes de slection de valeurs sont disponibles sous forme de fonctions
S7-SCL internes. Elles sont conformes CEI 61131-3.

Nota
Certaines des fonctions sont galement contenues dans la bibliothque standard de
STEP 7. Les fonctions de la bibliothque ne correspondent cependant pas en tous points
aux exigences CEI.

SEL
La fonction SEL slectionne une valeur d'entre parmi deux.
Comme valeurs d'entre, tous les types de donnes sont autoriss, l'exception des types
de donnes ARRAY et STRUCT ainsi que des types de donnes Paramtre. Toutes les
variables paramtres doivent appartenir au type de donnes de la mme classe.
Exemple :
A:= SEL (G:= SELECT, IN0:= X, IN1:= Y);

14-26

Paramtre

Dclaration

Type de donnes Zone de mmoire

Description

INPUT

BOOL

E, A, M, D, L

Critre de slection

IN0

INPUT

Tous les types de


donnes
l'exception de
ARRAY et
STRUCT

E, A, M, D, L

Premire valeur d'entre

IN1

INPUT

Tous les types de


donnes
l'exception de
ARRAY et
STRUCT

E, A, M, D, L

Deuxime valeur
d'entre

Valeur en
retour

OUTPUT

Tous les types de


donnes
l'exception de
ARRAY et
STRUCT

E, A, M, D, L

Valeur d'entre
slectionne (option)

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Fonctions standard de S7-SCL

MAX
La fonction MAX slectionne la plus grande valeur de variable parmi un certain nombre de
valeurs de variables. Comme valeurs d'entre, les types de donnes numriques et les
types de donnes de temporisation sont autoriss. Toutes les variables paramtres doivent
appartenir au type de donnes de la mme classe. L'expression prend le type de donnes
de poids le plus fort.
Exemple : A:= MAX (IN1:=a, IN2:=b, IN3:=c, IN4:=d);
Paramtre

Dclaration

Type de donnes Zone de mmoire

Description

IN1

INPUT

ANY_NUM

E, A, M, D, L

Premire valeur d'entre

E, A, M, D, L

Deuxime valeur
d'entre

E, A, M, D, L

Dernire valeur d'entre


(option)

E, A, M, D, L

Plus grande des valeurs


d'entre
(option)

Types de donnes
de temporisation
l'exception de
S5TIME
IN2

INPUT

ANY_NUM
Types de donnes
de temporisation
l'exception de
S5TIME

INn

INPUT

(n=3...32)

Valeur en retour OUTPUT

ANY_NUM
Types de donnes
de temporisation
l'exception de
S5TIME
ANY_NUM
Types de donnes
de temporisation
l'exception de
S5TIME

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

14-27

Fonctions standard de S7-SCL

MIN
La fonction MIN slectionne la plus petite valeur de variable parmi un certain nombre de
valeurs de variables. Comme valeurs d'entre, les types de donnes numriques et les
types de donnes de temporisation sont autoriss. Toutes les variables paramtres doivent
appartenir au type de donnes de la mme classe. L'expression prend le type de donnes
de poids le plus fort.
Exemple : A:= MIN (IN1:=a, IN2:=b, IN3:=c, IN4:=d);
Paramtre

Dclaration

Type de donnes Zone de mmoire

Description

IN1

INPUT

ANY_NUM

E, A, M, D, L

Premire valeur d'entre

E, A, M, D, L

Deuxime valeur
d'entre

E, A, M, D, L

Dernire valeur d'entre


(option)

E, A, M, D, L

Plus petite des valeurs


d'entre
(option)

Types de donnes
de temporisation
l'exception de
S5TIME
IN2

INPUT

ANY_NUM
Types de donnes
de temporisation
l'exception de
S5TIME

INn

INPUT

(n=3...32)

Valeur en retour OUTPUT

ANY_NUM
Types de donnes
de temporisation
l'exception de
S5TIME
ANY_NUM
Types de donnes
de temporisation
l'exception de
S5TIME

14-28

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Fonctions standard de S7-SCL

LIMIT
La fonction LIMIT limite la valeur d'une variable des valeurs limite paramtrables. Comme
valeurs d'entre, tous les types de donnes numriques et les types de donnes de
temporisation sont autoriss. Tous les paramtres doivent appartenir au mme type de
donnes. L'expression prend le type de donnes de poids le plus fort. La valeur limite
infrieure (MN) ne doit pas tre plus grande que la valeur limite suprieure (MX).
Exemple : A:= LIMIT (MN:=5, IN:= Bearbeitungsschritte, MX:= 10);
Paramtre

Dclaration

Type de donnes Zone de mmoire

Description

MN

INPUT

ANY_NUM

E, A, M, D, L

Limite infrieure

E, A, M, D, L

Variable d'entre

E, A, M, D, L

Limite suprieure

E, A, M, D, L

Variable de sortie limite


(option)

Types de donnes
de temporisation
l'exception de
S5TIME
IN

INPUT

ANY_NUM
Types de donnes
de temporisation
l'exception de
S5TIME

MX

INPUT

ANY_NUM
Types de donnes
de temporisation
l'exception de
S5TIME

Valeur en retour OUTPUT

ANY_NUM
Types de donnes
de temporisation
l'exception de
S5TIME

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

14-29

Fonctions standard de S7-SCL

MUX
La fonction MUX slectionne une valeur d'entre parmi un certain nombre de valeurs
d'entre. La slection s'effectue avec le paramtre d'entre K. Comme valeurs d'entre, tous
les types de donnes sont autoriss. L'expression prend le type de donnes de poids le plus
fort.
Exemple :
A:= MUX (K:=SELECT, IN0:= Steps, IN1:=Number, IN2:=Total);
Paramtre

Dclaration

Type de donnes Zone de mmoire

Description

INPUT

INT

E, A, M, D, L

Critre de slection

IN0

INPUT

Tous les types de


donnes
l'exception de
ARRAY et
STRUCT

E, A, M, D, L

Premire valeur d'entre

IN1

INPUT

Tous les types de


donnes
l'exception de
ARRAY et
STRUCT

E, A, M, D, L

Deuxime valeur
d'entre

INn

INPUT

Tous les types de


donnes
l'exception de
ARRAY et
STRUCT

E, A, M, D, L

Dernire valeur d'entre


(option)

INPUT

Tous les types de


donnes
l'exception de
ARRAY et
STRUCT

E, A, M, D, L

Valeur d'entre
alternative

(n=231)

INELSE

(option)
Si K se trouve en
dehors de 0...n, cest
la valeur actuelle de
INELSE qui est
utilise.
Si INELSE nest pas
occup, cest la valeur
actuelle de INO qui
est utilise.

Valeur en retour OUTPUT

14-30

Tous les types de


donnes
l'exception de
ARRAY et
STRUCT

E, A, M, D, L

Valeur slectionne
(option)

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Fonctions standard de S7-SCL

14.6

Fonctions systme, blocs fonctionnels systme et


bibliothque standard

14.6.1

Fonctions systme, blocs fonctionnels systme et bibliothque


standard
Le systme d'exploitation des CPU S7 contient des fonctions systme et des fonctions
standard que vous pouvez utiliser lorsque vous programmez dans S7-SCL. Il s'agit de :
Blocs d'organisation (OB)
Fonctions systme (SFC)
Blocs fonctionnels systme (SFB)

Interface d'appel des SFC/SFB


Vous pouvez adresser les blocs de manire symbolique ou absolue. Vous devez donc
connatre soit leur mnmonique, qui doit tre dclar dans la table des mnmoniques, soit
leur numro de dsignation absolue.
Dans l'appel d'un bloc, vous devez affecter aux paramtres formels, dont vous avez dfini
les noms et les types de donnes en crant le bloc paramtrable, les paramtres effectifs
dont le bloc utilise les valeurs durant l'excution de votre programme.
S7-SCL cherche le bloc appeler dans les rpertoires et bibliothques suivants :
Le dossier "Programmes"
La bibliothque standard SIMATIC
La bibliothque standard CEI
Lorsque S7-SCL trouve un bloc, il le copie dans le programme utilisateur. Certains blocs font
exception : ce sont ceux qui doivent tre appels avec la notation (" ... ") par suite de leur
nom ainsi que les blocs appels de manire absolue. S7-SCL cherche ces noms
uniquement dans la table des mnmoniques du programme utilisateur. Vous devez les
copier vous-mme dans le programme utilisateur l'aide de SIMATIC Manager.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

14-31

Fonctions standard de S7-SCL

Appel conditionnel (SFB/SFC)


Si vous voulez raliser un appel conditionnel, vous devez affecter la valeur 0 au paramtre
d'entre EN (par exemple l'entre E0.3) afin que le bloc ne soit pas appel. Lorsque EN
reoit la valeur "1", la fonction est appele. Dans ce cas, le paramtre de sortie ENO est
galement mis "1" (autrement "0") si aucune erreur ne survient durant l'excution du
bloc.
Il n'est pas recommand d'utiliser l'appel conditionnel pour les SFC, puisque la variable
cense recevoir la valeur de retour de la fonction reste indfinie quand la fonction n'est pas
appele.

Nota
Lorsque vous utilisez les oprations suivantes pour les types de donnes TIME,
DATE_AND_TIME et STRING dans votre programme, S7-SCL appelle automatiquement les
blocs standard correspondants.
C'est ce qui explique que les mnmoniques et les numros de ces blocs standard soient
rservs et que leur emploi pour d'autres blocs soit interdit. Un manquement cette rgle
n'est pas toujours contrl par S7-SCL et peut provoquer une erreur de compilateur.

Le tableau ci-aprs numre les fonctions standard CEI utilises automatiquement par
S7-SCL.
Opration

DATE_AND_TIME

STRING

==

EQ_DT (FC9)

EQ_STRING (FC10)

<>

NE_DT (FC28)

NE_STRING (FC29)

>

GT_DT (FC14)

GT_STRING (FC15)

>=

GE_DT (FC12)

GE_STRING (FC13)

<=

LE_DT (FC18)

LE_STRING (FC19)

<

LT_DT (FC23)

LT_STRING (FC24)

DATE_AND_TIME + TIME

AD_DT_TM (FC1)

DATE_AND_TIME + TIME

SB_DT_TM (FC35)

DATE_AND_TIME +
DATE_AND_TIME

SB_DT_DT (FC34)

TIME_TO_S5TIME(TIME)

TIM_S5TI (FC40)

S5TIME_TO_TIME(S5TIME)

S5TI_TIM (FC33)

Pour des informations complmentaires sur les SFB, SFC et OB disponibles ainsi que pour
une description dtaille de chaque interface, reportez-vous au manuel de rfrence STEP 7
"Fonctions standard et fonctions systme pour S7-300/400".

14-32

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Fonctions standard de S7-SCL

14.6.2 Interface d'change avec les OB

Blocs d'organisation
Les blocs d'organisation constituent l'interface entre le systme d'exploitation de la CPU et le
programme utilisateur. Ils permettent de cibler les parties de programme excuter :
la mise en route de la CPU,
de manire cyclique ou une cadence donne,
des instants ou jours donns,
aprs coulement d'une dure donne,
l'apparition d'erreurs,
lors du dclenchement d'alarmes de processus ou de communication.
Les blocs d'organisation sont traits dans l'ordre de la priorit qui leur est affecte.

OB disponibles
Les CPU ne sont pas toutes en mesure de traiter l'ensemble des OB disponibles dans S7.
Vrifiez dans les caractristiques techniques de votre CPU de quels OB vous diposez.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

14-33

Fonctions standard de S7-SCL

14-34

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

15

Description du langage

15.1

Description formelle du langage

15.1.1 Prsentation des diagrammes syntaxiques


La description du langage faite dans les diffrentes rubriques se base sur des diagrammes
syntaxiques. Ils vous montrent bien la structure syntaxique de S7-SCL. Ils sont regroups au
complet avec les lments de langage correspondants dans les chapitres "Rgles lexicales"
et "Rgles syntaxiques".

Qu'entend-on par diagramme syntaxique ?


Il s'agit d'une reprsentation graphique de la structure du langage. Cette structure est dcrite
par une suite de rgles, pouvant elles-mmes se fonder sur des rgles dj nonces.
Nom de la rgle

Squence
Bloc 3
Bloc 1

Bloc 2

Option

Bloc 4
Bloc 5

Itration
Alternative

Le diagramme syntaxique se lit de gauche droite. Il peut comporter :


Squence : suite de blocs
Option : branche facultative
Itration : rptition de branches
Alternative : aiguillage

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

15-1

Description du langage

Quelles sont les diffrentes sortes de blocs ?


Un bloc est un lment de base ou un lment compos lui-mme de blocs. La figure
suivante montre la reprsentation des diffrentes sortes de blocs :

Bloc terminal

Bloc non terminal


<Nom de la rgle>

Elment de base qui ne ncessite pas


de description supplmentaire!
Il s'agit de caractres imprimables et
de caractres spciaux, de mots-cls
et d'identificateurs prdfinis.

Le nom de la rgle est facultatif


Elment complexe qui est dcrit par
d'autres diagrammes
syntaxiques.

Les indications relatives ces blocs


doivent tre reprises telles quelles.

Symbole
<Nom de la rgle>
Le nom de la rgle doit figurer
en majuscules !
Elment complexe, utilis comme
lment de base dans les rgles
syntaxiques et expliqu dans les
rgles lexicales.

15.1.2 Rgles
Les rgles que vous pouvez utiliser pour construire votre programme S7-SCL comportent
deux niveaux : il y a les rgles lexicales et les rgles syntaxiques.

Rgles lexicales
Les rgles lexicales dcrivent la structure des lments (symboles) sur lesquels porte
l'analyse lexicale ralise par le compilateur. Le format de la notation n'est pas libre et les
rgles sont appliquer rigoureusement. Cela signifie en particulier que :
L'insertion de caractres de mise en forme n'est pas autorise ;
L'insertion de blocs et de lignes de commentaire n'est pas possible ;
L'insertion d'attributs pour les identificateurs n'est pas possible.

15-2

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Description du langage

L'exemple montre la rgle lexicale IDENTIFICATEUR. Elle dcrit la composition d'un


identificateur (nom ), par ex. :
TABLEAU_MES_12
CONSIGNE_B_1

Lettre

_
Caractre de
soulignement

Lettre

Chiffre

_
Caractre de
soulignement

Lettre

Chiffre

Rgles syntaxiques
Les rgles syntaxiques dcrivent la structure de S7-SCL en s'appuyant sur les rgles
lexicales. En respectant ces rgles, vous pouvez crer votre programme S7-SCL en toute
libert de format.

Programme SCL
Rgles
syntaxiques

Format libre
Format non libre !

Rgles lexicales

Conventions
Chaque rgle est prcde de son nom. Si elle est utilise dans une rgle de niveau
hirarchique suprieur, son nom figure dans un rectangle.
Si le nom de la rgle est crit en majuscules, il s'agit d'un symbole qui est dcrit dans les
rgles lexicales.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

15-3

Description du langage

Smantique
Les rgles permettent uniquement de reprsenter la structure formelle du langage, sans
toujours en livrer la signification. Des informations complmentaires sont donc crites ct
des rgles pour les points importants. Voici des exemples :
Un nom supplmentaire est indiqu en cas d'lments semblables mais de signification
diffrente : par ex. dans la rgle d'indication de la date, Anne, Mois ou Jour pour SUITE
DE CHIFFRES DECIMAUX. Le nom indique l'utilisation.
Les restrictions importantes sont signales ct des rgles : par ex. la rgle
Mnmonique est accompagne du rappel qu'un mnmonique doit tre dfini dans la table
des mnmoniques.

15-4

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Description du langage

15.1.3 Blocs terminaux des rgles lexicales

Dfinition
Un bloc terminal est un lment de base dont la description ne ncessite pas de rgle
supplmentaire, mais une simple explication. Il est reprsent par la figure suivante dans les
diagrammes syntaxiques :

Le bloc terminal est reprsent par un rectangle aux bouts arrondis ou par un cercle. Il contient soit un nom (en majuscules), soit directement une information.
Celui-ci dfinit le nombre de caractres ASCII
utilisables.

Les tableaux suivants numrent les diffrents blocs terminaux en indiquant pour chacun
l'ensemble correspondant des lments du jeu de caractres ASCII.

Lettres et chiffres
Il s'agit des caractres les plus utiliss. L'IDENTIFICATEUR, par exemple, se compose de
lettres, de chiffres et du caractre de soulignement.
Caractre

Sous-groupe

Elments du jeu de caractres

Lettre

Majuscule
Minuscule

AZ
az

Chiffre

Chiffre dcimal

09

Chiffre octal

Chiffre octal

07

Chiffre hexadcimal

Chiffre hexadcimal

0 9,

Bit

Chiffre binaire

0, 1

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

A F, a f

15-5

Description du langage

Caractres imprimables et caractres spciaux


Vous pouvez employer tout le jeu de caractres ASCII tendu dans les chanes, les
commentaires et les mnmoniques.
Caractre

Sous-groupe

Caractre imprimable

Selon le code de caractres utilis.


Tous les caractres imprimables
Avec le code ASCII par exemple,
partir du caractre quivalant au
caractre dcimal 31, sans DEL ni les
caractres de remplacement cidessous.

Caractre de
remplacement

Dollar
Apostrophe

$
'

Caractre de
commande

$P ou $p
$L ou $l
$R ou $r
$T ou $t
$N ou $n

Saut de page (formfeed, page)


Changement de ligne (linefeed)
Retour chariot (carriage return)
Tabulation
Nouvelle ligne

Reprsentation de
$hh
remplacement en code
hexadcimal

15-6

Elments du jeu de caractres

Caractres quelconques
enregistrables en code hexa (hh)

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Description du langage

15.1.4 Caractres de mise en forme, sparateurs et oprations


Dans les rgles lexicales
Le tableau suivant montre l'utilisation de certains caractres du jeu de caractres ASCII
comme caractres de mise en forme et comme sparateurs au niveau des rgles lexicales.
Caractre

Description

Sparateur entre heures, minutes et secondes

Sparateur pour l'adressage absolu et dans la reprsentation des nombres


rels et des intervalles de temps

Attributs

''

Caractre et chane de caractres

""

Caractre introduisant le mnmonique suivant les rgles de la table des


mnmoniques

_ caractre de
soulignement

Sparateur pour les valeurs numriques dans les constantes, peut figurer
dans les IDENTIFICATEURS

Caractre d'alignement pour indiquer des caractres de commande ou des


caractres de remplacement

$> $<

Interruption d'une chane si sa longueur dpasse une ligne ou pour insrer


des commentaires

Pour les constantes


Le tableau suivant montre l'utilisation de certains caractres et chanes de caractres pour
des constantes au niveau des rgles lexicales. Il s'applique aux jeux d'abrviations allemand
et anglais.
Prfixe

BOOL#
BYTE#
WORD#
DWORD#
INT#
DINT#
REAL#
CHAR#
2#
8#
16#
D#
DATE#
DATE_AND_TIME#
DT#
E
e

Caractrise

Rgle lexicale

Constante type de type BOOL


Constante type de type BYTE
Constante type de type WORD
Constante type de type DWORD
Constante type de type INT
Constante type de type DINT
Constante type de type REAL
Constante type de type CHAR
Constante numrique
Constante numrique
Constante numrique
Indication temporelle
Indication temporelle
Indication temporelle
Indication temporelle
Sparateur pour constante relle
Sparateur pour constante relle

Constante binaire
Constante binaire
Constante binaire
Constante binaire
Constante entire
Constante entire
Constante relle
Constante sur caractre
Suite de chiffres binaires
Suite de chiffres octaux
Suite de chiffres hexadcimaux
Date
Date
Date et heure
Date et heure
Exposant
Exposant

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

15-7

Description du langage

Prfixe

Caractrise

D
H
M
MS
S
T#
TIME#
TIME_OF_DAY#
TOD#

Rgle lexicale

Sparateur pour intervalle de temps (jour)


Jours (rgle : reprsentation par niveaux)
Sparateur pour intervalle de temps (heure) Heures : (rgle : reprsentation par
niveaux)
Sparateur pour intervalle de temps
Minutes : (rgle : reprsentation par
(minutes)
niveaux)
Sparateur pour intervalle de temps
Millisecondes : (rgle : reprsentation par
(millisecondes)
niveaux)
Sparateur pour intervalle de temps
Secondes : (rgle : reprsentation par
(secondes)
niveaux)
Indication temporelle
Dure
Indication temporelle
Dure
Indication temporelle
Heure du jour
Indication temporelle
Heure du jour

Dans les rgles syntaxiques


Le tableau suivant montre l'utilisation de certains caractres comme caractres de mise en
forme et comme sparateurs au niveau des rgles syntaxiques ainsi que dans les
commentaires et les attributs.
Caractre

Description

Rgle syntaxique, commentaire ou attribut

Sparateur pour l'indication du type,


dans une instruction aprs un repre de
saut
Fin de dclaration ou d'instruction

Dclaration de variable, dclaration d'instance,


fonction, section des instructions, instruction CASE

Sparateur dans les listes et les sections


de repres de saut

..

Indication de plage

(* *)
//
{}
%

Sparateur pour nom de FB et de DB,


adressage absolu
Appel de fonction et de bloc fonctionnel,
mise entre parenthses dans les
expressions,
liste d'initialisation de tableau
Dclaration d'un tableau,
variable complexe, partie de tableau,
indexation pour variables globales et
chanes de caractres
Bloc de commentaire
Ligne de commentaire
Section d'attributs
Introduction d'un identificateur direct

Introduction d'un non-mot-cl

()

[]

15-8

Dclaration de variable, section des instructions,


section d'affectation de DB, section de constantes,
section de repres de saut, dclaration de composant
Dclaration de variable, spcification du type de
donnes ARRAY, liste d'initialisation d'un tableau,
paramtres de FB, paramtres de FC, liste de
valeurs, dclaration d'instance
Spcification du type de donnes ARRAY, liste de
valeurs
Appel de FB, variable complexe
Appel de fonction et de FB, expression,
liste d'initialisation de tableau, multiplication simple,
expression de puissance
Spcification du type de donnes ARRAY,
spcification du type de donnes STRING

voir "Rgles lexicales"


voir "Rgles lexicales"
Affectation d'attributs
Pour programmer en conformit avec CEI, on peut
employer %M4.0 au lieu de M4.0.
Caractrise un identificateur comme n'tant pas un
mot-cl, par ex. #FOR.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Description du langage

Oprations
Le tableau suivant numre toutes les oprations de S7-SCL, les mots-cls tels que AND et
les oprations courantes reprsentes par un seul caractre. Il s'applique aux jeux
d'abrviations allemand et anglais.
Opration

Description

Rgle syntaxique

:=

Opration d'affectation, affectation de


dpart, initialisation de type de
donnes

Affectation de valeur, section d'affectation de


DB, section de constantes, dfinition de sortie
ou d'entre/sortie, dfinition d'entre,
dfinition d'entre/sortie

+, -

Oprations arithmtiques : oprations Expression, expression simple, expression de


unaires, signes
puissance

+, -, *, /

Oprations arithmtiques de base

Opration arithmtique de base,


multiplication simple

**

Oprations arithmtiques : opration


de puissance

Expression

NOT

Oprations logiques : ngation

Expression, oprande

AND, &, OR; XOR,

Oprations logiques de base

Opration logique de base

<,>,<=,>=,=,<>

Oprations de comparaison

Opration de comparaison

MOD; DIV

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

15-9

Description du langage

15.1.5 Mots-cls et identificateurs prdfinis


Le tableau suivant dresse la liste par ordre alphabtique des mots-cls de S7-SCL et des
identificateurs prdfinis. Ils sont accompagns d'une description et de la rgle syntaxique
dans laquelle ils sont utiliss comme blocs terminaux. De faon gnrale, les mots-cls ne
dpendent pas du jeu d'abrviations.
Mot-cl

Description

Rgle syntaxique

AND

Opration logique

Opration logique de base

ANY

Dsignation du type de donnes ANY

Spcification d'un type de donnes


paramtre

ARRAY

Introduction de la spcification d'un


tableau, suivie de la liste des indices
place entre "[" et "]".

Spcification du type de donnes


ARRAY

AT

Dclare un accs une variable

Dclaration de variable

BEGIN

Introduction de la section des instructions Bloc d'organisation, fonction, bloc


pour les blocs de code ou de la section
fonctionnel, bloc de donnes
d'initialisation pour les blocs de donnes

BLOCK_DB

Dsignation du type de donnes


BLOCK_DB

Spcification d'un type de donnes


paramtre

BLOCK_FB

Dsignation du type de donnes


BLOCK_FB

Spcification d'un type de donnes


paramtre

BLOCK_FC

Dsignation du type de donnes


BLOCK_FC

Spcification d'un type de donnes


paramtre

BLOCK_SDB

Dsignation du type de donnes


BLOCK_SDB

Spcification d'un type de donnes


paramtre

BOOL

Type de donnes simple pour donnes


binaires

Type de donnes binaire

BY

Introduction de l'incrment

Instruction FOR

BYTE

Type de donnes simple

Type de donnes binaire

CASE

Introduction de l'instruction de contrle


pour slection

Instruction CASE

CHAR

Type de donnes simple

Type de donnes caractre

CONST

Introduction de la dfinition de constantes Section de constantes

CONTINUE

Instruction de commande pour les


boucles FOR, WHILE et REPEAT

Instruction CONTINUE

COUNTER

Type de donnes pour compteur,


utilisable seulement dans une section de
paramtres

Spcification d'un type de donnes


paramtre

DATA_BLOCK

Introduction du bloc de donnes

Bloc de donnes

DATE

Type de donnes simple pour date

Type de donnes temporel

DATE_AND_TIME

Type de donnes complexe pour date et


heure

DATE_AND_TIME

DINT

Type de donnes simple pour entier


prcision double

Type de donnes numrique

DIV

Opration pour division

Opration arithmtique de base,


multiplication simple

DO

Introduction de la section des instructions Instruction FOR, instruction WHILE


pour l'instruction FOR

15-10

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Description du langage

Mot-cl

Description

Rgle syntaxique

DT

Type de donnes simple pour date et


heure

DATE_AND_TIME

DWORD

Type de donnes simple pour double mot Type de donnes binaire

ELSE

Introduction du cas o aucune condition


n'est remplie

Instruction IF, instruction CASE

ELSIF

Introduction de la condition alternative

Instruction IF

EN

Drapeau validant le bloc

ENO

Drapeau d'erreur du bloc

END_CASE

Fin de l'instruction CASE

Instruction CASE

END_CONST

Fin de la dfinition de constantes

Section de constantes

END_DATA_BLOCK

Fin du bloc de donnes

Bloc de donnes

END_FOR

Fin de l'instruction FOR

Instruction FOR

END_FUNCTION

Fin de la fonction

Fonction

END_FUNCTION_BLOCK

Fin du bloc fonctionnel

Bloc fonctionnel

END_IF

Fin de la condition IF

Instruction IF

END_LABEL

Fin de la section de repres de saut

Section de repres de saut

END_TYPE

Fin de l'UDT

Type de donnes utilisateur

END_ORGANIZATION_
BLOCK

Fin du bloc d'organisation

Bloc d'organisation

END_REPEAT

Fin de l'instruction REPEAT

Instruction REPEAT

END_STRUCT

Fin de la spcification d'une structure

Spcification du type de donnes


STRUCT

END_VAR

Fin d'une section de dclaration

de variables temporaires, de variables


statiques, de paramtres

END_WHILE

Fin de l'instruction WHILE

Instruction WHILE

EXIT

Abandon direct du traitement d'une


boucle

EXIT

FALSE

Constante boolenne prdfinie :


condition logique non remplie, valeur
gale 0

FOR

Introduction de l'instruction de contrle


pour traitement de boucle

Instruction FOR

FUNCTION

Introduction de la fonction

Fonction

FUNCTION_BLOCK

Introduction du bloc fonctionnel

Bloc fonctionnel

GOTO

Instruction ordonnant un saut un repre Saut dans le programme


de saut

IF

Introduction de l'instruction de contrle


pour slection

Instruction IF

INT

Type de donnes simple pour entier


prcision simple

Type de donnes numrique

LABEL

Introduction de la section de repres de


saut

Section de repres de saut

MOD

Opration arithmtique pour le reste de la Opration arithmtique de base,


division
multiplication simple

NIL

Pointeur zro

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

15-11

Description du langage

Mot-cl

Description

Rgle syntaxique

NOT

Opration logique faisant partie des


oprations unaires

Expression, oprande

OF

Introduction de la spcification du type de Spcification du type de donnes


donnes
ARRAY, instruction CASE

OK

Drapeau indiquant si les instructions d'un


bloc ont t excutes sans erreur

OR

Opration logique

Opration logique de base

ORGANIZATION_BLOCK

Introduction du bloc d'organisation

Bloc d'organisation

POINTER

Type de donnes pointeur, autoris


Voir chapitre "Donnes globales".
seulement dans la dclaration de
paramtre dans la section de paramtres,
n'est pas trait dans S7-SCL

PROGRAM

Introduction de la section des instructions Bloc fonctionnel


d'un FB (synonyme de
FUNCTION_BLOCK)

REAL

Type de donnes simple

Type de donnes numrique

REPEAT

Introduction de l'instruction de contrle


pour traitement de boucle

Instruction REPEAT

RET_VAL

Valeur en retour d'une fonction

Fonction

RETURN

Instruction de commande pour revenir


d'un sous-programme

Instruction RETURN

S5TIME

Type de donnes simple, format S5


spcial

Type de donnes temporel

STRING

Type de donnes pour chane de


caractres

Spcification du type de donnes


STRING

STRUCT

Introduction de la spcification d'une


structure, suivie de la liste des
composants

Spcification du type de donnes


STRUCT

THEN

Introduction des actions conscutives si


la condition est remplie

Instruction IF

TIME

Type de donnes simple pour indications


temporelle

Type de donnes temporel

TIMER

Type de donnes pour temporisation,


utilisable seulement dans une section de
paramtres

Spcification de type de donnes


paramtre

TIME_OF_DAY

Type de donnes simple pour l'heure du


jour

Type de donnes temporel

TO

Introduction de la valeur finale

Instruction FOR

TOD

Type de donnes simple pour l'heure du


jour

Type de donnes temporel

TRUE

Constante boolenne prdfinie :


condition logique remplie, valeur
diffrente de 0

TYPE

Introduction d'un UDT

Type de donnes utilisateur

VAR

Introduction d'une section de dclaration

Section de variables statiques

VAR_TEMP

Introduction d'une section de dclaration

Section de variables temporaires

UNTIL

Introduction de la condition d'abandon


pour instruction REPEAT

Instruction REPEAT

15-12

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Description du langage

Mot-cl

Description

Rgle syntaxique

VAR_INPUT

Introduction d'une section de dclaration

Section de paramtres

VAR_IN_OUT

Introduction d'une section de dclaration

Section de paramtres

VAR_OUTPUT

Introduction d'une section de dclaration

Section de paramtres

WHILE

Introduction de l'instruction de contrle


pour traitement de boucle

Instruction WHILE

WORD

Type de donnes simple pour mot

Type de donnes binaire

VOID

Pas de valeur de retour pour un appel de


fonction

Fonction

XOR

Opration logique

Opration logique de base

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

15-13

Description du langage

15.1.6 Identificateurs d'oprande et mots-cls de bloc

Donnes systme globales


Le tableau suivant dresse la liste des identificateurs d'oprande de S7-SCL et en donne une
description.
Indication de l'identificateur d'oprande :
prfixe de mmoire (A, E, M, PA, PE) ou bloc de donnes (D)
Indication de la taille de l'lment de donnes :
prfixe de taille (facultatif ou B, D, W, X)
L'abrviation est une combinaison de l'identificateur d'oprande (prfixe de mmoire ou D
pour bloc de donnes) et du prfixe de taille qui sont tous deux des rgles lexicales. Le
tableau est class dans l'ordre alphabtique des abrviations allemandes ; les abrviations
anglaises sont cites en regard.
Abrviation
allemande

Abrviation
anglaise

Prfixe de mmoire ou bloc de donnes

Prfixe de taille

A
AB
AD
AW
AX
D
DB
DD
DW
DX
E
EB
ED
EW
EX
M
MB
MD
MW
MX
PAB
PAD
PAW
PEB
PED
PEW

Q
QB
QD
QW
QX
D
DB
DD
DW
DX
I
IB
ID
IW
IX
M
MB
MD
MW
MX
PQB
PQD
PQW
PIB
PID
PIW

Sortie (par la mmoire image)


Sortie (par la mmoire image)
Sortie (par la mmoire image)
Sortie (par la mmoire image)
Sortie (par la mmoire image)
Bloc de donnes
Bloc de donnes
Bloc de donnes
Bloc de donnes
Bloc de donnes
Entre (par la mmoire image)
Entre (par la mmoire image)
Entre (par la mmoire image)
Entre (par la mmoire image)
Entre (par la mmoire image)
Mmento
Mmento
Mmento
Mmento
Mmento
Sortie (priphrie directe)
Sortie (priphrie directe)
Sortie (priphrie directe)
Entre (priphrie directe)
Entre (priphrie directe)
Entre (priphrie directe)

Bit
Octet
Double mot
Mot
Bit
Bit
Octet
Double mot
Mot
Bit
Bit
Octet
Double mot
Mot
Bit
Bit
Octet
Double mot
Mot
Bit
Octet
Double mot
Mot
Octet
Double mot
Mot

15-14

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Description du langage

Mots-cls de bloc
Ils servent l'adressage absolu de blocs. Le tableau donne la liste des mots-cls de bloc
classs d'aprs les abrviations allemandes, avec les abrviations anglaises
correspondantes.
Abrviation
allemande

Abrviation
anglaise

Prfixe de mmoire ou bloc de donnes

DB

DB

Bloc de donnes (Data_Block)

FB

FB

Bloc fonctionnel (Function_Block)

FC

FC

Fonction (Function)

OB

OB

Bloc d'organisation (Organization_Block)

SDB

SDB

Bloc de donnes systme (System_Data_Block)

SFC

SFC

Fonction systme (System_Function)

SFB

SFB

Bloc fonctionnel systme (System_Function_Block)

Temporisation (Timer)

UDT

UDT

Type de donnes global ou utilisateur (Userdefined_Data_Type)

Compteur (Counter)

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

15-15

Description du langage

15.1.7

Prsentation des blocs non terminaux


Un bloc non terminal est un lment complexe, dcrit par une rgle supplmentaire. Il est
reprsent par une bote. Le nom figurant dans cette bote est celui de la rgle plus
dtaille.
Bloc non terminal
<Nom de la rgle>
Nom de la rgle : majuscules ou minuscules !

Cet lment se rencontre dans les rgles lexicales et dans les rgles syntaxiques.

15.1.8 Prsentation des symboles


Un symbole est un lment complexe qui est employ comme lment de base dans les
rgles syntaxiques et expliqu dans les rgles lexicales. Il est reprsent par un rectangle.
Le NOM en majuscules est celui de la rgle lexicale plus dtaille (sans rectangle).
Symbole
<Nom de la rgle>
Nom de la rgle : toujours en majuscules !

Les symboles dfinis reprsentent des identificateurs qui dcoulent des rgles lexicales. Ils
dcrivent :
Les identificateurs
L'attribution de noms dans S7-SCL
Les constantes prdfinies et les drapeaux

15-16

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Description du langage

15.1.9 Identificateurs

Identificateurs
Les identificateurs servent adresser des objets du langage S7-SCL. Le tableau suivant
vous renseigne sur les classes d'identificateurs.
Type d'identificateur

Remarques, exemples

Mots-cls

par ex. instructions de commande BEGIN, DO, WHILE

Noms prdfinis

Noms de

Identificateurs d'oprande
dans les identificateurs
absolus
Noms quelconques de votre
choix conformes la rgle
IDENTIFICATEUR

Types de donnes standard (par ex. BOOL, BYTE, INT)

Fonctions standard prdfinies (par ex. ABS)

Constantes standard TRUE et FALSE

Pour donnes systme globales et blocs de donnes globaux :


par ex. E1.2, MW10, FC20, T5, DB30, DB10.D4.5
Noms de

Variables dclares

Composants de structure

Paramtres

Constantes dclares

Repres de saut

Mnmoniques de la table des Conformes la rgle lexicale IDENTIFICATEUR ou la rgle lexicale


mnmoniques
Mnmonique, c'est--dire crits entre guillemets, par ex. "xyz"

Majuscules et minuscules
La distinction entre majuscules et minuscules n'est pas faite pour les mots-cls. Depuis la
version 4.0 de S7-SCL, elle n'est plus faite non plus pour les noms prdfinis, pour les noms
que vous choisissez vous-mme, par ex. pour les variables, ainsi que pour les
mnmoniques de la table des mnmoniques (voir le tableau ci-aprs).
Type d'identificateur

Distinction entre majuscules et


minuscules ?

Mots-cls

non

Noms prdfinis des types de donnes standard

non

Noms des fonctions standard prdfinies

non

Noms prdfinis des constantes standard

non

Identificateurs d'oprande dans les identificateurs absolus

non

Noms quelconques de votre choix

non

Mnmoniques de la table des mnmoniques

non

Vous pouvez donc crire aussi en minuscules les noms des fonctions standard, comme par
ex. BYTE_TO_WORD et ABS. Il en est de mme pour les paramtres des fonctions de
temporisation et de comptage, par ex. SV, se ou ZV.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

15-17

Description du langage

15.1.10 Attribution de noms dans S7-SCL

Attribution de noms au choix


Il y a deux faons d'attribuer des noms.
Vous pouvez les attribuer vous-mme dans S7-SCL. Ils doivent tre conformes la rgle
IDENTIFICATEUR qui s'applique chaque nom employ dans S7-SCL.
Vous pouvez les introduire par l'intermdiaire de STEP 7 l'aide de la table des
mnmoniques. Ils suivent alors la rgle IDENTIFICATEUR ou bien celle des
mnmoniques. Le mnmonique tant indiqu entre guillemets, il peut comporter tous les
caractres imprimables (par ex. des espaces).
IDENTIFICATEUR
Lettre

Lettre

Caractre de
soulignement

Lettre

Caractre de
soulignement

Chiffre

Chiffre

MNEMONIQUE
"

Caractre
imprimable

"

Les mnmoniques doivent tre dfinis dans la table des mnmoniques.

Rgles pour l'attribution de noms


Tenez compte des points suivants :
Choisissez des noms univoques et vocateurs qui contribuent la clart du programme.
Assurez-vous que le nom n'est pas dj utilis par le systme, par exemple pour les
identificateurs des types de donnes ou des fonctions standard.
Domaine de validit : Dans le cas de variables globales, s'tend tout le programme,
dans le cas de variabales locales, se limite au bloc. On trouve donc des variables de
mme nom dans des blocs diffrents (voir le tableau ci-dessous sur les rgles
d'attribution de noms).

15-18

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Description du langage

Restrictions
En attribuant un nom, tenez compte des quelques restrictions suivantes.
Les noms doivent tre univoques dans leur zone de validit, c'est--dire qu'il n'est pas
permis d'utiliser encore une fois dans le mme bloc un nom qui y a dj t attribu. En
outre, il ne faut pas employer les noms suivants qui sont utiliss par le systme :
Noms de mots-cls, par ex. CONST, END_CONST, BEGIN ;
Noms des oprations, par ex. AND, XOR ;
Noms des identificateurs prdfinis, par ex. noms de types de donnes tels que BOOL,
STRING, INT ;
Noms des constantes prdfinies TRUE et FALSE ;
Noms des fonctions standard, par ex. ABS, ACOS, ASIN, COS, LN ;
Noms des identificateurs d'oprande pour donnes systme globales, par ex. EB, EW,
ED, AB, AW, AD MB, MD.

Utilisation de la rgle IDENTIFICATEUR


Le tableau suivant prcise dans quels cas vous pouvez attribuer des noms conformes la
rgle IDENTIFICATEUR.
Identificateur

Description

Rgle

Nom de bloc

Nom symbolique de bloc

DESIGNATION DE BLOC, appel


de fonction

Nom de temporisation et de
compteur

Nom symbolique de temporisation DESIGNATION DE


et de compteur
TEMPORISATION,
DESIGNATION DE COMPTEUR

Nom d'attribut

Nom pour un attribut

Affectation d'attribut

Nom de constante

Dclaration d'une constante


symbolique, utilisation

Section de constantes, constante

Repre de saut

Dclaration d'un repre de saut,


utilisation d'un repre de saut

Section de repres de saut,


section des instructions,
instructions GOTO

Nom de variable

Dclaration d'une variable


temporaire ou statique

Dclaration de variable, variable


simple, variable complexe

Nom d'instance locale

Dclaration d'une instance locale Dclaration d'instance, nom


d'appel de FB

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

15-19

Description du langage

DESIGNATION DE BLOC
Dans la rgle DESIGNATION DE BLOC, vous pouvez employer au choix les rgles
IDENTIFICATEUR et Mnmonique.
DESIGNATION DE BLOC

Mot-cl
de bloc

Numro

DB, FB, FC, OB, SDB, SFC, SFB, UDT


IDENTIFICATEUR

Mnmonique

Il en est de mme pour les rgles DESIGNATION DE TEMPORISATION et DESIGNATION


DE COMPTEUR.

15.1.11 Constantes et drapeaux prdfinis


Les deux tableaux s'appliquent aux jeux d'abrviations allemand comme anglais.

Constantes
Abrviation

Description

FALSE

Constante boolenne prdfinie (constante standard) de valeur 0. Sa signification


logique est qu'une condition n'est pas remplie.

TRUE

Constante boolenne prdfinie (constante standard) de valeur 1. Sa signification


logique est qu'une condition est remplie.

Drapeaux

15-20

Abrviation

Description

EN

Drapeau validant le bloc

ENO

Drapeau d'erreur du bloc

OK

Drapeau qui est mis FALSE quand une erreur s'est produite dans l'excution
d'une instruction.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Description du langage

15.2

Rgles lexicales

15.2.1 Prsentation des rgles lexicales


Les rgles lexicales dcrivent la structure des lments (symboles) sur lesquels porte
l'analyse lexicale ralise par le compilateur. Le format de la notation n'est pas libre et les
rgles sont appliquer rigoureusement. Cela signifie en particulier que :
L'insertion de caractres de mise en forme n'est pas autorise.
L'insertion de blocs et de lignes de commentaire n'est pas possible.
L'insertion d'attributs pour les identificateurs n'est pas possible.

15.2.2 Dsignations
Rgle

Diagramme syntaxique

Identificateur
IDENTIFICATEUR
Lettre

Lettre

Caractre de
soulignement

Lettre

Caractre de
soulignement
Chiffre

Chiffre

Dsignation de bloc
DESIGNATION DE BLOC

Mot-cl
de bloc

Numro

DB, FB, FC, OB, SDB, SFC, SFB, UDT


IDENTIFICATEUR

Mnmonique

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

15-21

Description du langage

Rgle

Diagramme syntaxique

Dsignation de
temporisation

Numro

T
Abrviation allemande
et anglaise

IDENTIFICATEUR

Mnmonique

Dsignation de compteur
Numro

Z
Abrviation allemande 'Z'
Abrviation anglaise 'C'
IDENTIFICATEUR

Mnmonique

Mot-cl de bloc
OB

Bloc d'organisation

FC

Fonction

SFC

Fonction systme
Bloc fonctionnel

FB

Bloc fonctionnel systme

SFB

Bloc de donnes

DB

Type de donnes utilisateur


(User Data Type)

UDT

Mnmonique
"

Caractre
imprimable

"

Numro
Chiffre

15-22

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Description du langage

15.2.3 Constantes
Rgle

Diagramme syntaxique

Constante binaire
CONSTANTE BINAIRE
BOOL#
SUITE DE CHIFFRES DECIMAUX
SUITE DE CHIFFRES OCTAUX
SUITE DE CHIFFRES HEXA
SUITE DE CHIFFRES BINAIRES
CARACTERES (1)

BYTE#

WORD#
DWORD#

(1) pour le type BYTE seulement

Constante entire
CONSTANTE ENTIERE
INT#

DINT#

SUITE DE CHIFFRES DECIMAUX


SUITE DE CHIFFRES OCTAUX
SUITE DE CHIFFRES HEXA
SUITE DE CHIFFRES BINAIRES
CARACTERES (1)

(1) pour le type INT seulement

Constante relle
CONSTANTE REELLE

SUITE DE CHIFFRE
DECIMAUX

SUITE DE CHIFFRE
DECIMAUX

REAL#
-

Suite de chiffres
dcimaux

SUITE DE CHIFFRE
DECIMAUX

SUITE DE CHIFFRE
DECIMAUX

Exposant

Suite de chiffres dcimaux

Chiffre

_
Chiffres dcimaux : 0-9

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Caractre de soulignement

15-23

Description du langage

Rgle

Diagramme syntaxique

Suite de chiffres
binaires
Chiffre binaire

2#

_
Chiffre binaire : 0 ou 1

Caractre de soulignement

Suite de chiffres octaux


Suite de chiffres octaux
Chiffre octal

8#

_
Caractre de soulignement

Suite de chiffres
hexadcimaux

CHIFFRE HEXADECIMAL
Chiffre hexadcimal

16#

_
Chiffre hexadcimal : 0-9
A-F

Caractre de soulignement

Exposant
Exposant
E

+
SUITE DE CHIFFRES
DECIMAUX

Constante sur caractre


CONSTANTE SUR CARACTERE
CHAR#

'

Caractre

'

SUITE DE CHIFFRES
DECIMAUX

15-24

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Description du langage

Rgle

Diagramme syntaxique

Constante sur chane


CONSTANTE SUR CHAINE

'

Interruption
de la chane

Caractre

'

Caractre

Caractre
&DUDFWUH
&DUDFWUH
LPSULPDEOH


&DUDFWUHGDOLJQHPHQW
&DUDFWGHUHPSODFHPHQW
RX
&DUDFWGHFRPPDQGH
3RX/RX5RX7RX1
&KLIIUH
KH[DGHFLPDO

&KLIIUH
KH[DGHFLPDO

5HSUVHQWDWLRQGHVXEVWLWXWLRQHQFRGHKH[DGFLPDOH
3
/
5
7
1

Interruption d'une
chane de caractres

6DXWGHSDJH
&KDQJHPHQWGHOLJQH
5HWRXUFKDULRW
7DEXODWLRQ
1RXYHOOHOLJQH

QRQDXWRULVH

Interruption d'une chane de caractres

Caractre de
mise en forme

Caractre d'espacement (blank)


de changement de ligne (linefeed)
de retour chariot (carriage return)
de saut de page (formfeed, page)
de tabulation horizontale (tabulator)

$>

$<
Commentaire

Date
Date

DATE#
Indication de la date
D#

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

15-25

Description du langage

Rgle

Diagramme syntaxique

Dure
Dure
TIME#

Reprsentation dcimale

T#

Reprsentation par niveau

Reprsentation dcimale

-Chaque unit de temps (heures, minutes) ne doit tre indique qu'une seule fois
-L'ordre - jours, heures, minutes, secondes, millisecondes - doit tre respect

Heure du jour
Heure du jour
TIME_OF_DAY#
Indication de l'heure du jour
TOD#

Date et heure
Date et heure
DATE_AND_TIME#
Indication de la date

SUITE DE CHIFFRES
DECIMAUX

Indication de l'heure du jour

DT#

Indication de date
Indication de la date
SUITE DE CHIFFRES
DECIMAUX
Anne

15-26

Mois

SUITE DE CHIFFRES
DECIMAUX
Jour

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Description du langage

Rgle

Diagramme syntaxique

Indication d'heure du
jour

Indication de l'heure du jour


SUITE DE CHIFFRES
DECIMAUX

Indication des heures

Indication des minutes

SUITE DE CHIFFRES
DECIMAUX

SUITE DE CHIFFRES
DECIMAUX
Indication des millisecondes

Indication des secondes

Reprsentation
dcimale

SUITE DE CHIFFRES
DECIMAUX

Reprsentation dcimale
SUITE DE CHIFFRES
DECIMAUX

SUITE DE CHIFFRES
DECIMAUX

SUITE DE CHIFFRES
DECIMAUX

Jours

SUITE DE CHIFFRES
DECIMAUX

Heures

SUITE DE CHIFFRES
DECIMAUX

SUITE DE CHIFFRES
DECIMAUX

SUITE DE CHIFFRES
DECIMAUX

Secondes

SUITE DE CHIFFRES
DECIMAUX

SUITE DE CHIFFRES
DECIMAUX

MS

Millisecondes

SUITE DE CHIFFRES
DECIMAUX

Minutes

Pour passer la reprsentation dcimale, il faut que les units temporelles


n'aient pas encore t dfinies

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

15-27

Description du langage

Rgle

Reprsentation par
niveaux

Diagramme syntaxique
Reprsentation par niveaux

SUITE DE CHIFFRES
DECIMAUX

SUITE DE CHIFFRES
DECIMAUX

SUITE DE CHIFFRES
DECIMAUX

Minutes

SUITE DE CHIFFRES
DECIMAUX

Heures

Jours

SUITE DE CHIFFRES
DECIMAUX

Secondes

MS

Millisecondes

15-28

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Description du langage

15.2.4 Adressage absolu

Rgle

Diagramme syntaxique

Adressage simple de la
mmoire

IDENTIFICATEUR
D'OPERANDE

Adresse
Adressage absolu

IDENTIFICATEUR

Adressage symbolique

MNEMONIQUE

Adessage index de la
mmoire
Prfixe de
taille

Prfixe de
mmoire

Expression
de base

Identificateur d'oprande

Expression
de base

Indice
Pour adressage binaire seulement

Identificateur d'oprande
pour mmoire

Identificateur d'oprande
Prfixe
de mmoire

Prfixe
de taille

Adresage absolu d'un DB


Identificateur d'oprande DB

Adresse

Adressage absolu

Adressage index
d'un DB

Index

Identificateur
d'oprande DB

Expression
de base

Expression
de base

uniquement pour l'adressage par bit

Adressage structur d'un


DB
IDENTIFICATION
DU DB

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Variable
simple

15-29

Description du langage

Rgle

Diagramme syntaxique

Identificateur d'oprande
DB

Identificateur d'oprande
DESIGNATION
DU DB

Prfixe
de taille

Prfixe de mmoire
Prfixe de mmoire
I

Adresse pour mmoire et


DB

Sortie

Mmento

PE

PI

Priphrie des entres

PA

PQ

Priphrie des sorties

Abrviations anglaises

Abrviations allemandes

Prfixe de taille pour


mmoire et DB

Entre

Prfixe de taille
X

Bit

Octet

Mot

Double mot

Adresse
Numro

Numro

uniquement pour une adresse binaire

Adressage de l'instance
locale
IDENTIFICATEUR

Variable
simple

Nom de l'instance locale

15-30

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Description du langage

15.2.5 Commentaires
Voici les restrictions dont vous devez tenir compte lorsque vous insrez des commentaires :
L'imbrication de commentaires est autorise quand l'option "Imbrication de commentaires
possible" est active.
L'insertion de commentaires est possible n'importe o dans les rgles syntaxiques, mais
il ne l'est pas dans les rgles lexicales.
Rgle

Diagramme syntaxique

Commentaire
Ligne de commentaire

Bloc de commentaire

Ligne de commentaire
Ligne de commentaire
Caractre
imprimable

//

CR
Retour chariot (carriage return)

Bloc de commentaire
%ORFGHFRPPHQWDLUH

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

&DUDFWUH

15-31

Description du langage

15.2.6

Attributs de bloc
Les attributs de blocs peuvent se trouver avec la syntaxe suivante aprs la DESIGNATION
DU BLOC et avant la dclaration de la premire section de variables ou de paramtres.

Rgle

Diagramme syntaxique

Titre
&DUDFWUH
LPSULPDEOH

7,7/(

Version
Version

NOMBRE
DECIMAL

NOMBRE
DECIMAL

Protection de bloc

KNOW_HOW_PROTECT
Auteur
FDUDFWUHVPD[


$87+25

,'(17,),&$7(85

&DUDFWUH
LPSULPDEOH

Nom
FDUDFWUHVPD[
1$0(

,'(17,),&$7(85

&DUDFWUH
LPSULPDEOH

Famille de blocs
FDUDFWUHVPD[
)$0,/<

,'(17,),&$7(85

&DUDFWUH
LPSULPDEOH

Attributs systme pour


bloc

Attributs systme de blocs


24 caractres au maximum

IDENTIFICATEUR

:=

'

caractre
imprimable

'

15-32

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Description du langage

15.2.7 Options du compilateur


Les options du compilateur se trouvent dans une ligne distincte en dehors des limites de
blocs dans la source. Aucune distinction n'est faite entre les majuscules et les minuscules.
Rgle

Diagramme de syntaxe

Option du compilateur

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

15-33

Description du langage

15.3

Rgles syntaxiques

15.3.1 Prsentation des rgles syntaxiques


Les rgles syntaxiques dcrivent la structure de S7-SCL en s'appuyant sur les rgles
lexicales. En respectant ces rgles, vous pouvez crer votre programme S7-SCL en toute
libert de format.
Chacune des rgles est prcde de son nom. Si elle est applique dans une rgle de
niveau hirarchique suprieur, son nom figure dans un rectangle.
Si le nom est crit en majuscules dans le rectangle, il s'agit d'un symbole qui est dcrit dans
les rgles lexicales.
Pour les noms de rgle figurant dans un rectangle aux coins arrondis ou dans un cercle,
vous trouverez des informations au chapitre "Description formelle du langage".

Libert de format
La libert de format implique que :
L'insertion de caractres de mise en forme est partout possible ;
L'insertion de lignes et de blocs de commentaire est possible.

15-34

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Description du langage

15.3.2 Organisation des sources S7-SCL

Rgle

Diagramme syntaxique

Programme S7-SCL
Elment du programme SCL

Elment de programme
S7-SCL

Bloc d'organisation

Fonction

Bloc fonctionnel

Bloc de donnes

Type de donnes utilisateur

Bloc d'organisation
Bloc d'organisation

ORGANIZATION_BLOCK

BEGIN

DESIGNATION
DE L'OB

Section des instructions

Section de dclaration de l'OB

END_ORGANIZATION_BLOCK

Fonction
N'oubliez pas que pour les
fonctions sans VOID dans la
section des instructions, la
valeur de retour doit tre
affecte au nom de la
fonction !

Fonction
VOID

FUNCTION

Section de dclaration de la FC

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

DESIGNATION
DE LA FC

BEGIN

Section des instructions

Spcification du
type de donnes

END_FUNCTION

15-35

Description du langage

Rgle

Diagramme syntaxique

Bloc fonctionnel
Bloc fonctionnel
PROGRAM

DESIGNATION
DU FB

Section de dclaration du FB

FUNCTION_BLOCK

END_PROGRAM

BEGIN

Section des instructions


END_FUNCTION_BLOCK

Bloc de donnes
Bloc de donnes
DESIGNATION
DU DB

DATA_BLOCK

BEGIN

Type de donnes
utilisateur

END_DATA_BLOCK

Type de donnes utilisateur

TYPE

15-36

Section d'affectation du DB

Section de dclaration du DB

DESIGNATION
DE L`UDT

Spcification
du type de donnes
STRUCT

END_TYPE

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Description du langage

15.3.3 Composition des sections de dclaration

Rgle

Diagramme syntaxique

Section de dclaration de
l'OB
Section des constantes
Section des repres de saut
Section des
variables temporaires

Section de dclaration de
la FC
Section des constantes
Section des repres de saut

Section des
variables temporaires
Section des paramtres
Interface

Section de dclaration du
FB
Section des constantes
Section des repres de saut
Section des
variables temporaires
Section des
variables statiques

Section des paramtres

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Interface

15-37

Description du langage

Rgle

Diagramme syntaxique

Section de dclaration du
DB
DESIGNATION
DE L'UDT
Structure de la
spcification du
type de donnes

Section d'affectation du
DB

Section d'affectation du DB
Variable simple

:=

Constante*

* en notation LIST

Section des constantes


Section des constantes

CONST

IDENTIFICATEUR

:=

Expression
simple

END_CONST

Mnmonique de
la constante

Section des repres de


saut

Section de dclaration des repres de saut

LABEL

IDENTIFICATEUR

END_LABEL

Repre de saut
,

15-38

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Description du langage

Rgle

Section des variables


statiques

Diagramme syntaxique

Section de variables statiques


Dclaration
des variables
END_VAR

VAR
Dclaration
d'instance*

* pour FB seulement

Dclaration de variables

IDENTIFICATEUR

1)

Spcification du
type de donnes

Initialisation du
type de donnes

Nom de la variable,
du paramtre
ou du composant
Nom du composant dans la structure
,
Pas l'initialisation

1)

Attributs systme de paramtres

24 caractres au maximum

IDENTIFICATEUR

:=

'

caractre
imprimable

'

Initialisation du type de
donnes

INITIALISATION

CONSTANTE

LISTE DINITIAL.
DUN TABLEAU

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

15-39

Description du langage

Rgle

Diagramme syntaxique

Liste d'initialisation de
tableau

LISTE DE REPETITION DE CONSTANTES

LISTE DE REPET.
DE CONSTANTES

CHAINE DE CHIFFRES
DECIMALES

CONSTANTE

FACTEUR DE REPETITION

LISTE DINITIALISATION DE TABLEAUX


CONSTANTE

LISTE DE REPETIT.

DE CONSTANTES

Dclaration d'instance
(possible seulement dans
la section VAR d'un FB)

Le FB et le SFB doivent
dj exister !

Dclaration d'instances
DESIGNATION
DU FB
IDENTIFICATEUR

Nom de l'instance locale

DESIGNATION
DU SFB

Section de variables
temporaires

Section de variables temporaires

VAR_TEMP

Dclaration
de la variable

END_VAR

,
L'initialisation n'est pas possible

15-40

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Description du langage

Rgle

Diagramme syntaxique

Section de paramtres
Section des paramtres
VAR_INPUT
Dclaration
de la variable

VAR_OUTPUT

END_VAR

VAR_IN_OUT
L'initialisation est uniquement possible pour VAR_INPUT et VAR_OUTPUT

Spcification du type de
donnes

Type de donnes
lmentaire

DATE_AND_TIME

Spcification du
type de donnes
chane de caractres

Spcification du
type de donnes
ARRAY
Spcification du
type de donnes
STRUCT
DESIGNATION
DE L'UDT

Spcification du
type de donnes
paramtre

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

15-41

Description du langage

15.3.4

Types de donnes dans S7-SCL

Rgle

Diagramme syntaxique

Type de donnes simple


Type de donnes
binaire

Type de donnes
caractre

Type de donnes
numrique

Type de donnes
temporel

Type de donnes binaire

Type de donnes
caractre

Spcification du type de
donnes STRING

BOOL

Bit

BYTE

Octet

WORD

Mot

DWORD

Double mot

CHAR

Spcification du type de donnes STRING

STRING

Expression
simple

Longueur de la chane

Type de donnes
numrique

INT
DINT
REAL

15-42

Entier
Entier, double prcision

Nombre rel

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Description du langage

Rgle

Diagramme syntaxique

Type de donnes
temporel

S5TIME

Temps
Format S5

TIME

Temps

TIME_OF_DAY
Heure du jour
TOD
Date

DATE

DATE_AND_TIME
DATE_AND_TIME
DATE_AND_TIME#
Indication de la date

Indication de l'heure du jour

DT#

Spcification du type de
donnes ARRAY

Spcification du type de donnes ARRAY

ARRAY

Spcification des indices

Indice
1

..

Indice
n

,
6 dimensions au plus

Spcification du
type de donnes

OF

Spcification du type de
donnes STRUCT
N'oubliez pas de terminer le Spcification du type de donnes STRUCT
mot-cl END_STRUCT par
un point-virgule !
Dclaration des
STRUCT

composants

END_STRUCT

Dclaration des
composants
IDENTIFICATEUR

Spcification du
type de donnes

Initialisation
des donnes

Nom du composant

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

15-43

Description du langage

Rgle

Spcification du type de
donnes paramtre

Diagramme syntaxique

TIMER
COUNTER

ANY

Compteur
Type quelconque

POINTER

Adresse

BLOCK_FC

Fonction

BLOCK_FB

Bloc fonctionnel

BLOCK_DB

Bloc de donnes

BLOCK_SDB

15-44

Temporisation

Bloc de donnes systme

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Description du langage

15.3.5 Section des instructions

Rgle

Diagramme syntaxique

Section des instructions


Section des instructions

IDENTIFICATEUR

Instruction

Repre de saut

Instruction
Instruction
Affectation de valeur

Excution de
sous-programme

Instruction de contrle

Affectation de valeur
Affectation de valeur

Variable simple

:=

Expression

Variable absolue
Dans zones de mmoire CPU
Variable dans DB

Variable instance locale

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

15-45

Description du langage

Rgle

Diagramme syntaxique

Variable tendue
Variable tendue
Variable simple
Variable absolue
pour les zones de mmoire
de la CPU
Variable dans un DB

Variable dans une


instance locale
Appel de FC

Variable simple
IDENTIFICATEUR
Nom de la variable
ou du paramtre
Variable
structure

Tableau
simple

Variable compose
IDENTIFICATEUR

Identificateur au dbut
Nom de la variable ou
du paramtre

Tableau
simple
Nom du composant
suit la virgule
.

15-46

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Description du langage

15.3.6 Affectations de valeur

Rgle

Diagramme syntaxique

Expression
Expression
Oprande
Oprations logiques
de base

Expression

Expression

Oprations de
comparaison

Oprations
arithmtiques de base
Puissance

Exposants

**

Expression

Expression
Plus unaire

Moins unaire

NOT

Ngation
(

Expression

Expression simple

+
Expression
simple

Multiplication
simple
-

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

15-47

Description du langage

Rgle

Diagramme syntaxique

Multiplication simple
*

Multiplication
simple

DIV
MOD

Constante
(

Expression
simple

Oprande
Constante

Variable tendue

( Expression)

NOT

Oprande

Variable tendue
Variable tendue
Variable simple
Variable absolue
pour les zones de mmoire
de la CPU
Variable dans un DB

Variable dans une


instance locale
Appel de FC

15-48

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Description du langage

Rgle

Diagramme syntaxique

Constante
Constante

Valeur numrique

Chane de caractres

Nom de constante

Exposant
Exposant
E

+
SUITE DE CHIFFRES
DECIMAUX

Opration logique de
base
AND

Opration arithmtique
de base

OR

MOD

DIV

>

<=

>=

<>

Opration de comparaison

<

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

XOR

Oprations arithmtiques de base

Opration de
comparaison

&

15-49

Description du langage

15.3.7

Appel de fonctions et de blocs fonctionnels

Rgle

Diagramme syntaxique

Appel de FB
Appel d 'un FB
FB : bloc fonctionnel
SFB : bloc fonctionnel systme

DESIGNATION
DU FB

Nom de l'instance globale


DESIGNATION
DU SFB

DESIGNATION
DU DB

Paramtres du FB

IDENTIFICATEUR

Nom de l'instance locale

Appel de fonction
Appel de fonction

DESIGNATION
DE LA FC

DESIGNATION
DE LA SFC

Paramtres
de la FC

FC : fonction

IDENTIFICATEUR

SFC : fonction systme

Nom de la fonction standard


ou mnmonique

Fonction standard ralise dans le compilateur

Paramtres de FB
Paramtres du FB
Affectation
de l'entre

Affectation de
l'entre/sortie

15-50

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Description du langage

Rgle

Diagramme syntaxique

Paramtres de FC
Paramtres d'une FC
Expression
Affectation
de l'entre
Affectation de
la sortie ou de
l'entre/sortie
,

Affectation de l'entre
Affectation de l'entre

Paramtre effectif
Expression
DESIGNATION DE
LA TEMPORISATION

IDENTIFICATEUR

:=
DESIGNATION
DU COMPTEUR

Nom du paramtre
d'entre

DESIGNATION
DU BLOC

(Paramtre formel)

Affectation de
l'entre/sortie
Affectation de l'entre/sortie

IDENTIFICATEUR

Variable
tendue

:=

Nom du paramtre
d'entre/sortie

Paramtre effectif

(Paramtre formel)

Affectation de la sortie

$IIHFWDWLRQGHOHQWUHVRUWLH


9DULDEOH
WHQGXH

,'(17,),&$7(85
1RPGXSDUDPWUH
GHQWUHVRUWLH
SDUDPWUHIRUPHO

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

!

3DUDPWUHHIIHFWLI

DSSHOGXQ)&

15-51

Description du langage

15.3.8 Instructions de contrle

Rgle

Diagramme syntaxique

Instruction IF
Instruction IF

N'oubliez pas de terminer


le mot-cl END_IF par un
point-virgule !

IF

Expression

THEN

Section
des instructions

THEN

Section
des instructions

Condition

Expression

ELSIF

Condition

Section
des instructions

ELSE

END_IF

Instruction CASE
Instruction CASE

N'oubliez pas de terminer


le mot-cl END_CASE par
un point-virgule !

Expression de slection (entier)


CASE

Expression

OF

Valeur

Liste de valeurs

ELSE

15-52

Section
des instructions

Section
des instructions

END_CASE

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Description du langage

Rgle

Diagramme syntaxique

Liste de valeurs
Liste de valeurs
Nombre entier
Valeur

Valeur

..

Valeur

Valeur
Constante numrique

IDENTIFICATEUR
Nom de la constante

Instructions d'itration
et de saut

Instruction
FOR

Instruction
WHILE

Instruction
REPEAT
Instruction
CONTINUE

Instruction
EXIT

Instruction
RETURN

Instruction
GOTO

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

15-53

Description du langage

Rgle

Diagramme syntaxique

Instruction FOR
Instruction FOR

N'oubliez pas de terminer


le mot-cl END_FOR par
un point-virgule !

Affectation
initiale

FOR

pour la valeur terminale

pour la valeur initiale

Expression
de base

BY

Expression
de base

TO

Section
des instructions

DO

pour l'incrment

END_FOR

Instruction initiale
Instruction initiale
Variable
tendue

:=

Expression
de base
pour la valeur initiale

Type de donnes
INT/DINT

Instruction WHILE
Instruction WHILE

N'oubliez pas de terminer


le mot-cl END_WHILE
par un point-virgule.

WHILE

Expression

Section
des instructions

DO

END_WHILE

Condition d'excution

Instruction REPEAT
Instruction REPEAT

N'oubliez pas de terminer


le mot-cl END_REPEAT
par un point-virgule.

REPEAT

Section
des instructions

UNTIL

Expression

END_REPEAT

Condition d'abandon

15-54

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Description du langage

Rgle

Diagramme syntaxique

Instruction CONTINUE
Instruction CONTINUE

CONTINUE

Instruction RETURN
Instruction RETURN
RETURN

Instruction EXIT
Instruction EXIT

EXIT

Saut dans le
programme

Branchement de
programme
GOTO

IDENTIFICATEUR
Repre de saut

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

15-55

Description du langage

15-56

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

16

Conseils et astuces

Code optimal l'excution en cas d'adressage de structures dans les blocs de


donnes
Si vous devez adresser plus d'une fois une structure dans un bloc de donnes, il est
recommand de procder de la manire suivante :
1. Crez une variable locale du type de la structure.
2. Affectez-lui une fois la structure se trouvant dans le bloc de donnes.
3. Aprs quoi vous pouvez utiliser la variable plusieurs fois dans le code, sans devoir
adresser de nouveau le DB.
Exemple :
DB100.tableau[i].value :=
DB100.tableau[i].valeur1 * DB100.tableau[i].valeur2 /
DB100.tableau[i].valeur3 ;
Cet exemple ncessitera moins de mmoire et sera d'excution plus courte si vous le
programmez comme suit :
VAR_TEMP
tmp : STRUCT
value
valeur1
valeur2
valeur3
END_STRUCT;

:
:
:
:

REAL;
REAL;
REAL;
REAL;

END_VAR
tmp := DB100.tableau[i];
DB100.tableau[i].value := tmp.valeur1 * tmp.valeur2 / tmp.valeur3;

Nota
Avec VAR_TEMP, vous rangez des variables dans la pile de la CPU. Cela peut conduire un
dpassement de capacit de la pile pour les petites CPU. Evitez d'utiliser trop de variables temporaires
dans votre programme !

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

16-1

Conseils et astuces

Problmes lors de l'affectation de la pile L pour les petites CPU


Les problmes survenant lors de l'affectation de la pile L sont dus sa taille rduite dans les
petites CPU. Ceci est facile viter dans la plupart des cas, si vous tenez compte des
conseils suivants.
Utilisez les variables temporaires avec modration (section VAR_TEMP ou VAR).
Ne dclarez pas de variable de type de donnes complexe et rduisez au minimum le
nombre de variables de type simple.
Utilisez des variables statiques :
-

Quand vous programmez un FB, vous pouvez employer la section VAR au lieu de
VAR_TEMP.

Quand vous programmez un OB ou une FC, rabattez-vous sur un bloc de donnes


global ou sur des mmentos.

Evitez les expressions volumineuses. Pour les traiter, le compilateur enregistre en effet
des rsultats intermdiaires dans la pile. Selon le type ou le nombre de ces rsultats, la
taille de pile disponible peut s'en trouver dpasse.
Solution :
Dcomposez l'expression en plusieurs expressions plus petites et affectez les rsultats
intermdiaires des variables explicites.

Sortie de nombres REAL durant la visualisation


Pour sortir des nombres rels non reprsentables, la fonction de test "Visualiser" peut fournir
les configurations suivantes :
Valeur

Reprsentation

+ infinity

1.#INFrandom-digits

- infinity

-1.#INFrandom-digits

Indefinite

digit.#INDrandom-digits

NaN digit.

#NANrandom-digits

Affichage de programmes S7-SCL en reprsentation LIST


Vous pouvez ouvrir un bloc S7-SCL avec l'diteur CONT/LOG/LIST et afficher ainsi les
instructions MC7 gnres. Mais n'effectuez pas de modifications en LIST, car :
les instructions MC7 affiches ne reprsentent pas ncessairement un bloc LIST correct
dans chacun des cas,
une compilation sans erreur avec le compilateur LIST suppose normalement des
modifications qui demandent des connaissances approfondies tant de LIST que de
S7-SCL,
le bloc compil avec LIST ne porterait plus la marque du langage S7-SCL, mais celle du
langage LIST,
la source S7-SCL et le code MC7 ne seraient plus cohrents.

16-2

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Conseils et astuces

Traitement des horodatages de la source, de l'interface et du code


Horodatage de la source
Une source S7-SCL a toujours l'horodatage de la dernire modification.
Horodatage du bloc de code
Les blocs (FB, FC et OB) reoivent toujours l'horodatage du moment de la compilation.
Horodatage de l'interface du bloc
L'horodatage d'une interface est modifi seulement quand la structure de l'interface est
modifie. En d'autres termes :
L'horodatage d'une interface ne change pas quand des modifications sont apportes la
section des instructions, aux attributs, au commentaire, la section VAR_TEMP (pour les
FC aussi VAR) ou l'orthographe des noms de paramtres ou de variables. Ceci est vrai
aussi pour les interfaces de rang infrieur dans la hirarchie.
L'horodatage d'une interface est mis jour quand le type de donnes ou une ventuelle
initialisation d'un paramtre ou d'une variable se trouvent modifis ou encore quand des
paramtres ou des variables sont supprims et quand le nom du FB change en cas de
multi-instance. Ceci est vrai aussi pour les interfaces de rang infrieur dans la hirarchie.

Division de deux valeurs entires avec rsultat en format REAL


Vous programmez en S7-SCL l'instruction suivante :
Fraction:=Dividend/Divisor;
Fraction tant une valeur relle, tandis que Dividend et Divisor sont des valeurs
entires.
Sachez que le compilateur effectue une conversion automatique du type de donnes pour
de telles oprations et qu'il traduit donc ainsi l'instruction ci-dessus :
Fraction:=INT_TO_REAL(Dividend/Divisor);
Il s'ensuit que la division fournit toujours une valeur arrondie comme rsultat,
par ex. 1/3 = 0 ou 3/2 = 1.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

16-3

Conseils et astuces

Valeur de retour des fonctions standard et des fonctions systme de STEP 7


De nombreuses fonctions standard et fonctions systme de STEP 7 possdent une valeur
de la fonction qui est du type INT et qui contient le code d'erreur. Le manuel de rfrence
traitant de ces fonctions indique les codes d'erreur possibles en tant que constantes WORD
sous la forme "W#16#8093".
Cependant, S7-SCL tant un langage vrifiant rigoureusement l'identit des types, il n'est
pas possible de mlanger INT et WORD. C'est ainsi que l'interrogation suivante, par
exemple, ne donnerait pas le rsultat souhait :
IF SFCxx(..) = 16#8093 THEN ...
Il y a moyen de faire savoir au compilateur S7-SCL qu'il doit considrer une constante
WORD comme type INT :
En typant les constantes ; dans ce cas, l'interrogation ci-dessus s'nonce ainsi :
IF SFCxx(..) = INT#16#8093 THEN ...
En recourant la fonction de conversion WORD_TO_INT() ; il faut alors formuler ainsi
l'interrogation ci-dessus :
IF SFCxx(..) = WORD_TO_INT(16#8093) THEN ...

Rassignation de blocs
Vous ne pouvez pas utiliser la commande Outils > Rassignation de SIMATIC Manager
pour rassigner les appels de bloc figurant dans les blocs S7-SCL. Vous devez diter
manuellement les appels des blocs concerns dans la source S7-SCL.
Conseils :
Dfinissez des noms symboliques pour les blocs dans la table des mnmoniques et
appelez les blocs sous forme symbolique.
Dfinissez des mnmoniques pour les adresses absolues (E, M, A, etc.) dans la table
des mnmoniques et utilisez-les dans votre programme.
Si vous souhaitez ensuite rassigner un bloc, il vous suffira de modifier l'affectation dans la
table des mnmoniques et vous n'aurez aucune modification faire dans la source S7-SCL.

16-4

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Conseils et astuces

Affectation de structures avec une longueur d'octets impaire


La longueur d'une structure est toujours complte pour atteindre une limite correspondant
un mot. Pour affecter une structure avec un nombre d'octets impair, S7-SCL met votre
disposition la construction AT :

Exemple :
VAR
theStruct : STRUCT
twoBytes : ARRAY [0..1] OF BYTE;
oneInt : INT
oneByte : BYTE;
END_STRUCT;
fiveBytes AT theStruct : ARRAY[0..4] OF BYTE;
END_VAR

L o 5 octets sont requis, vous utilisez l'identificateur fiveBytes. Grce l'identificateur


theStruct, il est alors possible de raliser un accs structur.

Valeurs limite pour instructions FOR


Afin de programmer des instructions FOR "sres" ne ralisant pas de boucle sans fin,
veuillez tenir compte de la rgle ainsi que des valeurs limite suivantes :
Rgles
FOR ii := dbut TO fin BY pas DO
Si...

...alors

Nota

dbut < fin

fin < (PMAX - pas)

La variable d'excution ii
s'excute dans le sens
positif.

dbut > fin AND pas < 0

fin > (NMAX - pas)

La variable d'excution ii
s'excute dans le sens
ngatif.

Valeurs limite
Les deux types de donnes possibles possdent diffrentes valeurs limite :
Type de donnes

PMAX

ii de type INT

32_767

-32_768

ii de type DINT

2_147_483_647

-2_147_483_648

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

NMAX

16-5

Conseils et astuces

16-6

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Glossaire
Abrviations
Les abrviations reprsentent les oprandes et les oprations de programmation de manire
abrge (E, par exemple, dsigne l'entre). STEP 7 reconnat les abrviations CEI
(exprimes en anglais) et les abrviations SIMATIC (exprimes d'aprs les oprations et
conventions d'adressage SIMATIC allemandes).

Accs ( une variable)


Pour adresser avec un type de donnes supplmentaire une variable dclare, vous pouvez
dfinir un accs la variable ou des zones au sein de la variable. Cet accs peut tre
utilis dans le bloc comme toute autre variable. Il hrite de tous les attributs de la variable
qu'il dsigne ; seul le type de donnes est diffrent.

Activer les points d'arrt


Cette fonction permet de mettre l'unit centrale (CPU) en attente des endroits dfinis du
programme. Lorsqu'un point d'arrt est atteint, vous pouvez excuter les fonctions de test,
comme par exemple le traitement incrmental d'instructions ou la visualisation de l'tat des
variables.

Adressage
Affectation d'une adresse dans le programme utilisateur. On peut affecter des adresses
des oprandes ou des zones d'oprandes donnes (exemples : entre E 12.1, mot de
mmento MW25)

Adressage absolu
L'adressage absolu consiste indiquer l'adresse de l'oprande traiter. Exemple : l'adresse
A 4.0 dsigne le bit 0 dans l'octet 4 de la mmoire image des sorties.

Adressage symbolique
L'adressage symbolique consiste indiquer de manire symbolique l'oprande traiter, son
mnmonique. Les mnmoniques sont associs aux adresses au moyen de la table des
mnmoniques ou d'un fichier symbolique.

Affectation
Mcanisme servant donner une valeur une variable.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Glossaire-1

Glossaire

Aide en ligne
STEP 7 vous offre la possibilit d'afficher l'cran des textes d'aide contextuels pendant
votre travail avec le logiciel de programmation.

Appel de bloc
Dmarrage d'un bloc dans le programme utilisateur STEP 7 : les blocs d'organisation sont
toujours appels par le systme d'exploitation, tous les autres blocs le sont par le
programme utilisateur STEP 7.

Attente
L'tat d'attente peut tre obtenu partir de l'tat de marche sur sollicitation depuis la console
de programmation. Cet tat de fonctionnement permet de raliser des fonctions de test
particulires.

Attribut
Un attribut est une proprit qui caractrise par exemple une dsignation de bloc ou un nom
de variable. Dans S7-SCL, il existe des attributs pour les indications suivantes : titre du bloc,
version, protection du bloc, auteur, nom du bloc, famille de bloc.

Bloc
Les blocs constituent des parties dlimites d'un programme utilisateur par leur fonction, leur
structure et leur objet. Dans STEP 7, il existe des blocs de code (FB, FC, OB, SFC, SFB),
des blocs de donnes (DB, SDB) et des types de donnes utilisateur (UDT).

Bloc de code
Dans SIMATIC S7, un bloc de code est un bloc contenant une partie du programme
utilisateur STEP 7, contrairement aux blocs de donnes qui ne contiennent que des
donnes. Parmi les blocs de code, on distingue les blocs d'organisation (OB), les blocs
fonctionnels (FB), les fonctions (FC), les blocs fonctionnels systme (SFB) et les fonctions
systme (SFC).

Bloc de donnes (DB)


Les blocs de donnes contiennent des donnes et des paramtres avec lesquels le
programme utilisateur travaille. Contrairement tous les autres blocs, ils ne contiennent pas
d'instructions.

Bloc de donnes d'instance (DB d'instance)


Un bloc de donnes d'instance mmorise les paramtres formels et les donnes locales
statiques de blocs fonctionnels. Un DB d'instance est associ un appel de bloc fonctionnel
ou une hirarchie d'appel de blocs fonctionnels.

Glossaire-2

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Glossaire

Bloc de donnes systme (SDB)


Les blocs de donnes systme (SDB) sont des zones de donnes dans la CPU S7 qui
contiennent des paramtres systme et des paramtres de module. Vous pouvez les
gnrer et les modifier avec le logiciel de base STEP 7.

Bloc d'organisation (OB)


Les blocs d'organisation constituent l'interface entre le systme d'exploitation de la CPU et le
programme utilisateur. L'ordre de traitement du programme utilisateur est dfini dans les
blocs d'organisation.

Bloc fonctionnel (FB)


Selon la norme CEI 1131-3, un bloc fonctionnel (FB) est un bloc de code avec donnes
statiques. Puisqu'un FB possde une mmoire (bloc de donnes d'instance), ses
paramtres (par exemple sorties) sont accessibles tout instant tout bloc du programme
utilisateur.

Bloc fonctionnel systme (SFB)


Un bloc fonctionnel systme (SFB) est un bloc fonctionnel intgr au systme d'exploitation
de la CPU qu'il est possible d'appeler dans le programme utilisateur STEP 7.

Bloc non terminal


Un bloc non terminal est un lment compos dans une description syntaxique, dcrit par
une rgle lexicale ou syntaxique supplmentaire.

Bloc terminal
Un bloc terminal est un lment de base d'une rgle lexicale ou syntaxique dont la
description ne ncessite pas de rgle supplmentaire, mais une simple explication. Il peut
s'agir par exemple d'un mot-cl ou d'un caractre unique.

Charger dans le systme cible


Des objets chargeables (par exemple des blocs de code) sont chargs depuis la console de
programmation dans la mmoire de chargement d'une CPU.

Classe de bloc
En fonction de leur contenu, les blocs sont subdiviss en deux classes, les blocs de code et
les blocs de donnes.

Commentaire
Structure permettant d'intgrer dans un programme un texte explicatif qui n'aura pas
d'influence sur l'excution du programme.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Glossaire-3

Glossaire

Commentaire de bloc
Les commentaires de bloc sont des informations supplmentaires sur un bloc (par exemple
des explications sur le processus d'automatisation) qui ne sont pas charges dans la
mmoire de travail des automates programmables SIMATIC S7.

Compilateur de S7-SCL
Le compilateur de S7-SCL est un compilateur squentiel qui permet de traduire le
programme pralablement dit (source SCL) en code machine MC7. Les blocs ainsi crs
sont rangs dans le programme S7 qui se trouve dans le dossier Blocs.

Compilation
Traduction d'une source en programme utilisateur excutable.

Compilation source
Dans le mode de saisie source, la compilation en programme utilisateur excutable n'est
effectue qu'une fois toutes les instructions saisies. Cette compilation est accompagne
d'une vrification dtectant les erreurs de saisie ventuelles.

Compteur
Les compteurs sont partie constituante de la mmoire systme de la CPU. Leur contenu est
actualis par le systme d'exploitation de faon asynchrone au programme utilisateur. Des
instructions en STEP 7 permettent de dfinir la fonction exacte de la cellule de comptage
(par ex. incrmentation) et d'en lancer l'excution.

Constante
Les constantes rservent la place pour des valeurs constantes dans les blocs de code. Elles
servent amliorer la lisibilit d'un programme. Exemple : au lieu d'indiquer une valeur
directement (ex. : 10 ), on indique "Nbmax_repetitions_boucle". A l'appel de la constante,
elle est remplace par sa valeur (10).

Constante littrale
Notation formelle dterminant la valeur et le type d'une constante.

Constante symbolique
Les constantes aux noms symboliques rservent la place pour des valeurs constantes dans
les blocs de code. Elles permettent d'amliorer la lisibilit d'un programme.

Conversion de types de donnes


Une conversion de type de donnes est ncessaire lorsqu'il faut combiner entre eux deux
oprandes de types diffrents.

Glossaire-4

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Glossaire

DCB
Nombre dcimal cod binaire. Dans STEP 7, les temporisations et les compteurs sont
indiqus exclusivement dans le format DCB l'intrieur de la CPU.

Dbogueur de S7-SCL
Le dbogueur de S7-SCL est un dbogueur de langage volu permettant de trouver les
erreurs de programmation logiques dans le programme utilisateur cr avec S7-SCL.

Dclaration
Mcanisme servant dfinir un lment de langage. Une dclaration tablit le lien entre un
identificateur et l'lment de langage et lui affecte des attributs et des types de donnes.

Dclaration de variable
La dclaration d'une variable consiste indiquer son mnmonique, son type de donnes et
ventuellement une valeur par dfaut, une adresse et un commentaire.

Donnes globales
Les donnes globales sont des donnes accessibles chaque bloc de code (FB, FC, OB),
savoir des mmentos (M), des entres (E), des sorties (A), des temporisations, des
compteurs et des lments de blocs de donnes. Il est possible d'y accder par adressage
absolu ou symbolique.

Donnes locales
Les donnes locales sont les donnes associes un bloc de code qui sont dclares dans
la section de dclaration ou dans la dclaration des variables de ce bloc. Elles comprennent
- selon le bloc - les paramtres formels, les donnes statiques, les donnes temporaires.

Donnes statiques
Les donnes statiques sont des donnes locales d'un bloc fonctionnel qui sont mmorises
dans le bloc de donnes d'instance et donc conserves jusqu'au traitement suivant du bloc
fonctionnel.

Donnes temporaires
Les donnes temporaires sont des donnes locales d'un bloc qui sont sauvegardes dans la
pile des donnes locales (pile L) durant l'excution de ce bloc et ne sont plus disponibles
une fois l'excution termine.

Donnes utiles
Les donnes utiles sont changes par l'intermdiaire de la mmoire image ou par
adressage direct entre une unit centrale et un module de signaux, un module fonctionnel et
des modules de communication. Il peut s'agir des signaux d'entre/sortie TOR et
analogiques de modules de signaux, d'informations de forage et d'tat de modules de
fonctions.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Glossaire-5

Glossaire

Drapeau OK
Le drapeau OK signale l'excution correcte ou incorrecte d'une squence d'instructions d'un
bloc. Il a gnralement le type de donnes BOOL.

Editeur de S7-SCL
L'diteur de S7-SCL s'adapte tout particulirement aux exigences de S7-SCL pour crer la
source S7-SCL.

EN (Enable)
Dans STEP 7, tout bloc fonctionnel et toute fonction dispose du paramtre d'entre "Enable"
(EN) dfini automatiquement et qui peut tre mis 1 l'appel du bloc. Si EN est vrai, le bloc
appel est excut, autrement il ne l'est pas.

En ligne
Il s'agit de l'tat de fonctionnement dans lequel une liaison (physique, logique) est tablie
entre la console de programmation et l'automate programmable.

ENO (Enable out)


Dans STEP 7, tout bloc possde une sortie "Enable Output" (ENO). A la fin de l'excution
d'un bloc, la valeur actuelle du drapeau OK est inscrite dans ENO. Immdiatement aprs
l'appel d'un bloc, vous pouvez vrifier, l'aide de la valeur du paramtre ENO, si toutes les
oprations dans le bloc se sont droules correctement ou si des erreurs sont survenues.

Entier (INT)
L'entier (INT) est l'un des types de donnes simples. On le reprsente comme nombre entier
16 bits.

Expression
Une expression permet de traiter des donnes dans S7-SCL. Il existe des expressions
arithmtiques, logiques et de comparaison.

Fonction (FC)
Selon la norme CEI 1131-3, une fonction (FC) est un bloc de code sans donnes statiques.
Elle permet la transmission de paramtres dans le programme utilisateur. Aussi les fonctions
se prtent-elles la programmation de fonctions complexes se rptant souvent, comme les
calculs.

Fonction systme (SFC)


Une fonction systme (SFC) est une fonction intgre au systme d'exploitation de la CPU
qu'il est possible d'appeler dans le programme utilisateur STEP 7.

Glossaire-6

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Glossaire

Hirarchie d'appel
Pour pouvoir tre excuts, tous les blocs doivent pralablement tre appels. On appelle
hirarchie d'appel, l'ordre et l'imbrication de ces appels.

Hors ligne
Il s'agit de l'tat de fonctionnement dans lequel aucune liaison (physique, logique) n'est
tablie entre la console de programmation et l'automate programmable.

Identificateur
Combinaison de lettres, de chiffres et de caractres de soulignement qui identifie un lment
de langage.

Identificateur d'oprande
L'identificateur d'oprande est la partie de l'oprande d'une opration qui contient des
informations. La zone de mmoire dans laquelle l'opration trouve une valeur qu'elle va
combiner ou la grandeur d'une valeur qu'elle va combiner en sont des exemples. Dans
l'instruction "Valeur := EB10", "EB" est l'identificateur d'oprande ("E" signifie la zone
d'entre de la mmoire, "B" signifie un octet dans cette zone).

Instance
On dsigne par instance l'appel d'un bloc fonctionnel. Un bloc de donnes d'instance ou une
instance locale lui sont associs. Si, par exemple, un bloc fonctionnel est appel n fois avec
des paramtres et ds noms de blocs de donnes diffrents dans le programme utilisateur
STEP 7, il existe n instances de ce bloc.

Instruction
Une instruction est la plus petite unit autonome d'un programme utilisateur crit dans un
langage textuel. Il s'agit d'une tche que doit excuter le processeur.

Instruction CASE
L'instruction CASE permet de raliser un branchement. Elle sert slectionner 1 parmi n
parties de programme en fonction de la valeur d'une expression de slection.

Instruction CONTINUE
Dans S7-SCL, l'instruction CONTINUE permet d'abandonner le parcours momentan de la
boucle d'une instruction d'itration (FOR, WHILE ou REPEAT).

Instruction EXIT
Structure dans un programme qui sert mettre fin une boucle un endroit quelconque et
indpendamment de conditions.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Glossaire-7

Glossaire

Instruction FOR
Structure dans un programme. L'instruction FOR excute une squence d'instructions dans
une boucle et des valeurs successives sont alors affectes une variable (variable de
contrle).

Instruction GOTO
Structure dans un programme. Une instruction GOTO ralise le saut immdiat un repre
donn et par consquent une autre instruction dans le mme bloc.

Instruction REPEAT
Structure dans un programme qui sert rpter une squence d'instructions jusqu' la
ralisation d'une condition d'abandon.

Instruction RETURN
Structure dans un programme ordonnant l'ordinateur de quitter le bloc actif.

Interface d'appel
L'interface d'appel est dfinie par les paramtres d'entre, de sortie et d'entre/sortie
(paramtres formels) d'un bloc dans le programme utilisateur STEP7. Ces paramtres sont
remplacs par les paramtres effectifs lors de l'appel du bloc.

Mmento (M)
Un mmento est une zone de mmoire dans la mmoire systme d'une CPU SIMATIC S7
qui peut tre adresse en criture et en lecture (par bit, octet, mot et double mot).
L'utilisateur peut employer la zone de mmento pour y enregistrer des rsultats
intermdiaires.

Mmoire image
Les tats de signaux des modules d'entres et de sorties TOR sont sauvegards dans une
mmoire image dans la CPU. On distingue la mmoire image des entres (MIE) et la
mmoire image des sorties (MIS).

Mmoire image des entres (MIE)


Avant le traitement du programme utilisateur, le systme d'exploitation lit la mmoire image
des entres dans les modules d'entre.

Mmoire image des sorties (MIS)


A la fin du traitement du programme utilisateur, le systme d'exploitation transmet la
mmoire image des sorties aux modules de sortie.

Glossaire-8

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Glossaire

Mmoire systme (zone de mmoire)


La mmoire systme est une mmoire vive intgre la CPU S7, dans laquelle sont
enregistres les zones d'oprandes (par exemple temporisations, compteurs, mmentos)
ainsi que les zones de donnes requises de manire interne par le systme d'exploitation
(par exemple mmoire pour la communication).

Mnmonique
Un mnmonique est un nom que l'utilisateur dfinit en respectant les rgles de syntaxe
imposes. Une fois son affectation dtermine (par ex. variable, type de donnes, repre de
saut, bloc), ce nom peut tre utilis en programmation et en contrle-commande. Exemple :
oprande : E 5.0, type de donnes : Bool, mnmonique : Bouton_arret_urg.

Mot-cl
Unit lexicale caractrisant un lment de langage, par exemple "IF".
Dans S7-SCL, les mots-cls servent identifier le dbut d'un bloc, les sections de
dclaration, les instructions. Ils sont utiliss en outre pour les commentaires et les attributs.

Mot d'tat
Le mot d'tat fait partie des registres de la CPU. Il contient des informations d'tat et des
informations d'erreur susceptibles de survenir dans le traitement d'instructions STEP 7. Les
bits d'tat peuvent tre lus et crits par l'utilisateur, les bits d'erreur peuvent uniquement tre
lus.

Multi-instance
Lorsque vous utilisez des multi-instances, le bloc de donnes d'instance contient les
donnes pour plusieurs blocs fonctionnels d'une hirarchie d'appel.

Nombre rel
Un nombre rel est un nombre positif ou ngatif reprsentant une valeur dcimale comme
par exemple 0.339 ou 11.1.

Oprande
Un oprande est la partie d'une instruction indiquant l'objet que le processeur doit traiter. On
peut y accder par une adresse absolue ou symbolique.

Opration
Une opration est la partie d'une instruction indiquant ce que le processeur doit faire.

Paramtre effectif
Les paramtres effectifs remplacent les paramtres formels lors de l'appel d'un bloc
fonctionnel (FB) ou d'une fonction (FC).
Exemple : le paramtre formel "Dmarrer" est remplac par le paramtre effectif "E.3.6".

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Glossaire-9

Glossaire

Paramtre formel
Un paramtre formel "rserve la place" pour le paramtre effectif dans les blocs de code
paramtrables. Pour les FB et les FC, c'est l'utilisateur qui dclare les paramtres formels ;
ils existent dj pour les SFB et les SFC. A l'appel du bloc, un paramtre effectif est affect
au paramtre formel afin que le bloc appel utilise les valeurs en cours. Les paramtres
formels font partie des donnes locales du bloc et se rpartissent en paramtres d'entre, de
sortie et d'entre/sortie.

Paramtres d'entre
Seuls les fonctions et les blocs fonctionnels possdent des paramtres d'entre. Ils
permettent de transmettre des donnes traiter au bloc appel.

Paramtres d'entre/sortie
Les fonctions et les blocs fonctionnels possdent des paramtres d'entre/sortie. Ils
permettent de transmettre des donnes au bloc appel ; elles y sont alors traites et les
rsultats sont ensuite stocks dans la mme variable.

Paramtres de sortie
Les paramtres de sortie d'un bloc permettent de transmettre des rsultats au bloc appelant
dans le programme utilisateur.

Pas pas
C'est un mode de test utilis des fins de mise au point par le dbogueur de S7-SCL. Il
permet d'excuter le programme instruction par instruction tout en le visualisant dans la
fentre de rsultat.

Programmation structure
La rsolution de tches d'automatisation complexes appelle la subdivision du programme
utilisateur en parties dlimites de programmes (blocs). La structure du programme
utilisateur peut tre fonctionnelle ou conforme la structure technologique de l'installation.

Programmation symbolique
Le langage de programmation S7-SCL permet de remplacer les oprandes par des chanes
de caractres symboliques, les mnmoniques : l'oprande A1.1 peut par exemple tre
remplac par "Vanne_17". Le lien entre l'oprande et la chane de caractres qui lui est
associe est tabli par la table des mnmoniques.

Programme utilisateur
Le programme utilisateur contient toutes les instructions et dclarations ainsi que toutes les
donnes ncessaires au traitement des signaux qui permettent de commander une
installation ou un processus. Il est associ un module programmable (par exemple CPU,
FM) et peut tre structur en units plus petites, les blocs.

Glossaire-10

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Glossaire

Programme utilisateur S7
Dossier pour les blocs qui vont tre chargs dans un module programmable S7 (par
exemple CPU, FM) pour y tre excuts afin de commander une installation ou un
processus.

Projet
Un projet est un dossier contenant tous les objets d'une solution d'automatisation,
indpendamment du nombre de stations, de modules et de leur mise en rseau.

Protection de bloc
On entend par protection de bloc la possibilit de protger des blocs individuels contre la
dcompilation en effectuant la compilation de la source avec le mot-cl
"KNOW_HOW_PROTECTED".

Rgle lexicale
Les rgles lexicales constituent le niveau infrieur de la description formelle du langage
S7-SCL. Elles m'autorisent pas l'utilisation d'un format libre, c'est--dire que vous ne pouvez
ajouter aux blocs ni espaces ni caractres de commande.

Rgle syntaxique
Les rgles syntaxiques constituent le niveau suprieur de la description formelle du langage
S7-SCL. Elles autorisent l'utilisation d'un format libre, c'est--dire que vous pouvez par
exemple ajouter aux blocs des espaces et des caractres de commande.

RUN
A l'tat de fonctionnement RUN (marche), le programme utilisateur est trait, la mmoire
image est actualise cycliquement et toutes les entres TOR sont valides.

RUN-P
L'tat de fonctionnement RUN-P se distingue de l'tat de fonctionnement RUN en ce qu'il
autorise l'application sans restrictions de nombreuses fonctions de la console de
programmation.

S7-SCL
Langage volu proche du PASCAL, conforme la norme DIN EN 61131-3 (CEI 1131-3),
adapt la programmation de tches complexes d'automatisation, comme par exemple des
algorithmes ou du traitement de donnes. S7-SCL est l'abrviation de "Structured Control
Language".

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Glossaire-11

Glossaire

Section de dclaration
C'est dans la section de dclaration que vous dclarez les donnes locales d'un bloc de
code quand vous crivez le programme avec un diteur de texte.
La dclaration des variables d'un bloc se dcompose en plusieurs sections servant
dclarer les diffrents paramtres du bloc. La section de dclaration IN, par exemple,
contient la dclaration des paramtres d'entre, la section OUT celle des paramtres de
sortie.

Smantique
Relation entre les lments symboliques d'un langage de programmation et leur
signification, leur interprtation et leur utilisation.

Signet
Les signets sont des marques de texte temporaires qui reprent un emplacement
quelconque au sein dune source. Elles facilitent la navigation dans la source.

Source
Partie de programme labore avec un diteur graphique ou textuel et donnant par
compilation un programme utilisateur excutable.

Source S7-SCL
La source S7-SCL est le fichier S7-SCL dans lequel vous crez le programme qui va ensuite
tre compil avec le compilateur de S7-SCL.

Structure (STRUCT)
Type de donnes complexe compos d'lments de donnes quelconques de types de
donnes diffrents. Les types de donnes composant une structure peuvent tre euxmmes simples ou complexes.

Tableau
Un tableau (ARRAY) est un type de donnes complexe form d'lments de donnes de
mme type, pouvant eux-mmes tre des types de donnes simples ou complexes.

Table des mnmoniques


Cette table contient l'affectation de mnmoniques (ou noms symboliques) des adresses
(oprandes) de donnes globales et de blocs. Exemples : Arret_urg (mnmonique), E 1.7
(oprande) ou Rgulateur (mnmonique), SFB24 (bloc).

Table des variables


La table des variables regroupe les variables que vous voulez visualiser et forcer, avec les
indications correspondantes sur le format.

Glossaire-12

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Glossaire

Temporisation
Les temporisations sont partie constituante de la mmoire systme de la CPU. Leur contenu
est actualis par le systme d'exploitation de faon asynchrone au programme utilisateur.
Des instructions en STEP 7 permettent de dfinir la fonction exacte de la cellule de
temporisation (par ex. retard la monte) et d'en lancer l'excution.

Temps de cycle
Le temps de cycle est le temps que met la CPU traiter une fois le programme utilisateur.

Temps de surveillance du cycle


Si le temps d'excution du programme utilisateur excde le temps de surveillance du cycle
choisi, le systme d'exploitation met un message d'erreur et la CPU passe l'tat d'arrt.

Type de bloc
L'architecture des blocs de STEP 7 distingue les types de blocs suivants : bloc
d'organisation, bloc fonctionnel, fonction, bloc de donnes de mme que bloc fonctionnel
systme, fonction systme, bloc de donnes systme et type de donnes utilisateur.

Type de donnes complexe


Les types de donnes complexes sont composs d'lments dont le type de donnes est
simple. On distingue les structures et les tableaux. STRING et DATE_AND_TIME sont
galement des types de donnes complexes.

Type de donnes simple


Les types de donnes simples sont des types de donnes prdfinis selon CEI 1131-3.
Exemples : le type de donnes "BOOL" dfinit une variable binaire ("bit") et le type de
donnes "INT" une variable entire de 16 bits.

Type de donnes utilisateur


Les types de donnes utilisateur (UDT) sont crs par l'utilisateur avec la dclaration de type
de donnes. Ils ont leur propre nom et sont donc rutilisables. Un type de donnes
utilisateur peut, par exemple, servir la cration de plusieurs blocs de donnes de mme
organisation (par exemple, rgulateur).

Type de paramtre
Un type de paramtre est un type de donnes spcial rserv aux temporisations, aux
compteurs et aux blocs. Vous pouvez l'utiliser pour les paramtres d'entre de blocs
fonctionnels et de fonctions ainsi que pour les paramtres d'entre/sortie des blocs
fonctionnels seulement, afin de transmettre des temporisations, des compteurs et des blocs
au bloc appel.

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Glossaire-13

Glossaire

Types de donnes
Les types de donnes dterminent
la nature et la signification des lments de donnes,
les zones de mmoire et les plages de valeurs autorises pour les lments de donnes,
le nombre d'oprations que vous pouvez raliser avec un oprande de ce type de
donnes et
la manire dont les lments de donnes sont crits.

UDT
Voir : Type de donnes utilisateur

Valeur de retour (RET_VAL)


Contrairement aux blocs fonctionnels, les fonctions fournissent comme rsultat une valeur
de retour.

Valeur initiale
Valeur attribue une variable la mise en route du systme.

Variable
Une variable dfinit une donne de contenu variable pouvant tre utilise dans le
programme utilisateur STEP 7. Elle comprend un oprande (par ex. M3.1) et un type de
donnes (par ex. BOOL) et peut tre identifie par un mnmonique (par ex. B.
BANDE_MARCHE). Vous la dclarez dans la section de dclaration.

Visualisation
Visualiser un programme vous permet d'en contrler le droulement dans la CPU. Pour cela,
des noms de variables et de paramtres par exemple sont affichs par ordre chronologique
avec leurs valeurs en cours qui sont mises jour cycliquement.

Zone de mmoire
Une unit centrale dans SIMATIC S7 possde trois zones de mmoire, savoir la mmoire
de chargement, la mmoire de travail et la zone systme.

Glossaire-14

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Index
*
* 11-7, 11-8
** 11-7

/
/ 11-7

+
+ 11-7, 11-8

<
< 11-12, 11-13
<= 11-13
<> 11-11, 11-13

=
= 11-11

>
> 11-13
>= 11-11

A
ABS 14-9
Accs des zones de variable 8-5
ACOS 14-10
Addition 11-1
Adressage absolu
rgles lexicales 15-29
Adressage absolu des blocs de donnes 10-8
Adressage absolu des zones de mmoire
de la CPU 10-3
Adressage index des blocs de donnes
10-10
Adressage index des zones de mmoire
de la CPU 10-6
Adressage structur des
blocs de donnes 10-11
Adressage symbolique des zones de mmoire
de la CPU 10-5
Adresses 10-2
Affectation de structures avec une longueur
d'octets impaire 16-5

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Affectation de valeur
des variables de type STRUCT
et UDT 12-3
une variable absolue pour zones
de mmoire 12-9
une variable de type
DATE_AND_TIME 12-8
une variable de type de
donnes simple 12-2
une variable de type STRING 12-7
une variable globale 12-10
rgles syntaxiques 15-47
Affectation d'une valeur 6-12
Affichage des informations sur la
communication de la CPU 4-41
Affichage des piles de la CPU 4-41
Afficher et modifier l'tat de fonctionnement
de la CPU 4-38
Afficher et rgler la date et l'heure
de la CPU 4-38
Afficher le temps de cycle de la CPU 4-40
Afficher les blocs dans la CPU 4-40
Afficher l'horodatage de la CPU 4-40
Afficher/comprimer la mmoire utilisateur
de la CPU 4-39
Aiguillage 12-12
Aller 4-13
AND 11-9, 11-10
Annuler la dernire action d'dition 4-10
ANY 7-19, 7-20
Appel de bloc 4-17
Appel d'un bloc fonctionnel (FB ou SFB)
comme instance globale 12-29
comme instance locale 12-29
dfinition des entres 12-33
Dfinition des entres/sorties 12-34
Dfinition des paramtres du FB 12-31
lecture des valeurs de sortie 12-35
marche suivre 12-29
syntaxe 12-29
Appel d'une fonction (FC)
dfinition des entres 12-41
dfinition des paramtres 12-40
dfinition des sorties et des entres/sorties
12-42
marche suivre 12-38
paramtre de sortie ENO 12-46
paramtre d'entre EN 12-45
syntaxe 12-38
valeur de retour 12-39

Index-1

Index

Appel d'une fonction de comptage 13-1


Appel d'une fonction de temporisation 13-9
ARRAY 7-10, 7-11, 8-3, 8-4, 12-6
affectation de valeur 12-5
ASIN 14-10
AT (mot-cl) 8-5
ATAN 14-10
Attributs 6-5, 6-6
Attributs de bloc
attributs systme pour bloc 6-8
dfinition 6-5
rgles lexicales 15-32
Attributs systme pour bloc 6-8
Attributs systme pour paramtre 6-10
AUTHORS.EXE 2-6
Automation License Manager 2-1, 2-4
Autorisation 2-1, 2-6
Autorisation de dpannage 2-6
Avertissements 4-23

B
Barre de titre 4-2
Barre des menus 4-2
Barre d'tat 4-2
Barre d'outils 4-2
BIT 7-3
Bloc
appel 4-17
modles 4-17
Bloc de commentaire 5-15
Bloc de donnes 6-19, 6-20
Bloc d'organisation 6-17
Bloc fonctionnel (FB) 6-13, 12-27 - 12-31
Bloc non terminal (dans les diagrammes
syntaxiques) 15-16
BLOCK_DB_TO_WORD 14-4
Blocs 4-6, 6-1
Blocs dans la CPU 4-40
Blocs dans les diagrammes syntaxiques 5-1
Blocs de code 3-4, 4-8, 6-1
Blocs de donnes 10-7 - 10-11
Blocs terminaux des rgles lexicales
(diagrammes syntaxiques) 15-5
Boucle 12-12
Branchement 12-12
BYTE 7-3
BYTE_TO_BOOL 14-3
BYTE_TO_CHAR 14-3

Index-2

C
Caractres imprimables 9-9, 9-11
Caractres non imprimables 9-10, 9-11
Certificate of License 2-1
Chane de caractres 5-13
CHAR 7-3, 9-9
CHAR_TO_BYTE 14-3
CHAR_TO_INT 14-3
Charger 4-27
Charger dans la CPU 4-27
Choisir la taille de papier 4-24
Choix de la temporisation approprie 13-21
Commentaire
modles 4-17
rgles lexicales 15-31
Commentaires
bloc de commentaire 5-15
ligne de commentaire 5-16
Communication de la CPU 4-41
Compatibilit avec les normes 1-1
Compilateur 1-2
Compiler 4-19, 4-22, 6-23
liminer les erreurs 4-23
fichier d'informations compilation 4-22
options de compilation 4-20
Composition de la section de dclaration 6-9
Composition d'un bloc 6-3
Composition d'un bloc de donnes (DB) 6-18
Composition d'un bloc d'organisation (OB)
6-17
Composition d'un bloc fonctionnel (FB) 6-13
Composition d'une fonction (FC) 6-15
Composition d'une source S7-SCL 6-9 - 6-18
Compteurs
appel d'une fonction de comptage 13-1
compteur dcrmental (S_CD) 13-6
compteur incrmental (S_CU) 13-6
compteur incrmental et dcrmental
(S_CUD) 13-7
dfinition des paramtres d'une fonction
de comptage 13-3
exemple de fonction de comptage 13-7
saisie et exploitation de la valeur de
comptage 13-5
CONCAT 14-13
Conception d'un programme SCL 3-1
Condition d'abandon 12-22, 12-24
Conditions 12-13
Constante binaire 9-6
Constante de date 9-13
Constante de date et d'heure 9-17
Constante de dure 9-13
Constante d'heure du jour 9-16
Constante entire 9-7
Constante relle 9-8
Constante sur caractre 9-9
Constante sur chane 9-11, 9-12
S7-SCL V5.3 pour S7-300/400
A5E00324651-01

Index

Constantes 9-2
Constantes et drapeaux prdfinis
description formelle du langage 15-20
Constantes littrales 9-6 - 9-17
voir Constantes 15-23
Conversion du type de donnes
fonctions d'arrondi et de troncature 14-6
fonctions de classe B 14-3
fonctions standard 14-3
Copier des parties de texte 4-11
COS 14-10
Couleur et police du texte source 4-15, 4-25
COUNTER 7-16, 13-1
Couper des parties de texte 4-12
Crer une nouvelle source SCL 4-4

D
DATE 7-4
DATE_AND_TIME 7-5
DATE_TO_DINT 14-3
Dbogueur 1-2
Dbut de bloc 6-3
Dbutants
exemple 3-1
Dclaration 6-9
Dclaration de variables statiques 8-2
Dclaration d'une instance 8-7
Dfinir les proprits de l'objet 4-6
Dfinition des entres/sorties 12-42
Dfinition des entres/sorties (FB/SFB) 12-34
Dfinition des paramtres 12-27
Dfinition des paramtres d'une fonction de
comptage 13-3
Dfinition des paramtres d'une fonction de
temporisation 13-11
Dfinition d'un environnement d'appel des
blocs 4-33
Dfinition d'un environnement d'appel des
points d'arrt 4-35
DELETE 14-15
Dmarrer SCL 4-1
Description du langage 5-1, 15-1
Dsignation de bloc 5-7, 6-3, 6-4
Dsignations
rgles lexicales 15-21
Dsinstallation
de la licence d'utilisation 2-5
DI_STRNG 14-19
Diagrammes syntaxiques 5-1, 15-1
Diffrence 11-1
DINT 7-3
DINT_TO_DATE 14-3
DINT_TO_DWORD 14-3
DINT_TO_INT 14-3, 14-4
DINT_TO_TIME 14-3
DINT_TO_TOD 14-4
Disquette d'autorisation 2-6
DIV 11-7
S7-SCL V5.3 pour S7-300/400
A5E00324651-01

Division 11-1
Division entire 11-1
Domaine d'application 1-1
Donnes de CPU 4-39
Donnes de rfrence 4-36
Donnes globales 10-1
prsentation 10-2
Donnes locales 5-17, 8-1, 8-3, 8-10, 8-11
Donnes utilisateur globales 10-1
Double mot 7-3
Drapeau OK 8-1, 8-8
DWORD 7-3
DWORD_TO_BOOL 14-4
DWORD_TO_BYTE 14-4
DWORD_TO_DINT 14-4
DWORD_TO_REAL 14-4
DWORD_TO_WORD 14-4

E
Editer une source SCL 4-10 - 4-18
Editeur 1-2
Effacement gnral de la mmoire
de la CPU 4-27
Effacer des parties de texte 4-12
Egalit 11-1
Eliminer les erreurs aprs la compilation 4-23
EN 12-45
ENO 12-46
Enregistrer une source S7-SCL 4-24
Entres/sorties de priphrie 10-2
Environnement d'appel 4-33
Environnement de dveloppement 1-2
Environnement requis 2-6
EQ_STRNG 14-17
Erreurs de compilation 4-23
ET 11-1
Etat de fonctionnement 4-38
Excution de sous-programme 6-12
Exemple "Saisie de valeurs de mesure" 3-1
Exemples 7-20, 12-35, 12-37, 12-44, 13-7,
14-7, 14-10, 14-12
temporisations 13-20
EXP 14-9
EXPD 14-9
Expression boolenne 11-11
Expression simple 11-6
Expressions 11-1 - 11-10
Expressions arithmtiques 11-7
Expressions de comparaison 11-12, 11-13

F
FC 6-15, 6-16, 12-27, 12-38
Fermer une source S7-SCL 4-5
Fichier d'information de compilation 6-23
Fichier d'informations compilation 4-22
Fin de bloc 6-3
FIND 14-16

Index-3

Index

Fonction (FC) 12-27, 12-38


Fonction modulo 11-1
Fonctionnement de S7-SCL 1-2
Fonctions (FC) 6-15
Fonctions d'arrondi et de troncature 14-6
Fonctions de conversion du type
de donnes 14-3
classe B 14-3
fonctions d'arrondi et de troncature 14-6
Fonctions de slection de valeurs 14-26
Fonctions de temporisation 13-9
Fonctions de test de S7-SCL 4-29 - 4-31, 4-33
Fonctions de test de STEP 7 4-36
Fonctions logarithmiques 14-9
Fonctions offertes par S7-SCL 1-4
Fonctions standard 14-3, 14-6
Fonctions standard mathmatiques 14-9,
14-10
Fonctions standard numriques 14-9, 14-10
Fonctions standard sur chane binaire 14-11
Fonctions systme
blocs fonctionnels systme et bibliothque
standard 14-31
Fonctions trigonomtriques 14-10

G
GE_STRNG 14-17
Gnrer des sources S7-SCL avec un diteur
standard 4-6
Gnrer et afficher les donnes de rfrence
4-36
GT_STRNG 14-18

H
Horodatage de la CPU 4-40

I
I_STRNG 14-19
Identificateur d'oprande 5-9
Identificateur standard 5-7
Identificateurs
dfinition 5-6
description formelle du langage 15-17,
15-18
exemple 5-6
rgles 5-6
Imprimer une source SCL 4-25
Indentation des lignes 4-14
Initialisation 8-3
Insrer des appels de bloc 4-17
Insrer des modles de bloc 4-17
Insrer des modles de commentaire 4-17
Insrer des modles de paramtre 4-18
Insrer des structures de contrle 4-18
INSERT 14-15
Installation 2-6

Index-4

Installation de Automation License Manager


2-4
Instance globale 12-29, 12-36
Instance locale 12-29, 12-30, 12-37
Instruction CASE 12-12, 12-16
Instruction CONTINUE 12-12, 12-23
Instruction de saut 12-12
Instruction de slection 12-12
Instruction d'itration 12-12
Instruction EXIT 12-12, 12-24
Instruction FOR 12-12, 12-18, 16-5
Instruction GOTO 12-12, 12-25
Instruction IF 12-12, 12-14
Instruction REPEAT 12-12, 12-22
Instruction RETURN 12-12, 12-26
Instruction WHILE 12-12, 12-21
Instructions 12-1
Instructions de contrle 6-12
insertion 4-18
instruction CASE 12-16
instruction CONTINUE 12-23
instruction EXIT 12-24
instruction FOR 12-18
instruction GOTO 12-25
instruction IF 12-14
instruction REPEAT 12-22
instruction WHILE 12-21
modles 4-18
rgles syntaxiques 15-52
INT 7-3
INT_TO_CHAR 14-4
INT_TO_WORD 14-4
Interface utilisateur de SCL 4-2

J
Jeu de caractres 5-4

L
Label (repre de saut) 9-18
Language de programmation
volu 1-1, 1-4, 1-5
LE_STRNG 14-17
Lecture des valeurs de sortie
dfinition des sorties l'appel
de la FC 12-42
dfinition des sorties l'appel du FB 12-35
LEFT 14-14
LEN 14-13
Libert de format 5-2, 5-3
Licence 2-2, 2-3
Licence d'utilisation 2-6
Licence d'utilisation avec Automation License
Manager 2-1
License Key 2-1, 2-5
License Manager 2-1, 2-2
Lieu de stockage de variables 8-5
Ligne de commentaire 5-16

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

Index

Lire la mmoire de diagnostic de la CPU 4-39


Lire les donnes de CPU 4-39
LN 14-9
LOG 14-9
LT_STRNG 14-18

M
Marque de texte 4-16
Mmentos 10-2
Mmoire image des entres/sorties 10-2
Mmoire tampon de diagnostic 4-39
Mmoire utilisateur 4-39
Mettre la date 4-38
Mettre l'heure 4-38
MID 14-14
Mise entre parenthses 11-1
Mnmoniques
utilisation 4-9
Mnmoniques pour les constantes 9-2
MOD 11-7, 11-8
Modles de bloc 4-17
Modles de commentaire 4-17
Modles de paramtre 4-18
Moins unaire 11-1
Mots rservs 5-5
Mots-cls 5-5, 15-10
Multi-instances 8-7
Multiplication 11-1

N
NE_STRNG 14-17
Ngation 11-1
Nombres 5-11, 5-12
Noms
dfinition 5-6
description formelle du langage
15-17, 15-18
exemples 5-6
rgles 5-6
Norm CEI EN-61131-3 1-1
NOT 11-9, 11-10
Notions fondamentales de SCL 5-4 - 5-13
Nouveauts 1-6
Numros de ligne 4-3, 4-25

OU exclusif 11-1
Ouvrir des blocs 4-6
Ouvrir une source SCL 4-5

P
Paramtre
modles 4-18
Paramtre de sortie 8-1
Paramtre de sortie ENO 12-46
Paramtre d'entre
dfinition 8-1
Paramtre d'entre/sortie 8-1
Paramtre effectif
dfinition 8-1
Paramtre formel 8-1
Paramtres 4-3, 4-20, 6-10, 7-16, 7-17,
8-1, 8-9, 12-42, 12-43
Paramtres de bloc 5-17, 8-12
Paramtres de FB 12-31 - 12-35
Paramtres de FC 12-40 - 12-42
Paramtres d'entre
dfinition (FB) 12-33
dfinition des entres (FC) 12-41
paramtre d'entre EN 12-45
Paramtres d'entre/sortie 12-34
Paramtres effectifs
dfinition des entres 12-41
Pas pas 4-31
Piles 4-41
Plus unaire 11-1
POINTER 7-17, 7-18
Pointeur zro 7-19
Points d'arrt 4-34, 4-36
Positionnement de signets dans le texte
source 4-16
Positionner le curseur dans une ligne donne
4-13
Prsentation du texte source conforme
la syntaxe 4-15
Programmation
structure 1-4
Programmation structure 3-4, 3-6
Programmation symbolique 4-9
Programme utilisateur 3-4, 6-1
Protection de bloc 4-7
Puissance 11-1

O
OB 6-17
OK (drapeau) 8-8
Oprandes 11-2, 11-3
Oprations
liste par ordre alphabtique 15-7
Options du compilateur 6-23, 15-33
OR 11-9, 11-10
Ordre des blocs 4-8
Organigramme de EXPLOITER 3-13
Organigramme de SAISIR 3-17
OU 11-1
S7-SCL V5.3 pour S7-300/400
A5E00324651-01

R
R_STRNG 14-19
REAL 7-3
REAL_TO_DINT 14-4
REAL_TO_DWORD 14-4
REAL_TO_INT 14-4
Rechercher et remplacer des parties
de texte 4-10
Rgles
utilisation des License Keys 2-5

Index-5

Index

Rgles d'utilisation des License Keys 2-5


Rgles lexicales 15-21
Rgles pour les sources SCL 4-8
Rgles syntaxiques 15-34
Remplacer des parties de texte 4-10
Repres de saut 9-18
REPLACE 14-16
Rtablir une action d'dition 4-10
RIGHT 14-14
ROL 14-11
ROR 14-11
ROUND 14-6

S
S_CD 13-6
S_CU 13-6
S_CUD 13-7
S_ODT 13-17
S_ODTS 13-18
S_OFFDT 13-19
S_PEXT 13-16
S_PULSE 13-15
S5Time 13-13
S5TIME 7-4
S7-SCL 1-2, 1-4
S7-SCL
fonctionnement 1-2
fonctions 1-4
Saut dans le programme 12-12
Saut de page 4-25
SCL
interface utilisateur 4-2
Section de dclaration 8-3, 8-11
composition 6-9
dfinition 6-9
initialisation 8-3
paramtres de bloc 8-12, 8-13
rgles syntaxiques 15-37
variables statiques 8-10
variables temporaires 8-11
Section des instructions
composition 6-11
rgles syntaxiques 15-45
Sections de dclaration
prsentation 8-9
Slectionner des parties de texte 4-11
SFC/SFB 14-31
SHL 14-11
SHR 14-11
Signet 4-16
SIN 14-10
Source 4-4 - 4-25, 6-11, 6-21
Soustraction 11-1
SQR 14-9
SQRT 14-9
STEP 7
fonctions de test 4-36

Index-6

STRING 7-7 - 7-9, 9-11, 14-13 - 14-20


STRING_TO_CHAR 14-4
STRNG_DI 14-19
STRNG_I 14-19
STRNG_R 14-19
STRUCT 7-12, 7-13
Structures 7-12
Style et couleur des caractres 4-15, 4-25

T
Tableau (ARRAY)
Affectation de valeur
une variable du type de donnes
ARRAY 12-5
initialisation 8-3
Tableaux 7-10
Taille de papier 4-24
TAN 14-10
Temporisations 13-9
appel d'une fonction de temporisation 13-9
dfinition des paramtres d'une fonction
de temporisation 13-11
dmarrer une temporisation sous forme
de retard la monte (S_ODT) 13-17
dmarrer une temporisation sous forme de
retard la monte mmoris (S_ODTS)
13-18
dmarrer une temporisation sous forme de
retard la retombe (S_OFFDT) 13-19
dmarrer une temporisation sous forme
d'impulsion (S_PULSE) 13-15
dmarrer une temporisation sous forme
d'impulsion prolonge (S_PEXT) 13-16
exemples 13-20
saisie et exploitation de la valeur de temps
13-13
Temps de cycle 4-40
Test avec points d'arrt 4-31
Test en pas pas 4-31
TIME 7-4
TIME_OF_DAY 7-4
TIME_TO_DINT 14-4
TIMER 7-16
TOD_TO_DINT 14-4
TRUNC 14-6
Type de donnes ANY 7-19
Type de donnes ARRAY 7-10
Type de donnes COUNTER 7-16
Type de donnes DATE_AND_TIME 7-5
Type de donnes POINTER 7-17
Type de donnes STRING 7-7
Type de donnes STRUCT 7-12
Type de donnes TIMER 7-16
Types de donnes
description 7-1
Types de donnes binaires 7-3
Types de donnes BLOCK 7-17
Types de donnes complexes 7-2, 7-5, 7-7
S7-SCL V5.3 pour S7-300/400
A5E00324651-01

Index

Types de donnes numriques 7-3


Types de donnes paramtre 7-16, 7-17
Types de donnes simples 7-1, 7-3, 7-4
Types de donnes sur caractre 7-3
Types de donnes utilisateur (UDT) 6-21,
7-14, 12-3
Types de licences
Enterprise License 2-1
Floating License 2-3
Rental License 2-3
Trial License 2-3
Upgrade License 2-3

Variables
dclaration d'une instance 8-7
initialisation 8-3, 8-4
sections de dclaration 8-9
syntaxe gnrale d'une dclaration de
variable ou de paramtre 8-2
Variables locales et paramtres de bloc 8-1
Variables statiques 5-17, 8-1, 8-2, 8-7, 8-10
Variables temporaires 5-17, 8-1, 8-11
Vrification de la cohrence des blocs 4-37
Visualisation 4-33
Visualisation continue 4-30
Visualiser 4-30, 4-32

U
UDT 7-14
appel 6-21
dfinition 6-22
lments 6-21

V
Valeur de retour (FC) 12-39
Valeur de temps (dure) 13-13
Valeurs initiales 8-3
Valeurs limite pour instructions FOR 16-5
VAR 8-9
VAR_IN_OUT 8-9
VAR_INPUT 8-9
VAR_OUTPUT 8-9
VAR_TEMP 8-9
Variable tendue 11-3

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

W
WORD 7-3
WORD_TO_BLOCK_DB 14-4
WORD_TO_BOOL 14-4
WORD_TO_BYTE 14-4
WORD_TO_INT 14-4

X
XOR 11-9

Z
Zone de travail 4-2
Zones de mmoire de la CPU 5-9, 10-1 - 10-6

Index-7

Index

Index-8

S7-SCL V5.3 pour S7-300/400


A5E00324651-01

You might also like