Professional Documents
Culture Documents
Avant-propos, Sommaire
SIMATIC
Prsentation du produit
Installation
Dveloppement d'un
programme S7-SCL
Utilisation de S7-SCL
Structure de programme
S7-SCL
Types de donnes
Dclaration de variables
locales et de paramtres
Dclaration de constantes
et repres de saut
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.
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
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.
Validit du manuel
Ce manuel s'applique au logiciel S7-SCL V5.3.
iii
Avant-propos
Contenu
STEP 7 Connaissances
fondamentales
Configuration matrielle et
communication avec STEP 7 V5.3
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
Aides en ligne
Contenu
Numro de rfrence
Aide de S7-SCL
Aide de STEP 7
Rfrences contextuelles
iv
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.
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/
vi
Tlphone :
Internet:
http://www.sitrain.com
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 :
Tlcopie :
Vous trouvez plus dinformations concernant notre Technical Support sur Internet ladresse
suivante :
http://www.siemens.com/automation/service
vii
Avant-propos
viii
Sommaire
1
Installation .................................................................................................................................2-1
2.1
2.1.1
2.1.2
2.1.3
2.2
2.2.1
2.2.2
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
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
xi
Sommaire
xii
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
Sommaire
10
11
12
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
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
xiv
Sommaire
14.5
14.5.1
14.6
14.6.1
14.6.2
15
16
Glossaire
Index
xv
Sommaire
xvi
Prsentation du produit
1.1
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.
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
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
Prsentation du produit
Editeur
Compilateur
squentiel
Dbogueur
1-3
Prsentation du produit
1.3
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)
1-4
Prsentation du produit
1-5
Prsentation du produit
1.4
Impression en couleurs
Il est possible d'imprimer les sources S7-SCL en couleurs.
1-6
Prsentation du produit
1-7
Prsentation du produit
1-8
Installation
2.1
2.1.1
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
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
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
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
Rental License
Upgrade License
Une mise niveau peut tre ncessaire en raison d'exigences spcifiques de l'tat
du systme :
Une mise niveau peut p. ex. tre requise en raison d'extension des
capacits.
2-3
Installation
2.1.2
Nota
Vous avez galement la possibilit d'utiliser le logiciel de base sans "License Key" pour
en dcouvrir l'interface utilisateur et les fonctionnalits.
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".
Installation
2.1.3
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".
2-5
Installation
2.2
Installation
2.2.1
Environnement requis
2.2.2
Installation de S7-SCL
2-6
3.1
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.
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.
3-1
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.
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
x=Evaluation du front
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
4
Sortie
3-3
3.3
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
.
FB22
.
.
.
FC2
.
.
.
OB1
.
Source SCL
Source
SCL
pour
FC2
Source
SCL
pour
FB22
FB22
FC2
OB1
DB
D'instance
Dossier Blocs
Hors ligne
3-5
3.4
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
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.
FC "SQRT" (racine
carre) et
FC "CARRE"
3-7
3.5
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
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
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
Memoire_calcul
ARRAY[..] OF VAR_OUTPUT
STRUCT
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
SQRT
REAL
valeur de la
fonction
Valeur
INT
VAR_INPUT
CARRE
INT
Valeur de la
fonction
3-9
3.6
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
07
07
07
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
3.7
FC CARRE
appelle
FB CALCUL
appelle
FB SAISIE
appelle
OB CYCLE
3.8
3-11
3.9
3.9.1
3-12
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
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
I := I+1
Fin
3-13
Paramtres d'entre/sortie
Paramtres de sortie
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
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
3-15
3-16
3.11
Cration du FB SAISIE
Modifier
nouvelle
valeur ?
oui
Inscrire valeur de mesure
dans mmoire circulante,
recalculer lindex
non
Modifier
nouveau
tri ?
oui
non
CALCUL
Modifier
nouveau
code ?
oui
Evaluation du codage et
dtermination de ladresse
de sortie
non
Choix
fonction ?
TRUE
FALSE
Charger rsultat du calcul
de la racine carre
Fin
Charger :
inscrire les lments de la liste
avec les adresses de sortie dans
les paramtres de sortie pour ensuite
afficher leurs valeurs.
3-17
3-18
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
Description
Valeurs_mesure
ARRAY [..]
OF INT
8(0)
Pointeur
INT
anc_val
BOOL
FALSE
anc_tri
BOOL
FALSE
anc_selection
BOOL
FALSE
Adresse
INT
Instance_calcul
Instance locale
3-19
3-20
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
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
3-22
3.12
3-23
3-24
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
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.
3-25
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
Voie 1
Commutateur de tri
Voie 2
Voie 3
Commutateur de sortie
Voie 4
Codage
Voie 5
Codage
Voie 6
Codage
Voie 7
Commutateur de codage
3-26
Racine carre
0, 0000 0001 = 1
Carr
0000 0000, 0000 0001 =
0000 0011 =
0, 0000 0010 = 2
0000 0111 =
0, 0000 0011 = 3
49
0000 1111 = 15
0, 0000 0100 = 4
225
0001 1111 = 31
0, 0000 0110 = 6
961
0011 1111 =
63
0, 0000 1000 = 8
0, 0000 1011 = 11
0, 0001 0000 = 16
Utilisation de S7-SCL
4.1
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
Utilisation de S7-SCL
4.3
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
Largeur tabulateurs
Numros de ligne
Demande de confirmation
Signification
Mots-cls en majuscules
Indentation automatique
Style/Couleur
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.
4-3
Utilisation de S7-SCL
4.4
4.4.1
Bloc
(par exemple, FB1, OB1)
Sources
Source
(par exemple, source SCL)
Mnmoniques
un projet,
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
Utilisation de S7-SCL
4.4.2
le projet souhait,
le programme S7 souhait et
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
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.
4-5
Utilisation de S7-SCL
4.4.4
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
4.4.6
4-6
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.
4-7
Utilisation de S7-SCL
4.5
4.5.1
4.5.2
4-8
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.
Nota
Veillez ce que les mnmoniques soient univoques et qu'ils ne soient pas identiques un
mot-cl.
4-9
Utilisation de S7-SCL
4.6
4.6.1
4.6.2
4.6.3
4-10
Utilisation de S7-SCL
4.6.4
4.6.5
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
-
4-11
Utilisation de S7-SCL
4.6.6
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).
4-12
Utilisation de S7-SCL
4.6.8
4-13
Utilisation de S7-SCL
4.6.9
4-14
Utilisation de S7-SCL
Elment de langage
Exemple
Mot-cl
ORGANIZATION_BLOCK
INT
Identificateur prdfini
ENO
Fonction standard
BOOL_TO_WORD
Ocre
Opration
NOT
Rose
Constante
TRUE
Bleu-vert
Commentaire
//... ou (*...*)
Violet
Noir
Texte normal
Variable
4-15
Utilisation de S7-SCL
4.6.11
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.
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
Utilisation de S7-SCL
4-17
Utilisation de S7-SCL
4-18
Utilisation de S7-SCL
4.7
4.7.1
4-19
Utilisation de S7-SCL
4.7.2
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.
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.
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.
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.
4-20
Utilisation de S7-SCL
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
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.
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.
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
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
Utilisation de S7-SCL
4.7.5
en cliquant deux fois sur le message d'erreur pour faire sauter le curseur la position
signale (ligne, colonne).
4-23
Utilisation de S7-SCL
4.8
4.8.1
4.8.2
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
Utilisation de S7-SCL
4.8.3
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
Exemple
Texte normal
Mot-cl
ORGANIZATION_BLOCK
INT
Identificateur prdfini
ENO
BOOL_TO_WORD
Opration
NOT
Constante
TRUE
Bloc de commentaire
(* *)
4-25
Utilisation de S7-SCL
Elment de langage
Exemple
Ligne de commentaire
//...
"Moteur"
4-26
Utilisation de S7-SCL
4.9
Chargement de programmes
4.9.1
4.9.2
Attention
Lorsqu'une carte mmoire est enfiche, la CPU copie son contenu aprs l'effacement
gnral dans la mmoire de chargement interne.
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.
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
Utilisation de S7-SCL
4.10
4.10.1
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 !
4-29
Utilisation de S7-SCL
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
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
Utilisation de S7-SCL
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.
4-31
Utilisation de S7-SCL
4.10.4
Dans le texte source, slectionnez exactement les instructions que vous souhaitez
visualiser.
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.
4-32
Utilisation de S7-SCL
Possibilit de slection
Chemin d'appel
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.
4-33
Utilisation de S7-SCL
4.10.5
si le bloc dans lequel il se trouve est appel par un bloc de niveau suprieur donn et
(ou)
Pour effacer tous les points d'arrt, choisissez la commande Test > Supprimer tous les
points d'arrt.
4-34
Utilisation de S7-SCL
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.
4-35
Utilisation de S7-SCL
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-36
Utilisation de S7-SCL
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.
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.
4-37
Utilisation de S7-SCL
Nota
Vous trouverez de plus amples informations sur cette fonction dans l'aide de STEP 7.
4.11
4.11.1
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-38
Utilisation de S7-SCL
4.11.3
4.11.4
4-39
Utilisation de S7-SCL
4-40
Utilisation de S7-SCL
4-41
Utilisation de S7-SCL
4-42
5.1
Squence
Bloc 3
Bloc 1
Bloc 2
Option
Bloc 4
Bloc 5
Itration
Alternative
5-1
Rgle lexicale
Lettre
_
Caractre de
soulignement
Lettre
Chiffre
_
Caractre de
soulignement
Lettre
Chiffre
5-2
Rgle syntaxique
Les rgles syntaxiques vous laissent la libert de format.
Variable simple
:=
Constante
COMMUTATEUR:=FALSE;
5-3
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
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.
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
ELSIF
OK
EN
OR
5-5
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
Array
S Valeur
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.
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
FBx
FBx
FCx
FCx
Fonction (Function)
Obx
OBx
SDBx
SDBx
SFCx
SFCx
SFBx
SFBx
Tx
Tx
Temporisation (Timer)
UDTx
UDTx
Zx
Cx
Compteur (Counter)
5-7
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
IDENTIFICATEUR
Mnmonique
Exemple
Voici des dsignations autorises :
FB10
DB100
T141
5-8
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
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
Exemple
E1.0 MW10 PAW5 DB20.DW3
5-9
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
Mnmonique
5-10
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
36.
10
20
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
16#F
5-11
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.
.3333
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
8e2.3
.333e-3
30
E10
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'
'REG-$L'
REG-changement de ligne
'REGULATEUR$R
'ETAPE$T'
ETAPE tabulation
5-13
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
"
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
5-15
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.
Dans une ligne de commentaire, le couple de caractres "(*" et "*)" n'a pas de signification.
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
Paramtres de bloc
5-17
5-18
6.1
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.
6-1
6.2
affect
UDT
appelle
DB
appelle
DB avec UDT
affect
appelle
FB 3
DB d'instance du FB 3
appelle
FC 5
OB 1
6-2
6.3
6.4
Type de bloc
Syntaxe
Bloc fonctionnel
FB
FUNCTION_BLOCK nom_fb
...
END_FUNCTION_BLOCK
Fonction
FC
Bloc d'organisation
OB
ORGANIZATION_BLOCK nom_ob
...
END_ORGANIZATION_BLOCK
Bloc de donnes
DB
DATA_BLOCK nom_db
...
END_DATA_BLOCK
UDT
TYPE nom_udt
...
END_TYPE
6-3
Dsignation de bloc
Dans le tableau , nom_xx reprsente la dsignation de bloc conformment la syntaxe
suivante :
Mot-cl
de bloc
Numro
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
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'
VERSION : '3.1'
KNOW_HOW_PROTECT
KNOW_HOW_PROTECT
AUTHOR :
AUTHOR : Siemens
NAME : PID
FAMILY : Exemple
NAME :
FAMILY :
//Pour les DB :
VERSION : 3.1
6-5
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
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...
6-7
6.7
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 :
IDENTIFICATEUR
:=
'
caractre
imprimable
'
Exemples
FUNCTION_BLOCK FB10
{S7_m_c := 'true' ;
S7_blockview := 'big'}
6-8
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 **)
6-9
6.9
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 :
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
6.10
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 :
IDENTIFICATEUR
Instruction
Repre de saut
Exemple
BEGIN
VALEUR_DEBUT :=0;
VALEUR_FIN
:=200;
.
.
ENREGISTRER:
RESULTAT
.
.
END_FUNCTION_BLOCK
:=CONSIGNE;
6-11
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
6.12
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
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.
6-13
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
6.13
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
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
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).
6-15
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
6.14
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
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
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
6-17
6.15
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
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
6-19
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
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
6.16
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
6-21
6-22
:=
2.7 ;
6.17
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.
6-23
Options disponibles
Le tableau indique les options disponibles :
Option
Valeur
Signification
[Scl_]ResetOptions
Aucune indication de
valeur possible
[Scl_]OverwriteBlocks
'y[es]' ou 'n[o]'
[Scl_]GenerateReferenceData
'y[es]' ou 'n[o]'
[Scl_]S7ServerActive
'y[es]' ou 'n[o]'
[Scl_]CreateObjectCode
'y[es]' ou 'n[o]'
[Scl_]OptimizeObjectCode
'y[es]' ou 'n[o]'
[Scl_]MonitorArrayLimits
'y[es]' ou 'n[o]'
[Scl_]CreateDebugInfo
'y[es]' ou 'n[o]'
[Scl_]SetOKFlag
'y[es]' ou 'n[o]'
Mettre le drapeau OK 1
[Scl_]SetMaximumStringLength
'1 .. 254'
Exemple
{SCL_OverwriteBlocks := 'y'
; SCL_CreateDebugInfo
{SetOKFlag := 'y'
; OptimizeObjectCode
:= 'y'}
6-24
:= 'y'}
6-25
Types de donnes
7.1
Types de donnes
Signification
Types de donnes
binaires
BOOL
BYTE
WORD
DWORD
Types de donnes
numriques
INT
DINT
REAL
Types de donnes
temporels
TIME
DATE
TIME_OF_DAY
S5TIME
7-1
Types de donnes
Signification
DATE_AND_TIME
DT
STRING
Dfinit une zone pour une chane de 254 caractres au maximum (type de
donnes CHAR).
ARRAY
STRUCT
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
COUNTER
BLOCK_xx
ANY
POINTER
7-2
Types de donnes
7.2
7.2.1
7.2.2
Type
Mot-cl
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
Double mot
DWORD
32
7.2.3
Type
Mot-cl
Longueur en bits
Plage de valeurs
Caractre unique
CHAR
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
7-3
Types de donnes
7.2.4
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
Types de donnes
7.3
7.3.1
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
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
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
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
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
Types de donnes
7.3.2
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
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.
7-7
Types de donnes
Exemple :
VAR
Text1
Text2
END_VAR
: String [123];
: String;
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.
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
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.
7-9
Types de donnes
7.3.3
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
Indice
1
..
Indice
n
,
6 dimensions au plus
OF
Spcification du
type de donnes
7-10
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.
7-11
Types de donnes
7.3.4
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
Dclaration des
composants
STRUCT
END_STRUCT
Spcification du
type de donnes
Initialisation du
type de donnes
Nom du composant
Nom du composant dans les tableaux
7-12
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.
7-13
Types de donnes
7.4
7.4.1
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
Types de donnes
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
:=
2.7 ;
7-15
Types de donnes
7.5
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
Paramtre effectif :
BLOCK_FB
BLOCK_FC
BLOCK_DB
BLOCK_SDB
2 octets
p. ex. T1
p. ex. Z10
Paramtre effectif :
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
POINTER
6 octets
Paramtre effectif :
7.5.1
p. ex. M50.0
7-16
Types de donnes
7.5.2
7.5.3
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.
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
Types de donnes
7.6
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.
7-19
Types de donnes
7.6.1
CASE ii OF
1:
pANY := MW4;
3..5:
pANY:= aINT[ii];
pANY := iANY;
100:
pANY := NIL;
END_CASE;
SFCxxx(IN := pANY);
7-20
8.1
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
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".
8-1
8.2
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
,
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
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.
8-3
LISTE DE REPET.
DE CONSTANTES
CHAINE DE CHIFFRES
DECIMALES
FACTEUR DE REPETITION
CONSTANTE
Exemples
8-4
8.4
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.
8-5
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
simple
complexe
simple
ANY/POINTER
ANY/POINTER
x (1)
x (1)
x
complexe
ANY/POINTER
FC
simple
complexe
ANY/POINTER
Dclaration d'un accs dans
VAR_IN, VAR_OUT ou
VAR_IN_OUT
simple
x
x
complexe
ANY/POINTER
simple = BOOL, BYTE, WORD, DWORD, INT, DINT, DATE, TIME, S5TIME, CHAR
complexe = ARRAY, STRUCT, DATE_AND_TIME, STRING
8-6
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
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;
8-7
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
END_IF;
8-8
8.8
Sections de dclaration
8.8.1
Syntaxe
FB
FC
Variable comme :
variable statique
VAR
...
END_VAR
X *)
VAR_TEMP
...
END_VAR
variable temporaire
paramtre de sortie
VAR_OUTPUT
...
END_VAR
paramtre d'entre/sortie
VAR_IN_OUT
...
END_VAR
OB
8-9
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
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.
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".
8-11
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.
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
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.
8-13
8-14
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 temporelles :
-
Constantes de date
Constantes de dure
9-1
9.1.1
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
9.1.2
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
dword#32768
DWord#8#37777777777
dinT#8#17777777777
9-3
9.1.3
Description
Exemples en S7-SCL
BOOL
1 bit
FALSE
TRUE
BOOL#0
BOOL#1
BOOL#FALSE
BOOL#TRUE
BYTE
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
'adresse'
WORD
W#16#0000
W#16#FFFF
word#16#f
WORD#8#177777
8#177777
W#2#1001_0100
WORD#32768
DW#16#0000_0000
DW#16#FFFF_FFFF
Dword#8#37777777777
8#37777777777
DW#2#1111_0000_1111_000
0
dword#32768
DWORD
9-4
Exemples en LIST, si
diffrents
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
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
S5T#0ms
S5TIME#2h46m30s
DT#1995-01-01-12:12:12.2
9-5
Syntaxe
CONSTANTE BINAIRE
BOOL#
BYTE#
WORD#
DWORD#
(1) pour le type BYTE seulement
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
Syntaxe
CONSTANTE ENTIERE
INT#
DINT#
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
//
//
//
//
Nombre
Nombre
Nombre
Nombre
9-7
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
Syntaxe
CONSTANTE SUR CARACTERE
CHAR#
'
Caractre
'
SUITE DE CHIFFRES
DECIMAUX
Exemple
Caractre_1 := 'B';
Caractre_2 := char#43;
Caractre_3 := char#'B';
9-9
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
9-10
:= '$41' ;
:='$20';
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
QRQDXWRULVH
9-11
Caractre de
mise en forme
$>
$<
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
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 ;
Syntaxe
Dure
TIME#
Reprsentation dcimale
T#
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.
9-13
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
9-14
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 ;
9-15
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.
SUITE DE CHIFFRES
DECIMAUX
Indication des secondes
SUITE DE CHIFFRES
DECIMAUX
SUITE DE CHIFFRES
DECIMAUX
Indication des millisecondes
Exemple
HEURE1:= TIME_OF_DAY#12:12:12.2 ;
HEURE2:= TOD#11:11:11 ;
9-16
Syntaxe
Date et heure
DATE_AND_TIME#
Indication de la date
SUITE DE CHIFFRES
DECIMAUX
DT#
Indication de la date
Indication de la date
SUITE DE CHIFFRES
DECIMAUX
Anne
SUITE DE CHIFFRES
DECIMAUX
Jour
Mois
SUITE DE CHIFFRES
DECIMAUX
Indication des secondes
SUITE DE CHIFFRES
DECIMAUX
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;
9-17
9.2
Syntaxe
Section de dclaration des repres de saut
LABEL
IDENTIFICATEUR
END_LABEL
Repre de saut
,
Exemple
LABEL
REPERE1, REPERE2, REPERE3;
END_LABEL
9-18
10
Donnes globales
10.1
Absolu
oui
oui
Symbolique
oui
oui
Index
oui
oui
Structur
non
oui
10-1
Donnes globales
10.2
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
IDENTIFICATEUR
D'OPERANDE
Indice
[
Expression
de base
10-2
Donnes globales
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).
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
PA
PQ
Abrviations allemandes
Abrviations anglaises
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
Exemples
OCTET_ETAT :=EB10;
ETAT_3
:=E1.1;
VAL_MESURE :=EW20;
10-4
Donnes globales
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 ;
10-5
Donnes globales
E X [i,j]
Adresse
Expression de base
Identificateur d'oprande
comme indice,
indique entre crochets
Prfixe de
mmoire
Prfixe de
taille
Identificateur d'oprande
Expression
de base
Expression
de base
Indice
Pour adressage binaire seulement
Exemple
VAL_MESURE_1
REPERE
10-6
:=EW[COMPTEUR];
:=E[NOCTET, NBIT];
Donnes globales
10.3
Blocs de donnes
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
Identificateur d'oprande
Index
Expression
de base
Identificateur d'oprande
Variable
simple
Mnmonique d'un DB
Variable
simple
10-7
Donnes globales
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
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
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;
10-9
Donnes globales
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
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];
Donnes globales
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
:=
DB10.resultat.RES2;
DB20.RES2;
DB30.RES2;
10-11
Donnes globales
10-12
11
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 :
Parenthses
11-1
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
11-2
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
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.
11-3
11.3
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
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
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
//
//
//
//
oprande
expression logique
expression de comparaison
expression arithmtique
11-5
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.
+
Expression
simple
Multiplication
simple
-
Multiplication
simple
DIV
MOD
Constante
(
Expression
simple
Exemple :
EXPRESSION_SIMPLE= A * B + D / C - 3 * VALEUR1;
11-6
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
INT, DINT
ANY_NUM
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).
11-7
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
11.6
Expressions logiques
Il s'agit d'une expression forme d'oprations logiques.
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
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.
11-9
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
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
DINT
REAL
BOOL
BYTE
WORD
DWORD
11-11
Type de
donnes
<>
>0
<0
>
<
Rgles
CHAR
STRING
DATE
TIME
DT
paramtres d'une FC
TOD
S5-TIME
paramtres d'une FC
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
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)
11-13
11-14
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.
Variable simple
:=
Expression
Variable absolue
Dans zones de mmoire CPU
Variable dans DB
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.
12-1
Instructions
12.1.1
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
Instructions
:=
:=
:=
:=
:=
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
12-4
Instructions
Nota
Vous ne devez pas affecter de constantes des tableaux complets.
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
Instructions
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
12-7
Instructions
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
Instructions
12.1.6
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
12-9
Instructions
12.1.7
Syntaxe de la variable de DB
Variable de DB
Identificateur d'oprande
DESIGNATION
DU DB
12-10
Prfixe
de taille
Adresse
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
12-11
Instructions
12.2
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
Instruction CASE
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
Instruction REPEAT
12-12
Type de branchement
Fonction
Instruction CONTINUE
Instruction EXIT
Instruction GOTO
Instruction RETURN
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'
Oprande boolen
E1.1
Expression arithmtique
ALPHA = (5 + BETA)
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
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
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 ;
12-15
Instructions
Syntaxe
Instruction CASE
Expression de slection (entier)
CASE
Expression
OF
Valeur
Liste de valeurs
ELSE
Section
des instructions
Section
des instructions
END_CASE
12-16
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 ;
12-17
Instructions
Syntaxe
Instruction FOR
FOR
Affectation
initiale
TO
BY
Expression
de base
Expression
de base
DO
Section
des instructions
pour l'incrment
END_FOR
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
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
:=
Type de donnes
INT/DINT
Oprande
Expression
de base
Expression
de base
Expression
de base
Expression
de base
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
Instructions
Syntaxe
Instruction WHILE
WHILE
Expression
DO
Section
des instructions
END_WHILE
Condition d'excution
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
12-21
Instructions
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
Instructions
Syntaxe
Instruction CONTINUE
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
12-23
Instructions
Syntaxe
Instruction EXIT
EXIT
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
Instructions
Syntaxe
Branchement de
programme
GOTO
IDENTIFICATEUR
Repre de saut
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:
// . . .
12-25
Instructions
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
Instructions
12.3
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.
Paramtres effectifs
3
LONGUEUR
Somme_chif
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
Instructions
12.3.2
Syntaxe
Appel d 'un FB
FB : bloc fonctionnel
SFB : bloc fonctionnel systme
DESIGNATION
DU FB
DESIGNATION
DU DB
Paramtres du FB
IDENTIFICATEUR
Appel absolu :
FB10.DB20 (X1:=5,X2:=78,......);
Affectation des paramtres
Appel symbolique :
MOTEUR.MARCHE (X1:=5,X2:=78,......);
12-29
Instructions
MOTEUR (X1:=5,X2:=78,......);
Affectation des paramtres
12-30
Instructions
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.
12-31
Instructions
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
Instructions
Explication
Expression
Variable tendue
Dsignation de temporisation/
de compteur
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)
:=
DESIGNATION
DU COMPTEUR
DESIGNATION
DU BLOC
12-33
Instructions
Variable tendue
Explication
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'une FC
Instructions
Exemple
RESULTAT := DB10.CONTROLE ;
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
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.
12-36
Instructions
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) ;
12-37
Instructions
12.3.3
Appel de fonctions
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.
Instructions
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.
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
Instructions
Explication
Expression
Constante
Variable tendue
Dsignation de temporisation/
de compteur
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.
12-41
Instructions
Explication
Variable tendue
Appel de fonction
Syntaxe
$IIHFWDWLRQGHOHQWUHVRUWLH
9DULDEOH
WHQGXH
,'(17,),&$7(85
1RPGXSDUDPWUH
GHQWUHVRUWLH
SDUDPWUHIRUPHO
3DUDPWUHHIIHFWLI
!
DSSHOGXQ)&
IDENTIFICATEUR
Nom du paramtre
de sortie ou
d'entre/sortie
:=
Variable
tendue
Paramtre effectif
(Paramtre formel)
12-42
Instructions
Nota
Les paramtres effectifs suivants ne sont pas autoriss pour les paramtres formels
d'entre/sortie :
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.
12-43
Instructions
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
Instructions
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
12-45
Instructions
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
13
Compteurs et temporisation
13.1
Compteurs
Signification
S_CU
S_CD
S_CUD
13.1.2
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
Compteurs et temporisation
C_NO
COUNTER
INT
CD
BOOL
Entre CD : dcrmenter
CU
BOOL
Entre CU : incrmenter
BOOL
PV
WORD
BOOL
BOOL
CV
WORD
RET_VAL
WORD
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.
13-3
Compteurs et temporisation
Exemple
FUNCTION_BLOCK FB1
VAR
CurrVal, binVal: word;
actFlag: bool;
END_VAR
BEGIN
CurrVal
13-4
Compteurs et temporisation
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
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
13-5
Compteurs et temporisation
Fonctionnement
Incrmenter
Initialiser le compteur
Mettre le compteur 0
Interroger le compteur
Fonctionnement
Dcrmenter
Initialiser le compteur
13-6
Compteurs et temporisation
Fonctionnement
Incrmenter
Dcrmenter
Initialiser le compteur
Mettre le compteur 0
Interroger le compteur
Description
C_NO
MONCOMPTEUR
CD
ENTREE E0.0
INITIALISER
PV
METTRE_0
A0.7
CV
VAL_BIN
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
Compteurs et temporisation
13.2
Temporisations
13.2.2
Fonction de temporisation
Signification
S_PULSE
S_PEXT
S_ODT
S_ODTS
S_OFFDT
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
Compteurs et temporisation
13.2.3
Type de donnes
Description
T_NO
TIMER
INTEGER
BOOL
Entre de dmarrage
TV
S5TIME
BOOL
Entre de remise 0
BOOL
Etat de la temporisation
BI
WORD
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.
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
Compteurs et temporisation
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
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
13-13
Compteurs et temporisation
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
Compteurs et temporisation
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
Fixer la dure
d'excution
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
Interroger l'tat
logique
Interroger la valeur
de temps actuelle
13-15
Compteurs et temporisation
13.2.6
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
Redmarrer la dure
d'excution
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 la valeur de
temps actuelle
13-16
Compteurs et temporisation
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
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
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 la valeur de
temps actuelle
13-17
Compteurs et temporisation
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
Redmarrer la
temporisation
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 la valeur de
temps actuelle
13-18
Compteurs et temporisation
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
Redmarrer la
temporisation
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.
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
13-19
Compteurs et temporisation
13-20
Compteurs et temporisation
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
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
14
14.1
14-1
Ordre de conversion
ANY_BIT
ANY_NUM
14-2
Nom de la fonction
Rgle de conversion
BOOL_TO_BYTE
BOOL_TO_DWORD
BOOL_TO_WORD
BYTE_TO_DWORD
BYTE_TO_WORD
CHAR_TO_STRING
DINT_TO_REAL
INT_TO_DINT
INT_TO_REAL
WORD_TO_DWORD
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
BYTE_TO_CHAR
BYTE_TO_INT
WORD_TO_INT(BYTE_TO_WORD(x))
BYTE_TO_DINT
DWORD_TO_DINT(BYTE_TO_DWORD(x))
CHAR_TO_BYTE
CHAR_TO_INT
DATE_TO_DINT
DINT_TO_DATE
DINT_TO_DWORD
DINT_TO_INT
DINT_TO_TIME
14-3
Nom de la fonction
Rgle de conversion
OK
DINT_TO_TOD
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
DWORD_TO_BYTE
DWORD_TO_DINT
DWORD_TO_REAL
DWORD_TO_WORD
DWORD_TO_INT
INT_TO_CHAR
INT_TO_WORD
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
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
STRING_TO_INT
STRNG_I(x)
STRING_TO_DINT
STRNG_DI(x)
STRING_TO_REAL
STRNG_R(x)
TIME_TO_DINT
TOD_TO_DINT
WORD_TO_BOOL
WORD_TO_BYTE
WORD_TO_INT
WORD_TO_DINT
INT_TO_DINT(WORD_TO_INT(x))
WORD_TO_BLOCK_DB
BLOCK_DB_TO_WORD
BCD_TO_INT(x)
WORD_BCD_TO_INT(x)
14-4
Nom de la fonction
Rgle de conversion
OK
INT_TO_BCD(x)
INT_TO_BCD_WORD(x)
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".
14-5
Type du paramtre
d'entre
ROUND
REAL
DINT
TRUNC
REAL
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
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
14-7
14-8
14.2
14.2.1
Type du paramtre
d'entre
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".
14-9
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".
14-10
Appel
Rsultat
// 5
// 9
// 529
// 60.340 ...
// 1_000
// 1
// 2.389_166 ...
PI := 3.141592 ;
RESULTAT := SIN (PI / 6) ;
// 0.5
// 1.047_197 (=PI / 3)
14.3
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
ROR
BOOL
BYTE
WORD
DWORD
INT
INT
INT
INT
BOOL
BYTE
WORD
DWORD
SHL
BOOL
BYTE
WORD
DWORD
INT
INT
INT
INT
BOOL
BYTE
WORD
DWORD
SHR
BOOL
BYTE
WORD
DWORD
INT
INT
INT
INT
BOOL
BYTE
WORD
DWORD
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".
14-11
Appel
Rsultat
// 2#0111_1010
// (= 122 dcimal)
// 2#1111_0100
// (= 244 dcimal)
// 2#1001_1000
// (= 152 dcimal)
// 2#0011_0100
// (= 52 dcimal)
14-12
14.4
14.4.1
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
INT
E, A, M, D, L
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
D, L
D, L
D, L
CHAR
IN2
INPUT
STRING
CHAR
INn
INPUT
STRING
CHAR
Valeur de
retour
STRING
CHAR
14-13
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
INPUT
INT
E, A, M, D, L, const.
STRING
D, L
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
INPUT
INT
E, A, M, D, L, const.
INPUT
INT
E, A, M, D, L, const.
STRING
D, L
Valeur de
retour
14-14
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
IN2
INPUT
STRING
D, L
INPUT
INT
E, A, M, D, L, const.
Position d'insertion
STRING
D, L
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)
14-15
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
IN2
INPUT
STRING
D, L
INPUT
INT
E, A, M, D, L, const.
INPUT
INT
E, A, M, D, L, const.
STRING
D, L
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
IN2
INPUT
STRING
D, L
INT
E, A, M, D, L
Valeur de
retour
14-16
14.4.2
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
S2
INPUT
STRING
D, L
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
S2
INPUT
STRING
D, L
BOOL
E, A, M, D, L
Rsultat de la comparaison
Valeur de
retour
14-17
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
S2
INPUT
STRING
D, L
BOOL
E, A, M, D, L
Rsultat de la comparaison
Valeur de
retour
14-18
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
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
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
14-19
Dclaration
Type de
donnes
Zone de mmoire
Description
INPUT
REAL
E, A, M, D, L, const.
Valeur d'entre
STRING
D, L
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
:=
:=
:=
:=
:=
:=
:=
:=
:=
:=
: 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.
//
////////////////////////////////////////////////////////////////////
14-21
14-22
14-23
14-24
////////////////////////////////////////////////////////////////////
//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
14-25
14.5
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
Description
INPUT
BOOL
E, A, M, D, L
Critre de slection
IN0
INPUT
E, A, M, D, L
IN1
INPUT
E, A, M, D, L
Deuxime valeur
d'entre
Valeur en
retour
OUTPUT
E, A, M, D, L
Valeur d'entre
slectionne (option)
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
Description
IN1
INPUT
ANY_NUM
E, A, M, D, L
E, A, M, D, L
Deuxime valeur
d'entre
E, A, M, D, L
E, A, M, D, L
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)
ANY_NUM
Types de donnes
de temporisation
l'exception de
S5TIME
ANY_NUM
Types de donnes
de temporisation
l'exception de
S5TIME
14-27
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
Description
IN1
INPUT
ANY_NUM
E, A, M, D, L
E, A, M, D, L
Deuxime valeur
d'entre
E, A, M, D, L
E, A, M, D, L
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)
ANY_NUM
Types de donnes
de temporisation
l'exception de
S5TIME
ANY_NUM
Types de donnes
de temporisation
l'exception de
S5TIME
14-28
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
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
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
ANY_NUM
Types de donnes
de temporisation
l'exception de
S5TIME
14-29
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
Description
INPUT
INT
E, A, M, D, L
Critre de slection
IN0
INPUT
E, A, M, D, L
IN1
INPUT
E, A, M, D, L
Deuxime valeur
d'entre
INn
INPUT
E, A, M, D, L
INPUT
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.
14-30
E, A, M, D, L
Valeur slectionne
(option)
14.6
14.6.1
14-31
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
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.
14-33
14-34
15
Description du langage
15.1
Squence
Bloc 3
Bloc 1
Bloc 2
Option
Bloc 4
Bloc 5
Itration
Alternative
15-1
Description du langage
Bloc terminal
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
Description du langage
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.
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
Description du langage
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
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
A F, a f
15-5
Description du langage
Sous-groupe
Caractre imprimable
Caractre de
remplacement
Dollar
Apostrophe
$
'
Caractre de
commande
$P ou $p
$L ou $l
$R ou $r
$T ou $t
$N ou $n
Reprsentation de
$hh
remplacement en code
hexadcimal
15-6
Caractres quelconques
enregistrables en code hexa (hh)
Description du langage
Description
Attributs
''
""
_ caractre de
soulignement
Sparateur pour les valeurs numriques dans les constantes, peut figurer
dans les IDENTIFICATEURS
$> $<
BOOL#
BYTE#
WORD#
DWORD#
INT#
DINT#
REAL#
CHAR#
2#
8#
16#
D#
DATE#
DATE_AND_TIME#
DT#
E
e
Caractrise
Rgle lexicale
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
15-7
Description du langage
Prfixe
Caractrise
D
H
M
MS
S
T#
TIME#
TIME_OF_DAY#
TOD#
Rgle lexicale
Description
..
Indication de plage
(* *)
//
{}
%
()
[]
15-8
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
:=
+, -
+, -, *, /
**
Expression
NOT
Expression, oprande
<,>,<=,>=,=,<>
Oprations de comparaison
Opration de comparaison
MOD; DIV
15-9
Description du langage
Description
Rgle syntaxique
AND
Opration logique
ANY
ARRAY
AT
Dclaration de variable
BEGIN
BLOCK_DB
BLOCK_FB
BLOCK_FC
BLOCK_SDB
BOOL
BY
Introduction de l'incrment
Instruction FOR
BYTE
CASE
Instruction CASE
CHAR
CONST
CONTINUE
Instruction CONTINUE
COUNTER
DATA_BLOCK
Bloc de donnes
DATE
DATE_AND_TIME
DATE_AND_TIME
DINT
DIV
DO
15-10
Description du langage
Mot-cl
Description
Rgle syntaxique
DT
DATE_AND_TIME
DWORD
ELSE
ELSIF
Instruction IF
EN
ENO
END_CASE
Instruction CASE
END_CONST
Section de constantes
END_DATA_BLOCK
Bloc de donnes
END_FOR
Instruction FOR
END_FUNCTION
Fin de la fonction
Fonction
END_FUNCTION_BLOCK
Bloc fonctionnel
END_IF
Fin de la condition IF
Instruction IF
END_LABEL
END_TYPE
Fin de l'UDT
END_ORGANIZATION_
BLOCK
Bloc d'organisation
END_REPEAT
Instruction REPEAT
END_STRUCT
END_VAR
END_WHILE
Instruction WHILE
EXIT
EXIT
FALSE
FOR
Instruction FOR
FUNCTION
Introduction de la fonction
Fonction
FUNCTION_BLOCK
Bloc fonctionnel
GOTO
IF
Instruction IF
INT
LABEL
MOD
NIL
Pointeur zro
15-11
Description du langage
Mot-cl
Description
Rgle syntaxique
NOT
Expression, oprande
OF
OK
OR
Opration logique
ORGANIZATION_BLOCK
Bloc d'organisation
POINTER
PROGRAM
REAL
REPEAT
Instruction REPEAT
RET_VAL
Fonction
RETURN
Instruction RETURN
S5TIME
STRING
STRUCT
THEN
Instruction IF
TIME
TIMER
TIME_OF_DAY
TO
Instruction FOR
TOD
TRUE
TYPE
VAR
VAR_TEMP
UNTIL
Instruction REPEAT
15-12
Description du langage
Mot-cl
Description
Rgle syntaxique
VAR_INPUT
Section de paramtres
VAR_IN_OUT
Section de paramtres
VAR_OUTPUT
Section de paramtres
WHILE
Instruction WHILE
WORD
VOID
Fonction
XOR
Opration logique
15-13
Description du langage
Abrviation
anglaise
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
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
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
DB
DB
FB
FB
FC
FC
Fonction (Function)
OB
OB
SDB
SDB
SFC
SFC
SFB
SFB
Temporisation (Timer)
UDT
UDT
Compteur (Counter)
15-15
Description du langage
15.1.7
Cet lment se rencontre dans les rgles lexicales et dans les rgles syntaxiques.
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
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
Noms prdfinis
Noms de
Identificateurs d'oprande
dans les identificateurs
absolus
Noms quelconques de votre
choix conformes la rgle
IDENTIFICATEUR
Variables dclares
Composants de structure
Paramtres
Constantes dclares
Repres de saut
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
Mots-cls
non
non
non
non
non
non
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.
15-17
Description du langage
Lettre
Caractre de
soulignement
Lettre
Caractre de
soulignement
Chiffre
Chiffre
MNEMONIQUE
"
Caractre
imprimable
"
15-18
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.
Description
Rgle
Nom de bloc
Nom de temporisation et de
compteur
Nom d'attribut
Affectation d'attribut
Nom de constante
Repre de saut
Nom de variable
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
Mnmonique
Constantes
Abrviation
Description
FALSE
TRUE
Drapeaux
15-20
Abrviation
Description
EN
ENO
OK
Drapeau qui est mis FALSE quand une erreur s'est produite dans l'excution
d'une instruction.
Description du langage
15.2
Rgles lexicales
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
Mnmonique
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
SFB
Bloc de donnes
DB
UDT
Mnmonique
"
Caractre
imprimable
"
Numro
Chiffre
15-22
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#
Constante entire
CONSTANTE ENTIERE
INT#
DINT#
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
Chiffre
_
Chiffres dcimaux : 0-9
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
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
'
Caractre
'
SUITE DE CHIFFRES
DECIMAUX
15-24
Description du langage
Rgle
Diagramme syntaxique
'
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
Caractre de
mise en forme
$>
$<
Commentaire
Date
Date
DATE#
Indication de la date
D#
15-25
Description du langage
Rgle
Diagramme syntaxique
Dure
Dure
TIME#
Reprsentation dcimale
T#
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
DT#
Indication de date
Indication de la date
SUITE DE CHIFFRES
DECIMAUX
Anne
15-26
Mois
SUITE DE CHIFFRES
DECIMAUX
Jour
Description du langage
Rgle
Diagramme syntaxique
Indication d'heure du
jour
SUITE DE CHIFFRES
DECIMAUX
SUITE DE CHIFFRES
DECIMAUX
Indication des millisecondes
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
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
Description du langage
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
Adresse
Adressage absolu
Adressage index
d'un DB
Index
Identificateur
d'oprande DB
Expression
de base
Expression
de base
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
Sortie
Mmento
PE
PI
PA
PQ
Abrviations anglaises
Abrviations allemandes
Entre
Prfixe de taille
X
Bit
Octet
Mot
Double mot
Adresse
Numro
Numro
Adressage de l'instance
locale
IDENTIFICATEUR
Variable
simple
15-30
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
&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
IDENTIFICATEUR
:=
'
caractre
imprimable
'
15-32
Description du langage
Diagramme de syntaxe
Option du compilateur
15-33
Description du langage
15.3
Rgles syntaxiques
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
Description du langage
Rgle
Diagramme syntaxique
Programme S7-SCL
Elment du programme SCL
Elment de programme
S7-SCL
Bloc d'organisation
Fonction
Bloc fonctionnel
Bloc de donnes
Bloc d'organisation
Bloc d'organisation
ORGANIZATION_BLOCK
BEGIN
DESIGNATION
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
DESIGNATION
DE LA FC
BEGIN
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
Bloc de donnes
Bloc de donnes
DESIGNATION
DU DB
DATA_BLOCK
BEGIN
Type de donnes
utilisateur
END_DATA_BLOCK
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
Description du langage
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
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
CONST
IDENTIFICATEUR
:=
Expression
simple
END_CONST
Mnmonique de
la constante
LABEL
IDENTIFICATEUR
END_LABEL
Repre de saut
,
15-38
Description du langage
Rgle
Diagramme syntaxique
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)
24 caractres au maximum
IDENTIFICATEUR
:=
'
caractre
imprimable
'
Initialisation du type de
donnes
INITIALISATION
CONSTANTE
LISTE DINITIAL.
DUN TABLEAU
15-39
Description du langage
Rgle
Diagramme syntaxique
Liste d'initialisation de
tableau
LISTE DE REPET.
DE CONSTANTES
CHAINE DE CHIFFRES
DECIMALES
CONSTANTE
FACTEUR DE REPETITION
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
DESIGNATION
DU SFB
Section de variables
temporaires
VAR_TEMP
Dclaration
de la variable
END_VAR
,
L'initialisation n'est pas possible
15-40
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
15-41
Description du langage
15.3.4
Rgle
Diagramme syntaxique
Type de donnes
caractre
Type de donnes
numrique
Type de donnes
temporel
Type de donnes
caractre
Spcification du type de
donnes STRING
BOOL
Bit
BYTE
Octet
WORD
Mot
DWORD
Double mot
CHAR
STRING
Expression
simple
Longueur de la chane
Type de donnes
numrique
INT
DINT
REAL
15-42
Entier
Entier, double prcision
Nombre rel
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
DT#
Spcification du type de
donnes ARRAY
ARRAY
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
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
Description du langage
Rgle
Diagramme syntaxique
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
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 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
Description du langage
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
-
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
15-48
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
<
XOR
Opration de
comparaison
&
15-49
Description du langage
15.3.7
Rgle
Diagramme syntaxique
Appel de FB
Appel d 'un FB
FB : bloc fonctionnel
SFB : bloc fonctionnel systme
DESIGNATION
DU FB
DESIGNATION
DU DB
Paramtres du FB
IDENTIFICATEUR
Appel de fonction
Appel de fonction
DESIGNATION
DE LA FC
DESIGNATION
DE LA SFC
Paramtres
de la FC
FC : fonction
IDENTIFICATEUR
Paramtres de FB
Paramtres du FB
Affectation
de l'entre
Affectation de
l'entre/sortie
15-50
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
!
3DUDPWUHHIIHFWLI
DSSHOGXQ)&
15-51
Description du langage
Rgle
Diagramme syntaxique
Instruction IF
Instruction IF
IF
Expression
THEN
Section
des instructions
THEN
Section
des instructions
Condition
Expression
ELSIF
Condition
Section
des instructions
ELSE
END_IF
Instruction CASE
Instruction CASE
Expression
OF
Valeur
Liste de valeurs
ELSE
15-52
Section
des instructions
Section
des instructions
END_CASE
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
15-53
Description du langage
Rgle
Diagramme syntaxique
Instruction FOR
Instruction FOR
Affectation
initiale
FOR
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
WHILE
Expression
Section
des instructions
DO
END_WHILE
Condition d'excution
Instruction REPEAT
Instruction REPEAT
REPEAT
Section
des instructions
UNTIL
Expression
END_REPEAT
Condition d'abandon
15-54
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
15-55
Description du langage
15-56
16
Conseils et astuces
:
:
:
:
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 !
16-1
Conseils et astuces
Quand vous programmez un FB, vous pouvez employer la section VAR au lieu de
VAR_TEMP.
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.
Reprsentation
+ infinity
1.#INFrandom-digits
- infinity
-1.#INFrandom-digits
Indefinite
digit.#INDrandom-digits
NaN digit.
#NANrandom-digits
16-2
Conseils et astuces
16-3
Conseils et astuces
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
Conseils et astuces
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
...alors
Nota
La variable d'excution ii
s'excute dans le sens
positif.
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
NMAX
16-5
Conseils et astuces
16-6
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).
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.
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).
Glossaire-2
Glossaire
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.
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.
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.
Glossaire-4
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.
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.
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.
Glossaire-6
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.
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).
Glossaire-8
Glossaire
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".
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
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".
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.
Glossaire-12
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.
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 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.
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 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
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
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
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
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
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
Index
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
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
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
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
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