Vous êtes sur la page 1sur 356

Avant-propos, Sommaire

Premire partie :
Conception
Deuxime partie :
Utilisation et test
Troisime partie :
Description du langage
SIMATIC
Annexes

SCL pour S7-300/400 Glossaire, Index


Programmation de blocs

Manuel

Ce manuel a le numro de rfrence suivant :

6ES7811-1CA02-8CA0
Informations relati- Ce manuel donne des consignes que vous devez respecter pour votre propre scurit ainsi
ves la scurit que pour viter des dommages matriels. Elles sont mises en vidence par un triangle daver-
tissement et sont prsentes, selon le risque encouru, de la faon suivante :

Danger
! signifie que la non-application des mesures de scurit appropries conduit la mort, des
lsions corporelles graves ou un dommage matriel important.

Attention
! signifie que la non-application des mesures de scurit appropries peut conduire la mort,
des lsions corporelles graves ou un dommage matriel important.

Avertissement
! signifie que la non-application des mesures de scurit appropries peut conduire des
lsions corporelles lgres ou un dommage matriel.

Nota
doit vous rendre tout particulirement attentif des informations importantes sur le produit,
aux manipulations effectuer avec le produit ou la partie de la documentation correspon-
dante.

Personnel qualifi La mise en service et lutilisation de la console ne doivent tre effectues que conformment
au manuel.
Seules des personnes qualifies sont autorises effectuer des interventions sur la console. Il
sagit de personnes qui ont lautorisation de mettre en service, de mettre la terre et de rep-
rer des appareils, systmes et circuits lectriques conformment aux rgles de scurit en
vigueur.

Utilisation conforme Tenez compte des points suivants :


aux dispositions

Attention
! Le produit ne doit tre utilis que pour les applications spcifies dans le catalogue ou dans
la description technique, et exclusivement avec des priphriques et composants recomman-
ds par Siemens.

Marques SIMATIC, SIMATIC NET et SMATIC HMI sont des marques dposes de
SIEMENS AG.
Les autres dsignations dans cette publication peuvent tre des marques dont lutilisation par
des tiers pour leur compte peut lser les droits des propritaires.

Copyright  Siemens AG 1998 Tous droits rservs Exclusion de responsabilit


Toute communication ou reproduction de ce support dinformation, Nous avons vrifi la conformit du contenu du prsent manuel avec
toute exploitation ou communication de son contenu sont interdites, le matriel et le logiciel qui y sont dcrits. Or des divergences ntant
sauf autorisation expresse. Tout manquement cette rgle est illicite pas exclues, nous ne pouvons pas nous porter garants pour la
et expose son auteur au versement de dommages et intrts. Tous conformit intgrale. Si lusage de ce manuel devait rvler des
nos droits sont rservs, notamment pour le cas de la dlivrance erreurs, nous en tiendrons compte et apporterons les corrections
dun brevet ou celui de lenregistrement dun modle dutilit. ncessaires ds la prochaine dition. Veuillez nous faire part de vos
suggestions.
Siemens AG
Bereich Automatisierungs- und Antriebstechnik
Geschaeftsgebiet Industrie-Automatisierungssysteme  Siemens AG 1998
Postfach 4848, D-90327 Nuernberg Sous rserve de modifications.

Siemens Aktiengesellschaft 6ES7811-1CA02-8CA0


Avant-propos

Objet du manuel Ce manuel constitue une aide prcieuse lorsque vous crivez vos programmes utili-
sateur dans le langage de programmation SCL. Il traite des procdures de principe
concernant la cration de programmes avec lditeur, le compilateur et le dbogueur
de SCL.
Ce manuel comporte en outre une partie de rfrence traitant des lments de lan-
gage de SCL, en particulier de leur syntaxe et de leur fonction.

Groupe cible Le prsent manuel sadresse aux programmeurs de programmes S7, ainsi quau per-
sonnel de mise en service et de maintenance. Des connaissances gnrales dans le
domaine de la technique dautomatisation savrent utiles.

Champ Ce manuel sapplique au logiciel de programmation STEP 7, partir de la ver-


dapplication sion 3.0. Il fait rfrence au logiciel de base STEP 7.

Conformit la SCL correspond au langage liste dinstructions (Structured Control Language)


norme CEI 1131-3 dfini dans la norme DIN EN 61131-3 (CEI 1131-3), en prsentant toutefois dimportan-
tes diffrences pour ce qui est des oprations. Vous trouverez plus de dtails ce
sujet dans la table de correspondance la norme dans le fichier NORM_TBL.WRI
(anglais) ou NORM_TAB.WRI (allemand) de STEP 7.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 iii
Avant-propos

Vue densemble de Il existe une importante documentation utilisateur destine vous aider pour la
la documentation configuration et la programmation dun automate programmable S7 et dont vous
utilisateur vous servirez de manire slective. Les explications de la figure ci-aprs doivent
faciliter lutilisation de cette documentation.

Lordre propos sadresse


un nouvel utilisateur de S7.
Symbole Signification

Introduction la mthodologie
Ouvrages de rfrence nutiliser que de faon slective
Documentation complte par une aide en ligne

Petit Faites connaissance avec le S7-300...


manuel
illustr
/30/

Manuel de Logiciel systme pour SIMATIC S7-300/400 Manuels pour le


Manuel matriel M7-300/400
program- Conception de programmes
mation
/234/
Aide en ligne

Guide de Logiciel de base pour Manuel Logiciel de base pour SIMATIC S7


lutilisateur SIMATIC S7 et M7 STEP 7
STEP 7 Pour une transition facile de S5 S7...
/231/ /230/

CONT LIST LOG SCL

/233/ /232/ /236/ /250/


Manuel de Logiciel systme pour
rfrence SIMATIC S7-300/400
Fonctions standard et
CFC CFC /235/ fonctions systme
GRAPH HiGraph pour S7
pour S7
pour S7 Volume 2
Volume 1
/251/ /252/ /254/ /249/

Progiciels de langage

/xxx/ : Numro dans la bibliographie

SCL pour SIMATIC S7-300/400, Programmation de blocs


iv C79000-G7077-C522-01
Avant-propos

Titre Contenu
Petit manuel illustr Ce cahier constitue une introduction trs simple la mthodologie de configuration et de
Faites connaissance avec le programmation dun automate S7-300. Il sadresse tout particulirement aux utilisateurs ne
S7-300... connaissant pas les automates programmables S7.
Manuel de programmation Ce manuel de programmation prsente les connaissances de base sur lorganisation du sys-
Conception de programmes tme dexploitation et dun programme utilisateur dune CPU S7. Il est conseill aux nou-
S7-300/400 veaux utilisateurs des S7-300/400 de lutiliser pour avoir une vue densemble de la mthodo-
logie de programmation et pour concevoir, ensuite, leur programme utilisateur.
Manuel de rfrence Les CPU S7 disposent de blocs dorganisation et de fonctions systme intgrs dont vous
Fonctions standard et fonc- pouvez vous servir lors de la programmation. Ce manuel prsente une vue densemble des
tions systme fonctions systme, blocs dorganisation et fonctions standard chargeables disponibles dans
S7-300/400 S7, ainsi que comme informations de rfrence des descriptions dinterface dtailles pour
leur utilisation dans le programme utilisateur.
Guide de lutilisateur Ce guide de lutilisateur STEP 7 explique le principe dutilisation et les fonctions du logiciel
STEP 7 dautomatisation STEP 7. Que vous soyez un utilisateur dbutant de STEP 7 ou que vous
connaissiez bien STEP 5, il vous donne une vue densemble sur la marche suivre pour la
configuration, la programmation et la mise en uvre dun automate S7-300/S7-400. Vous
pouvez, lors de lutilisation du logiciel, accder de manire slective laide en ligne qui r-
pondra vos questions prcises sur le logiciel.
STEP 7 Vous aurez besoin de ce guide si vous avez lintention de convertir des programmes S5
Pour une conversion facile existants afin de les excuter dans des CPU S7. Ce guide vous donne une vue densemble du
de S5 S7... mode de fonctionnement et de lutilisation du convertisseur ; vous trouverez des informations
Manuel dtailles sur lutilisation des fonctions du convertisseur dans laide en ligne. Cette dernire
contient galement la description dinterface des fonctions S7 converties disponibles.
Manuels Les manuels concernant les progiciels de langage LIST, CONT, LOG et SCL contiennent
LIST, CONT, LOG, SCL1 aussi bien des instructions pour lutilisateur que la description du langage. Vous navez be-
soin, pour la programmation dun S7-300/400, que de lun de ces langages, mais pouvez les
mlanger lintrieur dun projet si besoin est. Il est conseill, lors de la premire utilisation
des langages, de se familiariser avec la mthodologie de la cration de programmes laide du
manuel.
Dans le logiciel, vous pouvez appeler laide en ligne qui rpondra vos questions dtail-
les sur lutilisation des diteurs et compilateur associs.
Manuels Les langages GRAPH, HiGraph et CFC offrent des possibilits supplmentaires pour la rali-
GRAPH1, HiGraph1, CFC1 sation de commandes squentielles, de graphes dtat ou de cblages graphiques de blocs. Ces
manuels contiennent aussi bien des instructions pour lutilisateur que la description du lan-
gage. Il est conseill, lors de la premire utilisation de ces langages, de se familiariser avec la
mthodologie de la cration de programmes laide du manuel.
Dans le logiciel, vous pouvez appeler laide en ligne (except pour HiGraph) qui rpondra
vos questions dtailles sur lutilisation des diteurs et compilateurs associs.
1 Progiciels optionnels pour le logiciel systme de S7-300/400

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 v
Avant-propos

Structure du La connaissance thorique des programmes S7 est suppose acquise. Elle est prsen-
manuel te dans le manuel de programmation /234/. Puisque la mise en uvre des progiciels
de langage requiert le logiciel de base, vous devriez tre familiaris avec lutilisa-
tion de ce dernier, dcrite dans le guide de lutilisateur/234/.
Ce manuel est organis daprs les thmes suivants :
S Le chapitre 1 contient des informations gnrales sur la programmation avec
SCL.
S La chapitre 2 traite de la conception dun processus en sappuyant sur un exem-
ple que vous avez la possibilit de mettre en application.
S Le paragraphe 3-6 vous montre comment utiliser lenvironnement de dveloppe-
ment de SCL. Vous y apprendrez vous servir de lditeur, du compilateur et du
dbogueur de SCL.
S Les chapitres 7 9 constituent la partie de rfrence, qui vous donne des infor-
mations dtailles sur la fonction de chaque instruction de SCL.
En annexe vous trouverez :
S La reprsentation syntaxique complte de SCL.
S Un glossaire dans lequel les termes essentiels sont expliqus.
S Un index vous permettant de localiser rapidement les termes principaux.

Conventions Les renvois dautres publications sont indiqus laide de numros entre barres
obliques /.../. Vous trouverez, laide de ces numros, le titre exact de ces publica-
tions dans la bibliographie lannexe D.

Aide Adressez-vous votre agence Siemens pour toute question sur le logiciel dcrit
supplmentaire laquelle vous ne trouveriez pas de rponse dans la documentation papier ou dans
laide en ligne. Vous trouverez les adresses des agences Siemens dans le monde
lannexe des publications /70/ ou /100/, dans les catalogues ainsi que sur
Compuserve (go autforum).
En outre, notre ligne rouge est galement votre disposition :
Tel. +49(911) 895-7000 (Fax 7001)
Si vous avez des questions ou des remarques sur le prsent manuel, nous vous prions
de complter le formulaire la fin du manuel et de lenvoyer ladresse indique.
Nhsitez pas galement indiquer votre apprciation personnelle du manuel.
Nous proposons des cours pour faciliter lapprentissage des automates programma-
bles SIMATIC S7. Adressez-vous votre centre de formation ou notre centre prin-
cipal :
D-90327 Nrnberg, tl. 19/ 49 / 911 / 895 3154.

Remarque La partie utilisateur de ce manuel ne contient pas de notice dinstructions effec-


tuer, mais fournit des principes de base pour la programmation avec SCL. De plus
amples informations sur linterface du logiciel et sur son utilisation sont donnes
dans laide en ligne.

SCL pour SIMATIC S7-300/400, Programmation de blocs


vi C79000-G7077-C522-01
Sommaire

Pemire partie : Conception

Avant-propos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iii
1 Prsentation du produit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-1
1.1 Prsentation de SCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2
1.2 Avantages offerts par SCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-3
1.3 Caractristiques de lenvironnement de dveloppement . . . . . . . . . . . . . . . . . . . . . 1-5
2 Dveloppement dun programme SCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-1
2.1 Prsentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-2
2.2 Enonc de la tche rsoudre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-3
2.3 Solution utilisant des blocs SCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-5
2.3.1 Dlimitation des tches partielles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-5
2.3.2 Choix et affectation des blocs possibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-6
2.3.3 Dfinition des interfaces entre les blocs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-7
2.3.4 Dfinition de linterface dentre/sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-9
2.3.5 Programmation des blocs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-10
2.4 Programmation du bloc dorganisation CYCLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-11
2.5 Programmation du bloc fonctionnel SAISIE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-12
2.6 Programmation du bloc fonctionnel CALCUL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-17
2.7 Programmation de la fonction CARRE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-21
2.8 Donnes de test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-22

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 vii
Sommaire

Deuxime partie : Utilisation et test

3 Installation du logiciel SCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1


3.1 Autorisation / licence dutilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-2
3.2 Installation / Dsinstallation du logiciel SCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
4 Utilisation de SCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-1
4.1 Dmarrage du logiciel SCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2
4.2 Adaptation de linterface utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-3
4.3 Utilisation de lditeur de SCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-5
5 Programmation avec SCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-1
5.1 Crer un programme utilisateur avec SCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-2
5.2 Crer et ouvrir une source SCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-3
5.3 Saisir des dclarations, instructions et commentaires . . . . . . . . . . . . . . . . . . . . . . . 5-4
5.4 Enregistrer et imprimer une source SCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-5
5.5 Procdure de compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-6
5.6 Charger le programme utilisateur cr dans lAP . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-9
5.7 Crer un fichier dinformations compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-10
6 Test dun programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1
6.1 Prsentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-2
6.2 Fonction de test Visualisation continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-3
6.3 Fonction de test Activer les points darrt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-5
6.4 Fonction de test Visualiser/forcer des variables . . . . . . . . . . . . . . . . . . . . . . . . . 6-8
6.5 Fonction de test Donnes de rfrence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-9
6.6 Utilisation des fonctions de test de STEP 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-10

SCL pour SIMATIC S7-300/400, Programmation de blocs


viii C79000-G7077-C522-01
Sommaire

Troisime partie : Description du langage

7 Notions fondamentales dans SCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-1


7.1 Aide relative la description du langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-2
7.2 Jeu de caractres de SCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-4
7.3 Mots rservs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-5
7.4 Identificateurs dans SCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-7
7.5 Identificateurs standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-8
7.6 Nombres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-10
7.7 Types de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-12
7.8 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-14
7.9 Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-16
7.10 Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-17
7.11 Blocs SCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-18
7.12 Commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-20
8 Structure dun fichier source SCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-1
8.1 Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-2
8.2 Dbut et fin de bloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-4
8.3 Attributs de bloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-5
8.4 Section de dclaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-7
8.5 Section des instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-10
8.6 Instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-11
8.7 Structure dun bloc fonctionnel (FB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-12
8.8 Structure dune fonction (FC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-14
8.9 Structure dun bloc dorganisation (OB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-16
8.10 Structure dun bloc de donnes (DB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-17
8.11 Structure dun type de donnes utilisateur (UDT) . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-19
9 Types de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-1
9.1 Prsentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-2
9.2 Types de donnes simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-3
9.3 Types de donnes complexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-4
9.3.1 Type de donnes DATE_AND_TIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-5
9.3.2 Type de donnes STRING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-6
9.3.3 Type de donnes ARRAY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-7
9.3.4 Type de donnes STRUCT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-8
9.4 Type de donnes utilisateur (UDT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-10
9.5 Types de paramtres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-12

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 ix
Sommaire

10 Dclaration de variables locales et de paramtres de blocs . . . . . . . . . . . . . . . . . . . . . . . 10-1


10.1 Prsentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-2
10.2 Dclaration de variables et de paramtres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-4
10.3 Initialisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-5
10.4 Dclaration dinstances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-7
10.5 Variables statiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-8
10.6 Variables temporaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-9
10.7 Paramtres de bloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-10
10.8 Drapeaux (drapeau OK) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-12
11 Dclaration de constantes et de repres de saut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-1
11.1 Constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-2
11.2 Constantes littrales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-3
11.3 Notations des constantes littrales entires et relles . . . . . . . . . . . . . . . . . . . . . . . 11-4
11.4 Notations des constantes littrales de type caractre ou chane de caractres . 11-7
11.5 Notations des constantes de temporisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-10
11.6 Repres de saut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-14
12 Dclaration de donnes globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-1
12.1 Prsentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-2
12.2 Zones de mmoire dune CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-3
12.3 Adressage absolu des zones de mmoire de la CPU . . . . . . . . . . . . . . . . . . . . . . . 12-4
12.4 Adressage symbolique des zones de mmoire de la CPU . . . . . . . . . . . . . . . . . . . 12-6
12.5 Adressage index des zones de mmoire de la CPU . . . . . . . . . . . . . . . . . . . . . . . 12-7
12.6 Blocs de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-8
12.7 Adressage absolu des blocs de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-9
12.8 Adressage index des blocs de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-11
12.9 Adressage structur des blocs de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-12
13 Expressions, oprateurs et oprandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-1
13.1 Oprateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-2
13.2 Syntaxe dune expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-3
13.2.1 Oprandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-5
13.3 Expressions arithmtiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-7
13.4 Exposants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-9
13.5 Expressions de comparaison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-10
13.6 Expressions logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-12

SCL pour SIMATIC S7-300/400, Programmation de blocs


x C79000-G7077-C522-01
Sommaire

14 Affectation de valeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-1


14.1 Prsentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-2
14.2 Affectation de valeurs des variables de type de donnes simple . . . . . . . . . . . . 14-3
14.3 Affectation de valeurs des variables de type STRUCT et UDT . . . . . . . . . . . . . . 14-4
14.4 Affectation de valeurs des variables de type ARRAY . . . . . . . . . . . . . . . . . . . . . . 14-6
14.5 Affectation de valeurs des variables de type STRING . . . . . . . . . . . . . . . . . . . . . 14-8
14.6 Affectation de valeurs des variables de type DATE_AND_TIME . . . . . . . . . . . . 14-9
14.7 Affectation de variables absolues pour zones de mmoire . . . . . . . . . . . . . . . . . . . 14-10
14.8 Affectation une variable globale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-11
15 Instructions de contrle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-1
15.1 Prsentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-2
15.2 Instruction IF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-4
15.3 Instruction CASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-6
15.4 Instruction FOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-8
15.5 Instruction WHILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-10
15.6 Instruction REPEAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-11
15.7 Instruction CONTINUE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-12
15.8 Instruction EXIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-13
15.9 Instruction GOTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-14
15.10 Instruction RETURN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-16
16 Appel de fonctions et de blocs fonctionnels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-1
16.1 Appel et transmission de paramtres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-2
16.2 Appel de blocs fonctionnels (FB ou SFB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-3
16.2.1 Paramtres du FB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-5
16.2.2 Affectation de lentre (FB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-7
16.2.3 Affectation de lentre/sortie (FB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-8
16.2.4 Exemple dappel dune instance globale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-10
16.2.5 Exemple dappel dune instance locale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-12
16.3 Appel de fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-13
16.3.1 Paramtres de la FC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-15
16.3.2 Affectation de lentre (FC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-16
16.3.3 Affectation de la sortie ou de lentre/sortie (FC) . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-17
16.3.4 Exemple dappel de fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-19
16.4 Paramtres dfinis automatiquement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-20
17 Compteurs et temporisations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-1
17.1 Fonctions de comptage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-2
17.1.1 Saisie et exploitation de la valeur de comptage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-6
17.1.2 Incrmenter (Counter Up) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-7
17.1.3 Dcrmenter (Counter Down) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-7
17.1.4 Incrmenter / dcrmenter (Counter Up Down) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-8
17.1.5 Exemple de fonction S_CD (dcrmenter) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-8
17.2 Fonctions de temporisation (TIMER) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-10
17.2.1 Saisie et exploitation de la valeur de temps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-14

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 xi
Sommaire

17.2.2 Dmarrer une temporisation sous forme dimpulsion . . . . . . . . . . . . . . . . . . . . . . . . 17-16


17.2.3 Dmarrer une temporisation sous forme dimpulsion prolonge . . . . . . . . . . . . . . 17-17
17.2.4 Dmarrer une temporisation sous forme de retard la monte . . . . . . . . . . . . . . . 17-18
17.2.5 Dmarrer une temporisation sous forme de retard la monte mmoris . . . . . 17-19
17.2.6 Dmarrer une temporisation sous forme de retard la retombe . . . . . . . . . . . . . 17-20
17.2.7 Exemple de programme pour une impulsion prolonge . . . . . . . . . . . . . . . . . . . . . 17-21
17.2.8 Choix de la temporisation correcte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-22
18 Fonctions standard de SCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-1
18.1 Conversion de types de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-2
18.2 Fonctions standard de conversion de types de donnes . . . . . . . . . . . . . . . . . . . . . 18-3
18.3 Fonctions standard numriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-9
18.4 Fonctions standard sur les chanes binaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-11
19 Interface dappel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-1
19.1 Interface dappel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-2
19.2 Interface dchange avec les OB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-4

SCL pour SIMATIC S7-300/400, Programmation de blocs


xii C79000-G7077-C522-01
Sommaire

Annexes

A Description formelle du langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-1


A.1 Prsentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-2
A.2 Prsentation des pavs terminaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-5
A.3 Pavs terminaux dans les rgles lexicales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-6
A.4 Caractres de mise en forme, sparateurs et oprateurs . . . . . . . . . . . . . . . . . . . . A-7
A.5 Mots-cls et identificateurs prdfinis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-9
A.6 Identificateurs doprandes et mots-cls de blocs . . . . . . . . . . . . . . . . . . . . . . . . . . A-12
A.7 Prsentation des pavs non terminaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-14
A.8 Prsentation des symboles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-14
A.9 Identificateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-15
A.10 Attribution de noms dans SCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-16
A.11 Constantes et drapeaux prdfinis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-18
B Rgles lexicales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-1
B.1 Identificateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-2
B.1.1 Constantes littrales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-4
B.1.2 Adressage absolu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-9
B.2 Commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-11
B.3 Attributs de blocs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-12
C Rgles syntaxiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-1
C.1 Organisation des sources SCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-2
C.2 Structure des sections de dclaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-4
C.3 Types de donnes dans SCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-8
C.4 Section des instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-11
C.5 Affectation de valeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-13
C.6 Appel de fonctions et de blocs fonctionnels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-16
C.7 Instructions de contrle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-18
D Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D-1
Glossaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Glossaire-1
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Index-1

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 xiii
Sommaire

SCL pour SIMATIC S7-300/400, Programmation de blocs


xiv C79000-G7077-C522-01
Premire partie : 1
Prsentation du produit
Conception
Dveloppement dun
programme SCL 2
SCL pour SIMATIC S7-300/400, Programmation de blocs
-2 C79000-G7077-C522-01
Prsentation du produit 1
Langage de Il est de plus en plus frquent que lon exige des systmes dautomatisation quils
programmation soient capables de rsoudre non seulement les tches de commande classiques, mais
SCL galement des tches de gestion de donnes ainsi que des fonctions mathmatiques
complexes. Cest la raison pour laquelle nous vous proposons SCL pour S7-300/400
(Structured Control Language), le langage de programmation tout particulirement
conu pour faciliter la programmation de telles tches, conformment la norme
CEI 113-3.
SCL vous permet, outre la rsolution de tches de commande normales , le traite-
ment dapplications particulirement volumineuses et est de fait suprieur aux lan-
gages de programmation classiques dans les domaines suivants :
S gestion de donnes
S optimisation de processus
S gestion de formulations
S fonctions mathmatiques/statistiques

Caractristiques Pour pouvoir utiliser SCL, il vous faut une console de programmation SIMATIC ou
techniques un PC ( partir du processeur 80486, mmoire RAM de 16 Mo).
Elments de langage
Oprateurs Puissance/arithmtique
Comparaisons/
Combinaisons

Fonctions Temporisations/Compteurs
Appels de blocs fonctionnels

Structures de contrle Boucles (FOR/WHILE/REPEAT)


Branchements (IF THEN/CASE/GOTO)
Types de donnes
simples BOOL/BYTE/WORD/DWORD
INT/DINT/REAL
DATE/TIME/TIME_OF_DAY/S5TIME

complexes Chanes de caractres/tableaux/


structures/structures utilisateur/
DATE_AND_TIME

Structure du Paragraphe Thme Page


chapitre 1.1 Prsentation de SCL 1-2
1.2 Avantages offerts par SCL 1-3
1.3 Caractristiques de lenvironnement de dveloppement 1-5

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 1-1
Prsentation du produit

1.1 Prsentation de SCL

Langage de SCL (Structured Control Language) est un langage de programmation volu proche
programmation du PASCAL, conforme une norme sur les automates programmables.
volu
La norme DIN EN 61131-3 (qui correspond la norme internationale CEI 1131-3) normalise
les langages de programmation destins aux automates programmables. La partie
traitant du texte structur constitue le fondement de SCL. Vous trouverez plus de
dtails ce sujet dans la table de correspondance la norme dans le fichier
NORM_TBL.WRI (anglais) ou NORM_TAB.WRI (allemand) de STEP 7.
Outre les lments du langage volu, SCL dispose galement dlments de langage
spcifiques aux automates programmables, comme les entres, sorties, temporisations,
mmentos, appels de blocs etc.. SCL complte et largit ainsi le spectre du logiciel de
programmation STEP 7 avec ses langages de programmation CONT, LOG et LIST.

Environnement de Un environnement de dveloppement rpondant la fois aux exigences de SCL et


dveloppement de STEP 7 permet doptimiser et de simplifier lutilisation de SCL. Il comprend :
S un diteur, permettant dcrire des programmes avec des fonctions (FC), des
blocs fonctionnels (FB), des blocs dorganisation (OB), des blocs de donnes
(DB) et des types de donnes utilisateur (UDT). Des fonctions puissantes assis-
tent le programmeur dans sa tche.
S un compilateur squentiel pour compiler le programme pralablement dit en
code machine MC7. Celui-ci est excutable sur toutes les CPU des systmes
dautomatisation S7-300/400 partir de la CPU 314.
S un dbogueur, permettant de rechercher des erreurs de programmation logiques
dans un programme correctement compil. La recherche derreurs seffectue
dans le langage source.
Lutilisation de ces divers lments est simple et conviviale, puisquils sont tous
excutables sous Windows 95 et prsentent ainsi tous les avantages offerts par ce
systme dexploitation.

SCL pour S7-300/400

Compilateur
Editeur Dbogueur
squentiel

Figure 1-1 Environnement de dveloppement de SCL

SCL pour SIMATIC S7-300/400, Programmation de blocs


1-2 C79000-G7077-C522-01
Prsentation du produit

1.2 Avantages offerts par SCL

Langage de SCL propose non seulement tous les avantages dun langage de programmation vo-
programmation lu, mais galement des proprits qui ont tout particulirement t conues pour
volu permettre une programmation structure, comme par exemple :
S la structure de blocs de STEP 7,
S des modles de blocs,
S la compatibilit avec STEP 5.

Conservation de la SCL permet de rsoudre de manire optimale les diverses tches qui composent un
structure de bloc projet dautomatisation, si bien quil peut tre mis en uvre efficacement avec
de STEP 7 STEP 7 dans chaque phase du projet.
En appliquant en particulier le concept de blocs de STEP 7, SCL permet comme
LIST, LOG et CONT, la programmation norme de blocs.

OB FC FB DB UDT SFC SFB

Blocs STEP 7

Types de blocs De par leur fonction, leur structure ou leur utilisation, les blocs de STEP 7 sont des
sections limites dun programme utilisateur. SCL vous permet de crer les blocs
suivants :

Nom Type de bloc Fonction


Interface entre le systme dexploitation et le programme
OB Bloc dorganisation
utilisateur.
Bloc permettant la transmission de paramtres sans
FC Fonction
mmoire.
Bloc permettant la transmission de paramtres et possdant
FB Bloc fonctionnel
une mmoire.
Bloc de donnes Bloc permettant denregistrer des donnes utilisateur.
DB

Type de donnes Bloc permettant denregistrer un type de donnes utilisa-


UDT teur.
utilisateur

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 1-3
Prsentation du produit

Blocs prdfinis Vous ntes pas amens dfinir chaque fonction par vous mme, mais avez la pos-
sibilit dutiliser des blocs prdfinis. Ils se trouvent dans le systme dexploitation
de lunit centrale ou dans des bibliothques (S7lib) du logiciel de base STEP 7 et
peuvent tre utiliss pour programmer des fonctions de communication. Il sagit des
types de blocs suivants :

Nom Type de bloc Fonction


SFC Fonction systme Mmes proprits quune fonction (FC)
SFB Bloc fonctionnel systme Mmes proprits quun bloc fonctionnel (FB)

Compatibilit des Les blocs programms dans SCL sont compatibles avec les blocs LIST, CONT et
blocs LOG. Ceci signifie quun bloc programm dans SCL peut appeler un bloc pro-
gramm dans LIST, CONT ou LOG et inversement. Ainsi, les langages de program-
mation STEP 7 et SCL (logiciel optionnel) se compltent parfaitement.

Dcompilation La dcompilation de blocs de SCL dans le langage de programmation LIST (liste


dinstructions) de STEP 7 est possible, la dcompilation dans SCL ne ltant pas.

Compatibilit avec A quelques rares exceptions prs, la compatibilit ascendante des blocs crs avec
STEP 5 SCL dans STEP 5 est assure, ce qui signifie que ces blocs peuvent galement tre
dits, compils et tests avec SCL pour STEP 7.

Mthodes de Grce des mthodes modernes de gnie logiciel, SCL applique la programmation
programmation structure.

Apprentissage Une exprience succincte dans un langage de programmation volu est suffisante
pour pouvoir aisment apprendre utiliser SCL, car lventail des lments de lan-
gage de SCL est orient vers de tels langages volus.

SCL pour SIMATIC S7-300/400, Programmation de blocs


1-4 C79000-G7077-C522-01
Prsentation du produit

1.3 Caractristiques de lenvironnement de dveloppement

Editeur Lditeur de SCL sert diter des textes quelconques. Il vous permet principalement
de crer et dditer des fichiers source pour vos programmes STEP 7. Vous pouvez
programmer un ou plusieurs blocs dans un fichier source :

Editeur

Bloc 1
.
.
Bloc i

Fichier source j
. .
Fichier source 1

Figure 1-2 Editeur de SCL

Avec lditeur de SCL vous pouvez :


S diter un fichier source complet contenant un ou plusieurs blocs,
S diter un fichier dinformations compilation vous permettant dautomatiser la
compilation de plusieurs fichiers source,
S utiliser des fonctions supplmentaires vous rendant ldition du texte source plus
aise, comme par exemple les fonctions de recherche et de remplacement,
S optimiser les options de lditeur selon vos exigences particulires.
La vrification de la syntaxe nest pas ralise durant la saisie.

Compilateur Aprs avoir cr votre fichier source avec lditeur de SCL, vous devez le compiler
en code machine.

Fichier source SCL

Bloc 1
.
.
Bloc i
ou
Compilateur
Fichier source 1 squentiel
.
.
Fichier source j Blocs dans le pro-
gramme S7
Fichier dinformations compilation

Figure 1-3 Compilateur de SCL

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 1-5
Prsentation du produit

Avec le compilateur de SCL vous pouvez :


S compiler un fichier source SCL comportant plusieurs blocs en une seule proc-
dure,
S compiler plusieurs fichiers source SCL laide dun fichier dinformations com-
pilation contenant les noms des fichiers source,
S optimiser les options du compilateur selon vos exigences particulires,
S faire afficher toutes les erreurs et avertissements qui se produisent durant la com-
pilation,
S localiser aisment lerreur dans le texte source, et obtenir optionnellement une
description de lerreur et des informations permettant dy remdier.

Dbogueur Le dbogueur de SCL offre la possibilit de contrler lexcution dun programme


dans lAP afin dy dceler dventuelles erreurs logiques.

Dbogueur

Automate programmable S7-300/400

Figure 1-4 Dbogueur de SCL

SCL dispose de deux modes de test :


S la visualisation squentielle qui permet de suivre lexcution logique du pro-
gramme. Vous pouvez excuter lalgorithme du programme instruction aprs
instruction et visualiser simultanment la modification des contenus des varia-
bles dits dans une fentre de rsultat.
S la visualisation continue qui permet de tester un groupe dinstructions dans un
bloc du fichier source. Durant le test, les valeurs des variables et des paramtres
saffichent chronologiquement et sont si cela est possible actualises cycli-
quement.

Logiciel de base Lenvironnement de dveloppement de SCL offre la possibilit dexploiter directe-


STEP 7 ment partir de SCL des fonctions du logiciel de base STEP 7 comme, par exemple,
laffichage et la modification de ltat de fonctionnement de la CPU et le rglage de
lheure.

SCL pour SIMATIC S7-300/400, Programmation de blocs


1-6 C79000-G7077-C522-01
Dveloppement dun programme SCL 2
Conception La pratique le montre : vous programmez plus facilement et plus rapidement lorsque
vous divisez votre tche en entits plus petites afin de la structurer. SCL optimise et
rationalise la programmation de blocs.
Le prsent chapitre traite du dveloppement et de la mise en uvre dun programme
utilisateur dans SCL. La description sappuye sur un exemple de programmation que
vous pourrez tester avec vos modules dentre et de sortie, grce aux donnes de test
fournies.

Structure du Ce chapitre traite des thmes suivants :


chapitre
Paragraphe Thme Page
2.1 Prsentation 2-2
2.2 Enonc de la tche rsoudre 2-3
2.3 Solution utilisant des blocs SCL 2-5
2.3.1 Dlimitation de tches partielles 2-5
2.3.2 Choix et affectation des blocs possibles 2-6
2.3.3 Dfinition des interfaces entre les blocs 2-7
2.3.4 Dfinition de linterface dentre/sortie 2-9
2.3.5 Programmation de blocs 2-10
2.4 Programmation du bloc dorganisation CYCLE 2-11
2.5 Programmation du bloc fonctionnel SAISIE 2-12
2.6 Programmation du bloc fonctionnel CALCUL 2-17
2.7 Programmation de la fonction CARRE 2-21
2.8 Donnes de test 2-22

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 2-1
Dveloppement dun programme SCL

2.1 Prsentation

Objectifs Lexemple propos vous montre comment utiliser au mieux les possibilits offertes
par SCL. Le prsent chapitre a pour but de rpondre aux questions nonces
ci-aprs que vous vous posez le plus frquemment :
S comment puis-je procder pour dvelopper un programme dans SCL ?
S quels sont les lments de langage de SCL appropris la rsolution de cette
tche ?
S quelles sont les fonctions de test mises ma disposition ?

Elments du Lexemple propos prsente les lments suivants du langage SCL :


langage SCL
S structure et utilisation des divers types de blocs
S appel de blocs avec transmission et exploitation des paramtres
S divers formats dentre et de sortie
S programmation laide de types de donnes simples et de tableaux
S initialisation de variables
S structure dun programme avec utilisation de branchements et de boucles

Configuration Vous pouvez excuter le programme donn en exemple dans un automate SIMATIC
matrielle S7-300 ou SIMATIC S7-400 en utilisant comme priphries :
S un module dentre avec 16 voies
S un module de sortie avec 16 voies

Fonctions de test Le programme a t conu pour pouvoir tre test rapidement laide des commuta-
teurs de lentre et des organes daffichage de la sortie. Pour effectuer un test com-
plet en utilisant les fonctions de test de SCL, reportez-vous au chapitre 6.
Vous disposez en outre des fonctions du logiciel de base STEP 7 quel que soit le
langage utilis.

SCL pour SIMATIC S7-300/400, Programmation de blocs


2-2 C79000-G7077-C522-01
Dveloppement dun programme SCL

2.2 Enonc de la tche rsoudre

Prsentation Il sagit de saisir, de trier puis de traiter des valeurs de mesure laide du module
dentre. Pour une plage de valeurs de mesure comprise entre 0 et 255, il faut un
octet pour effectuer la saisie. Comme fonctions, lon utilisera la racine carre et le
carr. Les rsultats doivent tre affichs sur le module de sortie, ce qui ncessite un
mot. Cest un octet dentre qui doit commander le programme.

Saisie des valeurs Une valeur de mesure que vous slectionnez sur les 8 commutateurs de saisie doit
de mesure tre enregistre dans le tablau des valeurs de mesure de la mmoire au moment o
un front est dtect sur le commutateur de saisie voir figure 2-1. Ce tableau de
valeurs de mesure doit tre organis en mmoire circulante 8 entres au maxi-
mum.

Traitement des Le traitement doit comporter les deux tapes suivantes : tri des valeurs de mesure et
valeurs de mesure calcul des rsultats, voir figure 2-1 :

Saisie des donnes : x=Evaluation du front

Commutateur de
saisie Valeur de mesure Commutateur de tri
X 1 1 1 1 1 1 1 1 X

255

Racine carre Carr


255 1 1 1
127 3 2 9
63 7 3 49
31 15 Calculs 4 225
15 31 6 961
7 63 8 3969
3 127 11 16129
1 Dbordement
255 16 haut

Saisie des valeurs Tri des valeurs Calcul des rsultats


de mesure de mesure

Figure 2-1 Saisie et traitement des valeurs de mesure

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 2-3
Dveloppement dun programme SCL

Slection de la Puisque la sortie ne peut afficher quune seule valeur la fois, vous devez pouvoir
sortie choisir entre :
S la slection dun lment dans une liste,
S la slection de la valeur de mesure, de la racine carre ou du carr.
Les rglages suivants des commutateurs doivent permettre dadresser un lment
dans une liste afin de le slectionner :
S Trois commutateurs permettent de slectionner un codage qui est valid
lorsquun front est dtect sur le quatrime commutateur, le commutateur de
codage. Ceci permet de dterminer ladresse de la sortie voir figure 2-2.
S La mme adresse fournit trois valeurs de sortie, savoir la valeur de mesure, la
racine carre et le carr. Deux inverseurs reprsents la figure 2-2 vous
permettent de slectionner lune dentre-elles.

Saisie des donnes : x=Evaluation du front


Commutateur sur module dentre 1
Deux inverseurs Codage 1 Commutateur de codage
0 1 0 X

Racine carre Valeur de mesure


ou carr ou 3
rsultat

Valeur de mesure Racine carre Carr


1 1 1
3 2 9
Adressage
7 de la sortie 3 49
15 4 225
31 6 961
63 Inverseur 8 3969
Slection
127 11 16129
de la sortie
Dbordement
255 16 haut

Valeurs tries Rsultats

Sortie des donnes :


Affichage sur le module 4
de sortie Sortie

Figure 2-2 Slection de la sortie

SCL pour SIMATIC S7-300/400, Programmation de blocs


2-4 C79000-G7077-C522-01
Dveloppement dun programme SCL

2.3 Solution utilisant des blocs SCL

Prsentation Nous vous proposons de rsoudre la tche nonce sous forme de programme SCL
structur. Il sagit dun programme modulaire, cest--dire divis en blocs traitant
une ou plusieurs tches partielles. Comme dans les langages de programmation de
STEP 7, vous disposez dans SCL de plusieurs types de blocs. Pour plus de dtails,
reportez-vous aux chapitres 1, 7 et 8.

Diffrentes tapes Vous pouvez procder par les tapes suivantes :


1. Dfinition des tches partielles
2. Choix et affectation des blocs possibles
3. Dfinition des interfaces entre les blocs
4. Dfinition de linterface dentre/sortie
5. Programmation des blocs

2.3.1 Dlimitation des tches partielles

Prsentation Les tches partielles sont reprsentes la figure 2-3 sous forme de pavs. Les
zones rectangulaires grises reprsentent les blocs. La disposition des blocs de code
de la gauche vers la droite correspond leur ordre dappel :

CYCLE SAISIE CALCUL


Bloc dorganisation (OB) Bloc fonctionnel (FB) Bloc fonctionnel (FB)

Saisie des Tri des


Entre des
valeurs de valeurs de SQRT (racine carre)
donnes
mesure mesure et CARRE
Appel-
cycli- Fonctions (FC)
que Adressage et
Sortie des slection de Calcul des Racine carre,
donnes la sortie rsultats carr

SAISIE_DONNEES Enregistre-
ment des Sens de d- Sens de d-
Bloc de donnes (DB) placement du placement
donnes
programme des donnes

Figure 2-3 Formation de blocs pour la rsolution des diverses tches partielles

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 2-5
Dveloppement dun programme SCL

2.3.2 Choix et affectation des blocs possibles

Prsentation Voici les critres ayant permis de choisir les blocs :

CYCLE Un programme utilisateur ne peut tre dmarr que dans un OB. Puisque les valeurs
de mesure vont continuellement tre fournies et devoir tre saisies, vous devez utili-
ser un OB dappel cyclique (OB1). Une partie de lexcution lentre des donnes
et de la sortie des donnes va tre programme dans lOB.

SAISIE Pour rsoudre la tche partielle de saisie des valeurs de mesure vous devez utiliser
un bloc possdant une mmoire, cest--dire un FB, car certaines donnes locales
(par exemple la mmoire circulante) doivent tre conserves dun cycle de pro-
gramme au suivant. Cest dans le bloc de donnes dinstance SAISIE_DONNEES,
galement appel mmoire que va seffectuer lenregistrement des donnes.
Le mme FB peut galement raliser ladressage et la slection de la sortie,
puisquil dispose des donnes requises.

CALCUL Dans le choix du type de bloc utiliser pour effectuer le tri des valeurs de mesure et
le calcul des rsultats, il faut tenir compte du fait quune mmoire de sortie doit tre
cre pour contenir les rsultats des calculs de la racine carre et du carr de chaque
valeur de mesure.
Seul un FB rpond ces critres. Puisquil est appel par un autre FB de niveau hi-
rarchique suprieur, lutilisation de son propre DB savre inutile et ses donnes
dinstance peuvent tre inscrites dans le bloc de donnes dinstance du FB appelant.

SQRT (racine carre) Pour la rsolution de la tche partielle de calcul de la racine carre ou du carr, une
et CARRE FC convient le mieux, car la sortie du rsultat correspond la valeur de la fonction.
En outre, ce calcul ne ncessite pas de donnes devant tre conserves pendant plus
dun cycle de programme.
Pour le calcul de la racine carre, vous pouvez utiliser la fonction standard de SCL,
la fonction SQRT. Pour calculer le carr, vous allez crer la fonction CARRE qui
doit galement vrifier les limites de la plage des valeurs autorise.

SCL pour SIMATIC S7-300/400, Programmation de blocs


2-6 C79000-G7077-C522-01
Dveloppement dun programme SCL

2.3.3 Dfinition des interfaces entre les blocs

Prsentation Pour dfinir linterface dun bloc un autre, vous devez dclarer ses paramtres
formels. Dans SCL, il existe les possibilits suivantes :
S paramtres dentre : dclaration avec VAR_INPUT
S paramtres de sortie : dclaration avec VAR_OUTPUT
S paramtres dentre/sortie : dclaration avec VAR_IN_OUT
Lorsque vous appelez un bloc, des donnes dentre lui sont transmises comme
paramtres effectifs. Aprs retour au bloc appelant, les donnes de sortie sont pr-
pares pour y tre valides. Une FC peut fournir son rsultat sous forme de valeur
de la fonction (pour plus dinformations, reportez-vous au chapitre 16).

SAISIE LOB CYCLE ne possde pas lui-mme de paramtres formels. Il appelle le FB


SAISIE pour transmettre la valeur de mesure et les donnes de commande aux
paramtres formels de ce dernier (tableau 2-1) :

Tableau 2-1 Paramtres formels du FB SAISIE

Nom du paramtre Type de Type de Description


donnes dclaration
entre_val_mesure INT VAR_INPUT Valeur de mesure
nouv_val BOOL VAR_INPUT Commutateur pour inscrire la
valeur de mesure dans la mmoire
circulante
nouv_tri BOOL VAR_INPUT Commutateur pour trier et traiter
les valeurs de mesure
choix_fonction BOOL VAR_INPUT Inverseur permettant de choisir la
racine carre ou le carr
slection WORD VAR_INPUT Codage permettant de slectionner
la valeur de sortie
nouv_slection BOOL VAR_INPUT Commutateur permettant de vali-
der le codage
sortie_rsultat DWORD VAR_OUTPUT Sortie du rsultat calcul
sortie_val_mesure DWORD VAR_OUTPUT Sortie de la valeur de mesure cor-
respondante

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 2-7
Dveloppement dun programme SCL

CALCUL Le FB SAISIE appelle le FB CALCUL. Comme donnes communes, ils possdent


le tableau des valeurs de mesure trier, qui sera donc dclar comme paramtre
dentre/sortie. Pour les rsultats des calculs de la racine carre et du carr, cest un
tableau structur qui va tre cr comme paramtre de sortie. Les paramtres for-
mels sont dcrits dans le tableau 2-2 :

Tableau 2-2 Paramtres formels du FB CALCUL

Nom du paramtre Type de Type de Description


donnes dclaration
mmoire_tri ARRAY[..] VAR_IN_OUT Tableau des valeurs de mesure,
OF REAL correspond la mmoire circulante
mmoire_calcul ARRAY[..] VAR_OUTPUT Tableau des rsultats :
OF STRUCT structure avec les composantes
racine_carre et carr du
type INT

SQRT et CARRE Ces fonctions sont appeles par le FB CALCUL. Elles requirent une valeur dentre
et fournissent leur rsultat comme valeur de la fonction, voir tableau2-3.

Tableau 2-3 Paramtres formels et valeurs des fonctions SQRT et CARRE

Nom Type de Type de dclaration Description


donnes
valeur REAL VAR_INPUT Entre pour SQRT
SQRT REAL Valeur de la Racine carre de la valeur dentre
fonction
valeur INT VAR_INPUT Entre pour CARRE
CARRE INT Valeur de la Carr de la valeur dentre
fonction

SCL pour SIMATIC S7-300/400, Programmation de blocs


2-8 C79000-G7077-C522-01
Dveloppement dun programme SCL

2.3.4 Dfinition de linterface dentre/sortie

Prsentation La figure 2-4 reprsente linterface dentre/sortie. Observez que pour lentre/sortie
sous forme doctet, loctet de poids faible se trouve en haut et loctet de poids fort
en bas. Pour lentre/sortie sous forme de mot cest linverse :

Organes daffichage
Bloc CPU

Commutateurs
dalimen- 314
tation
Adresse en mmoire :
Systme entre : 0
dautomatisation sortie : 4

Saisie Sortie
Module dentre Voie Signification
0 Validation de la valeur de mesure
1 Dmarrage du tri et du calcul
Commutateurs

Octet 0 2 Choix du rsulat : racine carre ou carr


3 Slection sortie : valeur de mesure ou rsultat
4 Codage bit 0
5 Codage bit 1
6 Codage bit 2
7 Validation du codage
Octet 1
07 Octet dentre : valeur de mesure
Module de sortie Voie Signification
07 Octet de poids fort du mot de sortie
Octet 0 (bits 8 15) :
daffichage

uniquement requis dans le calcul du carr,


Organes

sinon 0
07 Octet de poids faible du mot de sortie
Octet 1 (bits 0 7) :
valeur de mesure ou rsultat :
racine carre ou carr

Figure 2-4 Organes daffichage et lments de commande

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 2-9
Dveloppement dun programme SCL

2.3.5 Programmation des blocs

Programmation de Une fois que vous avez dfini les interfaces, vous pouvez crire les blocs spar-
blocs ment. Il est prfrable de procder de haut en bas, cest--dire dans lordre CYCLE,
SAISIE, CALCUL et CARRE, comme dcrit ci-aprs.
La compilation de blocs impose quun bloc ait t cr avant dtre utilis, cest--
dire avant dtre appel par un autre bloc. Dans la source SCL, lordre des blocs est
donc le suivant : CARRE, CALCUL, SAISIE et CYCLE (pour des informations ce
sujet, reportez-vous au chapitre 8).

Programmation Vous contribuez une meilleure lisibilit du programme si vous affectez des mn-
symbolique moniques aux adresses des modules et aux blocs. Vous devez pour cela complter
une table de mnmoniques, comme dcrit la figure 2-5 (voir chapitre 7). Vous pou-
vez former les mnmoniques en appliquant la convention de dsignation des IDEN-
TIFICATEURS ou des mnmoniques (par exemple Entre 0.0 ), voir annexe A.

Commentaire La figure 2-5 reprsente le commentaire dintroduction de la source SCL. Il dcrit


dintroduction les noms symboliques dfinis dans la table des mnmoniques afin que la source
avec table des puisse tre compile sans erreur.
mnmoniques

(*##########################################################################################

Programme SCL pour la saisie et le traitement de valeurs de mesure :


Lentre 0.0 (commutateur de saisie) permet de valider une valeur
de mesure lue sur le module dentre.
Divers commutateurs permettent le traitement des valeurs de mesure.
Toutes les valeurs sont enregistres dans la zone de traitement du bloc
fonctionnel SAISIE, savoir le bloc de donnes dinstance SAISIE_DONNEES.
Le programme utilise lcriture symbolique. Pour quil puisse tre compil,
des mnmoniques doivent avoir t affects aux adresses des modules et
aux blocs excuts dans la CPU. Cest la fonction du tableau suivant :
Saisie EB1 BYTE // Valeur de mesure
Entre 0.0 E0.0 BOOL // Commutateur de saisie pour valider la valeur de mesure
Commutateur_de_tri E0.1 BOOL // Dmarrage du tri et du calcul
Commutateur_de_fonction E0.2 BOOL // Choix du rsultat racine carre ou carr
Commutateur_de_sortie E0.3 BOOL // Slection de la sortie valeur de mesure ou rsultat
Codage EW0 WORD // Codage, bits significatifs 12, 13 et 14
Commutateur_de_codage E0.7 BOOL // Validation du codage
Sortie AW4 INT // Valeur de mesure ou rsultat : racine carre ou carr
SAISIE FB10 FB10 // Saisie des valeurs de mesure
// Adressage et slection de la sortie
SAISIE_DONNEES DB10 FB10 // Bloc de donnes dinstance du FB SAISIE
CALCUL FB20 FB20 // Traitement des valeurs de mesure, calcul des rsultats
CARRE FC41 FC41 // Fonction de calcul du carr
CYCLE OB1 OB1 // Appel cyclique et entre/sortie
###########################################################################################*)

Figure 2-5 Commentaire dintroduction avec table des mnmoniques

SCL pour SIMATIC S7-300/400, Programmation de blocs


2-10 C79000-G7077-C522-01
Dveloppement dun programme SCL

2.4 Programmation du bloc dorganisation CYCLE

Etapes suivre Nous avons slectionn un OB1 car STEP 7 lappelle cycliquement. Il ralise les
tches suivantes dans le programme :
S appel du bloc fonctionnel SAISIE auquel il fournit les donnes de saisie et de
commande,
S validation des donnes de rsultat du bloc fonctionnel SAISIE,
S sortie des valeurs afficher.
La zone de donnes temporaires donnes_systme de 20 octets se trouve au
dbut de la section de dclaration (voir aussi chapitre 8).

ORGANIZATION_BLOCK CYCLE
(**************************************************************************************
Le FB CYCLE correspond lOB1, c.-d. il est appel cycliquement par le systme S7
1re partie : appel du bloc fonctionnel et saisie des valeurs dentre
2nde partie : validation des valeurs de sortie et sortie avec slection
**************************************************************************************)
VAR_TEMP
donnes_systme : ARRAY[0..20] OF BYTE; // Zone de lOB1
END_VAR
BEGIN
(* 1re partie : *****************************************************************)
SAISIE.SAISIE_DONNEES(
entre_val_mesure := WORD_TO_INT(saisie),
nouv_val := Entre 0.0, //commutateur de saisie sous forme
//de mnmonique
nouv_tri := Commutateur_de_tri,
choix_fonction := Commutateur_de_fonction,
nouv_slection := Commutateur_de_codage,
slection := Codage);
(* 2nde partie : ******************************************************************)
IF Commutateur_de_sortie THEN //Commutation de la sortie
Sortie := SAISIE_DONNEES.sortie_rsultat; //Racine carre ou carr
ELSE
Sortie := SAISIE_DONNEES.sortie_val_mesure; //Valeur de mesure
END_IF;
END_ORGANIZATION_BLOCK

Figure 2-6 Bloc dorganisation CYCLE (OB1)

Conversion du La valeur de mesure fournie lentre possde le type de donnes BYTE et doit tre
type de donnes convertie dans le type INT : vous devez donc effectuer une conversion de WORD en
INT, la conversion prcdente de BYTE en WORD tant effectue automatiquement
par le compilateur (voir chapitre 18). La conversion de la sortie savre inutile, puis-
que son type de donnes dclar dans la table des mnmoniques est INT, voir
figure 2-5.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 2-11
Dveloppement dun programme SCL

2.5 Programmation du bloc fonctionnel SAISIE

Etapes suivre Cest le type de bloc FB qui a t choisi, car des donnes doivent tre enregistres
dun cycle de programme au suivant. Il sagit de variables statiques, dclares dans
la partie dclarative VAR, END_VAR , voir tableau 2-4.
Les variables statiques sont des variables locales dont les valeurs subsistent au-del
des cycles de blocs. Elles servent stocker les valeurs dun bloc fonctionnel et sont
ranges dans le bloc de donnes dinstance.

FUNCTION_BLOCK SAISIE
(*******************************************************************************
1re partie : Saisie des valeurs de mesure
2me partie : Dmarrage du tri et du calcul
3me partie : Evaluation du codage et prparation de la sortie
*******************************************************************************)

Figure 2-7 En-tte du bloc fonctionnel SAISIE

Tableau 2-4 Variables statiques du FB SAISIE

Variables Nom Type de Type de Valeur Description


statiques donnes dclaration dfaut
valeurs_mesure ARRAY [..] VAR 8(0) Mmoire circulante pour
OF INT les valeurs de mesure
mmoire_rsultat ARRAY [..] VAR Tableau pour les structu-
OF STRUCT res avec les composantes
racine_carre et
carr de type INT
index INT VAR 0 Index pour la mmoire
circulante, la valeur de
mesure suivante va y tre
entre
anc_val BOOL VAR FALSE Valeur prcdente pour
validation de la valeur de
mesure avec
nouv_val
anc_tri BOOL VAR FALSE Valeur prcdente pour
tri avec nouv_tri
anc_slection BOOL VAR FALSE Valeur prcdente pour
validation du codage
avec nouv_slection
adresse INT VAR 0 Adresse de la sortie de la
valeur de mesure ou du
rsultat
instance_calcul CALCUL, VAR Instance locale pour le
= FB 20 FB CALCUL

SCL pour SIMATIC S7-300/400, Programmation de blocs


2-12 C79000-G7077-C522-01
Dveloppement dun programme SCL

Tenez compte des valeurs par dfaut qui sont affectes aux variables lors de linitia-
lisation du bloc (aprs son chargement dans la CPU). Linstance locale pour le FB
CALCUL est galement dclare dans la partie dclarative VAR, END_VAR .
Vous utiliserez son nom pour appeler et adresser ultrieurement les paramtres de
sortie. Comme mmoire des donnes, cest linstance globale SAISIE_DONNEES
que lon utilise.

Section de La section de dclaration de ce bloc comporte les parties suivantes :


dclaration de
S dclaration des constantes : entre CONST et END_CONST
SAISIE
S paramtres dentre : entre VAR_INPUT et END_VAR
S paramtres de sortie : entre VAR_OUTPUT et END_VAR
S dclaration des variables statiques : entre VAR et END_VAR.
La dclaration de linstance locale pour le FB CALCUL en fait galement partie.

CONST
LIMITE := 7;
NOMBRE := LIMITE + 1;
END_CONST
VAR_INPUT
entre_val_mesure : INT; // Nouvelle valeur de mesure
nouv_val : BOOL; // Valider la valeur de mesure dans la mmoire
// circulante valeurs_mesure
nouv_tri : BOOL; // Trier les valeurs de mesure
choix_fonction : BOOL; // Choix de la fonction de calcul de la racine
// carre ou du carr
nouv_slection : BOOL; // Validation de ladresse de sortie
slection : WORD; // Adresse de sortie
END_VAR
VAR_OUTPUT
sortie_rsultat : INT; // Valeur calcule
sortie_val_mesure : INT; // Valeur de mesure correspondante
END_VAR
VAR
valeurs_mesure : ARRAY[0..LIMITE] OF INT := 8(0);
mmoire_rsultat : ARRAY[0..LIMITE] OF
STRUCT
racine_carre : INT;
carr : INT;
END_STRUCT;
index : INT := 0;
anc_val : BOOL := TRUE;
anc_tri : BOOL := TRUE;
anc_slection : BOOL := TRUE;
adresse : INT := 0; //Adresse de sortie convertie
instance_calcul : CALCUL; //Dclaration de linstance locale
END_VAR

Figure 2-8 Section de dclaration du bloc fonctionnel SAISIE

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 2-13
Dveloppement dun programme SCL

Section des La section des instructions se divise en trois parties


instructions

Saisie des valeurs Si le paramtre dentre nouv_val est diffrent de anc_val , une nouvelle
de mesure valeur de mesure est inscrite dans la mmoire circulante.

Dmarrage du tri et Le tri et le calcul sont dmarrs par lappel du bloc fonctionnel CALCUL, si le para-
du calcul mtre dentre nouv_tri est diffrent de anc_tri .

Evaluation du La saisie du codage seffectue par mots : daprs les conventions appliques dans
codage et SIMATIC, ceci signifie que les 8 bits de poids fort du mot dentre sont attribus au
prparation de la groupe de commutateurs du haut (octet 0) et les 8 bits de poids faible au groupe de
sortie commutateurs du bas (octet 1). La figure 2-9 indique o se trouvent les commuta-
teurs sur lesquels vous devez effectuer le codage :

Commutateur Mot dans Vers SHR Vers AND,


sur module mmoire de 12 places Masque 000F

0 0 0 0


1 1 1 1 adresse
2 2 2 2

Commutateur
3
4
3
4 3
4
3
4


pour valeur 5 5 5 5
de codage 6 6 6 6


Commutateur 7 7 7 7
de codage Octet 0
0 8 8 8
1 9 9 9
2 10 10 10
3 11 11 11
4 12 12 12


5 13 13 13
6 14 14 14
7
Octet 1
15
EW0
15 15

Figure 2-9 Evaluation du codage

Calcul de ladresse La figure 2-9 montre galement le calcul de ladresse : les bits 12 14 du mot den-
tre EW0 contiennent le codage qui est valid lorsquun front est dtect sur le com-
mutateur de codage (bit 15). Le dcalage vers la droite laide de la fonction stan-
dard SHR et le masquage des bits significatifs laide dun masque AND permet de
dterminer l adresse .
Cest avec cette adresse que les composantes du tableau (rsultat du calcul et valeur
de mesure correspondante) sont inscrites dans les paramtres de sortie. Cest le
choix_fonction qui dtermine sil sagit de la racine carre ou du carr.
Un front est dtect sur le commutateur de codage lorsque nouv_val est diffrent
de anc_val .

SCL pour SIMATIC S7-300/400, Programmation de blocs


2-14 C79000-G7077-C522-01
Dveloppement dun programme SCL

Organigramme du La figure 2-10 reprsente lalgorithme sous forme dorganigramme :


FB SAISIE

SAISIE
Bloc fonctionnel

Dbut

oui
Modifier
nouvelle
valeur ?
Inscrire valeur de mesure La mmoire circulante est ralise
non dans mmoire circulante, avec lopration MOD : lorsque la li-
recalculer lindex mite est atteinte, elle recommence au
dbut.

oui
Modifier
nouveau
tri ?
Trier la mmoire circulante et ef-
CALCUL fectuer les calculs (crer cet
non effet le tableau des rsultats).

Reprise des rsultats des calculs charger depuis le bloc


dans le tableau des rsultats de donnes dinstance

oui
Modifier
nouveau
code ?
Dabord dcaler les bits non
Evaluation du codage et significatifs vers le bord droit,
dtermination de ladresse de sortie puis masquer les places inuti-
les laide de AND

TRUE
Choix
fonction ?

FALSE

Charger rsultat du calcul Charger rsultat du calcul


de la racine carre du cadre

Charger :
Charger valeur de mesure inscrire les lments de la liste
avec les adresses de sortie dans
les paramtres de sortie pour en-
suite afficher leurs valeurs.

Fin

Figure 2-10 Algorithme de saisie des valeurs de mesure

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 2-15
Dveloppement dun programme SCL

Section des La figure 2-11 correspond la formulation de lorganigramme reprsent la


instructions du FB figure 2-10, cest--dire la section des instructions du bloc de code.
SAISIE

BEGIN

(* 1re partie : Saisie des valeurs de mesure********************************************


La modification de nouv_val entrane la saisie de la valeur de mesure.
Lopration MOD permet de raliser une mmoire circulante
pour les valeurs de mesure.*)

IF nouv_val <> anc_val THEN


index := index MOD NOMBRE;
valeurs_mesure[index]:= entre_val_mesure;
index := index + 1;
END_IF;
anc_val := nouv_val;

(* 2me partie : Dmarrage du tri et du calcul*******************************************


La modification de nouv_tri entrane le dmarrage du tri de la mmoire
circulante et lexcution des calculs avec les valeurs de mesure. Les
rsultats sont enregistrs dans un nouveau tableau, mmoire_calcul.*)

IF nouv_tri <> anc_tri THEN


index := 0; //initialiser index de la mmoire circulante
instance_calcul(mmoire_tri := valeurs_mesure); //Appel du FB CALCUL
END_IF;
anc_tri := nouv_tri;
mmoire_rsultat := instance_calcul.mmoire_calcul; //Carr et racine carre
(* 3me partie : Evaluation du codage et prparation de la sortie :*******************
La modification de la nouv_slection fournit le codage pour
ladressage de llment du tableau pour la sortie : les bits
significatifs de slection sont masqus et convertis en entiers.
Selon la position du commutateur choix_fonction, cest la racine
carre ou le carr qui sont prpars pour la sortie. *)
IF nouv_slection <> anc_slection THEN
adresse := WORD_TO_INT(SHR(IN := slection, N := 12) AND 16#0007);
END_IF;
anc_slection := nouv_slection;
IF choix_fonction THEN
sortie_rsultat := mmoire_rsultat[adresse].carr;
ELSE
sortie_rsultat := mmoire_rsultat[adresse].racine_carre;
END_IF;

sortie_val_mesure := valeurs_mesure[adresse]; //Affichage de la valeur de mesure

END_FUNCTION_BLOCK

Figure 2-11 Section des instructions du bloc fonctionnel SAISIE

SCL pour SIMATIC S7-300/400, Programmation de blocs


2-16 C79000-G7077-C522-01
Dveloppement dun programme SCL

2.6 Programmation du bloc fonctionnel CALCUL

Section de La section de dclaration de ce bloc comporte les parties suivantes :


dclaration de
S dclaration des constantes : entre CONST et END_CONST
CALCUL
S paramtres dentre/sortie : entre VAR_IN_OUT et END_VAR
S paramtres de sortie : entre VAR_OUTPUT et END_VAR
S dclaration des variables temporaires : entre VAR_TEMP et END_VAR

FUNCTION_BLOCK CALCUL
(******************************************************************************
1re partie : Tri de la mmoire circulante avec les valeurs de mesure
2me partie : Dmarrage du calcul des rsultats
*******************************************************************************)

Figure 2-12 En-tte du bloc fonctionnel CALCUL

CONST
LIMITE := 7;
END_CONST
VAR_IN_OUT
mmoire_tri : ARRAY[0..LIMITE] OF INT;
END_VAR
VAR_OUTPUT
mmoire_calcul : ARRAY[0..LIMITE] OF
STRUCT
racine_carre : INT;
carr : INT;
END_STRUCT;
END_VAR
VAR_TEMP
changer : BOOL;
index, aux : INT;
valeur_r, rsultat_r : REAL;
END_VAR

Figure 2-13 Section de dclaration du bloc fonctionnel CALCUL

Droulement de la Le paramtre dentre/sortie mmoire_tri est combin avec la mmoire circu-


fonction lante valeurs_mesure , cest--dire que le contenu initial de la mmoire est cras
par les valeurs de mesure tries.
Le nouveau tableau mmoire_calcul est cr comme paramtre de sortie pour
les rsultats de calcul. La structure de ses composantes est telle que pour chaque
valeur de mesure elles comportent la racine carre et le carr.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 2-17
Dveloppement dun programme SCL

La figure 2-14 illustre le lien entre les tableaux dcrits.

mmoire_tri
valeurs_mesure
mmoire_calcul

CALCUL

Figure 2-14 Interface du FB CALCUL

Cette interface reprsente la base de lchange de donnes pour le traitement des


valeurs de mesure. Les valeurs sont enregistres dans le bloc de donnes dinstance
SAISIE_DONNEES, puisquune instance locale a t cre pour le FB CALCUL
dans le FB SAISIE.

Comment Les valeurs de mesure sont tout dabord tries dans la mmoire circulante, puis les
proocder calculs sont effectus :
S Mthode de lalgorithme de tri
Pour effectuer le tri de la mmoire circulante, la mthode utilise est celle de
lchange permanent des valeurs o deux valeurs conscutives sont compares entre
elles et changes jusqu ce que lordre de tri soit atteint. La mmoire utilise est le
paramtre dentre/sortie mmoire_tri .
S Dmarrage du calcul
Lorsque le tri est ralis, une boucle appelle les fonctions CARRE pour llvation
au carr et SQRT pour le calcul de la racine. Leurs rsultats sont enregistrs dans le
tableau structur mmoire_calcul .

SCL pour SIMATIC S7-300/400, Programmation de blocs


2-18 C79000-G7077-C522-01
Dveloppement dun programme SCL

Organigramme du La figure 2-15 reprsente lalgorithme sous forme dorganigramme :


FB CALCUL
CALCUL Dbut
Bloc fonctionnel

Dbut de linstruction
REPEAT changer := FALSE

Dbut de linstruction
FOR I := LIMITE
I signifie index

non

I >= 1 ?

oui

oui
mmoire_tri [I-1] >

mmoire_tri [I]
?
Echanger les valeurs
de la mmoire de tri [I-1]
non
et de la mmoire de tri [I]

ECHANGER = TRUE

I := I - 1
Fin de linstruction
FOR

Fin de linstruction TRUE


REPEAT
changer ?

FALSE

Dbut de linstruction I := 0
FOR

non

I <= LIMITE ?

oui

Entrer les rsultats dans le ta-


SQRT
bleau structur des rsultats.

Entrer les rsultats dans le


CARRE
tableau structur des rsultats.

I := I + 1
Fin de linstruction
FOR

Fin

Figure 2-15 Algorithme dvaluation des valeurs de mesure

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 2-19
Dveloppement dun programme SCL

Section des La figure 2-16 correspond la formulation en SCL de lorganigramme reprsent


instructions du la figure 2-15, cest--dire la section des instructions du bloc de code :
FB CALCUL

BEGIN
(* 1re partie Tri :********************************************************************
procd de tri par change de paires de cls : changer les valeurs par
paires jusqu ce que la mmoire des valeurs de mesure soit trie. *)
REPEAT
changer := FALSE;
FOR index := LIMITE TO 1 BY -1 DO
IF mmoire_tri[index-1] > mmoire_tri[index] THEN
aux := mmoire_tri[index];
mmoire_tri[index] := mmoire_tri[index-1];
mmoire_tri[index-1] := aux;
changer := TRUE;
END_IF;
END_FOR;
UNTIL NOT changer
END_REPEAT;

(* 2me partie Calcul :*****************************************************************


Calcul de la racine carre laide de la fonction standard SQRT
et du carr laide de la fonction CARRE. *)
FOR index := 0 TO LIMITE BY 1 DO
valeur_r := INT_TO_REAL(mmoire_tri[index]);
rsultat_r := SQRT(valeur_r);
mmoire_calcul[index].racine_carre := REAL_TO_INT(rsultat_r);
mmoire_calcul[index].carr := CARRE(mmoire_tri[index]);
END_FOR;
END_FUNCTION_BLOCK

Figure 2-16 Section des instructions du bloc fonctionnel CALCUL

SCL pour SIMATIC S7-300/400, Programmation de blocs


2-20 C79000-G7077-C522-01
Dveloppement dun programme SCL

2.7 Programmation de la fonction CARRE

Comment procder Il faut avant tout vrifier si la valeur dentre pour laquelle le rsultat dpasserait la
plage des valeurs des entiers autorise est atteinte. Si tel est le cas, cest la valeur
maximale des entiers qui est fournie. Sinon cest le calcul du carr qui est ralis.
Le rsultat est donn comme valeur de la fonction.

FUNCTION CARRE : INT


(******************************************************************************************
Cette fonction fournit comme valeur le carr de la valeur dentre ou en cas de dbordement
haut, la valeur maximale pouvant tre reprsente par un entier.
******************************************************************************************)
VAR_INPUT
valeur : INT;
END_VAR
BEGIN
IF valeur <= 181 THEN
CARRE := valeur * valeur; // Calcul de la valeur de la fonction
ELSE
CARRE := 32_767; // Fournir la valeur maximale en cas de
// dbordement haut
END_IF;
END_FUNCTION

Figure 2-17 Fonction CARRE

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 2-21
Dveloppement dun programme SCL

2.8 Donnes de test

Conditions Pour raliser le test, un module dentre doit tre enfich ladresse 0 et un module
de sortie ladresse 4 (voir figure 2-4).
Avant de commencer le test, les 8 commutateurs du groupe suprieur doivent tre
positionns vers la gauche ( 0 ) et les 8 commutateurs du groupe infrieur vers la
droite ( 1 ).
Les valeurs initiales des variables tant galement testes, vous devez effectuer un
nouveau chargement des blocs dans la CPU.

Etapes du test Les tapes du test sont dcrites dans le tableau 2-5.

Tableau 2-5 Etapes du test

Test Action Rsultat


1 Slectionnez le codage 111 (E 0.4, E 0.5 et E 0.6), puis Toutes les sorties de laffichage (octet de poids faible)
validez-le laide du commutateur de codage (E 0.7). sont actives et les diodes sont allumes.
2 Affichez la racine carre correspondante en positionnant le Les organes daffichage la sortie correspondent la
commutateur de sortie (E 0.3) sur 1 . valeur binaire 10000 (=16).
3 Affichez le carr correspondant en positionnant le commuta- 15 organes daffichage sallument la sortie. Ceci
teur de fonction (E 0.2) sur 1 . signale un dbordement, car 255 x 255 fournit une
valeur trop grande pour la plage des entiers autorise.
4a Positionnez nouveau le commutateur de sortie (E 0.3) sur La valeur de mesure est nouveau affiche : tous les
0 . organes daffichage aux sorties de loctet de sortie de
poids faible affichent 1 .
4b Slectionnez comme nouvelle valeur de mesure lentre la La sortie ne se modifie pas encore.
valeur 3, cest--dire la valeur binaire 11 .
5a Visualisez la validation de la valeur de mesure : slectionnez La sortie affiche 0 , cest--dire quaucun organe
le codage 000 , puis validez-le laide du commutateur de daffichage nest allum.
codage (E 0.7), afin de pouvoir ultrieurement visualiser la
suite de la saisie.
5b Inversez le commutateur dentre Entre 0.0 (E 0.0). La La sortie affiche la valeur de mesure 3 qui correspond
valeur slectionne la 4me tape de test est valide. la valeur binaire 11 .
6 Dmarrez le tri et le calcul en inversant le commutateur de tri La sortie affiche nouveau 0, car la procdure de tri a
(E 0.1). dcal la valeur de mesure vers le haut du tableau.
7 Affichez la valeur de mesure aprs le tri : slectionnez le La sortie affiche prsent de nouveau la valeur
codage 110 (E 0.6 = 1, E 0.5 = 1, E 0.4 = 0 pour EB0, ce 11 , puisquil sagit de la seconde valeur la plus
qui correspond aux bit 14, bit 13, bit 12 de EW 0) puis vali- leve du tableau.
dez-le en inversant le commutateur de codage.
8a Affichez les rsultats correspondants : linversion du commu- La valeur de sortie 9 qui correspond la valeur
tateur de sortie (E 0.3) permet dafficher le carr de la valeur binaire 1001 saffiche.
de mesure de ltape 7.
8b En inversant le commutateur de fonction (E 0.2), vous obte- La valeur de sortie 2 qui correspond la valeur
nez galement laffichage de la racine. binaire 10 saffiche.

SCL pour SIMATIC S7-300/400, Programmation de blocs


2-22 C79000-G7077-C522-01
Dveloppement dun programme SCL

Test En vous inspirant des explications sur les commutateurs de commande figurant dans
complmentaire le tableau 2-6 et des exemples de test du tableau 2-7 vous pouvez dfinir vous-
mme les tapes que vous souhaitez tester :
S Lentre seffectue avec les commutateurs : les 8 du haut sont destins aux com-
mandes, les 8 du bas servent slectionner la valeur de mesure.
S La sortie a lieu sur les organes daffichage : le groupe du haut affiche loctet de
sortie de poids fort, celui du bas loctet de sortie de poids faible.

Tableau 2-6 Commutateurs de commande

Commutateurs Nom Explication


de commande
Voie 0 Commutateur de saisie Commutation pour la validation des valeurs de
mesure
Voie 1 Commutateur de tri Commutation pour le tri/calcul
Voie 2 Commutateur de fonc- Commutateur gauche ( 0 ) : racine carre,
tion Commutateur droite ( 1 ) : carr
Voie 3 Commutateur de sortie Commutateur gauche ( 0 ) : valeur de mesure,
Commutateur droite ( 1 ) : rsultat
Voie 4 Codage Adresse de sortie bit 0
Voie 5 Codage Adresse de sortie bit 1
Voie 6 Codage Adresse de sortie bit 2
Voie 7 Codage Commutation pour la validation du codage

Le tableau 2-7 contient 8 valeurs de mesure exemple classes dj dans le bon or-
dre.
Saisissez les valeurs dans lordre que vous voulez. Choisissez cet effet la combi-
naison binaire voulue et validez la valeur en actionnant le commutateur de saisie.
Une fois que toutes les valeurs ont t saisies, vous dmarrez le tri et le calcul en
actionnant le commutateur de tri. Vous avez ensuite la possibilit de visualiser les
valeurs de mesure tries ou alors les rsultats racine carre ou carr.

Tableau 2-7 Exemple de test pour la racine carre et le carr

Valeur de mesure Racine carre Carr


0000 0001 = 1 0, 0000 0001 = 1 0000 0000, 0000 0001 = 1
0000 0011 = 3 0, 0000 0010 = 2 0000 0000, 0000 1001 = 9
0000 0111 = 7 0, 0000 0011 = 3 0000 0000, 0011 0001 = 49
0000 1111 = 15 0, 0000 0100 = 4 0000 0000, 1110 0001 = 225
0001 1111 = 31 0, 0000 0110 = 6 0000 0011, 1100 0001 = 961
0011 1111 = 63 0, 0000 1000 = 8 0000 1111, 1000 0001 = 3969
0111 1111 = 127 0, 0000 1011 = 11 0011 1111, 0000 0001 = 16129
1111 1111 = 255 0, 0001 0000 = 16 0111 111, 1111 1111 = indication de dborde-
ment de plage

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 2-23
Dveloppement dun programme SCL

SCL pour SIMATIC S7-300/400, Programmation de blocs


2-24 C79000-G7077-C522-01
Deuxime partie : 3
Installation du logiciel SCL
Utilisation et test
Utilisation de SCL 4

Programmation avec SCL 5

Test dun programme 6


SCL pour SIMATIC S7-300/400, Programmation de blocs
2-26 C79000-G7077-C522-01
Installation du logiciel SCL 3
Prsentation Un programme dinstallation vous propose des menus pour installer le logiciel SCL.
Vous devez le dmarrer selon la procdure habituelle dinstallation des logiciels
sous Windows 95.

Conditions Linstallation du logiciel SCL requiert :


requises
S une console de programmation ou un PC sur lesquels le logiciel de base STEP 7
est dj install
un processeur 80486 (ou suprieur) et
une mmoire RAM de 16 Mo
S un cran couleur, un clavier et une souris compatibles avec Windows 95 de
Microsoft
S un disque dur possdant une capacit libre dau moins 78 Mo
(10 Mo pour les donnes utilisateur, 60 Mo pour les copies sur disque, 8 Mo pour
le logiciel optionnel SCL)
S une capacit libre de 1 Mo au minimum sur lunit C: pour le programme din-
stallation (les fichiers dinstallation sont effacs une fois celle-ci termine)
S le systme dexploitation Windows 95.
S une interface MPI entre la PG ou le PC et lAP :
soit un cble PC/MPI que vous connectez linterface de communication de
la PG ou du PC,
soit une carte MPI que vous installez dans votre PG ou PC. Dans certaines
consoles, linterface MPI est dj installe.

Structure du Paragraphe Thme Page


chapitre 3.1 Autorisation / licence dutilisation 3-2
3.2 Installation / Dsinstallation du logiciel SCL 3-4

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 3-1
Installation du logiciel SCL

3.1 Autorisation / licence dutilisation

Introduction Lutilisation du logiciel SCL requiert une autorisation spcifique pour le produit
(licence dutilisation). Le logiciel ainsi protg ne peut tre utilis que si lautorisa-
tion requise pour le programme ou le logiciel est installe sur le disque dur de la PG
ou du PC correspondant.

Disquette Vous devez possder la disquette dautorisation protge fournie la livraison. Elle
dautorisation contient lautorisation ainsi que le programme AUTHORS ncessaire lafficher,
linstaller et la dsinstaller.
Le nombre dautorisations possibles est dfini sur cette disquette par un compteur
qui est dcrment de 1 pour chaque nouvelle autorisation utilise. Lorsque le
compteur est zro, il nest plus possible dinstaller dautorisation avec cette dis-
quette.
Vous trouverez des informations dtailles, de mme que les rgles relatives aux
autorisations dans le guide de lutilisateur /231/.

Avertissement
! Tenez compte des instructions donnes dans le fichier LISEZMOI.TXT sur la disquette
dautorisation. En cas de leur non-respect, lautorisation risque dtre perdue irrm-
diablement.

Installation de Vous devez fournir lautorisation lorsque vous y tes sollicit durant la premire
lautorisation la installation de votre logiciel par un message correspondant. Procdez de la manire
mise en service suivante :
1. Introduisez la disquette dautorisation dans le lecteur lorsque vous y tes sollicit
par un message.
2. Confirmez ensuite ce message.
Lautorisation est alors installe sur une unit physique (ceci signifie que votre PG
ou PC ont en mmoire que vous tes titulaire de lautorisation).

SCL pour SIMATIC S7-300/400, Programmation de blocs


3-2 C79000-G7077-C522-01
Installation du logiciel SCL

Installation Si vous dmarrez le logiciel SCL sans quune autorisation soit installe, un message
ultrieure de vous en informe. Pour linstaller ultrieurement, appelez le programme AUTHORS
lautorisation figurant sur la disquette dautorisation. Il vous permet dafficher, dinstaller et de
dsinstaller les autorisations laide de menus.

Nota
Pour linstallation de lautorisation pour SCL, indiquez toujours C: comme unit
cible.

Dsinstallation de Si une nouvelle autorisation est requise, par exemple dans le cas o vous voulez
lautorisation formater lunit sur laquelle elle se trouve, vous devez pralablement la sauvegar-
der . A cet effet, il vous faut la disquette dautorisation originale.
Pour rapatrier lautorisation sur la disquette originale, procdez de la manire sui-
vante :
1. Introduisez la disquette dautorisation originale dans le lecteur de 3,5 pouces.
2. Appelez le programme AUTHORS.EXE partir de ce lecteur.
3. Choisissez la commande Autorisation Dsinstaller.
4. Dans la bote de dialogue qui souvre, indiquez lunit sur laquelle se trouve
lautorisation, puis confirmez. La liste de toutes les autorisations dtectes sur
lunit correspondante saffiche.
5. Slectionnez lautorisation que vous souhaitez dsinstaller, puis confirmez. Si la
dsinstallation est russie, le message suivant saffiche
Lautorisation <Nom> a t retire avec succs du lecteur <X:>.
6. Confirmez ce message.
Vous obtenez ensuite nouveau la liste des autorisations restantes sur lunit corres-
pondante. Fermez cette bote de dialogue si vous ne souhaitez pas dsinstaller dau-
tre autorisation.
Vous pouvez ensuite nouveau utiliser cette disquette pour installer une autorisa-
tion.

En cas de Si une dfaillance se produit sur votre disque dur avant que vous nayez dsinstall
dfaillance de lautorisation, veuillez contacter le service SIEMENS comptant.
votre disque dur...

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 3-3
Installation du logiciel SCL

3.2 Installation / Dsinstallation du logiciel SCL

Prsentation Un programme dinstallation permet dexcuter automatiquement linstallation de


SCL. Durant toute cette procdure lon vous demandera de rpondre tape aprs
tape aux messages affichs lcran.

Conditions Avant de pouvoir raliser linstallation de SCL, Windows 95 doit tre dmarr et le
logiciel STEP 7 doit tre charg.

Dmarrage du Procdez de la manire suivante :


programme
1. Dans Windows 95, dmarrez le dialogue dinstallation dun logiciel en effectuant
dinstallation
un double-clic sur licne Ajout/Supression de programmes du Panneau de
configuration .
2. Cliquez sur Installer .
3. Introduisez le support de donnes (disquette 1 ou CD-ROM), puis cliquez sur
Suivant . Windows 95 recherche alors lui-mme le programme dinstallation
SETUP.EXE.
4. Suivez une une les instructions donnes par le programme dinstallation.
Le programme vous guide pas pas tout au long du processus dinstallation. Vous
pouvez tout instant passer ltape prcdente ou suivante.

Au cas o une Si le programme dinstallation dtecte une version de SCL dj installe sur loutil
version de SCL est de dveloppement, un message vous en informe et les possibilits suivantes soffrent
dj installe vous :
S abandonner linstallation (pour dsinstaller lancienne version de SCL sous
Windows 95 puis redmarrer linstallation) ou
S poursuivre linstallation et craser lancienne version par la nouvelle.
Avant de procder une installation, nous vous recommandons dans tous les cas de
dsinstaller une ventuelle ancienne version. Le simple crasement dune ancienne
version a pour inconvnient de conserver certaines parties lors dune dsinstallation
ultrieure.
Durant la procdure dinstallation, vous serez amen rpondre des questions ou
choisir des options dans des botes de dialogue. Pour y parvenir le plus rapidement
possible, nous vous recommandons de tenir compte des informations suivantes.

SCL pour SIMATIC S7-300/400, Programmation de blocs


3-4 C79000-G7077-C522-01
Installation du logiciel SCL

Dsinstallation Utilisez le processus habituel de dsinstallation de Windows 95 :


1. Sous Windows 95, dmarrez le dialogue dinstallation dun logiciel en effectuant
un double-clic sur licne Ajout/Supression de programmes dans Panneau
de configuration .
2. Slectionnez lentre STEP 7 dans la liste des logiciels installs, puis confirmez
en cliquant sur le bouton de suppression du logiciel.
3. Si une bote de dialogue vous demandant de confirmer la suppression du fichier
valid apparat, cliquez sur le bouton Non en cas de doute.

Niveau Toutes les langues disponibles et tous les exemples requirent environ 8 Mo de m-
dinstallation moire.

Autorisation La vrification de la prsence dune autorisation sur le disque dur est ralise durant
linstallation. Si tel nest pas le cas, un message vous informe que le logiciel ne peut
tre utilis quavec une autorisation. Vous avez alors la possibilit de la fournir
immdiatement ou alors de poursuivre linstallation et de la fournir ultrieurement.
Dans le premier cas, il vous suffit dintroduire la disquette dautorisation dans le
lecteur lorsque lon vous la demandera, puis de confirmer. Des informations ce
sujet vous sont donnes au paragraphe 3.1.

Installation russie Si linstallation est russie, un message correspondant vous en informe lcran.

Erreur durant Les erreurs suivantes provoquent labandon de linstallation :


linstallation
S Si une erreur dinitialisation se produit immdiatement aprs le dmarrage de
linstallation, il est probable que le programme SETUP.EXE na pas t dmarr
sous Windows 95.
S La mmoire est insuffisante : il vous faut au minimum 8 Mo de capacit
mmoire libre sur votre disque dur.
S Disquette dfectueuse : si lune des disquettes dinstallation est dfectueuse,
veuillez contacter votre agence Siemens.
S Erreur de manipulation : renouvelez linstallation en suivant scrupuleusement les
instructions.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 3-5
Installation du logiciel SCL

SCL pour SIMATIC S7-300/400, Programmation de blocs


3-6 C79000-G7077-C522-01
Utilisation de SCL 4
Prsentation Le prsent chapitre vous familiarise avec lutilisation de SCL et dcrit linterface
utilisateur de lditeur de SCL.

Structure du Paragraphe Thme Page


chapitre 4.1 Dmarrage du logiciel SCL 4-2
4.2 Adaptation de linterface utilisateur 4-3
4.3 Utilisation de lditeur de SCL 4-5

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 4-1
Utilisation de SCL

4.1 Dmarrage du logiciel SCL

Dmarrage depuis Aprs avoir install le logiciel SCL sur votre PG, vous pouvez dmarrer SCL en
Windows utilisant le bouton Dmarrer de la barre des tches de Windows 95 (via loption
SIMATIC / STEP 7 )

Dmarrage depuis La manire la plus rapide de dmarrer SCL consiste positionner le curseur sur une
SIMATIC Manager source SCL et deffectuer un double-clic. Pour plus dinformations reportez-vous au
guide de lutilisateur /231/.
La figure 4-1 montre la fentre SCL aprs le dmarrage du logiciel SCL.

Programmation de blocs avec SCL


Fichier Affichage ?

Pour obtenir de laide, appuyez sur F1.

Figure 4-1 Fentre de SCL

Nota
Le guide de lutilisateur de Windows 95 ou le didacticiel de laide en ligne corres-
pondant vous donneront des informations dtailles sur lutilisation standard et sur
les options de Windows 95.

SCL pour SIMATIC S7-300/400, Programmation de blocs


4-2 C79000-G7077-C522-01
Utilisation de SCL

4.2 Adaptation de linterface utilisateur

Prsentation Comme les autres fentres de STEP 7, les fentres de SCL comportent les compo-
santes standard suivantes, voir figure 4-2 :
 Barre de titre :
elle comporte le titre de la fentre ainsi que les boutons de commande de la
fentre.
 Barre des menus :
elle comporte tous les menus disponibles dans la fentre.
 Barre doutils :
elle contient tous les boutons permettant dexcuter rapidement les commandes
les plus frquentes.
 Zone de travail :
elle comporte les diverses fentre ddition, de compilation ou de test.
 Barre dtat :
elle affiche ltat de lobjet slectionn ainsi que des informations supplmen-
taires.

Barre de titre Programmation de blocs avec SCL


Barre des menus Fichier Affichage ?

Barre doutils

Zone de travail

Barre dtat Pour obtenir de laide, appuyez sur F1.

Figure 4-2 Composantes de la fentre SCL

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 4-3
Utilisation de SCL

Modification des Vous avez la possibilit dadapter les lments suivants vos exigences particuli-
composantes res :
 affichage de la barre doutils
 affichage de la barre des points darrt
 affichage de la barre dtat

Adaptation de la Vous avez la possibilit dafficher ou de masquer la barre doutils. Il vous suffit
barre doutils dactiver ou de dsactiver la commande Affichage Barre doutils. Si la com-
mande est active, elle est coche.

Adaptation de la Vous pouvez galement afficher ou masquer la barre des points darrt. Il vous suffit
barre des points dactiver ou de dsactiver la commande Affichage Barre des points darrt. Si
darrt la commande est active, elle est coche.

Adaptation de la Vous avez galement la possibilit dafficher ou de masquer la barre dtat. Il vous
barre dtat suffit dactiver ou de dsactiver la commande Affichage Barre dtat. Si la com-
mande est active, elle est coche.

Adaptation de Lditeur et le compilateur vous offrent des options qui ont pour but de vous faciliter
lenvironnement le travail.
 options de cration de blocs
 options du compilateur
 options de lditeur

Cration du bloc Vous pouvez, par exemple, dfinir si les blocs existants doivent tre crass durant
la compilation ou pas. Choisissez cet effet la commande Outils Paramtres et
cliquez sur longlet Cration du bloc dans la bote de dialogue Paramtres .
Une description dtaille des options figure au paragraphe 5.5.

Adaptation du Vous pouvez adapter la procdure de compilation vos exigences particulires. Une
compilateur description dtaille des options figure au paragraphe 5.5.
Choisissez cet effet la commande Outils Paramtres et cliquez sur longlet
Compilateur dans la bote de dialogue Paramtres .

Adaptation de Vous pouvez slectionner la largeur de tabulation, lenregistrement avant compila-


lditeur tion, laffichage des numros de ligne et bien dautres options. Choisissez cet effet
la commande Outils Paramtres et cliquez sur longlet Editeur dans la bote
de dialogue Paramtres .

SCL pour SIMATIC S7-300/400, Programmation de blocs


4-4 C79000-G7077-C522-01
Utilisation de SCL

4.3 Utilisation de lditeur de SCL

Prsentation Une source SCL est principalement compose de texte au kilomtre. Des fonctions
ddition spcialement dveloppes pour SCL vous assistent lors de la saisie du
texte.

Fentre ddition Vous entrez lobjet source pour votre programme utilisateur par saisie sur le clavier.
Vous avez la possibilit douvrir plusieurs fentres du mme ou dun autre objet
source. La commande Fentre vous permet den modifier la disposition.

Programmation de blocs avec SCL proj1\...\source 1


Fichier Edition Insertion Systme cible Test Affichage Outils Fentre ?


proj1\Station SIMATIC 300 (1)\CPU 314 (1)\..._source 1

FUNCTION_BLOCK FB11

VAR
I:INT;
Tableau:ARRAY[1..10,1..20] OF REAL;
REGULATEUR:
ARRAY[1..3,1..4] OF INT:=54, 736, 83, 77,
1289, 10362, 385, 2,
60, 37, 7, 103;
END_VAR
BEGIN

Pour obtenir de laide, appuyez sur F1. Insertion 0:0 hors ligne

Figure 4-3 Fentre ddition de SCL

Slection de texte Pour slectionner une zone de texte dans SCL, vous positionnez le curseur au dbut
de la zone slectionner, puis tout en maintenant le bouton de la souris enfonc,
vous faites glisser la souris sur la zone correspondante.
Vous avez galement la possibilit de slectionner
 lensemble du texte dune source en choisissant la commande Edition Slec-
tionner tout,
 un mot en cliquant deux fois sur celui-ci ou
 une ligne entire en cliquant 3 fois dessus.

Rechercher et La commande Edition Rechercher /Remplacer ouvre une bote de dialogue dans
remplacer laquelle vous pouvez rechercher une chane de caractres en vue de la remplacer par
dautres objets de texte.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 4-5
Utilisation de SCL

Insertion de En vous permettant de respecter plus aisment les rgles de syntaxe, linsertion de
modles modles contribue une programmation plus efficace. Dans SCL, vous pouvez :
 insrer des modles de bloc, en choisissant la commande Insertion Modle de
bloc.
 insrer des structures de contrle, en choisissant la commande Insertion Struc-
ture de contrle.

Couper, copier, Le menu Edition vous propose comme laccoutume les commandes vous permet-
coller, effacer tant de couper, copier, coller et effacer des objets de texte.
Vous avez galement la possibilit de dplacer ou de copier des objets en les coupant/
collant laide de la souris (Drag&Drop).

Aller La commande de menu Edition Aller ouvre une bote de dialogue. Vous pouvez
y indiquer le numro de la ligne laquelle vous dsirez vous rendre, puis valider
votre choix par OK . Le curseur se placera alors au dbut de la ligne voulue.

Annuler, rtablir La commande de menu Edition Annuler permet dannuler la dernire action.
Vous pouvez, par exemple, rtablir une ligne efface. La commande Edition
Rtablir permet de rtablir une action venant dtre annule.

SCL pour SIMATIC S7-300/400, Programmation de blocs


4-6 C79000-G7077-C522-01
Programmation avec SCL 5
Prsentation Ce chapitre dcrit les diffrentes tapes respecter lors de la programmation, lordre
donn ici ntant quun ordre possible parmi dautres.

Structure du Paragraphe Thme Page


chapitre 5.1 Crer un programme utilisateur avec SCL 5-2
5.2 Crer et ouvrir une source SCL 5-3
5.3 Saisir des dclarations, instructions et commentaires 5-4
5.4 Enregistrer et imprimer une source SCL 5-5
5.5 Procdure de compilation 5-6
5.6 Charger le programme utilisateur cr dans lAP 5-9
5.7 Crer un fichier dinformations compilation 5-10

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 5-1
Programmation avec SCL

5.1 Crer un programme utilisateur avec SCL

Conditions Avant de crer un programme avec SCL, vous devriez raliser les tches suivantes :
pralables
1. Crez un projet dans SIMATIC Manager.
2. Dans SIMATIC Manager, affectez chaque CPU une adresse de communication
dans le rseau.
3. Configurez et paramtrez lunit centrale et les modules de signaux.
4. Si vous souhaitez utiliser des mnmoniques pour les zones de mmoire de la
CPU ou pour les dsignations de blocs, vous devez crer une table de mnmoni-
ques.

Table de SCL aura recours cette table lors de la compilation. Vous crez et remplissez la
mnmoniques table des mnmoniques sous STEP 7.
Vous pouvez ensuite louvrir depuis le SIMATIC Manager ou directement dans SCL
grce la commande de menu Outils Table de mnmoniques.
Vous pouvez galement importer et modifier des tables de mnmoniques sous forme
de fichiers de texte (lditeur utilis tant indiffrent). Pour plus dinformations ce
sujet, reportez-vous au guide de lutilisateur /231/.

Comment procder Pour crer un programme utilisateur dans SCL, vous crez dabord une source SCL
dans laquelle vous pouvez diter un ou plusieurs blocs (OB, FB, FC, DB et UDT)
que vous allez ensuite compiler laide dune procdure squentielle. Aprs compi-
lation, ces blocs figureront dans le classeur Programme utilisateur (<AP-off>,
voir figure 5-1) du programme S7 correspondant, dans lequel est galement enregis-
tre la source.
Vous avez la possibilit de crer et dditer la source SCL avec lditeur intgr ou
avec un diteur standard quelconque. Dans le second cas, vous devez importer les
sources dans le projet avec SIMATIC Manager. Vous pouvez ensuite les ouvrir afin
de les diter ou de les compiler.

SCL pour SIMATIC S7-300/400, Programmation de blocs


5-2 C79000-G7077-C522-01
Programmation avec SCL

5.2 Crer et ouvrir une source SCL

Prsentation Les sources que vous crez avec SCL sintgrent de la manire suivante dans la
structure dun programme S7 :

Programme S7
Blocs Bloc
(par exemple, FB1, OB1)
Sources Source
(par exemple, source SCL)

Mnmoniques

Figure 5-1 Structure dun programme S7 dans SIMATIC Manager

Crer une source Pour crer une source pour SCL, procdez de la manire suivante :
SCL
1. Choisissez la commande Fichier Nouveau ou cliquez sur le bouton Nou-
veau dans la barre doutils.
2. Slectionnez dans la bote de dialogue Nouveau le projet souhait et le clas-
seur des sources du programme S7 correspondant.
3. Ouvrez le classeur des sources et choisissez la commande Insertion Logiciel
S7 Source SCL.
4. Slectionnez la source et choisissez la commande Edition Proprits de lob-
jet. Entrez le nom de lobjet source dans la page donglet Fiche didentit .
Vous disposez de 24 caractres au maximum. La distinction entre les majuscules
et les minuscules joue un rle dans les noms de sources.
5. Effectuez un double clic sur la source. Une fentre vide dans laquelle vous pou-
vez diter la source SCL souvre.

Ouvrir une source Vous pouvez ouvrir un objet source cr et enregistr avec SCL afin de lditer et de
SCL le compiler.
Procdez de la manire suivante :
1. Choisissez la commande Fichier Ouvrir, ou cliquez sur le bouton Ouvrir .
2. Slectionnez le projet souhait et le programme S7 correspondant dans la bote
de dialogue Ouvrir .
3. Assurez-vous que le filtre Source SCL a t choisi et slectionnez le classeur
des sources.
4. Toutes les sources SCL du programme S7 correspondant saffichent dans la bote
de dialogue. Slectionnez lobjet que vous souhaitez ouvrir, puis confirmez par
OK ou effectuez un double-clic sur la source.
Vous pouvez ouvrir de la mme manire les sources que vous avez cres avec un
diteur standard, aprs les avoir importes dans le projet laide de SIMATIC
Manager.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 5-3
Programmation avec SCL

5.3 Saisir des dclarations, instructions et commentaires

Prsentation La saisie de sources SCL rpond des rgles de syntaxe bien prcises qui font partie
intgrante de la description du langage. Elles sont nonces en annexe.



proj1\Station SIMATIC 300 (1)\CPU 314 (1)\...\source 1

FUNCTION_BLOCK FB11

VAR
I:INT;
Tableau:ARRAY[1..10,1..20] OF REAL;
REGULATEUR:
ARRAY[1..3,1..4] OF INT:=-54, 736, -83, 77,
-1289, 10362, 385, 2,
60, -37, -7, 103;
END_VAR
BEGIN

Figure 5-2 Source SCL

Rgles La saisie implique les respect des conventions suivantes :


 Vous pouvez formuler un nombre quelconque de blocs de code (FB, FC, OB),
blocs de donnes (DB) et types de donnes utilisateur (UDT) dans une source
SCL, la structure de chaque type de bloc tant particulire (voir chapitre 8).
 La distinction entre majuscules et minuscules nintervient que pour les identifi-
cateurs symboliques (par exemple les noms de variables et les constantes littra-
les de type caractre).
 Les blocs appels doivent prcder les blocs qui les appellent.
 Les types de donnes utilisateur (UDT) doivent prcder les blocs qui les utili-
sent.
 Les blocs de donnes globaux doivent prcder tous les blocs qui y accdent.
 Appliquez les rgles de format et de syntaxe nonces lannexe A, Description
formelle du langage du prsent manuel.

SCL pour SIMATIC S7-300/400, Programmation de blocs


5-4 C79000-G7077-C522-01
Programmation avec SCL

5.4 Enregistrer et imprimer une source SCL

Enregistrer une Dans SCL, lenregistrement dsigne lenregistrement dun fichier source. Les blocs
source SCL sont crs durant la compilation du fichier source et sont quant eux, enregistrs
automatiquement dans le rpertoire du programme correspondant.
Diverses possibilits soffrent vous pour enregistrer une source SCL :
 Choisissez la commande Fichier Enregistrer, ou cliquez sur le bouton Enre-
gistrer dans la barre doutils.
La source SCL est mise jour.
 Si vous souhaitez faire une copie du fichier SCL en cours, choisissez la com-
mande Fichier Enregistrer sous. Dans la bote de dialogue Enregistrer
sous qui souvre, vous pouvez indiquer le nom et le chemin de la copie.
 Si vous choisissez la commande Fichier Fermer sans avoir pralablement
enregistr la source que vous avez modifie, vous devrez spcifier si vous sou-
haitez enregistrer les modifications, les ignorer ou encore annuler la commande
Fermer.
Choisir la commande Fichier Fermer revient cliquer sur le bouton Fer-
mer dans la barre doutils.
Lorsque vous choisissez la commande Fichier Quitter sans que la version en
cours des sources ouvertes ne soit enregistre, un dialogue vous est propos pour
chaque source afin denregistrer ou dignorer les modifications.

Imprimer une Vous pouvez imprimer les blocs, dclarations et instructions dune source SCL sur une
source imprimante que vous devez pralablement installer et configurer dans la gestion du sys-
tme de Windows. Procdez de la manire suivante :
 Cliquez sur le bouton Imprimer dans la barre doutils ou choisissez la com-
mande Fichier Imprimer. Dans la bote de dialogue qui souvre, vous pouvez
choisir diverses options dimpression, comme par exemple la zone imprimer
ou le nombre de copies.
 Confirmez par OK , pour envoyer le document sur limprimante.

Dfinir la mise en La commande Fichier Mise en page vous permet de dfinir le format de page de
page votre document.

Dfinir les en-ttes Vous pouvez dfinir les en-ttes et bas de page du document imprimer en choisis-
et bas de page sant la commande Fichier En-ttes et bas de page dans le gestionnaire de pro-
jets SIMATIC.

Aperu avant Avec la commande Fichier Aperu avant impression, vous avez la possibilit
impression de visualiser un document avant de limprimer. Son dition nest cependant pas pos-
sible.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 5-5
Programmation avec SCL

5.5 Procdure de compilation

Prsentation Avant de pouvoir excuter ou tester votre programme, vous devez le compiler. En
initiant le processus de compilation, vous activez un compilateur, qui possde les
proprits suivantes :
 Il fonctionne daprs le principe du traitement par lots, ce qui signifie quil
considre une source SCL comme un ensemble. La compilation partielle (par
exemple ligne par ligne) est impossible.
 Il vrifie la syntaxe de la source SCL, puis signale toutes les erreurs dtectes
durant la compilation.
 Il cre des blocs comportant des informations de dboguage si la compilation de
la source est exempte derreur et si vous avez slection loption correspondante
(voir ci-aprs). Vous devez choisir cette option dinformation de dboguage pour
chaque programme dont vous souhaitez tester le niveau de langage volu.
 A chaque appel de bloc fonctionnel, il gnre le bloc de donnes dinstance cor-
respondant si ce dernier nexiste pas encore.

Slectionner les Vous avez la possibilit dadapter la procdure de compilation vos exigences parti-
options du culires. Choisissez cet effet la commande Outils Paramtres, puis cliquez sur
compilateur longlet Compilateur dans la bote de dialogue Paramtres . Vous pouvez
activer ou dsactiver les options proposes laide de la souris.

Paramtres

Cration de blocs Compilateur Editeur

Gnrer code objet Nombre derreurs max. : 99


Optimiser code objet Long. de chane max. : 253
Surveiller limites des tableaux Imbrication de commentaires possible
Gnrer informations dbogage
Activer drapeau OK

OK Annuler Valider Aide

Figure 5-3 Bote de dialogue Paramtres , onglet Compilateur

SCL pour SIMATIC S7-300/400, Programmation de blocs


5-6 C79000-G7077-C522-01
Programmation avec SCL

Options La signification des options est la suivante :


 Nombre derreurs max. : lorsque le nombre derreurs maximum indiqu est
atteint, le compilateur abandonne la compilation de la source SCL.
 Gnrer code objet : gnrer un code excutable sur un AP : oui/non
 Optimiser code objet : crer un code plus concis (toutes les optimisations ne
sont pas possibles si vous slectionnez loption dinformations dbogage).
 Surveiller limites des tableaux : vrifier si les limites des tableaux se trouvent
dans la plage autorise dfinie dans la dclaration du tableau lexpiration
du temps dexcution. Si tel nest pas le cas, le drapeau OK prend la valeur
FALSE ( condition que loption drapeau OK soit coche).
 Gnrer informations dbogage : gnrer des informations de test : oui/non.
Elle sont requises pour effectuer le test avec le dbogueur de niveau de langage
volu.
 Activer drapeau OK : lexpiration du temps dexcution, la variable OK doit
prendre la valeur FALSE pour toute opration errone.
 Long. de chane max. : rduire la longueur standard du type de donnes
STRING qui est de 254 caractres dans la slection de base. Pour optimiser les
ressources de votre CPU, vous pouvez, dans ce cas, en rduire la longueur
standard.
 Imbrication de commentaires possible : plusieurs commentaires peuvent tre
imbriqus dans la source SCL : oui/non.

Cration du bloc Longlet Cration du bloc vous offre encore dautres possibilit de paramtrer le
processus de compilation :
 Vous pouvez dfinir si les blocs existants doivent tre crass ou pas lors de la
compilation.
 Vous pouvez slectionner la gnration automatique de donnes de rfrence lors
de la compilation dune source. Lactivation de cette option rallonge cependant
la dure du processus de compilation.
 Vous activez loption Prise en compte de lattribut systme S7_server lorsque
le bloc est utilis pour la configuration de messages ou de liaisons. Cette option
rallonge galement la dure de la compilation.

Dmarrer la Vous pouvez dmarrer la compilation de deux faons :


compilation
 Choisissez la commande Fichier Compiler, ou
 cliquez sur le bouton Compiler dans la barre doutils.
Pour vous assurer quil sagit toujours de la dernire version de votre source SCL
que vous compilez, il est recommand de choisir la commande Outils Paramtres
et dactiver loption Enregistrer avant de compiler dans longlet Editeur . La
source SCL sera alors enregistre automatiquement lorsque vous choisirez la com-
mande Fichier Compiler.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 5-7
Programmation avec SCL

Fin de la Lorsque la compilation est termine, une fentre souvre pour indiquer soit que la
compilation compilation sest correctement droule, soit que dventuelles erreurs et avertisse-
ments sont apparus, voir figure 5-4 :

SCL : Messages derreur

Source 1
F:L00016 C00012 : impression errone
W: gnrateur de code non appel pour cause derreur
Erreurs : 1, avertissements : 1

Message
15:4397 Texte daide

Erreurs : 1, avertissements : 1
Aller

Fermer Aide

Figure 5-4 Fentre de messages derreurs et davertissements

Recherche des Tout message est indiqu avec sa position (ligne et colonne) de mme quavec une
causes derreurs et description succincte. Pour obtenir une description dtaille de lerreur ou de laver-
davertissements tissement survenus, slectionnez le message correspondant et cliquez sur le bouton
Aide .
En effectuant un double-clic sur un message, vous pouvez positionner le curseur
lendroit correspondant dans la source SCL.
Ces deux possibilits vous permettent de localiser et de corriger rapidement les
erreurs et avertissements.

SCL pour SIMATIC S7-300/400, Programmation de blocs


5-8 C79000-G7077-C522-01
Programmation avec SCL

5.6 Charger le programme utilisateur cr dans lAP

Prsentation Durant la compilation dune source SCL, les blocs sont crs partir de la source et
sauvegards dans le classeur des blocs du programme S7 correspondant. Dans SCL,
vous pouvez ensuite charger exclusivement ces blocs depuis la console de program-
mation dans la CPU.
Si vous souhaitez transmettre dautres blocs du programme S7 dans votre automate
programmable, utilisez SIMATIC Manager.

Conditions Les conditions suivantes doivent tre remplies pour permettre la transmission du
pralables programme utilisateur dans lAP :
 une liaison doit tre tablie entre la console de programmation et lautomate pro-
grammable.
 les blocs que vous voulez charger doivent avoir t compils sans erreurs.

Effacement La fonction deffacement gnral vous permet deffacer lensemble du programme


gnral de la utilisateur dans une CPU en ligne. Sachez que non seulement la CPU est initialise,
mmoire de la CPU mais que toutes les liaisons avec la CPU sont galement annules et que, si une
carte mmoire est enfiche, son contenu est copi dans la mmoire de chargement
interne. Procdez de la manire suivante :
1. Choisissez la commande Systme cible Etat de fonctionnement et mettez la
CPU larrt.
2. Choisissez la commande Systme cible Effacement gnral.
3. Confirmez leffacement gnral dans la bote de dialogue qui souvre.

Charger dans le Il est recommand de charger les blocs ltat darrt, car ltat de marche, lcra-
systme cible sement dun ancien programme est susceptible de provoquer des erreurs. Procdez
de la manire suivante :
1. Choisissez la commande Systme cible Charger.
2. Si le bloc est dj prsent dans la RAM de la CPU, confirmez son crasement
lorsque vous y tre sollicit.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 5-9
Programmation avec SCL

5.7 Crer un fichier dinformations compilation

Prsentation Vous pouvez automatiser la compilation de plusieurs sources SCL en crant un


fichier dinformations compilation.

Fichier Vous pouvez crer un fichier dinformations compilation pour votre projet STEP 7.
dinformations Vous y indiquez les noms des sources SCL contenues dans le projet. Ces sources
compilation SCL vont ensuite tre compiles dans une procdure de traitement par lots.

Crer Procdez aux tapes suivantes :


 Si vous crez un fichier avec la commande Nouveau ou Ouvrir , vous
devez crer le filtre du Fichier dinformations compilation .
 Le fichier que vous utilisez prsent est caractris par lextension .inp .
 Lorsque vous compilez ce fichier, les fichiers dont vous avez spcifi le nom
sont compils dans lordre indiqu.

Compiler Durant la compilation, les blocs crs sont rangs dans le classeur des blocs du pro-
gramme S7.

SCL pour SIMATIC S7-300/400, Programmation de blocs


5-10 C79000-G7077-C522-01
Test dun programme 6
Prsentation Les fonctions de test de SCL vous offrent la possibilit de contrler lexcution dun
programme dans lAP pour y dceler dventuelles erreurs.
Durant la compilation, SCL reconnat et affiche les erreurs de syntaxe. Les erreurs
de temps de cycle durant lexcution du programme sont signales par des alarmes
systme ; quant aux erreurs de programmation logiques, vous pouvez les rechercher
laide des fonctions de test de SCL.

Informations Laide en ligne de SCL fournit des informations dtailles sur le test et rpond aux
supplmentaires questions prcises que vous vous posez lorsque vous utilisez SCL.

Structure du Paragraphe Thme Page


chapitre 6.1 Prsentation 6-2
6.2 Fonction de test Visualisation continue 6-3
6.3 Fonction de test Activer les points darrt 6-5
6.4 Fonction de test Visualiser/forcer des variables 6-8
6.5 Fonction de test Donnes de rfrence 6-9
6.6 Utilisation des fonctions de test de STEP 7 6-10

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 6-1
Test dun programme

6.1 Prsentation

Niveau de langage Les fonctions de test de SCL vous permettent de tester les programmes utilisateur
volu que vous avez programms pour ce qui est de leur niveau de langage volu. Avec
ce type de test vous pouvez :
S dceler des erreurs de programmation,
S visualiser et contrler laction dun programme utilisateur sur lexcution dans la
CPU.

Conditions Avant de tester un programme SCL, vous devez procder aux tapes suivantes :
pralables
1. Vous devez compiler le programme en ayant activ les options de compilation
Cration du code objet et Cration de linformation Dboguage . Vous les
slectionnez dans longlet Compilateur de la bote de dialogue que vous
obtenez en choisissant la commande Outils Paramtres.
2. Vous devez tablir une liaison en ligne entre votre PG/PC et la CPU.
3. Vous devez en outre charger le programme dans la CPU. Cest ce que vous rali-
sez avec la commande Systme cible Charger.

Fonctions de test Le tableau 6-1 dsigne et rsume les caractristiques des principales fonctions de
de SCL test que vous pouvez appeler dans SCL.

Tableau 6-1 Prsentation des fonctions de test

Fonction Caractristiques
Visualisation contine Affichage des noms et des valeurs actuelles
(CPU S7-300/400) des variables dun domaine de visualisation
Activer les points darrt Dfinition, suppression et dition des points
(uniquement CPU S7-400) darrt : test pas pas
Visualiser/forer des variables Visualisation/forage des valeurs actuelles des
donnes globales
Gnration des donnes de rfrence Cration dun aperu du programme utilisa-
teur
Fonctions de test du logiciel de base STEP 7 Consultation/modification de ltat de fonc-
tionnement de la CPU

Avertissement
! La dfaillance dune fonction ou une erreur de programmation survenant durant
lexcution du test lorsque linstallation est en marche peuvent occasionner des
dommages matriels et personnels ! Avant dexcuter une fonction de test, assurez-
vous quaucune situation dangereuse ne soit susceptible de se produire.

SCL pour SIMATIC S7-300/400, Programmation de blocs


6-2 C79000-G7077-C522-01
Test dun programme

6.2 Fonction de test Visualisation continue

Prsentation La visualisation continue dun programme consiste tester un ensemble dinstruc-


tions, galement appel domaine de visualisation.
Durant la phase de test, les valeurs des variables et des paramtres de ce domaine
sont affiches chronologiquement et actualises cycliquement. Si le domaine de
visualisation se trouve dans une section de programme qui sexcute chaque cycle,
les valeurs des variables ne peuvent en principe pas tre lues pour des cycles cons-
cutifs.
Les valeurs qui se sont modifies durant le cycle actuel sont affiches en noir, celle
qui ne se sont pas modifies en gris clair.
Le nombre dinstructions pouvant tre testes est fonction de la puissance des CPU
connectes. Comme les instructions SCL du code source sont reprsentes dans un
grand nombre dinstructions diffrentes du code machine, la longueur du domaine
de visualisation est variable. Cest SCL qui la dtermine et la slectionne lorsque
vous choisissez la premire instruction du domaine de visualisation souhait.

Mode de test Lorsque vous effectuez un test en mode de Visualisation continue , les valeurs
actuelles des donnes comprises dans le domaine de visualisation sont consultes et
affiches. La consultation a lieu pendant lexcution du domaine de visualisation.
Elle entrane gnralement une augmentation du temps de cycle, que vous pouvez
cependant influencer grce aux deux environnements de test proposs par SCL :
S Environnement de test Processus :
Dans lenvironnement de test Processus , le dbogueur de SCL limite le
domaine de visualisation maximal, de sorte ce que durant le test, le temps de
cycle ne dpasse pas ou peine le temps dexcution rel du processus.
S Environnement de test Laboratoire :
Dans lenvironnement de test Laboratoire , le domaine de visualisation nest
limit que par la puissance de la CPU connecte. Le temps de cycle peut cepen-
dant tre plus long que le processus rel, mais le domaine de visualisation maxi-
mal est suprieur celui de lenvironnement de test Processus .

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 6-3
Test dun programme

Mise en uvre de Pour excuter la fonction Visualisation continue , procdez de la manire sui-
la Visualisation vante :
continue
1. Assurez-vous que les conditions pralables enonces au paragraphe 6.1 sont bien
remplies.
2. Activez la fentre qui contient la source du programme tester.
3. Si vous souhaitez changer lenvironnement de test prdfini (processus), chois-
sez la commande Test Environnement de test Laboratoire.
4. Positionnez le point dinsertion dans la ligne du texte source contenant la pre-
mire instruction du domaine tester.
5. Choisissez la commande Test Visualisation continue.
Rsultat : le domaine de visualisation le plus grand possible va alors tre dter-
min et signal par une barre grise au bord gauche de la fentre. La fentre se
scinde en deux et sa partie droite affiche ligne par ligne les noms et valeurs
actuelles des variables comprises dans le domaine de visualisation.
6. Choisissez la commande Test Visualisation continue, pour interrompre le test
et le poursuivre ultrieurement.
7. Choisissez la commande Test Mettre fin au test, pour terminer le test.

SCL pour SIMATIC S7-300/400, Programmation de blocs


6-4 C79000-G7077-C522-01
Test dun programme

6.3 Fonction de test Activer les points darrt

Prsentation Le test avec la fonction Activer les points darrt seffectue pas pas. Vous pou-
vez excuter le programme instruction par instruction et visualiser comment les
valeurs des variables dites varient.
Aprs avoir dfini des points darrt, vous pouvez dans un premier temps excuter le
programme jusqu lun dentre eux, et partir de l, commencer la visualisation
pas pas.

Points darrt Vous pouvez dfinir des points darrt en divers endroits dans la section dinstruc-
tions du texte source.
Les points darrt ne sont chargs dans lautomate programmable et activs que lors-
que vous choisissez la commande Test Activer les points darrt. Le programme
est alors excut jusqu ce que le premier point darrt est atteint.
Le nombre de points darrt actifs dpend de la CPU :
S CPU 416 : au maximum 4 points darrt actifs
S CPU 414 : au maximum 2 points darrt actifs
S CPU 314 : aucun point darrt actif possible

Fonctions de test Aprs avoir appel la fonction de test Activer les points darrt, vous pouvez
pas pas excuter les fonctions suivantes :
S Instruction suivante
Excution de linstruction suivante. Permet dafficher les valeurs des variables.
S Poursuivre
Poursuite de lexcution jusquau prochain point darrt activ.
S Jusqu la slection
Poursuite de lexcution jusqu la position du curseur que vous dfinissez dans
la source.

Nota
Veillez ne pas dpasser le nombre maximal de points darrt actifs autoriss lors-
que vous utilisez les commandes Instruction suivante ou Jusqu la slection, ces
dernires crant et activant automatiquement un point darrt.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 6-5
Test dun programme

Mise en uvre de Avant de dbuter le test, assurez-vous que les conditions cites au chapitre 6.1 sont
Activer les points remplies. Vous pouvez alors tester votre programme pas pas avec la fonction
darrt Activer les points darrt . La manire de procder est dcrite dans les tapes
suivantes et reprsente la figure 6-1 :
1. Slectionnez la fentre qui contient la source du bloc tester.
2. Slectionnez les points darrt en positionnant le curseur lendroit voulu dans
la source du programme et en choisissant soit la commande Test Dfinir un
point darrt. Les points darrt sont reprsents sous forme de cercle rouge au
bord gauche de la fentre.
3. Dmarrez ensuite le test pas pas en choisissant la commande Test Activer les
points darrt.
Rsultat : la fentre se divise verticalement en deux parties et le programme
dmarre. Le point darrt suivant est recherch. Quand il est atteint, la CPU
passe ltat de fonctionnement ATTENTE et la position recherche est mar-
que par une flche jaune.
4. Vous disposez des fonctions de test pas pas suivantes :
Choisissez la commande Test Instruction suivante (4a) :
Rsultat : la CPU se met brivement ltat de marche. Lorsque linstruction
suivante est atteinte, elle se met nouveau larrt et affiche ligne par ligne dans
la partie gauche de la fentre la valeur des variables dites dans linstruction
prcdente.
Choisissez la commande Test Poursuivre (4b) :
Rsultat : la CPU se met ltat de marche. Lorsque le point darrt actif
suivant est atteint, elle se met nouveau larrt et signale le point darrt au
bord gauche de la fentre. Pour afficher les valeurs des variables, vous devez
choisir nouveau la commande Test Instruction suivante.
Choisissez la commande Test Jusqu la slection (4c) :
Un point darrt est automatiquement dfini et activ lendroit de la slec-
tion. La CPU se met en marche. Lorsque la slection est atteinte, elle se met
nouveau larrt et slectionne ce point darrt. Pour afficher les valeurs
des variables, vous devez choisir nouveau la commande Test Instruction
suivante.
5. Si vous souhaitez poursuivre le test avec des points darrt modifis, retournez
ltape 2. Vous pouvez y dfinir de nouveaux points darrt ou encore effacer des
points darrt existants.
6. Choisissez la commande de menu Test Activer les points darrt pour inter-
rompre la boucle de test.
7. Si vous ne souhaitez pas tester dautre instruction dans la source, mettez fin au
test en choisissant la commande de menu Test Mettre fin au test.

SCL pour SIMATIC S7-300/400, Programmation de blocs


6-6 C79000-G7077-C522-01
Test dun programme

Excution du test Dbut


pas pas

1)
Ouvrir
Source SCL
oui
Nouveau point
darrt
?
non 2) Dfinir un point darrt Fentre de
(ou leffacer) la source SCL

3) Activer les points darrt


Dmarrer le test
pas pas

Instruction suivante Jusqu la slection


Fonction de test pas pas
?

Poursuivre

4a) 4b) 4c)


Afficher la valeur Aller au point Aller au point darrt
des variables darrt suivant la slection

Fentre de visualisation et source SCL

oui
Renouveler
?
non

5) Mettre fin
Terminer le test Activer les points darrt
pas pas

oui
Renouveler
?

non

6) Annuler division de la fentre


Fermer par Mettre fin au test

Fin

Figure 6-1 Algorithme dexcution du test

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 6-7
Test dun programme

6.4 Fonction de test Visualiser/forcer des variables

Prsentation Le test avec la fonction Visualiser/forcer des variables vous permet :


S dafficher (observer) les valeurs actuelles des donnes globales de votre pro-
gramme utilisateur
S dattribuer des valeurs aux variables dun programme utilisateur (les forcer).

Visualiser et forcer En choisissant la commande Systme cible Visualiser/forcer des variables, vous
des variables pouvez :
S dfinir des points et conditions de dclenchement,
S attribuer des valeurs aux variables dun programme utilisateur.
Vous devez dans les deux cas tablir une table des variables dans laquelle vous indi-
quez quelles variables vous allez diter. Dans le cas du forage , vous devez en
plus donner les valeurs souhaites.
Une description dtaille de la fonction de test est faite dans le guide de lutilisateur
STEP 7, /231/.

SCL pour SIMATIC S7-300/400, Programmation de blocs


6-8 C79000-G7077-C522-01
Test dun programme

6.5 Fonction de test Donnes de rfrence

Prsentation Pour vous faciliter le test et la modification de votre programme utilisateur, vous
pouvez gnrer et exploiter des donnes de rfrence.
Les donnes de rfrence englobent : la structure de programme, la liste des rfren-
ces croises, le tableau daffectation, la liste des oprandes libres ainsi que la liste
des mnmoniques manquants.
Vous pouvez utiliser les donnes de rfrence :
S pour obtenir un aperu de lensemble de votre programme utilisateur,
S comme base pour effectuer des modifications et tests,
S pour complter la documentation de votre programme.

Gnrer des Pour gnrer des donnes de rfrence, vous avez plusieurs possibilits :
donnes de
S Vous pouvez gnrer, actualiser et afficher les donnes de rfrence si cela est
rfrence
ncessaire, en choisissant la commande Outils Donnes de rfrence.
S En choisissant la commande Outils Paramtres, vous pouvez dfinir que les
donnes de rfrence soient gnres automatiquement lors de la compilation
dune source. Pour ce faire, slectionnez loption Gnration des donnes de
rfrence dans la page donglet Cration de blocs .
La gnration automatique des donnes de rfrence rallonge cependant la dure
du processus de compilation.
Une description dtaille de la fonction de test est faite dans le guide de lutilisateur
STEP 7, /231/.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 6-9
Test dun programme

6.6 Utilisation des fonctions de test de STEP 7

Editeur LIST Dans STEP 7, vous avez la possibilit douvrir en LIST des blocs compils avec
SCL afin de les tester dans le mode de reprsentation LIST.

Consulter et Pour visualiser ou modifier ltat de fonctionnement actuel de la CPU, choisissez la


modifier ltat de commande Systme cible Etat de fonctionnement.
fonctionnement de
la CPU

Afficher les Dans la bote de dialogue qui souvre lorsque vous choisissez la commande Systme
proprits de la cible Etat du module, vous pouvez :
CPU
S constater la cause du passage ltat darrt par lecture de la mmoire de dia-
gnostic,
S interroger le contenu des piles de la CPU. La pile des interruptions constitue une
aide prcieuse dans la dtermination des causes derreur,
S consulter les caractristiques techniques de la CPU,
S afficher la date et lheure rgles pour la CPU,
S afficher le temps de cycle de la CPU,
S obtenir des informations sur les blocs contenus dans la CPU,
S obtenir des informations sur la communication avec la CPU.
Pour que vous puissiez excuter toutes ces fonctions, il est impratif que la CPU soit
en ligne.

SCL pour SIMATIC S7-300/400, Programmation de blocs


6-10 C79000-G7077-C522-01
Troisime partie : 7
Notions fondamentales dans SCL
Description du langage
Structure dun fichier source SCL 8

Types de donnes 9
Dclaration de variables locales et
de paramtres de blocs 10
Dclaration de constantes et de
repres de saut 11

Dclaration de donnes globales 12


Expressions, oprateurs et
oprandes 13

Affectation de valeurs 14

Instructions de contrle 15
Appel de fonctions et de blocs
fonctionnels 16

Compteurs et temporisations 17

Fonctions standard de SCL 18

Interface dappel 19
SCL pour SIMATIC S7-300/400, Programmation de blocs
6-12 C79000-G7077-C522-01
Notions fondamentales dans SCL 7
Prsentation Le prsent chapitre dcrit les divers lments de langage que SCL met votre dis-
position ainsi que la manire de les utiliser. Il constitue une simple introduction aux
concepts de base de SCL et donne uniquement les dfinitions fondamentales qui
seront approfondies dans les chapitres suivants.

Structure du Paragraphe Thme Page


chapitre 7.1 Aide relative la description du langage 7-2
7.2 Jeu de caractres de SCL 7-4
7.3 Mots rservs 7-5
7.4 Identificateurs dans SCL 7-7
7.5 Identificateurs standard 7-8
7.6 Nombres 7-10
7.7 Types de donnes 7-12
7.8 Variables 7-14
7.9 Expressions 7-16
7.10 Instructions 7-17
7.11 Blocs SCL 7-18
7.12 Commentaires 7-20

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 7-1
Notions fondamentales dans SCL

7.1 Aide relative la description du langage

Description du Les diagrammes syntaxiques servent de base la description du langage faite dans
langage SCL les chapitres suivants. Ils permettent dillustrer la structure syntaxique (cest--dire
grammaticale) dans SCL. Ces diagrammes sont regroups au complet avec les l-
ments de langage correspondants en annexe B du prsent manuel.

Dfinition dun Il sagit dune reprsentation graphique de la structure du langage. Cette structure
diagramme est constitue dune suite de rgles, pouvant elles-mmes se fonder sur des rgles
syntaxique dj nonces.

Nom de la rgle
Squence
Pav 3

Pav 1 Pav 2 Pav 4

Option Pav 5
Itration
Alternative

Figure 7-1 Diagramme syntaxique

Le diagramme syntaxique se lit de gauche droite. En voici la structure :


S squence : suite de pavs
S option : branchement facultatif
S itration : rptition dun branchement
S alternative : branchement

Types de pavs Un pav peut tre un lment de base ou alors tre lui-mme compos dautres l-
ments de base. La figure suivante illustre les types de symboles reprsentant les
pavs :

Elment de base qui ne ncessite Elment compos qui est dcrit par
pas de description supplmentaire. dautres diagrammes syntaxiques.
Il sagit de caractres imprimables et
de caractres spciaux, de mots-cls
et didentificateurs prdfinis.
Les donnes relatives ces pavs
doivent tre reprises telles quelles.

SCL pour SIMATIC S7-300/400, Programmation de blocs


7-2 C79000-G7077-C522-01
Notions fondamentales dans SCL

Signification du Lorsque vous saisissez un texte source, vous devez tenir compte aussi bien des
format libre rgles syntaxiques que des rgles lexicales. Ces deux types de rgles sont reprsen-
ts en annexe B et C.
Le format libre signifie quentre les pavs, vous pouvez insrer des caractres de
mise en forme, comme par exemple des caractres despacement, des tabulateurs,
des caractres de changement de page ainsi que des commentaires.

Rgle lexicale Pour les rgles lexicales, comme par exemple la figure 7-2, le format nest pas
libre. Lorsque vous appliquez une rgle lexicale, vous devez reprendre les donnes
telles quelles.

Lettre

_ Lettre _ Lettre

Caractre de Caractre de
soulignement soulignement
Chiffre Chiffre

Figure 7-2 Exemple de rgle lexicale

Exemples dans lesquels la rgle reprsente est correctement applique :


R_REGULATEUR3
_A_TABLEAU
_100_3_3_10

Exemples dans lesquels la rgle nest pas correctement applique :


1_1AB
RR__20
*#AB

Rgle syntaxique Pour les rgles syntaxiques (voir, par exemple, figure 7-3), le format est libre.

Variable simple := Constante ;

Figure 7-3 Exemple de rgle syntaxique

Exemples dans lesquels la rgle reprsente est correctement applique :


VARIABLE_1 := 100; COMMUTATEUR:=FALSE;
VARIABLE_2 := 3.2;

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 7-3
Notions fondamentales dans SCL

7.2 Jeu de caractres de SCL

Caractres, Dans le jeu de caractres ASCII partiel, SCL utilise :


chiffres
S les lettres (minuscules et majuscules) de A Z,
S les chiffres arabes de 0 9,
S le caractre despacement (code ASCII 32) ainsi que tous les caractres de com-
mande (ASCII 0-31), y compris le caractre de fin de ligne (ASCII 13).

Autres caractres Les caractres suivants ont une signification bien prcise dans SCL :
+ * / = < > [ ] ( )
. , : ; $ # { }

Informations En annexe A, vous trouverez une liste dtaille de tous les caractres utilisables,
supplmentaires prcisant comment SCL les interprte.

SCL pour SIMATIC S7-300/400, Programmation de blocs


7-4 C79000-G7077-C522-01
Notions fondamentales dans SCL

7.3 Mots rservs

Dfinition Il sagit de mots-cls dont lusage est prdfini. Il ny a pas de distinction entre les
minuscules et les majuscules.

Mots-cls AND END_STRUCT


ANY END_VAR
ARRAY END_WHILE
BEGIN EXIT
BLOCK_DB FOR
BLOCK_FB FUNCTION
BLOCK_FC FUNCTION_BLOCK
BLOCK_SDB GOTO
BLOCK_SFB IF
BLOCK_SFC INT
BOOL LABEL
BY MOD
BYTE NIL
NOT
CASE OF
CHAR OR
CONST ORGANIZATION_BLOCK
CONTINUE POINTER
COUNTER REAL
DATA_BLOCK REPEAT
DATE RETURN
DATE_AND_TIME S5TIME
DINT STRING
DIV STRUCT
DO THEN
DT TIME
DWORD TIMER
ELSE TIME_OF_DAY
ELSIF TO
END_CASE TOD
END_CONST TYPE
END_DATA_BLOCK VAR
END_FOR VAR_TEMP
END_FUNCTION UNTIL
END_FUNCTION_BLOCK VAR_INPUT

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 7-5
Notions fondamentales dans SCL

Mots-cls, suite END_IF VAR_IN_OUT


END_LABEL VAR_OUTPUT
END_TYPE WHILE
END_ORGANIZATION_BLOCK WORD
END_REPEAT XOR
VOID

Autres noms EN
rservs ENO
OK
TRUE
FALSE
  


  1

SCL pour SIMATIC S7-300/400, Programmation de blocs


7-6 C79000-G7077-C522-01
Notions fondamentales dans SCL

7.4 Identificateurs dans SCL

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

Rgles Il peut sagir dune combinaison quelconque de lettres et de chiffres, le premier


caractre devant obligatoirement tre une lettre ou le caractre de soulignement.
Aussi bien les minuscules que les majuscules sont permises. La distinction entre les
majuscules et les minuscules nest pas faite (Anna et AnNa sont par exemple identi-
ques).
Diagramme syntaxique formel permettant de reprsenter un identificateur :

IDENTIFICATEUR

Lettre

_ Lettre _ Lettre

Caractre de Caractre de
soulignement soulignement
Chiffre Chiffre

Figure 7-4 Syntaxe : identificateur

Tenez compte des remarques suivantes :


S Nous vous recommandons de choisir des noms univoques et vocateurs qui
contribuent lintelligibilit du programme.
S Assurez-vous que le nom nappartient ni un mot-cl (comme, par exemple,
ceux du tableau 7-1) ni un identificateur standard.
S La longueur maximale dun identificateur est de 24 caractres.
S Vous devez dfinir les identificateurs de blocs (identificateur autres que ceux du
tableau 7-1) dans la table des mnmoniques de STEP 7 (des informations dtail-
les ce sujet sont donnes dans le guide de lutilisateur /231/)

Exemples Les noms didentificateurs suivants sont autoriss :


x y12 Somme Temprature
Nom Surface Rgulateur Tableau

Les noms didentificateurs suivants sont interdits pour les raisons indiques :
4me Le premier caractre doit tre une lettre ou le caractre de souligne-
ment.
Array ARRAY est un mot-cl et nest pas autoris.
S Valeur Les caractres despacement comptent comme des caractres et ne
sont pas autoriss.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 7-7
Notions fondamentales dans SCL

7.5 Identificateurs standard

Dfinition Une srie didentificateurs sont dj prdfinis dans SCL. Il sagit des identifica-
teurs standard suivants :
S mots-cls de blocs et
S identificateurs doprandes pour adresser les zones de mmoire de la CPU.

Mots-cls de blocs Ces identificateurs standard sont utiliss pour ladressage absolu de blocs.
Le tableau 7-1 donne les mots-cls de blocs classs daprs les abrviations
SIMATIC, avec les abrviations internationales CEI correspondantes.

Tableau 7-1 Mots-cls de blocs

Abrviations Abrviations Dsignation


SIMATIC CEI
DBx DBx Bloc de donnes (Data- Block)
FBx FBx Bloc fonctionnel (Function- Block)
FCx FCx Fonction (Function)
OBx OBx Bloc dorganisation (Organization- Block)
SDBx SDBx Bloc de donnes systme (System- Data- Block)
SFCx SFCx Fonction systme (System- Function)
SFBx SFBx Bloc fonctionnel systme (System- Function- Block)
Tx Tx Temporisation (Timer)
UDTx UDTx Type de donnes global ou utilisateur (Userdefined Data-
Type)
Zx Cx Compteur (Counter)
x nombre compris entre 0 et 32767
DB0 est rserv

IDENTIFICATEUR STANDARD

Motcl
Numro
de bloc

DB, FB, FC, OB, UDT

Figure 7-5 Syntaxe : identificateur standard

Voici des dsignations autorises :


FB10
DB100
T141

SCL pour SIMATIC S7-300/400, Programmation de blocs


7-8 C79000-G7077-C522-01
Notions fondamentales dans SCL

Identificateurs Un identificateur doprande permet dadresser la zone de mmoire correspondante


doprandes de la CPU, partir dun endroit quelconque du programme.
Le tableau suivant donne les identificateurs doprandes classs daprs les abrvia-
tions SIMATIC, avec les abrviations internationales CEI correspondantes.

Abrviations Abrviations Adressage Type de donnes


SIMATIC CEI
Ax,y Qx,y Sortie (par la mmoire image) Bit
ABx QBx Sortie (par la mmoire image) Octet
ADx QDx Sortie (par la mmoire image) Double mot
AWx QWx Sortie (par la mmoire image) Mot
AXx.y QXx.y Sortie (par la mmoire image) Bit
Dx.y 1 Dx.y 1 Bloc de donnes Bit
DBx 1 DBx 1 Bloc de donnes Octet
DDx 1 DDx 1 Bloc de donnes Double mot
DWx 1 DWx 1 Bloc de donnes Mot
DXx DXx Bloc de donnes Bit
Ex.y Ix.y Entre (par la mmoire image) Bit
EBx IBx Entre (par la mmoire image) Octet
EDx IDx Entre (par la mmoire image) Double mot
EWx IWx Entre (par la mmoire image) Mot
EXx.y IXx.y Entre (par la mmoire image) Bit
Mx.y Mx.y Mmento Bit
MBx MBx Mmento Octet
MDx MDx Mmento Double mot
MWx MWx Mmento Mot
MXx.y MXx.y Mmento Bit
PABx PQBx Sortie (priphrie directe) Octet
PADx PQDx Sortie (priphrie directe) Double mot
PAWx PQWx Sortie (priphrie directe) Mot
PEBx PIBx Entre (priphrie directe) Octet
PEDx PIDx Entre (priphrie directe) Double mot
PEWx PIWx Entre (priphrie directe) Mot
x = nombre compris entre 0 et 65535 (adresse doctet absolue)
y = nombre compris entre 0 et 7 (numro de bit)

Voici des exemples autoriss :


E1.0 MW10 PAW5 DB20.DW3

1 Ces identificateurs doprandes ne sont valables que sils sont indiqus avec le bloc de donnes correspondant

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 7-9
Notions fondamentales dans SCL

7.6 Nombres

Prsentation Il y a plusieurs manires dcrire un nombre dans SCL. Il peut comporter un signe,
une virgule dcimale (reprsente par un point) ou un exposant. Les rgles suivantes
sappliquent tous les nombres :
1. Un nombre ne doit comporter ni virgule, ni caractre despacement.
2. Le caractre de soulignement ( _ ) peut tre utilis comme sparateur optique.
3. Un nombre peut tre prcd soit dun plus ( + ), soit dun moins ( ). En labsence
de signe le nombre est considr comme tant positif.
4. Un nombre doit tre compris entre des valeurs minimales et maximales donnes.

Nombres entiers Un nombre entier ne comporte ni virgule dcimale, ni exposant. Il sagit simplement
dune simple suite de chiffres, pouvant tre signe. Dans SCL, il existe deux types
dentiers avec des plages de valeurs diffrentes, INT et DINT (voir chapitre 9).
Voici des nombres entiers autoriss :
0 1 +1 -1
743 -5280 600_00 -32_211

Les nombres suivants ne sont pas autoriss pour les raisons indiques :
123,456 Les virgules sont interdites.
36. La virgule dcimale (reprsente par un point) est interdite dans un
nombre entier.
10 20 30 Les caractres despacement ne sont pas autoriss.

Nombres entiers Dans SCL, vous pouvez reprsenter un nombre entier dans diffrents systmes de
sous forme de numration. Il faut alors le faire prcder dun mot-cl pour dsigner le systme
nombres binaires, dont il sagit. 2# dsigne le systme binaire, 8# dsigne le systme octal et 16# d-
octaux ou signe le systme hexadcimal.
hexadcimaux
Voici le nombre dcimal 15 correctement reprsent dans dautres systmes de
numration :
2#1111 8#17 16#F

Nombres rels 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 -0.2 827.602
50000.0 -0.000743 12.3 -315.0066

SCL pour SIMATIC S7-300/400, Programmation de blocs


7-10 C79000-G7077-C522-01
Notions fondamentales dans SCL

Les nombres rels suivants ne sont pas corrects pour les raisons indiques :
1. La virgule dcimale (point) doit figurer entre deux chiffres.
1,000.0 Les virgules ne sont pas autorises.
.3333 La virgule dcimale doit figurer entre deux chiffres.

Un exposant sert indiquer la position de la virgule dcimale. En labsence de cette


dernire, lon considre quelle se trouve droite du chiffre. Quant lexposant, il
doit sagir dun nombre entier positif ou ngatif. La base 10 est reprsente par la
lettre E.
Dans SCL, la grandeur 3 x 10 10 quivaut aux nombres rels suivants :
3.0E+10 3.0E10 3e+10 3E10
0.3E+11 0.3e11 30.0E+9 30e9

Les nombres rels suivants ne sont pas corrects pour les raisons indiques :
3.E+10 La virgule dcimale doit figurer entre deux chiffres.
8e2.3 Lexposant doit tre un nombre entier.
.333e-3 La virgule dcimale doit figurer entre deux chiffres.
30 E10 Les caractres despacement ne sont pas autoriss.

Chanes de Une chane de caractres est une suite de caractres (lettres, chiffres et caractres
caractres spciaux) entours dapostrophes. Les majuscules et les minuscules sont autorises.
Voici des chanes de caractres autorises :
ROUGE 75 000 Paris 270-32-3456
Fr19.95 Le rsultat correct est :
Pour saisir un caractre de mise en forme spcial, une apostrophe ( ) ou le carac-
tre $, faites le prcder du caractre $.
Texte source aprs compilation

SIGNAL$ROUGE$ SIGNALROUGE
50.0$$ 50.0$
VALEUR$P VALEUR nouvelle page
REG-$L REG- changement de ligne
REGULATEUR$R REGULATEUR retour chariot
ETAPE$T ETAPE tabulation
Pour indiquer un caractre non imprimable, entrez sa reprsentation en code hexad-
cimal $hh, o hh correspond la valeur hexadcimale du caractre ASCII.
Pour interrompre une chane de caractres (pour des commentaires qui ne doivent
tre ni imprims, ni affichs), SCL met votre disposition les caractres $> et $< .

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 7-11
Notions fondamentales dans SCL

7.7 Types de donnes

Gnralits Dans toute dclaration de variable, vous devez indiquer son type de donnes. Il
dtermine la plage des valeurs de la variable et dfinit les oprations quelle permet
de raliser.
Un type de donnes comprend :
S le type et la signification de llment de donnes,
S la plage autorise de llment de donnes,
S le nombre doprations que vous pouvez raliser avec un oprande de ce type de
donnes et
S la notation des donnes de ce type.

Types de donnes On distingue les types de donnes suivants.

Tableau 7-2 Types de donnes

Type de donnes Signification

simple Mis votre disposition de manire standard par SCL.

Vous pouvez le crer en combinant des types de donnes


complexe
simples.
Vous pouvez le dfinir spcialement pour votre application
utilisateur
et lui attribuer un nom quelconque.

type de paramtre Ils servent uniquement dclarer des paramtres.

Type de donnes Le type de donnes simple dfinit une structure de donnes que lon ne peut pas
simple dcomposer en units plus petites. Il rpond la norme DIN EN 1131-3.
Dans SCL, douze types de donnes simples sont prdfinis :
BOOL CHAR INT TIME
BYTE DINT DATE
WORD REAL TIME_OF_DAY
DWORD S5TIME

SCL pour SIMATIC S7-300/400, Programmation de blocs


7-12 C79000-G7077-C522-01
Notions fondamentales dans SCL

Type de donnes Le type de donnes complexe dfinit une structure de donnes qui peut tre dcom-
complexe pose en dautres types de donnes. SCL autorise les types de donnes complexes
suivants :
DATE_AND_TIME
STRING
ARRAY
STRUCT

Type de donnes Il sagit dun type de donnes global (UDT) que vous pouvez crer dans SCL pour
utilisateur votre application. Vous pouvez lutiliser dans la section de dclaration dun bloc ou bloc
de donnes sous sa dsignation UDTx (x correspond son numro) ou sous le mnmo-
nique que vous lui avez attribu.

Types de Outre les types de donnes simples, complexes et utilisateur, vous pouvez galement
paramtres utiliser des types de paramtres afin de dfinir des paramtres. SCL propose les
types de paramtres suivants :

TIMER BLOCK_FB POINTER ANY


COUNTER BLOCK_FC
BLOCK_DB
BLOCK_SDB

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 7-13
Notions fondamentales dans SCL

7.8 Variables

Dclaration de On appelle variable, un identificateur dont la valeur peut tre modifie durant lex-
variables cution 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 varia-
ble permet de dfinir un identificateur comme variable (et non pas comme constante
etc.) et den spcifier le type en laffectant au type de donnes.
On distingue les variables suivantes :
S donnes locales,
S donnes utilisateur globales et
S variables prdfinies (zones de mmoire dune CPU).

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

Tableau 7-3 Donnes locales dun bloc

Variable Signification
Variable statique Une variable statique est une variable locale dont la valeur reste
inchange tout au long de lexcution du bloc (mmoire du bloc). Elle
sert enregistrer les valeurs dun bloc fonctionnel.
Variable temporaire Une variable temporaire appartient localement un bloc de code et
noccupe aucune zone de mmoire statique. Sa valeur ne reste conser-
ve que durant une excution du bloc. Il nest pas possible dy acc-
der en dehors du bloc dans lequel elle a t dclare.
Paramtre de bloc Il sagit dun paramtre formel de bloc fonctionnel ou de fonction.
Cest une variable locale qui sert transmettre les paramtres actuels
indiqus lappel du bloc.

SCL pour SIMATIC S7-300/400, Programmation de blocs


7-14 C79000-G7077-C522-01
Notions fondamentales dans SCL

Donnes Les donnes utilisateur globales sont des donnes ou zones de donnes que vous
utilisateur globales pouvez utiliser partir dun endroit quelconque du programme. Vous devez cet
effet crer des blocs de donnes (DB).
Lorsque vous crez un DB, vous dfinissez sa structure en la dclarant. Vous pouvez
cependant galement utiliser un type de donnes utilisateur (UDT) au lieu de dcla-
rer la structure du DB. Lordre dans lequel vous indiquez la composante de la struc-
ture dtermine celui des donnes dans le DB.

Zones de mmoire Vous pouvez adresser les zones de mmoire dune CPU directement partir dun
dune CPU endroit quelconque du programme, en utilisant des identificateurs doprandes (voir
paragraphe 7.5) quil est inutile de dclarer.
Vous avez en outre toujours la possibilit dadresser ces zones de donnes de faon
symbolique. Dans ce cas, vous leur affectez des mnmoniques dans STEP 7, avec
une table des mnmoniques. Vous trouverez des informations complmentaires ce
sujet dans le guide de lutilisateur /231/.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 7-15
Notions fondamentales dans SCL

7.9 Expressions

Prsentation Une expression reprsente une valeur qui sera calcule durant la compilation ou
lexcution du programme. Elle comporte un ou plusieurs oprandes combins par
des oprateurs, dont lordre dexcution dpend de leur priorit. Lutilisation de
parenthses permet de modifier la priorit. SCL distingue :
S des expressions arithmtiques,
S des expressions logiques,
S des expressions de comparaison.

Expression En voici un exemple typique :


arithmtique
(b*b-4*a*c)/(2*a)
Les identificateurs a et b ainsi que les nombres 4 et 2 sont les oprandes ; les sym-
boles *, - et / (multiplication, soustraction et division) sont les oprateurs. Lensem-
ble de lexpression reprsente un nombre.

Expression de Il sagit dune expression logique dont le rsultat peut tre vrai ou faux. En voici un
comparaison exemple :
Valeur_consigne < 100.0
Dans cet exemple, Valeur_consigne est une variable relle et le symbole < un
oprateur de comparaison. La valeur de lexpression est vraie si Valeur_consi-
gne est infrieure 100.0, sinon elle est fausse.

Expression En voici un exemple typique :


logique
a AND NOT b
Les identificateurs a et b sont les oprandes ; les mots-cls AND et NOT sont les
oprateurs logiques. Lensemble de lexpression reprsente un lment binaire.

SCL pour SIMATIC S7-300/400, Programmation de blocs


7-16 C79000-G7077-C522-01
Notions fondamentales dans SCL

7.10 Instructions

Prsentation Dans SCL, une instruction dsigne une action excutable dans la section des instruc-
tions dun bloc de code. Il en existe trois types principaux :
1. Affectations de valeurs (affectation dune expression une variable).
2. Instructions de contrle (itration ou branchement dinstructions).
3. Traitements de sous-programmes (appels ou branchements de blocs de code).

Affectation de Voici un exemple typique daffectation de valeur :


valeur
Valeur_consigne := 0.99*Ancienne_valeur_consigne
Dans cet exemple, on a comme hypothse que Valeur_consigne et
Ancienne_valeur_consigne sont des variables relles. Linstruction daffec-
tation multiplie la valeur Ancienne_valeur_consigne par 0.99 et en affecte
le produit la variable Valeur_consigne. Le symbole daffectation est :=.

Instruction de En voici un exemple typique :


contrle
FOR Compteur :=1 TO 20 DO
LISTE[Compteur] := VALEUR+Compteur;
END_FOR;
Dans cet exemple, laffectation est ralise 20 fois. A chaque fois, la nouvelle
valeur calcule est inscrite dans la cellule immdiatement au-dessus du tableau
LISTE.

Excution de Lorsque vous indiquez une dsignation de fonction (FC) ou de bloc fonctionnel
sous-programmes (FB), le bloc de code ayant t dclar avec cet identificateur est appel1. Si des
paramtres formels ont t dclars dans la dclaration du bloc de code, vous pou-
vez leur affecter des oprandes effectifs lorsque vous les appelez.
Tous les paramtres qui figurent dans les blocs de dclaration
VAR_INPUT, VAR_OUTPUT et VAR_IN_OUT
dun bloc de code sont appels paramtres formels. On appelle par contre param-
tres effectifs, les paramtres correspondants appels dans la section des instructions.
La transmission des paramtres effectifs aux paramtres formels fait partie de lap-
pel.
Voici un exemple typique de traitement de sous-programme :
FC31(X:=5, S1:=Somme_chiffres);

1 Pour les FC, laffectation des paramtres effectifs est indispensable, pour les FB elle est optionnelle.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 7-17
Notions fondamentales dans SCL

7.11 Blocs SCL

Prsentation Dans une source SCL, vous pouvez programmer de 1 n blocs comme texte source.

FUNCTION_BLOCK FB10
Fichier source SCL
Motcl A CONST
Constante:INT;
Section de dclaration END_CONST
VAR
VALEUR1,VALEUR2:REAL;
END_VAR
D
D Section des instructions BEGIN
D VALEUR1:=100;
D :
Motcl B
END_FUNCTION_BLOCK

Figure 7-6 Structure dun fichier source SCL

Types de blocs De part leur fonction, leur structure ou leur utilisation, les blocs STEP 7 sont des
sections limites dun programme utilisateur. SCL vous permet de programmer les
blocs suivants :

OB FC FB DB UDT

Blocs STEP 7

Blocs prdfinis Vous ntes pas obligs de programmer vous-mme chaque fonction. Il en existe
galement qui sont prdfinies. Elles se trouvent dans le systme dexploitation de
lunit centrale ou dans des bibliothques (S7lib) du logiciel de base STEP 7. Vous
pouvez les utiliser pour programmer des fonctions de communication, par exemple.

Structure dun Tout bloc comporte les sections suivantes :


bloc SCL
S en-tte/fin de bloc (mot-cl correspond au type de bloc),
S section de dclaration,
S section des instructions (section daffectation pour les blocs de donnes).

SCL pour SIMATIC S7-300/400, Programmation de blocs


7-18 C79000-G7077-C522-01
Notions fondamentales dans SCL

Section de La section de dclaration sert noncer les dfinitions qui constitueront la base de
dclaration la section des instructions : dfinition des constantes, dclaration des variables et
des paramtres, par exemple.

Section des La section des instructions est introduite par le mot-cl BEGIN est se termine par un
instructions identificateur standard de fin de bloc END_xxx (voir paragraphe 8.2 ).
Chaque instruction se termine par un point-virgule ( ; ) et peut tre prcde dun
repre de saut (tiquette) optionnel. La syntaxe de la section des instructions et
dune instruction individuelle est donne au chapitre 13.

Section des instructions

IDENTIFICATEUR : Instruction ;
Repre de saut

Figure 7-7 Syntaxe : section des instruction

Voici un exemple de section des instructions de FB :

: //Fin de la section de dclaration


:
BEGIN //Dbut de la section des instructions
X := X+1;
REPERE1 Y := Y+10;
Z := X*Y;
:
GOTO REPERE1
REPEREn; //Fin section des instructions
END_FUNCTION_BLOCK

Dans la section des instructions dun bloc de donnes, vous pouvez affecter des
valeurs par dfaut aux donnes du DB. Cest la raison pour laquelle, la section des
instructions dun DB sera appele section daffectation dans les chapitres suivants.

Programme S7 Une fois compils, les blocs crs sont enregistrs dans le classeur des blocs du pro-
gramme S7 correspondant, do vous devez les charger dans la CPU. Vous trouverez
des informations ce sujet dans le guide de lutilisateur /231/ .

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 7-19
Notions fondamentales dans SCL

7.12 Commentaires

Prsentation Les commentaires permettent de documenter un bloc SCL afin de le rendre plus
intelligible. Une fois compils, ils ninterviennent daucune faon dans lexcution
du programme. Il existe deux types de commentaires :
S la ligne de commentaire et
S le bloc de commentaire

Ligne de Il sagit dun commentaire introduit par // qui stend jusqu la fin de la ligne. Sa
commentaire longueur est limite 253 caractres au maximum, y compris les caractres dintro-
duction de commentaire //. Il peut tre reprsent par le diagramme syntaxique sui-
vant :

Ligne de commentaire

Caractre
// CR
imprimable

Retour chariot (carriage return)

Figure 7-8 Syntaxe : ligne de commentaire

La liste de tous les caractres imprimables figure dans le tableau A-2 lannexe A.
La paire de caractres (* et *) est insignifiante dans une ligne de commentaire.

Bloc de Commentaire pouvant stendre sur plusieurs lignes, introduit par (* et se termi-
commentaire nant par *). Le chevauchement des blocs de commantaire est autoris de manire
standard. Toutefois, vous avez la possibilit de modifier ce paramtre et dinterdire
le chevauchement des blocs de commantaire.

Bloc de commentaire

(* Caractre *)

Figure 7-9 Syntaxe : bloc de commentaire

La liste des caractres autoriss figure dans le tableau A-2 lannexe A.

SCL pour SIMATIC S7-300/400, Programmation de blocs


7-20 C79000-G7077-C522-01
Notions fondamentales dans SCL

Rgles Rgles de notation :


S Les blocs de commentaire doivent tre introduits dans les blocs de donnes
comme des lignes de commentaire. Il faut les faire prcder galement de deux
barres obliques //.
S De manire standard, limbrication de commentaires est permise. Ce paramtre
du compilateur peut toutefois tre modifi par loption Commentaires imbri-
qus. Choisissez cet effet la commande Outils Paramtres, puis dsactivez
cette option dans longlet Compilateur de la bote de dialogue suivante.
S Un commentaire ne doit interrompre ni un mnmonique, ni une constante. Lin-
terruption de chanes de caractre est cependant permise.
Voici un exemple de commentaire erron :
FUNCTION_(* adaptation *)BLOCK FB10

Exemple Lexemple suivant comporte deux blocs de commentaire et une ligne de commen-
dintgration de taire :
commentaires

FUNCTION_BLOCK FB 15
(* Ceci est un bloc de commentaire pouvant stendre
sur plusieurs lignes*)
VAR
COMMUTATEUR: INT; // Ligne de commentaire
END_VAR;
BEGIN
(* Affecter une valeur la variable COMMUTATEUR *)
COMMUTATEUR:= 3;
END_FUNCTION_BLOCK

Figure 7-10 Exemple de commentaire

Nota
Les lignes de commentaire suivant immdiatement la section de dclaration dun bloc
de donnes sont conserves lors dune dcompilation en programme LIST.
Ces commentaires se trouvent dans LIST dans la partie de linterface, cest--dire dans
la partie suprieure de la fentre (voir galement /231/).

Dans lexemple de la figure 7-10, la premire ligne de commentaire est donc


conserve.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 7-21
Notions fondamentales dans SCL

SCL pour SIMATIC S7-300/400, Programmation de blocs


7-22 C79000-G7077-C522-01
Structure dun fichier source SCL 8
Prsentation Un fichier source SCL contient principalement du texte au kilomtre. Vous pouvez y
programmer plusieurs blocs, savoir des OB, FB, FC, DB ou UDT.
Le prsent chapitre dcrit la structure externe des blocs, leur structure interne tant
dcrite dans les chapitres suivants.

Structure du Paragraphe Thme Page


chapitre 8.1 Structure 8-2
8.2 Dbut et fin de bloc 8-4
8.3 Attributs de blocs 8-5
8.4 Section de dclaration 8-7
8.5 Section des instructions 8-10
8.6 Instruction 8-11
8.7 Structure dun bloc fonctionnel (FB) 8-12
8.8 Structure dune fonction (FC) 8-14
8.9 Structure dun bloc dorganisation (OB) 8-16
8.10 Structure dun bloc de donnes (DB) 8-17
8.11 Structure dun type de donnes utilisateur (UDT) 8-19

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 8-1
Structure dun fichier source SCL

8.1 Structure

Prsentation Un fichier source SCL contient le texte source de 1 n blocs (FB, FC, OB, DB ou UDT).
Afin de pouvoir compiler votre fichier source SCL en blocs individuels, vous devez
tenir compte de la structure et des rgles syntaxiques propres ces blocs.

Unit de programme SCL

Bloc dorganisation

Fonction

Bloc fonctionnel

Bloc de donnes

Type de donnes utilisateur

Figure 8-1 Syntaxe : unit de programme SCL

Ordre des blocs Lorsque vous crivez le fichier source, vous devez tenir compte des rgles suivantes
quant lordre des blocs :
Un bloc appel doit prcder le bloc appelant.
Ceci signifie que :
S Un type de donnes utilisateur (UDT) prcde les blocs qui lutilisent.
S Un bloc de donnes avec un type de donnes utilisateur (UDT) affect suit cet
UDT.
S Un bloc de donnes auquel tout bloc de code peut accder prcde le bloc qui
lappelle.
S Un bloc de donnes avec un bloc fonctionnel affect suit ce bloc fonctionnel.
S LOB1 qui appelle dautres blocs doit tre le dernier bloc. Les blocs appels par
dautres blocs, eux-mmes appels par lOB1 doivent les prcder.
Les blocs que vous appelez dans un fichier source sans pour autant les programmer
dans le mme fichier source doivent se trouver dans le programme utilisateur corres-
pondant au moment de la compilation du fichier.

SCL pour SIMATIC S7-300/400, Programmation de blocs


8-2 C79000-G7077-C522-01
Structure dun fichier source SCL

affect
UDT

appelle
DB

appelle
DB avec UDT

affect
appelle
Ordre dans le fichier source FB 3

DB dinstance du FB 3

appelle
FC 5

OB 1

Figure 8-2 Structure de bloc dun fichier source (exemple)

Structure gnrale Le code source dun bloc comprend en principe les sections suivantes :
des blocs
S dbut de bloc avec dsignation du bloc (absolue ou symbolique),
S attributs de bloc (facultatif),
S section de dclaration (diffre selon le type de bloc),
S section dinstructions dans les blocs de code ou
affectation de valeurs actuelles dans les blocs de donnes (facultatif).
S fin de bloc.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 8-3
Structure dun fichier source SCL

8.2 Dbut et fin de bloc

Prsentation Le texte source de chaque bloc est introduit selon le type de bloc par un identifica-
teur standard de dbut de bloc et la dsignation de bloc ; il est boucl par un identi-
ficateur standard de fin de bloc (voir tableau 8-1).
Tableau 8-1 Identificateurs standard pour le dbut et la fin de bloc

Syntaxe Syntaxe Type de bloc Dsignation

ORGANIZATION_BLOCK nom_ob
: OB Bloc dorganisation

END_ORGANIZATION_BLOCK

FUNCTION nom_fc:type_fonction
: FC Fonction

END_FUNCTION

FUNCTION_BLOCK nom_fb
: FB Bloc fonctionnel

END_FUNCTION_BLOCK

DATA_BLOCK nom_db
: DB Bloc de donnes

END_DATA_BLOCK

TYPE nom_udt
: UDT Type de donnes utilisateur
END_TYPE

Dsignation dun Dans le tableau 8-1, nom_xx correspond la dsignation des blocs. Elle rpond aux
bloc rgles syntaxiques suivantes :

Mot-cl Numro
de bloc
DB, FB, FC, OB, UDT

IDENTIFICATEUR

Mnmonique

Figure 8-3 Syntaxe : dsignation dun bloc

Vous trouverez des informations supplmentaires au paragraphe 7.5. Vous devez


dfinir les identificateurs ou mnmoniques dans la table des mnmoniques de
STEP 7 (voir /231/).

Exemple FUNCTION_BLOCK FB10


FUNCTION_BLOCK Bloc_rgulateur
FUNCTION_BLOCK Rgulateur.B1&U2

SCL pour SIMATIC S7-300/400, Programmation de blocs


8-4 C79000-G7077-C522-01
Structure dun fichier source SCL

8.3 Attributs de bloc

Dfinition Il peut sagir :


S dattributs de blocs,
S dattributs systme de blocs.

Attributs de blocs Vous pouvez indiquer le titre dun bloc, sa version, sa protection, son auteur, son
nom et sa famille en utilisant des mots-cls.

Titre
Caractre
TITLE =
imprimable

Version
Version : NOMBRE DECIMAL . NOMBRE DECIMAL

Protection de bloc
KNOW_HOW_PROTECT

Auteur 8 caractres max.


AUTHOR : IDENTIFICATEUR

Nom 8 caractres max.


NAME : IDENTIFICATEUR

Famille de blocs 8 caractres max.


FAMILY : IDENTIFICATEUR

Figure 8-4 Syntyxe : attributs de bloc

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 8-5
Structure dun fichier source SCL

Attributs systme Vous pouvez en outre affecter des attributs systme aux blocs, par exemple pour la
de blocs configuration de systmes de conduite.

Attributs systme de blocs


24 caractres au maximum
{ IDENTIFICATEUR := caractre }

imprimable

Figure 8-5 Syntyxe : attributs systme de bloc

Le tableau 8-2 indique les attributs systme que vous pouvez affecter aux blocs dans
SCL.

Tableau 8-2 Attributs systme de blocs

Attribut Valeur Attribut affect lorsque Type de bloc autoris


S7_m_c true, false le bloc doit tre command et contrl depuis FB
un dispositif de contrle-commande.
S7_tasklist taskname1, le bloc doit tre appel non seulement dans des FB, FC
taskname2, etc. blocs dorganisation cycliques, mais aussi dans
dautres OB (par exemple OB derreur ou de
dmarrage).
S7_block- big, small le bloc doit tre reprsent en grand ou petit for- FB, FC
view mat sur un dispositif de contrle-commande.

Affectation Vous affectez les attributs aprs la dsignation du bloc et avant la section de dcla-
dattributs ration.

FUNCTION_BLOCK FB10
Section de dclaration TITLE=Moyenne
VERSION:2.1
KNOW_HOW_PROTECT
Section des instructions
AUTHOR:AUT 1
NAME:B12
FAMILY:ANALOGIQUE
{s7_m_c:=true ;
S7_blockview:=big}

Figure 8-6 Affectation dattributs

SCL pour SIMATIC S7-300/400, Programmation de blocs


8-6 C79000-G7077-C522-01
Structure dun fichier source SCL

8.4 Section de dclaration

Prsentation La section de dclaration sert dfinir les variables locales et globales, les param-
tres, les constantes et les repres de saut.
S Dans la section de dclaration dun bloc de code, vous dfinissez les variables
locales, les paramtres, les constantes et les repres de saut qui ne doivent tre
valables que pour ce bloc de code.
S Dans la section de dclaration dun DB, vous dfinissez les donnes globales
auxquelles tout bloc de code doit pouvoir accder.
S Dans la section de dclaration dun UDT, vous dfinissez un type de donnes
utilisateur.

Structure La section de dclaration se divise elle-mme en plusieurs sections de dclaration


caractrises chacune par une paire de mots-cls. Elles contiennent une liste de
dclaration pour des donnes de mme type, comme par exemple des constantes,
des repres de saut, des donnes statiques et des donnes temporaires. Chacune
dentre elles doit tre unique et ne peut pas tre utilise dans chaque type de bloc,
comme le montre le tableau 8-3. Lordre des blocs est quelconque.

Tableau 8-3 Sections de dclaration possibles

Sections de Donnes Syntaxe FB FC OB DB UDT


dclaration CONST
Constantes Liste de dclaration X X X
END_CONST
LABEL
Repres de saut Liste de dclaration X X X
END_LABEL
VAR_TEMP
Variables temporaires Liste de dclaration X X X
END_VAR
VAR
Variables statiques Liste de dclaration X X2 X1 X1
END_VAR
VAR_INPUT
Paramtres dentre Liste de dclaration X X
END_VAR
VAR_OUTPUT
Paramtres de sortie Liste de dclaration X X
END_VAR
VAR_IN_OUT
Paramtres dentre/sortie Liste de dclaration X X
END_VAR
Liste de dclaration : liste des identificateurs du type dclarer.

1 Pour les DB et UDT, les mots-cls VAR et END_VAR sont remplacs par STRUCT et
END_STRUCT.

2 La dclaration de variables entre les mots-cls VAR et END_VAR est autorise pour les fonc-
tions, cependant lors de la compilation, les dclarations sont dcales dans la zone temporaire.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 8-7
Structure dun fichier source SCL

Attributs systme Vous pouvez en outre affecter des attributs systme aux paramtres dentre, de sor-
de paramtres tie ou dentre/sortie, par exemple pour la configuration de messages ou liaisons.

Attributs systme de paramtres

24 caractres au maximum
caractre }
{ IDENTIFICATEUR :=
imprimable

Figure 8-7 Syntyxe : attributs systme de paramtres

Le tableau 8-4 indique les attributs systme que vous pouvez affecter aux
paramtres.

Tableau 8-4 Attributs systme de paramtres

Attribut Valeur Attribut affect lorsque Type de dclaration


autoris
S7_server connection, le paramtre est significatif pour la configuration IN
alarm_archiv de liaisons ou de messages. Ce paramtre contient
le numro de liaison ou de message.
S7_a_type alarm, vous dfinissez le type du bloc de message appel IN, uniquement dans FB
alarm_8, dans la section dinstructions (condition : lattribut
alarm_8p, S7_server:=alarm_archiv est galement attribu).
alarm_s,
notify,
ar_send
S7_co pbkl, pbk, vous dfinissez le type de la liaison configurer IN
ptpl, obkl, fdl, (condition : lattribut S7_server:=connection est
iso, pbks, galement attribu).
obkv
S7_m_c true, false le paramtre doit tre command et contrl IN/OUT/ IN_OUT, uni-
depuis un dispositif de contrle-commande. quement dans FB
S7_shortcut 2 beliebige des raccourcis doivent tre affects au paramtre IN/OUT/ IN_OUT, uni-
Zeichen, z. B. pour lexploitation de valeurs analogiques. quement dans FB
W, Y
S7_unit Einheit, des units doivent tre affectes au paramtre pour IN/OUT/ IN_OUT, uni-
z. B. Liter lexploitation de valeurs analogiques. quement dans FB
S7_string_0 16 beliebige du texte doit tre affect au paramtre pour lex- IN/OUT/ IN_OUT, uni-
Zeichen, z. B. ploitation de valeurs binaires. quement dans FB, FC
AUF
S7_string_1 16 beliebige du texte doit tre affect au paramtre pour lex- IN/OUT/ IN_OUT, uni-
Zeichen, z. B. ploitation de valeurs binaires. quement dans FB, FC
ZU
S7_visible true, false le paramtre doit tre affich dans CFC ou pas. IN/OUT/IN_OUT, uni-
quement dans FB, FC
S7_link true, false le paramtre doit pouvoir tre connect dans CFC IN/OUT/IN_OUT, uni-
ou pas. quement dans FB, FC

SCL pour SIMATIC S7-300/400, Programmation de blocs


8-8 C79000-G7077-C522-01
Structure dun fichier source SCL

Tableau 8-5 Attributs systme de paramtres

Attribut Valeur Attribut affect lorsque Type de dclaration


autoris
S7_dyna- true, false le paramtre doit pouvoir tre dynamis dans CFC IN/IN_OUT, uniquement
mic lors du test ou pas dans FB, FC
S7_param true, false le paramtre doit pouvoir tre paramtr dans IN/IN_OUT, uniquement
CFC ou pas. dans FB, FC

Affectation Vous affectez les attributs systme de paramtres dans les blocs de dclaration
dattributs paramtres dentre, paramtres de sortie ou paramtres dentre/sortie.
Exemple :
VAR_INPUT
in1 {S7_server:=alarm_archiv;
S7_a_type:=ar_send}:DWORD;
END_VAR

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 8-9
Structure dun fichier source SCL

8.5 Section des instructions

Prsentation La section des instructions contient les instructions1 :


S qui doivent tre excutes aprs lappel dun bloc de code. Ces instructions ser-
vent traiter des donnes et des adresses.
S qui servent dfinir des valeurs par dfaut individuelles dans des blocs de don-
nes.

La figure 8-8 illustre la syntaxe de la section des instructions. Elle consiste en une
suite des instructions individuelles, chacune pouvant tre prcde dun repre de
saut optionnel (voir paragraphe 11.6) qui correspond au branchement dune instruc-
tion de saut.

Section des instructions

IDENTIFICATEUR : Instruction ;
Repre de saut

Figure 8-8 Syntaxe : section des instructions

Voici des exemples dinstructions autorises :


BEGIN
VALEUR_INIT :=0;
VALEUR_FIN :=200;
:
ENREGISTRER: RESULTAT :=VALEUR_CONSIGNE;
:

Important Lorsque vous formulez une instruction, assurez-vous que :


S la section des instructions commence facultativement par le mot-cl BEGIN,
S la section des instructions se termine par le mot-cl de fin de bloc,
S chaque instruction se termine par un point-virgule,
S tous les identificateurs utiliss dans la section des instructions ont t dclars.

1 Le terme instruction dsigne une structure de dclaration de fonction excutable.

SCL pour SIMATIC S7-300/400, Programmation de blocs


8-10 C79000-G7077-C522-01
Structure dun fichier source SCL

8.6 Instruction

Prsentation Chaque instruction comporte des :


S affectations de valeurs permettant dattribuer une variable, soit une valeur,
soit le rsultat dune expression ou encore la valeur dune autre variable.
S instructions de contrle servant rpter des instructions ou groupes dinstruc-
tions dans un programme ou encore y raliser des branchements.
S excutions de sous-programmes destins appeler des fonctions et blocs fonc-
tionnels.

Instruction

Affectation de valeur

Excution de
sous-programme

Instruction de contrle

Figure 8-9 Syntaxe : instruction

Les lments ncessaires la formulation de ces instructions sont des expressions,


des oprateurs et des oprandes. Ils seront traits dans les chapitres suivants.

Exemples Les exemples suivants illustrent les divers types dinstructions :

// Exemple daffectation de valeur


VAL_MES:= 0 ;

// Exemple dexcution dun sous-programme


FB1.DB11(VALIDATION:= 10) ;

// Exemple dinstruction de contrle


WHILE COMPTEUR < 10 DO... ;
:
END_WHILE

Exemple 8-1 Instructions

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 8-11
Structure dun fichier source SCL

8.7 Structure dun bloc fonctionnel (FB)

Prsentation Un bloc fonctionnel (FB) est un bloc de code qui contient une partie dun pro-
gramme et qui dispose dune zone de mmoire qui lui est affecte. A chaque fois
que vous appelez un FB, vous devez lui affecter un DB dinstance (voir chapitre 10)
dont vous dfinissez la structure dans la section de dclaration du FB.

Bloc fonctionnel

DESIGNATION Section de d-
FUNCTION_BLOCK DU FB claration du FB

BEGIN Section des instructions END_FUNCTION_BLOCK

Figure 8-10 Syntaxe : bloc fonctionnel (FB)

Dsignation du FB Comme dsignation du FB, indiquez aprs le mot-cl


FUNCTION_BLOCK
le mot-cl FB, suivi du numro de bloc ou du mnmonique du FB.
Exemples :
FUNCTION_BLOCK FB10
FUNCTION_BLOCK MOTEUR_1

Section de La section de dclaration du FB permet de dclarer les donnes spcifiques au bloc.


dclaration du FB Les sections de dclaration autorises sont indiques dans le paragraphe 8.4. Dans la
section de dclaration, vous devez galement dfinir la structure du DB dinstance
affect au FB.
Exemples :
CONST
CONSTANTE:=5;
END_CONST

VAR
VALEUR1,VALEUR2,VALEUR3:INT;
END_VAR

SCL pour SIMATIC S7-300/400, Programmation de blocs


8-12 C79000-G7077-C522-01
Structure dun fichier source SCL

Exemple Lexemple 8-2 reprsente le code source dun bloc fonctionnel. Des valeurs initiales
ont t affectes aux paramtres dentre et de sortie (V1, V2).

FUNCTION_BLOCK FB11
VAR_INPUT
V1: INT:= 7;
END_VAR
VAR_OUTPUT
V2: REAL;
END_VAR
VAR
PASSAGE_1:INT;
END_VAR
BEGIN
IF V1 = 7 THEN
PASSAGE_1:= V1;
V2:= FC2 (VALEURTEST:= PASSAGE_1);
//Appel de la fonction FC2 avec
//affectation des paramtres par la
//variable statique PASSAGE_1
END_IF;
END_FUNCTION_BLOCK

Exemple 8-2 Exemple dun bloc fonctionnel (FB)

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 8-13
Structure dun fichier source SCL

8.8 Structure dune fonction (FC)

Prsentation Une fonction (FC) est un bloc de code auquel aucune zone de mmoire individuelle
nest affecte. Elle na donc pas besoin de DB dinstance. Contrairement un FB,
une fonction peut fournir un rsultat (valeur en retour) au point appelant. Elle peut
de ce fait tre utilise comme une variable dans une expression. Les fonctions de
type VOID ne donnent pas de valeur en retour.

Fonction
VOID

DESIGNATION Spcification du
FUNCTION DE LA FC : type de donnes

Section de dcla-
BEGIN Section des instructions END_FUNCTION
ration de la FC

Figure 8-11 Syntaxe : fonction (FC)

Dsignation de Comme dsignation de la FC, indiquez aprs le mot-cl


la FC
FUNCTION
le mot-cl FC, suivi du numro de bloc ou du mnmonique de la FC.
Exemples :
FUNCTION FC100
FUNCTION REGIME

Spcification du Indiquez le type de donnes de la valeur en retour. Tous les types de donnes dcrits
type de donnes au chapitre 9 sont autoriss, lexception des types de donnes STRUCT et
ARRAY. Lindication du type de donnes savre inutile lorsque vous renoncez la
valeur en retour en utilisant lattribut VOID.

Section de Les sections de dclaration autorises sont indiques au paragraphe 8.4.


dclaration de la
FC

Section des Dans la section des instructions, vous devez affecter le rsultat de la fonction au
instructions nom de la fonction. Voici un exemple dinstruction correcte pour la fonction FC31 :
FC31:= VALEUR;

SCL pour SIMATIC S7-300/400, Programmation de blocs


8-14 C79000-G7077-C522-01
Structure dun fichier source SCL

Exemple Lexemple reprsente une fonction avec les paramtres dentre formels x1, x2, y1,
y2, un paramtre de sortie formel Q2 et une valeur en retour FC11.
La signification des paramtres formels est dcrite au chapitre 10.

FUNCTION FC11: REAL


VAR_INPUT
x1: REAL;
x2: REAL;
y1: REAL;
y2: REAL;
END_VAR
VAR_OUTPUT
Q2: REAL;
END_VAR
BEGIN // Section des instructions
FC11:= SQRT // Affectation de la
// valeur de la fonction
( (x2 - x1)**2 + (y2 - y1) **2 );
Q2:= x1;
END_FUNCTION

Exemple 8-3 Exemple dune fonction (FC)

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 8-15
Structure dun fichier source SCL

8.9 Structure dun bloc dorganisation (OB)

Prsentation Un bloc dorganisation (OB) fait partie du programme utilisateur, comme un FB ou


une FC. Le systme dexploitation lappelle cycliquement ou lors dvnements
donns. Il constitue linterface entre le programme utilisateur et le systme dexploi-
tation.

Bloc dorganisation

DESIGNATION Section de dclaration de lOB


ORGANIZATION_BLOCK DE LOB

BEGIN Section des instructions END_ORGANIZATION_BLOCK

Figure 8-12 Syntaxe : bloc dorganisation (OB)

Dsignation de Comme dsignation de lOB, indiquez aprs le mot-cl


lOB
ORANIZATION_BLOCK

le mot-cl OB, suivi du numro de bloc ou du mnmon

Exemples :

ique de lOB.

ORGANIZATION_BLOCK OB14
ORGANIZATION_BLOCK ALARME_HORAIRE

Section de Lexcution de chaque OB requiert en principe 20 octets de donnes locales pour


dclaration de lOB une information de dpart. Vous pouvez dclarer des variables temporaires suppl-
mentaire dans lOB, si cest ncessaire pour le programme. La description des
20 octets de donnes locales est faite dans le manuel /235/.
Exemple
ORGANIZATION_BLOCK OB14

//ALARME HORAIRE
VAR_TEMP
HEADER:ARRAY [1..20] OF BYTE;// 20 octets pour
// linformation de dpart
:
:
END_VAR
Les autres sections de dclaration autorises pour les OB sont indiques au paragra-
phe 8.4.

SCL pour SIMATIC S7-300/400, Programmation de blocs


8-16 C79000-G7077-C522-01
Structure dun fichier source SCL

8.10 Structure dun bloc de donnes (DB)

Description Un bloc de donnes (DB) contient des donnes utilisateur globales, auxquelles tous les
blocs dun programme peuvent accder. Tout(e) FB, FC ou OB peut lire ou crire dans
ces DB. La structure des blocs de donnes (DB dinstance) qui ne sont affects qu cer-
tains FB est donne au chapitre 12.

Bloc de donnes

DESIGNATION
DATA_BLOCK DU DB Section de dclaration du DB

BEGIN Section daffectation du DB END_DATA_BLOCK

Figure 8-13 Syntaxe : bloc de donnes (DB)

Dsignation du DB Comme dsignation du DB, indiquez aprs le mot-cl


DATA_BLOCK
le mot-cl DB, suivi du numro de bloc ou du mnmonique du DB.
Exemple
DATA_BLOCK DB20
DATA_BLOCK ETENDUE_MESURE

Section de Dans la section de dclaration du DB, vous dfinissez la structure des donnes du
dclaration du DB DB. Vous pouvez affecter le type de donnes structure (STRUCT) ou le type de don-
nes utilisateur (UDT) une variable du DB.

Section de dclaration du DB
DESIGNATION
DE LUDT

Spcification du type
de donnes STRUCT

Figure 8-14 Syntaxe : section de dclaration du DB

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

BEGIN //Dbut de la section des instructions


:
END_DATA_BLOCK //Fin du bloc de donnes

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 8-17
Structure dun fichier source SCL

Section Vous pouvez affecter des valeurs spcifiques pour votre application particulire aux
daffectation du donnes que vous avez dclares dans la section de dclaration. La section daffec-
DB tation commence par le mot-cl :
BEGIN
puis comprend une suite daffectations de valeurs avec la syntaxe suivante :

Section daffectation du DB

Variable simple := Constante ;

Figure 8-15 Syntaxe : section daffectation dun DB

Nota
Il convient de respecter la syntaxe de LIST lors de lattribution des valeurs initiales
(initialisation) et de lindication dattributs et de commentaires au sein du DB. Pour
plus dinformations sur les diffrentes notations de constantes, attributs et commen-
taires, reportez-vous aux manuels /231/ ou /232/.

Exemple Lexemple suivant montre comment formuler la section daffectation si les compo-
santes [1] et [5] du tableau doivent prendre les valeurs entires 5 et -1 la place de
la valeur par dfaut 1.

DATA_BLOCK DB20
SRTUCT //Dclaration de donnes
//avec valeurs par dfaut
VALEUR : ARRAY [ 1..100] OF INT := 100 (1);
MEMENTO : BOOL := TRUE;
S_MOT : WORD := W#16#FFAA;
S_OCTET : BYTE := B#16#FF
S_TIME : S5TIME := S5T#1h30m30s
END_STRUCT

BEGIN //Section daffectation


//Affectation de valeurs
// diverses composantes du tableau
VALEUR [1] := 5;
VALEUR [5] :=-1;
END_DATA_BLOCK

Exemple 8-4 Section daffectation dun DB

SCL pour SIMATIC S7-300/400, Programmation de blocs


8-18 C79000-G7077-C522-01
Structure dun fichier source SCL

8.11 Structure dun type de donnes utilisateur (UDT)

Prsentation Un type de donnes utilisateur (UDT) est une structure de donnes particulire que
vous crez vous-mme. Puisquil possde un nom, il peut tre utilis plusieurs fois.
Il peut par dfinition tre utilis dans lensemble du programme de la CPU et corres-
pond donc un type de donnes globales. Vous pouvez donc utiliser ce type de don-
nes :
S comme type de donnes simple ou complexe dans un bloc ou
S comme modle pour crer des blocs de structure de donnes identique.

Type de donnes utilisateur

Spcification
DESIGNATION du type de donnes
TYPE DE LUDT END_TYPE
STRUCT

Figure 8-16 Syntaxe : type de donnes utilisateur (UDT)

Dsignation de Comme dsignation de lUDT, indiquez aprs le mot-cl


lUDT
TYPE
le mot-cl UDT, suivi du numro de lUDT ou de son mnmonique.
Exemples
TYPE UDT 10
TYPE SECTION_AFFECTATION

Spcification des Elle est toujours ralise laide de la spcification du type de donnes STRUCT.
types de donnes Vous pouvez utiliser le type de donnes UDT dans les sections de dclaration de
blocs de code ou de blocs de donnes, ou alors laffecter des DB. Les sections de
dclaration autorises et de plus amples informations ce sujet sont donnes au cha-
pitre 9.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 8-19
Structure dun fichier source SCL

SCL pour SIMATIC S7-300/400, Programmation de blocs


8-20 C79000-G7077-C522-01
Types de donnes 9
Prsentation Un type de donnes regroupe les plages de valeurs et les oprations en une unit.
Comme la plupart des langages de programmation, SCL possde des types de don-
nes prdfinis (intgrs au langage). Le programmeur a en outre la possibilit de
crer des types de donnes complexes et des types de donnes utilisateur.

Structure du Paragraphe Thme Page


chapitre 9.1 Prsentation 9-2
9.2 Types de donnes simples 9-3
9.3 Types de donnes complexes 9-4
9.3.1 Type de donnes : DATE_AND_TIME 9-5
9.3.2 Type de donnes : STRING 9-6
9.3.3 Type de donnes : ARRAY 9-7
9.3.4 Type de donnes : STRUCT 9-8
9.4 Type de donnes utilisateur (UDT) 9-10
9.5 Types de donnes des paramtres 9-12

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 9-1
Types de donnes

9.1 Prsentation

Gnralits Le tableau 9-1 indique les types de donnes utiliss dans SCL.

Tableau 9-1 Type de donnes dans SCL

Types de donnes simples


BOOL CHAR INT TIME
BYTE DINT DATE
WORD REAL TIME_OF_DAY
DWORD S5TIME
Types de donnes complexes
DATE_AND_TIME STRING ARRAY STRUCT

Types de donnes utilisateur


UDT
Types de paramtres
TIMER BLOCK_FB POINTER ANY
COUNTER BLOCK_FC
BLOCK_DB
BLOCK_SDB

Ces types de donnes dfinissent :


S le type et la signification des lments de donnes,
S les plages autorises des lments de donnes,
S le nombre doprations pouvant tre excutes avec un oprande dun type de
donnes et
S la notation des donnes de ce type.

SCL pour SIMATIC S7-300/400, Programmation de blocs


9-2 C79000-G7077-C522-01
Types de donnes

9.2 Types de donnes simples

Prsentation Un type de donnes simple dfinit la structure de donnes qui ne peuvent pas tre
divises en lments plus petits. Il rpond la dfinition de la norme
DIN EN 1131-3. Un type de donnes simple dcrit une zone de mmoire de lon-
gueur fixe et correspond une grandeur exprime sous forme binaire, entire, relle,
sous forme de dure, dheure ou de caractre. Tous ces types de donnes sont prd-
finis dans SCL.

Tableau 9-2 Longueur en bits et plage des valeurs des types de donnes simples

Type Mot-cl Lon- Plage des valeurs


gueur
en bits
Type de donnes Les donnes de ce type occupent 1 bit (type de donnes BOOL), 8 bits,
binaire 16 bits ou 32 bits.
Bit BOOL 1 0, 1 ou FALSE (FAUX), TRUE
(VRAI)
Octet BYTE 8 Il nest pas possible dindiquer une plage
de valeurs numrique. Il sagit
s agit ici de
Mot WORD 16 combinaisons binaires avec lesquelles il
est impossible de former des expressions
Double mot DWORD 32
numriques.
Type de donnes Les donnes de ce type occupent exactement 1 caractre du jeu de
caractre caractres ASCII
Caractre unique CHAR 8 Jeu de caractres ASCII tendu
Types de donnes Ils permettent de traiter des valeurs numriques.
numriques
Entier (nombre -32_768 32_767
INT 16
entier)
Entier double -2_147_483_648
DINT 32
2_147_483_647
Virgule flottante -3.402822E+38 -1.175495E-38,
REAL 32
(nombre virgule 0.0,
flottante IEE)
+1.175495E-38 3.402822E+38
Types de donnes Les donnes de ce type reprsentent les diverses valeurs de temps et de
temps date dans STEP 7.
T#0H_0M_0S_10MS T#2H_46M_30S
S5TIME S5TIME 16
Dure :
TIME T#0D_0H_0M_0S_0MS
Dure CEI par pas 32
(=DURATION) T#24D_20H_31M_23S_647MS
de 1 ms
Date :
D#1990-01-01
Date CEI par pas DATE 16
D#2168-12-31
de 1 jour
Heure du jour : TIME_OF_DAY
TOD#0:0:0
Heure par pas de (=TOD) 32 TOD#23:59:59.999
1 ms

Remarque relative S5TIME : selon la base de temps choisie 0.01S, 0.1S, 1S ou


10S la rsolution de la valeur de temps est limite. Le compilateur arrondit les
valeurs en consquence.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 9-3
Types de donnes

9.3 Types de donnes complexes

Prsentation SCL autorise les types de donnes complexes suivants :

Tableau 9-3 Types de donnes complexes

Type de donnes Description


DATE_AND_TIME Dfinit une zone de 64 bits (8 octets). Ce type de donnes prdfini
DT dans SCL enregistre la date et lheure (en format dcimal cod binaire).

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

Dfinit un tableau form de composantes dun mme type de donnes


ARRAY (simples ou complexes).

Dfinit un groupe form dune combinaison quelconque de types de


STRUCT donnes. Vous pouvez dfinir un tableau compos de structures ou une
structure compose dautres structures et de tableaux.

SCL pour SIMATIC S7-300/400, Programmation de blocs


9-4 C79000-G7077-C522-01
Types de donnes

9.3.1 Type de donnes DATE_AND_TIME

Prsentation Le type de donnes DATE_AND_TIME est compos des types de donnes DATE et
TIME et dfinit une zone de 64 bits (8 octets) pour lindication de la date et de
lheure. Cette zone de donnes enregistre les informations suivantes :
anne-mois-jour-heures:minutes:secondes.millisecondes

DATE_AND_TIME
DATE_AND_TIME#

Indication de la date Indication de lheure du jour

DT#

Figure 9-1 Syntaxe : DATE_AND_TIME

Tableau 9-4 Longueur en bits et plage des valeurs

Plage des Type Mot-cl Lon- Plage des valeurs


valeurs gueur
en bits
Date et heure DT#1990-01-01:0:0:0.0
DATE_AND_TIME
(=DT) 64 DT#2089-12-31:23:59:59.999

La syntaxe exacte pour indiquer la date et lheure du jour est donne au chapitre 11
du prsent manuel. 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 pour vous permettre daccder prcis-
ment la composante DATE ou TIME.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 9-5
Types de donnes

9.3.2 Type de donnes STRING

Prsentation Le type de donnes STRING dfinit une chane de caractres, dont la longueur maxi-
male est de 254 caractres uniques.
La zone de mmoire standard rserve une chane de caractres est de 256 octets, o
vont tre enregistrs les 254 caractres ainsi quun en-tte de 2 octets.
Vous avez la possibilit de diminuer cette zone de mmoire rserve une chane de
caractres, en dfinissant le nombre maximal de caractres enregistrer dans la chane.
Une chane de longueur nulle, cest--dire une chane sans contenu reprsente la plus
petite valeur possible.

Spcification du type de donnes STRING

STRING [ Expression ]
simple

Longueur de la chane

Figure 9-2 Syntaxe : spcification du type de donnes STRING

Lexpression simple (longueur de la chane) reprsente le nombre maximal de carac-


tres dans la chane.
Voici des types de chanes de caractres autoriss :
STRING[10]
STRING[3+4]
STRING[3+4*5]
STRING Plage des valeurs max. (par dfaut  254 caractres)

Plage des valeurs Tous les caractres du code ASCII sont autoriss dans une chane de caractres. Le
chapitre 11 dcrit comment utiliser des caractres de commande et des caractres
non imprimables.

Nota
Afin doptimiser les ressources de votre CPU, vous avez la possibilit de rduire un
nombre quelconque de caractres la zone de 254 caractres rserve de manire stan-
dard. Choisissez la commande Paramtres dans le menu Outils, puis longlet Com-
pilateur dans la bote de dialogue suivante. Indiquez ensuite le nombre de caractres
voulus pour loption Long. de chane max..

SCL pour SIMATIC S7-300/400, Programmation de blocs


9-6 C79000-G7077-C522-01
Types de donnes

9.3.3 Type de donnes ARRAY

Prsentation Un tableau (type de donnes ARRAY) comporte un nombre dfini de composantes


dun mme type de donnes. Le type de donnes ARRAY est spcifi plus prcis-
ment dans le diagramme de syntaxe 9-3, aprs le mot rserv OF. SCL distingue :
S le type de donnes ARRAY unidimensionnel.
Il sagit dune liste dlments de donnes disposs dans lordre croissant.
S le type de donnes ARRAY bidimensionnel.
Il sagit dun tableau de donnes comportant des lignes et des colonnes. La pre-
mire dimension correspond au numro de ligne, la seconde au numro de
colonne.
S le type de donnes ARRAY de dimension suprieure.
Il sagit de lextension du tableau bidimensionnel dautres dimensions. Le
nombre maximal de dimensions autoris est de 6.

Spcification du type de donnes ARRAY Spcification des indices

ARRAY [ Indice .. Indice ]


1 n

Spcification du
OF type de donnes

Figure 9-3 Syntaxe : spcification du type de donnes ARRAY

Spcification des Elle dcrit les dimensions du tableau :


indices
S indice le plus petit et le plus grand possible (zone dindexage) pour chaque
dimension. Il peut sagir dune valeur entire quelconque (-32768 32767).
S Les limites doivent tre indiques spares par deux points.
S Chaque zone dindexage est spare par une virgule et lensemble de la spcifi-
cation des indices figure entre crochets.

Spcification du Elle consiste dclarer le type de donnes des composantes du tableau. Tous les
type de donnes types de donnes dcrits dans ce chapitre sont autoriss. Le type de donnes dun
tableau (ARRAY) peut galement tre une structure (STRUCT).
Voici des spcifications de tableaux autorises :
ARRAY[1..10] OF REAL
ARRAY[1..10] OF STRUCT..END_STRUCT
ARRAY[1..100, 1..10] OF REAL

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 9-7
Types de donnes

9.3.4 Type de donnes STRUCT

Prsentation Le type de donnes STRUCT dcrit une zone comportant un nombre fixe de compo-
santes dont les types de donnes peuvent tre diffrents. Dans le diagramme syntaxi-
que de la figure 9-4, ces lments de donnes sont indiqus dans la dclaration des
composantes, immdiatement aprs le mot-cl STRUCT.
Un lment de donnes du type de donnes STRUCT peut lui-mme tre une struc-
ture, rendant ainsi leur imbrication possible.
Au chapitre 10, vous apprendrez adresser les donnes dune structure.

Spcification du type de donnes STRUCT

STRUCT Dclaration des END_STRUCT


composantes

Figure 9-4 Syntaxe : dclaration du type de donnes STRUCT

Dclaration des Elle correspond la liste des diverses composantes dune structure. Comme le mon-
composantes tre le diagramme syntaxique 9-5, elle comporte :
S 1 n identificateurs avec
S le type de donnes qui leur est affect et
S des valeurs initiales par dfaut optionelles.

Dclaration des composantes

Spcification du Initialisation du
IDENTIFICATEUR : type de donnes type de donnes ;

Nom de la composante

Nom de la composante dans les tableaux


Figure 9-5 Syntaxe : dclaration des composantes

Identificateur Il correspond au nom de lune des composante de la structure, laquelle sapplique


la spcification du type de donnes suivante.

SCL pour SIMATIC S7-300/400, Programmation de blocs


9-8 C79000-G7077-C522-01
Types de donnes

Initialisation du Aprs la spcification du type de donnes, vous pouvez optionnellement affecter une
type de donnes valeur initiale une composante individuelle de la structure. Cette affectation de
valeur est dcrite au chapitre 10.

Exemple Lexemple 9-1 montre une dfinition possible pour un type de donnes STRUCT.

STRUCT
//DEBUT de la dclaration des composantes
A1 :INT;
A2 :STRING[254];
A3 :ARRAY [1..12] OF REAL;

Nom de la composante Spcification du type de donnes

//FIN de la dclaration des composantes


END_STRUCT

Exemple 9-1 Dfinition dun type de donnes STRUCT

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 9-9
Types de donnes

9.4 Type de donnes utilisateur (UDT)

Prsentation Vous dfinissez un type de donnes utilisateur (UDT) sous forme de bloc, comme
dcrit au chapitre 8. Une fois dfini, un tel type de donnes peut tre utilis dans
lensemble du programme utilisateur. Il sagit donc dun type de donnes global.
Vous pouvez lutiliser dans la section de dclaration dun bloc ou bloc de donnes
en indiquant sa dsignation UDTx (x correspond au numro) ou le mnmonique qui
lui est affect.

Type de donnes utilisateur

Spcification
DESIGNATION du type de donnes
TYPE DE LUDT END_TYPE
STRUCT

Figure 9-6 Syntaxe : Type de donnes utilisateur (UDT)

Dsignation de La dclaration dun UDT est introduite par le mot-cl TYPE, suivi du nom de
lUDT lUDT (identificateur de lUDT). Comme dcrit au chapitre 8, le nom de lUDT
peut tre attribu de manire absolue comme nom standard de la forme UDTx
(x correspond un numro) ou de manire symbolique avec un mnmonique (voir
aussi chapitre 8).

Spcification du La dsignation de lUDT est suivie de la spcification du type de donnes. Seule la


type de donnes spcification du type de donnes STRUCT est autorise (voir chapitre 9.3.4) :
STRUCT
:
END_STRUCT
Vous devez ensuite clore lensemble de la dclaration dun UDT avec le mot-cl
END_TYPE.

Utilisation dun Vous pouvez vous servir du type de donnes ainsi dfini pour utiliser des variables
UDT ou des paramtres, ainsi que pour dclarer des DB. LUDT vous permet galement
de dclarer des composantes de structures ou de tableaux, mme dans dautres UDT.

Nota
Il convient de respecter la syntaxe de LIST lors de lattribution des valeurs initiales
(initialisation) au sein de lUDT. Pour plus dinformations sur les diffrentes nota-
tions de constantes, reportez-vous aux manuels /231/ ou /232/.

SCL pour SIMATIC S7-300/400, Programmation de blocs


9-10 C79000-G7077-C522-01
Types de donnes

Exemple Cet exemple vous montre comment dfinir un UDT et utiliser ce type de donnes
dans la dclaration dune variable. On suppose que le mnmonique
VALEURS_MESURE a t dclar pour lUDT50 dans la table des mnmoni-
ques.

TYPE VALEUR_MESURE // Dfinition de lUDT


STRUCT
BIPOL_1 : INT;
BIPOL_2 : WORD := W#16#AFA1;
BIPOL_3 : BYTE := B#16#FF;
BIPOL_4 : WORD := B#(25,25);
BIPOL_5 : INT := 25;
S_TIME : S5TIME := S5T#1h20m10s;
MESURE: STRUCT
BIPOLAIRE_10V : REAL;
UNIPOLAIRE_4_20MA : REAL;
END_STRUCT;
END_STRUCT
END_TYPE

FUNCTION_BLOCK
VAR
ETENDUE_MESURE: VALEURS_MESURE;
END_VAR
BEGIN
...
ETENDUE_MESURE.BIPOL:= -4;
ETENDUE_MESURE.MESURE.UNIPOLAIRE_4_20MA:= 2.7;
...
END_FUNCTION_BLOCK;

Exemple 9-2 Dclaration de types de donnes utilisateur

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 9-11
Types de donnes

9.5 Types de paramtres

Prsentation Outre les types de donnes simples, complexes et dfinis par lutilisateur, vous pou-
vez galement utiliser ce que lon appelle des types de paramtres pour dfinir les
paramtres de bloc formels des FB et FC. Ces types de donnes servent :
S dclarer des fonctions de comptage et de temporisation (TIMER ou
COUNTER),
S dclarer des FC, FB, DB et SDB comme paramtres (BLOCK_xx),
S autoriser lutilisation dun oprande dun type de donnes quelconque comme
paramtre (ANY),
S autoriser lutilisation dune zone de mmoire comme paramtre (POINTER).

Tableau 9-5 Types de paramtres

Paramtre Longueur Description


TIMER 2 octets Caractrise une temporisation particulire qui doit tre utilise
par le programme dans le bloc de code appel.
Paramtre effectif : p. ex. T1
COUNTER 2 octets Caractrise un compteur particulier qui doit tre utilis par le
programme dans le bloc de code appel.
Paramtre effectif : p. ex. Z10
BLOCK_FB 2 octets Caractrise un bloc particulier qui doit tre utilis par le pro-
BLOCK_FC gramme dans le bloc de code appel.
BLOCK_DB Paramtre effectif : p. ex. FC101
BLOCK_SDB DB42
ANY 10 octets Sutilise lorsquun type de paramtres quelconque, lexception
de ANY, doit tre autoris pour le paramtre effectif.
POINTER 6 octets Caractrise une zone de mmoire particulire qui doit tre utili-
se par le programme.
Paramtre effectif : p. ex. M50.0

TIMER et Vous dfinissez une temporisation ou un compteur particuliers qui vont tre utiliss
COUNTER lors de lexcution dun bloc. Les types de paramtres TIMER et COUNTER ne sont
autoriss que pour les paramtres dentre (VAR_INPUT).

SCL pour SIMATIC S7-300/400, Programmation de blocs


9-12 C79000-G7077-C522-01
Types de donnes

Types de Vous dfinissez un bloc particulier qui doit tre utilis comme paramtre dentre.
paramtres Cest la dclaration du paramtre dentre qui dtermine le type de bloc (FB, FC ou
BLOCK DB). Pour laffectation du paramtre, vous pouvez indiquer lidentificateur de bloc
de manire absolue (par exemple FB20) ou de manire symbolique, avec un mn-
monique.
SCL ne propose pas doprations sur ces types de paramtres. Eux seuls peuvent
tre affects lors dappels de blocs. Pour les FC, lindication dun paramtre den-
tre nest pas possible.
Vous pouvez affecter dans SCL des paramtres effectifs aux oprandes des types de
donnes suivants :
S blocs fonctionnels sans paramtres formels,
S fonctions sans paramtres formels ni valeur en retour (VOID),
S blocs de donnes et blocs de donnes systme.

ANY SCL offre la possibilit de dclarer des paramtres de blocs du type ANY. Lorsque
vous appelez un tel bloc, vous pouvez affecter des oprandes de type quelconque (
lexception de ANY) ces paramtres. SCL ne propose toutefois quune possibilit
dutilisation du type de paramtre ANY : la transmission des blocs de niveau hi-
rarchique infrieur.
SCL vous permet daffecter des oprandes avec les types de donnes suivants
comme paramtres effectifs :
S types de donnes simples :
vous indiquez ladresse absolue ou le mnmonique du paramtre effectif.
S types de donnes complexes :
vous indiquez le mnmonique des donnes avec le type de donnes complexes
(par exemple tableaux et structures).
S type de donnes ANY :
ceci nest possible que lorsque loprande est un type de paramtre compatible
avec des paramtres formels.
S type de donnes NIL :
vous indiquez un pointeur zro.
S temporisations, compteurs et blocs ; vous indiquez leur numro (par exemple T1,
Z20 ou FB6).
Le type de paramtre ANY est autoris pour les paramtres formels dentre, den-
tre/sorties de FB et de FC de mme que pour les paramtres de sortie de FC.

Nota
Lorsque lors de lappel dun FB ou dune FC, vous affectez une variable temporaire
un paramtre formel de type ANY, vous ne pouvez pas transmettre ce paramtre
un autre bloc dans le bloc appel. En effet, les adresses des variables temporaires per-
dent leur validit lors de la transmission.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 9-13
Types de donnes

POINTER SCL offre la possisbilit de dclarer des paramtres de bloc du type de donnes
POINTER. Lorsque vous appelez un tel bloc, vous pouvez affecter des oprandes
dun type de donnes quelconque ces paramtres. SCL ne propose toutefois quune
instruction de traitement du type de donnes POINTER : la transmission des blocs
de niveau hirarchique infrieur.
Comme paramtres effectifs, vous pouvez affecter des oprandes des types de
donnes suivants dans SCL :
S types de donnes simples :
vous indiquez ladresse absolue ou le mnmonique du paramtre effectif.
S types de donnes complexes :
vous indiquez le mnmonique des donnes avec le type de donnes complexes
(par exemple tableaux et structures).
S type de donnes POINTER :
ceci nest possible que lorsque loprande est un type de paramtre compatible
avec des paramtres formels.
S type de donnes NIL :
vous indiquez un pointeur zro.
Le type de paramtre POINTER est autoris pour les paramtres formels dentre,
dentre/sorties de FB et de FC de mme que pour les paramtres de sortie de FC.

Nota
Lorsque lors de lappel dun FB ou dune FC, vous affectez une variable temporaire
un paramtre formel de type POINTER, vous ne pouvez pas transmettre ce paramtre
un autre bloc dans le bloc appel. En effet, les adresses des variables temporaires per-
dent leur validit lors de la transmission.

SCL pour SIMATIC S7-300/400, Programmation de blocs


9-14 C79000-G7077-C522-01
Types de donnes

Exemples

FUNCTION INTERVALLE: REAL


VAR_INPUT
MonDB:BLOCK_DB;
TEMPS: TIMER;
END_VAR
VAR
INDICE: INTEGER;
END_VAR
BEGIN
MonDB.DB5:=5;
INTERVALLE:=....//Valeur en retour

END_FUNCTION

Exemple 9-3 Type de paramtre BLOCK_DB et TIMER

FUNCTION FC100: VOID


VAR_IN_OUT
in, out:ANY;
END_VAR
VAR_TEMP
ret: INT;
END_VAR
BEGIN
//...
ret:=SFC20(DSTBLK:=out,SCRBLK:=in);
//...
END_FUNCTION

FUNCTION_BLOCK FB100
VAR
ii:INT;
aa, bb:ARRAY[1..1000] OF REAL;
END_VAR
BEGIN
//...
FC100(in:=aa, out:=bb);
//...
END_FUNCTION_BLOCK

Exemple 9-4 Type de donnes ANY

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 9-15
Types de donnes

SCL pour SIMATIC S7-300/400, Programmation de blocs


9-16 C79000-G7077-C522-01
Dclaration de variables locales et de
paramtres de blocs 10
Prsentation Les variables locales et les paramtres de bloc sont des donnes que vous dclarez
dans un bloc de code (FC, FB, OB) et qui ne sont valables que pour ce bloc. Le pr-
sent chapitre traite de la dclaration et de linitialisation de ces donnes.

Structure du Paragraphe Thme Page


chapitre 10.1 Prsentation 10-2
10.2 Dclaration de variables et de paramtres 10-4
10.3 Initialisation 10-5
10.4 Dclaration dinstances 10-7
10.5 Variables statiques 10-8
10.6 Variables temporaires 10-9
10.7 Paramtres de bloc 10-10
10.8 Drapeaux (drapeau OK) 10-12

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 10-1
Dclaration de variables locales et de paramtres de blocs

10.1 Prsentation

Diverses variables Le tableau 10-1 dcrit les catgories dans lesquelles entrent les variables locales :

Tableau 10-1 Variables locales

Variable Signification
Variables statiques Les variables statiques sont des variables locales, dont la valeur
reste inchange durant plusieurs excutions de blocs (mmoire du
bloc). Elles servent stocker les valeurs dun bloc fonctionnel et
sont enregistres dans son bloc de donnes dinstance.
Variables temporaires Les variables temporaires appartiennent localement un bloc de
code et noccupent aucune zone de mmoire statique, puisquelles
sont enregistres dans la pile de la CPU. Leur valeur ne reste
conserve que durant une excution du bloc. Il nest pas possible
dadresser les variables temporaires en dehors du bloc dans lequel
elles ont t dclares.

Divers paramtres Les paramtres de bloc servent rserver de la place et ne sont dfinis que lors de
de blocs lutilisation concrte du bloc (appel). Les paramtres de bloc dclars dans le bloc
sont les paramtres formels, les valeurs qui leur sont affectes lappel du bloc sont
les paramtres effectifs. Les paramtres formels dun bloc peuvent tre considrs
comme variables locales.
Le tableau 10-2 dcrit les catgories dans lesquelles entrent les paramtres de bloc :

Tableau 10-2 Paramtres de bloc

Paramtres de bloc Signification


Paramtres dentre A lappel du bloc, les paramtres dentre
prennent les valeurs dentre actuelles. Vous
pouvez uniquement les lire.
Paramtres de sortie Les paramtres de sortie transmettent les
valeurs de sortie actuelles au bloc appelant.
Vous pouvez les dcrire et galement les lire.
Paramtres dentre/sortie A lappel du bloc, les paramtres dentre/sor-
tie prennent la valeur actuelle dune variable,
la traitent puis inscrivent les rsultats dans la
mme variable.

Drapeaux Le compilateur de SCL dispose dun drapeau servant dceler des erreurs durant
(drapeau OK) lexcution de programmes dans la CPU. Il sagit dune variable locale de type
BOOL, dont le nom prdfini est OK .

SCL pour SIMATIC S7-300/400, Programmation de blocs


10-2 C79000-G7077-C522-01
Dclaration de variables locales et de paramtres de blocs

Dclaration de Une section de dclaration diffrente et une paire de mots-cls sont affectes cha-
variables et de que catgorie de variables locales ou de paramtres, comme le montre le
paramtres tableau 10-3.
Chaque section contient les dclaration qui y sont autorises. Elle ne doit figurer
quune seule fois dans la section de dclaration dun bloc, lordre des sections tant
quelconque.
Les sections de dclaration autorises dans chaque bloc sont marqus x .

Tableau 10-3 Sections de dclaration des variables locales et des paramtres

Donnes Syntaxe FB FC OB
VAR
Variable statique : X X1
END_VAR
VAR_TEMP
Variable temporaire : X X X
END_VAR
Paramtres de bloc comme : VAR_INPUT
Paramtre dentre : X X
END_VAR
VAR_OUTPUT
Paramtre de sortie : X X
END_VAR
VAR_IN_OUT
Paramtre dentre/sortie : X X
END_VAR

1 La dclaration de variables entre les mots-cls VAR et END_VAR est autorise pour les fonc-
tions, cependant lors de la compilation, les dclarations sont dcales dans la zone temporaire.

Initialisation Lorsque vous dclarez des variables et des paramtres, vous devez leur affecter un
type de donnes qui dfinit leur structure et par consquent aussi la place mmoire
requise. Vous pouvez en outre affecter des valeurs initiales des variables statiques
et aux paramtres dun bloc fonctionnel. Le tableau 10-4 prcise quand linitialisa-
tion est possible ou ne lest pas.

Tableau 10-4 Initialisation de donnes locales

Catgorie de donnes Initialisation


Variables statiques possible
Variables temporaires impossible
Paramtres de bloc uniquement possible pour les paramtres dentre et de
sortie dun bloc fonctionnel

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 10-3
Dclaration de variables locales et de paramtres de blocs

10.2 Dclaration de variables et de paramtres

Prsentation La dclaration de variables ou de paramtres consiste choisir un identificateur


quelconque comme nom de la variable et en indiquer le type de donnes. Le dia-
gramme syntaxique suivant en montre la forme gnrale. Laffectation dattributs
systme de paramtres est dcrite en dtails au paragraphe 8.4.

Dclaration dune variable

1) Spcification du Initialisation du
IDENTIFICATEUR : type de donnes ;
type de donnes
nom de la variable,
du paramtre
ou
de la composante
1) Attributs systme de paramtres
,

Figure 10-1 Syntaxe : dclaration dune variable

Exemples de dclarations correctes :


VALEUR1 : REAL;
ou si plusieurs variables possdent le mme type :
VALEUR1, VALEUR2, VALEUR4,....: INT;
TABLEAU : ARRAY[1..100, 1..10] OF REAL;
BLOC : STRUCT
MESURE:ARRAY[1..20] OF REAL;
COMMUTATEUR:BOOL;
END_STRUCT

Spcification du Tous les types de donnes dcrits au chapitre 9 sont autoriss.


type de donnes

Nota
Vous pouvez dclarer les mots rservs, valables uniquement dans SCL, comme
identificateurs en les faisant prcder par le signe # (par exemple, #FOR). Ceci est
utile lorsque vous voulez transmettre des paramtres effectifs des blocs program-
ms dans un langage diffrent (par exemple LIST).

SCL pour SIMATIC S7-300/400, Programmation de blocs


10-4 C79000-G7077-C522-01
Dclaration de variables locales et de paramtres de blocs

10.3 Initialisation

Principe Lorsque vous dclarez des variables statiques, des paramtres dentre et des para-
mtres de sortie dun FB vous pouvez leur affecter une valeur par dfaut. Pour ce
faire, vous affectez une valeur ( := ) aprs lindication du type de donnes. Comme
le montre la figure 10-2, vous pouvez affecter :
S une constante une variable simple ou
S une liste dinitialisation un tableau.

Initialisation
Constante

:= Liste dinitialisation
dun tableau

Figure 10-2 Syntaxe : initialisation

Exemple :
VALEUR :REAL := 20.25;
Sachez que linitialisation dune liste de variables (A1, A2, A3,...: INT:=...) nest
pas possible. Vous devez dans ce cas initialiser les variables sparment. Vous pou-
vez affecter des valeurs initiales des tableaux, comme le montre la figure 10-3.

Liste dinitialisation de tableaux

Constante

Liste dinitialisation
de tableaux

Constante
Suite des
chiffres dcimaux ( )
Liste dinitialisation
Facteur de rptition de tableaux

Figure 10-3 Syntaxe : initialisation de tableaux

TABLEAU : ARRAY[1..10, 1..100] OF INT:=10(100(0));

Facteur de rptition (nombre de colonnes) Valeur


Facteur de rptition (nombre de lignes)

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 10-5
Dclaration de variables locales et de paramtres de blocs

Exemples Lexemple 10-1 illustre linitialisation dune variable statique :

VAR
INDICE1: INT:= 3;
END_VAR

Exemple 10-1 Initialisation de variables statiques

Lexemple 10-2 montre linitialisation dun tableau bidimensionnel. Si dans SCL,


vous souhaitez dclarer la structure de donnes suivantes sous le nom REGULA-
TEUR vous devez crire :

-54 736 -83 77


-1289 10362 385 2
60 -37 -7 103

60 60 60 60

VAR
REGULATEUR:
ARRAY [1..4, 1..4] OF INT:= -54, 736, -83, 77,
-1289, 10362, 385, 2,
60, -37, -7, 103,
4(60);

END_VAR

Exemple 10-2 Initialisation dun tableau

Lexemple 10-3 reprsente linitialisation dune structure :

VAR
GENERATEUR:STRUCT
DONNEES: REAL := 100.5;
A1: INT := 10;
A2: STRING[6]:= FACTEUR;
A3: ARRAY[1..12] OF REAL:= 12(100.0);
END_STRUCT;
END_VAR

Exemple 10-3 Initialisation dune structure

SCL pour SIMATIC S7-300/400, Programmation de blocs


10-6 C79000-G7077-C522-01
Dclaration de variables locales et de paramtres de blocs

10.4 Dclaration dinstances

Prsentation Dans la section de dclaration de blocs fonctionnels, vous pouvez non seulement
dclarer des variables de types de donnes simples, complexes ou dfinis par lutili-
sateur, mais galement des variables de type FB ou SFB. Il sagit des instances
locales du FB ou du SFB.
Les instances locales sont enregistres dans le bloc de donnes dinstance du bloc
fonctionnel appelant.

Dclaration dinstances Le FB et le SFB doivent


dj exister !
DESIGNATION
DU FB

IDENTIFICATEUR : ;
Nom de linstance locale DESIGNATION
DU SFB
,

Figure 10-4 Syntaxe : dclaration dinstances locales

Exemples : voici des exemples dans lesquels la syntaxe de la figure 10-4 est cor-
recte :
Alimentation1 : FB10;
Alimentation2,Alimentation3,Alimentation4 : FB100;
Moteur1 : Moteur ;
// Moteur est un mnmonique dfini dans la table des mnmoniques.

Mnmonique Adresse Type de donnes


MOTEUR FB20 FB20

Figure 10-5 Table de mnmoniques correspondante dans STEP 7

Initialisation Une initialisation locale spcifique linstance nest pas possible.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 10-7
Dclaration de variables locales et de paramtres de blocs

10.5 Variables statiques

Prsentation Une variable statique est une variable locale, dont la valeur reste inchange durant
toutes les excutions du bloc (mmoire du bloc). Elle sert stocker les valeurs dun
bloc fonctionnel et est enregistre sous le bloc de donnes dinstance.

Section de variables statiques

Dclaration
de la variable

VAR END_VAR

Dclaration
de linstance

Figure 10-6 Syntaxe : section de variables statiques

Section de Cette section de dclaration fait partie de la section de dclaration du FB. Vous pou-
dclaration vez y :
VAR
S dclarer les noms de variables et des types de donnes (linitialisation est option-
END_VAR
nelle) grce la dclaration de la variable, comme dcrit au paragraphe 10.2 ou
S insrer dautres dclarations existantes de variables grce la dclaration de
linstance, comme dcrit au paragraphe 10.4.
Aprs la compilation, cest cette section qui, avec les sections pour les paramtres
de blocs dterminera la structure du bloc de donnes dinstance correspondant.

Exemple Lexemple 10-4 reprsente la dclaration de variables statiques :


VAR
PASSAGE :INT;
MESURE :ARRAY[1..10] OF REAL;
COMMUTATEUR :BOOL;
MOTEUR_1,Moteur_2:FB100; // Dclaration de
// linstance

END_VAR

Exemple 10-4 Dclaration de variables statiques

Adressage Dans la section des instructions, ladressage de ces variables seffectue de la


manire suivante :
S par adressage interne, cest--dire dans la section des instructions du bloc fonc-
tionnel dont la section de dclaration contient la dclaration de la variable. Cest
ce qui est expliqu au chapitre 14, Affectation de valeurs.
S par adressage externe, par lintermdiaire du DB dinstance, cest--dire par
lintermdiaire de la variable indexe DBx.variable. DBx correspond la dsi-
gnation du bloc de donnes.

SCL pour SIMATIC S7-300/400, Programmation de blocs


10-8 C79000-G7077-C522-01
Dclaration de variables locales et de paramtres de blocs

10.6 Variables temporaires

Prsentation Les variables temporaires appartiennent localement un bloc de code et noccupent


aucune zone de mmoire statique. Leur valeur ne reste conserve que durant une
excution du bloc. Il nest pas possible dadresser les variables temporaires en
dehors du bloc dans lequel elles ont t dclares.
Vous ne devriez dclarer des donnes comme tant temporaires que si vous en avez
uniquement besoin pour y enregistrer des rsultats intermdiaires lors du traitement
de votre OB, FB ou FC.

Section de variables temporaires

VAR_TEMP Dclaration
de la variable END_VAR

Linitialisarion nest pas possible

Figure 10-7 Syntaxe : section de variables temporaires

Section de Cette section de dclaration fait partie dun FB, dune FC, ou dun OB. Comme
dclaration mentionn au paragraphe 10.2, le nom de la variable et le type de donnes doivent
VAR_TEMP tre spcifis dans la dclaration de la variable.
END_VAR
Au dbut de lexcution dun OB, FB ou dune FC, la valeur des donnes temporai-
res nest pas dfinie. Linitialisation nest pas possible.

Exemple Lexemple 10-5 montre la dclaration de variables temporaires dans un bloc :

VAR_TEMP
MEMOIRE_1 :ARRAY [1..10] OF INT;
AUXIL1,AUXIL2:REAL;
END_VAR

Exemple 10-5 Dclaration de variables temporaires dans un bloc

Adressage Ladressage de ces variables seffectue toujours dans la section des instructions du
bloc de code dont la section de dclaration contient la dclaration de la variable
(adressage interne), voir chapitre 14, Affectation de valeurs.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 10-9
Dclaration de variables locales et de paramtres de blocs

10.7 Paramtres de bloc

Prsentation Les paramtres de bloc sont des paramtres formels dun bloc fonctionnel ou dune
fonction. A lappel du bloc fonctionnel ou de la fonction, les paramtres effectifs
remplacent les paramtres formels, ce qui constitue un moyen dchange dinforma-
tions entre les blocs appels et les blocs appelants.
S Les paramtres dentre formels prennent les valeurs dentre en cours (flux de
donnes de lextrieur vers lintrieur).
S Les paramtres de sortie formels servent transmettre des valeurs de sortie (flux
de donnes de lintrieur vers lextrieur).
S Les paramtres dentre/sortie ont la fois la fonction dun paramtre dentre et
celle dun paramtre de sortie.
De plus ample informations sur lutilisation de paramtres et lchange dinforma-
tions sont fournies au chapitre 16.

Section des paramtres

VAR_INPUT

VAR_OUTPUT Dclaration
de la variable END_VAR

VAR_IN_OUT

Linitialisation est uniquement possible pour VAR_INPUT et VAR_OUTPUT

Figure 10-8 Syntaxe : section des paramtres

Section de Cette section de dclaration fait partie dun FB, ou dune FC. Comme mentionn au
dclaration paragraphe 10.2, le nom de la variable et le type de donnes doivent tre spcifis
VAR_INPUT dans la dclaration de la variable.
VAR_OUTPUT
Aprs la compilation dun FB, ce sont ces sections qui, avec la section VAR et
VAR_IN_OUT
END_VAR dtermineront la structure du bloc de donnes dinstance correspondant.

SCL pour SIMATIC S7-300/400, Programmation de blocs


10-10 C79000-G7077-C522-01
Dclaration de variables locales et de paramtres de blocs

Exemple Lexemple 10-6 reprsente la dclaration dun paramtre :

VAR_INPUT //Paramtre dentre


REGULATEUR :DWORD;
HEURE :TIME_OF_DAY;
END_VAR

VAR_OUTPUT //Paramtre de sortie


VALEUR_CONSIGNE : ARRAY [1..10] of INT;
END_VAR

VAR_IN_OUT //Paramtre dentre/sortie


SELECTION: INT;
END_VAR

Exemple 10-6 Dclaration de paramtres

Adressage Dans la section des instructions dun bloc de code, ladressage des paramtres de
bloc seffectue :
S par adressage interne, cest--dire dans la section des instructions du bloc dont
la section de dclaration contient la dclaration des paramtres. Cest ce qui est
expliqu au chapitre 14, Affectation de valeurs et au chapitre 13, Expressions,
oprateurs et oprandes.
S par adressage externe par lintermdiaire du DB dinstance
Vous pouvez accder aux paramtres de bloc dun bloc fonctionnel par son DB
dinstance (voir paragraphe 14.8).

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 10-11
Dclaration de variables locales et de paramtres de blocs

10.8 Drapeaux (drapeau OK)

Description Le drapeau OK sert marquer lexcution correcte ou incorrecte dun bloc. Il sagit
dune variable globale de type BOOL avec le mot-cl OK .
Si une erreur se produit durant lexcution dune instruction de bloc (par exemple un
dbordement haut pour une multiplication), alors 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 dfini automatiquement (paragraphe 16.4) do il peut
tre exploit par le bloc appelant.
Au dbut de lexcution dun bloc, le drapeau OK a la valeur TRUE. Il peut tre
interrog un endroit quelconque du bloc par des instructions de SCL ou prendre la
valeur TRUE/FALSE.

Dclaration Le drapeau OK est une variable dclare dans le systme. Il savre donc inutile de
la dclarer. Si vous souhaitez lutiliser dans votre programme utilisateur, vous devez
cependant choisir loption de compilation Drapeau OK avant deffectuer la com-
pilation.

Exemple Lexemple 10-7 illustre lutilisation du drapeau OK :

// Attribuer la valeur TRUE la variable OK


// pour permettre de vrifier
// si laction suivante
// se droule correctement.
OK: = TRUE;
SUM: = SUM + IN;
IF OK THEN
// Laddition sest correctement droule.
:
:
ELSE // Laddition na pas t ralise
// correctement
:
END_IF;

Exemple 10-7 Utilisation du drapeau OK

SCL pour SIMATIC S7-300/400, Programmation de blocs


10-12 C79000-G7077-C522-01
Dclaration de constantes et de repres
de saut 11
Prsentation Les constantes sont des donnes possdant une valeur fixe qui ne varie pas durant
lexcution du programme. Une constante littrale est une constante dont la valeur
sexprime par la notation.
Il nest pas ncessaire de dclarer les constantes. Vous pouvez toutefois leur attri-
buer des mnmoniques dans la section de dclaration.
Les repres de saut correspondent des branchements dans la section des instruc-
tions du bloc de code.
La dclaration des mnmoniques de constantes ainsi que des repres de saut seffec-
tue dans des sections de dclaration distinctes.

Structure du Paragraphe Thme Page


chapitre 11.1 Constantes 11-2
11.2 Constantes littrales 11-3
11.3 Notations des constantes littrales entires et relles 11-4
11.4 Notations des constantes littrales de type caractre ou chane de 11-7
caractres
11.5 Notations des constantes de temporisation 11-10
11.6 Repres de saut 11-14

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 11-1
Dclaration de constantes et de repres de saut

11.1 Constantes

Utilisation de Outre les variables et les paramtres de bloc, vous pouvez galement utiliser des
constantes constantes dans les affectations de valeurs et les expressions. Il peut sagir de cons-
tantes sous forme de constantes littrales ou de constantes dsignes par un mnmo-
nique.

Dclaration de La dclaration des mnmoniques des constantes seffectue dans la section de dcla-
mnmoniques ration CONST de votre bloc de code (voir paragraphe 8.4)

Section des constantes

CONST IDENTIFICATEUR := Expression ; END_CONST


simple
Mnmonique de
la constante

Figure 11-1 Syntaxe : section des constantes

Lexpression simple dsigne une expression arithmtique, dans laquelle vous pouvez
utiliser les oprations de base +, -, *, /, DIV et MOD.

Exemple Lexemple 11-1 reprsente la dclaration des mnmoniques :

CONST
Nombre := 10 ;
HEURE1 := TIME#1D_1H_10M_22S.2MS ;
NOM := SIEMENS ;
NOMBRE2 := 2 * 5 + 10 * 4 ;
NOMBRE3 := 3 + NOMBRE2 ;
END_CONST

Exemple 11-1 Dclaration de constantes symboliques

Notations SCL met votre disposition diverses notations (formats) pour saisir ou afficher des
constantes, que lon dsignera alors par constantes littrales. Cest delles que nous
allons parler dans la suite de ce chapitre.

SCL pour SIMATIC S7-300/400, Programmation de blocs


11-2 C79000-G7077-C522-01
Dclaration de constantes et de repres de saut

11.2 Constantes littrales

Dfinition Une constante littrale est caractrise par une notation formelle qui dfinit sa
valeur et son type. Il existe les classes suivantes de constantes littrales :
S constantes littrales numriques,
S constantes littrales de type caractre,
S constantes de temporisation.
La notation de la valeur de la constante diffre selon le type et le format de donnes
choisis :

       


          
       
       
 
       
            

Plusieurs notations pour la constante littrale de valeur 15

Affectation de Le type de donnes affect une constante est celui dont la plage de valeurs suffit
types de donnes juste encore pour y inscrire la constante sans perdre de valeur. Ce type de donnes
des constantes doit tre compatible avec celui qui a t choisi pour utiliser des constantes dans une
littrales affectation une variable ou comme type de donnes cible dans une expression :
Si, par exemple, vous dfinissez une constante littrale entire dont la valeur est
suprieure la plage des entiers autorise, elle sera considre comme un entier
double. Si vous affectez cette valeur une variable de type entier, le compilateur
met un message derreur.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 11-3
Dclaration de constantes et de repres de saut

11.3 Notations des constantes littrales entires et relles

Prsentation Pour les notations de valeurs numriques, SCL met votre disposition :
S des constantes littrales entires pour les nombres entiers et
S des constantes littrales relles pour les nombres virgule flottante.
Chacun de ces deux types de constantes littrales correspond une suite de chiffres,
dont la structure est reprsente la figure 11-2. Dans les diagrammes syntaxiques
suivants, on parlera de suite de chiffres dcimaux.

INT: REAL:
40 3000.40
2000 20.00

Suite de chiffres = Suite de chiffres dcimaux


Figure 11-2 Suite de chiffres dans une constante littrale

Dans une constante littrale, une suite de chiffres dcimaux peut optionnellement
tre spare par des caractres de soulignement pour amliorer la lisibilit de grands
nombres.

Suite de chiffres dcimaux


Chiffre

_
Caractre de soulignement

Figure 11-3 Syntaxe : suite de chiffres dcimaux

Voici des notations correctes de suites de chiffres dcimaux dans les constantes litt-
rales :
1000
1_120_200
666_999_400_311

SCL pour SIMATIC S7-300/400, Programmation de blocs


11-4 C79000-G7077-C522-01
Dclaration de constantes et de repres de saut

Constante littrale Les constantes littrales entires sont des valeurs entires que vous affectez en fonc-
entire tion de leur longueur des variables du type de donnes :
BOOL, BYTE, INT, DINT, WORD ou DWORD
La figure 11-4 reprsente la syntaxe dune constante littrale entire :

Constante littrale entire


+
SUITE DE CHIFFRES
DECIMAUX

1

Nombre entier octal


Nombre entier hexadcimal
Nombre entier binaire
1 uniquement pour les types de
donnes INT et DINT

Figure 11-4 Syntaxe : constante littrale entire

Voici des notations correctes de suites de chiffres dcimaux dans des constantes lit-
trales entires :
1000
+1_120_200
-666_999_400_311

Valeurs binaires, Vous avez la possibilit dentrer une constante littrale entire dans un autre systme
octales et de numration que le systme dcimal en entrant dabord le prfixe 2#, 8# ou 16#,
hexadcimales suivi du nombre dans la reprsentation du systme respectif. Lusage du caractre de
soulignement des fins de meilleure lisibilit de grands nombres est optionnel.
La figure 11-5 illustre la notation gnrale dune constante littrale entire, en pre-
nant pour exemple une suite de chiffres formant un nombre octal :

Suite de chiffres octaux


8# Chiffre octal

_
Caractre de soulignement

Figure 11-5 Syntaxe : suite de chiffres octaux

Les exemples suivants reprsentent des notations correctes de constantes littrales


entires
Valeur_2:=2#0101;// nombre binaire, valeur dcimale 5
Valeur_3:=8#17; // nombre octal, valeur dcimale 15
Valeur_4:=16#F; // nombre hexadcimal, valeur dcimale 15

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 11-5
Dclaration de constantes et de repres de saut

Constante littrale Les constantes littrales relles sont des valeurs avec virgule que vous pouvez affec-
relle ter aux variables de type REAL. Lindicatio
        
 
            
   11-6 donne la syntaxe dun nombre rel :

Constante littrale relle


SUITE DE CHIFFRE SUITE DE CHIFFRES
DECIMAUX . DECIMAUX
+

SUITE DE CHIFFRE SUITE DE CHIFFRE


DECIMAUX . DECIMAUX Exposant

Figure 11-6 Syntaxe : constante littrale entire

La notation exponentielle vous permet de reprsenter un nombre virgule flottante


par un exposant, que vous crivez en entrant la lettre E ou e suivie dun
nombre dcimal. La syntaxe en est donne la figure 11-7.

Exposant
E +
SUITE DE CHIFFRES
DECIMAUX
e

Figure 11-7 Syntaxe : exposant


Exemple :
Dans SCL vous pouvez reprsenter la grandeur 3 x 10 10 par les nombres rels sui-
vants :
3.0E+10 3.0E10 3e+10 3E10
0.3E+11 0.3e11 30.0E+9 30e9

Exemples La figure 11-2 rsume les diverses possibilits :

// Constantes littrales entires


NOMBRE1:= 10 ;
NOMBRE2:= 2#1010 ;
NOMBRE3:= 16#1A2B ;
// Constantes littrales relles
NOMBRE4:= -3.4 ;
NOMBRE5:= 4e2 ;
NOMBRE6:= 40_123E10;

Exemple 11-2 Constantes littrales numriques

SCL pour SIMATIC S7-300/400, Programmation de blocs


11-6 C79000-G7077-C522-01
Dclaration de constantes et de repres de saut

11.4 Notations des constantes littrales de type caractre ou chane de


caractres

Prsentation SCL offre aussi la possibilit de saisir et de traiter des informations textuelles, par
exemple une chane de caractres qui doit tre affiche comme message.
Les constantes littrales de type caractre ne permettent pas deffectuer de calculs et
ne peuvent de ce fait pas tre utilises dans des expressions. Il existe :
S les constantes littrales de type caractre unique,
S les constantes littrales de type chane de 254 caractres au maximum.

Constante littrale Comme le montre la figure 11-8, une constante littrale de type caractre comporte
de type caractre exactement un caractre, reprsent entre deux apostrophes ().
unique
Constante littrale de type caractre

Caractre

Figure 11-8 Syntaxe : constante littrale de type caractre

Exemple :
Caractre_1:=B; // Caractre B

Constante littrale Une constante littrale de type chane de caractres est une chane de 254 caractres
de type chane de au maximum (lettres, chiffres et caractres spciaux), reprsente entre deux apos-
caractres trophes (). Aussi bien les majuscules que les minuscules y sont autories.

Constante littrale de type chane de caractres

Interruption
Caractre Caractre
de la chane

Figure 11-9 Syntaxe : constante littrale de type chane de caractres

Voici des constantes littrales de type chane de caractres autorises :


ROUGE 75000 Paris 270-32-3456
FR19.95 La rponse correcte est :
Tenez compte du fait que lorsque vous affectez une constante littrale de type
chane de caractres une variable de type STRING, le nombre de caractres peut
tre limit moins de 254.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 11-7
Dclaration de constantes et de repres de saut

Laffectation :
TEXT:STRING[20]:=SIEMENS KARLSRUHE Rheinbrckenstr.
gnre un message derreur et inscrit SIEMENS KARLSRUHE Rh
dans la variable TEXT.
Pour entrer des caractres de mise en forme, lapostrophe ( ) ou le caractre dollar
$ , faites les prcder du caractre dalignement $. Vous avez la possibilit din-
terrompre plusieurs reprises une constante littrale de type chane de caractres
puis de la reprendre.

Interruption dune Une chane de caractres peut se trouver sur une mme ligne dun bloc SCL ou tre
chane de rpartie sur plusieurs lignes, grce des codes spciaux. Le code $> permet din-
caractres terrompre une chane, le code $< de la poursuivre dans la ligne suivante.
TEXT:STRING[20]:=Le FB$>//Version provisoire
$<convertit;
Lcart entre le code dinterruption et le code de poursuite peut stendre sur plu-
sieurs lignes et ne peut contenir, hormis des caractres despacement, que des com-
mentaires. Comme le montre la figure 11-10, vous pouvez interrompre et reprendre
plusieurs fois une constante littrale de type chane de caractres.

Interruption dune chane de caractres Caractre despacement (blank)


de changement de ligne (linefeed)
de retour chariot (carriage return)
de saut de page (formfeed, page)
Caractre de de tabulation horizontale (tabulator)
mise en forme

$> $<

Commentaire

Figure 11-10 Syntaxe : interruption dune chane de caractres

Caractres Les caractres que vous pouvez utiliser dans les constantes littrales de type carac-
imprimables tre ou chane de caractres sont ceux du jeu de caratres ASCII tendu complet.
Pour entrer des caractres de mise en forme spciaux et des caractres qui ne peu-
vent tre reprsents directement ( et $), utilisez le caractre dalignement $.
Caractre
Caractre
imprimable
Caractre dalignement $
$

Caractre de remplacement
$ ou

Caractre de commande

P, L, R ou T

Chiffre Chiffre
hexadcimal hexadcimal

Reprsentation de substitution en code hexadcimal

Figure 11-11 Syntaxe : caractre

SCL pour SIMATIC S7-300/400, Programmation de blocs


11-8 C79000-G7077-C522-01
Dclaration de constantes et de repres de saut

Caractres non Vous avez galement la possibilit dindiquer des caractres non imprimables du jeu
imprimables de caractres ASCII tendu complet dans une constante littrale de type caractre ou
chane de caractres. Il vous suffit pour cela dindiquer leur reprsentation en code
hexadcimal.
Pour indiquer un caractre ASCII, vous entrez $hh, hh correspondant sa valeur
hexadcimale.
Exemple :
CARACTERE_A :=$41; //correspond la lettre A
Blank :=$20; //correspond au caractre  _


De plus amples informations concernant les caractres de remplacement et les


caractres de commande sont fournies en annexe A.

Exemples Les exemples suivants illustrent la formulation des constantes littrales de type
caractre :

// Constante littrale de type caractre


Caractre:= S ;

// Constante littrale de type chane de caractres


NOM:= SIEMENS ;

// Interruption dune constante de type chane de


// caractre
MESSAGE1:= Commande $>
$<MOTEUR ;

// Chane sous forme de reprsentation hexadcimale


MESSAGE1:= $41$4E (*chane de caractres AN*);

Exemple 11-3 Constantes littrales de type caractre

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 11-9
Dclaration de constantes et de repres de saut

11.5 Notations des constantes de temporisation

Notation des types SCL met votre disposition divers formats pour entrer des valeurs de date et
de temporisations dheure. Voici les donnes de temporisation possibles :
Date
Dure
Heure du jour
Date et heure

Date Comme le montre la figure 11-12, une date est introduite par le prfixe DATE# ou
D#.

Date
DATE#
Indication de la date

D#

Figure 11-12 Syntaxe : date

Pour indiquer la date, vous entrez des nombres entiers pour lanne (4 places), le
mois et le jour, spars par des tirets.

Indication de la date

SUITE DE CHIFFRES SUITE DE CHIFFRES SUITE DE CHIFFRES


DECIMAUX DECIMAUX DECIMAUX

Anne Mois Jour

Figure 11-13 Syntaxe : indication de la date

Voici des indications de date correctes :


// Indication de la date
VARIABLE_TEMPS1:= DATE#1995-11-11;
VARIABLE_TEMPS2:= D#1995-05-05;

SCL pour SIMATIC S7-300/400, Programmation de blocs


11-10 C79000-G7077-C522-01
Dclaration de constantes et de repres de saut

Dure Comme le montre la figure 11-14, une dure est introduite par le prfixe TIME# ou
T#. Lindication de la dure peut tre ralise de deux manires :
S par la reprsentation dcimale,
S par la reprsentation par nivea.ux.

Dure
TIME# Reprsentation dcimale

T# Reprsentation par niveau Reprsentation dcimale

-chaque unit de temps (heures, minutes) ne doit tre indiqu quune seule fois
-lodre - jours, heures, minutes, secondes, millisecondes - doit tre respect

Figure 11-14 Syntaxe : dure

La reprsentation dcimale vous permet dexprimer la dure alternativement en


jours, heures, minutes, secondes ou millisecondes :

Reprsentation dcimale

SUITE DE CHIFFRES . SUITE DE CHIFFRES Jours


DECIMAUX DECIMAUX D

SUITE DE CHIFFRES . SUITE DE CHIFFRES Heures


H
DECIMAUX DECIMAUX

SUITE DE CHIFFRES SUITE DE CHIFFRES Minutes


. M
DECIMAUX DECIMAUX

SUITE DE CHIFFRES . SUITE DE CHIFFRES Secondes


DECIMAUX DECIMAUX S

SUITE DE CHIFFRES . SUITE DE CHIFFRES Millisecondes


MS
DECIMAUX DECIMAUX

Pour passer la reprsentation dcimale, il faut que les units temporelles


naient pas encore t dfinies

Figure 11-15 Syntaxe : reprsentation dcimale

Exemples Voici des indications correctes :


TIME#20.5D correspond 20,5 jours
TIME#45.12M correspond 45,12 minutes
T#300MS correspond 300 millisecondes

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 11-11
Dclaration de constantes et de repres de saut

La reprsentation par niveaux vous permet dexprimer la dure comme une


squence de jours, heures, minutes, secondes ou millisecondes. Lomission de com-
posantes individuelles y est permise, comme le montre la figure 11-16. Vous devez
cependant indiquer au minimum une composante.

Reprsentation par niveaux

SUITE DE CHIFFRES SUITE DE CHIFFRES _


D _ H
DECIMAUX DECIMAUX

Jours Heures

SUITE DE CHIFFRES _ SUITE DE CHIFFRES


M S _
DECIMAUX DECIMAUX

Minutes Secondes

SUITE DE CHIFFRES _
DECIMAUX MS

Millisecondes

Figure 11-16 Syntaxe : reprsentation par niveaux

Voici des indications correctes :


TIME#20D_12H
TIME#20D_10H_25M_10s
TIME#200S_20MS

SCL pour SIMATIC S7-300/400, Programmation de blocs


11-12 C79000-G7077-C522-01
Dclaration de constantes et de repres de saut

Heure du jour Comme le montre la figure 11-17, lheure du jour est introduite par le prfixe
TIME_OF_DAY# ou TOD#.
Heure du jour

TIME_OF_DAY#

Indication de lheure du jour

TOD#

Figure 11-17 Syntaxe : heure du jour

Pour indiquer lheure du jour, vous entrez les heures, minutes et secondes spares
par deux-points. Lindication des millisecondes est optionnelle. Elle est spare des
autres par un point. La figure 11-18 reprsente la syntaxe de lindication de lheure
du jour :

Indication de lheure du jour

SUITE DE CHIFFRES SUITE DE CHIFFRES


DECIMAUX : DECIMAUX :

Indication des heures Indication des minutes

SUITE DE CHIFFRES SUITE DE CHIFFRES


DECIMAUX . DECIMAUX

Indication des secondes Indication des millisecondes

Figure 11-18 Syntaxe : indication de lheure du jour

Voici des indications correctes :


//Indication de lheure du jour
HEURE1:= TIME_OF_DAY#12:12:12.2;
HEURE2:= TOD#11:11:11.7.200;

Date et heure Comme le montre la figure 11-19, lindication de la date et de lheure est introduite
par le prfixe DATE_AND_TIME# ou DT#. Il sagit dune constante littrale forme
de lindication de la date et de celle de lheure du jour.

Date et heure
DATE_AND_TIME#

Indication de la date Indication de lheure du jour

DT#

Figure 11-19 Syntaxe : date et heure

Cet exemple illustre lindication de la date et de lheure :


//Indication de la date et de lheure
HEURE1:= DATE_AND_TIME#1995-01-01-12:12:12.2;
HEURE2:= DT#1995-02-02-11:11:11;

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 11-13
Dclaration de constantes et de repres de saut

11.6 Repres de saut

Description Les repres de saut (tiquettes) servent dfinir le branchement dune instruction
GOTO (voir paragraphe 11.4).

Dclaration de Les repres de saut doivent tre dclars avec leur mnmonique dans la section de
repres dclaration dun bloc de code (voir paragraphe 8.4) :

Section de dclaration des repres de saut

LABEL IDENTIFICATEUR ; END_LABEL


Repre de saut
,

Figure 11-20 Syntaxe : section de dclaration des repres de saut

Exemple Lexemple suivant illustre la dclaration des repres de saut :

LABEL
REPERE1, REPERE2, REPERE3;
END_LABEL;

Exemple 11-4 Repres de saut

SCL pour SIMATIC S7-300/400, Programmation de blocs


11-14 C79000-G7077-C522-01
Dclaration de donnes globales 12
Prsentation Les donnes globales sont des donnes que tout bloc de code (FC, FB, OB) peut
utiliser en les adressant de manire absolue ou symbolique. Le prsent chapitre pr-
sente les diverses zones de mmoire et dcrit comment adresser ces donnes.

Structure du Paragraphe Thme Page


chapitre 12.1 Prsentation 12-2
12.2 Zones de mmoire dune CPU 12-3
12.3 Adressage absolu des zones de mmoire de la CPU 12-4
12.4 Adressage symbolique des zones de mmoire de la CPU 12-6
12.5 Adressage index des zones de mmoire de la CPU 12-7
12.6 Blocs de donnes 12-8
12.7 Adressage absolu des blocs de donnes 12-9
12.8 Adressage index des blocs de donnes 12-11
12.9 Adressage structur des blocs de donnes 12-12

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 12-1
Dclaration de donnes globales

12.1 Prsentation

Donnes globales Dans SCL, vous avez la possibilit dadresser des donnes globales. Il en existe
deux sortes :
S Les zones de mmoire de la CPU :
Il sagit de donnes dclares dans le systme, comme par exemple les entre,
les sorties et les mmentos (voir paragraphe 7.5). Leur nombre dpend de votre
CPU.
S Les donnes utilisateur globales sous forme de blocs de donnes que vous
pouvez charger :
Ces zones de donnes se trouvent dans des blocs de donnes. Pour pouvoir les
utiliser, vous devez pralablement crer les blocs et y dclarer les donnes. Dans
le cas de blocs de donnes dinstance, elles rsultent de blocs fonctionnels et
sont cres automatiquement.

Mode dadressage L adressage des donnes globales peut tre :


S absolu : avec un identificateur doprande et une adresse absolue,
S symbolique : avec un mnmonique que vous avez pralablement dfini dans la
table des mnmoniques (voir /231/),
S index : avec un identifiacteur doprande et un indice de tableau,
S structur : avec une variable.

Tableau 12-1 Utilisation des modes dadressage des donnes globales

Mode dadressage Zones de mmoire Donnes utilisateur globales


de la CPU
absolu oui oui
symbolique oui oui
index oui oui
structur non oui

SCL pour SIMATIC S7-300/400, Programmation de blocs


12-2 C79000-G7077-C522-01
Dclaration de donnes globales

12.2 Zones de mmoire dune CPU

Dfinition Les zones de mmoire dune CPU sont des zones dclares dans le systme, que
vous navez par consquent pas besoin de dclarer dans votre bloc de code.

Diverses zones de Chaque CPU met votre disposition les zones de mmoire suivantes possdant leur
mmoire propre zone dadressage :
S entres/sorties de la mmoire image,
S entres/sorties de la priphrie,
S mmentos,
S temporisations, compteurs (voir chapitre 17).

Syntaxe de Vous adressez les zones de mmoire de la CPU dans une affectation de valeur rali-
ladressage se dans la section des instructions dun bloc de code (voir paragraphe 14.3) par :
S adressage simple, absolu, symbolique, ou
S adressage index.

Adressage simple de la mmoire

IDENTIFICATEUR Adresse
DOPERANDE

Adressage absolu

IDENTIFICATEUR

Mnmoniqe Adressage symbolique

Adressage index de la mmoire


Indice

IDENTIFICATEUR Expression
[ de base ]
DOPERANDE

Figure 12-1 Syntaxe : adressage simple et index de la mmoire

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 12-3
Dclaration de donnes globales

12.3 Adressage absolu des zones de mmoire de la CPU

Principe Ladressage absolu dune zone de mmoire seffectue par exemple en affectant une
valeur une variable de mme type :
ETAT_2:= EB10;

Adressage absolu
Variable de mme type

Lidentificateur absolu dsigne une zone de mmoire dans la CPU, que vous spci-
fiez en indiquant lidentificateur doprande (EB dans notre exemple) suivi de
ladresse (ici 10).

Identificateur Lidentificateur absolu est form dun identificateur doprande, lui-mme compos
absolu dun prfixe de mmoire et dun prfixe de taille, ainsi que dune adresse.

Prfixe de taille
Prfixe de mmoire E B 10 Adresse

Identificateur doprande

Identificateur Lassociation dun prfixe de mmoire et dun prfixe de taille constitue un identifi-
doprande cateur doprande.

Identificateur doprande

Prfixe Prfixe
de mmoire de taille

Figure 12-2 Syntaxe : identificateur doprande

Prfixe de Le prfixe de mmoire permet de dfinir le type de zone de mmoire. Vous disposez
mmoire des types reprsents la figure 12-31:

Prfixe de mmoire I
E Entre

Q
A Sortie

M M Mmento

PE PI Priphrie des entres

PA PQ Priphrie des sorties


Abrviations SIMATIC Abrviations CEI

Figure 12-3 Syntaxe : prfixe de mmoire

1 Selon le choix opr dans le SIMATIC Manger (slection du compilateur), ce sont les abrviations SIMATIC (alleman-
des) ou les abrviations CEI (internationales) dont la signification est rserve. Le choix des abrviations ne dpend
pas de celui de la langue.

SCL pour SIMATIC S7-300/400, Programmation de blocs


12-4 C79000-G7077-C522-01
Dclaration de donnes globales

Prfixe de taille Lindication du prfixe de taille vous permet de spcifier la taille ou le type de la
zone de mmoire qui doit tre lue dans la priphrie, par exemple un octet ou un
mot (voir figure 12-4). Si vous spcifiez un bit, cette indication est optionnelle. La
syntaxe est indique par la figure 12-4 :

Prfixe de taille
X Bit

B Octet

W Mot

D Double mot

Figure 12-4 Syntaxe : prfixe de taille

Adresse Pour ladresse, vous indiquez une adresse absolue qui dsigne un bit, un octet, un
mot ou un double mot, selon le prfixe de taille que vous avez utilis. Si vous avez
spcifi un bit , vous pouvez indiquer une adresse binaire supplmentaire, voir
figure 12-5. Le premier numro correspond ladresse doctet et le second
ladresse binaire.

Adresse
Numro . Numro

uniquement pour une adresse binaire

Figure 12-5 Syntaxe : adresse

Exemples Voici des exemples dadressage absolu :

OCTET_ETAT := EB10;
ETAT_3 := E1.1;
Valeur_mesure := EW20;

Exemple 12-1 Adressage absolu

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 12-5
Dclaration de donnes globales

12.4 Adressage symbolique des zones de mmoire de la CPU

Principe La programmation symbolique consiste adresser une zone de mmoire de la CPU


en utilisant un mnmonique, la place dun identificateur doprande et dune
adresse :

Mnmonique Oprande Type de dones Commentaire


Contact _moteur E 1.7 BOOL Commutateur de
contact du moteur A 1
Entre EW 10 INT Mot dtat dentre
Octet dentre1 EB1 BYTE Octet dentre
Entre 1.1 E 1.1 BOOL Barrire photolectrique
Voies de mesure MW2 WORD Mmoire des valeurs de
mesure

Pour affecter les mnmoniques aux oprandes respectifs de votre programme utilisa-
teur, vous devez crer une table de mnmoniques.
Tous les types de donnes simples sont autoriss, si tant est que leur longueur est
suffisante pour la longueur dadressage.

Adressage Ladressage consiste par exemple affecter une valeur une variable de mme type
avec le mnmonique dclar.
VALEUR_MESURE_1:= Contact_moteur;

Cration dune La cration de la table de mnmoniques et la saisie des valeurs doit tre ralise
table de avec STEP 7.
mnmoniques
Vous pouvez ouvrir la table de mnmoniques avec SIMATIC Manager, ou directe-
ment avec SCL en choisissant la commande Outils Table de mnmoniques.
Vous avez en outre la possibilit dy importer dautres tables de mnmoniques
cres avec un diteur de texte quelconque et enregistres sous forme de fichiers de
texte afin de les y traiter (pour plus dinformations reportez-vous au guide de lutili-
sateur /231/.

Exemples Voici des exemples dadressage symbolique :

OCTET_ETAT := Octet_entre_bas;
ETAT_3 := Entre 1.1;
Valeur_mesure := Canaux_mesure;

Exemple 12-2 Adressage symbolique

SCL pour SIMATIC S7-300/400, Programmation de blocs


12-6 C79000-G7077-C522-01
Dclaration de donnes globales

12.5 Adressage index des zones de mmoire de la CPU

Principe Vous avez galement la possibilit deffectuer un adressage index des zones de
mmoire de la CPU. Lavantage par rapport ladressage absolu rside dans le fait
que vous pouvez adresser les zones de mmoire de manire dynamique, en utilisant
des indices variables. Ainsi, vous pouvez par exemple utiliser la variable de contrle
dune boucle FOR comme indice.
Ladressage index dune zone de mmoire est similaire ladressage absolu et se
distingue que dans lindication de ladresse. A la place de ladresse, vous devez sp-
cifier un indice. Il peut sagir dune constante, dune variable ou dune expression
arithmtique.

Identificateur Dans ladressage index, lidentificateur absolu est form de lidentificateur dop-
absolu rande ainsi que dune expression de base comme indice (voir paragraphe 12.3).

Prfixe de taille
Prfixe de mmoire E X [i,j] Adresse
Expression de base
comme indice,
Identificateur doprande indique entre crochets

Rgles appliquer Lindexation doit rpondre aux rgles suivantes :


ladressage
S Dans le cas dun adressage du type de donnes BYTE, WORD ou DWORD, vous
index
devez utiliser exactement un indice. Celui-ci sera interprt comme adresse
doctet. La longueur dadressage sera dtermine par le prfixe de taille.
S Dans le cas dun adressage du type de donnes BOOL, vous devez utiliser deux
indices. Le premier spcifie ladresse doctet, le second la position du bit dans
cet octet.
S Chaque indice doit tre une expression arithmtique du type de donnes INT.

VALEUR_MESURE_1 := EW[COMPTEUR];

MARQUE_SORTIE := E[NO_OCT, NO_BIT];

Exemple 12-3 Adressage index

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 12-7
Dclaration de donnes globales

12.6 Blocs de donnes

Prsentation Dans les blocs de donnes, vous pouvez enregistrer et traiter toutes les donnes dont
le domaine de validit stend sur lensemble du programme ou du projet de votre
application. Tout bloc de code y a accs en lecture et en criture.

Dclaration La syntaxe de la structure des blocs de donnes est dcrite au chapitre 8.


Il existe trois types de blocs de donnes :
S les blocs de donnes,
S les blocs de donnes dinstance.

Adressage des Ladressage des donnes de tout bloc de donnes peut tre :
blocs de donnes
S simple ou absolu,
S index,
S structur.
La figure 12-6 illustre ces divers modes dadressage :

Adressage absolu dun DB


     
 Adresse

Adressage index dun DB Index

Identificateur doprande Expression


[ de base ]

Adressage structur dun DB

Identificateur doprande . Variable


simple

Adressage symbolique dun DB

Mnmonique dun DB . Variable


simple

Figure 12-6 Syntaxe : adressage absolu, index et structur des blocs de donnes

SCL pour SIMATIC S7-300/400, Programmation de blocs


12-8 C79000-G7077-C522-01
Dclaration de donnes globales

12.7 Adressage absolu des blocs de donnes

Principe De mme que pour les zones de mmoire de la CPU, ladressage absolu un bloc de
donnes est ralis par affectation dune valeur une variable de mme type. Aprs
la dsignation du DB, vous indiquez le mot-cl D , suivi du prfixe de taille (par
exemple X pour BIT) et de ladresse doctet (par exemple 13.1).

ETAT_5:= DB11.DX13.1;

Adresse
Prfixe de taille
Dsignation du DB
Variable de mme type

Adressage Comme le montre la figure 12-7, vous spcifiez ladressage en indiquant la dsigna-
tion du DB, suivi du prfixe de taille et de ladresse.

Adressage absolu dun DB


Identificateur doprande

DESIGNATION Prfixe
DU DB . D de taille Adresse

Figure 12-7 Syntaxe : adressage absolu dun bloc de donnes

Prfixe de taille Il prcise la longueur de la zone de mmoire qui doit tre adresse dans le bloc de
donnes, par exemple un octet ou un mot. Si vous ne souhaitez spcifier quun bit,
lindication du prfixe de taille est optionnelle. La figure 12-8 reprsente la syntaxe
du prfixe de taille.

Prfixe de taille

X Bit

B Octet
D
W Mot

D Double mot

Figure 12-8 Syntaxe : prfixe de taille

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 12-9
Dclaration de donnes globales

Adresse Selon le prfixe de taille utilis, vous indiquez une adresse absolue dsignant un bit,
un octet, un mot ou un double mot, comme le montre la figure 12-9. Si vous navez
spcifi quun bit , vous avez la possibilit dindiquer une adresse binaire suppl-
mentaire. Le premier numro dsigne alors dadresse doctet, le second ladresse du
bit.

Adresse
Numro . Numro

uniquement pour une adresse binaire

Figure 12-9 Syntaxe : adresse

Exemples Voici quelques exemples dadressage absolu dun bloc de donnes. Dans la premire
partie, le bloc de donnes est indiqu de manire absolue, dans la seconde il lest de
manire symbolique :

OCTET_ETAT := DB101.DB10;
ETAT_3 := DB30.D1.1;
Valeur_mesure := DB25.DW20;

OCTET_ETAT := Donnes_tat.DB10;
ETAT_3 := Nouvelles donnes D1.1;
Valeur_mesure := Donnes_mesure.DW20;
ETAT_1 := WORD_TO_BLOCK_DB(INDEX).DW10;

Exemple 12-4 Adressage absolu

SCL pour SIMATIC S7-300/400, Programmation de blocs


12-10 C79000-G7077-C522-01
Dclaration de donnes globales

12.8 Adressage index des blocs de donnes

Adressage index Vous avez galement la possibilit dadresser les blocs de donnes globaux de
manire indexe. Par rapport ladressage absolu, lavantage rside dans le fait que
vous adressez le DB de manire dynamique, en utilisant des indices variables. Vous
pouvez par exemple utiliser la variable de contrle dune boucle FOR comme
indice.
Ladressage index dun bloc de donnes est similaire ladressage absolu. Seule
lindication de ladresse est diffrente.
A la place de ladresse, vous indiquez un indice qui peut tre une constante, une
variable ou une expression arithmtique.

Identificateur Dans ladressage index, lidentificateur absolu est form de lidentificateur dop-
absolu rande (voir paragraphe 12.7) ainsi que dune expression de base pour lindexage.

Prfixe de taille Prfixe de mmoire


Dsignation du DB. D X [i,j] Adresse
Expression de base comme indice,
indique entre crochets
Identificateur doprande

Rgles appliquer Lindexation doit rpondre aux rgles suivantes :


dadressage
S Chaque indice doit tre une expression arithmtique du type de donnes INT.
index
S Dans le cas dun adressage du type de donnes BYTE, WORD ou DWORD, vous
devez utiliser exactement un indice. Celui-ci sera interprt comme adresse
doctet. La longueur dadressage sera dtermine par le prfixe de taille.
S Dans le cas dun adressage du type de donnes BOOL, vous devez utiliser deux
indices. Le premier spcifie ladresse doctet, le second la position du bit dans
cet octet.

ETAT_1:= DB11.DW[COMPTEUR];
ETAT_2:= DB12.DW[NO_W, NO_BIT];
ETAT_1:= Base_donnes1.DW[COMPTEUR];
ETAT_2:= Base_donnes2.DW[NO_W, NO_BIT];
ETAT_1:= WORD_TO_BLOCK_DB(INDEX).DW[COMPTEUR];

Exemple 12-5 Adressage index

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 12-11
Dclaration de donnes globales

12.9 Adressage structur des blocs de donnes

Principe Vous ralisez ladressage structur en affectant une valeur une variable de mme
type.
HEURE_1:= DB11.HEURE_JOUR ;
Variable simple
Dsignation du DB
Variable de mme type

Pour rfrencer la variable dans le bloc de donnes, vous indiquez la dsignation du


DB, puis spar par un point, le nom de la variable simple. La syntaxe est reprsen-
te la figure 12-6.
Une variable simple est une variable laquelle vous avez affect un type de donnes
simple ou complexe lorsque vous lavez dclare.

Exemples
Dans la section de dclaration du FB10 :
VAR
Rsultat: STRUCT ERG1 : INT;
ERG2 : WORD;
END_STRUCT
END_VAR
Type de donnes utilisateur UDT1 :
TYPE UDT1 STRUCT ERG1 : INT;
ERG2 : WORD;
END_STRUCT
DB20 avec type de donnes utilisateur :
DB20
UDT1
BEGIN ...
DB30 sans type de donnes utilisateur :
DB30 STRUCT ERG1 : INT;
ERG2 : WORD;
END_STRUCT
BEGIN ...

Exemple 12-6 Dclaration des donnes pour les blocs de donnes

Bloc fonctionnel avec les modes dadressage :


..
FB10.DB10();
MOTERG_A := DB10.Rsultat.ERG2;
MOTERG_B := DB20.ERG2;
MOTERG_C := DB30.ERG2; Message derreur !

Exemple 12-7 Adressage des donnes des blocs de donnes

SCL pour SIMATIC S7-300/400, Programmation de blocs


12-12 C79000-G7077-C522-01
Expressions, oprateurs et oprandes 13
Prsentation Une expression reprsente une valeur qui sera calcule durant le processus de com-
pilation ou lexcution du programme. Elle comporte des oprandes (par exemple
des constantes, des variables ou des valeurs de fonctions) et des oprateurs (par
exemple *, /, +, - ).
Le type dexpression est dtermin par le type de donnes des oprandes et les op-
rateurs utiliss. SCL distingue les :
S expressions arithmtiques,
S expressions de puissances,
S expressions de comparaison,
S expressions logiques.

Structure du Paragraphe Thme Page


chapitre 13.1 Oprateurs 13-2
13.2 Syntaxe dune expression 13-3
13.2.1 Oprandes 13-5
13.3 Expressions arithmtiques 13-7
13.4 Expressions de puissances 13-9
13.5 Expressions de comparaison 13-10
13.6 Expressions logiques 13-12

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 13-1
Expressions, oprateurs et oprandes

13.1 Oprateurs

Prsentation Les expressions sont formes doprateurs et doprandes. La plupart des oprateurs
de SCL combinent deux oprandes et sont ce de fait dsigns doprateurs binaires.
Les autres oprateurs nutilisent quun oprande et sont donc des oprateurs unaires.
Un oprateur binaire sinscrit entre deux oprandes (par exemple A + B). Un opra-
teur unaire prcde immdiatement son oprande (par exemple -B).
Cest la priorit des oprateurs, indique dans le tableau 13-1, qui dtermine lordre
de calcul. Le chiffre 1 correspond la priorit la plus leve.
Tableau 13-1 Liste des oprateurs

Classes Classe Oprateur Reprsentation Priorit


doprateurs Oprateur daffectation Affectation := 11
Cet oprateur inscrit une
valeur dans une variable

Oprateurs Puissance ** 2
arithmtiques Oprateurs unaires
Plus unaire + 3
Ces oprateurs permet- Moins unaire - 3
tent deffectuer des cal-
culs mathmatiques
Oprateurs arithmtiques de base
Multiplication * 4
Fonction Modulo MOD 4
Division dentiers DIV 4
Addition + 5
Soustraction - 5
Oprateurs de compa- Infriorit < 6
raison Supriorit > 6
Infriorit ou galit <= 6
Ces oprateurs permettent
Supriorit ou galit >= 6
de formuler des conditions
Egalit = 7
Diffrence <> 7

Oprateurs Ngation (unaire) NOT 3


logiques Oprations logiques de base
Ces oprateurs sont utiliss Et AND ou & 8
dans des expressions logi- Ou exclusif XOR 9
ques
Ou OR 10

Parenthses (expression) ( ) 1

SCL pour SIMATIC S7-300/400, Programmation de blocs


13-2 C79000-G7077-C522-01
Expressions, oprateurs et oprandes

13.2 Syntaxe dune expression

Prsentation Les diverses expressions sont reprsentes dans le diagramme syntaxique de la fi-
gure 13-1. Puisque les expressions arithmtiques, expressions logiques, expressions
de comparaison et expressions de puissances prsentent quelques particularits, elles
seront traites sparment dans les paragraphes 13.3 13.6.

Expression

Oprande

Expression Oprateur Expression


logique de base

Oprateur
de comparaison

Oprateur atithm
tique de base

Puissance
Expression ** Exposants

+ Expression
Plus anaire

Moins anaire

NOT Ngation

( Expression )

Figure 13-1 Syntaxe : expression

Rsultat dune Le rsultat dune expression peut tre utilis :


expression
S pour tre affect une variable,
S comme condition pour une instruction de contrle,
S comme paramtre pour lappel dune fonction ou dun bloc fonctionnel.

Ordre de calcul Lordre de calcul de lexpression est dtermin par :


S la priorit des oprateurs prsents,
S leur position de gauche droite,
S les parenthses utilises dans le cas doprateurs de mme priorit.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 13-3
Expressions, oprateurs et oprandes

Rgles Le calcul dexpressions applique des rgles prcises :


S Les oprateurs sont traits dans leur ordre hirarchique.
S Les oprateurs de mme priorit sont traits de gauche droite.
S Faire prcder un identificateur dun signe moins quivaut le multiplier par -1.
S Les oprateurs arithmtiques ne peuvent pas tre immdiatement conscutifs.
Ainsi, lexpression a * -b nest pas autorise, par contre a * ( -b ) lest.
S Lutilisation de parenthses peut annuler la priorit entre des oprateurs, car les
parenthses possdent la priorit la plus leve.
S Une expression entre parenthses est considre comme un oprateur unique et
est toujours calcule en premier.
S Le nombre de parenthses douverture doit tre quivalent celui des parenth-
ses de fermeture.
S Les oprateurs arithmtiques ne peuvent sappliquer des caractres ou des
donnes logiques. Ainsi des expressions comme A+B et (n<=0) + (n<0) sont
errones.

Exemples Voici comment peuvent scrire diverses expressions :

EB10 // Oprande
A1 AND (A2) // Expression logique
(A3) < (A4) // Expression de comparaison
3+3*4/2 // Expression arithmtique

VALEUR_MESURE**2 // Expression de puissance


(DIFFERENCE)**DB10.EXPOSANT // Expression de puissance
(SOMME)**FC100(..) // Expression de puissance

Exemple 13-1 Diverses expressions

SCL pour SIMATIC S7-300/400, Programmation de blocs


13-4 C79000-G7077-C522-01
Expressions, oprateurs et oprandes

13.2.1 Oprandes

Prsentation Les oprandes sont des objets avec lesquels vous pouvez former des expressions. Ils
sont reprsents par le diagramme syntaxique de la figure 13-2.

Oprande Constante

Variable tendue

(Expression)

NOT Oprande

Figure 13-2 Syntaxe : oprande

Constante Vous pouvez utiliser une constante sous forme de valeur numrique, de mnmonique
ou de chane de caractres.

Constante
Valeur numrique

Chane de caractres

Mnmonique

Figure 13-3 Syntaxe : constantes


Voici des exemples de constantes autorises :
4_711
4711
30.0
CARACTERE
FACTEUR

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 13-5
Expressions, oprateurs et oprandes

Variable tendue Une variable tendue est un concept gnral pour dsigner une srie de variables qui
seront traites plus en dtails au chapitre 14.

Variable tendue
Variable simple

Variable absolue
pour les zones de mmoire
de la CPU
Variable dans un DB

Variable dans une


instance locale

Appel de FC

Figure 13-4 Syntaxe : variable tendue

Exemples de Voici des exemples de variables autorises :


variables tendues

VALEUR_CONSIGNE Variable simple


EW10 Variable absolue
E100.5 Variable absolue
DB100.DW[INDICE] Variable dans un DB
MOTEUR.REGIME Variable dans une instance locale
SQR(20) Fonction standard
FC192(VAL_CONSIGNE) Appel de fonction

Exemple 13-2 Variables tendues dans des expressions

Nota
Lors dun appel de fonction, le rsultat du calcul, savoir la valeur en retour remplace
la dsignation de la fonction dans lexpression. Les fonctions VOID qui ne possdent
pas de valeur en retour ne peuvent donc pas tre utilises comme oprandes dans des
expressions.

SCL pour SIMATIC S7-300/400, Programmation de blocs


13-6 C79000-G7077-C522-01
Expressions, oprateurs et oprandes

13.3 Expressions arithmtiques

Dfinition Une expression arithmtique est forme doprateurs arithmtiques et permet de


traiter des types de donnes numriques.

Oprateurs arithmtiques de base

* / MOD DIV +

Figure 13-5 Syntaxe : oprateurs arithmtiques de base

Oprations Le tableau 13-2 reprsente les oprations arithmtiques possibles et indique quel
arithmtiques type de donnes leur rsultat est affect, en fonction des oprandes utiliss.
ANY_INT reprsente les types de donnes INT, DINT
ANY_NUM reprsente les types de donnes ANY_INT et REAL

Tableau 13-2 Oprateurs arithmtiques

Opration Oprateur 1er oprande 2nd oprande Rsultat 1 Priorit


Puissance ** ANY_NUM INT REAL 2
Plus unaire + ANY_NUM - ANY_NUM 3
TIME - TIME
Moins unaire - ANY_NUM - ANY_NUM 3
TIME - TIME
Multiplication * ANY_NUM ANY_NUM ANY_NUM 4
TIME ANY_INT TIME
Division / ANY_NUM ANY_NUM ANY_NUM 4
TIME ANY_INT TIME
Division dentiers DIV ANY_INT ANY_INT ANY_INT 4
TIME ANY_INT TIME
Division Modulo MOD ANY_INT ANY_INT ANY_INT 4
+ ANY_NUM ANY_NUM ANY_NUM 5
Addition TIME TIME TIME
TOD TIME TOD
DT TIME DT
ANY_NUM ANY_NUM ANY_NUM 5
Soustraction - TIME TIME TIME
TOD TIME TOD
DATE DATE TIME
TOD TOD TIME
DT TIME DT
DT DT TIME

1 Il est noter que le type du rsultat est dtermin par le type doprande le plus puissant.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 13-7
Expressions, oprateurs et oprandes

Rgles Lordre de traitement des oprateurs dans une expression arithmtique est fonction
de leur priorit (voir tableau 13-2).
S Pour une meilleure lisibilit, il est recommand dindiquer les nombres ngatifs
entre parenthses, mme lorsque cela nest pas indispensable.
S Pour des divisions avec deux oprandes entiers de type INT, les oprateurs
DIV et / fournissent le mme rsultat (cf. exemple 13-3).
S Avec les oprateurs de division /, MOD et DIV, le second oprande doit
tre diffrent de zro.
S Lorsque lun des oprandes est du type INT (entier) et le second du type REAL
(nombre virgule flottante), le rsultat est toujours du type REAL.

Exemples Les exemples suivants illustrent la formation dexpressions arithmtiques.


Soient i et j, deux variables de type entier, dont les valeurs respectives sont 11 et -3.
La figure 13-3 montre quelques expressions avec des entiers et donne le rsultat
correspondant.

Expression Valeur

i + j 8
i - j 14
i * j -33
i DIV j -3
i MOD j 2
i/j -3

Exemple 13-3 Expressions arithmtiques

Soient i et j, deux variables entires dont les valeurs respectives sont 3 et -5. Le
rsultat de lexpression arithmtique reprsente dans lexemple 13-4, savoir la
valeur entire 7, est ensuite affect la variable VALEUR.

VALEUR:= i + i * 4 / 2 - (7+i) / (-j) ;

Exemple 13-4 Expression arithmtique

SCL pour SIMATIC S7-300/400, Programmation de blocs


13-8 C79000-G7077-C522-01
Expressions, oprateurs et oprandes

13.4 Exposants

Prsentation La figure 13-6 reprsente la formation dun exposant dune expression de puissance.
(voir paragraphe 13.2). Il est noter que vous pouvez en particulier utiliser des
variables tendues pour la formation dun exposant.

Exposant

Variable tendue

SUITE DE CHIFFRES DECIMAUX

( SUITE DE CHIFFRES DECIMAUX )

Figure 13-6 Syntaxe : exposant

VALEUR_MESURE**2 //Expression de puissance


(DIFFERENCE)**DB10.EXPOSANT //Expression de puissance
(SOMME)**FC100 //Expression de puissance

Exemple 13-5 Expressions de puissance avec diverses exposants

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 13-9
Expressions, oprateurs et oprandes

13.5 Expressions de comparaison

Dfinition Une expression de comparaison est une expression de type BOOL forme avec des
oprateurs de comparaison. Il sagit dune combinaison doprandes du mme type
ou de la mme classe de types avec les oprateurs reprsents la figure 13-7.

Oprateurs de comparaison

< > <= >= = <>

Figure 13-7 Syntaxe : oprateurs de comparaison

Oprateurs de Les oprateurs de comparaison comparent la valeur numrique des deux oprandes.
comparaison
1er Oprande Oprateur 2nd Oprande Valeur boolenne
Le rsultat de la comparaison est une valeur qui est soit vraie, soit fausse. La valeur
est vraie (TRUE) si la comparaison est ralise, fausse (FALSE) si elle ne
lest pas.

Rgles Pour former une expression de comparaison, vous devez appliquer les rgles suivan-
tes :
S Vous devriez indiquer les oprandes logiques entre parenthses pour prciser
lordre dexcution des oprations logiques.
S Vous pouvez appliquer la logique boolenne pour combiner des expressions logi-
ques et formuler des conditions du type si a < b et b < c, alors... . Comme
expressions, vous pouvez utiliser des variables ou des constantes du type BOOL,
de mme que des expressions de comparaison.
S Pour les classes de types suivantes, toutes les variables peuvent tre compares :
INT, DINT, REAL
BOOL, BYTE, WORD, DWORD
CHAR, STRING
S Pour les types de temps suivants, seules les variables appartenant au mme type
peuvent tre compares :
DATE, TIME, TOD, DT
S La comparaison de caractres (type CHAR) seffectue daprs la chane de
caractres ASCII.
S Il nest pas possible de comparer les variables S5TIME.
S Lorsque les deux oprandes sont du type DT ou STRING, vous devez les compa-
rer avec la fonction CEI correspondante.

SCL pour SIMATIC S7-300/400, Programmation de blocs


13-10 C79000-G7077-C522-01
Expressions, oprateurs et oprandes

Exemples Les exemples suivants illustrent la formation dexpressions de comparaison :

// Ngation du rsultat de lexpression de comparaison

IF NOT (COMPTEUR > 5) THEN


//...
//...
END_IF;

// Ngation du rsultat de la premire expression de


// comparaison, puis combinaison avec le rsultat
// de la seconde

A:= NOT (COMPTEUR1 = 4) AND (COMPTEUR2 = 10) ;

// Combinaison OU de deux expressions de comparaison


WHILE (A >= 9) OR (INTERROGATION <> n) DO.... ;
//...
//...
END_WHILE;

Exemple 13-6 Expressions logiques

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 13-11
Expressions, oprateurs et oprandes

13.6 Expressions logiques

Dfinition Une expression logique est forme doprateurs logiques (AND, &, XOR, OR)
qui permettent de combiner des oprandes logiques (de type BOOL) ou des variables
de type BYTE, WORD ou DWORD. La ngation (cest--dire linversion) de la
valeur dun oprande logique sobtient avec loprateur NOT.

Oprateurs logiques de base NOT nest pas un oprateur logique de base !


Loprateur agit comme un signe.

AND & XOR OR

Figure 13-8 Syntaxe : oprateurs logiques de base

Oprateurs Le tableau 13-3 reprsente les expressions logiques disponibles et les types de don-
logiques nes du rsultat et des oprandes utiliss.
ANY_BIT reprsente les types de donnes BOOL, BYTE, WORD, DWORD

Tableau 13-3 Oprateurs logiques

Opration Oprateur 1er op- 2nd op- Rsultat Priorit


rande rande
Ngation NOT ANY_BIT - ANY_BIT 3
Combinaison ET AND ANY_BIT ANY_BIT ANY_BIT 8
Combinaison OU XOR ANY_BIT ANY_BIT ANY_BIT 9
exclusif
Combinaison OU OR ANY_BIT ANY_BIT ANY_BIT 10

Rsultats Le rsultat dune expression logique peut tre soit :


S 1 (true) ou 0 (false) dans le cas de la combinaison doprandes boolens
soit
S un profil binaire aprs la combinaison binaire des deux oprandes.

SCL pour SIMATIC S7-300/400, Programmation de blocs


13-12 C79000-G7077-C522-01
Expressions, oprateurs et oprandes

Exemples Soit n une variable entire avec la valeur 10 et s une variable de type caractre
reprsentant la lettre A. Voici des expressions logiques combinant ces deux varia-
bles :

Expression Valeur

( n>0 ) AND ( n<20) vrai


( n>0 ) AND ( n<5 ) faux
( n>0 ) OR ( n<5 ) vrai
( n>0 ) XOR ( n<20) faux
( n=10 ) AND ( s=A) vrai
( n<>5 ) OR ( s>=A) vrai

Exemple 13-7 Expressions logiques

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 13-13
Expressions, oprateurs et oprandes

SCL pour SIMATIC S7-300/400, Programmation de blocs


13-14 C79000-G7077-C522-01
Affectation de valeurs 14
Prsentation Une affectation de valeur permet daffecter la valeur dune expression une varia-
ble, en crasant la valeur prcdente.

Structure du Paragraphe Thme Page


chapitre 14.1 Prsentation 14-2
14.2 Affectation de valeurs des variables de type de donnes 14-3
simple
14.3 Affectation de valeurs des variables de type STRUCT ou 14-4
UDT
14.4 Affectation de valeurs des variables de type ARRAY 14-6
14.5 Affectation de valeurs des variables de type STRING 14-8
14.6 Affectation de valeurs des variables de type 14-9
DATE_AND_TIME
14.7 Affectation de variables absolues pour zones de mmoire 14-10
14.8 Affectation une variable globale 14-11

Informations SCL connat les instructions simples et les instructions structures. Les premires
supplmentaires englobent, outre les affectations de valeurs, les instructions dappel et linstruction
GOTO. Vous trouverez des informations ce sujet dans les chapitres 15 et 16.
Les instructions de contrle pour le branchement de programme et pour le traite-
ment de boucles comptent parmi les instructions structures. Des informations sont
donnes ce sujet au chapitre 15.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 14-1
Affectation de valeurs

14.1 Prsentation

Principe Laffectation dune valeur consiste remplacer la valeur actuelle dune variable par
une nouvelle valeur, donne sous forme dexpression. Celle-ci peut comporter des
identificateurs de fonctions ( FC ) qui vont tre excutes et fournir des valeurs cor-
respondantes (valeurs en retour).
Comme lillustre le diagramme syntaxique, lexpression est calcule dans la partie
droite de laffectation de valeur, le rsultat tant enregistr dans la variable dont le
nom figure gauche du signe daffectation. Les variables autorises sont reprsen-
tes la figure 14-1.

Affectation de valeur

Variable simple := Expression ;

Variable absolue
dans les zones de mmoire
de la CPU
Variable dans un DB

Variable dans une


instance locale

Figure 14-1 Syntaxe : affectation de valeur

Rsultat Le type dune expression daffectation correspond celui de loprande gauche.

SCL pour SIMATIC S7-300/400, Programmation de blocs


14-2 C79000-G7077-C522-01
Affectation de valeurs

14.2 Affectation de valeurs des variables de type de donnes simple

Affectation Toute expression et toute variable de type de donnes simple peuvent tre affectes
une autre variable de type identique.
Identificateur := expression;
Identificateur := variable de type de donnes lementaire;

Exemples Les exemples suivants reprsentent des affectations de valeurs autorises

FUNCTION_BLOCK FBx
VAR
COMMUTATEUR_1 :INT;
COMMUTATEUR_2 :INT;
VALEUR_CONSIGNE_1 :REAL;
VALEUR_CONSIGNE_2 :REAL;
INTERROGATION_1 :BOOL;
HEURE_1 :S5TIME;
HEURE_2 :TIME;
DATE_1 :DATE;
HEURE_JOUR_1 :TIME_OF_DAY;
END_VAR

BEGIN
// Affecter une constante une variable
COMMUTATEUR_1 := -17;
VALEUR_CONSIGNE_1 := 100.1;
INTERROGATION_1 := TRUE;
HEURE_1 :=TIME#1H_20M_10S_30MS;
HEURE_2 :=TIME#2D_1H_20M_10S_30MS;
DATE_1 :=DATE#19960110;
// Affecter une variable
VALEUR_CONSIGNE_1 := VALEUR_CONSIGNE_2;
COMMUTATEUR_2_ := COMMUTATEUR_1;
// Affecter une expression une variable
COMMUTATEUR_2:= COMMUTATEUR_1 * 3;
END_FUNCTION_BLOCK

Exemple 14-1 Affectation de valeurs des variables de type simple

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 14-3
Affectation de valeurs

14.3 Affectation de valeurs des variables de type STRUCT et UDT

Variables de type Les variables de type STRUCT et UDT sont des variables structures qui dsignent
STRUCT et UDT une structure complte ou lune de ces composantes.
Voici des indications correctes de variables comme structures :
Image //Identificateur de structure
Image.lment //Identificateur de composante de
//structure
Image.tableau //Identificateur de tableau simple
//dans une structure
Image.tableau[2,5] //Identificateur dune composante de
//tableau dans une structure

Affectation dune Une structure complte ne peut tre affecte une autre structure que si leurs com-
structure complte posantes possdent les mmes types de donnes et les mmes noms. Voici une affec-
tation correcte :
Nom_structure_1:=Nom_structure_2;

Affectation de A toute composante de structure vous pouvez affecter une variable, une expression
composantes de ou une autre composante de structure de type compatible. Voici des affectations cor-
structure rectes :
Nom_structure_1.lement1 := Valeur;
Nom_structure_1.lement1 := 20.0;
Nom_struct_1.lem1 := Nom_struct_2.lemt1;
Nom_strc_1.nom_tabl1 := Nom_strc_2.nom_tabl2;
Nom_structure_1.nom_tableau[10] := 100;

SCL pour SIMATIC S7-300/400, Programmation de blocs


14-4 C79000-G7077-C522-01
Affectation de valeurs

Exemples Lexemple suivant illustre des affectations de valeurs de donnes de structure :

FUNCTION_BLOCK FB10
VAR
VAR_AUX :REAL;
VALEUR_MESURE :STRUCT //Structure cible
TENSION:REAL;
RESISTANCE:REAL;
Tableau_simple:ARRAY[1..2,1..2] OF INT;
END_STRUCT;

VALEUR_EFFECTIVE :STRUCT //Structure source


TENSION: REAL;
RESISTANCE: REAL;
Tableau_simple:ARRAY[1..2,1..2] OF INT;
END_STRUCT
END_VAR
BEGIN
//Affecter une structure complte
//une structure complte
VALEUR_MESURE:= VALEUR_EFFECTIVE;

//Affecter une composante de structure


//une composante de structure
VALEUR_MESURE.TENSION:= VALEUR_EFFECTIVE.TENSION;

// Affecter une composante de structure


// une variable de mme type
VAR_AUX:= VALEUR_EFFECTIVE.RESISTANCE;

// Affecter une constante


// une composante de structure
VALEUR_MESURE.TENSION:= 4.5;

// Affecter une constante un lment


// dun tableau simple
VALEUR_MESURE.TABLEAU_SIMPLE[1,2]:= 4
END_FUNCTION_BLOCK

Exemple 14-2 Affectations de valeurs des variables de type STRUCT

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 14-5
Affectation de valeurs

14.4 Affectation de valeurs des variables de type ARRAY

Variable de type Un tableau est form de 1 6 dimensions et composantes de tableau au maximum et


tableau comporte des composantes de type identique. Deux possibilits soffrent vous pour
affecter un tableau une variable :
Vous pouvez rfrencer des tableaux complets ou des tableaux partiels. Dans le
premier cas, vous indiquez le nom du tableau.
nom_tableau_1
Pour adresser une composante de tableau unique, vous indiquez le nom du tableau,
suivi des valeurs dindices entre crochets. A chaque dimension correspond un
indice. Ils doivent tre spars par des virgules et indiqus entre crochets. Un indice
doit tre une expression arithmtique de type INT.
nom_tableau_1[2]
nom_tableau_1[4,5]

Affectation dun Vous pouvez affecter un tableau complet un autre tableau. Il faut pour cela que les
tableau complet types de donnes des composantes et les limites des tableaux (indices minimaux et
maximaux) soient identiques. Voici un exemple daffectation correct :
nom_tableau_1:=nom_tableau_2;

Affectation dune Pour affecter des valeurs un tableau partiel, vous indiquez les indices entre cro-
composante de chets aprs le nom du tableau, en en omettant certains, en commenant par la droite.
tableau Vous adressez ainsi un tableau partiel, dont le nombre de dimensions correspond au
nombre dindices omis.
Il en rsulte que bien que vous pouvez rfrencer des lignes et des composantes
individuelles dans une matrice, vous ne pouvez pas rfrencer de colonnes successi-
ves (cest--dire de ... ).
Voici des exemples daffectation correcte :
nom_tableau_1[i]:=nom_tableau_2[j];
nom_tableau_1[i]:=expression;
identificateur_1 :=non_tableau_1[i];

SCL pour SIMATIC S7-300/400, Programmation de blocs


14-6 C79000-G7077-C522-01
Affectation de valeurs

Exemples Les exemples suivants illustrent les affectations de valeurs des tableaux :

FUNCTION_BLOCK FB3
VAR
VALEURS_CONSIGNE :ARRAY [0..127] OF INT;
VALEURS_EFFECTIVES:ARRAY [0..127] OF INT;

// Dclaration dune matrice


// (=tableau bidimensionnel)
// comportant 3 lignes et 4 colonnes
REGULATEUR: ARRAY [1..3, 1..4] OF INT;

// Dclaration dun vecteur


// (=tableau unidimensionnel)
// avec 4 composantes
REGULATEUR_1: ARRAY [1..4] OF INT;
END_VAR

BEGIN
// Affectation dun tableau complet
// un tableau
VALEURS_CONSIGNE:=VALEURS_EFFECTIVES;

// Affectation dun vecteur la seconde ligne


// du tableau REGULATEUR
REGULATEUR [2]:= REGULATEUR_1;

// Affectation dune composante de tableau


// une composante du tableau REGULATEUR
REGULATEUR [1,4]:= REGULATEUR_1 [4];
END_FUNCTION_BLOCK

Exemple 14-3 Affectation de tableaux

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 14-7
Affectation de valeurs

14.5 Affectation de valeurs des variables de type STRING

Variable de type Une variable de type STRING contient une chane dau maximum 254 caractres.
STRING

Affectation A chaque variable du type de donnes STRING, vous pouvez affecter une autre
variable de mme type. Voici des exemples daffectations correctes :
variable_chane_1 := const_litt_chane ;
variable_chane_1 := variable_chane_2 ;

Exemple Les exemples suivants illustrent des affectations de valeurs des variables de type
STRING :

FUNCTION_BLOCK FB3
VAR
AFFICHAGE_1 : STRING[50] ;
STRUCTURE1 : STRUCT
AFFICHAGE_2 : STRING[100] ;
AFFICHAGE_3 : STRING[50] ;
END_STRUCT;
END_VAR
BEGIN
// Affectation dune constante une variable
// de type STRING

AFFICHAGE_1 := Erreur dans module 1 ;


// Affectation dune composante de structure
// une variable de type STRING

AFFICHAGE_1 := STRUCTURE1.AFFICHAGE_3 ;

// Affectation dune variable de type STRING


// une variable de type STRING

If AFFICHAGE_1 <> STRUCTURE.AFFICHAGE_3 THEN


AFFICHAGE_1 := STRUCTURE.AFFICHAGE_3 ;
END_IF;
END_FUNCTION_BLOCK

Exemple 14-4 Affectation de valeurs des variables de type STRING

SCL pour SIMATIC S7-300/400, Programmation de blocs


14-8 C79000-G7077-C522-01
Affectation de valeurs

14.6 Affectation de valeurs des variables de type DATE_AND_TIME

Variable Le type de donnes DATE_AND_TIME dfinit une zone de 64 bits (8 octets) pour y
DATE_AND_TIME indiquer la date et lheure.

Affectation A toute variable du type de donnes DATE_AND_TIME, vous pouvez affecter une
autre variable ou constante de mme type. Voici des exemples daffectations correc-
tes :
variable_dt_1 := constante littrale de type date et heure ;
variable_dt_1 := variable_dt_2 ;

Exemple Les exemples suivants illustrent les affectations de valeurs des variables de type
DATE_AND_TIME :

FUNCTION_BLOCK FB3
VAR
HEURE_1 : DATE_AND_TIME;
STRUCTURE : STRUCT
HEURE_2 : DATE_AND_TIME ;
HEURE_3 : DATE_AND_TIME ;
END_STRUCT;
END_VAR
BEGIN
// Affectation dune constante
// une variable de type DATE_AND_TIME
HEURE_1 := DATE_AND_TIME#1995010112:12:12.2 ;
STRUCTURE.HEURE_3 := DT#1995020211:11:11 ;

// Affectation dun composante de structure


// une variable de type DATE_AND_TIME

HEURE_1 := STRUCTURE.HEURE_2 ;

// Affectation dune variable de type DATE_AND_TIME


// un lment de structure DATE_AND_TIME
If HEURE_1 < STRUCTURE.HEURE_3 THEN
STRUCTURE1.HEURE_3 := HEURE_1;
END_IF;
END_FUNCTION_BLOCK

Exemple 14-5 Affectation de valeurs des variables de type DATE_AND_TIME

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 14-9
Affectation de valeurs

14.7 Affectation de variables absolues pour zones de mmoire

Variable absolue Une variable absolue dsigne les zone de mmoire autorises dune CPU. Comme
dcrit au chapitre 12, vous avez trois possibilits pour adresser ces zones afin de les
affecter des variables.

Variable absolue
Identificateur doprande
Prfixe Prfixe Adresse
de mmoire de taille

Figure 14-2 Syntaxe : variable absolue

Affectation A lexception de la priphrie dentre et de la mmoire image des entres, vous


pouvez affecter toute variable absolue une variable ou une expression de mme
type.

Exemple Les exemples suivants illustrent les affectations de valeurs des identificateurs
absolus :

FUNCTION_BLOCK_FB10
VAR
MOT_ETAT1: WORD;
MOT_ETAT2: BOOL;
MOT_ETAT3: BYTE;
MOT_ETAT4: BOOL;
ADRESSE: INT:= 10;
END_VAR
BEGIN
// Affectation dun mot dentre
// une variable (adressage simple)
MOT_ETAT1:= EW4 ;
// Affectation dun bit de sortie
// une variable (adressage simple)
MOT_ETAT2:= a1.1 ;
// Affectation dun octet dentre
// une variable (adressage index)
MOT_ETAT3:= EB[ADRESSE];
// Affectation dun bit dentre
// une variable (adressage index)
FOR ADRESSE:= 0 TO 7 BY 1 DO
MOT_ETAT4:= e[1,ADRESSE] ;
END_FOR;
END_FUNCTION_BLOCK

Exemple 14-6 Affectations de valeurs des variables absolus

SCL pour SIMATIC S7-300/400, Programmation de blocs


14-10 C79000-G7077-C522-01
Affectation de valeurs

14.8 Affectation une variable globale

Variable dans un Ladressage des variables globales dans des blocs de donnes seffectue galement
DB par affectation dune valeur une variable de type identique ou inversement. Vous
pouvez adresser ces donnes de manire structure, absolue ou indexe (voir chapi-
tre 12).
Variable de DB
Identificateur doprande
DESIGNATION Prfixe
DU DB . D de taille Adresse

Figure 14-3 Syntaxe : variables de DB

Affectation A toute variable globale, vous pouvez affecter une variable ou une expression de
type identique. Voici des exemples daffectation correcte :
DB11.DW10:=20;
DB11.DW10:=Etat;

Exemples Dans lexemple suivant, il est admis comme hypothse, que dans le DB11 vous avez
dclar une variable NOMBRE de type INTEGER et une structure NOMBRE1
avec la composante NOMBRE2 de type INTEGER.

// Bloc de donnes DB11 requis


DATA_BLOCK DB11
STRUCT
NOMBRE : INT:=1;
NOMBRE1 : STRUCT
NOMBRE2:INT := 256;
END_STRUCT;
MOT3 : WORD:=W#16#aa;
MOT4 : WORD:=W#16#aa;
MOT5 : WORD:=W#16#aa;
MOT6 : WORD:=W#16#aa;
MOT7 : WORD:=W#16#aa;
MOT8 : WORD:=W#16#aa;
MOT9 : WORD:=W#16#aa;
MOT10: WORD;
END_STRUCT

BEGIN
MOT10:=W#16#bb;
END_DATA_BLOCK

Exemple 14-7 Affectation de valeurs des variables globales

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 14-11
Affectation de valeurs

Le bloc de donnes DB11 peut ensuite tre utilis de la manire suivante :

VAR
REGULATEUR_1: ARRAY [1..4] OF INT;
MOT_ETAT1 : WORD ;
MOT_ETAT2 : ARRAY [1..4] OF INT;
MOT_ETAT3 : INT ;
ADRESSE : INT ;
END_VAR
BEGIN
// Affectation du mot 10 du DB11
// une variable (adressage simple)
MOT_ETAT1:= DB11.DW10
// La variable NOMBRE du DB11
// est affecte la 1re composante du tableau
// (adressage structur)
REGULATEUR_1[1]:= DB11.NOMBRE;
// Affectation de la composante NOMBRE2
// de la structure NOMBRE1
// la variable MOT_ETAT3
MOT_ETAT3:= DB11.NOMBRE1.NOMBRE2
// Affectation dun mot avec lindice ADRESSE
// du DB11 une variable
// (adressage index)
FOR ADRESSE:= 1 TO 10 BY 1 DO
MOT_ETAT2[ADRESSE]:= DB11.DW[ADRESSE] ;
END_FOR;

Exemple 14-8 Affectation de valeurs des variables globales de DB

SCL pour SIMATIC S7-300/400, Programmation de blocs


14-12 C79000-G7077-C522-01
Instructions de contrle 15
Prsentation Les blocs que vous pouvez programmer de sorte ce que toutes les instructions
soient excutes les unes aprs les autres, du dbut la fin du bloc sont trs peu
nombreux. En rgle gnrale, ce ne sont que certaines instructions (alternatives) qui
sont excutes ou encore rptes plusieurs fois (boucles) en fonction de certaines
conditions. Ce sont des instructions de contrle qui vous permettent de raliser ce
type de programmation dans un bloc SCL.

Structure du Paragraphe Thme Page


chapitre 15.1 Prsentation 15-2
15.2 Instruction IF 15-4
15.3 Instruction CASE 15-6
15.4 Instruction FOR 15-8
15.5 Instruction WHILE 15-10
15.6 Instruction REPEAT 15-11
15.7 Instruction CONTINUE 15-12
15.8 Instruction EXIT 15-13
15.9 Instruction GOTO 15-14
15.10 Instruction RETURN 15-16

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 15-1
Instructions de contrle

15.1 Prsentation

Instructions de Il est frquent quen fonction de certaines conditions, diverses instructions dun pro-
slection gramme doivent tre excutes. Les instructions de slection vous permettent de
programmer de 2 n alternatives afin de raliser un branchement dans lexcution
du programme.
Tableau 15-1 Types de branchements

Type de bran-
Fonction
chement
Instruction IF Linstruction IF vous permet de raliser le branchement de votre
programme vers lune parmi deux alternatives, en fonction dune
condition qui peut tre soit vraie, soit fausse.
Instruction Linstruction CASE vous permet de raliser le branchement de
CASE votre programme vers lune parmi n alternatives. Il vous suffit de
faire prendre une variable, une valeur parmi n possibles.

Instructions Vous pouvez programmer lexcution de boucles en utilisant des instructions ditra-
ditration tion. Celles-ci vous permettent de dfinir quelles parties de votre programme doi-
vent tre rptes en fonction de certaines conditions.
Tableau 15-2 Types dinstructions ralisant lexcution de boucles

Type de bran-
Fonction
chement
Instruction Elle permet de rpter une suite dinstructions tant que la varia-
FOR ble reste dans la plage des valeurs indique.
Instruction Elle permet de rpter une suite dinstructions tant quune condi-
WHILE tion dexcution est ralise.
Instruction Elle permet de rpter une suite dinstructions jusqu ce quune
REPEAT condition darrt soit ralise.

Instructions de Un branchement dans un programme provoque le saut immdiat un repre spcifi


branchement et par consquement une autre instruction dans le mme bloc.
Tableau 15-3 Instructions de branchement

Type de bran-
Fonction
chement
Instruction Elle permet dabandonner lexcution de la boucle en cours.
CONTINUE
Instruction Elle permet de quitter une boucle un endroit quelconque, que la
EXIT condition darrt soit remplie ou pas.
Instruction Elle provoque le saut immdiat un repre de saut dfini.
GOTO
Instruction Elle permet de quitter le bloc en cours dexcution.
RETURN

SCL pour SIMATIC S7-300/400, Programmation de blocs


15-2 C79000-G7077-C522-01
Instructions de contrle

Conditions La condition est soit une expression de comparaison, soit une expression logique.
Elle est du type BOOL et peut prendre les valeurs TRUE (vrai) ou FAlSE (faux).
Voici des exemples dexpressions de comparaison correctes :

COMPTEUR<=100
SQR(A)>0.005
Rponse = 0
SOLDE>=TRANSFERT
ch1< T

Voici des exemples dutilisation dexpressions de comparaison avec des oprateurs


logiques :

(COMPTEUR<=100) AND (CH1<*)


(SOLDE<100.0) OR (ETAT =R)
(Rponse<0)OR((Rponse>5.0) AND (REPONSE<10.0))

Nota
Il est noter que les oprandes logiques (ici les expressions de comparaison) figurent
entre parenthses afin dviter toute confusion dans lordre dexcution.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 15-3
Instructions de contrle

15.2 Instruction IF

Principe Linstruction IF est une instruction conditionnelle qui propose une ou plusieurs
options pour slectionner lune (ou le cas chant aucune) de ses sections des ins-
tructions.

Syntaxe Instruction IF

Section
IF Expression THEN des instructions
Condition

Section
ELSIF Expression THEN des instructions
Condition

ELSE Section END_IF


des instructions

Figure 15-1 Syntaxe : instruction IF

Lexcution de linstruction conditionnelle ralise lvaluation des expressions logi-


ques. Si la valeur dune expression est vraie, alors la condition est ralise, si par
contre elle est fausse, celle-ci ne lest pas.

Excution Rgles appliques lexcution de linstruction IF :


1. Si la valeur de la premire expression est vraie, la section des instructions aprs
THEN est excute, sinon les expressions des branches ELSIF sont values.
2. Si aucune des expressions boolennes des branches ELSIF nest vraie, cest la
suite dinstructions aprs ELSE qui est excute (ou aucune suite dinstructions,
au cas o la branche ELSE est absente).
Le nombre dinstructions ELSIF possibles est illimit.
Il est noter que la branche ELSIF et/ou la branche ELSE sont facultatives. Leur
absence revient leur attribuer des instructions vides.

Nota
Noubliez pas de terminer linstruction END_IF par un point-virgule !

SCL pour SIMATIC S7-300/400, Programmation de blocs


15-4 C79000-G7077-C522-01
Instructions de contrle

Nota
Lavantage dutiliser une ou plusieurs branches ELSIF plutt quune squence
dinstructions IF, rside dans le fait que les expressions logiques qui suivent une
expression vraie ne sont plus value, ce qui permet de diminuer la dure dexcu-
tion dun programme.

Exemple Lexemple 15-1 illustre lutilisation dune instruction IF :

IF E1.1 THEN
N:= 0;
SUM:= 0;
OK:= FALSE; // Affecter valeur FALSE au drapeau OK
ELSIF START = TRUE THEN
N:= N + 1;
SUM:= SUM + N;
ELSE
OK:= FALSE;
END_IF;

Exemple 15-1 Instruction IF

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 15-5
Instructions de contrle

15.3 Instruction CASE

Principe Linstruction CASE permet de slectionner 1 section de programme parmi n.


Cette slection porte sur la valeur en cours dune expression de slection.

Syntaxe Instruction CASE


Expression de slection (entier)

CASE Expression OF
Valeur

Liste de valeurs : Section


des instructions

Section
ELSE : des instructions END_CASE

Figure 15-2 Syntaxe : instruction CASE

Excution Rgles appliques lexcution de linstruction CASE :


1. Lors de lexcution de linstruction CASE, le programme vrifie si la valeur de
lexpression de slection figure dans une liste de valeurs donne. Chacune des
valeurs de cette liste correspond lune des valeurs autorises pour lexpression
de slection. Cette dernire doit fournir une valeur de type INTEGER.
2. Si tel est le cas, la section des instruction affecte la liste est excute.
3. La branche ELSE est optionnelle. Elle est excute si le rsultat de la comparai-
son nest pas celui attendu.

Nota
Noubliez pas de terminer linstruction END_CASE par un point-virgule !

SCL pour SIMATIC S7-300/400, Programmation de blocs


15-6 C79000-G7077-C522-01
Instructions de contrle

Liste de valeurs Elle contient les valeurs autorises pour lexpression de slection.

Liste de valeurs
Nombre entier

Valeur

Valeur .. Valeur

Figure 15-3 Syntaxe : liste de valeurs

Rgles Lorsque vous formulez la liste de valeurs, vous devez tenir compte des rgles sui-
vantes :
S toute liste de valeur peut commencer par une constante, une liste de constantes
ou une plage de constantes,
S les valeurs de la liste doivent tre du type INTEGER,
S chaque valeur doit tre unique,

Exemples Lexemple 15-2 illustre lutilisation de linstruction CASE. Conformment la


rgle, la variable TW est de type INTEGER.

CASE TW OF
1: AFFICHAGE
:= TEMP_FOUR;
2: AFFICHAGE
:= VITESSE_MOTEUR;
3: AFFICHAGE
:= TARE_BRUTE;
AW4:= 16#0003;
4..10:AFFICHAGE := INT_TO_DINT (TW);
AW4:= 16#0004;
11,13,19:AFFICHAGE:= 99;
AW4:= 16#0005;
ELSE: AFFICHAGE:= 0;
TW_ERROR:= 1;
END_CASE;

Exemple 15-2 Instruction CASE

Nota
Veillez ce que la dure dexcution des boucles ne soit pas trop longue, car la CPU
se mettrait larrt suite un retard dacquittement.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 15-7
Instructions de contrle

15.4 Instruction FOR

Principe Une instruction FOR, encore appele instruction ditration excute une suite dins-
tructions dans une boucle, alors que des valeurs sont continuellement affectes une
variable (variable de contrle). La variable de contrle doit tre lidentificateur
dune variable locale de type INT ou DINT.

Instruction FOR

Affectation Expression
FOR initiale TO de base

pour la valeur initiale pour la valeur terminale

Expression Section
BY de base DO des instructions

pour lincrment

END_FOR

Figure 15-4 Syntaxe : instruction FOR

La dfinition dune bouclce FOR inclut la dtermination dune valeur initiale et


dune valeur finale. Toutes deux doivent tre du mme type que la variable de
contrle.

Excution Rgles appliques lexcution de linstruction FOR :


1. Au dbut de la boucle, une valeur initiale est affecte la variable de contrle
qui est incrmente ou dcrmente chaque nouvelle itration de la boucle,
jusqu ce que la valeur finale soit atteinte.
2. A chaque itration, la condition
Valeur initiale <= Valeur finale
est vrifie. Si elle est remplie, la suite dinstructions est excute, dans le cas
contraire la boucle et par consquent la suite dinstructions sont sautes.

Nota
Noubliez pas de terminer linstruction END_FOR par un point-virgule !

SCL pour SIMATIC S7-300/400, Programmation de blocs


15-8 C79000-G7077-C522-01
Instructions de contrle

Instruction Pour former la valeur initiale de la variable de contrle, vous disposez de linstruc-
dinitialisation tion initiale reprsente la figure 15-5.

Instruction initiale

Variable := Expression
tendue de base

Type de donnes pour la valeur initiale


INT/DINT
Figure 15-5 Syntaxe : instruction dinitialisation

Exemples :
FOR I := 1 TO 20
FOR I := 1 TO (valeur initiale +J)

Valeur finale et Pour former la valeur finale et lincrment, vous pouvez respectivement crer une
incrment expression de base.

Rgles Les rgles suivantes sont appliquer pour linstruction FOR :


S Lindication de BY [incrment] est facultative. En son absence, la valeur
utilise est +1.
S La valeur initiale, la valeur finale et lincrment sont des expressions ( voir cha-
pitre 13) dont lvaluation est effectue une seule fois, au dbut de lexcution
de linstruction FOR.
S Il nest pas possible de modifier la valeur et lincrment pendant lexcution de
la boucle.

Exemple Lexemple 15-3 illustre lutilisation de linstruction FOR :

FUNCTION_BLOCK RECHERCHER
VAR
INDEX : INT;
MOT_CLE : ARRAY [1..50] OF STRING;
END_VAR

BEGIN
FOR INDEX:= 1 TO 50 BY 2 DO
IF MOT_CLE [INDEX] = CLE THEN
EXIT;
END_IF;
END_FOR;
END_FUNCTION_BLOCK

Exemple 15-3 Instruction FOR

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 15-9
Instructions de contrle

15.5 Instruction WHILE

Principe Linstruction WHILE permet de rpter lexcution dune suite dinstructions tant
quune condition dexcution est ralise. Celle-ci applique les rgles dune expres-
sion logique.

Instruction WHILE

Section
WHILE Expression DO des instructions END_WHILE

Condition dexcution

Figure 15-6 Syntaxe : instruction WHILE

La section des instructions qui suit DO est rpte tant que la condition dexcution
est TRUE.

Excution Rgles appliques lexcution de linstruction WHILE :


1. La condition dexcution est value avant chaque excution de la section des
instructions.
2. Si la condition dexcution dexcution est TRUE, la section des instructions va
tre excute.
3. Si la condition dexcution est FALSE, lexcution de linstruction WHILE est
termine, ce qui peut mme dj tre le cas pour la premire valuation.

Nota
Noubliez pas de terminer linstruction END_WHILE par un point-virgule !

Exemple Lexemple 15-4 illustre lutilisation de linstruction WHILE :

FUNCTION_BLOCK RECHECHER
VAR
INDEX : INT;
MOT_CLE : ARRAY [1..50] OF STRING;
END_VAR
BEGIN
INDEX:= 1;
WHILE INDEX <= 50 AND MOT_CLE[INDEX] <> CLE DO
INDEX:= INDEX + 2;
END_WHILE;
END_FUNCTION_BLOCK

Exemple 15-4 Instruction WHILE

SCL pour SIMATIC S7-300/400, Programmation de blocs


15-10 C79000-G7077-C522-01
Instructions de contrle

15.6 Instruction REPEAT

Principe Linstruction REPEAT rpte lexcution de la suite dinstructions entre REPEAT et


UNTIL, jusqu ce que la condition dabandon soit ralise. Celle-ci applique les
rgles dune expression logique.

Instruction REPEAT

Section
REPEAT des instructions UNTIL Expression END_REPEAT

Condition dabandon

Figure 15-7 Syntaxe : instruction REPEAT

La condition est chaque fois vrifie aprs lexcution de la suite dinstructions,


qui est par consquent excute au moins une fois, mme si la condition dabandon
est ralise ds le dbut.

Nota
Noubliez pas de terminer linstruction END_REPEAT par un point-virgule !

Exemple Lexemple 15-5 illustre lutilisation de linstruction REPEAT

FUNCTION_BLOCK RECHERCHER
VAR
INDEX : INT;
MOT_CLE : ARRAY [1..50] OF STRING;
END_VAR

BEGIN
INDEX:= 0;
REPEAT
INDEX:= INDEX + 2;
UNTIL
INDEX > 50 OR MOT_CLE[INDEX] = CLE
END_REPEAT;
END_FUNCTION_BLOCK

Exemple 15-5 Instruction REPEAT

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 15-11
Instructions de contrle

15.7 Instruction CONTINUE

Principe Linstruction CONTINUE permet dinterrompre momentanment une instruction


ditration (FOR, WHILE ou REPEAT) pour poursuivre dans la boucle .

Instruction CONTINUE

CONTINUE

Figure 15-8 Syntaxe : instruction CONTINUE

La rptition ventuelle dune suite dinstructions est dtermine par la condition


initiale dans une boucle WHILE, et par la condition finale dans une boucle
REPEAT.
Dans une instruction FOR, la variable de contrle est incrmente directement aprs
une instruction CONTINUE.

Exemple Lexemple 15-6 illustre lutilisation de linstruction CONTINUE :

FUNCTION_BLOCK CONTINUE
VAR
INDEX :INT;
TABLEAU :ARRAY[1..100] OF INT;
END_VAR
BEGIN
INDEX:= 0;
WHILE INDEX <= 100 DO
INDEX:= INDEX + 1;
// Si TABLEAU[INDEX] est gal INDEX,
// alors TABLEAU [INDEX] nest pas modifi :
IF TABLEAU[INDEX] = INDEX THEN
CONTINUE;
END_IF;
TABLEAU[INDEX]:= 0;
// Instructions suivantes
//....
END_WHILE;
END_FUNCTION_BLOCK

Exemple 15-6 Instruction CONTINUE

SCL pour SIMATIC S7-300/400, Programmation de blocs


15-12 C79000-G7077-C522-01
Instructions de contrle

15.8 Instruction EXIT

Principe Linstruction EXIT permet de quitter une boucle (boucle FOR, WHILE ou
REPEAT) un endroit quelconque, que la condition dabandon soit ralise ou ne le
soit pas.

Instruction EXIT

EXIT

Figure 15-9 Syntaxe : instruction EXIT

Linstruction EXIT permet de quitter immdiatement linstruction ditration qui


lentoure directement.
Lexcution du programme se poursuit aprs la fin de la boucle ditration (par
exemple aprs END_FOR).

Exemple Lexemple 15-7 illustre lutilisation de linstruction EXIT :

FUNCTION_BLOCK EXIT
VAR
INDEX_1 := INT;
INDEX_2 := INT;
INDEX_RECHERCHE:= INT;
MOT_CLE : ARRAY[1..51] OF STRING;
END_VAR
BEGIN
INDEX_2 := 0;
FOR INDEX_1:= 1 TO 51 BY 2 DO
// La boucle FOR est quitte si
// MOT_CLE[INDEX_1] est gal CLE :
IF MOT_CLE[INDEX_1] = CLE THEN
INDEX_2:= INDEX_1;
EXIT;
END_IF;
END_FOR;
// Laffectation de valeur suivante est effectue
// aprs lexcution de EXIT ou
// aprs la fin normale de la boucle FOR :
INDEX_RECHERCHE:= INDEX_2;
END_FUNCTION_BLOCK

Exemple 15-7 Instruction EXIT

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 15-13
Instructions de contrle

15.9 Instruction GOTO

Principe Linstruction GOTO vous permet de raliser un branchement de programme. Elle


provoque le saut immdiat un repre de saut spcifi et par consquent une autre
instruction dans le mme bloc.
Linstruction GOTO ne doit tre utilise qu titre exceptionnel, par exemple pour la
rsolution derreurs. En effet, son utilisation est contraire aux rgles de la program-
mation structure.

Branchement de programme
GOTO IDENTIFICATEUR

Repre de saut

Figure 15-10 Syntaxe : instruction GOTO

Le repre de saut dsigne un repre LABEL / END_LABEL dans la section de d-


claration. Il prcde linstruction qui doit tre excute immdiatement aprs
GOTO.

Rgles Rgles appliquer pour utiliser linstruction GOTO :


S Le branchement dune instruction de saut doit se trouver dans le mme bloc.
S Le branchement doit tre univoque.
S Un saut dans un bloc de boucle nest pas autoris. Un saut depuis un bloc de
boucle est possible.

SCL pour SIMATIC S7-300/400, Programmation de blocs


15-14 C79000-G7077-C522-01
Instructions de contrle

Exemple Lexemple 15-8 illustre lutilisation de linstruction GOTO :

FUNCTION_BLOCKFB3//Ex_GOTO
VAR
INDEX : 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 : INDEX:= 1;
GOTO REPERE3;
REPERE2 : INDEX:= 2;
//...
REPERE3 : ;
//...
END_FUNCTION_BLOCK

Exemple 15-8 Instruction de branchement GOTO

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 15-15
Instructions de contrle

15.10 Instruction RETURN

Principe Linstruction RETURN permet de quitter le bloc en cours dexcution (OB, FB, FC)
et de revenir au bloc appelant ou au systme dexploitation, dans le cas dun OB.

Instruction RETURN

RETURN

Figure 15-11 Syntaxe : instruction der RETURN

Nota
A la fin de la section dexcution dun bloc de code ou de la section de dclaration dun
bloc de donnes, linstruction RETURN est redondante, puisquelle est excute auto-
matiquement.

SCL pour SIMATIC S7-300/400, Programmation de blocs


15-16 C79000-G7077-C522-01
Appel de fonctions et de blocs fonctionnels 16
Prsentation A partir dun bloc SCL, vous avez la possibilit dappeler dautres fonctions (FC) ou
blocs fonctionnels (FB). Vous pouvez appeler :
S des fonctions et blocs fonctionnels crs dans SCL,
S des fonctions et blocs fonctionnels programms dans un autre langage de STEP 7
(par exemple LIST, CONT),
S des fonctions systme (SFC) et blocs fonctionnels systme (SFB), disponibles
dans le systme dexploitation de votre CPU.

Structure du Paragraphe Thme Page


chapitre 16.1 Appel et transmission de paramtres 16-2
16.2 Appel de blocs fonctionnels (FB ou SFB) 16-3
16.2.1 Paramtres du FB 16-5
16.2.2 Affectation de lentre (FB) 16-7
16.2.3 Affectation de lentre/sortie (FB) 16-8
16.2.4 Exemple dappel dune instance globale 16-10
16.2.5 Exemple dappel dune instance locale 16-12
16.3 Appel de fonctions 16-13
16.3.1 Paramtres de la FC 16-15
16.3.2 Affectation de lentre (FC) 16-16
16.3.3 Affectation de la sortie ou de lentre/sortie (FC) 16-17
16.3.4 Exemple dappel dune fonction 16-19
16.4 Paramtres dfinis automatiquement 16-20

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 16-1
Appel de fonctions et de blocs fonctionnels

16.1 Appel et transmission de paramtres

Transmission de Lorsque vous appelez une fonction ou un bloc fonctionnel, un change de donnes a
paramtres lieu entre le bloc appelant et le bloc appel. Les paramtres transmettre doivent
tre indiqus sous forme de liste de paramtres lors de lappel. Ils doivent figurer
entre parenthses et tre spars par des virgules.

Principe Lexemple suivant illustre lappel dune fonction pour laquelle sont indiqus un
paramtre dentre, un paramtre dentre/sortie et un paramtre de sortie.

Liste de paramtres

FC31 (Par_E:=3, Par_E/S:=LONGUEUR, Par_S:=Somme_chif);


Paramtre dentre
effectif Paramtre dentre/sortie
effectif Paramtre de sortie
effectif
Nom de la fonction

Figure 16-1 Principe de la transmission de paramtres

Comme le montre la figure 16-2, lindication des paramtres a la forme dune affec-
tation de valeurs. En effet, elle consiste affecter des valeurs (paramtres effectifs)
aux paramtres que vous avez dfinis dans la section de dclaration du bloc appel
(paramtres formels).

Paramtres effectifs Paramtres formels


3 Par_E
LONGUEUR Par_E/S
Somme_chif Par_S

Figure 16-2 Affectation de valeurs dans la liste des paramtres

Paramtres Les paramtres formels sont ceux qui sont dclars dans le bloc appel. Leur unique
formels fonction est de rserver la place pour les paramtres effectifs qui seront transmis au
bloc lors de son appel. Vous les avez dfinis dans la section de dclaration du bloc


(FB ou FC).



Tableau 16-1 Sections de dclaration autorises pour les paramtres formels

Section de dclaration Donnes Mot-cl


VAR_INPUT
Paramtres dentre Liste de dclaration
END_VAR
Section des paramtres VAR_OUTPUT
Paramtres de sortie Liste de dclaration
END_VAR
VAR_IN_OUT
Paramtres dentre/sortie Liste de dclaration
END_VAR

SCL pour SIMATIC S7-300/400, Programmation de blocs


16-2 C79000-G7077-C522-01
Appel de fonctions et de blocs fonctionnels

16.2 Appel de blocs fonctionnels (FB ou SFB)

Instance globale et Lorsque vous appelez un bloc fonctionnel dans SCL, vous pouvez utiliser
locale
S aussi bien des blocs de donnes dinstance globaux,
S que des zones dinstances locales du bloc de donnes dinstance actuel.
Cest lendroit o sont enregistres les donnes qui distingue lappel dun FB
comme instance locale de celui dun FB comme instance globale. Dans le premier
cas, les donnes ne sont pas enregistres dans un DB particulier, mais dans le bloc
de donnes dinstance du FB appelant.

Appel dun FB

FB : bloc fonctionnel
SFB : bloc fonctionnel systme

DESIGNATION
DU FB
Nom de linstance globale
DESIGNATION DESIGNATION
. DU DB ( Paramtres du FB )
DU SFB
voir paragraphe 16.2.1

IDENTIFICATEUR

Nom de linstance locale

Figure 16-3 Syntaxe : appel dun bloc fonctionnel

Appel comme Dans linstruction dappel du FB, vous devez indiquer :


instance globale
S le nom du bloc fonctionnel ou du bloc fonctionnel systme (dsignation du FB
ou du SFB),
S le bloc de donnes dinstance (dsignation du DB),
S laffectation des paramtres (paramtres du FB).
Lappel dune instance globale peut tre absolu ou symbolique.

Appel absolu :
FB10.DB20 (X1:=5,X2:=78,......);

Affectation des paramtres


Appel symbolique :
MOTEUR.MARCHE (X1:=5,X2:=78,......);

Figure 16-4 Appel du FB10 avec le bloc de donnes dinstance DB20

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 16-3
Appel de fonctions et de blocs fonctionnels

Appel comme Dans linstruction dappel du FB, vous devez indiquer :


instance locale
S le nom de linstance locale (IDENTIFICATEUR),
S laffectation des paramtres (paramtres du FB),
Lappel dune instance locale est toujours symbolique, par exemple :

MOTEUR (X1:=5,X2:=78,......);

Affectation des paramtres

Figure 16-5 Appel dune instance locale

SCL pour SIMATIC S7-300/400, Programmation de blocs


16-4 C79000-G7077-C522-01
Appel de fonctions et de blocs fonctionnels

16.2.1 Paramtres du FB

Principe Lorsque vous appelez un bloc fonctionnel comme instance globale ou locale ,
vous devez faire la distinction entre
S ses paramtres dentre et
S ses paramtres dentre/sortie
dans la liste des paramtres. Dans les deux cas, vous affectez les paramtres effec-
tifs aux paramtres formels :

Paramtres Paramtres
formels effectifs
Par_E 3 //Affectation de lentre
Par_E/S LONGUEUR //Affectation de lentre/sortie

Figure 16-6 Affectation de valeurs dans la liste des paramtres

Les paramtres de sortie ne sont pas indiqus lappel dun FB, en revanche ils sont
affects aprs lappel.
La syntaxe de laffectation des paramtres du FB est la mme quil sagisse
dinstances globales ou locales.

Paramtres du FB
Affectation
de lentre

Affectation de
lentre/sortie

Figure 16-7 Syntaxe : paramtres du FB

Exemple Voici un exemple dappel de FB avec une affectation de lentre et une affectation
de la sortie :
FB31.DB77(Par_E:=3, Par_E/S:=LONGUEUR);

Rgles Les rgles suivantes sappliquent laffectation des paramtres :


S Lordre daffectation est quelconque.
S Le type de donnes du paramtre effectif doit tre le mme que celui du param-
tre formel.
S Chaque affectation est spare de la prcdente par une virgule.
S Laffectation de la sortie nest pas possible dans un appel de FB. La valeur du
paramtre de sortie que vous avez dclar est enregistre dans les donnes din-
stance, o elle peut tre adresse par chaque FB. Pour pouvoir la lire, vous devez
dfinir son adressage partir dun FB (voir paragraphe 14.8).

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 16-5
Appel de fonctions et de blocs fonctionnels

Rsultat aprs Aprs lexcution du bloc :


lappel
S les paramtres dentre actuels transmis restent inchangs,
S les valeurs des paramtres dentre/sortie transmises mais modifies sont actuali-
ses, lexception des paramtres dentre/sortie dun type de donnes simple
(voir le paragraphe 16.2.3),
S les paramtres de sortie du bloc appelant peuvent tre lus dans le bloc de don-
nes dinstance ou dans la zone dinstances locale. Voir lexemple 16-3.

SCL pour SIMATIC S7-300/400, Programmation de blocs


16-6 C79000-G7077-C522-01
Appel de fonctions et de blocs fonctionnels

16.2.2 Affectation de lentre (FB)

Principe Laffectation de lentre consiste affecter un paramtre effectif un paramtre


dentre formel. Le FB ne peut pas modifier ces paramtres effectifs. Laffectation
du paramtre dentre actuel est facultative. Si vous ne lindiquez pas, la valeur de
lappel prcdent est conserve.

Affectation de lentre Paramtre effectif

Expression

DESIGNATION DE
LA TEMPORISATION
IDENTIFICATEUR :=
DESIGNATION
Nom du paramtre DU COMPTEUR
dentre
(Paramtre formel) DESIGNATION
DU BLOC

Figure 16-8 Syntaxe : affectation de lentre

Paramtres Les paramtres effectifs suivants peuvent tre affects lentre :


effectifs possibles
Tableau 16-2 Paramtres effectifs dans les affectations dentres

Paramtre Explication
effectif
Expression S expression arithmtique, logique ou de comparaison
S constante
S variable tendue
Dsignation Vous dfinissez une temporisation ou un compteur qui seront utiliss lors
TEMPORISA- de lexcution dun bloc (voir aussi le chapitre 17).
TION/COMP-
TEUR
Dsignation Vous dfinissez un bloc qui sera utilis comme paramtre dentre. Le type
BLOC de bloc (FB, FC, DB) doit tre dfini dans la dclaration du paramtre
dentre.
A laffectation du paramtre, vous indiquez la dsignation du bloc, absolue
ou symbolique (voir aussi le chapitre 9).

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 16-7
Appel de fonctions et de blocs fonctionnels

16.2.3 Affectation de lentre/sortie (FB)

Principe Laffectation de lentre/sortie consiste affecter un paramtre effectif au paramtre


dentre/sortie formel du FB appel.
Contrairement aux paramtres dentre, les paramtres dentre/sortie peuvent tre
modifis par le FB appel. La nouvelle valeur que prend le paramtre lors de lex-
cution du FB est inscrite dans le paramtre effectif, o elle crase la valeur initiale.
Si des paramtres dentre/sortie sont dclars dans le FB appel, vous devez leur
affecter une valeur au premier appel. Lindication de paramtres effectifs est ensuite
facultative.

Affectation de lentre/sortie

IDENTIFICATEUR := Variable
tendue
Nom du paramtre
Paramtre effectif
dentre/sortie

(Paramtre formel)

Figure 16-9 Syntaxe : affectation de lentre/sortie

Paramtres Puisque le paramtre effectif affect peut tre modifi comme paramtre dentre/
effectifs possibles sortie durant lexcution du FB, il doit sagir dune variable. Cest la raison pour
laquelle vous ne pouvez pas affecter un paramtre dentre un paramtre dentre/
sortie (la nouvelle valeur ne pourrait pas y tre inscrite).

Tableau 16-3 Paramtres effectifs dans des affectations dentre/sortie

Paramtre Explication
effectif
Variable Vous pouvez utiliser les types de variables tendues suivants :
tendue variable simple et paramtre
adressage de variable absolue
adressage de bloc de donnes
appel de fonction
(voir aussi le chapitre 14)

SCL pour SIMATIC S7-300/400, Programmation de blocs


16-8 C79000-G7077-C522-01
Appel de fonctions et de blocs fonctionnels

Particularits Tenez compte des particularits suivantes :


S La valeur modifie du paramtre dentre/sortie est actualise aprs lexcution
du bloc. Les paramtres dentre/sortie dun type de donnes simple constituent
cependant une exception. Lactualisation nest ralise que si un paramtre effec-
tif a t attribu lappel du FB.
S Les paramtres effectifs suivants ne peuvent pas tre affects aux paramtres
dentre/sortie dun type de donnes non simple :
paramtre dentre/sortie dun FB, ou
paramtre dune FC
S Paramtre ANY : outre les restrictions ci-dessus, les constantes ne sont pas
autorises comme paramtres effectifs.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 16-9
Appel de fonctions et de blocs fonctionnels

16.2.4 Exemple dappel dune instance globale

Principe Un bloc fonctionnel comportant une boucle FOR pourrait se prsenter comme dans
lexemple 16-1. Il y est suppos que le mnmonique TEST a t dclar pour le
FB17 dans la table des mnmoniques.

FUNCTION_BLOCK TEST
VAR_INPUT
VAL_FIN: INT; //Paramtre dentre
END_VAR
VAR_IN_OUT
IQ1: REAL; //Param. dentre/sortie
END_VAR
VAR_OUTPUT
CONTROLE: BOOL;//Paramtre de sortie
END_VAR
VAR
INDEX: INT;
END_VAR
BEGIN
CONTROLE:= FALSE;
FOR INDEX:= 1 TO VAL_FIN DO
IQ1:= IQ1 * 2;
IF IQ1 > 10000 THEN
CONTROLE:= TRUE;
END_IF;
END_FOR;
END_FUNCTION_BLOCK

Exemple 16-1 Exemple de FB

Appel Vous pouvez appeler ce FB de lune 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 (VAL_FIN:=10, IQ1:= VARIABLE1);

//Appel symbolique, instance globale :


TEST.TEST_1 (VAL_FIN:= 10, IQ1:= VARIABLE1) ;

Exemple 16-2 Exemple dappel de FB avec bloc de donnes dinstance

Rsultat A la fin de lexcution du bloc, la valeur fournie pour le paramtre dentre/sortie


IQ1 est disponible dans la VARIABLE1.

SCL pour SIMATIC S7-300/400, Programmation de blocs


16-10 C79000-G7077-C522-01
Appel de fonctions et de blocs fonctionnels

Lecture de la La lecture du paramtre de sortie CONTROLE peut tre ralise de plusieurs


valeur de sortie faons :

//Ladressage du paramtre de sortie


//est ralis par
RESULTAT:= DB10.CONTROLE;
//Vous avez galement la possibilit daffecter
//directement le paramtre de sortie un
//paramtre dentre lappel dun autre FB

FB17.DB12 (MARCHE_1:= DB10.CONTROLE);

Exemple 16-3 Rsultat de lappel du FB avec bloc de donnes dinstance

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 16-11
Appel de fonctions et de blocs fonctionnels

16.2.5 Exemple dappel dune instance locale

Principe Lexemple 16-1 reprsente un bloc fonctionnel programm avec une boucle FOR
simple. On suppose que le mnmonique TEST a t dclar pour le FB17 dans la
table de mnmoniques.

Appel En supposant que VARIABLE1 a t dclare comme variable de type REAL dans
le bloc appelant, vous pourriez appeler le FB comme suit :

// Appel, instance locale :


TEST_L (VAL_FIN:= 10, IQ1:= VARIABLE1) ;

Exemple 16-4 Exemple dappel de FB comme instance locale

TEST_L doit avoir t dclare dans la dclaration des variables :


VAR
TEST_L : TEST;
END_VAR

Lecture des La lecture du paramtre de sortie CONTROLE peut tre ralise de la manire sui-
paramtres de vante :
sortie

// Ladressage du paramtre de sortie est ralis par


RESULTAT:= TEST_L.CONTROLE;

Exemple 16-5 Rsultat de lappel du FB comme instance locale

SCL pour SIMATIC S7-300/400, Programmation de blocs


16-12 C79000-G7077-C522-01
Appel de fonctions et de blocs fonctionnels

16.3 Appel de fonctions

Valeur en retour Contrairement aux blocs fonctionnels, les fonctions fournissent un rsultat, la valeur
en retour. Cest la raison pour laquelle elles peuvent tre traites comme des opran-
des. Les fonctions dont la valeur en retour est du type VOID constituent une excep-
tion.
Dans laffectation de valeurs suivante, la fonction ECART est appele avec des
paramtres donns :
LONGUEUR:= ECART (X1:=-3, Y1:=2);
ECART constitue la valeur en retour !
La fonction calcule la valeur en retour qui porte le mme nom quelle et la transmet
au bloc appelant, o elle remplace lappel de la fonction.
Vous pouvez utiliser la valeur en retour dans les lments suivants dune FC ou dun
FB :
S une affectation de valeur,
S une expression logique, arithmtique ou de comparaison ou
S comme paramtre pour lappel dun autre bloc fonctionnel ou dune autre fonc-
tion.
Les fonctions de type VOID constituent une exception. Elles ne possdent pas de
valeur en retour et ne peuvent donc pas tre utilises dans des expressions.
La figure 16-10 montre la syntaxe de lappel dune fonction :

Appel de fonction

DESIGNATION
DE LA FC

DESIGNATION ( Paramtres )
DE LA SFC de la FC

IDENTIFICATEUR
FC : fonction
Nom de la fonction standard SFC : fonction systme
ou mnmonique
Fonction standard ralise dans le compilateur

Figure 16-10 Syntaxe : appel dune fonction

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 16-13
Appel de fonctions et de blocs fonctionnels

Nota
Si dans SCL vous appelez une fonction dont la valeur en retour na pas t affecte,
il peut en rsulter une excution errone du programme utilisateur.
Dans une fonction SCL, ce cas peut survenir lorsque bien que la valeur en retour ait
t affecte, lexcution du programme ne passe pas par linstruction correspon-
dante.
Dans une fonction LIST, CONT ou LOG, ce cas peut survenir lorsque la fonction a
t programme sans affectation de la valeur en retour ou lorsque lexcution du
programme ne passe pas par linstruction correspondante.

Appel Pour appeler une fonction, vous devez indiquer :


S son nom (DESIGNATION DE LA FC, DE LA SFC, IDENTIFICATEUR),
S la liste de paramtres.

Exemple Le nom de la fonction qui dsigne la valeur en retour peut tre absolu ou symboli-
que, par exemple :

FC31 (X1:=5, Q1:= Somme_chiffres)


ECART (X1:=5, Q1:= Somme_chiffres)

Rsultat de lappel Aprs lappel dune fonction, les rsultats sont disponibles sous forme de
S valeur en retour ou
S paramtre de sortie et dentre/sortie (paramtre effectif).
De plus amples informations ce sujet sont donnes au chapitre 18.

SCL pour SIMATIC S7-300/400, Programmation de blocs


16-14 C79000-G7077-C522-01
Appel de fonctions et de blocs fonctionnels

16.3.1 Paramtres de la FC

Principe Contrairement aux blocs fonctionnels, les fonctions nont pas de mmoire dans
laquelle ils pourraient enregistrer les valeurs des paramtres. Les donnes locales ne
sont enregistres que temporairement durant lexcution de la fonction. Cest la rai-
son pour laquelle, lorsque vous appelez une fonction, vous devez affecter des para-
mtres effectifs tous les paramtres dentre, dentre/sortie et de sortie que vous
avez dclar dans la section de dclaration de la fonction.
La figure 16-11 montre la syntaxe de laffectation de paramtres une FC :

Paramtres dune FC Expression

Affectation
de lentre

Affectation de
la sortie ou de
lentre/sortie

Figure 16-11 Syntaxe : paramtres dune FC

Voici un exemple dappel de fonction avec affectation des paramtre dentre, de


sortie, dentre/sortie :

FC32 (Param1_E:=5,Param1_E/S:=LONGUEUR,
Param1_S:=Somme_chiffres)

Rgles Les rgles suivantes sappliquent laffectation des paramtres :


S Lordre daffectation est quelconque.
S Le type de donnes du paramtre effectif doit tre le mme que celui du param-
tre formel.
S Chaque affectation est spare de la prcdente par une virgule.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 16-15
Appel de fonctions et de blocs fonctionnels

16.3.2 Affectation de lentre (FC)

Principe Laffectation de lentre consiste affecter des paramtres effectifs aux paramtres
dentre formels de la FC appele. Celle-ci peut les utiliser sans toutefois pouvoir
les modifier. Laffectation de lentre est obligatoire dans lappel dune FC, contrai-
rement ce qui est le cas pour lappel dun FB. Voici la syntaxe de laffectation de
lentre :

Affectation de lentre Paramtre effectif

Expression

DESIGNATION DE
LA TEMPORISATION
IDENTIFICATEUR :=
DESIGNATION
Nom du paramtre DU COMPTEUR
dentre
DESIGNATION
(Paramtre formel) DU BLOC

Figure 16-12 Syntaxe : affectation de lentre

Paramtres Les paramtres effectifs suivants peuvent tre affects lentre :


effectifs dans
laffectation dune
Tableau 16-4 Paramtres effectifs dans laffectation de lentre
entre
Paramtre effectif Explication
Expression Une expression correspond une valeur et comporte des oprandes et
des oprateurs. Voici les types dexpressions disponibles :
expression arithmtique, logique ou de comparaison
constante
variable tendue
Dsignation Vous dfinissez une temporisation ou un compteur qui seront utiliss
TEMPORISATION lexcution du bloc (voir aussi le chapitre 17).
COMPTEUR
Dsignation Vous dfinissez un bloc qui sera utilis comme paramtre dentre.
BLOC Le type de bloc (FB, FC, DB) doit tre dfini dans la dclaration du
paramtre dentre. A laffectation du paramtre, vous indiquez la
dsignation du bloc, absolue ou symbolique (voir aussi le chapitre 9).

Particularits Veuillez noter que le paramtre dentre/sortie dun FB et le paramtre dune FC ne


sont pas permis comme paramtres effectifs pour les paramtres dentre formels
dune FC dont le type de donnes est autre que simple.

SCL pour SIMATIC S7-300/400, Programmation de blocs


16-16 C79000-G7077-C522-01
Appel de fonctions et de blocs fonctionnels

16.3.3 Affectation de la sortie ou de lentre/sortie (FC)

Principe Laffectation de la sortie vous permet de dfinir o vont tre inscrites les valeurs de
sortie obtenues aprs lexcution dune fonction. Laffectation dune entre/sortie
vous permet daffecter une valeur effective un paramtre dentre/sortie.

La figure 16-13 montre la syntaxe de laffectation de la sortie ou de lentre/sortie :

Affectation de la sortie ou de lentre/sortie

IDENTIFICATEUR := Variable
tendue
Nom du paramtre
de sortie ou Paramtre effectif
dentre/sortie

(Paramtre formel)

Figure 16-13 Syntaxe : affectation de la sortie ou de lentre/sortie

Paramtres Dans laffectation de la sortie ou de lentre/sortie, les paramtres effectifs doivent


effectifs dans tre des variables, puisque la FC doit inscrire des valeurs dans les paramtres. Cest
laffectation dune la raison pour laquelle, vous ne pouvez pas affecter un paramtre dentre une
sortie ou dune entre/sortie (la nouvelle valeur ne pourrait pas y tre inscrite). Seule une variable
entre/sortie tendue peut tre utilise pour laffectation dune sortie ou dune entre/sortie :

Tableau 16-5 Paramtres effectifs dans les affectation de sortie ou dentre/sortie

Paramtre effectif Explication


Variable Vous disposez des types suivants de variables tendues :
tendue variable simple et paramtre
adressage de variable absolue
adressage de bloc de donnes
appel de fonction
(voir aussi le chapitre 14)

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 16-17
Appel de fonctions et de blocs fonctionnels

Particularits Tenez compte des particularits suivantes :


S La valeur modifie du paramtre dentre/sortie est actualise aprs lexcution
du bloc.
S Les paramtres effectifs suivants ne peuvent pas tre affects aux paramtres
dentre/sortie dun type de donnes autre que simple :
paramtre dentre dun FB,
paramtre dentre/sortie dun FB, ou
paramtre dune FC
S Paramtre ANY : par principe, le premier point prcit sy applique galement.
Pour les paramtres dentre/sortie dun type de donnes non simple, ne sont pas
autoriss comme paramtres effectifs :
les paramtres dentre de FB,
les paramtres dentre de FC.
Outre les restrictions ci-dessus, les constantes ne sont pas autorises comme
paramtres effectifs. Si vous avez dclar comme rsultat de la fonction (valeur
en retour) le type ANY, sachez en outre que :
Les paramtres effectifs que vous affectez aux paramtres ANY doivent tre
du mme type que ces derniers. Lensemble de types de donnes numriques
(INT, DINT, REAL) ou lensemble de types de donnes binaires (BOOL,
BYTE, WORD, DWORD) constituent par exemple une classe. Les autres
types de donnes ont une classe qui leur est propre.
Le compilateur SCL part du principe que le type de donnes du rsultat ac-
tuel de la fonction est le type qui la emport parmi les paramtres effectfs
affects aux paramtres ANY.
Vous pouvez combiner le rsultat de la fonction avec toutes les oprations
dfinies pour ce type de donnes.
S Paramtre POINTER : par principe, le premier point prcit sy applique ga-
lement. Pour les paramtres dentre/sortie dun type de donnes non simple, ne
sont pas autoriss comme paramtres effectifs :
les paramtres dentre de FB,
les paramtres dentre de FC.

SCL pour SIMATIC S7-300/400, Programmation de blocs


16-18 C79000-G7077-C522-01
Appel de fonctions et de blocs fonctionnels

16.3.4 Exemple dappel de fonction

Principe Soit la fonction ECART permettant de calculer lcart entre deux points (X1,Y1) et
(X2,Y2) dans un plan laide de leur coordonnes cartsiennes (il est suppos que
le mnmonique ECART a t dclar pour la FC37 dans la table des mnmoni-
ques) :

FUNCTION ECART: REAL


VAR_INPUT
X1: REAL;
X2: REAL;
Y1: REAL;
Y2: REAL;
END_VAR
VAR_OUTPUT
Q2: REAL;
END_VAR
BEGIN
ECART:= SQRT
( (X2-X1)**2 + (Y2-Y1)**2 );
Q2:= X1+X2+Y1+Y2;
END_FUNCTION

Exemple 16-6 Calcul de lcart

Diverses possibilits soffrent vous pour exploiter la valeur de la fonction :

dans une affectation de valeur, par exemple :


LONGUEUR:= ECART (X1:=-3, Y1:=2, X2:=8.9, Y2:=7.4,
Q2:=Somme_chiffres);

dans une expression arithmtique ou logique, par exemple :


RAYON + ECART (X1:=-3, Y1:=2, X2:=8.9, Y2:=7.4,
Q2:=Somme_chiffres)

dans laffectation de paramtres un bloc appel, par exemple :


FB32 (DISTANCE:= ECART (X1:=-3, Y1:=2, X2:=8.9,
Y2:=7.4, Q2:=Somme_chiffres);

Exemple 16-7 Calcul dune valeur dans une FC

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 16-19
Appel de fonctions et de blocs fonctionnels

16.4 Paramtres dfinis automatiquement

Prsentation Les paramtres dfinis automatiquement sont ceux que vous pouvez utiliser sans
devoir pralablement les dclarer dans un bloc. SCL en met deux votre disposi-
tion :
S le paramtre dentre EN,
S le paramtre de sortie ENO.
Tous deux sont du type de donnes BOOL et se trouvent dans la zone des donnes
temporaires du bloc.

Paramtre dentre Tout bloc fonctionnel et toute fonction possdent le paramtre dentre EN, dfini
EN automatiquement. Si EN est vrai, le bloc appel est excut, sinon il ne lest pas.
Laffectation dune valeur au paramtre EN est facultative.
Sachez que EN ne doit pas tre dclar dans la section de dclaration dun bloc ou
dune fonction.
Puisque EN est un paramtre dentre, vous ne pouvez pas le modifier dans un bloc.

Nota
Si la fonction nest pas appele car EN:=FALSE,sa valeur en retour nest pas dfi-
nie.

Exemple Voici un exemple dutilisation du paramtre EN :

FUNCTION_BLOCK FB57
VAR
RESULTAT : REAL;
MA_VALID : BOOL;
END_VAR
//...
BEGIN
MA_VALID:= FALSE;
// Appel dune fonction,
// avec affectation de valeur au paramtre EN :

RESULTAT:= FC85 (EN:= MA_VALID, PAR_1:= 27);


// La FC85 na pas t excute, car la valeur FALSE
// a t affecte MA_VALID
//...
END_FUNCTION_BLOCK

Exemple 16-8 Utilisation de EN

SCL pour SIMATIC S7-300/400, Programmation de blocs


16-20 C79000-G7077-C522-01
Appel de fonctions et de blocs fonctionnels

Paramtre de Tout bloc fonctionnel et toute fonction possdent le paramtre de sortie ENO de type
sortie ENO BOOL, dfini automatiquement. A la fin de lexcution dun bloc, la valeur actuelle
de la variable OK est inscrite dans le paramtre ENO.
Immdiatement aprs avoir appel un bloc, vous pouvez vrifier, laide de la
valeur du paramtre ENO, si toutes les oprations dans le bloc ont t excutes cor-
rectement ou si des erreurs sont survenues.

Exemple Voici un exemple dutilisation du paramtre EN0.

FUNCTION_BLOCK FB57
//...
//...
BEGIN
// Appel dun bloc fonctionnel :
FB30.DB30 (X1:=10, X2:=10.5);

// Vrification du droulement correct


// dans le bloc appel :

IF ENO THEN
// tout cest correctement droul
//...
ELSE
// une erreur est survenue,
// et doit tre corrige
//...
END_IF;
//...
//...
END_FUNCTION_BLOCK

Exemple 16-9 Utilisation de ENO

Exemple Voici une combinaison de EN et EN0

// EN et ENO peuvent aussi tre combins

FB30.DB30(X1:=10, X2:=10.5);

// La fonction suivante ne doit sexcuter


// que si le FB30 la t
// sans erreur :

RESULTAT:= FC85 (EN:= ENO, PAR_1:= 27);

Exemple 16-10 Combinaison de EN et ENO

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 16-21
Appel de fonctions et de blocs fonctionnels

SCL pour SIMATIC S7-300/400, Programmation de blocs


16-22 C79000-G7077-C522-01
Compteurs et temporisations 17
Prsentation Vous avez la possibilit de soumettre lexcution de votre programme des vne-
ments de temporisation ou des valeurs de comptage.
STEP 7 vous propose cet effet diverses fonctions de comptage et de temporisation
que vous pouvez utiliser dans votre programme SCL sans devoir pralablement les
dclarer.

Structure du Paragraphe Thme Page


chapitre 17.1 Fonctions de comptage 17-2
17.1.1 Saisie et exploitation de la valeur de comptage 17-6
17.1.2 Incrmenter (Counter Up) 17-7
17.1.3 Dcrmenter (Counter Down) 17-7
17.1.4 Incrmenter / dcrmenter (Counter Up Down) 17-8
17.1.5 Exemple de fonction S_CD (dcrmenter) 17-8
17.2 Fonctions de temporisation (TIMER) 17-10
17.2.1 Saisie et exploitation de la valeur de temps 17-14
17.2.2 Dmarrer une temporisation sous forme dimpulsion 17-16
17.2.3 Dmarrer une temporisation sous forme dimpulsion prolonge 17-17
17.2.4 Dmarrer une temporisation sous forme de retard la monte 17-18
17.2.5 Dmarrer une temporisation sous forme de retard la monte 17-19
mmoris
17.2.6 Dmarrer une temporisation sous forme de retard la retombe 17-20
17.2.7 Exemple de programme pour une impulsion prolonge 17-21
17.2.8 Choix de la temporisation correcte 17-22

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 17-1
Compteurs et temporisations

17.1 Fonctions de comptage

Prsentation STEP 7 met votre disposition une srie de fonctions de comptage standard que
vous pouvez utiliser dans votre programme SCL sans devoir pralablement les
dclarer. Il vous suffit de leur affecter les paramtres requis. Voici les fonctions de
comptage que vous propose STEP 7 :
S compteur incrmental (Counter Up)
S compteur dcrmental (Counter Down)
S compteur incrmental et dcrmental (Counter Up Down)

Appel Vous appelez une fonction de comptage de la mme manire que vous appelez une
fonction. La dsignation dune fonction peut remplacer tout oprande dans une
expression, si le type du rsultat de la fonction est compatible avec celui de lop-
rande remplac.

Tableau 17-1 Nom des fonctions de comptage

Nom de la fonction Signification


S_CU Compteur incrmental (Counter Up)
S_CD Compteur dcrmental (Counter Down)
S_CUD Compteur incrmental et dcrmental (Counter Up Down)

Valeur de la La valeur de la fonction (valeur en retour) fournie l o elle est appele correspond
fonction la valeur de comptage actuelle (format DCB) dans le type de donnes WORD.
Vous trouverez de plus amples informations ce sujet au paragraphe 17.1.1.

SCL pour SIMATIC S7-300/400, Programmation de blocs


17-2 C79000-G7077-C522-01
Compteurs et temporisations

Paramtres La dsignation et la description des paramtres dappel des trois fonctions de comp-
dappel tage figurent dans le tableau 17-2. Il faut gnralement distinguer les types de para-
mtres suivants :
S paramtres de commande (p. ex. mettre 1 , mettre 0 , indication du
sens de comptage)
S valeur de prslection du compteur
S sortie de ltat (indiquant la fin du comptage)
S tat du compteur sous forme binaire

Tableau 17-2 Paramtres dappel

Dsignation Paramtre Type de Description


donnes
C_NO COUNTER Numro du compteur (DESIGNATION DU
COMPTEUR) ; la plage dpend de la CPU.
CU Entre BOOL Entre CU : incrmenter
CD Entre BOOL Entre CD : dcrmenter
S Entre BOOL Entre de mise 1 du compteur
PV Entre WORD Valeur pour prslection du compteur comprise
entre 0 et 999 (saisie sous forme 16#<valeur>, la
valeur tant une valeur DCB)
R Entre BOOL Entre de remise 0 du compteur
Q Sortie BOOL Etat du compteur
CV Sortie WORD Etat du compteur (binaire)

Exemple Dans lexemple 17-1, une zone de mmoire globale de type COUNTER appele
Z12 est rserve lors du calcul de la fonction.

Valeur_comptage:= S_CUD (C_NO :=Z12,


CD :=E.0,
CU :=E.1,
S :=E.2 & E.3,
PV :=120,
R :=FALSE,
CV :=binVal,
Q :=actFlag);

Exemple 17-1 Appel dune fonction de dcrmentation

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 17-3
Compteurs et temporisations

Appel dynamique Au lieu dappeler le compteur par un numro absolu (par exemple C_NO=Z10),
vous pouvez galement indiquer une variable de type de donnes COUNTER.
Lavantage rside dans le fait que vous pouvez raliser lappel de la fonction de
comptage de manire dynamique, en affectant chaque appel un numro absolu
diffrent sa variable.

Exemple :
FUNCTION_BLOCK COMPTEUR;
Var_Input
MonCompteur: Counter;
End_Var
:
currVAL:=S_CD (C_NO:=MonCompteur,........);

Rgles Puisque les valeurs des paramtres (par exemple CD:=E.0) sont enregistres globa-
lement, leur indication est dans certains cas facultative. Vous devez tenir compte des
rgles suivantes pour laffectation des paramtres :
S Lorsque vous appelez le compteur, vous devez toujours affecter une valeur son
paramtre de dsignation C_NO.
S Selon la fonction de comptage choisie, vous devez affecter une valeur au para-
mtre CU (compteur incrmental) ou au paramtre CD (compteur dcrmental).
S Lindication de la paire de paramtres PV (valeur de prslection) et S (mettre
1 ) est facultative.
S Le rsultat dans le format DCB correspond toujours la valeur de la fonction.

Nota
Les abrviations SIMATIC et CEI des noms des fonctions et des paramtres sont les
mmes, lexception de la dsignation du compteur : SIMATIC : Z et CEI : C.

SCL pour SIMATIC S7-300/400, Programmation de blocs


17-4 C79000-G7077-C522-01
Compteurs et temporisations

Exemple dappel Lexemple 17-2 montre lappel des fonctions de comptage :


de fonctions de
comptage
Function_block FB1

VAR
currVal, binVal: word;
actFlag: bool;
END_VAR

BEGIN
currVal :=S_CD(C_NO:=Z10, CD:=TRUE, S:=TRUE,
PV:=100, R:=FALSE, CV:=binVal,
Q:=actFlag);

currVal :=S_CU(C_NO:=Z11, CU:=M0.0, S:=M0,1,


PV:=16#110, R:=M0.2, CV:=binVal,
Q:=actFlag);

currVal :=S_CUD(C_NO:=Z12, CD:=E.0,


CU:=E.1,S:=E.2 & E.3, PV:=120,
R:=FALSE,CV:=binVal, Q:=actFlag);

currVal :=S_CD(C_NO:=Z10,CD:=FALSE,
S:=FALSE,
PV:=100, R:=TRUE, CV:=bVal,
Q:=actFlag);

end_function_block

Exemple 17-2 Appel des fonctions de comptage

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 17-5
Compteurs et temporisations

17.1.1 Saisie et exploitation de la valeur de comptage

Prsentation Pour la saisie de la valeur de prslection ou lexploitation du rsultat de la fonction,


vous devez utiliser la reprsentation interne de la valeur de comptage (voir figure 17-1).
Lorsque vous mettez le compteur 1 (paramtre S), la valeur que vous avez pr-
slectionne sy inscrit. La plage des valeurs autorises est comprise entre 0 et 999.
Vous pouvez modifier la valeur de comptage dans cette plage en utilisant les fonc-
tions dincrmentation/dcrmentation, dincrmentation ou de dcrmentation.

Format La figure 17-1 donne la reprsentation de la valeur de comptage en bits :

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
X X X X 0 0 0 1 0 0 1 0 0 1 1 1

1 2 7

Valeur de comptage dans le format DCB (0 999)

Ces bits sont insignifiants et ne sont donc pas pris en compte lorsque le
compteur est mis 1 .

Figure 17-1 Reprsentation de la valeur de comptage en bits

Saisie Pour charger une valeur de comptage prdfinie, vous pouvez utiliser les formats
suivants :
S dcimal sous forme de valeur entire : p. ex. 295, si cette valeur correspond un
codage DCB autoris.
S format DCB (saisie sous forme de constante hexadcimale) : p. ex. 16#127

Exploitation Pour exploiter le rsultat, vous pouvez utiliser les deux formats suivants :
S comme rsultat de la fonction (type WORD) : format DCB
S comme paramtre de sortie CV (type WORD) : binaire

SCL pour SIMATIC S7-300/400, Programmation de blocs


17-6 C79000-G7077-C522-01
Compteurs et temporisations

17.1.2 Incrmenter (Counter Up)

Description Le compteur incrmental vous permet uniquement deffectuer des oprations din-
crmentation.

Tableau 17-3 Fonctionnement du compteur incrmental

Fonctionnement Opration Fonctionnement


Incrmenter La valeur du compteur est augmente de 1 , lorsque ltat de signal len-
tre CU passe de 0 1 et si la valeur de comptage est infrieure 999.
Mettre le Lorsque ltat de signal lentre S passe de 0 1 , le compteur prend la
compteur valeur de lentre PV. Un tel changement de signal est toujours requis pour
1 mettre un compteur 1 .
Mettre le Le compteur est mis 0 lorsque lentre R = 1. A la mise 0 du comp-
compteur teur, la valeur de comptage prend la valeur 0 .
0
Interroger le Linterrogation de ltat de signal la sortie Q fournit la valeur 1 , si la
compteur valeur de comptage est suprieure 0 . Il fournit la valeur 0 , si la valeur
de comptage est gale 0 .

17.1.3 Dcrmenter (Counter Down)

Description Le compteur dcrmental vous permet uniquement deffectuer des oprations de


dcrmentation.

Tableau 17-4 Fonctionnement du compteur dcrmental

Fonctionnement Opration Fonctionnement


Dcrmenter La valeur du compteur est diminue de 1 , lorsque ltat de signal lentre
CD passe de 0 1 (front montant) et si la valeur de comptage est sup-
rieure 0 .
Mettre le Lorsque ltat de signal lentre S passe de 0 1 , le compteur prend la
compteur valeur de lentre PV. Un tel changement de signal est toujours requis pour
1 mettre un compteur 1 .
Mettre le Le compteur est mis 0 lorsque lentre R = 1. A la mise 0 du comp-
compteur teur, la valeur de comptage prend la valeur 0 .
0
Interroger le Linterrogation de ltat de signal la sortie Q fournit la valeur 1 , si la
compteur valeur de comptage est suprieure 0 . Il fournit la valeur 0 , si la valeur
de comptage est gale 0 .

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 17-7
Compteurs et temporisations

17.1.4 Incrmenter / dcrmenter (Counter Up Down)

Description Le compteur incrmental et dcrmental vous permet dexcuter aussi bien des op-
rations dincrmentation que de dcrmentation. Lorsque deux impulsions sont
simultanes, les deux oprations sont traites. La valeur de comptage reste inchan-
ge.

Tableau 17-5 Fonctionnement du compteur incrmental/dcrmental

Fonctionnement Opration Fonctionnement


Incrmenter La valeur du compteur est augmente de 1 , lorsque ltat de signal len-
tre CU passe de 0 1 et si la valeur de compatge est infrieure 999.
Dcrmenter La valeur du compteur est diminue de 1 , lorsque ltat de signal lentre
CD passe de 0 1 et si la valeur de comptage est suprieure 0 .
Mettre le Lorsque ltat de signal lentre S passe de 0 1 , le compteur prend la
compteur valeur de lentre PV. Un tel changement de signal est toujours requis pour
1 mettre un compteur 1 .
Mettre le Le compteur est mis 0 lorsque lentre R = 1. A la mise 0 du comp-
compteur teur, la valeur de comptage prend la valeur 0 .
0
Interroger le Linterrogation de ltat de signal la sortie Q fournit la valeur 1 , si la
compteur valeur de comptage est suprieure 0 . Il fournit la valeur 0 , si la valeur
de comptage est gale 0 .

17.1.5 Exemple de fonction S_CD (dcrmenter)

Affectation des Le tableau 17-6 montre un exemple daffectation de paramtres la fonction S_CD.
paramtres

Tableau 17-6 Paramtres dappel

Paramtre Description
C_NO MonCompteur
CD Entre E0.0
S METTRE_1
PV Prslection 16#0089
R METTRE_0
Q A0.7
CV VAL_BIN

SCL pour SIMATIC S7-300/400, Programmation de blocs


17-8 C79000-G7077-C522-01
Compteurs et temporisations

Exemple Lexemple 17-3 reprsente la fonction de comptage S_CD :

FUNCTION_BLOCK COMPTER
VAR_INPUT
MONCOMPTEUR: COUNTER;
END_VAR
VAR_OUTPUT
RESULTAT: INT;
END_VAR
VAR
METTRE_1 : BOOL;
METTRE_0 : BOOL;
VAL_DCB : WORD; //Etat du compteur, format DCB
VAL_BIN : WORD; //Etat du compteur, format binaire
PRESELECTION : WORD;
END_VAR
BEGIN
A0.0:= 1;
METTRE_1:= E0.2;
METTRE_0:= E0.3;
PRESELECTION:= 16#0089;
VAL_DCB:= S_CD
(C_NO := MONCOMPTEUR,//dcrmenter
CD := E.0,
S := METTRE_1,
PV := PRESELECTION,
R := METTRE_0,
CV := VAL_BIN,
Q := A0.7);
RESULTAT:=WORD_TO_INT(VAL_BIN);//EXPLOITATION RESULTAT
//comme paramtre de sortie
AW4:= VAL_DCB; //Vers la sortie pour affichage
END_FUNCTION_BLOCK

Exemple 17-3 Exemple de fonction de comptage

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 17-9
Compteurs et temporisations

17.2 Fonctions de temporisation (TIMER)

Prsentation Les temporisations sont des lments fonctionnels de votre programme vous permet-
tant dexcuter et de contrler des squences dclenches par horloge. STEP 7 met
votre disposition une srie de fonctions de temporisation standard que vous pouvez
utiliser dans votre programme SCL pour :
S rgler des temps dattente
S permettre des temps de surveillance
S crer des impulsions
S chronomtrer des dures

Appel Vous appelez une fonction de temporisation de la mme manire quune fonction de
comptage. La dsignation dune fonction peut remplacer tout oprande dans une
expression, si le type du rsultat de la fonction est compatible avec celui de lop-
rande remplac.

Tableau 17-7 Fonctions de temporisation de STEP 7

Nom de la fonction Signification


S_PULSE Impulsion (Pulse)
S_PEXT Impulsion prolonge (Pulse Extended)
S_ODT Retard la monte (On Delay Time)
S_ODTS Retard la monte mmoris (Stored On Delay Time)
S_OFFDT Retard la retombe (Off Delay Time)

Valeur de la La valeur de la fonction (valeur en retour) fournie l o elle est appele correspond
fonction la valeur de temps de type de donnes S5TIME. Vous trouverez de plus amples
informations ce sujet au paragraphe 17.2.1.

SCL pour SIMATIC S7-300/400, Programmation de blocs


17-10 C79000-G7077-C522-01
Compteurs et temporisations

Paramtres Les paramtres auxquels vous devez affecter une valeur sont donns sous forme de
dappel tableau dans la description de chaque fonction de temporisation. Le tableau 17-8
indique les noms des cinq fonctions de temporisation avec les types de donnes cor-
respondants.
Il faut gnralement distinguer les types de paramtres suivants :
S paramtre de commande (par exemple mettre 1 , mettre 0 ),
S valeur de prslection pour le temps initial,
S tat de la sortie, indique si la temporisation fonctionne encore,
S valeur de temps restante,

Tableau 17-8 Paramtres dappel

Paramtre Type de Description


donnes
T_NO TIMER Numro didentification de la temporisation ; la plage dpend de
la CPU.
S BOOL Entre de dmarrage
TV S5TIME Prslection de la valeur de temps (format DCB)
R BOOL Entre de remise zro
Q BOOL Etat de la temporisation
BI WORD Valeur de temps restante (binaire)

Exemple Dans lexemple 17-4, une zone de mmoire globale de type TIMER appele T10 est
rserve lors de lexcution de la temporisation.

RETARD:= S_ODT (T_NO := T10,


S := TRUE,
TV := T#1s,
R := FALSE,
BI := biVal,
Q := actFlag
);

Exemple 17-4 Appel de la fonction de temporisation S_ODT

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 17-11
Compteurs et temporisations

Appel dynamique Au lieu dappeler la temporisation par un numro absolu (par exemple T10), vous
pouvez galement indiquer une variable de type de donnes TIMER. Lavantage
rside dans le fait que vous pouvez raliser lappel de la fonction de temporisation
de manire dynamique, en affectant chaque appel un numro absolu diffrent sa
variable.

Exemple :
FUNCTION_BLOCK TEMPORISATION
VAR_INPUT
MaTempo: Timer;
END_VAR
:
currTime:=S_ODT (T_NO:=MaTempo,.........)

Rgles Puisque les valeurs des paramtres sont enregistres globalement, leur indication est
dans certains cas facultative. Vous devez tenir compte des rgles suivantes pour laf-
fectation des paramtres :
S Lorsque vous appelez la temporisation, vous devez toujours affecter une valeur
abslolue ou symbolique son paramtre de dsignation T_NO.
S Lindication de la paire de paramtres TV (valeur de prslection) et S (mettre
1 ) est facultative.
S Laffectation de la sortie est facultative. Vous pouvez adresser Q et BI par une
affectation de valeur.
S Le rsultat dans le format S5TIME correspond toujours la valeur de la fonc-
tion.

Nota
Les abrviations SIMATIC et CEI des noms des fonctions sont les mmes.

SCL pour SIMATIC S7-300/400, Programmation de blocs


17-12 C79000-G7077-C522-01
Compteurs et temporisations

Exemple dappel Lexemple 17-5 montre lappel des fonctions de temporisation :


dune fonction de
temporisation
FUNCTION_BLOCK FB2

VAR
currTime: S5time;
biVal: word;
actFlag: bool;
END VAR

BEGIN
currTime:= S_ODT (T_NO:=T10, S:=TRUE, TV:=T#1s,
R:=FALSE, BI:=biVal,
Q:=actFlag);

currTime:= S_ODTS (T_NO:=T11, S:=M0,0, TV:=T#1s,


R:= M0.1, BI:=biVal,
Q:= actFlag);

currTime:=S_OFFDT (T_NO:=T12, S:=I0.1&actFlag,


TV:= T#1s,R:=FALSE,BI:=biVal,
Q:= actFlag);

currTime:= S_PEXT (T_NO:=T13, S:=TRUE,


TV:=T#1s,R:=I0.0, BI:=biVal,
Q:=actFlag);

currTime:= S_PULSE (T_NO:=T14, S:=TRUE,


TV:=T#1s,R:=FALSE, BI:=biVal,
Q:=actFlag);
END_FUNCTION_BLOCK

Exemple 17-5 Appel des fonctions de temporisation

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 17-13
Compteurs et temporisations

17.2.1 Saisie et exploitation de la valeur de temps

Prsentation Pour la saisie de la valeur de prslection ou lexploitation du rsultat de la fonction en code


DCB, vous devez utiliser la reprsentation interne de la valeur de temps (voir figure 17-2).
Lors de la mise jour de la temporisation, la valeur de temps est diminue dune unit
par intervalle, celui-ci ayant t dtermin partir de la base de temps. La valeur de
temps est diminue jusqu ce quelle soit gale 0 . La plage des valeurs est com-
prise entre 0 et 9990 secondes.

Format La figure 17-2 donne la reprsentation interne de la valeur de temps.

15... ...8 7... ...0


x x 1 0 0 0 0 1 0 0 1 0 0 1 1 1

1 2 7

Base de temps Valeur de temps dans le format DCB (0 999)


1 seconde
Ces bits sont insignifiants lappel de la temporisation

Figure 17-2 Reprsentation de la valeur de temps

Saisie Pour charger une valeur de temps prdfinie, vous pouvez utiliser les reprsentations
suivantes :
S reprsentation par niveaux : TIME#aH_bbM_ccS_dddMS
S reprsentation dcimale : TIME#2.4H

Exploitation Pour exploiter le rsultat, vous pouvez utiliser lun des deux formats suivants :
S comme rsultat de la fonction (type S5TIME) : format DCB,
S comme paramtre de sortie (valeur de temps sans base de temps du type WORD) :
format binaire.

SCL pour SIMATIC S7-300/400, Programmation de blocs


17-14 C79000-G7077-C522-01
Compteurs et temporisations

Base de temps Les bits 12 et 13 du mot de temporisation contiennent la base de temps dans le for-
mat binaire. Cest elle qui dfinit lintervalle dans lequel la valeur de temps est
diminue dune unit (voir tableau 17-9 et figure 17-2). La base de temps la plus
petite est gale 10 ms, la plus grande 10 s.

Tableau 17-9 Base de temsp avec le code binaire correspondant

Base de temps Code binaire


10 ms 00
100 ms 01
1s 10
10 s 11

Nota
Les valeurs ntant enregistres que durant un intervalle de temps donn, celles qui
nen sont pas un multiple exact sont tronques.
Les valeurs dont la rsolution est trop grande pour la plage souhaite sont arrondies,
si bien que lobjectif est la plage voulue et non pas la rsolution dsire.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 17-15
Compteurs et temporisations

17.2.2 Dmarrer une temporisation sous forme dimpulsion

Description Le temps maximal durant lequel le signal de sortie reste 1 est gal la valeur
de temps t programme.
Si ltat de signal 0 apparat lentre pendant la dure dexcution de la tempo-
risation, la sortie est mise 0 (le temps est arrt). La dure dexcution est
donc interrompue avant la fin.
La figure 17-3 reprsente le fonctionnement de la temporisation Dmarrer une
temporisation sous forme dimpulsion :

Signal dentre E 2.1

Signal de sortie A 4.0 S_PULSE


(temporisation sous forme t
dimpulsion)

Figure 17-3 Temporisation Dmarrer une temporisation sous forme dimpulsion

Tableau 17-10 Fonctionnement de lopration Dmarrer une temporisation sous forme dim-
pulsion

Fonctionnement Opration Fonctionnement


Dmarrer la tem- Lopration Dmarrer une temporisation sous forme dimpulsion
porisation dmarre la temporisation indique, lorsque ltat de signal lentre de
dmarrage S passe de 0 1 . Un changement dtat de signal est
toujours requis pour valider la temporisation.
Prslectionner la La temporisation continue de sexcuter avec la valeur indique lentre
dure dexcu- TV jusqu ce que la dure programme se soit coule et tant que lentre
tion S = 1.
Arrter la tempo- Si le signal lentre S passe de 1 0 avant que la valeur de temps
risation avant la ne se soit coule, la temporisation est arrte.
fin
Initialiser La temporisation est initialise lorsque le signal lentre de remise
zro R passe de 0 1 , pendant que la temporisation sexcute. La
valeur de temps et la base de temps sont alors galement remises zro.
Ltat de signal 1 lentre R na aucun effet lorsque la temporisation
ne sexcute pas.
Interroger ltat Tant que la temporisation sexcute, linterrogation 1 de ltat de sig-
de signal nal la sortie Q fournit le rsultat 1 . Si la dure dexcution a t
arrte avant la fin, linterrogation de ltat de signal la sortie Q fournit le
rsultat 0 .
Interroger la Vous pouvez interroger la valeur de temps actuelle la sortie BI laide de
valeur de temps la valeur de la fonction S_PULSE.
actuelle

SCL pour SIMATIC S7-300/400, Programmation de blocs


17-16 C79000-G7077-C522-01
Compteurs et temporisations

17.2.3 Dmarrer une temporisation sous forme dimpulsion prolonge

Description Durant le temps (t) programm, le signal de sortie reste 1 , quelle que soit la
dure pendant laquelle le signal dentre reste 1 . Lorsque limpulsion de
dmarrage est nouveau initie, la dure scoule une nouvelle fois, se sorte que
limpulsion de sortie est prolonge dans la temps (redmarrage).
La figure 17-4 reprsente le fonctionnement de la temporisation Dmarrer une
temporisation sous forme dimpulsion prolonge .

Signal dentre E 2.1

Signal de sortie A 4.0 S_PEXT


(temporisation sous forme t
dimpulsion prolonge)

Figure 17-4 Temporisation Dmarrer une temporisation sous forme dimpulsion prolonge

Tableau 17-11 Fonctionnement de lopration Dmarrer une temporisation sous forme dim-
pulsion prolonge

Fonctionnement Opration Fonctionnement


Dmarrer la tem- Lopration Dmarrer une temporisation sous forme dimpulsion prolon-
porisation ge dmarre la temporisation indique, lorsque ltat de signal lentre
de dmarrage (S) passe de 0 1 . Un changement dtat de signal est
toujours requis pour valider la temporisation.
Redmarrer la Si ltat de signal lentre S passe une nouvelle fois 1 pendant la
dure dexcu- dure dexcution, la temporisation est redmarre avec la valeur de temps
tion indique.
Prslectionner la La temporisation sexcute avec la valeur indique lentre TV jusqu ce
dure dexcu- que la dure programme se soit coule.
tion
Initialiser La temporisation est initialise lorsque le signal lentre de remise zro
(R) passe de 0 1 , pendant que la temporisation sexcute. La
valeur de temps et la base de temps sont alors galement remises zro.
Ltat de signal 1 lentre R na aucun effet lorsque la temporisation
ne sexcute pas.
Interroger ltat Tant que la temporisation sexcute, linterrogation 1 de ltat de sig-
de signal nal la sortie Q fournit le rsultat 1 , quelle que soit la dure du signal
dentre.
Interroger la Vous pouvez interroger la valeur de temps actuelle la sortie BI laide de
valeur de temps la valeur de la fonction S_PEXT.
actuelle

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 17-17
Compteurs et temporisations

17.2.4 Dmarrer une temporisation sous forme de retard la monte

Description Le signal de sortie ne passe de 0 1 que lorsque la temporisation program-


me sest coule et que le signal dentre est toujours 1 . Ceci signifie que la
sortie est active avec un retard. Les signaux dentre dont la dure est plus courte
que celle de la temporisation programme napparaissent pas la sortie.
La figure 17-5 reprsente le fonctionnement de la temporisation
Dmarrer une temporisation sous forme de retard la monte .

Signal dentre E 2.1

A 4.0 S_ODT
Signal de sortie t
(temporisation sous forme
de retard la monte)

Figure 17-5 Temporisation Dmarrer une temporisation sous forme de retard la monte

Tableau 17-12 Fonctionnement de lopration Dmarrer une temporisation sous forme de


retard la monte

Fonctionnement Opration Fonctionnement


Dmarrer la tem- Lopration Dmarrer une temporisation sous forme de retard la mon-
porisation te dmarre la temporisation indique, lorsque ltat de signal lentre
de dmarrage S passe de 0 1 . Un changement dtat de signal est
toujours requis pour valider la temporisation.
Arrter la tempo- Si le signal lentre S passe de 1 0 pendant que la temporisation
risation sexcute, celle-ci est arrte.
Prslectionner la La temporisation continue de sexcuter avec la valeur indique lentre
dure dexcu- TV tant que ltat de signal lentre S = 1.
tion
Initialiser La temporisation est initialise lorsque le signal lentre de remise
zro R passe de 0 1 , pendant que la temporisation sexcute. La
valeur de temps et la base de temps sont alors galement remises zro. La
temporisation est galement remise zro lorsque R=1 quand elle ne sex-
cute pas.
Interroger ltat Une interrogation 1 de ltat de signal la sortie Q fournit le rsultat
de signal 1 , lorsque la temporisation sest coule correctement et que lentre S
est toujours 1 .
Si la temporisation a t arrte, linterrogation 1 de ltat de signal
donne toujours 0 .
Une interrogation 1 de ltat de signal la sortie Q fournit galement
le rsultat 0 , lorsque la temporisation ne sexcute pas et que ltat de
signal lentre S est toujours gal 1 .
Interroger la Vous pouvez interroger la valeur de temps actuelle la sortie BI laide de
valeur de temps la valeur de la fonction S_ODT.
actuelle

SCL pour SIMATIC S7-300/400, Programmation de blocs


17-18 C79000-G7077-C522-01
Compteurs et temporisations

17.2.5 Dmarrer une temporisation sous forme de retard la monte


mmoris

Description Le signal de sortie ne passe de 0 1 que lorsque la temporisation program-


me sest coule, quelle que soit la dure pendant laquelle le signal dentre reste
1 .
La figure 17-6 reprsente le fonctionnement de la temporisation Dmarrer une
temporisation sous forme de retard la monte mmoris .

Signal dentre E 2.1

A 4.0 S_ODTS
Signal de sortie t
(temporisation sous forme de
retard la monte mmoris)

Figure 17-6 Temporisation Dmarrer une temporiastion sous forme de retard la monte
mmoris

Tableau 17-13 Fonctionnement de lopration Dmarrer une temporisation sous forme de


retard la monte mmoris

Fonctionnement Opration Fonctionnement


Dmarrer la tem- Lopration Dmarrer une temporisation sous forme de retard la monte
porisation mmoris dmarre la temporisation indique, lorsque ltat de signal
lentre de dmarrage S passe de 0 1 . Un changement dtat de
signal est toujours requis pour valider la temporisation.
Redmarrer la La temporisation est redmarre avec la valeur indique lorsque lentre S
temporisation passe de 0 1 pendant que la temporisation sexcute.
Prslectionner La temporisation continue de sexcuter avec la valeur indique lentre
la dure dexcu- TV, mme lorsque ltat de signal lentre S passe 0 avant que la
tion temporisation ne se soit coule.
Initialiser La temporisation est initialise lorsque le signal lentre de remise
zro R passe de 0 1 , quelle que soit la valeur du RLG (rsultat
logique, voir /232/) lentre S.
Interroger ltat Une interrogation 1 de ltat de signal la sortie Q fournit le rsultat
de signal 1 , lorsque la temporisation sest coule, quel que soit ltat de signal
lentre S.
Interroger la Vous pouvez interroger la valeur de temps actuelle la sortie BI laide de
valeur de temps la valeur de la fonction S_ODTS.
actuelle

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 17-19
Compteurs et temporisations

17.2.6 Dmarrer une temporisation sous forme de retard la retombe

Description Lorsque ltat de signal lentre S passe de 0 1 , la sortie Q prend ltat de


signal 1 . Lorsque ltat de signal lentre de dmarrage passe de 1 0 ,
la temporisation est dmarre. Ce nest quune fois la dure coule que la sortie
prend ltat de signal 0 . La sortie est donc dsactive avec un retard.
La figure 17-7 reprsente le fonctionnement de la temporisation Dmarrer une
temporisation sous forme de retard la retombe .

Signal dentre E 2.1

A 4.0 S_OFFDT
Signal de sortie t
(temporisation sous forme
de retard la retombe)

Figure 17-7 Temporisation Dmarrer une temporisation sous forme de retard la retombe

Tableau 17-14 Fonctionnement de lopration Dmarrer une temporisation sous forme de


retard la retombe

Fonctionnement Opration Fonctionnement


Dmarrer la tem- Lopration Dmarrer une temporisation sous forme de retard la retom-
porisation be dmarre la temporisation indique, lorsque ltat de signal lentre
de dmarrage S passe de 1 0 . Un changement dtat de signal est
toujours requis pour valider la temporisation.
Redmarrer la La temporisation est redmarre lorsque ltat de signal lentre S passe
temporisation une nouvelle fois de 1 0 (par exemple aprs linitialisation).
Prslectionner la La temporisation sexcute avec la valeur indique lentre TV.
dure dexcu-
tion
Initialiser La temporisation est initialise lorsque le signal lentre de remise
zro R passe de 0 1 , pendant que la temporisation sexcute.
Interroger ltat Une interrogation 1 de ltat de signal la sortie Q fournit le rsultat
de signal 1 , lorsque ltat de signal lentre S = 1 ou lorsque la temporisation
sexcute.
Interroger la Vous pouvez interroger la valeur de temps actuelle la sortie BI laide de
valeur de temps la valeur de la fonction S_OFFDT.
actuelle

SCL pour SIMATIC S7-300/400, Programmation de blocs


17-20 C79000-G7077-C522-01
Compteurs et temporisations

17.2.7 Exemple de programme pour une impulsion prolonge

Exemple S_PEXT Lexemple 17-6 montre un programme dapplication de la fonction de temporisation


Impulsion prolonge .

FUNCTION_BLOCK HORLOGE
VAR_INPUT
MA_TEMPO: TIMER;
END_VAR
VAR_OUTPUT
RESULTAT: S5TIME;
END_VAR
VAR
METTRE_1 : BOOL;
METTRE_0 : BOOL;
VAL_DCB : S5TIME;//Valeur temps et valeur
//restante, format DCB
VAL_BIN : WORD; //valeur temps, binaire
PRESELECTION : S5TIME;
END_VAR
BEGIN
A0.0:= 1;
METTRE_1:= E0.0;
METTRE_0:= E0.1;
PRESELECTION:= T#25S;

;
VAL_DCB:= S_PEXT(T_NO:= MA_TEMPO,
S := METTRE_1,
TV := PRESELECTION,
R := METTRE_0,
BI := VAL_BIN,
Q := A0.7);

RESULTAT:=VAL_DCB; //Exploitation rsultat


//comme paramtre de sortie
AW4:= VAL_BIN //vers sortie pour affichage
END_FUNCTION_BLOCK

Exemple 17-6 Exemple de fonction de temporisation

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 17-21
Compteurs et temporisations

17.2.8 Choix de la temporisation correcte

La figure 17-8 reprsente les cinq temporisations qui ont t dcrites dans ce chapi-
tre. Vous pouvez ainsi choisir celle qui correspond vos besoins.

Signal dentre E 2.1

Signal de sortie A 4.0 S_PULSE


(temporisation t
sous forme
Le temps maximal durant lequel le signal de sortie reste
dimpulsion)
1 est gal la valeur de temps t programme. Il reste
1 pour une dure plus courte, si le signal dentre passe
0 .

Signal de sortie A 4.0 S_PEXT


(temporisation sous t
forme dimpulsion
prolonge) Le signal de sortie reste 1 pendant la dure programme,
quelle que soit la dure pendant laquelle le signal dentre
reste 1 . Limpulsion est nouveau lance lorsque le
signal de dclenchement est activ durant la priode t .

Signal de sortie A 4.0 S_ODT


(impulsion sous forme t
de retard la monte
Le signal de sortie ne passe de 0 1 que lorsque le
temps programm sest coul et si le signal dentre est
toujours 1 .

Signal de sortie A 4.0 S_ODTS


(temporisation sous t
forme de retard la
monte mmoris) Le signal de sortie ne passe de 0 1 que lorsque le
temps programm sest coul, quelle que soit la dure
pendant laquelle le signal dentre reste 1

Signal de sortie A 4.0 S_OFFDT


(temporisation sous t
forme de retard la
retombe) Le signal de sortie ne passe de 0 1 que lorsque le
signal dentre passe de 1 0 . Il reste 1 pendant
le temps programm. Le temps est dmarr lorsque le signal
dentre passe de 0 1 .

Figure 17-8 Choix de la temporisation correcte

SCL pour SIMATIC S7-300/400, Programmation de blocs


17-22 C79000-G7077-C522-01
Fonctions standard de SCL 18
Prsentation Pour rsoudre les tches rptitives, SCL met votre disposition une srie de fonc-
tions standard que vous pouvez appeler dans vos blocs SCL.

Structure du Paragraphe Thme Page


chapitre 18.1 Conversion de types de donnes 18-2
18.2 Fonctions standard de conversion de types de donnes 18-3
18.3 Fonctions standard numriques 18-9
18.4 Fonctions standard sur les chanes binaires 18-11

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 18-1
Fonctions standard de SCL

18.1 Conversion de types de donnes

Prsentation Lorsque vous combinez deux oprandes de types de donnes diffrents ou affectez
des expressions des variables, vous devez chaque fois vous assurer de la compa-
tibilit de leur type de donnes. Les cas suivants conduisent des rsultats errons :
S lorsque vous passez un type dune autre classe, comme par exemple du type de
donnes binaire au type de donnes numrique,
S lorsque dans une mme classe de types, le type de donnes cible est moins puis-
sant que le type de donnes source.
Cest la raison pour laquelle, dans ces deux cas, vous devez raliser une conversion
explicite du type de donnes. De plus amples informations ce sujet vous sont don-
nes au paragraphe 18.2.
En dehors de ces deux cas, le compilateur effectue une conversion automatique dans
un format commun, que par la suite nous dsignerons par conversion implicite.

Conversion Le compilateur effectue une conversion implicite des types de donnes au sein de
automatique de lune des deux classes de types de donnes auxiliaires dfinies dans le tableau 18-1,
types de donnes en respectant lordre indiqu. Le format commun de deux oprandes est toujours le
type de donnes le plus petit, dont la plage des valeurs contient les deux oprandes.
Ainsi, le format commun de BYTE et de INTEGER est INTEGER.
Sachez que lors de la conversion dun type de donnes dans la classe ANY_BIT , les
bits gauche sont mis 0.

Tableau 18-1 Ordre de conversion automatique de types de donnes

Classes Ordre de conversion


ANY_BIT BOOL BYTE WORD DWORD
ANY_NUM INT DINT REAL

Lexemple suivant illustre la conversion automatique de types de donnes :

FUNCTION_BLOCK FB10
VAR
REGULATEUR_PID_1:BYTE;
REGULATEUR_PID_2:WORD;
END_VAR
BEGIN
IF (REGULATEUR_PID_1 <> REGULATEUR_PID_2) THEN
// ...
(* * Dans linstruction conditionnelle IF / THEN
prcdente, la variable REGULATEUR_PID_1 est convertie
automatiquement en variable de type de donnes WORD *)
END_FUNCTION_BLOCK

Exemple 18-1 Conversion automatique de types de donnes

SCL pour SIMATIC S7-300/400, Programmation de blocs


18-2 C79000-G7077-C522-01
Fonctions standard de SCL

18.2 Fonctions standard de conversion de types de donnes

Conversion Vous ralisez la conversion explicite de types de donnes laide des fonctions stan-
explicite dard dont la liste figure dans les tableaux 18-2 et 18-3.

Appel de fonction La description dtaille des appels de fonctions gnraux est donne au chapitre 16.
S Paramtre dentre :
Toute fonction de conversion dun type de donnes possde exactement un param-
tre dentre, appel IN. Puisquil sagit dune fonction possdant un seul paramtre,
il suffit dindiquer le paramtre effectif.
S Valeur de la fonction
Le rsultat correspond toujours la valeur de la fonction. Les tableaux 18-2 et 18-3
donnent les rgles de conversion de donnes. Le tableau 18-3 prcise en outre si le
drapeau OK est influenc par la fonction respective.
S Nom de la fonction
Puisque les types de donnes du paramtre dentre et de la valeur de la fonction
sont explicits dans le nom de la fonction, ils ne sont pas dtaills dans les tableaux
18-2 et 18-3 : dans le cas de la fonction BOOL_TO_BYTE, par exemple, le type de
donnes du paramtre dentre est BOOL, celui de la valeur de la fonction tant
BYTE.

Liste des fonctions Le tableau 18-2 donne la liste des fonctions de conversion des types de donnes de
de conversion classe A. Quoique le compilateur les initie implicitement, vous pouvez galement
(classe A) les indiquer de manire explicite. Leur rsultat est toujours dfini.

Tableau 18-2 Fonctions de conversion des types de donnes de classe A

Nom de la fonction Rgle de conversion


BOOL_TO_BYTE Complment par des zros gauche
BOOL_TO_DWORD
BOOL_TO_WORD
BYTE_TO_DWORD
BYTE_TO_WORD
CHAR_TO_STRING Conversion en chane (de longueur 1) contenant le mme caractre.
DINT_TO_REAL Conversion en REAL conformment la norme IEEE. La valeur
peut tre modifie en raison de lautre prcision pour REAL.
INT_TO_DINT Pour un paramtre dentre ngatif, le mot de poids fort de la valeur
de lafonction est complt par 16#FFFF, dans tous les autres cas
par des zros.
INT_TO_REAL Conversion en REAL, conformment la norme IEEE. La
valeur reste identique.
WORD_TO_DWORD Complment par des zros gauche

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 18-3
Fonctions standard de SCL

Liste des fonctions Le tableau 18-3 donne la liste des fonctions de conversion des types de donnes de
de conversion classe B. Vous devez les spcifier explicitement. Si la taille du type de donnes cible
(classe B) est insuffisante, leur rsultat peut tre indfini.
Vous pouvez vrifier vous-mme cette ventualit, en insrant une vrification de
limites ou alors la faire vrifier par le systme, en slectionnant loption Drapeau
OK avant leffectuer la compilation. Dans les cas o le rsultat est indfini, le sys-
tme affecte la valeur FALSE la variable OK.

Tableau 18-3 Fonctions de conversion des types de donnes de classe B

Nom de la fonction Rgle de conversion OK


BYTE_TO_BOOL Copie du bit de poids faible O
BYTE_TO_CHAR Reprise de la chane binaire N
CHAR_TO_BYTE Reprise de la chane binaire N
CHAR_TO_INT La chane binaire du paramtre dentre est inscrite dans N
loctet de poids faible de la valeur de la fonction.
Loctet de poids fort est complt par des zros.

DATE_TO_DINT Reprise de la chane binaire N


DINT_TO_DATE Reprise de la chane binaire O
DINT_TO_DWORD Reprise de la chane binaire N
DINT_TO_INT Copie du bit de signe.
La valeur du paramtre dentre est interprte dans le
type de donnes INT.
Si la valeur est infrieure -32_768 ou suprireure
32_767, la variable OK prend la valeur FALSE.
DINT_TO_TIME Reprise de la chane binaire N
DINT_TO_TOD Reprise de la chane binaire O
DWORD_TO_BOOL Copie du bit de pois faible O
DWORD_TO_BYTE Copie des 8 bits de poids faible O
DWORD_TO_DINT Reprise de la chane binaire N
DWORD_TO_REAL Reprise de la chane binaire N
DWORD_TO_WORD Copie des 16 bits de poids faible O
INT_TO_CHAR Reprise de la chane binaire O
INT_TO_WORD Reprise de la chane binaire N
REAL_TO_DINT Arrondi de la valeur REAL IEEE DINT. O
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 Reprise de la chane binaire N
REAL_TO_INT Arrondi de la valeur REAL IEEE INT. O
Si la valeur est infrieure -32_768 ou suprieure
32_767, la variable OK prend la valeur FALSE.

SCL pour SIMATIC S7-300/400, Programmation de blocs


18-4 C79000-G7077-C522-01
Fonctions standard de SCL

Tableau 18-3 Fonctions de conversion des types de donnes de classe B (suite)

Nom de la fonction Rgle de conversion OK


STRING_TO_CHAR Copie du premier caractre de la chane. O
Si la longueur de la chane est diffrente de 1, la
variable OK prend la valeur FALSE.
TIME_TO_DINT Reprise de la chane binaire N
TOD_TO_DINT Reprise de la chane binaire N
WORD_TO_BOOL Copie du bit de poids faible O
WORD_TO_BYTE Copie des 8 bits de poids faible O
WORD_TO_INT Reprise de la chane binaire N
WORD_TO_BLOCK_ Le modle binaire de WORD est interprt comme N
DB numro de bloc de donnes.
BLOCK_DB_TO_WO Le numro de bloc de donnes est interprt comme N
RD modle bianire de WORD.

Nota
Vous avez en outre la possibilit dutiliser des fonctions CEI pour effectuer la conver-
sion des types de donnes. Copiez cet effet la fonction souhaite de la bibliothque
de STEP 7 STDLIBS\IEC dans le rperoire de votre programme. Vous trouverez des
informations dtailles sur chacune de ces fonctions CEI dans la publication /235/.

Exemples pour la Dans lexemple 18-2, une conversion explicite savre indispensable, car le type de
conversion donnes cible est moins puissant que le type de donnes source.
explicite

FuNCTION_BLOCK FB10
VAR
COMMUTATEUR : INT;
REGULATEUR : DINT;
END_VAR

BEGIN
COMMUTATEUR := DINT_TO_INT (REGULATEUR);
(* INT est moins puissant que DINT *)
// ...
END_FUNCTION_BLOCK

Exemple 18-2 Type de donnes cible incompatible avec type de donnes source

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 18-5
Fonctions standard de SCL

Dans lexemple 18-3, une conversion explicite des donnes est ncessaire, car le
type de donnes REAL nest pas autoris dans une expression arithmtique compor-
tant loprateur MOD.

FUNCTION_BLOCK FB20
VAR
val_ent:INT:=17;
CONV2 := INT;
END_VAR

BEGIN
CONV2 := val_ent MOD REAL_TO_INT (2.3);
(* MOD ne peut tre applique qu des donnes de
type INT ou DINT. *)
// ...
END_FUNCTION_BLOCK

Exemple 18-3 Conversion en raison dun type de donnes non autoris

Dans lexemple 18-4, la conversion est indispensable car le type de donnes nest
pas autoris pour un oprateur logique. NOT ne peut tre applique qu des don-
nes de type BOOL, BYTE, WORD ou DWORD.

FUNCTION_BLOCK FB30
VAR
val_ent:INT:=17;
CONV1 :=WORD;
END_VAR

BEGIN
CONV1 := NOT INT_TO_WORD(val_int);
(* NOT ne peut tre applique qu des donnes
de type INT. *)
// ...
END_FUNCTION_BLOCK

Exemple 18-4 Conversion en raison dun type de donnes incorrect

SCL pour SIMATIC S7-300/400, Programmation de blocs


18-6 C79000-G7077-C522-01
Fonctions standard de SCL

Lexemple 18-5 montre la conversion des valeurs dentre et de sortie de la priph-


rie :

FUNCTION_BLOCK FB40
VAR
rayon_oui: WORD;
rayon : INT;
END_VAR

BEGIN
rayon_oui := EB0;
rayon := WORD_TO_INT(rayon_oui);
(* Conversion lors du passage une autre classe de types.
La valeur vient de lentre et doit tre converti pour
pouvoir tre exploite.*)

rayon := Rayon(surface:= donnes_cercle.surface);


AB0 := WORD_TO_BYTE(INT_TO_WORD(rayon));
(* Le rayon est recalcul partir de la surface. Il est
donn sous forme dentier. Avant la sortie, la valeur
est convertie dans une autre classe de types (INT_TO_WORD)
puis dans un type moins puissant (WORD_TO_BYTE) *)
// ...
END_FUNCTION_BLOCK

Exemple 18-5 Conversion dentres et de sorties

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 18-7
Fonctions standard de SCL

Fonctions Les fonctions darrondi et de troncature de nombres font galement partie de la


darrondi et de conversion des types de donnes. Le tableau 18-4 indique le nom, le type de don-
troncature nes (du paramtre dentre et de la valeur de la fonction) et la tche de ces fonc-
tions.

Tableau 18-4 Fonctions darrondi et de troncature

Nom de la Type de donnes Type de donnes Tche


fonction du paramtre de la valeur de
dentre la fonction

ROUND REAL DINT Arrondir (former un nombre DINT)

TRUNC REAL DINT Tronquer (former un nombre DINT)

Les exemples suivants illustrent les diffrents effets de ces fonctions :


S ROUND (3.14) // fonction darrondi
// rsultat : 3
S ROUND (3.56) // fonction darrondi
// rsultat : 4
S TRUNC (3.14) // fonction de troncature
// rsultat : 3
S TRUNC (3.56) // fonction de troncature
// rsultat : 3

SCL pour SIMATIC S7-300/400, Programmation de blocs


18-8 C79000-G7077-C522-01
Fonctions standard de SCL

18.3 Fonctions standard numriques

Fonctionnalit Toute fonction numrique standard possde un paramtre dentre. Son rsultat cor-
respond toujours la valeur de la fonction. Chacun des tableaux 18-5, 18-6 ou 18-7
spcifie un groupe de fonctions numriques standard, en indiquant leur nom et type
de donnes. Le type de donnes ANY_NUM correspond INT, DINT ou REAL.

Liste des fonctions Les fonctions gnrales permettent de calculer la valeur abslolue, le carr ou la
gnrales racine carre dune grandeur.

Tableau 18-5 Fonctions gnrales

Nom de la fonction Type de donnes du Type de donnes de Description


paramtre dentre la valeur de la fonc-
tion
ABS ANY_NUM1 ANY_NUM Valeur absolue
SQR ANY_NUM1 REAL Carr
SQRT ANY_NUM1 REAL Racine carre

1 Sachez que les paramtres dentre de type ANYNUM sont convertis de manire interne en variables de
type Real.

Liste des fonctions Les fonctions logarithmiques permettent de calculer la valeur dune puissance ou le
logarithmiques logarithme dune grandeur.

Tableau 18-6 Fonctions logarithmiques

Nom de la fonction Type de donnes du Type de donnes de Description


paramtre dentre la valeur de la fonc-
tion
EXP ANY_NUM1 REAL e puissance IN
EXPD ANY_NUM1 REAL 10 puissance IN
LN ANY_NUM1 REAL Logarithme
nprien
LOG ANY_NUM1 REAL Logarithme
dcimal

1 Sachez que les paramtres dentre de type ANYNUM sont convertis de manire interne en variables de
type Real.

Nota
Vous avez en outre la possibilit dutiliser des fonctions CEI comme fonctions numri-
ques standard. Copiez cet effet la fonction souhaite de la bibliothque de STEP 7
STDLIBS\IEC dans le rperoire de votre programme. Vous trouverez des informa-
tions dtailles sur chacune de ces fonctions CEI dans la publication /235/.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 18-9
Fonctions standard de SCL

Liste des fonctions Les fonctions trigonomtriques indiques dans le tableau 18-7 calculent des angles
trigonomtriques en radians.

Tableau 18-7 Fonctions trigonomtriques

Nom de la fonction Type de donnes du Type de donnes de Description


paramtre dentre la valeur de la fonc-
tion
ACOS ANY_NUM1 REAL Arccosinus
ASIN ANY_NUM1 REAL Arcsinus
ATAN ANY_NUM1 REAL Arctangente
COS ANY_NUM1 REAL Cosinus
SIN ANY_NUM1 REAL Sinus
TAN ANY_NUM1 REAL Tangente

1 Sachez que les paramtres dentre de type ANYNUM sont convertis de manire interne en variables de
type Real.

Exemples Le tableau 18-8 reprsente des appels de fonctions numriques standard et indique
le rsultat correspondant :

Tableau 18-8 Appels de fonctions numriques standard

Appel Rsultat
RESULTAT := ABS (-5); 5
RESULTAT := SQRT (81.0); 9
RESULTAT := SQR (23); 529
RESULTAT := EXP (4.1); 60.340 ...
RESULTAT := EXPD (3); 1_000
RESULTAT := LN (2.718_281); 1
RESULTAT := LOG (245); 2.389_166 ...
PI := 3. 141 592; 0.5
RESULTAT := SIN (PI / 6);
RESULTAT := ACOS (0.5); 1.047_197
(=PI / 3)

SCL pour SIMATIC S7-300/400, Programmation de blocs


18-10 C79000-G7077-C522-01
Fonctions standard de SCL

18.4 Fonctions standard sur les chanes binaires

Fonctionnalit Toute fonction standard sur les chanes binaires possde deux paramtres dentre
dsigns par IN ou N. Leur rsultat correspond toujours la valeur de la fonction.
Le tableau 18-9 indique leur nom ainsi que les types de donnes des deux param-
tres dentre et de la valeur de la fonction. La signification des paramtres dentre
est la suivante :
S paramtre dentre IN : mmoire dans laquelle sont ralises les oprations de
dcalage de bits,
S paramtre dentre N : nombre de rotations pour les fonctions de rotation ROL et
ROR ou nombre de chiffres dcaler pour les fonctions SHL et SHR.

Liste des fonctions Le tableau 18-9 indique les fonctions standard sur chanes binaires.

Tableau 18-9 Fonctions standard sur chanes binaires

Nom de la Type de don- Type de don- Type de don- Tche


fonction nes du para- nes du para- nes de la
mtre dentre mtre dentre valeur de la
IN N fonction

ROL BOOL INT BOOL Une rotation vers la gau-


che du nombre de chif-
BYTE INT BYTE q par
fres indiqu p le para-
p
WORD INT WORD mtre N va tre effectue
sur la valeur donnes par
DWORD INT DWORD le paramtre IN.
ROR BOOl INT BOOL Une rotation vers la
droite du nombre de
BYTE INT BYTE chiffres indiqu par le
paramtre N va tre
WORD INT WORD effectue sur la valeur
donnes par le paramtre
DWORD INT DWORD IN.
SHL BOOL INT BOOL Dans la valeur reprsen-
te par le paramtre IN,
BYTE INT BYTE le nombre de chiffres
indiqu par le paramtre
WORD INT WORD N vont tre dcals vers
la gauche et complts
DWORD INT DWORD par des 0 droite.
SHR BOOL INT BOOL Dans la valeur reprsen-
te par le paramtre IN,
BYTE INT BYTE le nombre de chiffres
indiqu par le paramtre
WORD INT WORD N vont tre dcals vers
la droite et complts par
DWORD INT DWORD des 0 gauche.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 18-11
Fonctions standard de SCL

Nota
Vous avez en outre la possibilit dutiliser des fonctions CEI pour effectuer des opra-
tions sur les chanes binaires. Copiez cet effet la fonction souhaite de la bibliothque
de STEP 7 STDLIBS\IEC dans le rperoire de votre programme. Vous trouverez des
informations dtailles sur chacune de ces fonctions CEI dans la publication /235/.

Exemples Le tableau 18-10 reprsente des appels de fonctions standard sur les chanes binaires
et indique le rsultat correspondant :

Tableau 18-10 Appels de fonctions standard sur les chanes binaires

Appel Rsultat
RESULTAT := ROL 2#0111_1010
(IN:=2#1101_0011, N:=5); (= 122 dcimal)
// IN := 211 dcimal
RESULTAT := ROR 2#1111_0100
(IN:=2#1101_0011, N:=2); (= 244 dcimal)
// IN := 211 dcimal
RESULTAT := SHL 2#1001_1000
(IN:=2#1101_0011, N:=3); (= 152 dcimal)
// IN := 211 dcimal
RESULTAT := SHR 2#0011_0100
(IN:=2#1101_0011, N:=2); (= 52 dcimal)
// IN := 211 dcimal

SCL pour SIMATIC S7-300/400, Programmation de blocs


18-12 C79000-G7077-C522-01
Interface dappel 19
Prsentation Le systme dexploitation des CPU S7 contient des fonctions systme et des fonc-
tions standard que vous pouvez utiliser pour la programmation dans SCL. Il sagit
des :
S blocs dorganisation (OB)
S fonctions systme (SFC)
S blocs fonctionnels systme (SFB)

Structure du Paragraphe Thme Page


manuel 19.1 Interface dappel 19-2
19.2 Interface dchange avec les OB 19-4

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 19-1
Interface dappel

19.1 Interface dappel

Prsentation Un bloc peut tre appel de manire symbolique ou absolue. Vous devez cet effet
indiquer soit le mnmonique du bloc, que vous avez dclar dans la table des mn-
moniques, soit son numro de dsignation absolue.
A lappel du bloc, vous devez affecter les paramtres effectifs, dont les valeurs
vont tre utilises par le bloc durant lexcution du programme, aux paramtres
formels, dont vous avez dfini le nom et le type de donnes lorsque vous avez cr
le bloc paramtrable.
Toutes les informations relatives ce sujet sont fournies dans le manuel /235/ . Ce-
lui-ci prsente non seulement les principales fonctions disponibles dans S7, mais
dcrit galement, dans une partie de rfrence, les interfaces qui permettent de les
utiliser dans votre programme utilisateur.

Exemple SFC 31 Les instructions suivantes permettent dappeler la fonction systme SFC 31 (interro-
gation de lalarme horaire) :

FUNCTION_BLOCK FY20

VAR
Resultat: INT;
END_VAR
BEGIN
// ...
Resultat:= SFC31 (NO_OB:= 10,ETAT:= MW100 );
// ...
// ...
END_FUNCTION_BLOCK

Exemple 19-1 Interrogation de lalarme horaire

Rsultats
La valeur de la fonction est du type entier. Si elle est > = 0, le bloc a t excut
sans erreur, si elle est < 0, une erreur sest produite. Aprs avoir appel le bloc,
vous avez la possibilit dexploiter le paramtre de sortie ENO dfini automatique-
ment.

Appel conditionnel Si vous voulez raliser un appel conditionnel, vous devez affecter la valeur 0 au
paramtre dentre EN (par exemple lentre E0.3), afin que le bloc ne soit pas
appel. Si vous affectez la valeur 1 au paramtre EN, la fonction est appele. Si
aucune erreur ne se produit durant lexcution du bloc, le paramtre de sortie ENO
prend alors galement la valeur 1 (sinon il est mis 0 ).

SCL pour SIMATIC S7-300/400, Programmation de blocs


19-2 C79000-G7077-C522-01
Interface dappel

Nota
Dans un bloc fonctionnel ou bloc fonctionnel systme, linformation qui, sil sagis-
sait dune fonction, serait transmise par la valeur en retour, doit ici tre enregistre
dans un paramtre de sortie. Celui-ci est ensuite exploit grce au bloc de donnes
dinstance. De plus amples informations ce sujet sont donnes au chapitre 16.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 19-3
Interface dappel

19.2 Interface dchange avec les OB

Blocs Les blocs dorganisation constituent linterface entre le systme dexploitation de la


dorganisation CPU et le programme utilisateur. Ils permettent damener certaines parties de pro-
grammes tre excutes :
S la mise en route de la CPU
S de manire cyclique ou une cadence donne
S des instants ou jours donns
S aprs coulement dune dure donne
S lapparition derreurs
S lors du dclenchement dalarmes de processus ou de communication
Lordre de traitement des blocs dorganisation dpend de leur priorit.

OB disponibles Les CPU ne sont pas toutes en mesure de traiter lensemble des OB disponibles dans
S7. Vrifiez dans les caractristiques techniques de votre CPU, quels sont les OB
votre diposition.

Informations Laide en ligne ainsi que les manuels suivants constituent une aide supplmentaire :
supplmentaires
S /70/ Manuel: Automate programmable S7-300, Installation et configuration -
Caractristiques des CPU
Ce manuel contient les fiches techniques dcrivant les caractristiques des
diverses CPU S7-300, ainsi que les vnements de dclenchement des OB.
S /100/ Manuel de mise en uvre: Systmes dautomatisation S7-400, M7-400,
Installation et configuration
Ce manuel contient les fiches techniques dcrivant les caractristiques des
diverses CPU S7-400, ainsi que les vnements de dclenchement des OB.

SCL pour SIMATIC S7-300/400, Programmation de blocs


19-4 C79000-G7077-C522-01
Annexes A
Description formelle du langage

Rgles lexicales B

Rgles syntaxiques C

Bibliographie D
SCL pour SIMATIC S7-300/400, Programmation de blocs
S-6 C79000-G7077-C522-01
Description formelle du langage A
Description du Les diagrammes syntaxiques servent de base la description du langage faite dans
langage SCL les diffrents chapitres. Ils permettent dillustrer la structure syntaxique (cest--dire
grammaticale) dans SCL. Ces diagrammes sont regroups au complet, avec les l-
ments de langage correspondants, dans les annexes B et C.

Structure de Paragraphe Thme Page


cette annexe A.1 Prsentation A-2
A.2 Prsentation des pavs terminaux A-5
A.3 Pavs terminaux dans les rgles lexicales A-6
A.4 Caractres de mise en forme, sparateurs et oprateurs A-7
A.5 Mots-cls et identificateurs prdfinis A-9
A.6 Identificateurs doprandes et mots-cls de blocs A-12
A.7 Prsentation des pavs non terminaux A-14
A.8 Prsentation des symboles A-14
A.9 Identificateurs A-15
A.10 Attribution de noms dans SCL A-16
A.11 Constantes et drapeaux prdfinis A-18

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 A-1
Description formelle du langage

A.1 Prsentation

Diagramme Le diagramme syntaxique est une reprsentation graphique de la structure du lan-


syntaxique gage. Cette structure est constitue dune suite de rgles, pouvant elles-mmes se
fonder sur des rgles dj nonces.

Nom de la rgle
Squence
Pav 3

Pav 1 Pav 2 Pav 4

Option Pav 5
Itration
Alternative
Figure A-1 Exemple de diagramme syntaxique

Le diagramme syntaxique se lit de gauche droite. En voici la structure :


S squence : suite de pavs
S option : branchement facultatif
S itration : rptition dun branchement
S alternative : branchement

Types de pavs Un pav peut tre un lment de base ou alors tre lui-mme compos dautres l-
ments de base. La figure suivante illustre les types de symboles reprsentant les
pavs :

Pav terminal Pav non terminal


<Nom de la rgle>

Elment de base qui ne ncessite pas Le nom de la rgle est facultatif !


de description supplmentaire ! Elment complexe qui est dcrit par
Il sagit de caractres imprimables et dautres diagrammes syntaxiques.
de caractres spciaux, de mots-cls
et didentificateurs prdfinis. Les
indications relatives ces pavs doi-
vent tre reprises telles quelles. Symbole
<Nom de la rgle>

Le nom de la rgle doit figurer


en majuscules !
Elment complexe, utilis comme
lment de base dans les rgles
syntaxiques et expliqu dans les
rgles lexicales.

Figure A-2 Types de symboles reprsentant les pavs

SCL pour SIMATIC S7-300/400, Programmation de blocs


A-2 C79000-G7077-C522-01
Description formelle du langage

Rgles Les rgles que vous appliquez pour structurer votre programme SCL peuvent tre
rparties dans deux groupes, les rgles lexicales et les rgles syntaxiques.

Rgles lexicales Elles dcrivent la structure des lments (symboles) soumis lanalyse lexicale par
le compilateur. Le format utilis dans leur notation nest pas libre, ce qui signifie
que vous devez respecter scrupuleusement les rgles nonces, en particulier :
S linsertion de caractres de mise en forme nest pas autorise,
S linsertion de blocs ou de lignes de commentaires nest pas possible,
S linsertion dattributs didentificateurs est impossible.

IDENTIFICATEUR

Lettre

_ Lettre _ Lettre

Caractre de Caractre de
soulignement soulignement
Chiffre Chiffre

Figure A-3 Exemple de rgle lexicale

Il sagit de la rgle lexicale de lIDENTIFICATEUR, qui dcrit sa structure (nom),


comme par exemple :
TABLEAU_MES_12
VALEUR_CONSIGNE_B_1

Rgles Les rgles syntaxiques dcrivent la structure de SCL, en se fondant sur les rgles
syntaxiques lexicales. Vous pouvez crer votre programme SCL dans un format libre, dans le
respect des rgles nonces :

Programme SCL

Rgles Format libre


syntaxiques
Format non libre !
Rgles lexicales

Figure A-4 Hirarchie des rgles et format libre

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 A-3
Description formelle du langage

Conventions Chaque rgle est prcde de son nom. Si elle est utilise dans une rgle de niveau
hirarchique suprieur, son nom y figure sous forme de pav nom terminal.
Si le nom de la rgle est inscrit en majuscules, il sagit dun symbole qui est dcrit
dans les rgles lexicales.

Smantique Les rgles nonces permettent uniquement de reprsenter la structure formelle de


la langue, sans toujours expliciter leur signification. Des informations supplmentai-
res accompagnent donc les rgles pour les points importants. En voici des exem-
ples :
S dans le cas dlments de signification diffrente : par exemple dans la rgle
dindication de la date, pour SUITE DE CHIFFRES DECIMAUX, anne, mois
ou jour. Le nom dsigne explicitement lutilisation.
S dimportantes restrictions sont signales ct des rgles : il est par exemple
prcis quun mnmonique doit tre dfini dans la table des mnmoniques.

SCL pour SIMATIC S7-300/400, Programmation de blocs


A-4 C79000-G7077-C522-01
Description formelle du langage

A.2 Prsentation des pavs terminaux

Dfinition Un pav terminal est un lment de base dont la description ne ncessite pas lusage
dune rgle supplmentaire. Il est reprsent par les schmas suivants dans les dia-
grammes syntaxiques :

Le pav terminal est reprsent par un rectan-


gle aux bouts arrondis ou par un cercle. Il con-
tient soit un nom (en majuscules), soit directe-
ment une information.
Celui-ci dfinit le nombre de caractres ASCII
utilisables.

Figure A-5 Schmas reprsentant les pavs terminaux

Prsentation Les paragraphes A.3 et A.4 traitent de lutilisation de caractres individuels,


savoir :
S les lettres, chiffres, caractres imprimables et caractres spciaux,
S caractres de mise en forme et sparateurs dans les rgles lexicales,
S prfixes de constantes littrales,
S caractres de mise en forme et sparateurs dans les rgles syntaxiques,
S oprateurs.
Les paragraphes A.5 et A.6 traitent des mots-cls des identificateurs prdfinis
partir de chanes de caractres. Les tableaux sont classs daprs lordre alphabti-
que des abrviations SIMATIC (allemandes). Les abrviations CEI (internationales)
correspondantes sont indiques en cas de diffrence pour les :
S mots-cls et identificateurs prdfinis
S identificateurs doprandes et mots-cls de blocs

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 A-5
Description formelle du langage

A.3 Pavs terminaux dans les rgles lexicales

Prsentation Les tableaux suivants dcrivent les pavs terminaux en indiquant lensemble des
lments du jeu de caractres ASCII correspondant :

Lettres et chiffres Il sagit des caractres les plus utiliss. LIDENTIFICATEUR (voir figure A-3) est
par exemple compos de lettres, de chiffres et du caractre de soulignement.

Tableau A-1 Lettres et chiffres

Caractre Sous-groupe Elments du jeu de


caractres
Lettre Majuscule A.. Z
Minuscule a.. z
Chiffre Chiffre dcimal 0.. 9
Chiffre octal Chiffre octal 0.. 7
Chiffre hexadcimal Chiffre hexadcimal 0.. 9, A.. F, a.. f
Bit Chiffre binaire 0, 1

Caractres Les chanes de caractres, commentaires et mnmoniques utilisent le jeu de caract-


imprimables et res ASCII tendu complet.
caractres
spciaux
Tableau A-2 Caractres imprimables et caractres spciaux

Caractre Sous-groupe Elments du jeu de


caractres
Caractre imprimable dpend du code de caractres uti- tous les caractres imprima-
lis. Pour le code ASCII, partir bles
du caractre quivalant au caractre
dcimal 31, sans DEL, ni les carac-
tres de substitution suivants :
Caractre de substitution Dollar $
Apostrophe
Caractre de commande $P ou $p Saut de page
(formfeed, page)
$L ou $l Changement de ligne
(linefeed)
$R oder $r Retour chariot
(carriage return)
$T oder $t Tabulation
Reprsentation de substi- $hh Caractres quelconques saisis
tution en code hexadci- en code hexadcimal (hh)
mal

SCL pour SIMATIC S7-300/400, Programmation de blocs


A-6 C79000-G7077-C522-01
Description formelle du langage

A.4 Caractres de mise en forme, sparateurs et oprateurs

Dans les rgles Le tableau A-3 montre lutilisation de caractres individuels du jeu de caractres
lexicales ASCII comme caractres de mise en forme et comme sparateurs dans les rgles
lexicales (voir annexe B).

Tableau A-3 Caractres de mise en forme et sparateurs dans les rgles lexicales

Caractre Description
: Sparateur entre heures, minutes et secondes. Attributs
. Sparateur dans ladressage absolu, reprsentation de nombres rels et
dintervalles de temps
Caractre et chane de caractres
Caractre dintroduction de mnmoniques, daprs les rgles de lditeur de
mnmoniques
_ caractre de Sparateur de valeurs numriques dans les constantes littrales, peut tre
soulignement utilis dans les IDENTIFICATEURS
$ Caractre dalignement pour introduire un caractre de commande ou un
caractre de substitution
$> $< Interruption de la chane si sa longueur dpasse une ligne ou pour introduire
des commentaires

Dans les Le tableau suivant montre lutilisation de caractres individuels et de chanes de


constantes caractres comme constantes littrales dans les rgles lexicales (voir annexe B). Il
littrales sapplique la fois aux abrviations SIMATIC et CEI.

Tableau A-4 Abrviations pour les constantes, classes par ordre alphabtique

Prfixe Caractrise Rgle lexicale


2# CONSTANTE LITTERALE ENTIERE Suite de chiffres binaires
8# CONSTANTE LITTERALE ENTIERE Suite de chiffres octaux
16# CONSTANTE LITTERALE ENTIERE Suite de chiffres hexadcimaux
D# Indication de temporisation DATE
DATE# Indication de temporisation DATE
DATE_AND_TIME# Indication de temporisation DATE ET HEURE
DT# Indication de temporisation DATE ET HEURE
E Sparateur pour CONST LITTER REELLE Exposant
e Sparateur pour CONST LITTER REELLE Exposant
D Sparateur pour intervalle de temps (Day) Jours (rgle : reprsentation par niveaux)
H Sparateur pour intervalle de temps (Hour) Heures (rgle : reprsentation par niveaux)
M Sparateur pour intervalle de temps (Minutes) Minutes (rgle : reprsentation par niveaux)
MS Sparateur pour intervalle temps (Milliseconds) Millisec. (rgle : reprsentation par niveaux)
S Sparateur pour intervalle de temps (Seconds) Secondes (rgle : reprsentation par niveaux)
T# Indication de temporisation DUREE
TIME# Indication de temporisation DUREE
TIME_OF_DAY# Indication de temporisation HEURE DU JOUR
TOD# Indication de temporisation HEURE DU JOUR

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 A-7
Description formelle du langage

Dans les rgles Le tableau suivant montre lutilisation de caractres individuels comme caractres
syntaxiques de mise en forme et comme sparateurs dans les rgles syntaxiques, de mme que
dans les commentaires et les attributs (voir annexes B.2 et B.3).

Tableau A-5 Caractres de mise en forme et sparateurs dans les rgles syntaxiques

Caractre Description Rgle syntaxique, commentaire ou attribut


: Sparateur pour indication du type dans une Dclaration de variable, dclaration dinstance, fonction,
instruction aprs un repre de saut section des instructions, instruction CASE
; Fin de dclaration ou dinstruction Dclaration de constante, dclaration de variable, section
des instructions, section daffectation du DB, section des
constantes, section des repres de saut, dclaration de com-
posantes
, Sparateur dans les listes et les sections de Dclaration de variable, spcification du type de donnes
repres de saut ARRAY, liste dinitialisation de tableau, paramtres du FB,
de la FC, liste de valeurs, dclaration des instances
.. Indication de plage Spcification du type de donnes ARRAY, liste de valeurs
. Sparateur pour nom de FB et de DB, adres- Appel du FB, variable structure
sage absolu
() Appel de fonction et de bloc fonctionnel ; Appel de la fonction, appel du FB, expression, liste dini-
mise entre parenthses dans une expression ; tialisation de tableau, multiplication simple, expression de
liste dinitialisation de tableaux puissance
[] Dclaration de tableau, Spcification de type de donnes ARRAY, spcification du
variable structure, tableau partiel, indexa- type de donnes STRING
tion pour variables globales et chanes de
caractres
(* *) Bloc de commentaire voir annexe B
// Ligne de commentaire voir annexe B
{} Bloc dattributs Indication dattributs
% Introduction pour lindicateur direct Pour programmer conformment la norme CEI, vous
pouvez utilisez %M4.0 la place de M4.0.

Oprateurs Le tableau A-6 reprsente tous les oprateurs de SCL, les mots-cls comme par
exemple AND, ainsi que les autres oprateurs utiliss comme caractre individuels.
Il sapplique la fois aux abrviations SIMATIC et CEI

Tableau A-6 Oprateurs de SCL

Oprateur Description Rgle syntaxique


:= Oprateur daffectation, affectation de Affectation de valeur, section daffectation de DB, section
dpart, initialisation de types de don- des constantes, affectation de la sortie, affectation de len-
nes tre, affectation de lentre/sortie
+, - Oprateurs arithmtiques : oprateurs Expression, expression simple, expression de puissance
unaires, signes
+, -, *, / Oprateurs arithmtiques de base Oprateur arithmtique de base, expression, multiplication
MOD; DIV simple
** Oprateurs arithmtiques de base : Expression
oprateur de puissance
NOT Oprateurs logiques : ngation Expression
AND, &, OR; XOR, Oprateurs logiques de base Oprateur logique de base
<,>,<=,>=,=,<> Oprateurs de comparaison Oprateur de comparaison

SCL pour SIMATIC S7-300/400, Programmation de blocs


A-8 C79000-G7077-C522-01
Description formelle du langage

A.5 Mots-cls et identificateurs prdfinis

Mots-cls et Le tableau A-7 contient la liste alphabtique des mots-cls et des identificateurs
identificateurs prdfinis dans SCL. Il en donne galement une description et cite la rgle syntaxi-
prdfinis que correspondante, nonce en annexe C, dans laquelle ils figurent sous forme de
pavs terminaux. Les mots-cls restent les mmes quelles que soient les abrviations
choisies.

Tableau A-7 Liste alphabtique des mots-cls et des identificateurs prdfinis dans SCL

Mot-cl Description Rgle syntaxique


AND Oprateur logique Oprateur logique de base
ANY Dsignation du type de donnes ANY Spcification du type de donnes
dun paramtre
ARRAY Dbut de la spcification dun tableau, suivi de la liste Spcification du type de donnes
des indices indique entre [ et ] ARRAY
BEGIN Dbut de la section des instructions dun bloc de code Bloc dorganisation, fonction, bloc
ou de la section dinitialisation dun bloc de donnes fonctionnel, bloc de donnes
BLOCK_DB Dsignation du type de donnes BLOCK_DB Spcification du type de donnes
dun paramtre
BLOCK_FB Dsignation du type de donnes BLOCK_FB Spcification du type de donnes
dun paramtre
BLOCK_FC Dsignation du type de donnes BLOCK_FC Spcification du type de donnes
dun paramtre
BLOCK_SDB Dsignation du type de donnes BLOCK_SDB Spcification du type de donnes
dun paramtre
BOOL Type de donnes simple pour donnes binaires Type de donnes binaire
BY Dbut de lincrment Instruction FOR
BYTE Type de donnes simple Type de donnes binaire
CASE Dbut de linstruction de contrle de selection Instruction CASE
CHAR Type de donnes simple Type caractre
CONST Dbut de la dfinition dune constante Section des constantes
CONTINUE Instruction de contrle pour les boucles FOR, WHILE Instruction CONTINUE
et REPEAT
COUNTER Type de donnes du compteur, uniquement utilisable Spcification du type de donnes
dans la section des paramtres dun paramtre
DATA_BLOCK Dbut dun bloc de donnes Bloc de donnes
DATE Type de donnes simple pour la date Type de temporisation
DATE_AND_TIME Type de donnes complexe pour la date et lheure Voir tableau C-4
DINT Type de donnes simple pour un entier avec Type de donnes numrique
double prcision
DIV Oprateur de division Oprateur arithmtique de base,
multiplication simple
DO Dbut de la section des instructions pour linstruction Instruction FOR,
FOR Instruction WHILE
DT Type de donnes simple pour la date et lheure Voir tableau C-4
DWORD Type de donnes simple double mot Type de donnes binaire
ELSE Dbut du cas o aucune condition nest remplie Instruction IF
ELSIF Dbut de lalternative Instruction IF
EN Drapeau pour la validation du bloc

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 A-9
Description formelle du langage

Tableau A-7 Liste alphabtique des mots-cls et des identificateurs prdfinis dans SCL (suite)

Mot-cl Description Rgle syntaxique


END_CASE Fin de linstruction CASE Instruction CASE
END_CONST Fin de la dfinition dune constante Section des constantes
END_DATA_BLOCK Fin dun bloc de donnes Bloc de donnes
END_FOR Fin de linstruction FOR Instruction FOR
END_FUNCTION Fin dune fonction Fonction
END_FUNC- Fin dun bloc fonctionnel Bloc fonctionnel
TION_BLOCK
END_IF Fin de linstruction IF Instruction IF
END_LABEL Fin dune section dclaration de repres de saut Section de dclaration
END_ORGANIZA- Fin dun bloc dorganisation Bloc dorganisation
TION_BLOCK
END_REPEAT Fin de linstruction REPEAT Instruction REPEAT
END_STRUCT Fin de la spcification dune structure Spcification du type de donnes
STRUCT
END_TYPE Fin dun UDT Type de donnes utilisateur
END_VAR Fin de la section de dclaration section des variables temporaires,
section des variables statiques,
section des paramtres
END_WHILE Fin de linstruction WHILE Instruction WHILE
ENO Drapeau derreur dun bloc
EXIT Abandon direct de la boucle EXIT
FALSE Constante boolenne prdfinie : condition logique
non remplie, valeur = 0
FOR Dbut de linstruction de contrle pour lexcution Instruction FOR
dune boucle
FUNCTION Dbut dune fonction Fonction
FUNCTION_BLOCK Dbut dun bloc fonctionnel Bloc fonctionnel
GOTO Instruction de branchement vers un repre de saut Branchement de programme
IF Dbut dinstruction de contrle pour la slection Instruction IF
INT Type de donnes simple pour un nombre entier avec Type de donnes numrique
simple prcision
LABEL Dbut de section de dclaration de repres de saut Section des repres de saut
MOD Oprateur arithmtique pour le reste dune division Oprateur arithmtique de base,
multiplication simple
NIL Pointeur zro
NOT Oprateur logique, fait partie des oprateurs unaires Expression, oprande
OF Dbut de la spcification du type de donnes Spcification du type de donnes
ARRAY, instruction CASE
OK Drapeau indiquant si les instructions dun bloc ont t
excutes sans erreur
OR Oprateur logique Oprateur logique de base
ORGANIZATION_ Dbut dun bloc dorganisation Bloc dorganisation
BLOCK
POINTER Type de donnes pointeur, uniquement autoris dans Voir chapitre 10
la dclaration des paramtres dans la section de dclara-
tion, nest pas trait dans SCL
REAL Type de donnes simple Type de donnes numrique

SCL pour SIMATIC S7-300/400, Programmation de blocs


A-10 C79000-G7077-C522-01
Description formelle du langage

Tableau A-7 Liste alphabtique des mots-cls et des identificateurs prdfinis dans SCL (suite)

Mot-cl Description Rgle syntaxique


REPEAT Dbut de linstruction de contrle pour lexcution Instruction REPEAT
dune boucle
RETURN Instruction de commande pour quitter un sous-pro- Instruction RETURN
gramme
S5TIME Type de donnes simple pour les indications de tempo- Type de temporisation
risations, format S5 spcial
STRING Type de donnes pour chane de caractre Spcification du type de donnes
STRING
STRUCT Dbut de spcification dune structure, suivie de la Spcification du type de donnes
liste des composantes STRUCT
THEN Dbut des tches excuter si la condition est remplie Instruction IF
TIME Type de donnes simple pour les indications de tempo- Type de temporisation
risations
TIMER Type de donnes pour temporisation, uniquement Spcification du type de donnes
utilisable dans la section des paramtres des paramtres
TIME_OF_DAY Type de donnes simple pour lheure du jour Type de temporisation
TO Dbut de la valeur finale Instruction FOR
TOD Type de donnes simple pour lheure du jour Type de temporisation
TRUE Constante boolenne prdfinie : condition logique
remplie, valeur diffrente de 0
TYPE Dbut dun UDT Type de donnes utilisateur
UNTIL Dbut de la condition dabandon pour linstruction Instruction REPEAT
REPEAT
VAR Dbut dune section de dclaration Section des variables statiques
VAR_TEMP Dbut dune section de dclaration Section des variables temporaires
VAR_INPUT Dbut dune section de dclaration Section des paramtres
VAR_IN_OUT Dbut dune section de dclaration Section des paramtres
VAR_OUTPUT Dbut dune section de dclaration Section des paramtres
VOID Aucune valeur en retour dans lappel dune fonction Voir chapitre 8
WHILE Dbut dinstruction de contrle pour lexcution dune Instruction WHILE
boucle
WORD Type de donnes simple mot Type de donnes binaire
XOR Oprateur logique Oprateur logique

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 A-11
Description formelle du langage

A.6 Identificateurs doprandes et mots-cls de blocs

Donnes systme Le tableau A-8 donne la liste des abrviations ainsi que la description des abrvia-
globales tions SIMATIC correspondant aux identificateurs doprandes SCL :
S indication de lidentificateur doprande :
prfixe de mmoire (A, E, M, PA, PE) ou bloc de donnes (D)
S indication de la taille de llment de donnes :
prfixe de taille (facultatif ou B, D, W, X)
Labrviation rsulte de la combinaison entre lidentificateur doprande (prfixe de
mmoire ou D pour bloc de donnes) et le prfixe de taille qui correspondent tous
deux des rgles lexicales. Les abrviations CEI figurent en regard des abrviations
SIMATIC.

Tableau A-8 Identificateurs doprandes des donnes systme globales

Abrviations Abrviations Prfixe de mmoire ou bloc de donnes Prfixe de taille


SIMATIC CEI

A Q Sortie (par la mmoire image) Bit


AB QB Sortie (par la mmoire image) Octet
AD QD Sortie (par la mmoire image) Double mot
AW QW Sortie (par la mmoire image) Mot
AX QX Sortie (par la mmoire image) Bit
D D Bloc de donnes Bit
DB DB Bloc de donnes Octet
DD DD Bloc de donnes Double mot
DW DW Bloc de donnes Mot
DX DX Bloc de donnes Bit
E I Entre (par la mmoire image) Bit
EB IB Entre (par la mmoire image) Octet
ED ID Entre (par la mmoire image) Double mot
EW IW Entre (par la mmoire image) Mot
EX IX Entre (par la mmoire image) Bit
M M Mmento Bit
MB MB Mmento Octet
MD MD Mmento Double mot
MW MW Mmento Mot
MX MX Mmento Bit
PAB PQB Sortie (par la priphrie directe) Octet
PAD PQD Sortie (par la priphrie directe) Double mot
PAW PQW Sortie (par la priphrie directe) Mot
PEB PIB Entre (par la priphrie directe) Octet
PED PID Entre (par la priphrie directe) Double mot
PEW PIW Entre (par la priphrie directe) Mot

SCL pour SIMATIC S7-300/400, Programmation de blocs


A-12 C79000-G7077-C522-01
Description formelle du langage

Mots-cls de blocs Ils sont utiliss pour ladressage absolu de blocs. Le tableau est class daprs les
abrviations SIMATIC et indique les abrviations CEI correspondantes.

Tableau A-9 Mots-cls de blocs ainsi que compteurs et temporisations

Abrviations Abrviations Prfixe de mmoire ou bloc de donnes


SIMATIC CEI

DB DB Bloc de donnes (Data-Block)


FB FB Bloc fonctionnel (Function-Block)
FC FC Fonction (Function)
OB OB Bloc dorganisation (Organization-Block)
SDB SDB Bloc de donnes systme (System-Data-Block)
SFC SFC Fonction systme (System-Function)
SFB SFB Bloc fonctionnel systme (System-Function-Block)
T T Temporisation (Timer)
UDT UDT Type de donnes global ou utilisateur (Userdefined Data-Type)
Z C Compteur (Counter)

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 A-13
Description formelle du langage

A.7 Prsentation des pavs non terminaux

Dfinition Un pav non terminal est un lment complexe qui est dcrit par une autre rgle. Il
est reprsent par un rectangle. Le nom qui y figure correspond la rgle suivante,
etc.

Pav non terminal


<Nom de la rgle>

Nom de la rgle : majuscules ou minuscules !

Figure A-6 Pav non terminal

Cet lment figure dans les rgles lexicales et dans les rgles syntaxiques.

A.8 Prsentation des symboles

Dfinition Un symbole est un lment complexe utilis comme lment de base dans les rgles
syntaxiques et dcrit dans les rgles lexicales. Il est reprsent par un rectangle. Le
NOM en lettre majuscules correspond au nom de la rgle lexicale suivante (sans
rectangle).

Symbole
<Nom de la rgle>

Nom de la rgle : toujours en majuscules !

Figure A-7 Symbole

Prsentation Les symboles dfinis reprsentent les identificateurs qui dcoulent des rgles lexica-
les. Ils dcrivent :
S les identificateurs
S lattribution de noms dans SCL
S les constantes et drapeaux prdfinis

SCL pour SIMATIC S7-300/400, Programmation de blocs


A-14 C79000-G7077-C522-01
Description formelle du langage

A.9 Identificateurs

Identificateurs Les identificateurs vous permettent dadresser les lments de langage de SCL. Le
dans SCL tableau A-10 dcrit les divers types didentificateurs :

Tableau A-10 Ensemble des types didentificateurs dans SCL

Type didentificateur Remarques, exemples


Mots-cls p. ex. instructions de contrle BEGIN, DO, WHILE
Noms prdfinis Noms de
S types de donnes standard (p. ex. BOOL, BYTE, INT)
S fonctions standard prdfinies
S constantes standard TRUE et FALSE
Identificateurs pour les donnes systme et les blocs de donnes globaux :
doprandes dans les p. ex. E1.2, MW10, FC20, T5, DB30, DB10.D4.5
identificateurs standard
Noms quelconques de Noms de
votre choix daprs la S variables dclares
rgle S composantes de structures
IDENTIFICATEUR
S paramtres
S constantes dclares
S repres de saut
Mnmoniques dans suivent la rgle lexicale IDENTIFICATEUR ou la rgle lexicale des
lditeur de mnmoni- mnmoniques, cest--dire figurent entre guillemets, comme par
ques exemple xyz

Majuscules et Lutilisation de majuscules ou de minuscules est insignifiante pour les mots-cls.


minuscules Depuis la version 4.0 de SCL, la distinction entre majuscules et minuscules nest pas
non plus faite pour les noms prdfinis et les noms de votre choix, les variables par
exemple, et pour les mnmoniques dclars dans la table des mnmoniques. Le
tableau A-11 vous en donne un rsum.

Tableau A-11 Distinction entre les majuscules et les minuscules pour les types didentificateurs

Type didentificateur Distinction majuscules/minuscules ?


Mots-cls non
Noms prdfinis pour les types de donnes standard non
Noms des fonctions standard prdfinies non
Noms des constantes standard prdfinies non
Identificateurs doprandes pour les identificateurs non
absolus
Noms quelconques non
Mnmoniques de la table non

Les noms des fonctions standard, comme par exemple BYTE_TO_WORD et ABS
peuvent donc galement tre crits en minuscules. Il en est de mme pour les para-
mtres des fonctions de temporisation ou de comptage, comme par exemple SV, se
ou ZV.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 A-15
Description formelle du langage

A.10 Attribution de noms dans SCL

Choix du nom Deux possibilits soffrent vous pour lattribution de noms :


S Vous pouvez attribuer vous-mmes des noms dans SCL en suivant la rgle des
IDENTIFICATEURS, reprsente la figure A-8. Il sagit de la rgle gnrale
applicable aux noms dans SCL.
S Vous avez en outre la possibilit dimporter des noms laide de la table des
mnmoniques dans STEP 7. Les noms suivent alors la rgle des IDENTIFICA-
TEURS ou celle des mnmoniques. Le mnmonique doit figurer entre apostro-
phes et tous les caractres imprimables y compris les espaces sont autoriss.

IDENTIFICATEUR

Lettre

_ Lettre _ Lettre

Caractre de Caractre de
soulignement soulignement
Chiffre Chiffre

MNEMONIQUE
Caractre
imprimable

Figure A-8 Rgles lexicales : IDENTIFICATEUR et mnmonique

Rgles pour Rgles dont vous devez tenir compte :


lattribution du
S Lorsque vous attribuez un nom, choisissez le de sorte ce quil soit univoque et
nom
vocateur. Vous contribuerez ainsi une meilleure lisibilit du programme.
S Vrifiez si le nom a dj t attribu dans le systme, par exemple un identifi-
cateur pour un type de donnes ou des fonctions standard.
S Le domaine de validit des noms autoriss globalement stend sur lensemble
du programme. Pour un nom autoris localement, le domaine de validit se
limite un bloc. Vous pouvez donc utiliser les mme noms dans des blocs diff-
rents. Le tableau A-12 rsume les possibilits qui soffrent vous.

SCL pour SIMATIC S7-300/400, Programmation de blocs


A-16 C79000-G7077-C522-01
Description formelle du langage

Restrictions Lorsque vous attribuez un nom, vous devez tenir compte des restrictions suivantes :
Dans leur domaine de validit, les noms doivent tre univoques, ce qui signifie que
vous ne ntes pas autoriss attribuer une nouvelle fois un nom qui la dj t
dans le mme bloc. En outre, vous ne pouvez pas attribuer les noms suivants, dj
utiliss dans le systme :
S Noms de mots-cls : p. ex. CONST, END_CONST, BEGIN
S Noms doprateurs : p. ex. AND, XOR
S Noms didentificateurs prdfinis : p. ex. les noms pour les types de donnes
comme BOOL, STRING, INT
S Noms des constantes prdfinies TRUE et FALSE
S Noms des fonctions standard : p. ex. ABS, ACOS, ASIN, COS, LN
S Noms didentificateurs doprandes ou doprandes absolus pour des donnes
systme globales: p. ex. EB, EW, ED, AB, AW, AD MB, MD

Utilisation de la Le tableau A-12 prcise dans quels cas vous pouvez attribuer des noms en utilisant
rgle la rgle des IDENTIFICATEURS.
IDENTIFICATEURS
Tableau A-12 Utilisation de la rgle IDENTIFICATEURS

IDENTIFICATEUR Description Rgle


Nom de bloc Nom symbolique dun bloc DESIGNATION DE BLOC, appel
de fonction
Nom de temporisa- Nom symbolique dune tempori- DESIGNATION DE TEMPORI-
tion et de compteur sation et dun compteur SATION, DESIGNATION DE
COMPTEUR
Nom dattribut Nom dun attribut Affectation dattribut
Nom de constante Dclaration dune constante Section des constantes, constante
symbolique, utilisation
Repre de saut Dclaration dun repre de saut, Section de repres de saut, section
utilisation dun repre de saut des instructions, instruction GOTO
Nom de variable Dclaration dune variable tem- Dclaration de variable, variable
poraire ou statique simple, variable structure

Nom dinstance Dclaration dune instance Dclaration de linstance, nom


locale locale dappel de FB

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 A-17
Description formelle du langage

DESIGNATION DE Dans la rgle de DISIGNATION DE BLOC, vous pouvez utiliser alternativement un


BLOC IDENTIFICATEUR ou un mnmonique :

DESIGNATION DE BLOC

Motcl
Numro
de bloc

DB, FB, FC, OB, SDB, SFC, SFC, UDT

IDENTIFICATEUR

Mnmonique

Figure A-9 Rgle lexicale : DESIGNATION DE BLOC

Il en est de mme des rgles de DESIGNATION DE TEMPORISATION et de


DESIGNATION DE COMPTEUR, qui sont similaires la rgle de DESIGNATION
DE BLOC.

A.11 Constantes et drapeaux prdfinis

Constantes et Les deux tableaux sont les mmes pour les abrviations SIMATIC et CEI.
drapeaux
prdfinis
Tableau A-13 Constantes prdfinies

Abrviation Description
FALSE Constante boolenne (standard) prdfinie, de valeur 0. En logique
boolenne, elle signifie quune condition nest pas remplie.
TRUE Constante boolenne (standard) prdfinie, de valeur 1. En logique
boolenne, elle signifie quune condition est remplie.

Tableau A-14 Drapeaux

Abrviation Description
EN Drapeau de validation dun bloc
ENO Drapeau derreur dun bloc
OK Le drapeau affiche FALSE lorsquune instruction na pas t traite correc-
tement.

SCL pour SIMATIC S7-300/400, Programmation de blocs


A-18 C79000-G7077-C522-01
Rgles lexicales B
Structure de Paragraphe Thme Page
cette annexe B.1 Identificateurs B-2
B.1.1 Constantes littrales B-4
B.1.2 Adressage absolu B-9
B.2 Commentaires B-11
B.3 Attributs de blocs B-12

Rgles lexicales Les rgles lexicales dcrivent la structure des lments (symboles) sur lesquels porte
lanalyse lexicale ralise par le compilateur. Le format de la notation nest pas
libre, ce qui signifie que les rgles doivent tre appliques scrupuleusement et en
particulier que :
S linsertion de caractres de mise en forme nest pas autorise.
S linsertion de blocs et de lignes de commentaires nest pas possible.
S linsertion dattributs pour les identificateurs nest pas possible.

Rpartition Les rgles lexicales sont divises en trois groupes :


S Identificateurs
S Constantes littrales
S Adressage absolu

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 B-1
Rgles lexicales

B.1 Identificateurs

Tableau B-1 Identificateurs

Rgle Diagramme syntaxique

IDENTIFICATEUR
Lettre

_ Lettre _ Lettre

Caractre de Caractre de
soulignement soulignement
Chiffre Chiffre

DESIGNATION DE
BLOC Cette rgle sapplique galement au nom de rgles suivants :
DESIGNATION DU DB
DESIGNATION DU FB
DESIGNATION DE LA FC
DESIGNATION DE LOB DESIGNATION DE LUDT

Mot-cl Numro
du bloc
DB, FB, FC, OB, UDT

IDENTIFICATEUR

Mnmonique

DESIGNATION DE
TEMPORISATION T Numro

Abrviation SIMATIC
et CEI
IDENTIFICATEUR

Mnmonique

DESIGNATION DE
COMPTEUR Z Numro

Abrviation SIMATIC
Labrviation CEI est C
IDENTIFICATEUR

Mnmonique

SCL pour SIMATIC S7-300/400, Programmation de blocs


B-2 C79000-G7077-C522-01
Rgles lexicales

Tableau B-1 Identificateurs (suite)

Rgle Diagramme syntaxique

Mot-cl de bloc
OB Bloc dorganisation

FC Fonction

SFC Fonction systme

Bloc fonctionnel
FB

SFB Bloc fonctionnel systme

DB Bloc de donnes

UDT Type de donnes utilisateur


(User Data Type)

Mnmonique
Caractre
imprimable

Numro
Chiffre

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 B-3
Rgles lexicales

B.1.1 Constantes littrales

Tableau B-2 Constantes littrales

Rgle Diagramme syntaxique

CONSTANTE +
LITTERALE ENTIERE SUITE DE CHIFFRES
DECIMAUX

1
Suite de chiffres binaires

Suite de chiffres octaux


1
uniquement pour les Suite de chiffres hexadcimaux
types de donnes
INT et DINT

CONSTANTE SUITE DE CHIFFRES SUITE DE CHIFFRES


LITTERALE REELLE DECIMAUX . DECIMAUX
+

SUITE DE CHIFFRES SUITE DE CHIFFRES


DECIMAUX . DECIMAUX Exposant

SUITE DE CHIFFRES
Chiffre dcimal
DECIMAUX

_
Chiffre dcimal : 09
Caractre de soulignement

SUITE DE CHIFFRES
2# Chiffre binaire
BINAIRES

_
Chiffre binaire : 0 ou 1 Caractre de soulignement

SUITE DE CHIFFRES
8# Chiffre octal
OCTAUX

_
Chiffre octal : 08 Caractre de soulignement

SCL pour SIMATIC S7-300/400, Programmation de blocs


B-4 C79000-G7077-C522-01
Rgles lexicales

Tableau B-2 Constantes littrales (suite)

Rgle Diagramme syntaxique

SUITE DE CHIFFRES
16# Chiffre hexadcimal
HEXADECIMAUX

_
Chiffre hexadcimal : 09
A-F Caractre de soulignement

Exposant
E +
SUITE DE CHIFFRES
DECIMAUX
e

Constante littrale de
type caractre
Caractre

Constante littrale de
type chane de carac-
tres
Interruption
Caractre Caractre
de chane

Caractre
Caractre
imprimable
Caractre dalignement $
$

Caractre de substitution
$ ou

Caractre de commande

P, L, R ou T

Chiffre Chiffre
hexadcimal hexadcimal

Reprsentatiion de substitution en code hexadcimal

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 B-5
Rgles lexicales

Tableau B-2 Constantes littrales (suite)

Rgle Diagramme syntaxique

Interruption de chane
Caractre despacement (blank)
de changement de ligne (linefeed)
de retour chariot (carriage return)
de saut de page (formfeed, page) ou
de tabulation horizontale (tabulator)

Caractre de
mise en forme

$> $<

Commentaire

DATE
DATE#
Indication de la date

D#

DUREE
TIME# Reprsentation
dcimale

T# Reprsentation Reprsentation
par niveaux dcimale

chaque unit de temps (p. ex. heures, minutes) ne doit tre indique quune seule fois
lordre jours, heures, minutes, secondes, millisecondes doit tre respect

HEURE DE JOUR
TIME_OF_DAY#

Indication de lheure du jour

TOD#

DATE ET HEURE
DATE_AND_TIME#

Indication de la date Indication de lheure du jour

DT#

SCL pour SIMATIC S7-300/400, Programmation de blocs


B-6 C79000-G7077-C522-01
Rgles lexicales

Tableau B-2 Constantes littrales (suite)

Rgle Diagramme syntaxique

Indication de la date
SUITE DE CHIFFRES SUITE DE CHIFFRES SUITE DE CHIFFRES
DECIMAUX DECIMAUX DECIMAUX
Anne Mois Jour

Indication de lheure
SUITE DE CHIFFRES SUITE DE CHIFFRES
du jour DECIMAUX : DECIMAUX :

Indication des heures Indication des minutes

SUITE DE CHIFFRES SUITE DE CHIFFRES


DECIMAUX . DECIMAUX

Indication des secondes Indication des millisecondes

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 B-7
Rgles lexicales

Tableau B-2 Constantes littrales (suite)

Rgle Diagramme syntaxique

Reprsentation
dcimale
SUITE DE CHIFFRES . SUITE DE CHIFFRES Jours
DECIMAUX DECIMAUX D

SUITE DE CHIFFRES . SUITE DE CHIFFRES Heures


H
DECIMAUX DECIMAUX

SUITE DE CHIFFRES SUITE DE CHIFFRES Minutes


. M
DECIMAUX DECIMAUX

SUITE DE CHIFFRES . SUITE DE CHIFFRES Secondes


DECIMAUX DECIMAUX S

SUITE DE CHIFFRES . SUITE DE CHIFFRES Millisecondes


MS
DECIMAUX DECIMAUX

Pour passer la reprsentation dcimale, il faut que les units temporelles


naient pas encore t dfinies

Reprsentation par
niveaux
SUITE DE CHIFFRES SUITE DE CHIFFRES _
D _ H
DECIMAUX DECIMAUX

Jours Heures

SUITE DE CHIFFRES _ SUITE DE CHIFFRES _


DECIMAUX M DECIMAUX S

Minutes Secondes

SUITE DE CHIFFRES _
DECIMAUX MS

Millisecondes

au minimum une indication est requise

SCL pour SIMATIC S7-300/400, Programmation de blocs


B-8 C79000-G7077-C522-01
Rgles lexicales

B.1.2 Adressage absolu

Tableau B-3 Adressage absolu

Rgle Diagramme syntaxique

ADRESSAGE DE IDENTIFICATEUR Adresse


MEMOIRE SIMPLE DOPERANDE
Adressage absolu

IDENTIFICATEUR

Adressage symbolique
MNEMONIQUE

Index
ADRESSAGE DE
MEMOIRE INDEXE

IDENTIFICATEUR [ Expression , Expression ]


DOPERANDE de base de base

uniquement pour ladressage par bit

IDENTIFICATEUR
DOPERANDE POUR
Prfixe Prfixe
MEMOIRE de mmoire de taille

ADRESSAGE
ABSOLU DE DB
Identificateur doprande DB Adresse

Adressage absolu

Index
ADRESSAGE
INDEXE DE DB
Identificateur [ Expression , Expression ]
doprande DB de base de base

uniquement pour ladressage par bit

ADRESSAGE
STRUCTURE DE DB
Dsignation du DB . Variable
simple

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 B-9
Rgles lexicales

Tableau B-3 Adressage absolu (suite)

Rgle Diagramme syntaxique

Identificateur dop- Identificateur doprande


rande DB
DESIGNATION Prfixe
DU DB . D de taille

Prfixe de mmoire E
I
Entre

Q
A Sortie

M M Mmento

PE PI Priphrie des entres

PA PQ Priphrie des sorties

Abrviations Abrviations
SIMATIC CEI

Prfixe de taille pour


la mmoire et le DB
X Bit

B Octet

W Mot

D Double mot

Adresse pour la
mmoire et le DB
Numro . Numro

uniquement pour une adresse de bit

Adressage de
linstance locale
IDENTIFICATEUR . Variable
simple
Nom de linstance locale

SCL pour SIMATIC S7-300/400, Programmation de blocs


B-10 C79000-G7077-C522-01
Rgles lexicales

B.2 Commentaires

Important Voici les restrictions dont vous devez tenir compte lorsque vous insrer des com-
mentaires :
S limbrication de commentaires nest pas autorise
S linsertion de commentaires est possible un endroit quelconque de la rgle syn-
taxique, mais ne lest pas dans une rgle lexicale.

Tableau B-4 Commentaires

Rgle Diagramme syntaxique

COMMENTAIRE
Ligne de commentaire

Bloc de commentaire

LIGNE DE COMMEN-
caractre
TAIRE // CR
imprimable

BLOC DE COMMEN-
TAIRE (* Caractre *)

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 B-11
Rgles lexicales

B.3 Attributs de blocs

Important Les attributs de blocs peuvent suivre la DISGNATION DU BLOC ou prcder la


dclaration de la premire section de variables ou de paramtres.

Tableau B-5 Attributs

Rgle Diagramme syntaxique

TITRE
Caractre
TITLE =
imprimable

VERSION
SUITE DE CHIFFRES SUITE DE CHIFFRES
VERSION : .
DECIMAUX DECIMAUX

0-15 0-15

PROTECTION DE
BLOC KNOW_HOW_PROTECT

AUTEUR 8 caractres au maximum


AUTHOR : IDENTIFICATEUR

NOM 8 caractres au maximum


NAME : IDENTIFICATEUR

FAMILLE DE BLOC 8 caractres au maximum


FAMILY : IDENTIFICATEUR

Attributs systme de
blocs 24 caractres au maximum
caractre }
{ IDENTIFICATEUR :=
imprimable

SCL pour SIMATIC S7-300/400, Programmation de blocs


B-12 C79000-G7077-C522-01
Rgles syntaxiques C
Dfinition Les rgles syntaxiques dfinissent la structure de SCL, en sappuyant sur les rgles
lexicales. Vous avez la possibilit de crer votre programme SCL dans un format
libre, dans le respect de ces rgles.

Structure de Paragraphe Thme Page


cette annexe C.1 Organisation des sources SCL C-2
C.2 Structure des sections de dclaration C-4
C.3 Types de donnes dans SCL C-8
C.4 Section des instructions C-11
C.5 Affectations de valeurs C-13
C.6 Appel de fonctions et de blocs fonctionnels C-16
C.7 Instructions de contrle C-18

Conventions Chacune des rgles est prcde de son nom. Si elle est applique dans une rgle de
niveau hirarchique suprieur, son nom figure dans un rectangle.
Si le nom de la rgle est crit en majuscules, vous devez vous reporter aux rgles
lexicales.
Les informations figurant dans un rectangle aux bouts arrondis ou dans un cercle
sont dcrites en annexe A.

Important La libert dans le format signifie que :


S linsertion de caractres de mise en forme est partout possible.
S linsertion de lignes ou de blocs de commentaires est autorise (voir paragra-
phe 7.6).

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 C-1
Rgles syntaxiques

C.1 Organisation des sources SCL

Tableau C-1 Syntaxe des sources SCL

Rgle Diagramme syntaxique

Programme SCL Elment du programme SCL

Elment du Bloc dorganisation


programme SCL
Fonction

Bloc fonctionnel

Bloc de donnes

Type de donnes utilisateur

Bloc dorganisation
DESIGNATION Section de dclaration de lOB
ORGANIZATION_BLOCK DE LOB

BEGIN Section dinstructions END_ORGANIZATION_BLOCK

Fonction VOID

Noubliez pas que pour DESIGNATION Spcification du


FUNCTION DE LA FC :
les fonctions dpourvues type de donnes
de lattribut VOID, la
valeur en retour doit tre
affecte au nom de la
Section de
fonction dans la section dclaration BEGIN Section dinstructions END_FUNCTION
des instructions ! de la FC

Bloc fonctionnel
DESIGNATION Section de
FUNCTION_BLOCK DU FB dclaration
du FB

BEGIN Section dinstructions END_FUNCTION_BLOCK

SCL pour SIMATIC S7-300/400, Programmation de blocs


C-2 C79000-G7077-C522-01
Rgles syntaxiques

Tableau C-1 Syntaxe des sources SCL (suite)

Rgle Diagramme syntaxique

Bloc de donnes
DESIGNATION
DATA_BLOCK Section de dclaration du DB
DU DB

BEGIN Section daffectation du DB END_DATA_BLOCK

Type de donnes
utilisateur Spcification du
DESIGNATION type de donnes
TYPE DE LUDT END_TYPE
STRUCT

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 C-3
Rgles syntaxiques

C.2 Structure des sections de dclaration

Tableau C-2 Syntaxe de la section de dclaration

Rgle Diagramme syntaxique

Section de dclaration Chaque section ne doit


figurer quune fois dans
de lOB la section de dclaration !
Section des constantes

Section des repres de saut

Section des
variables temporaires

Section de dclaration Chaque section ne doit


de la FC Section des constantes figurer quune fois dans
la section de dclaration !
Section des repres de saut

Section des
variables temporaires

Section des paramtres


Interface

Section de dclaration Chaque section ne doit


figurer quune fois dans
du FB Section des constantes la section de dclaration !

Section des repres de saut

Section des
variables temporaires

Section des
variables statiques

Section des paramtres


Interface

Section de dclaration DESIGNATION


du DB DE LUDT

Structure de la
spcification du
type de donnes

SCL pour SIMATIC S7-300/400, Programmation de blocs


C-4 C79000-G7077-C522-01
Rgles syntaxiques

Tableau C-3 Syntaxe des sections de dclaration

Rgle Diagramme syntaxique

Section daffectation
du DB
Variable simple := Constante ;

Section des
constantes
CONST IDENTIFICATEUR := Expression ; END_CONST
simple
Nom de la constante

Section des repres


de saut
LABEL IDENTIFICATEUR ; END_LABEL
Repre de saut
,

Section des variables


statiques Dclaration
de la variable

VAR END_VAR

Dclaration
de linstance

Dclaration de
variables Spcification du Initialisation du
IDENTIFICATEUR 1) : type de donnes ;
type de donnes
Nom de la variable,
du paramtre
ou de la composante
Nom de la composante dans la structure

,
Pas linitialisation

1) Attributs systme de paramtres

24 caractres au maximum
:= caractre
{ IDENTIFICATEUR }
imprimable

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 C-5
Rgles syntaxiques

Tableau C-3 Syntaxe des sections de dclaration (suite)

Rgle Diagramme syntaxique

Initialisation du type Initialisation de


donnes simples
de donnes Constante

:= Liste dinitialisation
du tableau

Liste dinitialisation du Constante


tableau
Liste dinitialisation
du tableau

Constante
SUITE DE CHIFFRES DECIMAUX ( )
Facteur de rptition Liste dinitialisation
du tableau

Dclaration de lins- Les FB doivent


dj exister !
tance
DESIGNATION
DU FB

IDENTIFICATEUR : ;
Nom de linstance locale DESIGNATION
DU SFB
,

Section des variables


temporaires Dclaration
VAR_TEMP END_VAR
de la variable

Linitialisation nest pas possible !

SCL pour SIMATIC S7-300/400, Programmation de blocs


C-6 C79000-G7077-C522-01
Rgles syntaxiques

Tableau C-3 Syntaxe des sections de dclaration (suite)

Rgle Diagramme syntaxique

Section des
paramtres VAR_INPUT

VAR_OUTPUT Dclaration
de la variable END_VAR

VAR_IN_OUT
Linitialisation nest possible que pour VAR_INPUT et VAR_OUTPUT !

Spcification du type Type de donnes


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 LUDT

Spcification du
type de donnes
paramtre

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 C-7
Rgles syntaxiques

C.3 Types de donnes dans SCL

Tableau C-4 Syntaxe des types de donnes dans la section de dclaration

Rgle Diagramme de syntaxe

Type de donnes
Type de donnes
simple binaire

Type de donnes
caractre

Type de donnes
numrique

Type de donnes
temporel

Type de donnes BOOL Bit


binaire
BYTE Octet

WORD Mot

DWORD Double mot

Type de donnes
CHAR
caractre

Spcification du type
de donnes chane de Expression
STRING [ ]
caractres simple

longueur maximale de la chane


par dfaut : 254

Type de donnes
INT Entier
numrique
Entier, double prcision
DINT

REAL Nombre rel

SCL pour SIMATIC S7-300/400, Programmation de blocs


C-8 C79000-G7077-C522-01
Rgles syntaxiques

Tableau C-4 Syntaxe des types de donnes dans la section de dclaration (suite)

Rgle Diagramme de syntaxe

Type de temporisation S5TIME Temps


Format S5
TIME Temps

TIME_OF_DAY
Heure du jour
TOD

DATE Date

Voir aussi le paragraphe B.1.1

DATE_ET_TIME DATE_AND_TIME#
Indication de la date Indication de lheure du jour

DT#

Spcification du type Spcification des indices


de donnes ARRAY
ARRAY [ Index .. Index ]
1 n

,
5 itrations max. = 6 dimensions !

Spcification du
OF type de donnes

Spcification de type
STRUCT Dclaration END_STRUCT
de donnes STRUCT des composantes
Noubliez pas de
terminer le mot-cl
END_STRUCT avec un
point-virgule !

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 C-9
Rgles syntaxiques

Tableau C-4 Syntaxe des types de donnes dans la section de dclaration (suite)

Rgle Diagramme de syntaxe

Dclaration des com-


posantes
Spcification du Initialisation
IDENTIFICATEUR : type de donnes des donnes ;

Nom de la composante

Spcification du type TIMER Temporisation


de donnes du para-
mtres COUNTER Compteur

ANY Type quelconque

POINTER Adresse

BLOCK_FC Block Fonction

BLOCK_FB Block Bloc fonctionnel

BLOCK_DB Block Bloc de donnes

BLOCK_SDB Block Bloc de donnes systme

SCL pour SIMATIC S7-300/400, Programmation de blocs


C-10 C79000-G7077-C522-01
Rgles syntaxiques

C.4 Section des instructions

Tableau C-5 Syntaxe de la section des instructions

Rgle Diagramme syntaxique

Section des instruc-


tions IDENTIFICATEUR : Instruction ;
Repre de saut

Instruction
Affectation de valeur

Traitement dun
sousprogramme

Instruction de contrle

Affectation de valeur Variable simple := Expression

Variable absolue
dans les zones mmoire de la CPU
Variable dans un DB

Variable dans une instance locale

Variable tendue Variable simple

Variable absolue
dans les zones mmoire de la CPU
Variable dans un DB

Variable dans une instance locale

Appel de FC

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 C-11
Rgles syntaxiques

Tableau C-5 Syntaxe de la section des instructions (suite)

Rgle Diagramme syntaxique

Variable simple IDENTIFICATEUR

Nom de la variable
ou du paramtre

Variable
structure

Tableau
simple

Variable structure
IDENTIFICATEUR Identificateur au dbut
Nom de la variable ou
du paramtre
Tableau
simple
Nom de la composante
suit la virgule
.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C-12 C79000-G7077-C522-01
Rgles syntaxiques

C.5 Affectation de valeurs

Tableau C-6 Syntaxe de laffectation de valeurs

Rgle Diagramme syntaxique

Expression Oprande

Oprateur
Expression logique de base Expression

Oprateur
de comparaison

Oprateur
arithmtique
de base
Puissance
Expression ** Expression
de puissance

+ Expression
Plus anaire

Moins anaire

NOT Ngation

( Expression )

Expression simple
+
Expression Multiplication
simple simple

Multiplication simple
*
Multiplication
simple
/

DIV

MOD

Constante


( Expression )
simple

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 C-13
Rgles syntaxiques

Tableau C-6 Syntaxe de laffectation de valeurs (suite)

Rgle Diagramme syntaxique

Oprande Constante

Variable tendue

( Expression)

NOT Oprande

Variable tendue Variable simple

Variable absolue
pour les zones de mmoire de la CPU
Variable dans un DB

Variable dans une instance locale

Appel de FC

Constante
Constante
Valeur numrique

Chane de caractres

Nom de constante

Exposant Variable tendue

SUITE DE CHIFFRE DECIMAUX

( SUITE DE CHIFFRE DECIMAUX )

Oprateur logique de
base
AND & XOR OR

SCL pour SIMATIC S7-300/400, Programmation de blocs


C-14 C79000-G7077-C522-01
Rgles syntaxiques

Tableau C-6 Syntaxe de laffectation de valeurs (suite)

Rgle Diagramme syntaxique

Oprateur arithm-
tique de base
* / MOD DIV +

Oprateur de compa-
raison
< > <= >= = <>

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 C-15
Rgles syntaxiques

C.6 Appel de fonctions et de blocs fonctionnels

Tableau C-7 Syntaxe des appels

Rgle Diagramme syntaxique


FB : bloc fonctionnel
Appel de FB SFB: bloc fonctionnel systme

DESIGNATION
DU FB
Nom de linstance globale

DESIGNATION DESIGNATION Paramtres


. ( )
DE LA SFB DU DB du FB

IDENTIFICATEUR

Nom de linstance locale

Appel de fonction
DESIGNATION
DE LA FC

DESIGNATION Paramtres
( )
DE LA SFC de la FC

IDENTIFICATEUR
FC : fonction
Nom de la fonction standard SFC : fonction systme
ou mnmonique
fonction standard ralise dans le compilateur

Paramtres du FB Affectation
de lentre

Affectation de
lentre/sortie

Paramtres de la FC Expression

Affectation
de lentre

Affectation de
lentre/sortie

SCL pour SIMATIC S7-300/400, Programmation de blocs


C-16 C79000-G7077-C522-01
Rgles syntaxiques

Tableau C-7 Syntaxe des appels (suite)

Rgle Diagramme syntaxique

Affectation de lentre
Paramtre effectif

Expression

DESIGNATION DE
TEMPORISATION
IDENTIFICATEUR :=
DESIGNATION
Nom du paramtre dentre DE COMPTEUR

Paramtre formel DESIGNATION


DE BLOC

Affectation de la sortie Variable


IDENTIFICATEUR :=
ou de lentre/sortie tendue
Nom du paramtre
de sortie Paramtre effectif
ou dentre/sortie
Paramtre formel

Affectation de lentre/
sortie IDENTIFICATEUR := Variable
tendue
Nom du paramtre
Paramtre effectif
dentre/sortie
Paramtre formel

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 C-17
Rgles syntaxiques

C.7 Instructions de contrle

Tableau C-8 Syntaxe des instructions de contrle

Rgle Diagramme syntaxique

Instruction IF
Section
IF Expression THEN dinstructions
Condition

Section
ELSIF Expression THEN dinstructions
Condition

Noubliez pas de terminer le


mot-cl END_IF avec un Section
ELSE END_IF
point-virgule ! dinstructions

Instruction Case
CASE Expression OF
Valeur

Liste de valeurs : Section


dinstructions

Noubliez pas de terminer le


mot-cl END_CASE avec un
ELSE Section END_CASE
point-virgule ! : dinstructions

Liste de valeurs Valeur

Valeur .. Valeur

SCL pour SIMATIC S7-300/400, Programmation de blocs


C-18 C79000-G7077-C522-01
Rgles syntaxiques

Tableau C-8 Syntaxe des instructions de contrle (suite)

Rgle Diagramme syntaxique

Valeur

CONSTANTE LITTERALE ENTIERE

IDENTIFICATEUR
Nom de la constante

Instructions ditration Instruction


et de saut FOR

Instruction
WHILE

Instruction
REPEAT

Instruction
CONTINUE

Instruction
EXIT

Instruction
RETURN

Instruction
GOTO

Instruction FOR Affectation Expression


FOR initiale TO
de base
pour la valeur finale

Expression Section
BY DO
de base dinstructions

pour lincrment
Noubliez pas de terminer le
mot-cl END_FOR avec un
point-virgule !
END_FOR

Affectation initiale
Variable := Expression
simple de base
Type de donnes pour la valeur initiale
INT/DINT

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 C-19
Rgles syntaxiques

Tableau C-8 Syntaxe des instructions de contrle (suite)

Rgle Diagramme syntaxique

Instruction WHILE
Section END_WHILE
WHILE Expression DO dinstructions
Noubliez pas de
terminer le mot-cl
END_WHILE avec un
point-virgule !

Instruction REPEAT
Section END_REPEAT
Noubliez pas de REPEAT dinstructions UNTIL Expression
terminer le mot-cl
END_REPEAT avec un
point-virgule !

Instruction
CONTINUE CONTINUE

Instruction RETURN
RETURN

Instruction EXIT
EXIT

Saut dans le
programme GOTO IDENTIFICATEUR

Repre de saut

SCL pour SIMATIC S7-300/400, Programmation de blocs


C-20 C79000-G7077-C522-01
Bibliographie D
/12/ Guide : Automate programmable S7-300,
Configuration et application
/13/ Guide : Automate programmable S7-400,
Configuration et application
/14/ Guide : Calculateur industriel M7-300/400,
Configuration et application
/20/ Guide : Automates programmables S7-300/400,
Programmation
/25/ Guide : Calculateur industriel M7,
Programmation
/30/ Petit manuel illustr : Faites connaissance avec le S7-300...
/70/ Manuel : Automate programmable S7-300,
Installation et configuration - Caractristiques des CPU
/71/ Manuel de rfrence : Systmes dautomatisation S7-300, M7-300,
Caractristiques des modules
/72/ Liste des oprations : Automate programmable S7-300
/100/ Manuel de mise en uvre : Systmes dautomatisation S7-400, M7-400,
Installation et configuration
/230/ Manuel : Logiciel de base pour SIMATIC S7,
Pour une conversion facile de S5 S7...
/231/ Guide de lutilisateur : Logiciel de base pour SIMATIC S7 et M7,
STEP 7
/232/ Manuel : Langage LIST pour SIMATIC S7-300/400,
Programmation de blocs
/233/ Manuel : Langage CONT pour SIMATIC S7-300/400,
Programmation de blocs
/234/ Manuel de programmation : Logiciel systme pour SIMATIC S7-300/400
Conception de programmes
/235/ Manuel de rfrence : Logiciel systme pour SIMATIC S7-300/400
Fonctions standard et fonctions systme
/236/ Manuel: Langage LOG pour SIMATIC S7-300/400,
Programmation de blocs
/237/ Index gnral, STEP 7
/251/ Manuel: GRAPH pour SIMATIC S7-300/400,
Programmation de commandes squentielles
/254/ Manuel: CFC pour SIMATIC S7 et M7,
Comment cbler graphiquement des fonctions technologiques ?

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 D-1
Bibliographie

/800/ DOCPRO,
Documentation normalise dun projet (uniquement sur CD-ROM )
/801/ Tlservice pour automates programmables de type S7,C7 et M7,
(uniquement sur CD-ROM)
/802/ Simulateur PLC de STEP 7,
(uniquement sur CD-ROM)
/803/ Manuel de rfrence : Logiciel systme pour S7-300/400,
STEP 7 Fonctions standard, 2me partie (uniquement sur CD-ROM)

SCL pour SIMATIC S7-300/400, Programmation de blocs


D-2 C79000-G7077-C522-01
Glossaire

Abrviations Les abrviations reprsentent les oprandes et les oprations de programmation de


manire abrge (E, par exemple, dsigne lentre). STEP 7 reconnat les abrvia-
tions CEI (exprimes en anglais) et les abrviations SIMATIC (exprimes daprs
les oprations et conventions dadressage SIMATIC allemandes).

Activer les points Cette fonction permet de mettre lunit centrale (CPU) en attente des endroits
darrt dfinis du programme. Lorsquun point darrt est atteint, vous pouvez raliser les
fonctions de test, comme par exemple le traitement incrmental dinstructions ou la
visualisation de ltat des variables.

Adressage absolu Ladressage absolu consiste indiquer ladresse de loprande traiter. Exemple :
ladresse A 4.0 dsigne le bit 0 dans loctet 4 de la mmoire image des sorties.

Adressage Ladressage symbolique consiste indiquer de manire symbolique loprande


symbolique traiter (au lieu dune adresse).

Aide en ligne STEP 7 vous offre la possibilit dafficher lcran des textes daide contextuels
pendant votre travail avec le logiciel de programmation.

Appel de bloc Lexcution des blocs est dmarre de la manire suivante dans le programme utili-
sateur STEP 7 : les blocs dorganisation sont par principe toujours appels par le
systme, tous les autres le sont par le programme utilisateur STEP 7.

Attente Ltat dattente peut tre obtenu partir de ltat 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 SCL, il existe des attributs pour les indications suivantes :
titre du bloc, version, protection du bloc, auteur, nom du bloc, famille de bloc.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 Glossaire-1
Glossaire

Bloc Les blocs constituent des parties dlimites dun 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 utili-
sateur (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. Il existe, comme blocs de code, les blocs dorganisation (OB, les blocs
fonctionnels (FB), les fonctions (FC), les blocs fonctionnels systme (SFB) et les
fonctions systme (SFC).

Bloc de donnes Les blocs de donnes (DB) sont des zones de mmoire dans le programme utilisa-
(DB) teur qui contiennent des donnes utilisateur. Il existe des blocs de donnes globales
auxquels tous les blocs de code peuvent accder et des blocs de donnes dinstance
associs un appel de FB prcis.

Bloc de donnes Un bloc de donnes dinstance sauvegarde les paramtres formels et les donnes
dinstance locales statiques de blocs fonctionnels. Un DB dinstance est associ un appel de
(DB dinstance) bloc fonctionnel ou une hirarchie dappel de blocs fonctionnels. Il est gnr
automatiquement dans SCL.

Bloc de donnes Les blocs de donnes systme (SDB) sont des zones de donnes dans lunit centrale
systme (SDB) qui contiennent des paramtres systme et des paramtres de module. Vous pouvez
les crer et les modifier avec le logiciel de base STEP 7.

Bloc Les blocs dorganisation constituent linterface entre le systme dexploitation de la


dorganisation CPU et le programme utilisateur. Lordre de traitement du programme utilisateur est
(OB) dfini dans les blocs dorganisation.

Bloc fonctionnel Selon la norme CEI 1131-3, un bloc fonctionnel (FB) est un bloc de code avec don-
nes statiques. Un bloc fonctionnel permet la transmission de paramtres dans le
programme utilisateur. Aussi, les blocs fonctionnels se prtent-ils la programma-
tion de fonctions complexes se rptant souvent, comme par exemple les rgulations
et le choix du mode de fonctionnement. Puisquun FB possde une mmoire (bloc
de donnes dinstance), ses paramtres (par exemple sorties) sont accessibles tout
instant tout bloc du programme utilisateur.

Bloc fonctionnel Un bloc fonctionnel systme (SFB) est un bloc fonctionnel intgr au systme dex-
systme (SFB) ploitation de la CPU quil est possible dappeler dans le programme utilisateur
STEP 7.

SCL pour SIMATIC S7-300/400, Programmation de blocs


Glossaire-2 C79000-G7077-C522-01
Glossaire

Charger dans la Des objets chargeables (par exemple des blocs de code) sont chargs depuis la
PG mmoire de chargement dun module programmable dans la console de programma-
tion. Ceci peut tre ralis via une console de programmation directement connecte
ou, par exemple, via PROFIBUS.

Charger dans le Des objets chargeables (par exemple des blocs de code) sont chargs depuis la
systme cible console de programmation dans la mmoire de chargement dun module program-
mable. Ceci peut tre ralis via une console de programmation directement connec-
te ou, par exemple, via PROFIBUS.

Classe de bloc En fonction de leur contenu, les blocs sont subdiviss en deux classes, les blocs de
code et les blocs de donnes.

Classeur Classeur quil est possible douvrir dans linterface utilisateur de SIMATIC Manager
et qui peut contenir dautres classeurs et objets.

Commentaire de Les commentaires de bloc sont des informations supplmentaires sur un bloc (par
bloc exemple des explications sur le processus dautomatisation) qui ne sont pas charges
dans la mmoire de travail des automates programmables SIMATIC S7.

Compilateur de Le compilateur de SCL est un compilateur squentiel qui permet de traduire le pro-
SCL gramme pralablement dit (source SCL) en code machine MC7. Les blocs ainsi
crs sont enregistrs dans le programme S7 qui se trouve dans le classeur des blocs.

Compilation Traduction dune source en programme utilisateur excutable.

Compilation Dans le mode de saisie source, dventuelles erreurs de saisie ne sont recherches
source que durant la compilation. Le code excutable nest obtenu quen absence totale
derreurs.

Compteur Les compteurs font partie constituante de la mmoire systme de la CPU. Leur
contenu est actualis de faon asynchrone au programme utilisateur par le systme.
Les instructions en STEP 7 permettent de dfinir la fonction exacte de la cellule de
comptage (par exemple incrmentation) et den lancer lexcution.

Constante Les constantes aux noms symboliques servent rserver la place pour les valeurs
(symbolique) constantes dans les blocs de code. Elles permettent damliorer la lisibilit dun pro-
gramme.

Constante Ce sont des constantes dont la valeur et le type sont dtermins par la syntaxe. On
(littrale) distingue des constantes littrales de type numrique, caractre ou de temporisation.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 Glossaire-3
Glossaire

Conversion La conversion explicite consiste insrer une fonction de conversion dans le pro-
explicite gramme source. Lorsque lutilisateur effectue la combinaison de deux oprandes de
types de donnes diffrents, il doit raliser une conversion explicite : lors du passage
une autre classe de types de donnes, comme par exemple dun type de donnes
binaire un type de donnes numrique et lorsque le type de donnes cible est
moins puissant que le type de donnes source mme au sein de la mme classe.

Conversion La conversion implicite signifie que le compilateur ralise automatiquement une


implicite fonction de conversion. Il y a une conversion lors de la combinaison de deux op-
randes de types diffrents : lorsquil ny a pas de passage dans une autre classe de
types de donnes et lorsque le type de donnes cible nest pas moins puisssant que le
type de donnes source.

DCB DCB signifie Dcimal Cod binaire . Lindication interne la CPU des tempori-
sations et des compteurs est uniquement ralise dans le format DCB.

Dbogueur de SCL Le dbogueur de SCL est un dbogueur de langage volu permettant de trouver des
erreurs de programmation logiques dans le programme utilisateur cr avec SCL.

Dclaration des La dclaration dune variable consiste indiquer son mnmonique, son type de don-
variables nes et ventuellement une valeur de prslection, une adresse et un commentaire.

Dclaration du Dans la dclaration du type de donnes, lutilisateur peut dclarer des types de don-
type de donnes nes utilisateur.

Dcompilation La dcompilation en LIST permet de charger et dafficher dans une PG ou un PC


quelconques, le bloc charg dans la CPU. Certaines parties du bloc, comme par
exemple les mnmoniques et les commentaires peuvent toutefois manquer.

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 temporisa-
tions, des compteurs et des lments de blocs de donnes. Il est possible dy 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 don-
nes temporaires.

Donnes statiques Les donnes statiques sont des donnes locales dun bloc fonctionnel, sauvegardes
dans le bloc de donnes dinstance et donc conserves jusquau traitement suivant
du bloc fonctionnel.

SCL pour SIMATIC S7-300/400, Programmation de blocs


Glossaire-4 C79000-G7077-C522-01
Glossaire

Donnes Les donnes temporaires sont des donnes locales dun bloc de code qui sont ran-
temporaires ges dans la pile L pendant lexcution de ce bloc et ne sont plus disponibles une
fois lexcution acheve.

Donnes utiles Les donnes utiles sont changes par lintermdiaire de la mmoire image ou par
adressage direct entre une unit centrale et un module de signaux, un module fonc-
tionnel et des modules de communication. Il peut sagir des signaux dentre/sortie
TOR et analogiques de modules de signaux, dinformations de commande et dtat
de modules de fonctions.

Editeur de SCL Lditeur de SCL sadapte tout particulirement aux exigences de SCL pour crer la
source SCL.

En ligne Il sagit de ltat de fonctionnement dans lequel aucune liaison (physique, logique)
nest tablie entre la console de programmation et lautomate programmable.

Enable (EN) Tout bloc dans STEP 7 dispose dune entre Enable (EN) qui ralise lappel du
bloc. Si le signal 1 arrive sur EN le bloc est excut, dans le cas dun signal 0 il
nest pas appel.

Enable out (ENO) Tout bloc dans STEP 7 dispose dune sortie Enable Output (ENO). Lutilisateur
a la possibilit de combiner lentre Enable avec une valeur interne (UND) dans
le bloc. Le rsultat est affect automatiquement la sortie ENO. Dans limbrication
dappels de blocs, la sortie ENO permet de soumettre lexcution du bloc suivant au
droulement correct du bloc prcdent.

Entier (INT) Lentier (INT) est lun des types de donnes simples. On le reprsente comme nom-
bre entier 16 bits.

Etat de bloc Visualisation continue

Expression Une expression permet de traiter des donnes dans SCL. Il existe des expressions
arithmtiques, logiques et de comparaison.

Fentre de rsultat Il sagit dans le contexte du dbogueur SCL de la fentre affichant les rsultats des
fonctions de test Activer les points darrt et Visualisation continue .

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 Glossaire-5
Glossaire

Fonction Selon la norme CEI 1131-3, une fonction (FC) est un bloc de code sans donnes
(FC) statiques. Elle permet la transmission de paramtres dans le programme utilisateur.
Aussi, les fonctions se prtent-elles la programmation de fonctions complexes se
rptant souvant, comme les calculs.

Fonction systme Une fonction systme (SFC) est une fonction intgre au systme dexploitation de
(SFC) la CPU quil est possible dappeler dans le programme utilisateur STEP 7.

Globales Les donnes globales sont des zones de mmoire de la CPU, accessibles chaque
(donnes) bloc de code du programme (par exemple aux mmentos).

Hirarchie dappel Pour pouvoir tre excuts, tous les blocs doivent pralablement tre appels. On
appelle hirarchie dappel, lordre et limbrication de ces appels.

Hors ligne Il sagit de ltat de fonctionnement dans lequel aucune liaison (physique, logique)
nest tablie entre la console de programmation et lautomate programmable.

Identificateur Les identificateurs servent adresser des objets du langage SCL. Il existe les classes
didentificateurs suivantes : identificateurs standard, noms et mots-cls prdfinis,
identificateurs absolus (par exemple les identificateurs doprandes), noms quelcon-
ques de votre choix, par exemple pour les variables et les repres de saut, ou encore
mnmoniques dfinis dans la table des mnmoniques.

Identificateur Un identificateur doprande est la partie de loprande dune opration contenant


doprande des informations. La zone de mmoire dans laquelle lopration trouve une valeur
quelle va combiner ou la grandeur dune valeur quelle va combiner en sont des
exemples. Dans linstruction Valeur := EB10 , EB est lidentificateur dop-
rande ( E dsigne la zone dentre de la mmoire, B dsigne un octet dans
cette zone).

Instance On dsigne par instance lappel dun bloc fonctionnel. Un bloc de donnes dins-
tance ou une instance locale lui sont associs. Si, par exemple, un bloc fonctionnel
est appel n fois avec des paramtres et des noms de blocs de donnes diffrents
dans le programme utilisateur STEP 7, il existe n instances
FB13.DB3 (P3:=. . .), FB13.DB4 (P4:=. . .),
FB13.DB5 (P5:=. . .), ..., FB13.DBn (Pn:=. . .),

SCL pour SIMATIC S7-300/400, Programmation de blocs


Glossaire-6 C79000-G7077-C522-01
Glossaire

Instance locale Vous dfinissez linstance locale dans la section des variables statiques dun bloc
fonctionnel. A la place dun bloc de donnes dinstance global, seule une partie
locale est utilise comme zone de donnes pour le bloc fonctionnel. Vous lappelez
par le nom de linstance locale.

Instruction Une instruction est la plus petite unit autonome dun programme utilisateur cr
dans un langage textuel. Il sagit dune tche que doit excuter le processeur.

Instruction CASE Linstruction CASE permet de raliser un branchement. Elle sert slectionner
1 parmi n parties dun programme en fonction de la valeur dune expression de
slection.

Instruction Quitte une variable de contrle et la reprend avec sa valeur suivante.


CONTINUE

Instruction EXIT Abandon dune boucle.

Instruction FOR Linstruction FOR permet de rpter une suite dinstructions tant que la variable de
contrle se trouve dans la plage des valeurs indique.

Instruction GOTO Linstruction GOTO ralise le saut immdiat un repre de saut donn.

Instruction Linstruction REPEAT permet de rpter une suite dinstructions jusqu une condi-
REPEAT tion dabandon.

Instruction Linstruction RETURN permet de quitter immdiatement le bloc en cours.


RETURN

Interface dappel Linterface dappel est dfinie par les paramtres dentre, de sortie et dentre/sor-
tie (paramtres formels) dun bloc dans le programme utilisateur STEP 7. Ces para-
mtres sont remplacs par les paramtres effectifs lors de lappel du bloc.

Liste La liste dinstructions (LIST) est un langage de programmation textuel proche du


dinstructions code machine.
(LIST)

Mmento (M) Un mmento est une zone de mmoire dans la mmoire systme dune CPU
SIMATIC S7 qui peut tre adresse en criture et en lecture (par bit, octet, mot et
double mot). Lutilisateur peut utiliser la zone de mmento pour y enregistrer des
rsultats intermdiaires.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 Glossaire-7
Glossaire

Mmoire image Les tats de signaux des modules dentres et de sorties TOR sont rangs dans une
mmoire image dans la CPU. On distingue la mmoire image des entres (MIE) et
la mmoire image des sorties (MIS).

Mmoire image Avant le traitement du programme utilisateur, le systme dexploitation lit la


des entres (MIE) mmoire image des entres dans les modules dentre.

Mmoire image A la fin du traitement du programme utilisateur, le systme dexploitation transmet


des sorties (MIS) la mmoire image des sorties aux modules de sortie.

Mmoire systme La mmoire systme est une mmoire vive intgre lunit centrale, dans laquelle
(zone de mmoire) sont enregistres les zones doprandes (par exemple temporisations, compteurs,
mmentos) ainsi que les zones de donnes requises de manire interne par le sys-
tme (par exemple mmoire pour la communication).

Mnmonique Un mnmonique est un nom que lutilisateur dfinit en respectant les rgles de syn-
taxe imposes. Ce nom peut tre utilis en programmation et en contrle-commande
une fois son affectation dtermine (par exemple, variable, type de donnes, repre
de saut, bloc). Exemple : adresse E 5.0, type de donnes : Bool, mnmonique : Bou-
ton_arret_urg.

Mode de saisie Le mode de saisie source consiste diter les blocs ou le programme utilisateur
source entier dans un fichier de texte. La vrification syntaxique nest ralise que lors de
la compilation. SCL autorise le mode de saisie source.

Mot-cl Dans SCL, les mots-cls servent identifier le dbut dun bloc, annoncer les sec-
tions de dclaration, identifier des instructions, des commentaires et des attributs.

Mot dtat Le mot dtat fait partie des registres de la CPU. Il contient des informations dtat et
des informations derreur susceptibles de survenir avec le traitement dinstructions
STEP 7. Les bits dtat peuvent tre lus et dcrits par lutilisateur, les bits derreur peu-
vent uniquement tre lus.

Multi-instance Lorsque vous utilisez des multi-instances, le bloc de donnes dinstance contient les
donnes pour plusieurs blocs fonctionnels dune hirarchie dappel.

Nombre rel Un nombre rel, ou nombre virgule flottante est un nombre positif ou ngatif
reprsentant une valeur dcimale comme par exemple 0.339 ou -11.1.

SCL pour SIMATIC S7-300/400, Programmation de blocs


Glossaire-8 C79000-G7077-C522-01
Glossaire

Oprande Un oprande est la partie dune instruction indiquant lobjet que le processeur doit trai-
ter. On peut y accder par une adresse absolue ou symbolique.

Opration Une opration est la partie dune instruction indiquant ce que le processeur doit
faire.

Paramtre Dans SCL, il sagit dune variable dun bloc de code (paramtre effectif, paramtre
formel).

Paramtre dentre Seules les fonctions et les blocs fonctionnels possdent des paramtres dentre. Ils
permettent de transmettre des donnes traiter au bloc appel.

Paramtre Les fonctions et les blocs fonctionnels possdent des paramtres dentre/sortie. Ils
dentre/sortie permettent de transmettre des donnes au bloc appel, o elles sont traites, pour
ensuite ranger les rsultats dans la mme variable.

Paramtre de Le paramtre de sortie dun bloc permet de transmettre des rsultats au bloc appe-
sortie lant dans le programme utilisateur STEP 7.

Paramtre effectif Les paramtres effectifs remplacent les paramtres formels lors de lappel dun bloc
fonctionnel (FB) ou dune fonction (FC).
Exemple : le paramtre formel Dmarrer est remplac par le paramtre effectif
E.3.6 .

Paramtre formel Un paramtre formel rserve la place pour le paramtre effectif dans les blocs de
code paramtrables. Pour les FB et les FC, cest lutilisateur qui dclare les param-
tres formels ; ils existent dj pour les SFB et les SFC. A lappel du bloc, un para-
mtre 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 dentre, de sortie et dentre/sortie.

Pav non terminal Un pav non terminal est un lment complexe, dcrit par une nouvelle rgle lexi-
cale ou syntaxique.

Pav terminal Un pav terminal est un lment de base dune rgle lexicale ou syntaxique dont la
description ne ncessite pas de rgle supplmentaire, mais une simple explication. Il
peut par exemple sagir dun mot-cl ou dun caractre unique.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 Glossaire-9
Glossaire

Programmation La rsolution de tches dautomatisation complexes appelle la subdivision du pro-


structure gramme utilisateur en parties dlimites de programmes (blocs). Lorganisation du
programme utilisateur peut tre fonctionnelle ou dpendre de la structure technolo-
gique de linstallation.

Programmation Le langage de programmation SCL permet de remplacer les oprandes par des cha-
symbolique nes de caractres symboliques : loprande A 1.1 peut par exemple tre remplac
par Vanne_17 . La correspondance entre loprande et la chane de caractres qui
lui est associe est ralise dans la liste des symboles.

Programme Le programme utilisateur contient toutes les instructions et dclarations ainsi que
utilisateur toutes les donnes pour le traitement des signaux permettant 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.

Programme Le programme utilisateur S7 se trouve dans le classeur des blocs. Il contient les
utilisateur S7 blocs qui vont tre chargs dans un module programmable S7 (par exemple une
CPU) pour y tre excuts afin de raliser la commande dune installation ou dun
processus.

Projet Un projet est un classeur pour tous les objets dune solution dautomatisation, ind-
pendamment du nombre de stations, modules et de leur mise en rseau.

Protection du bloc La protection du bloc dsigne la possibilit de pouvoir protger des blocs indivi-
duels 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 dans la description du langage
SCL. Elles nautorisent pas lutilisation dun format libre, ce qui signifie quelles ne
peuvent tre compltes ni par des caractres despacement, ni par des caractres de
commande.

Rgle syntaxique Les rgles syntaxiques constituent le niveau suprieur de description du langage
SCL. Elles autorisent lutilisation dun format libre, ce qui signifie quelles peuvent
tre compltes par des caractres despacement et par des caractres de commande.

RUN A ltat de fonctionnement RUN (marche), le programme utilisateur est trait, la


mmoire image est actualise cycliquement et toutes les entres TOR sont valides.

RUN-P Ltat de fonctionnement RUN-P se distingue de ltat de fonctionnement RUN, en


ce quil autorise lapplication sans restrictions de nombreuses fonctions de la
console de programmation.

SCL pour SIMATIC S7-300/400, Programmation de blocs


Glossaire-10 C79000-G7077-C522-01
Glossaire

Saisie source La programmation dans SCL permet le mode de saisie source dun programme
STEP 7, avec un diteur de texte quelconque. Ce nest que durant la compilation
que le code de programme rel est cr et que dventuelles erreurs sont dceles.
Ce mode de saisie se prte la cration symbolique de programmes standard.

SCL SCL est labrviation de Structured Control Language . Il sagit dun langage
volu proche du PASCAL, conforme la norme DIN EN 61131-3 (CEI 1131-3), adapt
la programmation de tches complexes dautomatisation, comme par exemple des
algorithmes ou du traitement de donnes.

Section de Cest dans la section de dclaration que vous dclarez les donnes locales dun bloc
dclaration de code.

Single Step Test incrmental

Source Une source (fichier de texte) contient le code source (texte ASCII) qui peut tre
crit dans un diteur de texte quelconque. Elle est compile en un programme utili-
sateur excutable par un compilateur (LIST, SCL). Une source est enregistre dans
le classeur des sources, sous le programme S7.

Source SCL La source SCL est le fichier SCL dans lequel vous crez le programme qui va
ensuite tre compil avec le compilateur de SCL.

Structure Une structure est un type de donnes complexe compos dlments de donnes de
(STRUCT) types diffrents. Il peut sagir dlments de donnes simples ou complexes.

Tableau Un tableau (ARRAY) est un type de donnes complexe form dlments de don-
nes de mme type, pouvant eux-mmes tre des types de donnes simples ou com-
plexes.

Table des Cette table contient laffectation de mnmoniques (ou noms symboliques) des
mnmoniques adresses pour les donnes globales et les blocs. Exemple : Arret_urg (mnmonique),
E 1.7 (adresse), Rgulateur (mnmonique), SFB24 (bloc).

Table des variables La table des variables regroupe les variables que vous voulez visualiser et forcer,
avec les indications correspondantes sur le format.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 Glossaire-11
Glossaire

Temporisation Les temporisations font partie constituante de la mmoire systme de la CPU. Leur
contenu est actualis de faon asynchrone au programme utilisateur par le systme.
Les instructions en STEP 7 permettent de dfinir la fonction exacte de la cellule de
temporisation (par exemple retard la monte) et den lancer lexcution.

Temps de cycle Le temps de cycle est le temps que met la CPU traiter une seule fois le programme
utilisateur.

Temps de surveil- Si le temps dexcution du programme utilisateur excde le temps de surveillance


lance du cycle du cycle choisi, le systme dexploitation met un message derreur et la CPU passe
ltat darrt.

Test incrmental Le mode de test incrmental est une fonction du dbogueur de SCL. Il vous permet
dexcuter le programme instruction par instruction et de le visualiser dans une
fentre de rsultat.

Type de bloc Larchitecture des blocs de STEP 7 distingue les types de blocs suivants : bloc dor-
ganisation, bloc fonctionnel, fonction, bloc de donnes de mme que bloc fonction-
nel systme, fonction systme et bloc de donnes systme Bloc.

Type de On dfinit, laide du type de dclaration, comment un paramtre ou une variable


dclaration locale doivent tre utiliss par le bloc. Il existe les paramtres dentre, les param-
tres de sortie et les paramtres dentre/sortie, de mme que les variables statiques
et temporaires.

Type de donnes On dfinit, laide du type de donnes, comment la valeur dune variable ou dune
constante doit tre utilise dans le programme utilisateur. Dans SCL, lutilisateur en
a trois sortes sa disposition :
S les types de donnes simples,
S les types de donnes complexes,
S les types de donnes utilisateur (UDT).

Type de donnes On distingue les structures et les tableaux. Les structures sont composes de divers
complexe types de donnes diffrents (par exemple des types de donnes simples), alors que
les tableaux comportent plusieurs lments dun mme type de donnes. Les types
de donnes STRING et DATE_AND_TIME sont galement des types de donnes
complexes.

Type de donnes Les types de donnes simples sont des types de donnes prdfinis selon
simple CEI 1131-3. Exemples : le type de donnes BOOL dfinit une variable binaire (bit)
et le type de donnes INT une variable entire de 16 bits.

Type de donnes Les types de donnes utilisateur (UDT) sont crs par lutilisateur avec la dclara-
utilisateur tion de type de donnes. Ils ont un nom en propre et sont donc rutilisables. Un type
de donnes utilisateur peut, par exemple, servir la cration de plusieurs blocs de
donnes de mme organisation (par exemple, rgulateur).

SCL pour SIMATIC S7-300/400, Programmation de blocs


Glossaire-12 C79000-G7077-C522-01
Glossaire

Type de paramtre Un type de paramtre est un type de donnes spcial rserv aux temporisations, aux
compteurs et aux blocs. Vous pouvez lutiliser pour les paramtres dentre de blocs
fonctionnels et de fonctions, pour les paramtres dentre/sortie uniquement de
blocs fonctionnels afin de transmettre des temporisations, des compteurs et des blocs
au bloc appel.

UDT Type de donnes utilisateur

Variable Une variable dfinit une donne de contenu variable pouvant tre utilise dans le
programme utilisateur STEP 7. Elle comprend un oprande (par exemple M 3.1) et
un type de donnes (par exemple BOOL) et peut tre identifie par un mnmonique.
Vous la dclarez dans la section de dclaration.

Variable OK La variable OK permet de mentionner lexcution correcte ou incorrecte dun bloc.


Elle a gnralement le type de donnes BOOL.

Visualisation Voir fentre de rsultat

Visualisation Il sagit de lun des modes de test dans SCL. La visualisation continue dun pro-
continue gramme vous permet de tester une suite dinstructions, galement appele domaine
de visualisation.

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.

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 Glossaire-13
Glossaire

SCL pour SIMATIC S7-300/400, Programmation de blocs


Glossaire-14 C79000-G7077-C522-01
Index
A Autorisation, 3-2, 3-5
disquette originale, 3-3
Abandon, condition, 15-11
installation, 3-3
Activer les points darrt, fonction, 6-5, 6-6
rinstallation, 3-3
Adressage
absolu
blocs de donnes, 12-9
donnes systme globales, 12-4 B
donnes globales, 12-3 Barre
index tat, 4-3
blocs de donnes, 12-11 menus, 4-3
donnes systme globales, 12-7 outils, 4-3
rgles, 12-7, 12-11 titre, 4-3
mode, 12-2 Base de temps pour S5TIME, 17-15
structur de blocs de donnes, 12-12 BLOCK, type de paramtre, 7-13, 9-12
Adresse, 12-5, 12-10 Blocs, 1-3, 7-18
Affectation compatibilit, 1-4
de valeur, 14-1 concept de blocs de STEP 7, 1-3
composantes de tableau, 14-6 cration, 2-10
donnes systme globales, 14-10 de commentaire, 7-20
donnes utilisateur globales, 14-11 dbut, 8-4
structures, 14-4 dsignation, 8-4
tableaux, 14-6 fin, 8-4
entre, paramtre effectif, 16-7 fonction, 1-3, 1-4
entre/sortie, paramtre effectif, 16-8 ordre, 8-2
signe, 14-2 prdfinis, 1-4
sortie, paramtre effectif, 16-17 programmation, 2-10
Appel SCL
blocs fonctionnels, FB ou SFB, 16-3 dcompilation en LIST, 1-4
conditionnel, 19-2 structure, 7-18
fonction de comptage, 17-2, 17-10 slection du type, 2-11
fonctions (FC), 13-6, 16-13, 16-19 types, 1-3, 1-4
entre obligatoire, 16-16 Blocs dorganisation (OB), 1-3
instance globale, 16-10 derreur, types, 19-4
instance locale, 16-12 OB1, 2-11
temporisation, dynamique, 17-4, 17-12 structure, 8-16
valeur en retour, 16-14 types, 19-4
rsultat, 16-14 Blocs de donnes (DB), 1-3
Application SCL, 4-1 adressage absolu, 12-9
Apprentissage de SCL, 1-4 adressage index, 12-11
Attributs de blocs, dfinition, 8-5 adressage structur, 12-12
Attributs systme structure, 8-17
de blocs, 8-6
de paramtres, 8-8
AUTHORS.EXE, 3-3

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 Index-1
Index

Blocs fonctionnels (FB), 1-3 Constantes, 11-2


appel, 16-3 dclaration, 11-2
SAISIE, 2-12 liste alphabtique, A-7
structure, 8-12 mnmoniques, 11-2
Blocs fonctionnels systme (SFB), 1-4, 19-2 prdfinies, A-18
Boucles, 15-1 utilisation, 11-2
traitement, 15-2 CONT, langage de programmation, 1-2
Branchement, instructions, 15-2 CONTINUE, instruction, 15-2, 15-12
Conversion de types de donnes
explicite, 18-3
C implicite, 18-2
COUNTER, type de paramtre, 7-13, 9-12
Caractre
dalignement, 11-8
de mise en forme, liste, A-8
imprimable, A-6 D
CASE, instruction, 15-2, 15-6 DB. Voir Blocs de donnes
CEI 1131-3 (norme), 1-2 Dbogueur
Chane de caractres de SCL, fonctions, 6-2
constante littrale, 11-7 environnement de dveloppement, 1-2
interrompre, 11-8 fonctions, 6-2
poursuivre, 11-8 gnralits, 1-6
utilisation du caractre dalignement, 11-8 modes de test, 1-6
Classes de priorit, types dOB, 19-4 Dbut de bloc, 8-4
Code du programme Dclaration
OB 1, 2-10 donnes globales, 12-1
SAISIE, 2-13, 2-16 repres de saut, 11-14
Commentaires, 7-20 variables, 10-10
bloc de commentaire, 7-20 zones de donnes, 12-2
imbrication, 7-21 Dcompilation en LIST, blocs SCL, 1-4
insertion, 7-21 Dcrmenter, 17-717-9
ligne de commentaire, 7-20 Dmarrage de SCL, 4-2
Comparaison, expression, 13-10 Description du langage
Compatibilit aide, 7-2, A-1
ascendante, 1-4 SCL, 7-2, A-1
blocs, 1-4 Dsinstallation de SCL, 3-5
Compilateur Diagramme syntaxique, 7-2, A-2
environnement de dveloppement, 1-2 Dimensions du type de donnes ARRAY, 9-7
gnralits, 1-5, 1-6 DIN EN 61131-3 (norme), 1-2
options, 5-6 Donnes globales, 12-2
Composantes de tableau, 14-6 adressage, 12-2, 12-3
Compter, incrmenter / dcrmenter, 17-8 dclaration, 12-1
Compteur donnes utilisateur, 12-2
dcrmenter, 17-7 Donnes locales, 7-14, 10-1
incrmenter, 17-7 enregistrement, 10-2
Concept de blocs de STEP 7, 1-3 Donnes systme globales
Conditions, 15-3 adressage absolu, 12-4
dabandon, 15-11, 15-13 adressage index, 12-7
dexcution, 15-10 Drapeau OK, 10-2, 10-12
dinstallation, 3-1
Constante littrale, 11-3
affectation du type de donnes, 11-3 E
de type caractre, 11-7
Editeur
de type chane de caractres, 11-7
environnement de dveloppement, 1-2
entire, 11-5
gnralits, 1-5
numrique, 11-6
EN. Voir Paramtres dentre
relle, 11-6

SCL pour SIMATIC S7-300/400, Programmation de blocs


Index-2 C79000-G7077-C522-01
Index

ENO. Voir Paramtres de sortie Fonctions standard, 18-2


Enregistrer conversion du type de donnes, 18-2
bloc, 5-5 conversion explicite du type de donnes, 18-2
fichier source ASCII, 5-5 conversion implicite du type de donnes, 18-2
programme SCL, 5-5 sur chane binaire, 18-11
Environnement de dveloppement, 5-1 Fonctions systme (SFC), 1-4
compilateur squentiel, 1-2 FOR, instruction, 15-2, 15-8
dbogueur, 1-2 Format
diteur, 1-2 libre, 7-3
Erreurs valeur de temps, 17-14
durant linstallation, 3-5
et avertissements, causes, 5-8
types dOB, 19-4 G
Etapes de programmation, 2-11
Gnralits
EXIT, instruction, 15-2, 15-13
compilateur, 1-5, 1-6
Expression
dbogueur, 1-6
arithmtique, 13-7
diteur, 1-5
boolenne, 13-10
Gnie logiciel, mthodes de programmation, 1-4
comparaison, 13-10
GOTO, instruction, 15-2, 15-14
logique, 13-12
puissance, 13-9
rgles, 13-4
I
Identificateurs, 7-7
F doprandes, 12-4
liste alphabtique, A-9
FB. Voir Blocs fonctionnels
IF, instruction, 15-2, 15-4
FC. Voir Fonctions
Impression, source SCL, 5-5
Fichier
Incrmenter, 17-717-9
de programme, 7-19
Incrmenter / dcrmenter, 17-8
de texte, structure, 4-5, 8-2
Indexation, rgles, 12-7
Fichier source
Indices, spcification, 9-7
enregistrement, 5-5
Initialisation, 10-5
ordre des blocs, 8-2
paramtres dentre, 10-5
structure, 8-2
variables statiques, 10-5
Fin de bloc, 8-4
Installation de SCL, 3-4
Fonction des blocs, 1-3, 1-4
autorisation, 3-3
Fonctions (FC), 1-3
conditions, 3-1
structure, 8-14
prsentation, 3-1
Fonctions darrondi et de troncature, 18-8
Instance globale, appel, 16-3
Fonctions de conversion
Instance locale, appel, 16-3
classe A, liste, 18-3
classe B, liste, 18-4
Fonctions de test
activer les points darrt, 6-5, 6-6
STEP 7, proprits de la CPU, 6-10
visualisation continue, 6-3
visualiser/forcer les variables, 6-8
Fonctions de troncature et darrondi, 18-8
Fonctions numriques standard, liste
fonctions gnrales, 18-9
fonctions logarithmiques, 18-9
fonctions trigonomtriques, 18-10

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 Index-3
Index

Instructions, 8-10 Notation


branchement, 15-2 constante littrale de type date, 11-10
CASE, 15-2, 15-6 constante littrale numrique, 11-4
CONTINUE, 15-2, 15-12 dure, 11-11
de contrle, 8-11, 15-1 heure du jour, 11-13
EXIT, 15-2, 15-13 indications de temporisations, 11-10
FOR, 15-2, 15-8
GOTO, 15-2, 15-14
IF, 15-2, 15-4 O
itration, 15-2
OB. Voir Blocs dorganisation
quitter, 15-13
OK, drapeau, 10-2, 10-12
REPEAT, 15-2, 15-11
Oprandes, 13-5
RETURN, 15-2, 15-16
Oprateurs
saut, 15-2
arithmtiques, 13-7
slection, 15-2
liste, A-8
WHILE, 15-2, 15-10
parenthses, 13-4
Interface utilisateur, 4-3
priorit, 13-8
Interruption dune chane de caractres, 11-8
Oprations, liste alphabtique, A-14
Itration, instructions, 15-2

L P
Paramtres
LABEL. Voir Repres de saut, 11-14
affectation, 16-3
Langage de programmation
dentre, 10-10, 16-20
CONT, 1-2
dentre/sortie, 10-10
LIST, 1-2
de bloc, 7-14, 10-2, 10-10
SCL, description, 7-2, A-1
adressage, 10-11
textuel volu, 1-2, 1-3
de la FC, 16-15
Licence dutilisation, 3-2
affectation de lentre, 16-16
Ligne de commentaire, 7-20
de sortie, 10-10, 16-21
LIST
dfinis automatiquement, 16-20
dcompilation blocs SCL, 1-4
du FB
langage de programmation, 1-2
affectation de lentre, 16-7
Liste alphabtique
affectation de lentre/sortie, 16-8
constantes, A-7
principe, 16-5
identificateurs, A-9
effectifs, 16-2
identificateurs doprandes, A-12
affectation de lentre, 16-16
mots-cls, A-9
affectation de la sortie ou de lentre/sortie,
mots-cls de blocs, A-13
16-17
formels, 16-2
dentre, 10-10
M dentre/sortie, 10-10
Mthodes de programmation, 1-4 de sortie, 10-10
gnie logiciel, 1-4 types de donnes, 9-12
Mots-cls, 9-3, 9-5 sortie, lecture, 16-12
de blocs, liste alphabtique, A-13 systme, ENO, 10-12
liste alphabtique, A-9 transmission, 7-13
types de donnes, 7-13
PASCAL, 1-2
N Pavs, 7-2, A-2
non terminaux, A-14
Nom, attribution, 7-7
terminaux, A-5
Norme
POINTER, type de paramtre, 7-13, 9-12
CEI 1131-3, 1-2
conformit, 1-2
DIN EN 61131-3, 1-2

SCL pour SIMATIC S7-300/400, Programmation de blocs


Index-4 C79000-G7077-C522-01
Index

Prfixe Section des instructions, 8-10


de mmoire, 12-4 FB, 7-19
de taille, 12-5 instructions, 8-10
Prsentation du produit, 1-1 rgles, 8-10
Priorit syntaxe, 8-10
classes, 19-4 Sections de dclaration, 8-7, 10-3
oprateurs, 13-8 DB, 8-17
Programmation FB, 8-12
avec SCL, 5-1 FC, 8-14
tapes, 2-11 OB, 8-16
structure, 1-3, 1-4, 2-5 variables, 10-10
types dOB, 19-4 Slection
Programme SCL, compilation, 5-6 instructions, 15-2
Programme utilisateur, 1-3, 7-18 types de blocs, 2-6
Protection contre la copie, 3-2 SFB. Voir Blocs fonctionnels systme
SFC. Voir Fonctions systme
Signe daffectation, 14-2
R Sortie paramtrable, 2-4
Sous-programme, traitement, 8-11
REPEAT, instruction, 15-2, 15-11
STEP 7
Repres de saut, dclaration, 11-14
concept de blocs, 1-3
Rsolution. Voir Base de temps pour S5TIME
fonctions de test, 6-10
RETURN, instruction, 15-2, 15-16
proprits de la CPU, 6-10
types dOB, 19-4
visualiser/forcer les variables, 6-8
S STRUCT, type de donnes, 9-8
S_CD. Voir Dcrmenter Structure
S_CU. Voir Incrmenter affectation, 14-4
S_CUD. Voir Incrmenter / dcrmenter bloc dorganisation (OB), 8-16
S5TIME bloc de donnes (DB), 8-17
base de temps, 17-15 bloc fonctionnel (FB), 8-12
valeur de temps, 17-14 fichier source, 8-2
Saut, dans un programme, 15-2 fonction (FC), 8-14
SCL type de donnes, 9-8
apprentissage, 1-4 Structure de bloc, dans les fichiers source, 8-3
attribution dun nom, 7-7 Syntaxe, diagrammes, 7-2, A-2
bloc, structure, 7-18 Systme, principes de base, 2-2
compilation dun programme, 5-6
dbogueur, 1-2, 1-6, 6-2
dcompilation en LIST, 1-4 T
dmarrage, 4-2
Table des mnmoniques, cration, 5-2, 12-6
description du langage, 7-2, A-1
Tableau
dsinstallation, 3-5
bidimensionnel (matriciel), 9-7
erreur durant linstallation, 3-5
composante, 14-6
fichier source, structure, 7-18, 8-1
dimension, 9-7
fonctions de test, 6-2
liste dinitialisation, 10-5
identificateur, 7-7
unidimensionnel (vectoriel), 9-7
installation, 3-4
Temporisation, 17-10
erreur, 3-5
Test
interface utilisateur, 4-3
Voir aussi Fonctions de test
langages de programmation CONT, LIST, 1-2
modes, dbogueur, 1-6
Structured Control Language, 1-2
TIMER, type de paramtre, 7-13, 9-12
utilisation, 4-1
Section daffectation, DB, 8-18
Section dinitialisation, DB, 8-18

SCL pour SIMATIC S7-300/400, Programmation de blocs


C79000-G7077-C522-01 Index-5
Index

Type de donnes utilisateur (UDT), 1-3, 7-13, 8-19, Utilisation de SCL, 4-1
9-10
appel, 8-19
composantes, 8-19 V
dfinition, 8-19
Valeur
Type de paramtre, 7-13, 9-12
de mesure, traitement, 2-3
ANY, 7-13, 9-12
de temps, saisie, 17-14
BLOCK, 7-13, 9-12
en retour, 16-13
COUNTER, 7-13, 9-12
finale, 15-9
POINTER, 7-13, 9-12, 9-14
initiale, 15-9
TIMER, 7-13, 9-12
sortie, lecture, 16-11
Types de blocs, fonction, 1-3, 1-4
Variable
Types de donnes
dclaration, 10-10
ARRAY, 9-7
tendue, 13-6
dimensions, 9-7
statique, 2-13, 7-14, 10-2, 10-8
BOOL, 16-20
temporaire, 7-14, 10-2, 10-9
caractre, 9-3
Visualisation continue, fonction, 6-3
complexe, 9-4
conversion, 18-2, 18-3
description, 9-3
lmentaire, 7-12 W
numrique, 9-3 WHILE, instruction, 15-2, 15-10
paramtres formels, 9-12 Windows 95, 1-2
simple, 9-3
spcification, 9-7
STRUCT, 9-8 Z
dclaration des composantes, 9-8
Z_RUECK. Voir Dcrmenter
dclaration des variables, 9-8
Z_VORW. Voir Incrmenter
temps, 9-3
Zone
de donnes, dclaration, 12-2
de mmoire de la CPU, donnes globales, 12-2
U de travail, 4-3
UDT. Voir Type de donnes utilisateur

SCL pour SIMATIC S7-300/400, Programmation de blocs


Index-6 C79000-G7077-C522-01
Siemens AG
A&D AS E46

stliche Rheinbrckenstr. 50
D-76181 Karlsruhe
Rpublique Fdrale dAllemagne

Expditeur :
Vos . Nom : _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _____
Fonction : _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Entreprise : _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Rue : _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ____
Code postal : _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Ville : _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ____
Pays : _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ____
Tlphone : _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Indiquez votre secteur industriel :

Industrie automobile Industrie pharmaceutique


Industrie chimique Traitement des matires plastiques
Industrie lectrique Industrie du papier
Industrie alimentaire Industrie textile
Contrle/commande Transports
Construction mcanique Autres _ _ _ _ _ _ _ _ _ _ _
Ptrochimie

SCL pour SIMATIC S7-300/400, Programmation de blocs


6ES7811-1CA02-8CA0-01 1
Remarques / suggestions
Vos remarques et suggestions nous permettent damliorer la qualit gnrale de notre
documentation. Cest pourquoi nous vous serions reconnaissants de complter et de ren-
voyer ces formulaires Siemens.

Rpondez aux questions suivantes en attribuant une note comprise entre 1 pour trs bien
et 5 pour trs mauvais.
1. Le contenu du manuel rpond-il votre attente ?
2. Les informations requises peuvent-elles facilement tre trouves ?
3. Le texte est-il comprhensible ?
4. Le niveau des dtails techniques rpond-il votre attente ?
5. Quelle valuation attribuez-vous aux figures et tableaux ?

Vos remarques et suggestions:


_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

SCL pour SIMATIC S7-300/400, Programmation de blocs


2 6ES7811-1CA02-8CA0-01

Vous aimerez peut-être aussi