You are on page 1of 406

s

Avant-propos, Sommaire Prsentation du produit

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

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

Installation Dveloppement d'un programme S7-SCL Utilisation de S7-SCL Notions fondamentales dans S7-SCL

Manuel

Structure de programme S7-SCL Types de donnes Dclaration de variables locales et de paramtres Dclaration de constantes et repres de saut Donnes globales Expressions, oprations et oprandes Instructions Compteurs et temporisation Fonctions standard de S7-SCL Description du langage Conseils et astuces Glossaire, Index

Edition 01/2005
A5E00324651-01

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

! ! !

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

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

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

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

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

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

Utilisation conforme la destination


Tenez compte des points suivants :

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

Marque de fabrique
Toutes les dsignations repres par sont des marques dposes de Siemens AG. Les autres dsignations dans ce document peuvent tre des marques dont l'utilisation par des tiers leurs propres fins peut enfreindre les droits de leurs propritaires respectifs. Copyright Siemens AG 2005 Tous droits rservs
Toute communication et reproduction de ce document, toute exploitation ou communication de son contenu sont interdites, sauf autorisation expresse. Tout manquement cette rgle est illicite et expose son auteur au versement de dommages et intrts. Tous nos droits sont rservs, notamment pour le cas de la dlivrance d'un brevet ou de l'enregistrement d'un modle d'utilit Siemens AG Automation and Drives Postfach 4848, 90327 Nrnberg, Allemagne

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

Siemens AG 2005 Sous rserve de modifications techniques

Siemens Aktiengesellschaft

A5E00324651-01

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

Connaissances de base requises


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

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

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

iii

Avant-propos

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


Le tableau ci-dessous indique la documentation existante sur STEP 7 et sur S7-SCL :
Manuels S7-SCL Connaissances fondamentales et rfrences Contenu Numro de rfrence Le manuel ne peut pas tre command sparment. Il se trouve sur le CD livr avec le logiciel, sur le CD "Manual Collection" et est disponible sur Internet. 6ES7810-4CA07-8CW0

Notions de base et rfrences consulter, expliquant l'laboration S7-SCL pour SIMATIC S7-300/400 : d'un programme, la structure des programmes utilisateur et les Programmation de blocs diffrents lments de langage. Notions de base l'adresse du personnel technique, marche suivre pour raliser des tches d'automatisation avec STEP 7 et SIMATIC S7-300/400.

STEP 7 Connaissances fondamentales


STEP 7 V5.3 - Getting Started Programmer avec STEP 7 V5.3 Configuration matrielle et communication avec STEP 7 V5.3 Pour une transition facile de STEP 5 STEP 7 Langages CONT/LOG/LIST pour SIMATIC S7-300/400 Fonctions standard et fonctions systme pour SIMATIC S7-300/400

STEP 7 Manuels de rfrence

Rfrences consulter, compltant 6ES7810-4CA07-8CW1 les bases de STEP 7 par une description des langages de programmation CONT, LOG et LIST ainsi que des fonctions standard et des fonctions systme.

Aides en ligne Aide de S7-SCL Aide de STEP 7

Contenu Notions de base et rfrences de SCL sous forme d'aide en ligne Notions de base permettant de programmer et de configurer le matriel avec STEP 7, sous forme d'aide en ligne. Rfrences contextuelles

Numro de rfrence Fait partie du logiciel SCL Fait partie du logiciel STEP 7

Aides de rfrence de CONT/LOG/LIST Aide de rfrence des SFB/SFC Aide de rfrence des blocs d'organisation Aide de rfrence des fonctions CEI Aide de rfrence des attributs systme

Font partie du logiciel STEP 7

iv

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

Avant-propos

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

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

Avant-propos

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

Centre de formation SIMATIC


Nous proposons des cours de formation pour vous faciliter l'apprentissage des automates programmables SIMATIC S7. Veuillez vous adresser votre centre de formation rgional ou au centre principal D 90327 Nuremberg. Tlphone : Internet: +49 (911) 895-3200. http://www.sitrain.com

vi

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

Avant-propos

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

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

Service & Support sur Internet


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

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

vii

Avant-propos

viii

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

Sommaire
1 Prsentation du produit ...........................................................................................................1-1 1.1 1.2 1.3 1.4 2 Domaine d'application de S7-SCL ..............................................................................1-1 Fonctionnement de S7-SCL ........................................................................................1-2 Fonctions offertes par S7-SCL ....................................................................................1-4 Nouveauts dans la version V5.3 SP1........................................................................1-6

Installation .................................................................................................................................2-1 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.2.2 Automation License Manager .....................................................................................2-1 Licence d'utilisation avec Automation License Manager ............................................2-1 Installation de Automation License Manager ..............................................................2-4 Rgles d'utilisation des License Keys .........................................................................2-5 Installation ................................................................................................................... 2-6 Environnement requis .................................................................................................2-6 Installation de S7-SCL.................................................................................................2-6

Dveloppement d'un programme S7-SCL..............................................................................3-1 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.9.1 3.10 3.10.1 3.10.2 3.10.3 3.11 3.11.1 3.11.2 3.11.3 3.12 3.13 Bienvenue dans l'exemple pour dbutants "Saisie de valeurs de mesure" ................3-1 Enonc du problme ...................................................................................................3-2 Composition d'un programme structur avec S7-SCL................................................3-4 Dfinition des tches partielles ...................................................................................3-6 Dfinition des interfaces entre blocs ...........................................................................3-8 Dfinition de l'interface d'entre/sortie ......................................................................3-10 Dfinition de l'ordre des blocs dans la source...........................................................3-11 Dfinition des mnmoniques .....................................................................................3-11 Cration de la fontion CARRE ..................................................................................3-12 Section des instructions de la fonction CARRE ........................................................3-12 Cration du FB CALCUL ...........................................................................................3-13 Organigramme de EXPLOITER ................................................................................3-13 Section de dclaration du FB CALCUL.....................................................................3-14 Section des instructions du FB CALCUL ..................................................................3-15 Cration du FB SAISIE..............................................................................................3-17 Organigramme de SAISIR.........................................................................................3-17 Section de dclaration du FB SAISIE .......................................................................3-18 Section des instructions du FB SAISIE .....................................................................3-20 Cration du bloc d'organisation CYCLE....................................................................3-23 Donnes de test ........................................................................................................3-25

Utilisation de S7-SCL ...............................................................................................................4-1 4.1 4.2 4.3 4.4 4.4.1 4.4.2 4.4.3 4.4.4 4.4.5 4.4.6 4.4.7 Dmarrer le logiciel S7-SCL........................................................................................4-1 Interface utilisateur ......................................................................................................4-2 Personnalisation de l'interface utilisateur ....................................................................4-3 Cration et manipulation d'une source S7-SCL ..........................................................4-4 Crer une nouvelle source S7-SCL ............................................................................4-4 Ouvrir une source S7-SCL ..........................................................................................4-5 Fermer une source S7-SCL ........................................................................................4-5 Ouvrir des blocs ..........................................................................................................4-6 Dfinir les proprits de l'objet ....................................................................................4-6 Gnrer des sources S7-SCL avec un diteur standard ............................................4-6 Protection de bloc........................................................................................................4-7

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

ix

Sommaire

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

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

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

Sommaire

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

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

Notions fondamentales dans S7-SCL.....................................................................................5-1 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11 5.12 5.13 5.14 5.15 Interprtation des diagrammes syntaxiques ...............................................................5-1 Jeu de caractres........................................................................................................5-4 Mots rservs ..............................................................................................................5-5 Identificateur ................................................................................................................5-6 Identificateur standard.................................................................................................5-7 Dsignation de bloc.....................................................................................................5-7 Identificateur d'oprande.............................................................................................5-9 Dsignation de temporisation....................................................................................5-10 Dsignation de compteur ..........................................................................................5-10 Nombres ....................................................................................................................5-11 Chane de caractres ................................................................................................5-13 Mnmonique..............................................................................................................5-14 Bloc de commentaire.................................................................................................5-15 Ligne de commentaire...............................................................................................5-16 Variables....................................................................................................................5-17

Structure de programme S7-SCL ............................................................................................6-1 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 6.10 6.11 6.12 6.13 6.14 6.15 6.16 6.17 Blocs dans les sources S7-SCL ..................................................................................6-1 Ordre des blocs ...........................................................................................................6-2 Composition gnrale d'un bloc ..................................................................................6-3 Dbut et fin de bloc .....................................................................................................6-3 Attributs de bloc...........................................................................................................6-5 Commentaire de bloc ..................................................................................................6-7 Attributs systme pour bloc .........................................................................................6-8 Section de dclaration.................................................................................................6-9 Attributs systme pour paramtre .............................................................................6-10 Section des instructions ............................................................................................6-11 Instructions ................................................................................................................6-12 Composition d'un bloc fonctionnel (FB) ....................................................................6-13 Composition d'une fonction (FC)...............................................................................6-15 Composition d'un bloc d'organisation (OB) ...............................................................6-17 Composition d'un bloc de donnes (DB)...................................................................6-18 Composition d'un type de donnes utilisateur ..........................................................6-21 Options du compilateur dans les sources S7-SCL ...................................................6-23

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

xi

Sommaire

Types de donnes ....................................................................................................................7-1 7.1 7.2 7.2.1 7.2.2 7.2.3 7.2.4 7.3 7.3.1 7.3.2 7.3.3 7.3.4 7.4 7.4.1 7.5 7.5.1 7.5.2 7.5.3 7.6 7.6.1 Prsentation des types de donnes dans S7-SCL .....................................................7-1 Types de donnes simples..........................................................................................7-3 Types de donnes binaires .........................................................................................7-3 Types de donnes sur caractre.................................................................................7-3 Types de donnes numriques ...................................................................................7-3 Types de donnes temporels ......................................................................................7-4 Types de donnes complexes ....................................................................................7-5 Type de donnes DATE_AND_TIME..........................................................................7-5 Type de donnes STRING ..........................................................................................7-7 Type de donnes ARRAY .........................................................................................7-10 Type de donnes STRUCT .......................................................................................7-12 Type de donnes utilisateur ......................................................................................7-14 Types de donnes utilisateur (UDT) .........................................................................7-14 Types de donnes pour paramtre ...........................................................................7-16 Types de donnes TIMER et COUNTER..................................................................7-16 Types de donnes BLOCK........................................................................................7-17 Type de donnes POINTER......................................................................................7-17 Type de donnes ANY ..............................................................................................7-19 Exemple de type de donnes ANY ...........................................................................7-20

Dclaration de variables locales et de paramtres ...............................................................8-1 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.8.1 8.8.2 8.8.3 8.8.4 Variables locales et paramtres de bloc .....................................................................8-1 Syntaxe gnrale d'une dclaration de variable ou de paramtre..............................8-2 Initialisation..................................................................................................................8-3 Dclaration d'accs des zones de variable..............................................................8-5 Utilisation de multi-instances.......................................................................................8-7 Dclaration d'une instance ..........................................................................................8-7 Drapeau OK ................................................................................................................8-8 Sections de dclaration ...............................................................................................8-9 Prsentation des sections de dclaration ...................................................................8-9 Variables statiques ....................................................................................................8-10 Variables temporaires ...............................................................................................8-11 Paramtres de bloc ...................................................................................................8-12

Dclaration de constantes et repres de saut .......................................................................9-1 9.1 9.1.1 9.1.2 9.1.3 9.1.3.1 9.1.3.2 9.1.3.3 9.1.3.4 9.1.3.5 9.1.3.6 9.1.3.7 9.1.3.8 9.1.3.9 9.2 Constantes ..................................................................................................................9-1 Dclaration de mnmoniques pour les constantes .....................................................9-2 Types de donnes des constantes .............................................................................9-3 Notation des constantes..............................................................................................9-4 Constante binaire........................................................................................................9-6 Constante entire........................................................................................................9-7 Constante relle..........................................................................................................9-8 Constante sur caractre (caractre unique) ...............................................................9-9 Constante sur chane................................................................................................9-11 Constante de date.....................................................................................................9-13 Constante de dure ..................................................................................................9-13 Constante d'heure du jour.........................................................................................9-16 Constante de date et d'heure....................................................................................9-17 Dclaration de repres de saut .................................................................................9-18

xii

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

Sommaire

10

Donnes globales ...................................................................................................................10-1 10.1 10.2 10.2.1 10.2.2 10.2.3 10.2.4 10.3 10.3.1 10.3.2 10.3.3 10.3.4 Prsentation des donnes globales ..........................................................................10-1 Zones de mmoire de la CPU ...................................................................................10-2 Prsentation des zones de mmoire de la CPU .......................................................10-2 Adressage absolu des zones de mmoire de la CPU ..............................................10-3 Adressage symbolique des zones de mmoire de la CPU.......................................10-5 Adressage index des zones de mmoire de la CPU ..............................................10-6 Blocs de donnes......................................................................................................10-7 Prsentation des blocs de donnes ..........................................................................10-7 Adressage absolu des blocs de donnes .................................................................10-8 Adressage index des blocs de donnes ...............................................................10-10 Adressage structur des blocs de donnes ............................................................10-11

11

Expressions, oprations et oprandes ................................................................................11-1 11.1 11.2 11.3 11.4 11.5 11.6 11.7 Oprations .................................................................................................................11-1 Oprandes.................................................................................................................11-2 Syntaxe d'une expression .........................................................................................11-4 Expression simple .....................................................................................................11-6 Expressions arithmtiques ........................................................................................11-7 Expressions logiques ................................................................................................11-9 Expressions de comparaison ..................................................................................11-11

12

Instructions .............................................................................................................................12-1 12.1 12.1.1 12.1.2 12.1.3 12.1.4 12.1.5 12.1.6 12.1.7 12.2 12.2.1 12.2.2 12.2.3 12.2.4 12.2.5 12.2.6 12.2.7 12.2.8 12.2.9 12.2.10 12.2.11 12.3 12.3.1 12.3.2 12.3.2.1 12.3.2.2 12.3.2.3 12.3.2.4 12.3.2.5 12.3.2.6 12.3.2.7 Affectations de valeur................................................................................................12-1 Affecter une valeur une variable de type de donnes simple ...............................12-2 Affecter une valeur des variables de type STRUCT et UDT..................................12-3 Affecter une valeur une variable de type ARRAY ..................................................12-5 Affecter une valeur une variable de type STRING .................................................12-7 Affecter une valeur une variable de type DATE_AND_TIME.................................12-8 Affecter une valeur une variable absolue pour zones de mmoire........................12-9 Affecter une valeur une variable globale..............................................................12-10 Instructions de contrle ...........................................................................................12-12 Prsentation des instructions de contrle ...............................................................12-12 Conditions ...............................................................................................................12-13 Instruction IF............................................................................................................12-14 Instruction CASE .....................................................................................................12-16 Instruction FOR .......................................................................................................12-18 Instruction WHILE ...................................................................................................12-21 Instruction REPEAT ................................................................................................12-22 Instruction CONTINUE ............................................................................................12-23 Instruction EXIT.......................................................................................................12-24 Instruction GOTO ....................................................................................................12-25 Instruction RETURN................................................................................................12-26 Appel de fonctions et de blocs fonctionnels ............................................................12-27 Appel et transmission de paramtres......................................................................12-27 Appel de blocs fonctionnels ....................................................................................12-29 Appel d'un bloc fonctionnel (FB ou SFB) ................................................................12-29 Dfinition des paramtres du FB.............................................................................12-31 Dfinition des entres (FB)......................................................................................12-33 Dfinition des entres/sorties (FB)..........................................................................12-34 Lecture des valeurs de sortie (appel de FB) ...........................................................12-35 Exemple d'appel d'une instance globale .................................................................12-35 Exemple d'appel d'une instance locale ...................................................................12-37

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

xiii

Sommaire

12.3.3 12.3.3.1 12.3.3.2 12.3.3.3 12.3.3.4 12.3.3.5 12.3.3.6 12.3.4 12.3.4.1 12.3.4.2 13

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

Compteurs et temporisation..................................................................................................13-1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.1.5 13.1.6 13.1.7 13.1.8 13.2 13.2.1 13.2.2 13.2.3 13.2.4 13.2.5 13.2.6 13.2.7 13.2.8 Compteurs .................................................................................................................13-1 Fonctions de comptage .............................................................................................13-1 Appel d'une fonction de comptage ............................................................................13-1 Dfinition des paramtres d'une fonction de comptage ............................................13-3 Saisie et exploitation de la valeur de comptage........................................................13-5 Compteur incrmental (S_CU) ..................................................................................13-6 Compteur dcrmental (S_CD).................................................................................13-6 Compteur incrmental/dcrmental (S_CUD) ..........................................................13-7 Exemple de fonction de comptage............................................................................13-7 Temporisations ..........................................................................................................13-9 Fonctions de temporisation .......................................................................................13-9 Appel d'une fonction de temporisation ......................................................................13-9 Dfinition des paramtres d'une fonction de temporisation ....................................13-11 Saisie et exploitation de la valeur de temps............................................................13-13 Dmarrer une temporisation sous forme d'impulsion (S_PULSE) ..........................13-15 Dmarrer une temporisation sous forme d'impulsion prolonge (S_PEXT) ...........13-16 Dmarrer une temporisation sous forme de retard la monte (S_ODT)..............13-17 Dmarrer une temporisation sous forme de retard la monte mmoris (S_ODTS)...........................................................................13-18 13.2.9 Dmarrer une temporisation sous forme de retard la retombe (S_OFFDT).......................................................................................13-19 13.2.10 Exemple de fonction de temporisation ....................................................................13-20 13.2.11 Choix de la temporisation approprie .....................................................................13-21

14

Fonctions standard de S7-SCL .............................................................................................14-1 14.1 14.1.1 14.1.2 14.1.2.1 14.1.3 14.1.3.1 14.1.3.2 14.1.3.3 14.2 14.2.1 14.2.2 14.2.3 14.2.4 14.3 14.3.1 14.4 14.4.1 14.4.2 14.4.3 14.4.4 Conversion de types de donnes..............................................................................14-1 Conversion de types de donnes..............................................................................14-1 Conversion automatique du type de donnes...........................................................14-2 Fonctions de conversion de classe A........................................................................14-2 Fonctions standard pour la conversion explicite du type de donnes ......................14-3 Fonctions de conversion de classe B........................................................................14-3 Fonctions d'arrondi et de troncature..........................................................................14-6 Exemples de conversion avec des fonctions standard .............................................14-7 Fonctions standard numriques ................................................................................14-9 Fonctions standard arithmtiques gnrales ............................................................14-9 Fonctions logarithmiques ..........................................................................................14-9 Fonctions trigonomtriques .....................................................................................14-10 Exemples de fonctions standard numriques .........................................................14-10 Fonctions standard sur chane binaire ....................................................................14-11 Exemple de fonctions standard sur chane binaire .................................................14-12 Fonctions de traitement de chane de caractres ...................................................14-13 Fonctions de manipulation de chane de caractres ..............................................14-13 Fonctions de comparaison de chanes de caractres ............................................14-17 Fonctions de conversion du type de donnes.........................................................14-19 Exemple de traitement de chanes de caractres...................................................14-21

xiv

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

Sommaire

14.5 14.5.1 14.6 14.6.1 14.6.2 15

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

Description du langage ..........................................................................................................15-1 15.1 15.1.1 15.1.2 15.1.3 15.1.4 15.1.5 15.1.6 15.1.7 15.1.8 15.1.9 15.1.10 15.1.11 15.2 15.2.1 15.2.2 15.2.3 15.2.4 15.2.5 15.2.6 15.2.7 15.3 15.3.1 15.3.2 15.3.3 15.3.4 15.3.5 15.3.6 15.3.7 15.3.8 Description formelle du langage................................................................................15-1 Prsentation des diagrammes syntaxiques ..............................................................15-1 Rgles .......................................................................................................................15-2 Blocs terminaux des rgles lexicales ........................................................................15-5 Caractres de mise en forme, sparateurs et oprations.........................................15-7 Mots-cls et identificateurs prdfinis ..................................................................... 15-10 Identificateurs d'oprande et mots-cls de bloc......................................................15-14 Prsentation des blocs non terminaux ....................................................................15-16 Prsentation des symboles .....................................................................................15-16 Identificateurs ..........................................................................................................15-17 Attribution de noms dans S7-SCL...........................................................................15-18 Constantes et drapeaux prdfinis .........................................................................15-20 Rgles lexicales ......................................................................................................15-21 Prsentation des rgles lexicales............................................................................15-21 Dsignations............................................................................................................15-21 Constantes ..............................................................................................................15-23 Adressage absolu....................................................................................................15-29 Commentaires .........................................................................................................15-31 Attributs de bloc.......................................................................................................15-32 Options du compilateur ...........................................................................................15-33 Rgles syntaxiques .................................................................................................15-34 Prsentation des rgles syntaxiques ......................................................................15-34 Organisation des sources S7-SCL..........................................................................15-35 Composition des sections de dclaration................................................................15-37 Types de donnes dans S7-SCL ............................................................................15-42 Section des instructions ..........................................................................................15-45 Affectations de valeur..............................................................................................15-47 Appel de fonctions et de blocs fonctionnels ............................................................15-50 Instructions de contrle ...........................................................................................15-52

16

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

Glossaire Index

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

xv

Sommaire

xvi

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

Prsentation du produit

1.1

Domaine d'application de S7-SCL


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

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

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

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

1-1

Prsentation du produit

1.2

Fonctionnement de S7-SCL

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

OB

FC

FB

DB Blocs STEP 7

UDT

SFC

SFB

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

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

1-2

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

Prsentation du produit

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

SCL pour S7-300/400

Editeur

Compilateur squentiel

Dbogueur

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

1-3

Prsentation du produit

1.3

Fonctions offertes par S7-SCL


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

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

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

Elments de langage issus de la programmation de langages volus


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

Grande lisibilit du programme


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

1-4

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

Prsentation du produit

Dbogueur du niveau de langage volu


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

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

1-5

Prsentation du produit

1.4

Nouveauts dans la version V5.3 SP1

Extension des langages


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

Paramtres du compilateur dans la source


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

Fonctions de test tendues


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

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

Fonction de recherche tendue


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

Positionnement de signets dans le texte source


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

1-6

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

Prsentation du produit

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


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

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

1-7

Prsentation du produit

1-8

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

Installation

2.1
2.1.1

Automation License Manager


Licence d'utilisation avec Automation License Manager

Automation License Manager


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

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

Certificate of License (CoL)


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

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

2-1

Installation

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

Nota

Vous avez galement la possibilit d'utiliser le logiciel de base de S7-SCL sans "License Key" pour en dcouvrir l'interface utilisateur et les fonctionnalits. L'utilisation sans restrictions, conforme aux dclarations de droits de licence, n'est cependant autorise et possible que lorsque la "License Key" est installe. Si vous n'avez pas install de "License Key", vous tes sollicit intervalles rguliers de raliser l'installation.

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

2-2

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

Installation

Types de licences
Pour les produits logiciels de Siemens AG, il existe les types suivants de licences orientes application. Le comportement du logiciel est dtermin par les diverses "License Keys" correspondant ces types de licences. Le type d'utilisation est dfini par le "Certificate of License" respectif.
Type de licence Single License Floating License Trial License Description L'utilisation du logiciel est autorise pour une dure illimite sur un ordinateur quelconque. L'utilisation du logiciel est autorise pour une dure illimite sur un rseau (utilisation " distance"). L'utilisation du logiciel est restreinte : Rental License

une validit de 14 jours au maximum, un nombre de jours dfini partir de la premire utilisation, l'utilisation pour test et validation ( l'exclusion de toute responsabilit).

L'utilisation du logiciel est restreinte : une validit de 50 jours au maximum un nombre donn d'heures d'utilisation

Upgrade License

Une mise niveau peut tre ncessaire en raison d'exigences spcifiques de l'tat du systme : Une licence de mise niveau permet de transformer une licence d'une "ancienne" version x en une licence de version >x+.... Une mise niveau peut p. ex. tre requise en raison d'extension des capacits.

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

2-3

Installation

2.1.2

Installation de Automation License Manager


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

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

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


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

Nota

Vous avez galement la possibilit d'utiliser le logiciel de base sans "License Key" pour en dcouvrir l'interface utilisateur et les fonctionnalits. L'utilisation sans restrictions, conforme aux dclarations de droits de licence, n'est cependant autorise et possible que lorsque la "License Key" est installe. Si vous n'avez pas install de "License Key", vous tes sollicit intervalles rguliers de raliser l'installation.

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

Nota

Les "License Keys" sont uniquement fonctionnelles sous Windows 2000/XP si elles se trouvent sur un disque dur possdant des droits d'accs en criture. Les "Floating Licenses" peuvent galement tre utilises via un rseau, c'est--dire " distance".

2-4

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

Installation

2.1.3

Rgles d'utilisation des License Keys

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

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

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

2-5

Installation

2.2
2.2.1

Installation
Environnement requis

Environnement logiciel requis


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

Environnement matriel requis


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

2.2.2

Installation de S7-SCL

Dmarrage du programme d'installation


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

Installation de "License Keys"


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

2-6

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

Dveloppement d'un programme S7-SCL

3.1

Bienvenue dans l'exemple pour dbutants "Saisie de valeurs de mesure"

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

Elments de langage S7-SCL employs


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

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

Fonctions de test disponibles


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

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

3-1

Dveloppement d'un programme S7-SCL

3.2

Enonc du problme

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

Saisie des valeurs de mesure


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

Traitement des valeurs de mesure


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

Valeur de mesure

Commutateur de tri

1 1 1 1 1 1 1 1

255
Racine carre Carr

255 127 63 31 15 7 3 1 Saisie des valeurs de mesure

1 3 7 15 31 63 127 255 Tri des valeurs de mesure


Calculs

1 2 3 4 6 8 11 16

1 9 49 225 961 3969 16129


Dbordement haut

Calcul des rsultats

3-2

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

Dveloppement d'un programme S7-SCL

Slection pour les sorties


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

x=Evaluation du front

0
Racine carre ou carr

1
Valeur de mesure ou rsultat

Valeur de mesure

Racine carre

Carr

1 3 7 15 31 63 127 255 Valeurs tries


Inverseur

1 Adressage de la sortie 2 3 4 6 8 11 16

1 9 49 225 961 3969 16129


Dbordement haut

Slection de la sortie

Rsultats

Sortie des donnes :


Affichage sur le module de sortie

4
Sortie

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

3-3

Dveloppement d'un programme S7-SCL

3.3

Composition d'un programme structur avec S7-SCL

Types de bloc
Un programme S7-SCL structur permet de rsoudre au mieux le problme pos. Un tel programme est de construction modulaire, c'est--dire divis en blocs chargs chacun d'une tche partielle bien dtermine. Comme dans les langages de programmation de STEP 7, vous disposez dans S7-SCL des types de bloc suivants.
Les blocs d'organisation constituent l'interface entre le systme d'exploitation de la CPU S7 et le programme utilisateur. C'est ici qu'est dfini l'ordre d'excution des blocs du programme utilisateur. Les blocs fonctionnels sont des blocs de code donnes statiques. Le FB disposant d'une mmoire, il est possible d'accder ses paramtres (par ex. des sorties) depuis n'importe quelle position du programme utilisateur. Les fonctions sont des blocs de code sans mmoire. De ce fait, il faut que les valeurs calcules soient traites aussitt aprs l'appel de la fonction. Les blocs de donnes sont des zones servant mmoriser les donnes utilisateur. On distingue les DB globaux auxquels tous les blocs de code ont accs et les DB d'instance qui sont associs un appel de FB dtermin. Les types de donn es utilisateur sont des types complexes que vous dfinissez vous-mme au besoin et qui sont rutilisables. Ainsi, un type de donnes utilisateur peut servir gnrer plusieurs blocs de donnes de mme structure. Les UDT s'emploient comme des blocs.

OB

FB

Blocs STEP 7

FC

DB

UDT

3-4

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

Dveloppement d'un programme S7-SCL

Rangement des blocs dans des sources S7-SCL


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

Plusieurs sources pour un programme


Source SCL pour OB1 Source SCL pour FC2 Source SCL pour FB22

. FB22 . . . FC2 . . . OB1 .


Source SCL

FB22 FC2 OB1


DB D'instance

Dossier Blocs Hors ligne

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

3-5

Dveloppement d'un programme S7-SCL

3.4

Dfinition des tches partielles

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

CYCLE Bloc d'organisation (OB)

SAISIE Bloc fonctionnel (FB) Saisie des valeurs de mesure

CALCUL Bloc fonctionnel (FB)

Entre des donnes Appel Cyclique Sortie des donnes

Tri des valeurs de mesure

SQRT (racine carre) et CARRE Fonctions (FC)

Adressage et slection de la sortie

Calcul des rsultats

Racine carre, carr

SAISIE_DONNEES Bloc de donnes (DB)

Enregistrement des donnes

Sens de dplacement du programme

Sens de dPlacement des donnes

3-6

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

Dveloppement d'un programme S7-SCL

Choix et affectation des types de bloc possibles


Les diffrents blocs ont t choisis d'aprs les critres suivants :
Fonction Un programme utilisateur ne peut tre dclench que dans un OB. Les valeurs de mesure devant tre saisies cycliquement, il nous faut un OB d'appel cyclique (OB1). Une partie du traitement - Entre des donnes et Sortie des donnes - sera programme dans l'OB. Pour la tche partielle Saisie des valeurs de mesure, il nous faut un bloc mmoire, donc un FB, puisque certaines donnes locales (la mmoire circulante, par exemple) doivent tre conserves d'un cycle de programme au suivant. Le lieu propre l'Enregistrement des donnes (mmoire) est le bloc de donnes d'instance SAISIE_DONNEES. Le mme FB peut encore se charger de la tche partielle Adressage et slection de la sortie, puisqu'il dispose des donnes requises. Dans le choix du type de bloc qui assumera les tches partielles Tri des valeurs de mesure et Calcul des rsultats, il faut tenir compte du fait qu'une mmoire tampon de sortie doit tre cre qui contiendra, pour chaque valeur de mesure, la racine carre et le carr rsultant des calculs. Seul un FB entre en ligne de compte. Comme il est appel par un FB de rang suprieur, il n'a pas besoin de DB en propre. Ses donnes d'instance peuvent tre stockes dans le bloc de donnes d'instance du bloc appelant. Nom de bloc OB "CYCLE"

FB "SAISIE"

FB "CALCUL"

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

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

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

3-7

Dveloppement d'un programme S7-SCL

3.5

Dfinition des interfaces entre blocs

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

Paramtres de sortie

Paramtres d'entre/sortie

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

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

FB SAISIE
Nom de paramtre Entree_val_mesure nouv_val nouv_tri choix_fonction Selection nouv_selection Sortie_resultat Sortie_val_mesure Type de donnes INT BOOL BOOL BOOL WORD BOOL DWORD DWORD Type de dclaration VAR_INPUT VAR_INPUT VAR_INPUT VAR_INPUT VAR_INPUT VAR_INPUT VAR_OUTPUT VAR_OUTPUT Description Valeur de mesure Commutateur pour prendre en charge la valeur de mesure dans la mmoire circulante Commutateur pour trier et exploiter les valeurs de mesure Inverseur pour choisir la racine carre ou le carr Codage pour slectionner la valeur de sortie Commutateur pour valider le codage Sortie du rsultat calcul Sortie de la valeur de mesure correspondante

3-8

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

Dveloppement d'un programme S7-SCL

FB CALCUL
Le FB SAISIE appelle le FB CALCUL. Les deux FB ont comme donnes communes le tableau de valeurs de mesure trier. Il faut donc dclarer ce tableau comme paramtre d'entre/sortie. Un tableau de structures est cr en tant que paramtre d'entre pour les rsultats du calcul que sont la racine carre et le carr. Voici les paramtres formels :
Nom Memoire_tri Memoire_calcul Type de donnes Type de dclaration Description Tableau des valeurs de mesure, correspond la mmoire circulante Tableau pour les rsultats : stucture avec les composants "racine_carree" et "carre" de type INT

ARRAY[..] OF VAR_IN_OUT REAL ARRAY[..] OF VAR_OUTPUT STRUCT

SQRT et CARRE
Ces fonctions sont appeles par CALCUL. Elles ncessitent une valeur d'entre et fournissent le rsultat en tant que valeur de la fonction.
Nom Valeur SQRT Valeur CARRE Type de donnes REAL REAL INT INT Type de dclaration VAR_INPUT valeur de la fonction VAR_INPUT Valeur de la fonction Description Entre pour SQRT Racine carre de la valeur d'entre Entre pour CARRE Carr de la valeur d'entre

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

3-9

Dveloppement d'un programme S7-SCL

3.6

Dfinition de l'interface d'entre/sortie


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

Systme d'automatisation

Octet 1

Octet 5

Module TOR d'entre

Module TOR de sortie

Module d'entre

Octet 0

E 0.3 E 0.4
0 1 2 3 4 5 6 7 07 Validation de la valeur de mesure Dclenchement du tri et du calcul Choix du rsultat : racine carre ou carr Slection sortie : valeur de mesure ou rsultat Codage, bit 0 Codage, bit 1 Codage, bit 2 Validation du codage

Octet d'entre : valeur de mesure

Octet 1 Module de sortie Octet 4

0 1 2 3 4 5 6 7

07

Octet de poids fort du mot de sortie (bits 8 15), requis seulement pour l'lvation au carr, sinon 0.

0 1 2 3 4 5 6

07

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

Octet 5

3-10

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

Dveloppement d'un programme S7-SCL

3.7

Dfinition de l'ordre des blocs dans la source


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

FC CARRE appelle FB CALCUL appelle FB SAISIE appelle OB CYCLE

3.8

Dfinition des mnmoniques


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

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

3-11

Dveloppement d'un programme S7-SCL

3.9
3.9.1

Cration de la fontion CARRE


Section des instructions de la fonction CARRE

Section des instructions


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

3-12

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

Dveloppement d'un programme S7-SCL

3.10
3.10.1

Cration du FB CALCUL
Organigramme de EXPLOITER
Cette figure reprsente l'algorithme sous forme d'organigramme.
CALCUL Bloc fonctionnel Dbut de linstruction REPEAT Dbut

changer := FALSE I := LIMITE

I signifie index

Dbut de linstruction FOR I >= 1 ? oui

non

mmoire_tri [I-1] > mmoire_tri [I] ? non

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

ECHANGER = TRUE

Fin de linstruction FOR Fin de linstruction REPEAT TRUE

I := I-1

changer ? FALSE I := 0

Dbut de linstruction FOR

I <= LIMITE ?

non

oui SQRT CARRE Fin de linstruction FOR Entrer les rsultats dans le tableau structur des rsultats. Entrer les rsultats dans le tableau structur des rsultats.

I := I+1

Fin

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

3-13

Dveloppement d'un programme S7-SCL

3.10.2 Section de dclaration du FB CALCUL

Composition de la section de dclaration


La section de dclaration de ce bloc se compose des blocs de dclaration suivants : Dclaration des constantes Paramtres d'entre/sortie Paramtres de sortie Dclaration des variables temporaires CONST LIMITE := 7; END_CONST VAR_IN_OUT memoire_tri END_VAR entre CONST et END_CONST, entre VAR_IN_OUT et END_VAR, entre VAR_OUTPUT et END_VAR, entre VAR_TEMP et END_VAR.

: ARRAY[0..LIMITE] OF INT;

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

3-14

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

Dveloppement d'un programme S7-SCL

3.10.3 Section des instructions du FB CALCUL

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

mmoire_tri valeurs_mesure mmoire_calcul

CALCUL

Cette interface reprsente le noyau de l'change de donnes servant au traitement des valeurs de mesure. Les valeurs sont enregistres dans le bloc de donnes d'instance SAISIE_DONNEES, puisqu'une instance locale a t cre pour le FB CALCUL dans le FB SAISIE appelant.

Section des instructions


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

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

3-15

Dveloppement d'un programme S7-SCL

Section des instructions du FB CALCUL


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

3-16

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

Dveloppement d'un programme S7-SCL

3.11

Cration du FB SAISIE

3.11.1 Organigramme de SAISIR


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

Modifier nouvelle valeur ? non

oui Inscrire valeur de mesure dans mmoire circulante, recalculer lindex La mmoire circulante est ralise avec lopration MOD : lorsque la limite est atteinte, elle recommence au dbut.

Modifier nouveau tri ? non

oui Trier la mmoire circulante et effectuer les calculs (crer cet effet le tableau des rsultats).

CALCUL

Reprise des rsultats des calculs dans le tableau des rsultats

charger depuis le bloc de donnes dinstance

Modifier nouveau code ? non

oui Evaluation du codage et dtermination de ladresse de sortie Dabord dcaler les bits non significatifs vers le bord droit, puis masquer les places inutiles laide de AND

Choix fonction ?
FALSE

TRUE

Charger rsultat du calcul de la racine carre

Charger rsultat du calcul du cadre

Charger valeur de mesure

Fin

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

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

3-17

Dveloppement d'un programme S7-SCL

3.11.2 Section de dclaration du FB SAISIE

Composition de la section de dclaration


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

3-18

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

Dveloppement d'un programme S7-SCL

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

Initialisation de variables
Notez les valeurs initiales qui sont crites dans les variables lors de l'initialisation du bloc (aprs son chargement dans la CPU). L'instance locale du FB CALCUL est galement dclare dans la section de dclaration "VAR, END_VAR". Ce nom sera utilis plus tard pour l'appel et l'accs aux paramtres de sortie. L'instance globale SAISIE_DONNEES sert de mmoire de donnes.
Nom Valeurs_mesure Type de donnes Valeur initiale ARRAY [..] OF INT 8(0) Description Mmoire circulante pour les valeurs de mesure Tableau de structures avec les composants "racine_carree" et "carre" de type INT Pointeur de la mmoire circulante dsignant l'endroit o la valeur de mesure suivante est crite Valeur prcdente pour la prise en charge de valeur de mesure avec "nouv_val" Valeur prcdente pour le tri avec "nouv_tri" Valeur prcdente pour la validation du codage avec "nouv_selection" Adresse pour la sortie de valeur de mesure ou de rsultat Instance locale du FB CALCUL

Memoire_resultats ARRAY [..] OF STRUCT Pointeur INT

anc_val anc_tri anc_selection Adresse Instance_calcul

BOOL BOOL BOOL INT Instance locale

FALSE FALSE FALSE 0 -

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

3-19

Dveloppement d'un programme S7-SCL

3.11.3 Section des instructions du FB SAISIE

Composition de la section des instructions


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

3-20

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

Dveloppement d'un programme S7-SCL

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

Commutateur sur module

Mot dans mmoire

Vers SHR de 12 places

Vers AND, Masque 0007

Commutateur pour valeur de codage Commutateur de codage

0 1 2 3 4 5 6 7 Octet 0 0 1 2 3 4 5 6 7 Octet 1

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 EW0

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

adresse

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

3-21

Dveloppement d'un programme S7-SCL

Section des instructions


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

3-22

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

Dveloppement d'un programme S7-SCL

3.12

Cration du bloc d'organisation CYCLE

Tches de l'OB CYCLE


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

Code du programme de l'OB CYCLE


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

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

3-23

Dveloppement d'un programme S7-SCL

Conversion du type de donnes


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

3-24

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

Dveloppement d'un programme S7-SCL

3.13

Donnes de test

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

Etapes du test
Effectuez maintenant le test en vous conformant aux tapes dcrites dans le tableau ciaprs.
Test Action 1 Rglez le codage sur "111" (E0.4, E0.5 et E0.6) et validez-le l'aide du commutateur de codage (E0.7). 2 Faites indiquer la racine carre correspondante en positionnant le commutateur de sortie (E0.3) sur "1". 3 Faites indiquer le carr correspondant en positionnant le commutateur de fonction (E0.2) sur "1". 4a Remettez le commutateur de sortie (E0.3) "0". Consquence Toutes les sorties du module de sortie (octet de poids faible) sont actives et les diodes s'allument. Les indications la sortie quivalent la valeur binaire "10000" (=16). 15 indicateurs s'allument la sortie. Ceci signale un dbordement, car 255 x 255 est une valeur trop leve pour la plage des entiers. La valeur de mesure est nouveau indique : tous les indicateurs des sorties de l'octet de poids faible du module de sortie sont "1". Rien ne change encore sur le module de sortie.

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

La sortie indique 0, c'est--dire qu'aucun des indicateurs ne s'allume.

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

La valeur de sortie 9, c'est--dire la valeur binaire "1001" est indique.

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

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

3-25

Dveloppement d'un programme S7-SCL

Test complmentaire
Les tableaux ci-aprs expliquent les commutateurs du module d'entre et proposent des modles de test pour la racine carre et le carr qui vous aideront dfinir vos propres tapes de test. L'entre est effectue au moyen des commutateurs : les 8 du haut permettent de commander le programme, les 8 du bas de fournir une valeur de mesure. La sortie est effectue au moyen d'indicateurs : le groupe du haut indique l'octet de sortie de poids fort, celui du bas l'octet de poids faible.
Commutateurs de Nom commande Voie 0 Voie 1 Voie 2 Voie 3 Voie 4 Voie 5 Voie 6 Voie 7 Commutateur de saisie Commutateur de tri Explication Inversion pour prise en charge de la valeur de mesure Inversion pour tri/exploitation

Commutateur de fonction A gauche ("0") : racine carre, A droite ("1") : carr Commutateur de sortie Codage Codage Codage Commutateur de codage A gauche ("0") : valeur de mesure, A droite ("1") : rsultat Adresse de sortie, bit 0 Adresse de sortie, bit 1 Adresse de sortie, bit 2 Inversion pour validation du codage

Le tableau suivant contient 8 valeurs de mesure dj tries titre d'exemple. Entrez les valeurs dans n'importe quel ordre. Pour cela, rglez la combinaison binaire respective et prenez la valeur en charge en inversant le commutateur de saisie. Une fois toutes les valeurs saisies, dclenchez le tri et l'exploitation en inversant le commutateur de tri. Aprs cela, vous pouvez prendre connaissance des valeurs de mesure tries ou des rsultats, racine carre ou carr.
Valeur de mesure 0000 0001 = 0000 0011 = 0000 0111 = 1 3 7 Racine carre 0, 0000 0001 = 1 0, 0000 0010 = 2 0, 0000 0011 = 3 0, 0000 0100 = 4 0, 0000 0110 = 6 0, 0000 1000 = 8 0, 0000 1011 = 11 0, 0001 0000 = 16 Carr 0000 0000, 0000 0001 = 0000 0000, 0000 1001 = 0000 0000, 0011 0001 = 0000 0000, 1110 0001 = 0000 0011, 1100 0001 = 1 9 49 225 961

0000 1111 = 15 0001 1111 = 31 0011 1111 = 63 0111 1111 = 127 1111 1111 = 255

0000 1111, 1000 0001 = 3969 0011 1111, 0000 0001 = 16129 0111 111, 1111 1111 = indication de dbordement !

3-26

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

Utilisation de S7-SCL

4.1

Dmarrer le logiciel S7-SCL

Dmarrage depuis l'interface de Windows


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

Dmarrage depuis SIMATIC Manager


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

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

4-1

Utilisation de S7-SCL

4.2

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

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

4-2

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

Utilisation de S7-SCL

4.3

Personnalisation de l'interface utilisateur

Personalisation de l'diteur
Pour adapter l'diteur vos besoins, choisissez la commande Outils > Paramtres et cliquez sur l'onglet "Editeur" dans la bote de dialogue "Paramtres". Vous pouvez y faire les choix suivants :
Options de l'onglet "Editeur" Police Largeur tabulateurs Numros de ligne Enregistrer avant de compiler Demande de confirmation Signification Dtermine la police pour tout le texte source. Dtermine la largeur de colonne des tabulations. Affiche les numros au dbut des lignes. Propose d'enregistrer la source avant de la compiler. Demande confirmation avant d'enregistrer.

Personnalisation de la police et de la couleur des caractres


Pour modifier la police et la couleur utilises pour les diffrents lments de langage, choisissez la commande Outils > Paramtres et cliquez sur l'onglet "Format" dans la bote de dialogue "Paramtres". Vous pouvez y faire les choix suivants :
Options de l'onglet "Format" Mots-cls en majuscules Indentation aprs mots-cls Signification Ecrit en majuscules la saisie les mots-cls de S7-SCL tels que FOR, WHILE, FUNCTION_BLOCK, VAR ou END_VAR. Dcale la saisie les lignes des diffrentes sections de dclaration et celles des instructions de contrle IF, CASE, FOR, WHILE et REPEAT. Aprs un changement de ligne, dcale automatiquement la nouvelle ligne de la mme valeur que la ligne prcdente. Cette option ne s'applique qu'aux nouvelles lignes saisies. Dtermine le style et la couleur utiliss pour les diffrents lments de langage.

Indentation automatique

Style/Couleur

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

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


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

Fentre "Erreurs et avertissements"


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

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

4-3

Utilisation de S7-SCL

4.4
4.4.1

Cration et manipulation d'une source S7-SCL


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

Structure d'un programme S7 dans SIMATIC Manager


Les sources que vous crez avec S7-SCL peuvent tre ranges comme suit dans la structure d'un programme S7 :
Programme S7 Blocs Bloc (par exemple, FB1, OB1) Source (par exemple, source SCL)

Sources

Mnmoniques

Procdez de la manire suivante :


1. Ouvrez la bote de dialogue "Nouveau" en cliquant sur l'icne "Nouveau" dans la barre d'outils ou en choisissant la commande Fichier > Nouveau.

2. Dans la bote de dialogue, choisissez un projet, le filtre "Source S7-SCL" et le dossier "Sources" dans le programme S7.

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

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

4-4

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

Utilisation de S7-SCL

4.4.2

Ouvrir une source S7-SCL


Vous pouvez ouvrir une source S7-SCL pour la compiler ou pour l'diter. Procdez de la manire suivante : 1. Ouvrez la bote de dialogue "Ouvrir" en cliquant sur l'icne "Ouvrir" ou en choisissant la commande Fichier > Ouvrir.

2. Dans la bote de dialogue, choisissez le projet souhait, le programme S7 souhait et le dossier Sources correspondant.

3. Slectionnez la source S7-SCL. 4. Cliquez sur le bouton "OK".

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

4.4.3

Fermer une source S7-SCL


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

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

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

4-5

Utilisation de S7-SCL

4.4.4

Ouvrir des blocs


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

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

4.4.5

Dfinir les proprits de l'objet


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

Procdez de la manire suivante :


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

4.4.6

Gnrer des sources S7-SCL avec un diteur standard


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

4-6

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

Utilisation de S7-SCL

4.4.7

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

Protger un bloc a les consquences suivantes :


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

Pour saisir la protection de bloc il faut savoir que :


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

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

4-7

Utilisation de S7-SCL

4.5
4.5.1

Rgles pour les sources S7-SCL


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

4.5.2

Ordre des blocs


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

4-8

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

Utilisation de S7-SCL

4.5.3

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

Mnmoniques locaux et globaux


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

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

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

4-9

Utilisation de S7-SCL

4.6
4.6.1

Editer dans des sources S7-SCL


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

4.6.2

Rtablir une action d'dition


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

4.6.3

Rechercher et remplacer des parties de texte


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

4-10

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

Utilisation de S7-SCL

4.6.4

Slectionner des parties de texte


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

4.6.5

Copier des parties de texte


Cette fonction permet de copier des parties de programme ou des programmes entiers. Le texte copi est mmoris dans le presse-papiers partir duquel vous pouvez l'insrer un autre endroit autant de fois que vous le voulez. Procdez de la manire suivante : 1. Slectionnez la partie de texte copier. 2. Copiez-la en cliquant sur l'icne "Copier" dans la barre d'outils ou en choisissant la commande Edition > Copier.

3. Amenez le curseur l'endroit (dans la mme application ou dans une autre) o vous voulez insrer (coller) la partie de texte. 4. Collez-la en cliquant sur l'icne "Coller" de la barre d'outils ou en choisissant la commande Edition > Coller.

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

4-11

Utilisation de S7-SCL

4.6.6

Couper des parties de texte


Cette fonction permet d'amener le texte slectionn dans le presse-papiers. Habituellement, elle est utilise avec la commande Edition > Coller qui insre le contenu du presse-papiers la position du curseur. Procdez de la manire suivante : 1. Slectionnez la partie de texte couper. 2. Coupez-la en cliquant sur l'icne "Couper" dans la barre d'outils ou en choisissant la commande Edition > Couper.

Nota

Il n'est pas possible de couper la partie de texte slectionne si la commande Edition > Couper n'est pas disponible (affiche sur fond gris). La commande Edition > Coller permet d'insrer la partie de texte coupe un autre endroit (du mme programme ou d'un autre). Le contenu du presse-papiers est conserv jusqu' ce que vous excutiez nouveau l'une des commandes Edition > Couper ou Edition > Copier.

4.6.7

Effacer des parties de texte


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

4-12

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

Utilisation de S7-SCL

4.6.8

Positionner le curseur dans une ligne donne


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

Positionnement dans un numro de ligne prcis


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

Positionnement sur le signet suivant / prcdent


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

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


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

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

4-13

Utilisation de S7-SCL

4.6.9

Indentation des lignes selon la syntaxe


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

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

4-14

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

Utilisation de S7-SCL

4.6.10 Choisir le style et la couleur des caractres


Employez des couleurs et des styles diffrents pour distinguer les lments de langage dans votre source S7-SCL. Elle en sera plus lisible et aura un aspect plus professionnel. Vous disposez des fonctions suivantes pour influencer la prsentation du texte source : Mots-cls en majuscules Si vous activez cette fonction, les mots-cls dfinis tels que FOR, WHILE, FUNCTION_BLOCK, VAR ou END_VAR seront crits en majuscules. Choix du style et de la couleur Il y a dj des styles et des couleurs par dfaut pour les diffrents lments de langage tels qu'oprations, commentaires ou constantes. Vous pouvez les modifier votre convenance. Voici les couleurs par dfaut :
Couleur Bleu Elment de langage Mot-cl Type de donnes prdfini Identificateur prdfini Fonction standard Ocre Rose Bleu-vert Violet Noir Opration Constante Commentaire Exemple ORGANIZATION_BLOCK INT ENO BOOL_TO_WORD NOT TRUE //... ou (*...*)

Mnmonique global (table des mnmoniques) crit "Moteur" entre guillemets Texte normal Variable

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

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

4-15

Utilisation de S7-SCL

4.6.11

Positionnement de signets dans le textes source


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

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

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

Naviguation entre les diffrents signets


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

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

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

4-16

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

Utilisation de S7-SCL

4.6.12 Insrer des modles 4.6.12.1 Insrer des modles de bloc


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

4.6.12.2 Insrer des appels de bloc


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

4.6.12.3 Insrer des modles de commentaire


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

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

4-17

Utilisation de S7-SCL

4.6.12.4 Insrer des modles de paramtre


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

4.6.12.5 Insrer des structures de contrle


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

4-18

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

Utilisation de S7-SCL

4.7
4.7.1

Compiler und programme S7-SCL


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

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

4-19

Utilisation de S7-SCL

4.7.2

Choisir les options de compilation


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

Options de l'onglet "Compilateur"


Gnrer code objet Cette option vous permet d'indiquer si vous voulez gnrer ou pas un code excutable. Une compilation sans cette option sert simplement vrifier la syntaxe. Si vous cochez cette option, les blocs gnrs seront optimiss en ce qui concerne la place mmoire requise et le temps d'excution dans l'automate programmable. Il est conseill de toujours la cocher, puisqu'il n'en rsulte aucun inconvnient qui limiterait les fonctionnalits du bloc. Si vous cochez cette option, les indices des tableaux seront contrls durant l'excution du programme S7 afin de garantir qu'ils se trouvent bien dans la plage autorise par la dclaration du tableau (ARRAY). Lorsqu'un indice dpasse la plage autorise, le drapeau OK est positionn sur FALSE. Cette option vous permet d'effectuer une mise au point avec le dbogueur aprs que vous avez compil le programme et l'avez charg dans la CPU. Elle augmente toutefois la place mmoire requise par le programme et les temps d'excution dans l'AS. Cette option vous permet d'interroger le drapeau OK dans vos textes sources S7-SCL. Cochez cette option pour pouvoir crire des commentaires imbriqus dans votre source S7-SCL. Vous pouvez rduire ici la longueur standard du type de donnes STRING. Par dfaut, elle est de 254 caractres. La longueur choisie ici concerne tous les paramtres de sortie et d'entre/sortie ainsi que les valeurs de retour des FC. Notez bien qu'elle ne doit pas tre infrieure celle des variables STRING employes dans le programme.

Optimiser code objet

Surveiller limites tableaux

Gnrer infos dbogage

Activer drapeau OK Imbrication de commentaires possible Long. de chane max.

4-20

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

Utilisation de S7-SCL

Options de l'onglet "Cration du bloc"


Ecrasement des blocs Ecrase les blocs existant dj dans le dossier Blocs d'un programme S7 si des blocs de mme nom sont gnrs au cours de la compilation. De mme lors d'un chargement, les blocs de mme nom se trouvant dj dans le systme cible seront crass. Si vous ne cochez pas cette option, vous devrez confirmer un message avant que le bloc soit cras. Les avertissements seront affichs en plus des erreurs aprs une compilation. Les erreurs sont affiches avant les avertissements dans la fentre des avertissements et erreurs Cochez cette option pour que des donnes de rfrence soient gnres automatiquement lorsqu'un bloc est gnr. La commande Outils > Donnes de rfrence vous permet toutefois de gnrer les donnes de rfrence ou de les mettre jour ultrieurement. Cochez cette option pour que l'attribut systme pour paramtre "S7_server" soit pris en compte lors de la gnration d'un bloc. Cet attribut est requis lorsque le paramtre pour la configuration des liaisons ou des messages est significatif. Il contient le numro de liaison ou de message. Notez que cette option prolonge la compilation.

Affichage des avertissements Erreurs avant avertissements Gnration des donnes de rfrence

Prise en compte de l'attribut systme "S7_server"

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

4-21

Utilisation de S7-SCL

4.7.3

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

Procdez de la manire suivante :


1. Enregistrez la source S7-SCL compiler. 2. Pour gnrer un programme excutable, il est absolument ncessaire de cocher l'option "Gnrer code objet" dans l'onglet "Compilateur" de la bote de dialogue "Paramtres". 3. Modifiez ventuellement d'autres options de compilation. 4. Assurez-vous que la table de mnmoniques correspondante se trouve bien dans le mme rpertoire de programme. 5. Il y a plusieurs faons de dmarrer la compilation : La commande Fichier > Compiler compile la source dans sa totalit. La commande Fichier > Compilation partielle ouvre une bote de dialogue permettant de slectionner certains blocs pour les compiler.

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

4.7.4

Crer un fichier d'informations compilation


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

Procdez de la manire suivante :


1. Ouvrez la bote de dialogue "Nouveau" en choisissant la commande Fichier > Nouveau. 2. Slectionnez dans cette bote de dialogue un dossier Sources dans un programme S7 et le type d'objet "Fichier d'informations compilation".

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

4-22

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

Utilisation de S7-SCL

4.7.5

Eliminer les erreurs aprs la compilation


Toutes les erreurs et tous les avertissements relatifs la syntaxe, mis lors de la compilation, s'affichent aprs l'opration dans la fentre "Erreurs et avertissements". L'apparition d'une erreur empche la gnration du bloc concern, tandis que celle d'un avertissement n'empche pas la gnration d'un bloc excutable. L'excution dans l'AS peut toutefois se rvler errone. Procdez de la manire suivante pour liminer une erreur : 1. Slectionnez l'erreur et appuyez sur la touche F1 pour appeler une description de l'erreur et une solution pour l'liminer. 2. Si le message indique un numro de ligne (Lxx) et de colonne (Cxx), vous pouvez localiser la position errone du texte source en cliquant sur le message d'erreur dans la fentre "Erreurs et avertissements", puis en appelant le menu contextuel avec le bouton droit de la souris et en y choisissant la commande Afficher l'erreur ; en cliquant deux fois sur le message d'erreur pour faire sauter le curseur la position signale (ligne, colonne).

3. Renseignez-vous sur la syntaxe correcte dans la description du langage S7-SCL. 4. Rectifiez le texte source en consquence. 5. Enregistrez la source. 6. Compilez-la de nouveau.

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

4-23

Utilisation de S7-SCL

4.8
4.8.1

Enregistrer et imprimer une source S7-SCL


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

4.8.2

Choisir la taille de papier


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

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

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

4-24

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

Utilisation de S7-SCL

4.8.3

Imprimer une source S7-SCL


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

Procdez de la manire suivante :


1. Activez la fentre de travail de la source S7-SCL dont vous souhaitez imprimer le contenu. 2. Ouvrez la bote de dialogue "Imprimer" en cliquant sur l'icne "Imprimer" ou en choisissant la commande Fichier > Imprimer.

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

4.8.4

Choisir les options d'impression


Vous disposez des fonctions suivantes pour influencer la prsentation du texte source l'impression : Pagination chaque dbut de bloc/fin de bloc Lorsque cette fonction est active, chaque bloc commence sur une nouvelle page ou se termine par une nouvelle page l'impression. Numros de ligne Lorsque cette fonction est active, le numro est imprim au dbut de chaque ligne. Impression en couleur Lorsque cette fonction est active, les couleurs utilises dans la source sont imprimes. Police d'impression La police Courier New de taille 8 est prvue par dfaut pour l'ensemble du texte. Elle fournit des rsultats d'impression optimums. Style Vous pouvez choisir des styles de caractres diffrents pour les divers lments de langage. Il s'agit des lments individuels suivants :
Elment de langage Texte normal Mot-cl Identificateur d'un type de donnes prdfini Identificateur prdfini Identificateur d'une fonction standard Opration Constante Bloc de commentaire ORGANIZATION_BLOCK INT ENO BOOL_TO_WORD NOT TRUE (* *) Exemple

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

4-25

Utilisation de S7-SCL

Elment de langage Ligne de commentaire Mnmonique global (table des mnmoniques) crit entre guillemets

Exemple //... "Moteur"

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

4-26

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

Utilisation de S7-SCL

4.9
4.9.1

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

Attention

La CPU est remise zro. Toutes les donnes utilisateur sont effaces. La CPU suspend toutes les liaisons existantes. Lorsqu'une carte mmoire est enfiche, la CPU copie son contenu aprs l'effacement gnral dans la mmoire de chargement interne.

4.9.2

Charger des programmes utilisateur dans la CPU

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

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

4-27

Utilisation de S7-SCL

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

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

4-28

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

Utilisation de S7-SCL

4.10
4.10.1

Test des programmes


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

Fonctions de test de S7-SCL


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

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

Conditions requises pour le test


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

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

4-29

Utilisation de S7-SCL

4.10.2 Informations sur la fonction de test "Visualiser"


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

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

Modes de test
L'interrogation des informations de test provoque le plus souvent un allongement des temps de cycle. S7-SCL propose deux modes diffrents qui permettent d'influencer cet allongement.
Mode de test Test Explication En mode test, la zone de visualisation n'est limite que par les performances de la CPU connecte. Toutes les fonctions de test sont utilisables sans restriction. Le temps de cycle de la CPU peut s'en trouver considrablement allong, tant donn que l'tat des instructions dans les boucles programmes, par exemple, est dtermin pour chaque passage. En mode processus, le dbogueur de S7-SCL limite la zone de visualisation maximale de faon que les temps de cycle raliss au cours du test ne dpassent pas ou trs peu les temps d'excution rels du processus.

Processus

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

4-30

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

Utilisation de S7-SCL

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


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

Fonctions de pas pas


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

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

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

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

4-31

Utilisation de S7-SCL

4.10.4

Marche suivre pour la visualisation

4.10.4.1 Marche suivre pour la visualisation


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

5. Assurez-vous qu'aucun tat dangereux ne risquent de se produire. 6. Choisissez la commande Test > Visualiser. 7. Dsactivez la commande Test > Visualiser pour interrompre le test. 8. Choisissez la commande Test > Mettre fin au test pour mettre fin ce dernier.

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

Adaptation de la fonction de visualisation


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

4-32

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

Utilisation de S7-SCL

4.10.4.2 Dfinition d'un environnement d'appel des blocs


Environnement d'appel
Afin de dfinir l'environnement d'appel de manire encore plus prcise, vous avez la possibilit de dfinir un environnement d'appel des blocs visualiser. Vous spcifiez ainsi qu'un bloc est uniquement visualis dans l'une des conditions suivantes :
Condition Le bloc est appel par un certain bloc de niveau suprieur. Le bloc est appel avec un certain bloc de donnes. Possibilit de slection Chemin d'appel Bloc de donnes global et / ou bloc de donnes d'instance

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


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

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


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

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

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

4-33

Utilisation de S7-SCL

4.10.5

Marche suivre pour le test avec points d'arrt

4.10.5.1 Dfinir des points d'arrt


Procdez de la manire suivante pour dfinir des points d'arrt. 1. Ouvrez la source tester. 2. Affichez la barre de points d'arrt au moyen de la commande Affichage > Barre de points d'arrt. 3. Positionnez le curseur l'endroit qui vous convient et choisissez la commande Test > Dfinir un point d'arrt ou cliquez sur l'icne correspondante de la barre de points d'arrt. Les points d'arrt sont reprsents par un cercle rouge au bord gauche de la fentre. 4. La commande Test > Editer les points d'arrt permet de dfinir un contexte d'appel en fonction duquel le point d'arrt sera activ. si le bloc dans lequel il se trouve est appel par un bloc de niveau suprieur donn et (ou) s'il est appel avec un bloc de donnes/bloc de donnes d'instance dfini.

4.10.5.2 Mettre fin au test avec points d'arrt


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

4.10.5.3 Activer, dsactiver et effacer des points d'arrt


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

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

4-34

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

Utilisation de S7-SCL

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


Environnement d'appel
En dfinissant un environnement d'appel, vous spcifiez qu'un point d'arrt est uniquement valable dans l'une des conditions suivantes :
Condition Le bloc dans lequel se trouve le point d'arrt est appel par un certain bloc de niveau suprieur. Le bloc dans lequel se trouve le point d'arrt est appel avec un certain bloc de donnes. Possibilit de slection Chemin d'appel Bloc de donnes global et / ou bloc de donnes d'instance

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


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

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


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

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

4-35

Utilisation de S7-SCL

4.10.5.5 Test en pas pas


Procdez de la manire suivante : 1. Dfinissez un point d'arrt avant la ligne d'instruction partir de laquelle vous voulez tester le programme en pas pas. 2. Choisissez la commande Test > Activer les points d'arrt. 3. Excutez le programme jusqu' ce point d'arrt. 4. Pour excuter l'instruction suivante, choisissez la commande Test > Instruction suivante. S'il s'agit d'un appel de bloc, il est alors trait et il est suivi d'un saut la premire instruction lui succdant. La commande Test > Excuter l'appel permet de sauter dans le bloc. Vous pouvez alors y poursuivre le test en pas pas ou dfinir des points d'arrt. A la fin du bloc, le programme saute l'instruction suivant l'appel de bloc.

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

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


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

Gnration des donnes de rfrence


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

4-36

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

Utilisation de S7-SCL

4.10.6.2 Vrification de la cohrence des blocs


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

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

Procdez de la manire suivante


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

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

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

4-37

Utilisation de S7-SCL

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

4.11
4.11.1

Afficher et modifier les proprits de la CPU


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

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

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


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

4-38

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

Utilisation de S7-SCL

4.11.3

Afficher les donnes de la CPU


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

4.11.4

Lire la mmoire de diagnostic de la CPU


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

4.11.5 Afficher/comprimer la mmoire utilisateur de la CPU


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

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

4-39

Utilisation de S7-SCL

4.11.6 Afficher le temps de cycle de la CPU


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

4.11.7 Afficher l'horodatage de la CPU


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

4.11.8 Afficher les blocs dans la CPU


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

4-40

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

Utilisation de S7-SCL

4.11.9 Affichage des informations sur la communication de la CPU


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

4.11.10 Affichage des piles de la CPU


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

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

4-41

Utilisation de S7-SCL

4-42

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

Notions fondamentales dans S7-SCL

5.1

Interprtation des diagrammes syntaxiques


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

Qu'entend-on par diagramme syntaxique ?


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

Squence
Bloc 3 Bloc 1 Bloc 2 Bloc 4 Bloc 5

Option Itration

Alternative

Le diagramme syntaxique se lit de gauche droite. Il peut comporter : Squence : suite de blocs Option : branche facultative Itration : rptition de branches Alternative : aiguillage.

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

5-1

Notions fondamentales dans S7-SCL

Quelles sont les diffrentes sortes de blocs ?


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

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

Elment compos qui est dcrit par d'autres diagrammes syntaxiques.

Qu'entend-on par libert de format ?


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

Rgle lexicale
Lettre

_ Caractre de soulignement

Lettre

_ Caractre de soulignement

Lettre

Chiffre

Chiffre

Exemples dans lesquels la rgle reprsente est correctement applique : R_REGULATEUR3 _A_TABLEAU _100_3_3_10 Exemples incorrects pour les raisons nommes ci-dessus : 1_1AB RR__20 *#AB

5-2

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

Notions fondamentales dans S7-SCL

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

Variable simple

:=

Constante

Exemples dans lesquels la rgle reprsente est correctement applique : VARIABLE_1 := 100; VARIABLE_2 := 3.2; COMMUTATEUR:=FALSE;

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

5-3

Notions fondamentales dans S7-SCL

5.2

Jeu de caractres

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

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

Nota

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

5-4

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

Notions fondamentales dans S7-SCL

5.3

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

Mots-cls dans S7-SCL


AND ANY ARRAY AT BEGIN BLOCK_DB BLOCK_FB BLOCK_FC BLOCK_SDB BLOCK_SFB BLOCK_SFC BOOL BY BYTE CASE CHAR CONST CONTINUE COUNTER DATA_BLOCK DATE DATE_AND_TIME DINT DIV DO DT DWORD ELSE ELSIF EN END_CASE END_CONST END_DATA_BLOCK END_FOR END_FUNCTION END_FUNCTION_BLOCK END_IF END_LABEL END_TYPE END_ORGANIZATION_BLOCK END_REPEAT END_STRUCT END_VAR END_WHILE ENO EXIT FALSE FOR FUNCTION FUNCTION_BLOCK GOTO IF INT LABEL MOD NIL NOT OF OK OR ORGANIZATION_BLOCK POINTER PROGRAM REAL REPEAT RETURN S5TIME STRING STRUCT THEN TIME TIMER TIME_OF_DAY TO TOD TRUE TYPE VAR VAR_TEMP UNTIL VAR_INPUT VAR_IN_OUT VAR_OUTPUT VOID WHILE WORD XOR Noms des fonctions standard

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

5-5

Notions fondamentales dans S7-SCL

5.4

Identificateur

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

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

Lettre

_ Caractre de soulignement

Lettre

_ Caractre de soulignement

Lettre

Chiffre

Chiffre

Exemples
Voici des exemples d'identificateurs autoriss :
X Somme Noms Rgulateur y12 Temprature Surface Tableau

Voici des identificateurs interdits pour les raisons indiques :


4me Array S Valeur //Le premier caractre doit tre une lettre ou //le caractre de soulignement. //ARRAY est un mot-cl. //Les espaces ne sont pas autoriss //(n'oubliez pas qu'un espace est un caractre).

Nota
Assurez-vous que le nom n'a pas encore t attribu un mot-cl ou un identificateur standard. Nous vous recommandons de choisir des noms univoques et vocateurs qui contribuent l'intelligibilit du texte source.

5-6

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

Notions fondamentales dans S7-SCL

5.5

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

5.6

Dsignation de bloc

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

Rgles
Le tableau suivant donne la liste des mots-cls de bloc classs d'aprs les abrviations allemandes, avec les abrviations anglaises correspondantes. La lettre x correspond un nombre compris entre 0 et 65533 (ou entre 0 et 65535 pour les compteurs et temporisations).
Abrviations allemandes DBx FBx FCx Obx SDBx SFCx SFBx Tx UDTx Zx Abrviations anglaises DBx FBx FCx OBx SDBx SFCx SFBx Tx UDTx Cx Pour dsigner Bloc de donnes (Data Block). La dsignation de bloc DB0 est rserve S7-SCL. Bloc fonctionnel (Function Block) Fonction (Function) Bloc d'organisation (Organization Block) Bloc de donnes systme (System Data Block) Fonction systme (System Function) Bloc fonctionnel systme (System Function-Block) Temporisation (Timer) Type de donnes global ou utilisateur (User defined Data Type) Compteur (Counter)

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

5-7

Notions fondamentales dans S7-SCL

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

Numro

IDENTIFICATEUR

Mnmonique

Exemple
Voici des dsignations autorises : FB10 DB100 T141

5-8

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

Notions fondamentales dans S7-SCL

5.7

Identificateur d'oprande

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

Rgles
Le tableau suivant donne la liste des identificateurs d'oprande classs d'aprs les abrviations allemandes, avec les abrviations anglaises correspondantes. Les identificateurs d'oprande pour blocs de donnes doivent tre indiqus avec le bloc de donnes correspondant.
Abrviations allemandes Ax.y Abx Adx Awx AXx.y Dx.y DBx DDx DWx DXx.y Ex.y Ebx Edx Ewx EXx.y Mx.y MBx.y MDx MWx.y MXx PABx PADx PAWx PEBx PEDx PEWx Abrviations anglaises Qx,y QBx QDx QWx QXx.y Dx.y DBx DDx DWx DXx.y Ix.y IBx IDx IWx IXx.y Mx.y MBx.y MDx MWx MXx PQBx PQDx PQWx PIBx PIDx PIWx Pour adresser Sortie (par la mmoire image) Sortie (par la mmoire image) Sortie (par la mmoire image) Sortie (par la mmoire image) Sortie (par la mmoire image) Bloc de donnes Bloc de donnes Bloc de donnes Bloc de donnes Bloc de donnes Entre (par la mmoire image) Entre (par la mmoire image) Entre (par la mmoire image) Entre (par la mmoire image) Entre (par la mmoire image) Mmento Mmento Mmento Mmento Mmento Sortie (priphrie directe) Sortie (priphrie directe) Sortie (priphrie directe) Entre (priphrie directe) Entre (priphrie directe) Entre (priphrie directe) Type de donnes Bit Octet Double mot Mot Bit Bit Octet Double mot Mot Bit Bit Octet Double mot Mot Bit Bit Octet Double mot Mot Bit Octet Double mot Mot Octet Double mot Mot

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

Exemple
E1.0 MW10 PAW5 DB20.DW3

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

5-9

Notions fondamentales dans S7-SCL

5.8
Rgles

Dsignation de temporisation

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

Numro

IDENTIFICATEUR

Mnmonique

5.9
Rgles

Dsignation de compteur

Il y a plusieurs manires de dsigner un compteur dans S7-SCL. Le numro du compteur peut tre un nombre dcimal entier.
Z Abrviation allemande 'Z' Abrviation anglaise 'C' IDENTIFICATEUR Numro

Mnmonique

5-10

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

Notions fondamentales dans S7-SCL

5.10

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

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

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

123,456 36. 10 20 30

Les virgules sont interdites. La virgule dcimale (reprsente par un point) est interdite dans un nombre entier. Les espaces ne sont pas autoriss.

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

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

5-11

Notions fondamentales dans S7-SCL

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

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

1. 1,000.0 .3333

La virgule dcimale (point) doit figurer entre deux chiffres. Les virgules sont interdites. La virgule dcimale (point) doit figurer entre deux chiffres.

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

3.0E+10 0.3E+11

3.0E10 0.3e11

3e+10 30.0E+9

3E10 30e9

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

3.E+10 8e2.3 .333e-3 30 E10

La virgule dcimale doit figurer entre deux chiffres. L'exposant doit tre un nombre entier. La virgule dcimale doit figurer entre deux chiffres. Les espaces ne sont pas autoriss.

5-12

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

Notions fondamentales dans S7-SCL

5.11

Chane de caractres

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

Rgles
Pour saisir un caractre de mise en forme spcial, une apostrophe ( ' ) ou le caractre $, faites-le prcder du caractre $.
Texte source 'SIGNAL$'ROUGE$'' '50.0$$' 'VALEUR$P' 'REG-$L' 'REGULATEUR$R 'ETAPE$T' Aprs compilation SIGNAL'ROUGE' 50.0$ VALEUR nouvelle page REG-changement de ligne REGULATEUR retour chariot ETAPE tabulation

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

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

5-13

Notions fondamentales dans S7-SCL

5.12

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

Syntaxe :

"

Caractre imprimable

"

5-14

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

Notions fondamentales dans S7-SCL

5.13
Rgles

Bloc de commentaire

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

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

Bloc de commentaire

(*

Caractre

*)

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

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

5-15

Notions fondamentales dans S7-SCL

5.14
Rgles

Ligne de commentaire

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

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

//

CR Retour chariot (carriage return)

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

Nota
Les commentaires commenant par // dans la section de dclaration sont adopts dans l'interface du bloc et peuvent donc s'afficher galement dans l'diteur CONT/LOG/LIST. La liste des caractres imprimables est donne au chapitre "Description du langage". Dans une ligne de commentaire, le couple de caractres "(*" et "*)" n'a pas de signification.

5-16

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

Notions fondamentales dans S7-SCL

5.15

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

Donnes locales
Il s'agit de donnes qui sont dclares dans un bloc de code (FC, FB, OB) et qui ne sont valables que pour celui-ci.
Variables Variables statiques Signification Une variable statique est une variable locale dont la valeur reste inchange durant toutes les excutions du bloc (mmoire du bloc). Elle sert enregistrer les valeurs d'un bloc fonctionnel. Une variable temporaire appartient localement un bloc de code et n'occupe aucune zone de mmoire statique. Sa valeur n'est conserve que durant une excution du bloc. Il n'est pas possible d'accder aux variables temporaires en dehors du bloc dans lequel elles ont t dclares. Il s'agit d'un paramtre formel de bloc fonctionnel ou de fonction. C'est une variable locale qui sert transmettre les paramtres effectifs indiqus l'appel du bloc.

Variables temporaires

Paramtres de bloc

Donnes utilisateur globales


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

Zones de mmoire d'une CPU


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

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

5-17

Notions fondamentales dans S7-SCL

5-18

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

Structure de programme S7-SCL

6.1

Blocs dans les sources S7-SCL


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

Types de bloc
Les blocs suivants sont disponibles :

OB

FC

FB Blocs STEP 7

DB

UDT

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

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

6-1

Structure de programme S7-SCL

6.2

Ordre des blocs


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

affect UDT appelle DB appelle Ordre dans le fichier source DB avec UDT appelle FB 3 affect

DB d'instance du FB 3 appelle FC 5

OB 1

6-2

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

Structure de programme S7-SCL

6.3

Composition gnrale d'un bloc


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

6.4

Dbut et fin de bloc


Le texte source pour un bloc particulier est introduit, en fonction du type de bloc, par un identificateur standard de dbut de bloc et par la dsignation de bloc. Il est cltur par un identificateur standard de fin de bloc. Le tableau suivant indique la syntaxe propre chaque type de bloc :
Dsignation Bloc fonctionnel Type de bloc FB Syntaxe FUNCTION_BLOCK nom_fb ... END_FUNCTION_BLOCK FUNCTION nom_fc : type de fonction ... END_FUNCTION ORGANIZATION_BLOCK nom_ob ... END_ORGANIZATION_BLOCK DATA_BLOCK nom_db ... END_DATA_BLOCK TYPE nom_udt ... END_TYPE

Fonction

FC

Bloc d'organisation

OB

Bloc de donnes

DB

Type de donnes global (ou utilisateur)

UDT

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

6-3

Structure de programme S7-SCL

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

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

Numro

IDENTIFICATEUR

Mnmonique

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

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

6-4

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

Structure de programme S7-SCL

6.5

Attributs de bloc

Dfinition
Un attribut de bloc est une proprit de bloc que vous pouvez par exemple utiliser pour indiquer le titre du bloc, la version, la protection du bloc ou encore l'auteur. Lorsque vous choisissez des blocs pour votre application, vous pouvez afficher leurs proprits dans une fentre de STEP 7. Vous pouvez donner les attributs suivants :
Mot-cl / attribut TITLE='caractre imprimable' VERSION : 'suite de chiffres dcimaux. suite de chiffres dcimaux' KNOW_HOW_PROTECT Signification Titre du bloc Numro de version du bloc (0 15) Nota : pour les blocs de donnes (DB) l'attribut VERSION ne doit pas tre plac entre apostrophes. Protection du bloc ; un bloc compil avec cette option ne peut pas tre ouvert avec STEP 7. Nom de l'auteur : nom de la socit, du dpartement ou autres noms (IDENTIFICATEUR et caractres imprimables) Nom du bloc (IDENTIFICATEUR et caractres imprimables) Nom de la famille du bloc : par exemple Moteurs ; enregistre le bloc dans un groupe de blocs, afin qu'il puisse tre retrouv plus facilement (IDENTIFICATEUR et caractres imprimables)). Exemples TITLE='TRIER' VERSION : '3.1' //Pour les DB : VERSION : 3.1 KNOW_HOW_PROTECT

AUTHOR :

AUTHOR : Siemens AUTHOR : 'A&D AS'

NAME : FAMILY :

NAME : PID NAME : 'A&D AS' FAMILY : Exemple FAMILY : 'A&D AS'

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

6-5

Structure de programme S7-SCL

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

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

6-6

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

Structure de programme S7-SCL

6.6

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

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

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

6-7

Structure de programme S7-SCL

6.7

Attributs systme pour bloc

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

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

Attributs systme de blocs


24 caractres au maximum
caractre imprimable

IDENTIFICATEUR

:=

'

'

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

6-8

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

Structure de programme S7-SCL

6.8

Section de dclaration

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

Composition
Une section de dclaration se divise elle-mme en plusieurs sections, respectivement caractrises par un couple de mots-cls. Chacune d'entre elles contient une liste de dclaration pour des donnes de mme type. L'ordre de ces sections est libre. Le tableau suivant numre les sections de dclaration possibles :
Donnes Constantes Syntaxe CONST; Liste de dclaration END_CONST LABEL; Liste de dclaration END_LABEL VAR_TEMP; Liste de dclaration END_VAR VAR; Liste de dclaration END_VAR VAR_INPUT; Liste de dclaration END_VAR VAR_OUTPUT; Liste de dclaration END_VAR VAR_IN_OUT; Liste de dclaration END_VAR FB X FC X OB X DB UDT

Repres de saut

Variable temporaire

Variable statique

X *)

X **)

X **)

Paramtre d'entre

Paramtre de sortie

Paramtre d'entre/sortie

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

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

6-9

Structure de programme S7-SCL

6.9

Attributs systme pour paramtre

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

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

Attributs systme de paramtres


24 caractres au maximum
caractre imprimable

IDENTIFICATEUR

:=

'

'

Exemple
VAR_INPUT in1 END_VAR {S7_server:='alarm_archiv'; S7_a_type:='ar_send'}: DWORD ;

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

6-10

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

Structure de programme S7-SCL

6.10

Section des instructions

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

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

Section des instructions

IDENTIFICATEUR Repre de saut

Instruction

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

:=CONSIGNE;

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

6-11

Structure de programme S7-SCL

6.11

Instructions

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

Rgles
La saisie doit respecter la syntaxe suivante :

Instruction
Affectation de valeur

Excution de sous-programme

Instruction de contrle

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

6-12

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

Structure de programme S7-SCL

6.12

Composition d'un bloc fonctionnel (FB)

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

Syntaxe

Bloc fonctionnel
PROGRAM

DESIGNATION DU FB

Section de dclaration du FB

FUNCTION_BLOCK

END_PROGRAM

BEGIN

Section des instructions END_FUNCTION_BLOCK

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

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

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

6-13

Structure de programme S7-SCL

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

REAL ;

6-14

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

Structure de programme S7-SCL

6.13

Composition d'une fonction (FC)

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

Syntaxe
Fonction
VOID DESIGNATION DE LA FC Spcification du type de donnes

FUNCTION

Section de dclaration de la FC

BEGIN

Section des instructions

END_FUNCTION

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

Spcification du type de donnes


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

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

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

6-15

Structure de programme S7-SCL

Section des instructions de la FC


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

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

6-16

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

Structure de programme S7-SCL

6.14

Composition d'un bloc d'organisation (OB)

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

Syntaxe
Bloc d'organisation

ORGANIZATION_BLOCK

DESIGNATION DE L'OB

Section de dclaration de l'OB

BEGIN

Section des instructions

END_ORGANIZATION_BLOCK

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

Section de dclaration de l'OB


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

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

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

6-17

Structure de programme S7-SCL

6.15

Composition d'un bloc de donnes (DB)

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

Syntaxe
Bloc de donnes
DESIGNATION DU DB

DATA_BLOCK

Section de dclaration du DB

BEGIN

Section d'affectation du DB

END_DATA_BLOCK

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

6-18

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

Structure de programme S7-SCL

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

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

Exemple : DATA_BLOCK DB20 STRUCT

// Section de dclaration VALEUR:ARRAY [1..100] OF INT; END_STRUCT // Dbut de la section d'affectation // Fin du bloc de donnes

BEGIN : END_DATA_BLOCK

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

6-19

Structure de programme S7-SCL

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

:=

Constante*

* en notation LIST

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

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

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

6-20

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

Structure de programme S7-SCL

6.16

Composition d'un type de donnes utilisateur


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

Type de donnes utilisateur


Spcification du type de donnes STRUCT

TYPE

DESIGNATION DE L`UDT

END_TYPE

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

Spcification du type de donnes


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

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

6-21

Structure de programme S7-SCL

Exemple de dfinition d'un UDT


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

:=

2.7 ;

6-22

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

Structure de programme S7-SCL

6.17

Options du compilateur dans les sources S7-SCL

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

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

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

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

6-23

Structure de programme S7-SCL

Options disponibles
Le tableau indique les options disponibles :
Option Valeur Signification

[Scl_]ResetOptions

Aucune indication de valeur possible

Rinitialiser les paramtres par dfaut du compilateur (paramtres de la bote de dialogue) Ecraser les blocs Crer des donnes de rfrence Prendre en compte l'attribut systme "S7_server" Crer le code de l'objet Optimiser le code de l'objet Surveiller les limites de champs Crer les informations de dbogage Mettre le drapeau OK 1 Longueur maximale d'une chane de caractres

[Scl_]OverwriteBlocks [Scl_]GenerateReferenceData [Scl_]S7ServerActive [Scl_]CreateObjectCode [Scl_]OptimizeObjectCode [Scl_]MonitorArrayLimits [Scl_]CreateDebugInfo [Scl_]SetOKFlag [Scl_]SetMaximumStringLength

'y[es]' ou 'n[o]' 'y[es]' ou 'n[o]' 'y[es]' ou 'n[o]' 'y[es]' ou 'n[o]' 'y[es]' ou 'n[o]' 'y[es]' ou 'n[o]' 'y[es]' ou 'n[o]' 'y[es]' ou 'n[o]' '1 .. 254'

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

6-24

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

Structure de programme S7-SCL

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

6-25

Types de donnes

7.1

Prsentation des types de donnes dans S7-SCL


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

Types de donnes simples


Un type de donnes simple dfinit la structure de donnes qui ne peuvent pas tre divises en lments plus petits. Il rpond la norme EN 1131-3. Un type de donnes simple dcrit une zone de mmoire de longueur fixe et correspond une grandeur exprime sous forme binaire, entire, relle, sous forme de dure, d'heure ou de caractre. Les types de donnes suivants sont prdfinis dans S7-SCL.
Groupe Types de donnes binaires Types de donnes BOOL BYTE WORD DWORD Types de donnes sur CHAR caractre Types de donnes numriques INT DINT REAL Types de donnes temporels TIME DATE TIME_OF_DAY S5TIME Les donnes de ce type reprsentent les diverses valeurs de dure et de date dans STEP 7. Les donnes de ce type occupent 1 caractre et un seul du jeu de caractres ASCII. Les donnes de ce type permettent de traiter des valeurs numriques. Signification Les donnes de ce type occupent 1 bit , 8 bits, 16 bits ou 32 bits.

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

7-1

Types de donnes

Types de donnes complexes


S7-SCL autorise les types de donnes complexes suivants :
Types de donnes DATE_AND_TIME DT STRING ARRAY STRUCT Signification Dfinit une zone de 64 bits (8 octets). Ce type de donnes, prdfini dans S7-SCL, enregistre la date et l'heure (en format dcimal cod binaire). Dfinit une zone pour une chane de 254 caractres au maximum (type de donnes CHAR). Dfinit un tableau form de composants d'un mme type de donnes (simples ou complexes). Dfinit un groupe form d'une combinaison quelconque de types de donnes. Vous pouvez dfinir un tableau compos de structures ou une structure compose d'autres structures et de tableaux.

Types de donnes utilisateur


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

Types de paramtre
Les types de paramtre sont des types de donnes spciaux pour les temporisations, les compteurs et les blocs ; vous pouvez les utiliser comme paramtres formels.
Types de donnes TIMER COUNTER BLOCK_xx ANY POINTER Signification Sert dclarer des fonctions de temporisation comme paramtres. Sert dclarer des fonctions de comptage comme paramtres. Sert dclarer des FC, FB, DB et SDB comme paramtres. Sert autoriser un oprande d'un type de donnes quelconque comme paramtre. Sert autoriser l'utilisation d'une zone de mmoire comme paramtre.

Type de donnes ANY


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

7-2

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

Types de donnes

7.2
7.2.1

Types de donnes simples


Types de donnes binaires
Les donnes de ce type sont des combinaisons binaires occupant 1 bit (type de donnes BOOL), 8 bits, 16 bits ou 32 bits. Pour les types de donnes octet, mot et double mot, la plage de valeurs ne peut pas tre indique. Il s'agit ici de combinaisons binaires permettant uniquement la formation d'expressions boolennes.
Type Bit Octet Mot Double mot Mot-cl BOOL BYTE WORD DWORD Longueur en bits Cadrage 1 bit 8 bits 16 bits 32 Commence au bit de poids faible de l'octet commence l'octet de poids faible du mot commence une limite de mot commence une limite de mot Plage de valeurs 0, 1 ou FALSE (FAUX), TRUE (VRAI) -

7.2.2

Types de donnes sur caractre


Les donnes de ce type occupent 1 caractre et un seul du jeu de caractres ASCII.
Type Caractre unique Mot-cl CHAR Longueur en bits 8 Plage de valeurs Jeu de caractres ASCII tendu

7.2.3

Types de donnes numriques


Les types de donnes numriques servent traiter les valeurs numriques (par exemple calculer des expressions arithmtiques).
Type Entier (nombre entier) Entier double Virgule flottante (nombre virgule flottante IEEE) Mot-cl INT DINT REAL Longueur Cadrage en bits 16 32 32 commence une limite de mot commence une limite de mot commence une limite de mot Plage de valeurs -32_768 32_767 -2_147_483_648 2_147_483_647 -3.402822E+38 -1.175495E-38 +/- 0 1.175495E-38 3.402822E+38

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

7-3

Types de donnes

7.2.4

Types de donnes temporels


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

Type Dure S5

Mot-cl S5TIME S5T

Longueur en bits 16 32

Cadrage commence une limite de mot commence une limite de mot commence une limite de mot commence une limite de mot

Plage de valeurs T#0H_0M_0S_10MS T#2H_46M_30S_0MS T#0D_0H_0M_0S_0MS T#24D_20H_31M_23S_647MS D#1990-01-01 D#2168-12-31 TOD#0:0:0.0 TOD#23:59:59.999

Dure : TIME dure CEI par pas T de 1 ms. Date : date CEI par pas de 1 jour. DATE D

16

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

32

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

7-4

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

Types de donnes

7.3
7.3.1

Types de donnes complexes


Type de donnes DATE_AND_TIME

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

Syntaxe
DATE_AND_TIME
DATE_AND_TIME# Indication de la date DT# Indication de l'heure du jour

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

Plage de valeurs
Type Date et heure Mot-cl Longueur en bits Cadrage commence et finit une limite de mot Plage de valeurs DT#1990-01-01-0:0:0.0 DT#2089-12-31-23:59:59.999

DATE_AND_TIME 64 DT

Le type de donnes DATE_AND_TIME est enregistr en format DCB.


Octets 0 1 2 3 4 5 6 7 (4 BPS) 7 (4 BMS) Contenu Anne Mois Jour Heures Minutes Secondes 2 DPS (dcades les plus significatives) de ms DMS (dcade la moins significative) de ms Jour de la semaine Plage 1990 ... 2089 01 ... 12 1 ... 31 0 ... 23 0 ... 59 0 ... 59 00 ... 99 0 ... 9 1 ... 7 (1 = dimanche)

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

7-5

Types de donnes

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

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

7-6

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

Types de donnes

7.3.2

Type de donnes STRING

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

Syntaxe

Spcification du type de donnes STRING

STRING

Expression simple Longueur de la chane

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

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

7-7

Types de donnes

Exemple : VAR Text1 Text2 END_VAR : String [123]; : String;

Dans la dclaration de la variable "Text1", la constante "123" reprsente le nombre maximal de caractres dans la chane. Pour la variable "Text2" , c'est une longueur de 254 caractres qui sera rserve.

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

Initialisation de chanes de caractres


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

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

7-8

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

Types de donnes

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

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

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

7-9

Types de donnes

7.3.3

Type de donnes ARRAY

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

Syntaxe
Spcification du type de donnes ARRAY
Spcification des indices

ARRAY

Indice 1

.. ,

Indice n

6 dimensions au plus

OF

Spcification du type de donnes

Spcification des indices


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

Spcification du type de donnes


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

7-10

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

Types de donnes

Exemple
VAR REGULATEUR1 : ARRAY[1..3,1..4] OF INT:= -1289, 60, 10362, 385, 2, -54, 736, -83, 77,

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

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

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

7-11

Types de donnes

7.3.4

Type de donnes STRUCT

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

Syntaxe

Spcification du type de donnes STRUCT

STRUCT

Dclaration des composants

END_STRUCT

Dclaration des composants


La dclaration des composants est une liste des diverses composants du type de donnes STRUCT. Elle comporte : 1 n identificateurs avec le type de donnes affect et des valeurs initiales par dfaut facultatives.
Dclaration des composants
IDENTIFICATEUR Nom du composant Nom du composant dans les tableaux : Spcification du type de donnes Initialisation du type de donnes ;

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

7-12

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

Types de donnes

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

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

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

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

7-13

Types de donnes

7.4
7.4.1

Type de donnes utilisateur


Types de donnes utilisateur (UDT)

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

Syntaxe
Type de donnes utilisateur
Spcification du type de donnes STRUCT

TYPE

DESIGNATION DE L`UDT

END_TYPE

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

7-14

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

Types de donnes

Spcification du type de donnes


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

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

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

:=

2.7 ;

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

7-15

Types de donnes

7.5

Types de donnes pour paramtre


Pour dterminer les paramtres de bloc formels des FB et FC, vous pouvez utiliser non seulement les types de donnes dj prsents, mais galement ce qu'on appelle des types de paramtre.
Paramtre TIMER Longueur 2 octets Description Caractrise une temporisation particulire qui doit tre utilise par le programme dans le bloc de code appel.

Paramtre effectif :
COUNTER 2 octets

p. ex. T1

Caractrise un compteur particulier qui doit tre utilis par le programme dans le bloc de code appel.

Paramtre effectif :
BLOCK_FB BLOCK_FC BLOCK_DB BLOCK_SDB 2 octets

p. ex. Z10

Caractrise un bloc particulier qui doit tre utilis par un bloc de code List appel.

Paramtre effectif :
Notas :

p. ex. FC101, DB42 DB42

Il est impossible daccder au type de donnes BLOCK_DB (myDB.dw10) Vous pouvez cependant continuer lditer avec BLOCK_DB_TO_WORD(). Le types de donnes BLOCK_SDB, BLOCK_FB et BLOCK_FC ne peuvent pas tre exploits par des programmes S7-SCL Vous pouvez les utiliser pour attribuer des valeurs des paramtres de ce type lappel de blocs LIST. ANY POINTER 10 octets 6 octets S'utilise pour autoriser un type de paramtre quelconque pour le paramtre effectif. Caractrise une zone de mmoire particulire qui doit tre utilise par le programme.

Paramtre effectif :

p. ex. M50.0

7.5.1

Types de donnes TIMER et COUNTER


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

7-16

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

Types de donnes

7.5.2

Types de donnes BLOCK


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

7.5.3

Type de donnes POINTER


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

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

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

7-17

Types de donnes

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

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

7-18

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

Types de donnes

7.6

Type de donnes ANY


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

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

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

7-19

Types de donnes

7.6.1

Exemple de type de donnes ANY


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

CASE ii OF 1: pANY := MW4; 3..5: pANY:= aINT[ii]; 100: pANY := iANY; pANY := NIL; END_CASE; SFCxxx(IN := pANY);

// pANY contient l'adresse de MW4

// pANY contient l'adresse du ii-me // lment du tableau aINT; // pANY contient la valeur // de la variable d'entre iANY ELSE // pANY contient la valeur du pointeur NIL

7-20

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

Dclaration de variables locales et de paramtres


Variables locales et paramtres de bloc

8.1

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

Variables temporaires

Catgories de paramtres de bloc :


Les paramtres de bloc servent rserver de la place et sont dtermins seulement quand le bloc est utilis concrtement (appel). Les paramtres dclars dans le bloc sont les paramtres formels, les valeurs qui leur sont affectes l'appel du bloc sont les paramtres effectifs. Les paramtres formels d'un bloc peuvent tre considrs comme des variables locales. On peut classer les paramtres de bloc dans les catgories suivantes :
Paramtres de bloc Paramtres d'entre Paramtres de sortie Paramtres d'entre/sortie Signification A l'appel du bloc, les paramtres d'entre prennent les valeurs d'entre actuelles. Vous pouvez y accder uniquement en lecture. Les paramtres de sortie transmettent les valeurs de sortie actuelles au bloc appelant. Vous pouvez y accder en criture comme en lecture. A l'appel d'un bloc, les paramtres d'entre/sortie prennent les valeurs d'entre actuelles. Une fois la valeur traite, ils enregistrent le rsultat et le retourne au bloc appelant.

Drapeau OK
Le compilateur de S7-SCL offre un drapeau servant dceler les erreurs durant l'excution de programmes dans la CPU. Il s'agit d'une variable locale de type BOOL dont le nom prdfini est "OK".

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

8-1

Dclaration de variables locales et de paramtres

8.2

Syntaxe gnrale d'une dclaration de variable ou de paramtre


Il faut dclarer un par un les variables ou les paramtres de bloc avant de pouvoir les utiliser dans un bloc de code ou dans un bloc de donnes. La dclaration tablit qu'un identificateur est utilis comme paramtre de bloc ou comme variable et lui associe un type de donnes. Une dclaration de variable ou de paramtre se compose d'un identificateur au choix et d'une indication de type de donnes. Le diagramme syntaxique suivant en montre la forme gnrale.

Syntaxe de la dclaration de variable ou de paramtre

Dclaration de variable

1) Spcification du type de donnes


2)

IDENTIFICATEUR Nom de variable, de paramtre ou de composant

AT

Variable simple

Initialisation du type de donnes

1) Attributs systme pour paramtre 2) sauf pour AT

Exemples
VALEUR1 : REAL; S'il y a plusieurs variables du mme type : VALEUR2, VALEUR3,VALEUR4,....: INT; TABLEAU : ARRAY[1..100, 1..10] OF REAL; PHRASE : STRUCT TABLEAU_MESURE:ARRAY[1..20] OF REAL; COMMUTATEUR:BOOL; END_STRUCT

Nota Pour utiliser des mots rservs comme identificateurs, vous devez les faire prcder du signe # (par exemple, #FOR).

8-2

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

Dclaration de variables locales et de paramtres

8.3

Initialisation
Lorsque vous dclarez des variables statiques, des paramtres d'entre et des paramtres de sortie d'un FB, vous pouvez leur affecter une valeur par dfaut. De mme pour les paramtres d'entre/sortie, mais seulement quand ils sont d'un type de donnes simple. Pour les variables simples, vous devez affecter (:=) une constante aprs avoir indiqu le type de donnes.

Syntaxe

Exemple
VALEUR :REAL := 20.25;

Nota Il n'est pas possible d'initialiser une liste de variables (A1, A2, A3,...: INT:=...). Dans ce cas, il faut initialiser les variables sparment.

Initialisation de tableaux
Pour initialiser un type de donnes ARRAY, vous pouvez soit indiquer une valeur spare par une virgule pour chaque composant du tableau, soit affecter une mme valeur plusieurs composants en plaant devant un facteur de rptition (nombre entier). Les valeurs d'initialisation peuvent tre mises entre parenthses, en option. Mme dans le cas de tableaux multi-dimensionnels, une seule paire de parenthses est indique.

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

.LAITINID ETSIL

ETNATSNOC

UAELBAT NUD

NOITASILAITINI

8-3

Dclaration de variables locales et de paramtres

Syntaxe de l'initialisation de tableaux

Exemples

//Initialisation de variables statiques : INDICE1 : INT := 3 ; //Initialisation de tableaux : EGULATEUR1 : ARRAY [1..2, 1..2] OF INT := -54, 736, -83, 77; REGULATEUR2 : ARRAY[1..10] OF REAL := 10(2.5); REGULATEUR1 : ARRAY [1..2, 1..2] OF INT := [-54, 736, -83, 77]; REGULATEUR2 : ARRAY[1..10] OF REAL := [10(2.5)]; //Initialisation de structures : GENERATEUR: STRUCT DAT1 : REAL := 100.5; A1 : INT := 10 ; A2 : STRING[6] := 'FACTEUR'; A3 : ARRAY[1..12] OF REAL := 0.0, 10(100.0), 1.0; END_STRUCT ; END_VAR

8-4

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

SETNATSNOC ED .TEPER ED ETSIL ETNATSNOC , ( NOITITEPER ED RUETCAF SELAMICED SERFFIHC ED ENIAHC

SETNATSNOC ED NOITITEPER ED ETSIL

Dclaration de variables locales et de paramtres

8.4

Dclaration d'accs des zones de variable


Pour adresser avec un type de donnes supplmentaire une variable dclare, vous pouvez dfinir un accs la variable ou des zones au sein de la variable. Vous employez pour cela le mot-cl "AT". Cet accs n'apparatra que localement dans le bloc, il ne sera pas adopt dans l'interface. Il peut tre utilis dans le bloc comme toute autre variable. Il hrite de tous les attributs de la variable qu'il dsigne, seul le type de donnes est nouveau.

Exemple
Dans l'exemple ci-aprs, plusieurs accs un paramtre d'entre sont rendus possibles : VAR_INPUT Tampon : ARRAY[0..255] OF BYTE; Telegramme1 AT Tampon : UDT100 ; Telegramme2 AT Tampon : UDT200 ; END_VAR Le bloc appelant dfinit le paramtre Tampon, il ne voit pas les noms Telegramme1 et Telegramme2. Le bloc appel dispose alors de 3 faons d'interprter les donnes, savoir comme tableau de nom Tampon ou organises autrement sous Telegramme1 ou Telegramme2.

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

8-5

Dclaration de variables locales et de paramtres

Rgles
La dclaration d'un accs supplmentaire une variable doit tre effectue dans le mme bloc de dclaration et la suite de la dclaration de la variable sur laquelle il doit pointer. L'initialisation n'est pas possible. Le type de donnes de l'accs doit tre compatible avec celui de la variable. C'est la variable qui impose la taille de la zone de mmoire. La place mmoire requise par l'accs peut tre infrieure ou gale cette taille. Il faut respecter en outre les rgles de combinaison suivantes :
Type de donnes de l'accs Type de donnes de la variable simple FB Dclaration d'un accs dans VAR, VAR_TEMP, VAR_IN ou VAR_OUT simple complexe ANY/POINTER simple complexe ANY/POINTER FC Dclaration d'un accs dans VAR ou VAR_TEMP simple complexe ANY/POINTER Dclaration d'un accs dans VAR_IN, VAR_OUT ou VAR_IN_OUT simple complexe ANY/POINTER x x x x x x x x x x x x Complexe X X x (1) x (1) ANY/POINTER

Dclaration d'un accs dans VAR_IN_OUT

(1) Any_Pointer n'est pas autoris dans VAR_OUT.

simple = BOOL, BYTE, WORD, DWORD, INT, DINT, DATE, TIME, S5TIME, CHAR complexe = ARRAY, STRUCT, DATE_AND_TIME, STRING

8-6

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

Dclaration de variables locales et de paramtres

8.5

Utilisation de multi-instances
Il est possible qu'en raison des performances des CPU S7 utilises (par exemple espace mmoire), vous ne puissiez ou ne souhaitiez associer qu'un nombre limit de blocs de donnes aux donnes d'instance. Si d'autres blocs fonctionnels dj existants sont appels dans un FB de votre programme utilisateur (hirarchie d'appel de FB), vous pouvez les appeler sans DB d'instance en propre (c'est--dire sans DB d'instance supplmentaire). Vous pouvez employer pour cela la solution suivante : Entrez les FB appeler comme variables statiques dans la dclaration des variables du FB appelant. Appelez dans ce bloc fonctionnel d'autres blocs fonctionnels sans DB d'instance en propre. Vous pouvez ainsi regrouper les donnes d'instance dans un seul DB d'instance, et donc mieux utiliser le nombre de DB disponibles.

8.6

Dclaration d'une instance


Dans la section de dclaration des variables statiques d'un bloc fonctionnel (VAR ; END_VAR), vous pouvez non seulement dclarer des variables d'un type de donnes simple, complexe ou utilisateur, mais galement des variables de type FB ou SFB. On les appelle instances locales du FB ou du SFB. Les donnes d'instance locales sont enregistres dans le bloc de donnes d'instance du bloc fonctionnel appelant. Une initialisation locale, spcifique l'instance n'est pas possible. Pour un bloc appel comme instance locale, la longueur 0 n'est pas autorise. Il doit contenir au moins la dclaration d'une variable statique ou d'un paramtre.

Syntaxe
Dclaration d'instances
DESIGNATION DU FB IDENTIFICATEUR Nom de l'instance locale , : DESIGNATION DU SFB ; Le FB et le SFB doivent dj exister !

Exemple
Dfinition1 : FB10; Dfinition2,Dfinition3,Dfinition4 Moteur1 : Moteur ; : FB100;

Moteur tant un mnmonique enregistr pour un FB dans la table des mnmoniques.

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

8-7

Dclaration de variables locales et de paramtres

8.7

Drapeau OK
Le drapeau OK sert noter l'excution correcte ou incorrecte d'un bloc. Il s'agit d'une variable locale de type BOOL dont le nom prdfini est "OK". Au dbut de l'excution d'un programme, le drapeau OK a la valeur TRUE. Des instructions S7-SCL permettent de l'interroger un endroit quelconque du bloc ou de lui donner la valeur TRUE / FALSE. Si une erreur se produit durant l'excution d'une opration (par exemple une division par zro), le drapeau OK prend la valeur FALSE. Lorsque vous quittez le bloc, la valeur du drapeau OK est enregistre dans le paramtre de sortie ENO o elle peut tre exploite par le bloc appelant.

Dclaration
Le drapeau OK est une variable dclare dans le systme. Il n'est donc pas ncessaire de la dclarer. Si vous souhaitez vous en servir dans votre programme utilisateur, vous devez cocher l'option de compilation "Activer drapeau OK" avant d'effectuer la compilation.

Exemple
// Mettre le drapeau OK sur TRUE, // afin de pouvoir vrifier // que l'action se droule correctement. OK:= TRUE; Division:= 1 / IN; IF OK THEN // La division a t excute correctement. // : // : ELSE // La division a t excute avec une erreur. // : END_IF;

8-8

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

Dclaration de variables locales et de paramtres

8.8
8.8.1

Sections de dclaration
Prsentation des sections de dclaration
A chaque catgorie de variable locale ou de paramtre est affect une section de dclaration propre, caractrise par un couple de mots-cls. Chaque section contient les dclarations qui y sont autorises. L'ordre de ces sections est quelconque. Le tableau suivant indique les types de variables ou de paramtres que vous pouvez dclarer dans les divers blocs de code :
Donnes Variable comme : variable statique Syntaxe VAR ... END_VAR VAR_TEMP ... END_VAR FB X FC X *) OB

variable temporaire

Paramtre de bloc comme : VAR_INPUT paramtre d'entre ... END_VAR VAR_OUTPUT ... END_VAR VAR_IN_OUT ... END_VAR

paramtre de sortie

paramtre d'entre/sortie

*) La dclaration de variables l'intrieur du couple de mots-cls VAR et END_VAR est certes autorise pour les fonctions, mais les dclarations sont cres dans la zone temporaire lors de la compilation de la source.

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

8-9

Dclaration de variables locales et de paramtres

8.8.2

Variables statiques
Les variables statiques sont des variables locales dont la valeur reste la mme durant toutes les excutions d'un bloc (mmoire du bloc). Elles servent stocker les valeurs d'un bloc fonctionnel et sont enregistres dans un bloc de donnes d'instance associ.

Syntaxe
Les variables statiques sont dclares dans la section de dclaration VAR / END_VAR. Cette section fait partie de la section de dclaration du FB. Aprs la compilation, c'est cette section qui, avec les sections pour les paramtres de bloc, dterminera la composition du bloc de donnes d'instance associ. Vous pouvez : Y crer des variables, affecter aux variables des types de donnes ainsi que des valeurs initiales ou dclarer en tant que variable statique un FB appeler si vous souhaitez l'appeler comme instance locale dans le FB actif.
Section de variables statiques

Dclaration de la variable VAR Dclaration de l'instance END_VAR

Exemple
VAR PASSAGE TABLEAU_MESURE COMMUTATEUR MOTEUR_1,MOTEUR_2 END_VAR

:INT; :ARRAY [1..10] OF REAL; :BOOL; :FB100; //Dclaration d'instance

Adressage
L'adressage des variables s'effectue dans la section des instructions. Adressage au sein du bloc : vous pouvez adresser une variable dans la section des instructions du bloc fonctionnel dont la section de dclaration contient la dclaration de cette variable. La marche suivre est explique avec prcision dans la rubrique "Affectation de valeur". Adressage depuis l'extrieur par le DB d'instance : vous pouvez adresser une variable depuis d'autres blocs au moyen d'un adressage index, par ex. DBx.variable.

8-10

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

Dclaration de variables locales et de paramtres

8.8.3

Variables temporaires
Les variables temporaires appartiennent localement un bloc de code et n'occupent aucune zone de mmoire statique. Elles sont stockes dans la pile de la CPU. Leur valeur ne reste la mme que durant une excution du bloc. Il n'est pas possible d'adresser les variables temporaires en dehors du bloc dans lequel elles ont t dclares. Au dbut de l'excution d'un OB, d'un FB ou d'une FC, la valeur des donnes temporaires n'est pas dfinie. L'initialisation n'est pas possible. Dclarez des donnes comme temporaires lorsque vous en avez besoin seulement pour y enregistrer des rsultats intermdiaires lors du traitement de votre OB, FB ou FC.

Syntaxe
La dclaration des variables temporaires s'effectue dans la section de dclaration VAR_TEMP / END_VAR. Cette section fait partie d'un FB, d'une FC ou d'un OB. Le nom de la variable et son type de donnes sont indiqus dans la dclaration de la variable.

Section de variables temporaires

VAR_TEMP

Dclaration de la variable

END_VAR

, L'initialisation n'est pas possible

Exemple
VAR_TEMP TAMPON 1 : ARRAY [1..10] OF INT ; AIDE1, AIDE2 : REAL; END_VAR

Adressage
L'adressage de ces variables s'effectue toujours dans la section des instructions du bloc de code dont la section de dclaration contient la dclaration de la variable (adressage interne), voir la rubrique "Affectation de valeur".

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

8-11

Dclaration de variables locales et de paramtres

8.8.4

Paramtres de bloc
Les paramtres de bloc servent rserver de la place et ne sont dtermins que lors de l'utilisation concrte du bloc (appel). Ceux qui sont dclars dans le bloc sont appels paramtres formels, les valeurs qui leur sont affectes l'appel du bloc sont appeles paramtres effectifs. Ainsi, les paramtres constituent un mcanisme d'change d'informations entre les blocs.

Types de paramtres de bloc


Les paramtres d'entre formels prennent les valeurs d'entre en cours (flux de donnes de l'extrieur vers l'intrieur). Les paramtres de sortie formels servent transfrer des valeurs de sortie (flux de donnes de l'intrieur vers l'extrieur). Les paramtres d'entre/sortie formels ont la fois la fonction d'un paramtre d'entre et celle d'un paramtre de sortie.

Syntaxe
Les paramtres formels doivent tre dclars dans la section de dclaration d'un bloc fonctionnel ou d'une fonction. Suivant le type de paramtre, ils sont dclars dans l'une des trois sections de dclaration des paramtres. Vous dterminez leur nom et leur type de donnes dans la dclaration des variables. Seuls les paramtres d'entre et les paramtres de sortie d'un FB peuvent tre initialiss. Pour la dclaration des paramtres formels, vous pouvez non seulement utiliser des types de donnes simples, complexes et utilisateur, mais galement des types de donnes pour paramtre.
Section des paramtres
VAR_INPUT VAR_OUTPUT Dclaration de la variable

END_VAR

VAR_IN_OUT L'initialisation est uniquement possible pour VAR_INPUT et VAR_OUTPUT

8-12

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

Dclaration de variables locales et de paramtres

Exemple
VAR_INPUT // Paramtre d'entre MON_DB : BLOCK_DB ; REGULATEUR : DWORD ; HEURE_DU_JOUR : TIME_OF_DAY ; END_VAR VAR_OUTPUT // Paramtre de sortie CONSIGNES: ARRAY [1..10] of INT ; END_VAR VAR_IN_OUT // Paramtre d'entre/sortie REGLAGE : INT ; END_VAR

Adressage
L'adressage des paramtres de bloc s'effectue dans la section des instructions d'un bloc de code. Adressage interne : c'est--dire dans la section des instructions du bloc dont la section de dclaration contient la dclaration des paramtres. Ceci est expliqu la rubrique "Affectations de valeur" et la rubrique " "Expressions, oprations et oprandes". Adressage depuis l'extrieur par DB d'instance : vous pouvez adresser les paramtres d'un bloc fonctionnel par l'intermdiaire du DB d'instance associ.

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

8-13

Dclaration de variables locales et de paramtres

8-14

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

Dclaration de constantes et repres de saut

9.1

Constantes
Les constantes sont des donnes possdant une valeur fixe qui ne varie pas durant l'excution du programme. S7-SCL connat les catgories suivantes de constantes. Constantes binaires Constantes numriques : Constantes entires Constantes relles

Constantes sur caractres : Constantes sur caractre Constantes sur chane

Constantes temporelles : Constantes de date Constantes de dure Constantes d'heure du jour Constantes de date et heure

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

9-1

Dclaration de constantes et repres de saut

9.1.1

Dclaration de mnmoniques pour les constantes


Il n'est pas ncessaire de dclarer les constantes. Vous pouvez toutefois leur attribuer des mnmoniques dans la section de dclaration. La dclaration des mnmoniques de constantes s'effectue avec l'instruction CONST dans la section de dclaration de votre bloc de code. Elle est recommande pour toutes les constantes du bloc, car elle contribue une meilleure lisibilit et facilite le traitement du bloc lorsque vous modifiez les valeurs constantes.

Syntaxe
Section des constantes

CONST

IDENTIFICATEUR Mnmonique de la constante

:=

Expression simple

END_CONST

Dans les expressions simples, seules les oprations arithmtiques de base sont autorises (*, /, +, -, DIV, MOD).

Exemple
CONST Nombre := 10 ; HEURE1 := TIME#1D_1H_10M_22S_2MS ; NOM := 'SIEMENS' ; NOMBRE2 := 2 * 5 + 10 * 4 ; NOMBRE3 := 3 + ZAHL2 ; END_CONST

9-2

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

Dclaration de constantes et repres de saut

9.1.2

Types de donnes des constantes


Les types de donnes ne sont pas affects aux constantes comme dans LIST. Une constante ne reoit son type de donnes qu'avec la combinaison arithmtique ou logique dans laquelle elle est employe, par ex. : Int1:=Int2 + 12345 Real1:=Real2 + 12345 //"12345" reoit le type de donnes INT //"12345" reoit le type de donnes REAL

Le type de donnes affect une constante est celui dont la plage de valeurs suffit juste encore prendre en charge la constante sans perte de valeur. Par exemple, la constante "12345" n'est pas toujours du type INT comme dans LIST, mais elle fait partie de la classe de types de donnes ANY_NUM, c'est--dire qu'elle sera INT, DINT ou REAL suivant l'emploi.

Constantes types
La notation type des constantes vous permet d'indiquer aussi explicitement un type de donnes pour les types numriques suivants. Exemples :
Type de donnes BOOL BYTE WORD DWORD INT DINT REAL CHAR Notation type BOOL#1 Bool#false BYTE#0 Byte#'' bool#0 BOOL#TRUE B#2#101 b#16#f

WORD#32768 word#16#f W#2#1001_0100 WORD#8#177777 DWORD#16#f000_0000 DW#2#1111_0000_1111_0000 INT#16#3f_ff int#-32768 Int#2#1111_0000 inT#8#77777 DINT#16#3fff_ffff dint#-65000 DInt#2#1111_0000 REAL#1 real#2e4 CHAR#A real#1.5 real#3.1 CHAR#49 dinT#8#17777777777 dword#32768 DWord#8#37777777777

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

9-3

Dclaration de constantes et repres de saut

9.1.3

Notation des constantes


Une notation prcise (format) sert indiquer la valeur d'une constante suivant le type et le format de donnes choisis. Le type et la valeur de la constante rsultant directement de la notation, il n'est pas ncessaire de les dclarer. Exemples : 15 VALEUR 15 2#1111 VALEUR 15 16#F VALEUR 15 hexadcimale en tant que constante entire en reprsentation dcimale en tant que constante entire en reprsentation binaire en tant que constante entire en reprsentation

Tableau des notations possibles


Type de donnes BOOL Description 1 bit Exemples en S7-SCL FALSE TRUE BOOL#0 BOOL#1 BOOL#FALSE BOOL#TRUE B#16#00 B#16#FF BYTE#0 B#2#101 Byte#'' b#16#f 'A' CHAR#49 'adresse' W#16#0000 W#16#FFFF word#16#f WORD#8#177777 8#177777 W#2#1001_0100 WORD#32768 DW#16#0000_0000 DW#16#FFFF_FFFF Dword#8#37777777777 8#37777777777 DW#2#1111_0000_1111_000 0 dword#32768 Exemples en LIST, si diffrents

BYTE

Nombre hexadcimal de 8 bits

CHAR STRING WORD

8 bits (1 caractre ASCII) 254 caractres ASCII maximum Nombre hexadcimal de 16 bits

Nombre octal de 16 bits

Nombre binaire de 16 bits DWORD Nombre hexadcimal de 32 bits

Nombre octal de 32 bits

Nombre binaire de 32 bits

9-4

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

Dclaration de constantes et repres de saut

Type de donnes INT

Description 16 bits Nombre virgule fixe

Exemples en S7-SCL -32768 +32767 INT#16#3f_ff int#-32768 Int#2#1111_0000 inT#8#77777 -2147483648 +2147483647 DINT#16#3fff_ffff dint#-65000 Dint#2#1111_0000 dinT#8#17777777777 Reprsentation dcimale 123.4567 REAL#1 real#1.5 Reprsentation exponentielle real#2e4 +1.234567E+02

Exemples en LIST, si diffrents

DINT

32 bits Nombre virgule fixe

L#-2147483648 L#+2147483647

REAL

Nombre virgule flottante de 32 bits

S5TIME

16 bits Dure en format SIMATIC

T#0ms TIME#2h46m30s T#0.0s TIME#24.855134d -T#24d20h31m23s647ms TIME#24d20h31m23s647ms T#0.0s TIME#24.855134d D#1990-01-01 DATE#2168-12-31 TOD#00:00:00 TIME_OF_DAY#23:59:59.999 DT#1995-01-01-12:12:12.2

S5T#0ms S5TIME#2h46m30s

TIME

32 bits Dure en format CEI

DATE TIME_OF_DAY

16 bits Date 32 bits Heure du jour

DATE_AND_TIME Date et heure

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

9-5

Dclaration de constantes et repres de saut

9.1.3.1 Constante binaire


Les constantes binaires contiennent des valeurs de 1 bit, 8 bits, 16 bits ou 32 bits de longueur. Vous pouvez les affecter dans le programme S7-SCL des variables de types de donnes BOOL, BYTE, WORD ou DWORD (selon la longueur).

Syntaxe
CONSTANTE BINAIRE
BOOL# BYTE# SUITE DE CHIFFRES DECIMAUX SUITE DE CHIFFRES OCTAUX SUITE DE CHIFFRES HEXA SUITE DE CHIFFRES BINAIRES CARACTERES (1)

WORD# DWORD#

(1) pour le type BYTE seulement

Suite de chiffres dcimaux


Dans une constante, une suite de chiffres dcimaux peut tre spare par des caractres de soulignement pour amliorer la lisibilit des grands nombres ; ceci est facultatif. Voici des notations correctes de suites de chiffres dcimaux dans les constantes : DW#2#1111_0000_1111_0000 dword#32768

Valeurs binaires, octales et hexadcimales


Pour indiquer une constante entire dans un autre systme de numration que le systme dcimal, il faut placer devant le prfixe 2#, 8# ou 16#, suivi du nombre dans la reprsentation du systme respectif. La figure suivante prend pour exemple une suite de chiffres formant un nombre octal :
Suite de chiffres octaux
8# Chiffre octal

_ Caractre de soulignement

Exemple
Les exemples suivants montrent des notations correctes de constantes binaires : Bool#false 8#177777 DW#16#0000_0000

9-6

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

Dclaration de constantes et repres de saut

9.1.3.2 Constante entire


Les constantes entires contiennent des valeurs entires de 16 bits ou 32 bits de longueur. Vous pouvez les affecter dans le programme S7-SCL des variables du type de donnes INT ou DINT (suivant la longueur).

Syntaxe

CONSTANTE ENTIERE
INT# DINT# + SUITE DE CHIFFRES DECIMAUX SUITE DE CHIFFRES OCTAUX SUITE DE CHIFFRES HEXA SUITE DE CHIFFRES BINAIRES CARACTERES (1)

(1) pour le type INT seulement

Suite de chiffres dcimaux


Dans une constante, une suite de chiffres dcimaux peut tre spare par des caractres de soulignement pour amliorer la lisibilit des grands nombres ; ceci est facultatif. Voici des notations correctes de suites de chiffres dcimaux dans les constantes : 1000 1_120_200 666_999_400_311

Valeurs binaires, octales et hexadcimales


Vous pouvez indiquer une constante entire dans un autre systme de numration que le systme dcimal, en plaant devant le prfixe 2#, 8# ou 16#, suivi du nombre dans la reprsentation du systme respectif.

Exemple
Les exemples suivants montrent des notations correctes de constantes entires : Valeur_2:=2#0101; Valeur_3:=8#17; Valeur_4:=16#F; Valeur_5:=INT#16#3f_ff // // // // Nombre Nombre Nombre Nombre binaire, valeur dcimale 5 octal, valeur dcimale 14 hexadcimal, valeur dcimale 15 hexadcimal, notation type

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

9-7

Dclaration de constantes et repres de saut

9.1.3.3 Constante relle


Les constantes relles sont des valeurs comportant des positions aprs la virgule. Vous pouvez les affecter des variables de type de donnes REAL.

Syntaxe
CONSTANTE REELLE
SUITE DE CHIFFRE DECIMAUX . SUITE DE CHIFFRE DECIMAUX

+ REAL# -

SUITE DE CHIFFRE DECIMAUX

SUITE DE CHIFFRE DECIMAUX

Exposant

L'indication du signe est facultative. En l'absence de signe, le nombre est interprt comme nombre positif. Dans une constante, une suite de chiffres dcimaux peut tre spare par des caractres de soulignement pour amliorer la lisibilit des grands nombres ; ceci est facultatif. Voici des notations correctes de suites de chiffres dcimaux dans les constantes : 1000 1_120_200 666_999_400_311

Exposants
En notation exponentielle, vous pouvez avoir recours un exposant pour indiquer des nombres virgule flottante. L'exposant est indiqu par la lettre "E" ou "e", suivie du nombre entier. La grandeur 3x10 peut tre reprsente en S7-SCL par les nombres rels suivants : 3.0E+10 0.3E+11 3.0E10 0.3e11 3e+10 30.0E+9 3E10 30e9
10

Exemples
NOMBRE4:= -3.4 ; NOMBRE5:= 4e2 ; NOMBRE6:= real#1.5;

9-8

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

Dclaration de constantes et repres de saut

9.1.3.4 Constante sur caractre (caractre unique)


La constante sur caractre contient un caractre et un seul plac entre deux apostrophes ('). Elle ne peut pas tre employe dans des expressions.

Syntaxe
CONSTANTE SUR CARACTERE
CHAR#
' Caractre '

SUITE DE CHIFFRES DECIMAUX

Exemple
Caractre_1 := 'B'; Caractre_2 := char#43; Caractre_3 := char#'B';

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

9-9

Dclaration de constantes et repres de saut

Syntaxe du caractre
Il peut provenir du jeu tendu complet de caractres ASCII. Pour saisir un caractre de mise en forme spcial, une apostrophe (') ou le caractre $, placez devant le caractre $. Vous pouvez galement utiliser des caractres non imprimables du jeu de caractres ASCII tendu. Il vous suffit pour cela d'indiquer leur reprsentation en code hexadcimal.

Exemple de caractre en code hexadcimal : CARACTERE Espace := '$41' ; :='$20'; //quivaut au caractre 'A' //quivaut au caractre _
| |

9-10

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

Dclaration de constantes et repres de saut

9.1.3.5 Constante sur chane


Une constante sur chane est une chane de 254 caractres au maximum. Les caractres sont placs entre deux apostrophes ('). Les constantes sur chane ne peuvent pas tre employes dans les expressions.

Syntaxe
CONSTANTE SUR CHAINE

'

Caractre

Interruption de la chane

Caractre

'

Syntaxe du caractre
Vous pouvez utiliser tous les caractres de tout le jeu de caractres ASCII tendu. Pour saisir un caractre de mise en forme spcial, une apostrophe (') ou le caractre $, placez devant le caractre $. Vous pouvez aussi utiliser les caractres non imprimables du jeu de caractres ASCII tendu complet. Il vous suffit pour cela d'indiquer leur reprsentation en code hexadcimal.

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

9-11

Dclaration de constantes et repres de saut

Interruption d'une chane de caractres


Vous pouvez interrompre plusieurs fois puis continuer une constante sur chane. Une chane de caractres peut figurer sur une seule ligne d'un bloc S7-SCL ou tre rpartie sur plusieurs lignes avec des codes spciaux. Le code $> sert interrompre une chane et le code $< sert la continuer la ligne suivante. L'espace entre le code d'interruption et le code de continuation peut s'tendre sur plusieurs lignes ; il ne doit pas contenir autre chose que des caractres d'espacement et du commentaire.
Interruption d'une chane de caractres
Caractre d'espacement (blank) de changement de ligne (linefeed) de retour chariot (carriage return) de saut de page (formfeed, page) de tabulation horizontale (tabulator)

Caractre de mise en forme $> Commentaire

$<

Exemples
// Constante sur chane: NOM:= 'SIEMENS'; //Interruption d'une constante sur chane MESSAGE1:= 'MOTEUR- $> $< Commande'; // Chane en reprsentation hexadcimale: MESSAGE1:= '$41$4E' (*suite de caractres AN*);

9-12

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

Dclaration de constantes et repres de saut

9.1.3.6 Constante de date


Une date est introduite par les prfixes DATE# ou D#. Pour indiquer la date, vous utilisez des nombres entiers pour l'anne (4 positions), le mois et le jour, spars par des tirets.

Syntaxe
Indication de la date
SUITE DE CHIFFRES DECIMAUX Anne SUITE DE CHIFFRES DECIMAUX Mois SUITE DE CHIFFRES DECIMAUX Jour

Exemple
VARIABLE_TEMPS1:= DATE#1995-11-11 ; VARIABLE_TEMPS2:= D#1995-05-05 ;

9.1.3.7 Constante de dure


Une dure est introduite par les prfixes TIME# ou T#. Il y a deux faons d'indiquer la dure : La reprsentation dcimale La reprsentation par niveaux

Syntaxe
Dure
TIME# Reprsentation dcimale

T#

Reprsentation par niveau

Reprsentation dcimale

-Chaque unit de temps (heures, minutes) ne doit tre indique qu'une seule fois -L'ordre - jours, heures, minutes, secondes, millisecondes - doit tre respect

Passer de la reprsentation par niveaux la reprsentation dcimale n'est possible que tant que les units horaires ne sont pas encore indiques. Aprs les prfixes introductifs T# ou TIME#, vous devez indiquer au moins une unit horaire.

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

9-13

Dclaration de constantes et repres de saut

Reprsentation dcimale
Utilisez la reprsentation dcimale si vous souhaitez indiquer sous forme de nombre dcimal un composant horaire, comme par exemple les heures ou les minutes.
Reprsentation dcimale
SUITE DE CHIFFRES DECIMAUX . SUITE DE CHIFFRES DECIMAUX D Jours

SUITE DE CHIFFRES DECIMAUX

SUITE DE CHIFFRES DECIMAUX

Heures

SUITE DE CHIFFRES DECIMAUX

SUITE DE CHIFFRES DECIMAUX

Minutes M

SUITE DE CHIFFRES DECIMAUX

SUITE DE CHIFFRES DECIMAUX

Secondes

SUITE DE CHIFFRES DECIMAUX

SUITE DE CHIFFRES DECIMAUX

MS

Millisecondes

Pour passer la reprsentation dcimale, il faut que les units temporelles n'aient pas encore t dfinies

9-14

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

Dclaration de constantes et repres de saut

Reprsentation par niveaux


La reprsentation par niveaux est une suite de composants horaires individuels. Vous indiquez d'abord les jours, puis les heures, etc., spars par des caractres de soulignement, l'omission de composants tant permise. Vous devez cependant en indiquer une au moins.
Reprsentation par niveaux

SUITE DE CHIFFRES DECIMAUX

SUITE DE CHIFFRES DECIMAUX

Jours

Heures

SUITE DE CHIFFRES DECIMAUX

SUITE DE CHIFFRES DECIMAUX

Minutes

Secondes

SUITE DE CHIFFRES DECIMAUX

MS

Millisecondes

Exemple
// Reprsentation dcimale Intervalle1:= TIME#10.5S ; // Reprsentation par niveaux Intervalle2:= T#3D_2S_3MS ; // Reprsentation par niveaux et dcimale Intervalle3 := T#2D_2.3s ;

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

9-15

Dclaration de constantes et repres de saut

9.1.3.8 Constante d'heure du jour


L'heure du jour est introduite par les prfixes TIME_OF_DAY# ou TOD#.

Syntaxe
Heure du jour
TIME_OF_DAY# Indication de l'heure du jour TOD#

Pour indiquer l'heure du jour, vous entrez les heures, minutes et secondes spares par deux-points. L'indication des millisecondes est facultative. Elle est spare des autres par un point.

Indication de l'heure du jour


Indication de l'heure du jour
SUITE DE CHIFFRES DECIMAUX SUITE DE CHIFFRES DECIMAUX

Indication des heures

Indication des minutes

SUITE DE CHIFFRES DECIMAUX Indication des secondes

SUITE DE CHIFFRES DECIMAUX Indication des millisecondes

Exemple
HEURE1:= TIME_OF_DAY#12:12:12.2 ; HEURE2:= TOD#11:11:11 ;

9-16

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

Dclaration de constantes et repres de saut

9.1.3.9 Constante de date et d'heure


L'indication de la date et de l'heure est introduite par les prfixes DATE_AND_TIME# ou DT#. Il s'agit d'une constante compose de l'indication de la date et de celle de l'heure du jour.

Syntaxe
Date et heure
DATE_AND_TIME# Indication de la date DT# Indication de l'heure du jour

Indication de la date
Indication de la date
SUITE DE CHIFFRES DECIMAUX Anne SUITE DE CHIFFRES DECIMAUX Mois SUITE DE CHIFFRES DECIMAUX Jour

Indication de l'heure du jour


Indication de l'heure du jour
SUITE DE CHIFFRES DECIMAUX SUITE DE CHIFFRES DECIMAUX

Indication des heures

Indication des minutes

SUITE DE CHIFFRES DECIMAUX Indication des secondes

SUITE DE CHIFFRES DECIMAUX Indication des millisecondes

Exemple
HEURE1:= DATE_AND_TIME#1995-01-01-12:12:12.2 ; HEURE2:= DT#1995-02-02-11:11:11;

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

9-17

Dclaration de constantes et repres de saut

9.2

Dclaration de repres de saut


Les repres de saut (labels) servent dfinir la destination d'une instruction GOTO. Vous les dclarez dans la section de dclaration d'un bloc de code en indiquant leur mnmonique.

Syntaxe
Section de dclaration des repres de saut

LABEL

IDENTIFICATEUR Repre de saut ,

END_LABEL

Exemple
LABEL REPERE1, REPERE2, REPERE3; END_LABEL

9-18

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

10

Donnes globales

10.1

Prsentation des donnes globales


Dans S7-SCL, vous avez la possibilit d'adresser des donnes globales. Il en existe deux sortes : Les zones de mmoire de la CPU Il s'agit de donnes dclares dans le systme comme par exemple les entres, les sorties et les mmentos. Leur nombre dpend de votre CPU. Les donnes utilisateur globales, sous forme de blocs de donnes que vous pouvez charger Ces zones de donnes se trouvent dans des blocs de donnes. Pour pouvoir les utiliser, vous devez pralablement crer les blocs et y dclarer les donnes. Dans le cas de blocs de donnes d'instance, elles rsultent de blocs fonctionnels et sont gnres automatiquement.

Adressage des donnes globales


L'adressage des donnes globales peut tre : Absolu : par un identificateur d'oprande et une adresse absolue. Symbolique : par un mnmonique que vous avez pralablement dfini dans la table des mnmoniques. Index : par un identificateur d'oprande et un indice de tableau. Structur : par une variable.
Mode d'adressage Absolu Symbolique Index Structur Zones de mmoire de la CPU
oui oui oui non

Donnes utilisateur globales oui oui oui oui

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

10-1

Donnes globales

10.2

Zones de mmoire de la CPU

10.2.1 Prsentation des zones de mmoire de la CPU


Les zones de mmoire d'une CPU sont dclares dans le systme. Vous n'avez donc pas besoin de les dclarer dans votre bloc de code. Chaque CPU met votre disposition les zones de mmoire suivantes possdant leur propre espace d'adressage : Entres/sorties dans la mmoire image (par exemple A1.0) Entres/sorties de priphrie (par exemple PA1.0) Mmentos (par exemple M1.0) Temporisations, compteurs (C1)

Syntaxe de l'adressage
Vous adressez une zone de mmoire de la CPU dans une affectation de valeur ralise dans la section des instructions d'un bloc de code par : Adressage simple indiqu de manire absolue ou symbolique, ou adressage index.
Adressage simple de la mmoire
IDENTIFICATEUR D'OPERANDE Adresse Adressage absolu IDENTIFICATEUR

Mnmonique

Adressage symbolique

Adressage index de la mmoire

Indice [ Expression de base , ]

IDENTIFICATEUR D'OPERANDE

10-2

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

Donnes globales

10.2.2 Adressage absolu des zones de mmoire de la CPU


L'adressage absolu d'une zone de mmoire de la CPU s'effectue, par exemple, au moyen de l'affectation d'un identificateur absolu une variable de mme type.
ETAT_2:= EB10;
Adressage absolu Variable de mme type

L'identificateur absolu renvoie une zone de mmoire dans la CPU que vous spcifiez en indiquant l'identificateur d'oprande (EB dans notre exemple) suivi de l'adresse (ici 10).

Syntaxe de l'identificateur absolu


Identificateur d'oprande
Prfixe de mmoire Prfixe de taille

Prfixe de mmoire
Le prfixe de mmoire vous permet de dterminer la nature des zones de mmoire adresser.
Prfixe de mmoire
E A M PE PA Abrviations allemandes I Q M PI PQ Entre Sortie Mmento

Priphrie des entres Priphrie des sorties

Abrviations anglaises

Selon le jeu d'abrviations slectionn, la signification des identificateurs d'oprandes allemands ou anglais est rserve.

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

10-3

Donnes globales

Prfixe de taille
En indiquant le prfixe de taille, vous spcifiez la largeur de la zone de mmoire qui doit tre lue dans la priphrie. Vous pouvez par exemple lire un octet ou un mot. Si vous ne souhaitez spcifier qu'un bit, l'indication du prfixe de taille est facultative.
Prfixe de taille
X B W D Bit Octet Mot Double mot

Adresse
Pour prciser l'adresse, vous devez d'abord indiquer l'adresse d'octet absolue, puis spare par un point, l'adresse de bit de l'octet concern. L'indication de l'adresse de bit est facultative.
Adresse
Numro . Numro

uniquement pour une adresse binaire

Exemples
OCTET_ETAT :=EB10; ETAT_3 :=E1.1; VAL_MESURE :=EW20;

10-4

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

Donnes globales

10.2.3 Adressage symbolique des zones de mmoire de la CPU


L'adressage symbolique vous permet d'utiliser des mnmoniques au lieu des identificateurs absolus pour adresser les zones de mmoire de la CPU. Vous associez les mnmoniques aux oprandes respectifs de votre programme utilisateur dans la table de mnmoniques. La commande Outils > Table des mnmoniques vous permet tout moment d'ouvrir la table de mnmoniques depuis S7-SCL pour y ajouter d'autres mnmoniques. Tous les types de donnes simples sont autoriss, si tant est que leur longueur suffit la longueur d'adressage. Le tableau ci-aprs donne un exemple de table des mnmoniques.
Mnmonique Contact_moteur_1 Oprande E 1.7 Type de donnes BOOL Commentaire Commutateur de contact 1 pour le moteur A Mot d'tat

Entre1

EW 10

INT

Adressage
Pour raliser l'adressage, vous affectez le mnmonique dclar une variable de mme type.

Exemple
VAL_MESURE_1 := Contact_moteur_1; Etat_moteur1 := entree1 ;

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

10-5

Donnes globales

10.2.4 Adressage index des zones de mmoire de la CPU


Vous avez galement la possibilit d'accder aux zones de mmoire de la CPU de manire indexe. Par rapport l'adressage absolu, l'avantage rside dans le fait que vous pouvez adresser les zones de mmoire de manire dynamique, en utilisant des indices variables. Ainsi, vous pouvez par exemple utiliser la variable de contrle d'une boucle FOR comme adresse. L'adressage index d'une zone de mmoire ressemble l'adressage absolu. La seule diffrence rside dans l'indication de l'adresse. A la place de l'adresse, vous spcifiez un indice qui peut tre une constante, une variable ou une expression arithmtique. Pour l'adressage index, l'identificateur absolu est compos de l'identificateur d'oprande (prfixe de mmoire et prfixe de taille) et d'une expression de base pour l'indexation.
Prfixe de taille Prfixe de mmoire

E X [i,j]

Adresse
Expression de base

Identificateur d'oprande

comme indice, indique entre crochets

Syntaxe de l'identificateur absolu

Prfixe de mmoire

Prfixe de taille

Expression de base

, Indice

Expression de base

Identificateur d'oprande

Pour adressage binaire seulement

L'indexation (expression de base) doit tre conforme aux rgles suivantes :


Chaque indice doit tre une expression arithmtique du type de donnes INT. Dans le cas d'un adressage du type de donnes BYTE, WORD ou DWORD, vous devez utiliser un indice et un seul. Il est interprt comme adresse d'octet. La longueur d'adressage est dtermine par le prfixe de taille. Dans le cas d'un adressage du type de donnes BOOL, vous devez utiliser deux indices. Le premier spcifie l'adresse d'octet, le second la position du bit dans cet octet.

Exemple
VAL_MESURE_1 REPERE :=EW[COMPTEUR]; :=E[NOCTET, NBIT];

10-6

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

Donnes globales

10.3

Blocs de donnes

10.3.1 Prsentation des blocs de donnes


Dans les blocs de donnes, vous pouvez enregistrer et traiter pour votre application toutes les donnes valables pour l'ensemble du programme ou du projet. Tout bloc de code a accs en criture ou en lecture aux donnes utilisateur globales.

Adressage
Il y a plusieurs faons d'adresser les donnes d'un bloc de donnes global : Adressage absolu ou simple, Adressage structur , Adressage index.
Adressage absolu d'un DB
Identificateur d'oprande Adresse

Adressage index d'un DB

Index [ Expression de base ]

Identificateur d'oprande

Adressage structur d'un DB


Variable simple

Identificateur d'oprande

Adressage symbolique d'un DB


Variable simple

Mnmonique d'un DB

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

10-7

Donnes globales

10.3.2 Adressage absolu des blocs de donnes


De mme que pour les zones de mmoire de la CPU, l'adressage absolu d'un bloc de donnes est ralis par affectation d'une valeur une variable de mme type. Aprs la dsignation du DB, vous indiquez le mot-cl "D" avec le prfixe de taille (par exemple X pour bit) et l'adresse d'octet (par exemple 13.1).

ETAT_5:= DB11.DX13.1;
Adresse Prfixe de taille Dsignation du DB Variable de mme type

Syntaxe
Vous spcifiez l'adressage en indiquant la dsignation du DB, suivie du prfixe de taille et de l'adresse.
Adressage absolu d'un DB
Identificateur d'oprande DESIGNATION DU DB Prfixe de taille

Adresse

Prfixe de taille
Le prfixe de taille indique la longueur de la zone de mmoire qui doit tre adresse dans le bloc de donnes. Vous pouvez par exemple lire un octet ou un mot du DB. Si vous ne souhaitez spcifier qu'un bit, l'indication du prfixe de taille est facultative.
Prfixe de taille
X B W D Bit Octet Mot Double mot

10-8

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

Donnes globales

Adresse
Pour prciser l'adresse, vous devez d'abord indiquer l'adresse d'octet absolue, puis spare par un point, l'adresse de bit de l'octet concern (uniquement en cas d'adressage binaire).
Adresse

Numro

Numro

uniquement pour une adresse binaire

Exemple
Voici quelques exemples d'adressage absolu d'un bloc de donnes. Le bloc de donnes luimme est indiqu de manire absolue dans la premire partie et de manire symbolique dans la seconde : OCTET_ETAT :=DB101.DB10; ETAT_3 :=DB30.D1.1; VAL_MESURE :=DB25.DW20; OCTET_ETAT :=Donnees_etat.DB10; ETAT_3 :="Nouvelles_donnees".D1.1; VAL_MESURE :=Donnees_mesure.DW20.DW20; ETAT_1 :=WORD_TO_BLOCK_DB (INDICE).DW10;

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

10-9

Donnes globales

10.3.3 Adressage index des blocs de donnes


Vous avez galement la possibilit d'accder aux blocs de donnes de manire indexe. Par rapport l'adressage absolu, l'avantage rside dans le fait que vous pouvez adresser des oprandes dont l'adresse n'est connue qu' l'excution. Ainsi, vous pouvez par exemple utiliser la variable de contrle d'une boucle FOR comme adresse. L'adressage index d'un bloc de donnes s'effectue de manire similaire l'adressage absolu. Seule l'indication de l'adresse est diffrente. A la place de l'adresse, vous spcifiez un indice qui peut tre une constante, une variable ou une expression arithmtique. L'adressage index est compos de la dsignation du DB, de l'identificateur d'oprande (mot-cl "D" et prfixe de taille) ainsi que d'une expression de base pour l'indexation.

Prfixe de taille

Prfixe de mmoire

Dsignation du DB.

D X [i,j]

Adresse
Expression de base comme indice, indique entre crochets

Identificateur d'oprande

Syntaxe

Identificateur d'oprande IDENTIFICATION DU DB

Prfixe de taille

Expression de base

Expression de base

L'indexation doit tre conforme aux rgles suivantes : Dans le cas d'un adressage du type de donnes BYTE, WORD ou DWORD, vous devez utiliser un indice et un seul. Il est interprt comme adresse d'octet. La longueur d'adressage est dtermine par le prfixe de taille. Dans le cas d'un adressage du type de donnes BOOL, vous devez utiliser deux indices. Le premier spcifie l'adresse d'octet, le second la position du bit dans cet octet. Chaque indice doit tre une expression arithmtique du type de donnes INT.

Exemple
ETAT_1:= ETAT_2:= ETAT_1:= ETAT_2:= ETAT_1:= DB11.DW[COMPTEUR]; DB12.DX[NMOT, NBIT]; Base_de_donnees1.DW[COMPTEUR]; Base_de_donnees2.DX[NMOT, NBIT]; WORD_TO_BLOCK_DB(INDICE).DW[COMPTEUR];

10-10

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

Donnes globales

10.3.4 Adressage structur des blocs de donnes


L'adressage structur est ralis au moyen de l'identificateur de la variable dclare dans le bloc de donnes. Vous pouvez affecter la variable toute variable de mme type. Pour rfrencer la variable dans le bloc de donnes, vous indiquez le nom du DB, puis spar par un point, le nom de la variable simple.

Syntaxe

IDENTIFICATION DU DB

Variable simple

Ce faisant, la variable simple reprsente une variable laquelle vous avez affect un type de donnes simple ou complexe lors de la dclaration du DB. L'utilisation, pour introduire l'adressage d'un bloc de donnes, d'un paramtre de type BLOCK_DB ou du rsultat de la fonction de conversion WORD_TO_BLOCk_DB ne permet pas l'adressage structur, mais seulement l'adressage absolu ou index.

Exemple
Dans la section de dclaration du FB10 : VAR Rsultat : STRUCT RES1 : INT; RES2 : WORD; END_STRUCT END_VAR Type de donnes utilisateur UDT1 TYPE UDT1 STRUCT RES1 : INT; RES2 : WORD; END_STRUCT DB20 avec type de donnes utilisateur : DB20 UDT1 BEGIN ... DB30 sans type de donnes utilisateur : DB30 STRUCT RES1 : INT; RES2 : WORD; END_STRUCT BEGIN ... Bloc fonctionnel .. FB10.DB10(); MOT_RES_A := MOT_RES_B := MOT_RES_C := avec les adressages :

DB10.resultat.RES2; DB20.RES2; DB30.RES2;

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

10-11

Donnes globales

10-12

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

11

Expressions, oprations et oprandes

11.1

Oprations
Une expression se compose d'oprations et d'oprandes. La plupart des oprations de S7-SCL combinent deux oprandes et sont par suite qualifies de binaires. Les autres oprations n'utilisant qu'un oprande sont des oprations unaires. Une opration binaire s'crit entre les oprandes (par exemple A + B). Une opration unaire prcde immdiatement son oprande (par exemple -B). C'est la priorit des oprations, indique dans le tableau suivant, qui dtermine l'ordre de calcul. Le chiffre "1" correspond la priorit la plus leve.
Classe Opration d'affectation : Oprations arithmtiques : Opration Affectation Puissance Oprations unaires Plus unaire Moins unaire Oprations arithmtiques de base Multiplication Division Fonction modulo Division entire Addition Soustraction Infriorit Supriorit Infriorit ou galit Supriorit ou galit Egalit Diffrence Ngation Oprations logiques de base Et Ou exclusif Ou Caractres de parenthse : Parenthses Reprsentation := ** + Priorit 11 2 3 3

Oprations de comparaison :

Oprations logiques :

* / MOD DIV + < > <= >= = <> NOT

4 4 4 4 5 5 6 6 6 6 7 7 3

AND ou & XOR OR ()

8 9 10 1

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

11-1

Expressions, oprations et oprandes

11.2

Oprandes
Les oprandes sont des objets avec lesquels vous pouvez former une expression. Voici les lments autoriss pour former des oprandes :
Oprande
Constante Variable tendue

(Expression)

NOT

Oprande

Constantes
Vous pouvez utiliser des constantes sous forme de valeur numrique, de mnmonique ou de chane de caractres.
Constante
Valeur numrique

Chane de caractres

Mnmonique

Voici des exemples de constantes autorises : 4_711 4711 30.0 'CARACTERE' FACTEUR

11-2

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

Expressions, oprations et oprandes

Variable tendue
Variable tendue est un terme gnrique dsignant une srie de variables qui sont traites plus en dtail au chapitre "Affectations de valeur".
Variable tendue
Variable simple Variable absolue pour les zones de mmoire de la CPU Variable dans un DB

Variable dans une instance locale Appel de FC

Exemples de variables correctes : CONSIGNE variable simple EW10 variable absolue E100.5 variable absolue DB100.DW [INDICE] variable dans le DB MOTEUR.VITESSE variable dans l'instance locale SQR (20) fonction standard FC192 (CONSIGNE) appel de fonction

Nota Dans un appel de fonction, le rsultat du calcul, c'est--dire la valeur de retour, remplace le nom de la fonction dans l'expression. Les fonctions VOID qui ne possdent pas de valeur de retour ne sont donc pas autorises comme oprandes dans des expressions.

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

11-3

Expressions, oprations et oprandes

11.3
Syntaxe

Syntaxe d'une expression

Expression
Oprande Oprations logiques de base

Expression

Expression

Oprations de comparaison

Oprations arithmtiques de base Puissance Expression ** Exposants

+ NOT

Expression Plus unaire Moins unaire Ngation ( Expression )

Rsultat d'une expression


Le rsultat d'une expression peut tre : Affect une variable Utilis comme condition d'une instruction de contrle, Utilis comme paramtre pour l'appel d'une fonction ou d'un bloc fonctionnel.

Ordre de calcul
L'ordre de calcul de l'expression est dtermin par : Lapriorit des oprations prsentes ; Leur position de gauche droite ; Les parenthses utilises dans le cas d'oprations de mme priorit.

11-4

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

Expressions, oprations et oprandes

Rgles
Les rgles suivantes s'appliquent la rsolution des expressions : Un oprande plac entre deux oprations de priorits diffrentes est toujours li celle qui a la plus haute priorit. Les oprations sont traites dans l'ordre hirarchique. Les oprations de mme priorit sont traites de gauche droite. Faire prcder un identificateur d'un signe moins quivaut le multiplier par -1. Les oprations arithmtiques ne peuvent pas venir immdiatement la suite l'une de l'autre. Ainsi l'expression a * - b n'est pas autorise, par contre a*(-b) l'est. L'utilisation de parenthses peut annuler la priorit entre des oprations, car les parenthses possdent la priorit la plus leve. Les expressions entre parenthses sont considres comme des oprandes uniques et sont toujours traites en premier. Le nombre de parenthses d'ouverture doit tre quivalent celui des parenthses de fermeture. Les oprations arithmtiques ne peuvent s'appliquer des caractres ou des donnes logiques. Ainsi des expressions telles 'A' + 'B' et (n<=0) + (m>0) sont incorrectes.

Exemples d'expressions
EB10 A1 AND (A2) (A3) < (A4) 3+3*4/2 // // // // oprande expression logique expression de comparaison expression arithmtique

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

11-5

Expressions, oprations et oprandes

11.4

Expression simple
Dans S7-SCL, on entend par expression simple une expression arithmtique simple. Vous pouvez multiplier ou diviser des valeurs constantes deux par deux, puis combiner ces couples par addition ou soustraction.

Syntaxe d'une expression simple :

+ Expression simple Multiplication simple

Syntaxe d'une multiplication simple :

Multiplication simple

* /

DIV MOD

Constante ( Expression simple )

Exemple :
EXPRESSION_SIMPLE= A * B + D / C - 3 * VALEUR1;

11-6

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

Expressions, oprations et oprandes

11.5

Expressions arithmtiques
Il s'agit d'expressions formes d'oprations arithmtiques. Elles permettent de traiter des types de donnes numriques. Le tableau ci-aprs regroupe les oprations possibles et indique quel type il faut associer le rsultat, en fonction des oprandes utiliss. Nous employons les abrviations suivantes :
ANY_INT ANY_NUM pour les types de donnes pour les types de donnes INT, DINT ANY_INT et REAL

Opration Puissance Plus unaire Moins unaire Multiplication Division Division entire Division modulo Addition

Identificateur ** + * / DIV MOD +

1er oprande ANY_NUM ANY_NUM TIME ANY_NUM TIME ANY_NUM TIME ANY_NUM TIME ANY_INT TIME ANY_INT ANY_NUM TIME TOD DT

2nd oprande ANY_NUM ANY_NUM ANY_INT ANY_NUM ANY_INT ANY_INT ANY_INT ANY_INT ANY_NUM TIME TIME TIME ANY_NUM TIME TIME DATE TOD TIME DT

Rsultat REAL ANY_NUM TIME ANY_NUM TIME ANY_NUM TIME ANY_NUM TIME ANY_INT TIME ANY_INT ANY_NUM TIME TOD DT ANY_NUM TIME TOD TIME TIME DT TIME

Priorit 2 3 3 3 3 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5

Soustraction

ANY_NUM TIME TOD DATE TOD DT DT

Nota Le type de donnes du rsultat d'une division (/) est dtermin par le type de donnes de l'oprande de poids le plus lev. Si p. ex. deux oprandes du type de donnes INT sont diviss, le rsultat est galement du type de donnes INT (c'est--dire 10/3=3 correspond 10.0/3=3.33).

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

11-7

Expressions, oprations et oprandes

Rgles
L'ordre de traitement des oprations dans une expression arithmtique est fonction de leur priorit. Pour une meilleure lisibilit, il est recommand d'indiquer les nombres ngatifs entre parenthses, mme lorsque cela n'est pas indispensable. Pour les divisions avec deux oprandes entiers de type INT, les oprations "DIV" et "/" fournissent le mme rsultat (voir l'exemple ci-aprs). Pour les oprations de division "/", "MOD" et "DIV", le second oprande doit tre diffrent de zro. Lorsque l'un des oprandes est du type INT (entier) et le second du type REAL (nombre virgule flottante), le rsultat est toujours du type REAL. Pour la soustraction de donns du type DATE_AND_TIME et TIME, l'oprande avec le type de donnes TIME doit toujours se trouver droite de l'oprateur "-".

Exemples
// Le rsultat (11) de l'expression arithmtique // est affect la variable "VALEUR" VALEUR1 := 3 + 3 * 4 / 2 - (7+3) / (-5) ; // La VALEUR de l'expression suivante est 1 VALEUR2 := 9 MOD 2 ;

11-8

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

Expressions, oprations et oprandes

11.6

Expressions logiques
Il s'agit d'une expression forme d'oprations logiques.

Oprations logiques de base


Vous pouvez combiner les oprations AND, &, XOR et OR avec des oprandes logiques (de type BOOL) ou des variables du type de donnes BYTE, WORD ou DWORD pour former des expressions logiques. L'opration NOT permet de former la ngation d'un oprande logique.
NOT n'est pas un oprateur logique de base ! L'oprateur agit comme un signe.

Oprateurs logiques de base

AND

&

XOR

OR

Oprations logiques
Le rsultat de l'expression est soit TRUE ou FALSE lorsque vous combinez des oprandes boolens, soit un profil binaire aprs combinaison binaire des deux oprandes. Le tableau ci-aprs indique les expressions logiques disponibles ainsi que le type de donnes du rsultat et des oprandes. Nous employons l'abrviation suivante :
ANY_BIT pour les types de donnes BOOL, BYTE, WORD, DWORD

Opration Ngation Intersection OU exclusif OU inclusif

Identificateur NOT AND XOR OR

1er oprande ANY_BIT ANY_BIT ANY_BIT ANY_BIT -

2nd oprande ANY_BIT ANY_BIT ANY_BIT

Rsultat ANY_BIT ANY_BIT ANY_BIT ANY_BIT

Priorit 3 8 9 10

Rsultat
Le rsultat d'une expression logique sera : soit 1 (true) ou 0 (false) dans le cas d'une combinaison d'oprandes boolens, soit un profil binaire aprs la combinaison binaire des deux oprandes.

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

11-9

Expressions, oprations et oprandes

Exemples
// Inversion du rsultat de l'expression de comparaison IF NOT (COMPTEUR > 5) THEN . . . ; // Inversion du rsultat de la premire expression de comparaison et // intersection avec le rsultat de la seconde expression A := NOT (COMPTEUR1 = 4) AND (COMPTEUR2 = 10) ; // Runion de deux expressions de comparaison WHILE (A >= 9) OR (INTERROGATION <> "n") DO.... ; // Masquage d'un octet d'entre (combinaison binaire) Rsultat := EB10 AND 2#11110000 ;

11-10

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

Expressions, oprations et oprandes

11.7

Expressions de comparaison
Les oprations de comparaison comparent les valeurs de deux oprandes et fournissent une valeur boolenne. Si la comparaison s'avre juste, le rsultat est TRUE, dans le cas contraire il est FALSE.

Syntaxe
Opration de comparaison

<

>

<=

>=

<>

Rgles
Le tableau suivant indique les types de donnes comparables ainsi que les rgles appliquer pour la comparaison :
Type de donnes INT = <> >0 <0 > < Rgles Au sein de la classe des types de donnes numriques, tous les oprateurs de comparaison sont autoriss. L'oprateur avec le type le plus fort dtermine le type de l'opration. DINT REAL BOOL Au sein de la classe des types de donnes binaires, seul EGAL et DIFFERENT sont autoriss comme oprateurs de comparaison. L'oprateur avec le type le plus fort dtermine le type de l'opration. BYTE WORD DWORD

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

11-11

Expressions, oprations et oprandes

Type de donnes CHAR

<>

>0

<0

>

<

Rgles Dans le cas des caractres et des chanes de caractres, la longueur des variables ainsi que la valeur numrique de chaque caractre ASCII sont pris en compte pour la comparaison. Dans le cas de STRING, la comparaison est ralise en interne par les fonctions EQ_STRNG, GE_STRNG, LE_STRNG, GT_STRNG et LT_STRNG de la bibliothque CEI. Les oprandes suivants ne sont pas autoriss pour ces fonctions : paramtres d'une FC paramtre IN_OUT d'un FB du type STRUCT ou ARRAY.

STRING DATE TIME DT Dans le cas de DT, la comparaison est ralise en interne par les fonctions

EQ_DT, GE_ DT, LE_ DT, GT_STRNG et LT_ DT de la bibliothque CEI.


Les oprandes suivants ne sont pas autoriss pour ces fonctions : paramtres d'une FC paramtre IN_OUT d'un FB du type STRUCT ou ARRAY.

TOD S5-TIME Les variables S5-TIME ne sont pas autorises comme oprandes de comparaison. Une conversion explicite de S5TIME en TIME au moyen de fonctions CEI s'avre ncessaire.

Combinaison de comparaisons
Vous pouvez combiner des expressions de comparaison selon la logique boolenne. Vous pouvez ainsi former des interrogations telles que "si a < b et b < c alors ...". Les diffrentes oprations sont excutes dans l'ordre de priorit. Vous pouvez modifier la priorit l'aide de parenthses.

11-12

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

Expressions, oprations et oprandes

Exemples
// Comparaison 3 INFERIEUR OU EGAL A 4. Le rsultat // est "TRUE" A := 3 <= 4 // Comparaison 7 DIFFERENT DE 7. Le rsultat // est "FALSE" 7 <> 7 // Rsolution d'une expression de comparaison dans // un aiguillage IF IF COMPTEUR < 5 THEN .... // Combinaison de deux expressions de comparaison Valeur_A > 20 AND Valeur_B < 20 // Combinaison de deux expressions de comparaison avec // des parenthses A<>(B AND C)

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

11-13

Expressions, oprations et oprandes

11-14

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

12

Instructions

12.1

Affectations de valeur
Une affectation de valeur remplace la valeur momentane d'une variable par une nouvelle valeur, indique sous forme d'expression. Cette expression peut aussi contenir des identificateurs de fonctions qui s'en trouvent actives et fournissent des valeurs correspondantes (valeurs de retour). Conformment la figure ci-dessous, l'expression figurant dans la partie droite de l'affectation de valeur est value et le rsultat est mmoris dans la variable dont le nom figure gauche du signe d'affectation. Les variables autorises sont indiques dans la figure suivante.

Syntaxe de l'affectation de valeur :


Affectation de valeur

Variable simple Variable absolue Dans zones de mmoire CPU Variable dans DB

:=

Expression

Variable instance locale

Le type d'une expression d'affectation est celui de l'oprande de gauche. La variable simple peut tre d'un type de donnes simple ou complexe.

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

12-1

Instructions

12.1.1

Affecter une valeur une variable de type de donnes simple


Toute expression et toute variable de type de donnes simple peuvent tre affectes une autre variable de mme type. Identificateur := expression ; Identificateur := variable ;

Exemple
FUNCTION_BLOCK FB12 VAR COMMUTATEUR_1 : INT ; COMMUTATEUR_2 : INT ; CONSIGNE_1 : REAL ; CONSIGNE_2 : REAL ; INTERROG_1 : BOOL ; DUREE_1 : S5TIME ; DUREE_2 : TIME ; DATE_1 : DATE ; HEURE_DU_JOUR_1 : TIME_OF_DAY ; END_VAR BEGIN // Affectation d'une constante une variable COMMUTATEUR_1 := -17 ; CONSIGNE_1 := 100.1 ; INTERROG_1 := TRUE ; DUREE_1 := T#1H_20M_10S_30MS ; DUREE_2 := T#2D_1H_20M_10S_30MS ; DATE_1 := D#1996-01-10 ; // Affectation d'une variable une autre variable CONSIGNE_1 := CONSIGNE_2 ; COMMUTATEUR_2 := COMMUTATEUR_1 ; // Affectation d'une expression une variable COMMUTATEUR_2 := COMMUTATEUR_1 * 3 ; END_FUNCTION_BLOCK

12-2

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

Instructions

12.1.2 Affecter une valeur des variables de type STRUCT et UDT


Les variables de type STRUCT et UDT sont des variables complexes qui reprsentent soit une structure complte, soit un composant de cette structure. Voici des indications correctes de variables complexes : Image Image.element Image.tableau Image.tableau[2,5] //Identificateur d'une structure //Identificateur d'un composant de structure //Identificateur d'un tableau simple //au sein d'une structure //Identificateur d'un composant de tableau //au sein d'une structure

Affectation d'une structure complte


Une structure complte ne peut tre affecte une autre structure que si les types de donnes et les noms des composants sont identiques. Voici une affectation correcte : nomstruct_1 := nomstruct_2;

Affectation de composants de structure


Vous pouvez affecter tout composant d'une structure une variable ou une expression de type compatible ou encore un autre composant de structure. Pour spcifier un composant de structure, vous indiquez l'identificateur de la structure suivi d'un point et de l'identificateur du composant. Voici des affectations correctes : nomstruct_1.element1 nomstruct_1.element1 nomstruct_1.element1 nomstruct_1.nomtableau1 nomstruct_1.nomtableau[10] := := := := := valeur ; 20.0 ; nomstruct_2.element1 ; nomstruct_2.nomtableau2 ; 100 ;

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

12-3

Instructions

Exemple
FUNCTION_BLOCK FB3 VAR VAR_AUX : REAL ; VALEUR_MESURE : STRUCT

//Structure cible TENSION : REAL ; RESISTANCE : REAL ; TABLEAU_SIMPLE : ARRAY

[1..2, 1..2] OF INT ; END_STRUCT ; VALEUR_EFFECTIVE : STRUCT //Structure source TENSION : REAL ; RESISTANCE : REAL ; TABLEAU_SIMPLE : ARRAY [1..2, 1..2] OF INT ; END_STRUCT ; END_VAR BEGIN //Affectation d'une structure complte une autre structure //complte VALEUR_MESURE := VALEUR_EFFECTIVE ; //Affectation d'un composant de structure un autre composant de //structure VALEUR_MESURE.TENSION := VALEUR_EFFECTIVE.TENSION ; //Affectation d'un composant de structure une variable de type //identique VAR_AUX := VALEUR_EFFECTIVE.RESISTANCE ; //Affectation d'une constante un composant de structure VALEUR_MESURE.RESISTANCE := 4.5; //Affectation d'une constante un lment de tableau simple VALEUR_MESURE.TABLEAU_SIMPLE[1,2] := 4; END_FUNCTION_BLOCK

12-4

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

Instructions

12.1.3 Affecter une valeur une variable de type ARRAY


Un tableau se compose de 1 6 dimensions au maximum et contient des lments qui sont tous du mme type. Deux possibilits s'offrent vous pour affecter un tableau une variable. Vous pouvez rfrencer des tableaux complets ou des tableaux partiels.

Affectation d'un tableau complet


Pour que vous puissiez affecter un tableau complet un autre tableau, il faut que les types de donnes des composants et les limites du tableau (plus petit et plus grand indice) soient identiques. Si tel est le cas, indiquez l'identificateur du tableau la suite du signe d'affectation. Voici une affectation correcte : nomtableau_1:=nomtableau_2;

Nota Vous ne devez pas affecter de constantes des tableaux complets.

Affectation d'un composant de tableau


Pour adresser un lment particulier du tableau, vous devez indiquer le nom du tableau suivi des valeurs appropries des indices entre crochets. A chaque dimension correspond un indice. Ils sont spars par des virgules et placs entre crochets. Un indice doit tre une expression arithmtique de type INT. Pour affecter une valeur un tableau partiel, supprimez des indices entre les crochets qui suivent le nom du tableau, en commenant par la droite. Vous adressez ainsi un tableau partiel dont le nombre de dimensions correspond au nombre d'indices omis. Voici des affectations correctes : nomtableau_1[ i ] := nomtableau_2[ j ] ; nomtableau_1[ i ] := expression ; identificateur_1 := nomtableau_1[ i ] ;

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

12-5

Instructions

Exemple
FUNCTION_BLOCK FB3 VAR CONSIGNES : ARRAY [0..127] OF INT ; VALEURS_EFFECTIVES : ARRAY [0..127] OF INT ; //Dclaration d'une matrice (=tableau bidimensionnel) //comportant 3 lignes et 4 colonnes REGULATEUR : ARRAY [1..3, 1..4] OF INT ; //Dclaration d'un vecteur (=tableau unidimensionnel) // 4 composants REGULATEUR_1 : ARRAY [1..4] OF INT ; END_VAR BEGIN //Affectation d'un tableau complet un autre tableau CONSIGNES := VALEURS_EFFECTIVES ; //Affectation d'un vecteur la deuxime ligne //du tableau REGULATEUR REGULATEUR[2] := REGULATEUR_1 ; //Affectation d'un composant de tableau un composant //du tableau REGULATEUR REGULATEUR[1,4] := REGULATEUR_1 [4] ; END_FUNCTION_BLOCK

12-6

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

Instructions

12.1.4 Affecter une valeur une variable de type STRING


Une variable de type STRING contient une chane de 254 caractres au maximum. Vous pouvez lui affecter une autre variable de mme type. Voici des affectations correctes : variable_string_1 := constante_chaine; variable_string_1 := variable_string_2 ;

Exemple
FUNCTION_BLOCK FB3 VAR AFFICHAGE_1 : STRING[50] ; STRUCTURE1 : STRUCT AFFICHAGE_2 : STRING[100] ; AFFICHAGE_3 : STRING[50] ; END_STRUCT ; END_VAR BEGIN // Affectation d'une constante une variable de type STRING AFFICHAGE_1 := 'Erreur dans le module 1' ; // Affectation d'un composant de structure une variable // de type STRING. AFFICHAGE_1 := STRUCTURE1.AFFICHAGE_3 ; // Affectation d'une variable STRING une autre variable // de type STRING If AFFICHAGE_1 <> STRUCTURE1.AFFICHAGE_3 THEN AFFICHAGE_1 := STRUCTURE1.AFFICHAGE_3 ; END_IF; END_FUNCTION_BLOCK

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

12-7

Instructions

12.1.5 Affecter une valeur une variable de type DATE_AND_TIME


Le type de donnes DATE_AND_TIME dfinit une zone de 64 bits (8 octets) pour indiquer la date et l'heure. A toute variable de type DATE_AND_TIME, vous pouvez affecter une autre variable de mme type ou une constante. Voici des affectations correctes : variable_dt_1 := constante_date_heure; variable_dt_1 := variable_dt_2 ;

Exemple
FUNCTION_BLOCK FB3 VAR DUREE_1 : DATE_AND_TIME ; STRUCTURE1 : STRUCT DUREE_2 : DATE_AND_TIME ; DUREE_3 : DATE_AND_TIME ; END_STRUCT ; END_VAR BEGIN // Affectation d'une constante une variable de type DATE_AND_TIME DUREE_1 := DATE_AND_TIME#1995-01-01-12:12:12.2 ; STRUCTURE1.DUREE_3 := DT#1995-02-02-11:11:11 ; // Affectation d'un composant de structure une variable // de type DATE_AND_TIME DUREE_1 := STRUCTURE1.DUREE_2 ; // Affectation d'une variable DATE_AND_TIME une // autre variable DATE_AND_TIME If DUREE_1 < STRUCTURE1.DUREE_3 THEN DUREE_1 := STRUCTURE1.DUREE_3 ; END_IF ; END_FUNCTION_BLOCK

12-8

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

Instructions

12.1.6

Affecter une valeur une variable absolue pour zones de mmoire


Une variable absolue dsigne les zones de mmoire d'une CPU valables globalement. Trois possibilits s'offrent vous pour adresser ces zones de mmoire : Adressage absolu Adressage index Adressage symbolique

Syntaxe de la variable absolue

Variable absolue
Identificateur d'oprande Prfixe de mmoire Prfixe de taille Adresse

Exemple
FUNCTION_BLOCK FB3 VAR MOT_ETAT1 : WORD ; MOT_ETAT2 : BOOL ; MOT_ETAT3 : BYTE ; MOT_ETAT4 : BOOL ; ADRESSE : INT ; END_VAR BEGIN ADRESSE := 10 ; // Affectation d'un mot d'entre une variable (adressage simple) MOT_ETAT1 := EW4 ; // Affectation d'une variable un bit de sortie (adressage simple) a1.1 := MOT_ETAT2 ; // Affectation d'un octet d'entre une variable (adressage index) MOT_ETAT3 := EB[ADRESSE] ; // Affectation d'un bit d'entre une variable (adressage index) FOR ADRESSE := 0 TO 7 BY 1 DO MOT_ETAT4 := e[1, ADRESSE] ; END_FOR ; END_FUNCTION_BLOCK

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

12-9

Instructions

12.1.7

Affecter une valeur une variable globale


L'accs aux donnes dans des blocs de donnes s'effectue galement en affectant une valeur une variable de mme type et inversement. Vous pouvez affecter toute variable globale une variable ou une expression de type identique. Vous pouvez adresser ces donnes de diverses manires : Adressage structur Adressage absolu Adressage index

Syntaxe de la variable de DB
Variable de DB
Identificateur d'oprande DESIGNATION DU DB . D Prfixe de taille Adresse

12-10

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

Instructions

Exemple
FUNCTION_BLOCK FB3 VAR REGULATEUR_1 : ARRAY [1..4] OF INT ; MOT_ETAT1 : WORD ; MOT_ETAT2 : ARRAY [0..10] OF WORD ; MOT_ETAT3 : INT ; MOT_ETAT4 : WORD ; ADRESSE : INT ; END_VAR VAR_INPUT MOT_ADRESSE : WORD ; END_VAR BEGIN // Affectation du mot 1 du DB11 // une variable (adressage simple) MOT_ETAT1 := DB11.DW1 ; // La valeur de la variable "NOMBRE" est affecte // le composant de la 1re ligne et de la 1re // colonne de la matrice (adressage structur) : REGULATEUR_1[1] := DB11.CHIFFRE; // Affectation du composant "NOMBRE2" // de la structure "NOMBRE1" la variable MOT_ETAT3 MOT_ETAT3 := DB11.NOMBRE1.NOMBRE2 ; // Affectation d'un mot du DB11 avec adresse indexe // une variable (adressage index) FOR ADRESSE := 1 TO 10 BY 1 DO MOT_ETAT2[ADRESSE] := DB11.DW[ADRESSE] ; // Le paramtre d'entre MOT_ADRESSE est utilis ici // comme numro du DB et l'indice ADRESSE // pour indiquer l'adresse du mot dans le DB MOT_ETAT4 := WORD_TO_BLOCK_DB(MOT_ADRESSE).DW[ADRESSE] ; END_FOR ; END_FUNCTION_BLOCK

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

12-11

Instructions

12.2

Instructions de contrle

12.2.1 Prsentation des instructions de contrle

Instructions de slection
Une instruction de slection vous permet d'aiguiller le droulement du programme vers diffrentes squences d'instructions en fonction de conditions.
Type de branchement Instruction IF Fonction L'instruction IF vous permet d'aiguiller le droulement du programme vers l'une de deux alternatives, en fonction d'une condition qui est soit vraie, soit fausse. L'instruction CASE vous permet d'orienter le droulement du programme vers l'une parmi n variantes, en faisant prendre une variable une valeur parmi n valeurs possibles.

Instruction CASE

Traitement de boucles
Vous pouvez programmer l'excution de boucles en utilisant des instructions d'itration. Une instruction d'itration indique quelles parties d'un programme doivent tre rptes en fonction de certaines conditions.
Type de branchement Instruction FOR Instruction WHILE Instruction REPEAT Fonction Elle sert rpter une suite d'instructions tant que la variable de contrle reste dans la plage de valeurs indique. Elle sert rpter une suite d'instructions tant qu'une condition d'excution est ralise. Elle sert rpter une suite d'instructions jusqu' ce qu'une condition d'achvement soit obtenue.

Saut dans le programme


Un saut dans le programme provoque le saut immdiat un repre spcifi et donc une autre instruction dans le mme bloc.
Type de branchement Instruction CONTINUE Instruction EXIT Instruction GOTO Instruction RETURN Fonction Elle sert abandonner l'excution du parcours momentan de la boucle. Elle sert quitter une boucle un endroit quelconque, que la condition d'abandon soit remplie ou pas. Elle provoque le saut immdiat un repre de saut spcifi. Elle permet de quitter un bloc en cours d'excution.

12-12

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

Instructions

12.2.2 Conditions
Une condition peut tre une expression de comparaison, une expression logique ou une expression arithmtique. Elle est du type de donnes BOOL et peut prendre les valeurs TRUE (VRAI) ou FALSE (FAUX). Une expression arithmtique est TRUE si elle prend une valeur diffrente de zro et FALSE si le rsultat est gal zro. Le tableau suivant prsente des exemples de conditions :
Type Expression de comparaison Exemple TEMPO > 50 COMPTEUR <= 100 CAR1 < 'S' (ALPHA <> 12) AND NOT BETA E1.1 ALPHA = (5 + BETA)

Expression de comparaison et expression logique Oprande boolen Expression arithmtique

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

12-13

Instructions

12.2.3 Instruction IF
Il s'agit d'une instruction conditionnelle. Elle propose une ou plusieurs options et slectionne l'une (ou aucune) des sections d'instructions pour l'excuter. L'excution de l'instruction conditionnelle provoque l'valuation des expressions logiques spcifies. Si la valeur d'une expression est vraie, la condition est considre comme remplie ; elle ne l'est pas si la valeur est fausse.

Syntaxe
Instruction IF

IF

Expression Condition

THEN

Section des instructions

ELSIF

Expression Condition

THEN

Section des instructions

ELSE

Section des instructions

END_IF

Rgles rgissant l'excution de l'instruction IF : La premire suite d'instructions dont l'expression logique est vraie (TRUE) vient excution, les autres suites d'instructions ne sont pas excutes. Si aucune expression boolenne n'est vraie (TRUE), c'est la suite d'instructions indique aprs ELSE qui est excute (ou aucune instruction s'il n'y a pas de branche ELSE). Le nombre d'instructions ELSIF possibles est illimit.

Nota L'avantage d'utiliser une ou plusieurs branches ELSIF plutt qu'une squence d'instructions IF rside dans le fait qu'aprs la premire expression logique vraie, les suivantes ne sont plus values ce qui permet de diminuer la dure d'excution d'un programme.

12-14

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

Instructions

Exemple
IF E1.1 THEN N := 0 ; SOMME := 0 ; OK := FALSE ; // Attribuer la valeur FALSE au drapeau OK ELSIF START = TRUE THEN N := N + 1 ; SOMME := SOMME + N ; ELSE OK := FALSE ; END_IF ;

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

12-15

Instructions

12.2.4 Instruction CASE


L'instruction CASE sert choisir entre 1 n variantes de parties de programmes. Cette slection repose sur la valeur en cours d'une expression de slection.

Syntaxe
Instruction CASE
Expression de slection (entier) CASE Expression Valeur OF

Liste de valeurs

Section des instructions

ELSE

Section des instructions

END_CASE

Rgles rgissant l'excution d'une instruction CASE : L'expression de slection doit fournir une valeur de type INTEGER. Lors de l'excution d'une instruction CASE, le programme vrifie si la valeur de l'expression de slection figure dans la liste de valeurs spcifie. Si tel est le cas, la section d'instructions affecte la liste est excute. Si l'opration de comparaison ne trouve pas la valeur en question dans la liste, c'est la section d'instructions indique aprs ELSE qui est excute, ou aucune instruction s'il n'y a pas de branche ELSE.

12-16

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

Instructions

Liste de valeurs
Elle contient les valeurs autorises pour l'expression de slection.
Liste de valeurs
Nombre entier Valeur

Valeur

..

Valeur

Rgles en vigueur : Toute liste de valeurs commence par une constante, une liste de constantes ou une plage de constantes. Les valeurs contenues dans la liste doivent tre du type de donnes entier (INTEGER). Chaque valeur doit n'y figurer qu'une seule fois.

Valeur
La syntaxe de la valeur est la suivante :

Constante numrique

IDENTIFICATEUR Nom de la constante

Exemple
CASE TW OF 1 : 2 : 3 : 4..10: 11,13,19: ELSE: AFFICHAGE:= 0; TW_ERREUR:= 1; END_CASE ; AFFICHAGE:= TEMP_FOUR; AFFICHAGE:= VITESSE_MOTEUR; AFFICHAGE:= TARE_BRUTE; AW4:= 16#0003; AFFICHAGE:= INT_TO_DINT (TW); AW4:= 16#0004; AFFICHAGE:= 99; AW4:= 16#0005;

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

12-17

Instructions

12.2.5 Instruction FOR


Une instruction FOR sert rpter une suite d'instructions aussi longtemps qu'une variable de contrle se trouve dans la plage de valeurs spcifie. La variable de contrle doit tre l'identificateur d'une variable locale de type INT ou DINT. En dfinissant une boucle, l'instruction FOR fixe aussi une valeur initiale et une valeur finale. Toutes deux doivent tre du mme type que la variable de contrle.

Syntaxe
Instruction FOR
Affectation initiale pour la valeur initiale Expression de base pour la valeur terminale

FOR

TO

BY

Expression de base pour l'incrment

DO

Section des instructions

END_FOR

Excution d'une instruction FOR Au dpart de la boucle, la valeur initiale est attribue la variable de contrle (affectation initiale) qui est ensuite augmente (pas positif) ou diminue (pas ngatif) du pas indiqu aprs chaque nouvelle itration, jusqu' ce que la valeur finale soit atteinte. Aprs chaque parcours, le programme vrifie si la condition (variable de contrle dans la plage de valeurs) est remplie. Si c'est le cas, la suite d'instructions est excute, sinon la boucle (c'est--dire la suite d'instructions) est saute.

Rgles
Rgles dont il faut tenir compte pour formuler une instruction FOR : La variable de contrle doit tre exclusivement du type de donnes INT ou DINT. L'indication de BY [incrment] est facultative. En son absence, la valeur utilise est +1.

12-18

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

Instructions

Affectation initiale
Pour la valeur initiale de la variable de contrle, la syntaxe doit tre la suivante. La variable simple se trouvant gauche de l'affectation doit tre du type INT ou DINT.
Instruction initiale
Variable tendue Expression de base pour la valeur initiale

:=

Type de donnes INT/DINT

Voici des exemples d'affectations initiales correctes : FOR I := 1 TO 20 FOR I := 1 TO (INITIALE + J)

Valeur finale et incrment


Pour former la valeur finale et l'incrment, vous pouvez respectivement crer une expression de base. La syntaxe de l'expression de base doit tre la suivante :

Oprande Expression de base Oprateur arithmtique de base Expression de base

exclusivement pour une instruction FOR + ( Expression de base ) Expression de base

L'indication de BY [incrment] est facultative. En son absence, la valeur utilise est +1. Valeur initiale, valeur finale et incrment sont des expressions (voir au chapitre "Expressions, oprations, oprandes") dont l'valuation est ralise une seule fois au dbut de l'excution de l'instruction FOR. Il n'est pas permis de modifier la valeur finale et l'incrment pendant l'excution de la boucle.

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

12-19

Instructions

Exemple
FUNCTION_BLOCK FOR_BSP VAR INDICE: INT ; MOT_CLE: ARRAY [1..50] OF STRING; END_VAR BEGIN FOR INDICE := 1 TO 50 BY 2 DO IF MOT_CLE [INDICE] = 'CLE' THEN EXIT; END_IF; END_FOR; END_FUNCTION_BLOCK

12-20

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

Instructions

12.2.6 Instruction WHILE


L'instruction WHILE permet de reprendre l'excution d'une suite d'instructions tant qu'une condition d'excution est remplie. Cette condition est forme conformment aux rgles d'une expression logique.

Syntaxe
Instruction WHILE

WHILE

Expression Condition d'excution

DO

Section des instructions

END_WHILE

Rgles rgissant l'excution d'une instruction WHILE : Avant chaque excution de la section d'instructions, la condition d'excution est value (boucle de refus). La section d'instructions suivant DO est rpte tant que la condition d'excution fournit la valeur TRUE. Si la condition d'excution fournit la valeur FALSE, la boucle est saute et c'est l'instruction suivante qui est excute.

Exemple
FUNCTION_BLOCK WHILE_BSP VAR INDICE: INT ; MOT_CLE: ARRAY [1..50] OF STRING ; END_VAR BEGIN INDICE := 1 ; WHILE INDICE <= 50 AND MOT_CLE[INDICE] <> 'CLE' DO INDICE := INDICE + 2; END_WHILE ; END_FUNCTION_BLOCK

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

12-21

Instructions

12.2.7 Instruction REPEAT


L'instruction REPEAT provoque l'excution rpte de la suite d'instructions figurant entre REPEAT et UNTIL, jusqu' ce que la condition d'abandon soit remplie. Cette condition est forme suivant les rgles d'une expression logique.

Syntaxe
Instruction REPEAT
Section des instructions

REPEAT

UNTIL

Expression

END_REPEAT

Condition d'abandon

La condition est vrifie chaque parcours aprs l'excution du tronc. Cela signifie que le tronc est excut au moins une fois, mme si la condition d'abandon est remplie ds le dbut.

Exemple
FUNCTION_BLOCK REPEAT_BSP VAR INDICE: INT ; MOT_CLE: ARRAY [1..50] OF STRING ; END_VAR BEGIN INDICE := 0 ; REPEAT INDICE := INDICE + 2 ; UNTIL INDICE > 50 OR MOT_CLE[INDICE] = 'CLE' END_REPEAT ; END_FUNCTION_BLOCK

12-22

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

Instructions

12.2.8 Instruction CONTINUE


L'instruction CONTINUE sert abandonner l'excution du parcours momentan d'une instruction d'itration (FOR, WHILE ou REPEAT).

Syntaxe
Instruction CONTINUE

CONTINUE

Rgles rgissant l'excution d'une instruction CONTINUE : Cette instruction provoque l'abandon immdiat de l'excution de la suite d'instructions. Selon que la condition de rptition de la boucle est remplie ou pas, le tronc est excut encore une fois ou bien le programme quitte l'instruction d'itration pour excuter l'instruction immdiatement suivante. Dans une instruction FOR, la variable de contrle est augmente du pas indiqu, aussitt aprs une instruction CONTINUE.

Exemple
FUNCTION_BLOCK CONTINUE_EX VAR INDICE :INT ; TABLEAU :ARRAY[1..100] OF INT ; END_VAR BEGIN INDICE := 0 ; WHILE INDICE <= 100 DO INDICE := INDICE + 1 ; // Si TABLEAU[INDICE] est gal INDICE, // alors TABLEAU [INDICE] n'est pas modifi : IF TABLEAU[INDICE] = INDICE THEN CONTINUE ; END_IF ; TABLEAU[INDICE] := 0 ; // Autres instructions END_WHILE ; END_FUNCTION_BLOCK

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

12-23

Instructions

12.2.9 Instruction EXIT


L'instruction EXIT sert quitter une boucle (FOR, WHILE ou REPEAT) un endroit quelconque, que la condition d'abandon soit remplie ou pas.

Syntaxe
Instruction EXIT

EXIT

Rgles rgissant l'excution d'une instruction EXIT : Cette instruction provoque l'abandon instantan de l'instruction d'itration qui est dans son entourage immdiat. L'excution du programme se poursuit aprs la fin de la boucle d'itration (par exemple aprs END_FOR).

Exemple
FUNCTION_BLOCK EXIT_EX VAR INDICE_1 INDICE_2 INDICE_CHERCHE MOT_CLE END_VAR

: : : :

INT ; INT ; INT ; ARRAY[1..51] OF STRING ;

BEGIN INDICE_2 := 0 ; FOR INDICE_1 := 1 TO 51 BY 2 DO // Quitter la boucle FOR si // MOT_CLE[INDICE_1] est gal 'CLE' IF MOT_CLE[INDICE_1] = 'CLE' THEN INDICE_2 := INDICE_1 ; EXIT ; END_IF ; END_FOR ; // L'affectation de valeur suivante est excute // aprs l'excution de l'instruction EXIT ou // aprs la fin normale de la boucle FOR : INDICE_CHERCHE := INDICE_2 ; END_FUNCTION_BLOCK

12-24

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

Instructions

12.2.10 Instruction GOTO


L'instruction GOTO vous permet de raliser un saut (un branchement) dans le programme. Elle provoque le saut immdiat un repre de saut spcifi, c'est--dire une autre instruction dans le mme bloc. L'instruction GOTO ne doit tre utilise qu' titre exceptionnel, par exemple pour le traitement des erreurs. En effet, son utilisation est contraire aux rgles de la programmation structure.

Syntaxe
Branchement de programme
GOTO IDENTIFICATEUR Repre de saut

"Repre de saut" dsignant un repre dans la section de dclaration LABEL/END_LABEL. Il est plac devant l'instruction qui doit tre excute immdiatement aprs GOTO. Rgles dont il faut tenir compte pour utiliser une instruction GOTO : La cible d'une instruction de saut doit se trouver dans le mme bloc. La cible doit tre univoque. Un saut menant dans une boucle n'est pas autoris. Un saut sortant d'une boucle est possible.

Exemple
FUNCTION_BLOCK GOTO_EX VAR INDICE : INT ; A : INT ; B : INT ; C : INT ; MOT_CLE : ARRAY[1..51] OF STRING ; END_VAR LABEL REPERE1, REPERE2, REPERE3 ; END_LABEL BEGIN IF A > B THEN GOTO REPERE1 ; ELSIF A > C THEN GOTO REPERE2 ; END_IF ; // . . . REPERE1: INDICE := 1 ; GOTO REPERE3 REPERE2: INDICE := 2 ; // . . . REPERE3: // . . .

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

12-25

Instructions

12.2.11 Instruction RETURN


L'instruction RETURN permet de quitter le bloc actif (OB, FB, FC) et de revenir au bloc appelant ou au systme d'exploitation, si c'est un OB qui est quitt.

Syntaxe
Instruction RETURN
RETURN

Nota A la fin de la section d'excution d'un bloc de code ou de la section de dclaration d'un bloc de donnes, l'instruction RETURN serait redondante puisqu'elle est excute automatiquement.

12-26

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

Instructions

12.3

Appel de fonctions et de blocs fonctionnels

12.3.1 Appel et transmission de paramtres

Appel de FC et FB
Afin d'assurer une meilleure lisibilit et une maintenance plus aise des programmes utilisateur, il est usuel de diviser l'ensemble des fonctions d'un programme en tches partielles, ralises par des blocs fonctionnels (FB) et des fonctions (FC). Dans un bloc S7-SCL, vous avez galement la possibilit d'appeler d'autres FC ou FB, savoir : les blocs fonctionnels et fonctions crs dans S7-SCL, les blocs fonctionnels et fonctions crs dans d'autres langages de programmation de STEP 7 (CONT, LOG, LIST), des fonctions systme (SFC) et blocs fonctionnels systme (SFB), disponibles dans le systme d'exploitation de votre CPU.

Principe de la transmission de paramtres


Lorsque vous appelez une fonction ou un bloc fonctionnel, un change de donnes a lieu entre le bloc appelant et le bloc appel. Dans l'interface du bloc appel sont dfinis des paramtres avec lesquels le bloc travaille. Ce sont les paramtres formels. Leur unique fonction est de rserver la place pour les paramtres qui seront transmis au bloc lors de son appel. Ces derniers sont les paramtres effectifs.

Syntaxe de la transmission de paramtres


Les paramtres transmettre doivent tre indiqus sous forme de liste de paramtres lors de l'appel. Ils doivent figurer entre parenthses et tre spars par des virgules. L'exemple suivant montre l'appel d'une fonction indiquant un paramtre d'entre, un paramtre d'entre/sortie et un paramtre de sortie.

Paramtres effectifs 3 LONGUEUR Somme_chif

Paramtres formels Par_E Par_E/S Par_S

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

12-27

Instructions

L'indication des paramtres a la forme d'une affectation de valeur. Elle consiste en effet affecter des valeurs (paramtres effectifs) aux paramtres que vous avez dfinis dans la section de dclaration du bloc appel (paramtres formels).

Appel absolu : FB10.DB20 (X1:=5,X2:=78,......);


Affectation des paramtres

Appel symbolique : MOTEUR.MARCHE (X1:=5,X2:=78,......);

12-28

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

Instructions

12.3.2

Appel de blocs fonctionnels

12.3.2.1 Appel d'un bloc fonctionnel (FB ou SFB)


Pour l'appel d'un bloc fonctionnel, vous pouvez utiliser aussi bien un bloc de donnes d'instance global qu'une zone d'instance locale du bloc de donnes d'instance actif. C'est l'endroit o les donnes sont enregistres qui distingue l'appel d'un FB comme instance locale de son appel comme instance globale. Dans le premier cas, les donnes ne sont pas stockes dans un DB spar, mais dans le bloc de donnes d'instance du FB appelant.

Syntaxe
Appel d 'un FB
FB : bloc fonctionnel SFB : bloc fonctionnel systme

DESIGNATION DU FB

Nom de l'instance globale


DESIGNATION DU SFB . DESIGNATION DU DB ( Paramtres du FB )

IDENTIFICATEUR

Nom de l'instance locale

Appel comme instance globale


Vous indiquez dans l'instruction d'appel : Le nom du bloc fonctionnel ou du bloc fonctionnel systme (dsignation de FB ou de SFB) Le bloc de donnes d'instance (dsignation de DB) Les valeurs des paramtres (paramtres du FB) L'appel d'une instance globale peut tre absolu ou symbolique.

Appel absolu : FB10.DB20 (X1:=5,X2:=78,......);


Affectation des paramtres

Appel symbolique : MOTEUR.MARCHE (X1:=5,X2:=78,......);

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

12-29

Instructions

Appel comme instance locale


Vous indiquez dans l'instruction : Le nom de l'instance locale (identificateur) Les valeurs des paramtres (paramtres du FB) L'appel d'une instance locale est toujours symbolique. Vous devez dclarer le mnmonique correspondant dans la section de dclaration du bloc appelant.

MOTEUR (X1:=5,X2:=78,......); Affectation des paramtres

12-30

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

Instructions

12.3.2.2 Dfinition des paramtres du FB


A l'appel d'un bloc fonctionnel comme instance globale ou locale vous devez dfinir les paramtres suivants dans la liste des paramtres : Les paramtres d'entre Les paramtres d'entre/sortie Les paramtres de sortie ne sont pas spcifis l'appel d'un FB, mais reoivent des valeurs aprs l'appel de ce dernier.

Syntaxe d'une affectation de valeur aux paramtres du FB :


Elle est la mme qu'il s'agisse d'appeler une instance globale ou une instance locale.
Paramtres du FB
Affectation de l'entre

Affectation de l'entre/sortie

Pour dfinir un paramtre, vous devez tenir compte des rgles suivantes : L'ordre des affectations est quelconque. Les types de donnes paramtre formel et paramtre effectif doivent tre identiques. Chaque affectation est spare de la prcdente par une virgule. Affecter des valeurs aux sorties n'est pas possible dans un appel de FB. La valeur d'un paramtre de sortie que vous avez dclar est enregistre dans les donnes d'instance o elle peut tre adresse par tous les FB. Pour la lire, vous devez dfinir son adressage partir d'un FB. Tenez compte des particularits des paramtres de type de donnes ANY et de type de donnes POINTER.

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

12-31

Instructions

Rsultat aprs l'excution du bloc


Aprs l'excution du bloc Les paramtres d'entre actuels transmis n'ont pas chang ; Les valeurs des paramtres d'entre/sortie transmises mais modifies sont actualises, l'exception des paramtres d'entre/sortie de type de donnes simple ; Les paramtres de sortie du bloc appelant peuvent tre lus dans le bloc de donnes d'instance ou dans la zone d'instance locale.

Exemple
Voici un exemple d'appel avec dfinition d'un paramtre d'entre et d'un paramtre d'entre/sortie : FB31.DB77(Par_E:=3, Par_ES:=LONGUEUR);

12-32

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

Instructions

12.3.2.3 Dfinition des entres (FB)


Des paramtres effectifs sont affects aux paramtres formels d'entre au moyen d'affectations de valeur. Le FB ne peut pas modifier ces paramtres effectifs. L'affectation de valeurs actuelles aux paramtres d'entre est facultative. Si vous n'indiquez pas de nouveaux paramtres effectifs, les valeurs du dernier appel restent en vigueur. Paramtres effectifs possibles :
Paramtre effectif Expression Explication Dsignation de temporisation/ de compteur Dsignation de bloc Expression arithmtique, logique ou de comparaison Constante Variable tendue

Vous dterminez une temporisation ou un compteur qui doivent tre utiliss l'excution d'un bloc. Vous dterminez un bloc qui doit tre utilis comme paramtre d'entre. Le type de bloc (FB, FC, DB) est fix dans la dclaration du paramtre d'entre. Dans la dfinition du paramtre, vous indiquez l'adresse du bloc sous forme absolue ou symbolique.

Syntaxe
Affectation de l'entre
Paramtre effectif Expression DESIGNATION DE LA TEMPORISATION IDENTIFICATEUR Nom du paramtre d'entre (Paramtre formel) := DESIGNATION DU COMPTEUR DESIGNATION DU BLOC

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

12-33

Instructions

12.3.2.4 Dfinition des entres/sorties (FB)


Des paramtres effectifs sont affects aux paramtres formels d'entre/sortie du FB appel au moyen d'affectations de valeur. Les paramtres d'entre/sortie peuvent tre modifis par le FB appel. La nouvelle valeur du paramtre qui rsulte de l'excution du FB s'inscrit dans le paramtre effectif o elle crase la valeur initiale. Si vous avez dclar des paramtres d'entre/sortie dans le FB appel, vous devez les dfinir lors du premier appel. Pour les passages suivants, l'indication de paramtres effectifs est facultative. Cependant, dans le cas de paramtres d'entre/sortie d'un type de donnes simple, les paramtres effectifs ne sont pas actualiss si les paramtres formels ne sont pas dfinis lors de l'appel. Puisque le paramtre effectif attribu peut tre modifi durant l'excution du FB, en sa qualit de paramtre d'entre/sortie, il doit s'agir d'une variable.
Paramtre effectif Explication

Variable tendue

Vous pouvez utiliser les types de variables tendues suivants :


Variable simple et paramtre Adressage de variable absolue Adressage de bloc de donnes Appel de fonction

Syntaxe
Affectation de l'entre/sortie
Variable tendue Paramtre effectif

IDENTIFICATEUR Nom du paramtre d'entre/sortie (Paramtre formel)

:=

Nota

Pour les types de donnes ANY et POINTER, il faut tenir compte de rgles spciales lors du paramtrage. Les paramtres effectifs suivants ne peuvent pas tre affects aux paramtres d'entre/sortie d'un type de donnes non simple : Paramtre d'entre/sortie d'un FB Paramtre d'une FC

12-34

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

Instructions

12.3.2.5 Lecture des valeurs de sortie (appel de FB)


Une fois le bloc appel excut, les paramtres de sortie peuvent tre lus dans le bloc d'instance globale ou dans la zone d'instance locale l'aide d'une affectation de valeur.

Exemple
RESULTAT := DB10.CONTROLE ;

12.3.2.6 Exemple d'appel d'une instance globale


Un bloc fonctionnel comportant une boucle FOR pourrait se prsenter comme dans les exemples suivants. On y suppose que le mnmonique TEST a t dclar pour le FB17 dans la table des mnmoniques.

Bloc fonctionnel
FUNCTION_BLOCK TEST VAR_INPUT VALEUR_FINALE: INT; END_VAR VAR_IN_OUT IQ1 : REAL; END_VAR VAR_OUTPUT CONTROLE: BOOL; END_VAR VAR INDICE: INT; END_VAR BEGIN CONTROLE FOR INDICE IQ1 IF

// Paramtre d'entre

//Paramtre d'entre/sortie

//Paramtre de sortie

:=FALSE; := 1 TO VALEUR_FINALE DO :=IQ1*2; IQ1 > 10000 THEN CONTROLE := TRUE; END_IF;

END_FOR; END_FUNCTION_BLOCK

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

12-35

Instructions

Appel
Vous pouvez appeler ce FB de l'une des faons suivantes. On suppose que VARIABLE1 a t dclare comme variable de type REAL dans le bloc appelant. //Appel absolu, instance globale : FB17.DB10 (VALEUR_FINALE:=10, IQ1:=VARIABLE1); //Appel symbolique, instance globale : TEST.TEST_1 (VALEUR_FINALE:= 10, IQ1:= VARIABLE1) ;

Rsultat
Une fois le bloc excut, la valeur fournie pour le paramtre d'entre/sortie IQ1 est disponible dans la VARIABLE1.

Lecture de la valeur de sortie


Il y a plusieurs faons de lire le paramtre de sortie CONTROLE : // L'adressage du paramtre de sortie // est ralis par RESULTAT:= DB10.CONTROLE; //Vous avez galement la possibilit d'affecter //directement le paramtre de sortie un //paramtre d'entre l'appel d'un autre FB : FB17.DB12 (ENTREE_1:= DB10.CONTROLE);

12-36

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

Instructions

12.3.2.7 Exemple d'appel d'une instance locale


Un bloc fonctionnel avec une boucle FOR simple pourrait tre programm comme dans l'exemple "Appel en tant qu'instance globale", le mnmonique TEST ayant t dclar pour le FB17 dans la table de mnmoniques. En supposant que VARIABLE1 est dclare comme variable de type REAL dans le bloc appelant, vous pouvez appeler le FB comme suit.

Appel
FUNCTION_BLOCK CALL VAR // Dclaration d'instance locale TEST_L : TEST ; VARIABLE1 : REAL ; RESULTAT : BOOL ; END_VAR BEGIN . . . // Appel, instance locale : TEST_L (VALEUR_FINALE:= 10, IQ1:= VARIABLE1) ;

Lecture de la valeur de sortie


Le paramtre de sortie CONTROLE peut tre lu de la manire suivante : // L'adressage du paramtre de sortie // est ralis par RESULTAT := TEST_L.CONTROLE ; END_FUNCTION_BLOCK

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

12-37

Instructions

12.3.3

Appel de fonctions

12.3.3.1 Appel d'une fonction (FC)


Pour appeler une fonction, vous indiquez son nom (DESIGNATION DE LA FC, DE LA SFC ou IDENTIFICATEUR) ainsi que la liste des paramtres. Le nom de la fonction qui dsigne la valeur de retour peut tre absolu ou symbolique : FC31 (X1:=5, Q1:=total_horizontal) ECART (X1:=5, Q1=:total_horizontal) // sous forme absolue // sous forme symbolique

Aprs l'appel, les rsultats de la fonction sont disponibles comme valeurs de retour ou comme paramtres de sortie et d'entre/sortie (paramtres effectifs).

Syntaxe

Appel de fonction

DESIGNATION DE LA FC

DESIGNATION DE LA SFC

Paramtres de la FC FC : fonction SFC : fonction systme

IDENTIFICATEUR Nom de la fonction standard ou mnmonique

Fonction standard ralise dans le compilateur

Nota L'appel dans S7-SCL d'une fonction dont la valeur de retour n'a pas t dfinie peut entraner une excution errone du programme utilisateur.

Pour une fonction programme dans S7-SCL, ce cas peut se produire quand la valeur de retour a certes t dfinie, mais que l'instruction en question n'est pas parcourue. Pour une fonction programme dans CONT/LOG/LIST, ce cas peut se produire quand la fonction a t programme sans dfinition de la valeur de retour ou quand l'instruction en question n'est pas excute.

12-38

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

Instructions

12.3.3.2 Valeur de retour (FC)


Contrairement au blocs fonctionnels, les fonctions fournissent la valeur de retour comme rsultat. C'est la raison pour laquelle elles peuvent tre traites comme des oprandes ( l'exception des fonctions du type VOID). La fonction calcule la valeur de retour qui porte le mme nom qu'elle et la retourne au bloc appelant, o elle remplace l'appel de la fonction. L'exemple suivant montre l'appel de la fonction ECART et l'affectation de son rsultat la variable LONGUEUR. LONGUEUR:= ECART (X1:=-3, Y1:=2); La valeur de retour peut tre utilise dans les lments suivants d'une FC ou d'un FB : Dans une affectation de valeur, Dans une expression logique, arithmtique ou de comparaison ou Comme paramtre pour un autre appel de bloc fonctionnel ou de fonction.

Nota

Avec les fonctions dont la valeur de retour est du type ANY, il faut qu'un paramtre d'entre ou d'entre/sortie au moins soit aussi du type ANY. Si vous avez dfini plusieurs paramtres ANY, vous devez leur affecter des paramtres effectifs de la mme classe (par exemple INT, DINT et REAL). La valeur de retour est alors automatiquement du plus grand type de donnes utilis dans cette classe. La longueur maximale du type de donnes STRING peut tre rduite de 254 caractres un nombre de caractres quelconque.

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

12-39

Instructions

12.3.3.3 Paramtres de FC
Contrairement aux blocs fonctionnels, les fonctions n'ont pas de mmoire o enregistrer les valeurs des paramtres. Les donnes locales ne sont enregistres que temporairement durant l'excution de la fonction. C'est la raison pour laquelle, lorsque vous appelez une fonction, vous devez affecter un paramtre effectif chaque paramtre formel d'entre, d'entre/sortie et de sortie que vous avez dclar dans la section de dclaration de la fonction.

Syntaxe
Paramtres d'une FC
Expression Affectation de l'entre Affectation de la sortie ou de l'entre/sortie ,

Rgles
Pour dfinir un paramtre, vous devez tenir compte des rgles suivantes : L'ordre des affectations est quelconque. Les types de donnes du paramtre formel et du paramtre effectif doivent tre identiques. Chaque affectation est spare de la prcdente par une virgule.

Exemple
Voici un exemple d'appel avec dfinition d'un paramtre d'entre, d'un paramtre de sortie et d'un paramtre d'entre/sortie : FC32 (Param_e1:=5,Param_es1:=LONGUEUR, Param_s1:=total_horizontal)

12-40

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

Instructions

12.3.3.4 Dfinition des entres (FC)


Des valeurs (paramtres effectifs) sont affects aux paramtres formels d'entre de la FC appele, au moyen d'affectations de valeur. La FC peut travailler avec ces paramtres, mais pas les modifier. Contrairement ce qui se passe pour l'appel d'un FB, ce paramtrage est obligatoire dans l'appel d'une FC. Les paramtres effectifs suivants peuvent tre affects une entre :
Paramtre effectif Explication

Expression

Une expression reprsente une valeur et se compose d'oprandes et d'oprations. Voici les types d'expressions disponibles :

Expression arithmtique, logique ou de comparaison Constante Variable tendue

Dsignation de temporisation/ de compteur Dsignation de bloc

Vous dterminez une temporisation ou un compteur qui doivent tre utiliss l'excution d'un bloc Vous dterminez un bloc qui doit tre utilis comme paramtre d'entre. Le type de bloc (FB, FC, DB) est fix dans la dclaration du paramtre d'entre. En dfinissant le paramtre, vous indiquez l'adresse du bloc sous forme absolue ou symbolique

Syntaxe
Affectation de l'entre
Paramtre effectif Expression DESIGNATION DE LA TEMPORISATION IDENTIFICATEUR Nom du paramtre d'entre := DESIGNATION DU COMPTEUR DESIGNATION DU BLOC

(Paramtre formel)

Nota Pour les paramtres formels d'entre qui ne sont pas d'un type de donnes simple, les paramtres d'entre/sortie de FB et les paramtres de FC ne sont pas autoriss comme paramtres effectifs. Tenez compte aussi des particularits des types de donnes ANY et POINTER.

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

12-41

Instructions

12.3.3.5 Dfinition des sorties et des entres/sorties (FC)


Dfinir les sorties consiste spcifier la variable du bloc appelant dans laquelle seront crites les valeurs de sortie rsultant de l'excution de la fonction. Dfinirr les entres/sorties consiste affecter une valeur effective chaque paramtre d'entre/sortie. Dans la dfinition des sorties et des entres/sorties, les paramtres effectifs doivent tre des variables, puisque la FC doit crire des valeurs dans les paramtres. C'est la raison pour laquelle vous ne pouvez pas affecter un paramtre d'entre un paramtre d'entre/sortie (la nouvelle valeur ne pourrait pas y tre crite). Ainsi donc, seule une variable tendue peut tre affecte dans la dfinition des sorties et des entres/sorties :
Paramtre effectif Explication

Variable tendue

Vous pouvez utiliser les types de variables tendues suivants :


Variable simple et paramtre Adressage de variable absolue Adressage de bloc de donnes Appel de fonction

Syntaxe

Affectation de la sortie ou de l'entre/sortie

IDENTIFICATEUR Nom du paramtre de sortie ou d'entre/sortie (Paramtre formel)

:=

Variable tendue Paramtre effectif

12-42

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

Instructions

Nota Les paramtres effectifs suivants ne sont pas autoriss pour les paramtres formels d'entre/sortie :

Les paramtres d'entre de FB/FC Les paramtres d'entre/sortie de FB d'un type de donnes non simple Les paramtres de sortie et d'entre/sortie de FC d'un type de donnes non simple

Tenez compte aussi des particularits des types de donnes ANY et POINTER. La longueur maximale du type de donnes STRING peut tre rduite de 254 caractres un nombre de caractres quelconque.

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

12-43

Instructions

12.3.3.6 Exemple d'appel de fonction


Fonction appele
Soit la fonction ECART permettant de calculer l'cart entre deux points (X1,Y1) et (X2,Y2) dans un plan l'aide de leur coordonnes cartsiennes (il est suppos que le mnmonique ECART a t dclar pour la FC37 dans la table des mnmoniques) : FUNCTION ECART: REAL // sous forme symbolique VAR_INPUT X1: REAL; X2: REAL; Y1: REAL; Y2: REAL; END_VAR VAR_OUTPUT Q2: REAL; END_VAR BEGIN ECART:= SQRT( (X2-X1)**2 + (Y2-Y1)**2 ); Q2:= X1+X2+Y1+Y2; END_FUNCTION

Bloc appelant
Diverses possibilits s'offrent vous pour utiliser ultrieurement la valeur de la fonction : FUNCTION_BLOCK CALL VAR LONGUEUR : REAL ; TOTAL_HORIZONTAL : REAL ; RAYON : REAL; Y : REAL; END_VAR BEGIN . . . // Appel dans une affectation de valeur LONGUEUR := ECART (X1:=3, Y1:=2, X2:=8.9, Y2:= 7.4, Q2:=TOTAL_HORIZONTAL) ; //Appel dans une expression arithmtique ou logique, par exemple Y := RAYON + ECART (X1:=-3, Y1:=2, X2:=8.9, Y2:=7.4, Q2:=total_horizontal) //Utilisation dans la dfinition des paramtres d'un autre bloc appel FB32.DB32 (DISTANCE:= ECART (X1:=-3, Y1:=2, X2:=8.9, Y2:=7.4), Q2:=total_horizontal) . . . END_FUNCTION_BLOCK

12-44

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

Instructions

12.3.4 Paramtres dfinis automatiquement 12.3.4.1 Paramtre d'entre EN


Tout bloc fonctionnel et toute fonction possdent un paramtre d'entre dfini automatiquement, le paramtre EN, qui est du type de donnes BOOL. Il est stock dans la zone des donnes temporaires du bloc. Le bloc appel est excut si EN est vrai, sinon il ne l'est pas. L'affectation d'une valeur au paramtre EN est facultative. Il faut cependant veiller ne pas dclarer EN dans la section de dclaration d'un bloc ou d'une fonction. EN tant un paramtre d'entre, vous ne pouvez pas le modifier dans un bloc.

Nota La valeur de retour d'une fonction n'est pas dfinie si la fonction n'a pas t appele (EN : FALSE).

Exemple
FUNCTION_BLOCK FB57 VAR MON_ACTIVE: BOOL ; Rsultat : REAL; END_VAR // . . . BEGIN // . . . MON_ACTIVE:= FALSE ; // Appel d'une fonction avec dfinition du paramtre EN : Rsultat := FC85 (EN:= MON_ACTIVE, PAR_1:= 27) ; // FC85 n'a pas t excute, car MON_ACTIVE a t mis FALSE cidessus.... END_FUNCTION_BLOCK

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

12-45

Instructions

12.3.4.2 Paramtre de sortie ENO


Tout bloc fonctionnel et toute fonction possdent un paramtre de sortie dfini automatiquement, le paramtre ENO, qui est du type de donnes BOOL. Il est stock dans la zone des donnes temporaires du bloc. A la fin de l'excution d'un bloc, la valeur actuelle du drapeau OK est stocke dans ENO. Immdiatement aprs l'appel d'un bloc, vous pouvez vrifier, l'aide de la valeur de ENO, si toutes les oprations dans le bloc se sont droules correctement ou si des erreurs sont survenues.

Exemple
// Appel d'un bloc fonctionnel : FB30.DB30 ([dfinition des paramtres]); // Vrification du droulement correct dans le bloc appel : IF ENO THEN // tout s'est droul correctement // . . . ELSE // une erreur est survenue et doit tre corrige // . . . END_IF;

12-46

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

13

Compteurs et temporisation

13.1

Compteurs

13.1.1 Fonctions de comptage


STEP 7 vous propose diverses fonctions standard de comptage que vous pouvez utiliser dans votre programme S7-SCL sans devoir les dclarer au pralable. Il vous suffit de leur affecter les paramtres requis. Voici les fonctions de comptage disponibles :
Fonction de comptage Signification

S_CU S_CD S_CUD

Compteur incrmental (Counter Up) Compteur dcrmental (Counter Down) Compteur incrmental/dcrmental (Counter Up Down)

13.1.2

Appel d'une fonction de comptage


Les fonctions de comptage sont appeles comme des fonctions. La dsignation de fonction peut tre employe partout la place d'un oprande dans une expression, condition que la valeur de la fonction soit d'un type compatible avec celui de l'oprande remplac. La valeur de la fonction (valeur de retour), fournie la position appelante, est la valeur de comptage actuelle (format DCB) dans le type de donnes WORD.

Appel absolu ou dynamique


Vous pouvez entrer une valeur absolue comme numro de compteur dans l'appel (par ex. C_NO:=Z10). Mais il faut savoir qu'une telle valeur n'est plus modifiable l'excution. A la place du numro de compteur absolu, vous pouvez aussi indiquer une variable ou une constante du type de donnes INT. Ceci a l'avantage de permettre un appel dynamique de la fonction de comptage, si vous affectez un autre numro la variable ou la constante chaque appel. Une autre possibilit pour l'appel dynamique est l'indication d'une variable du type de donnes COUNTER.

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

13-1

Compteurs et temporisation

Exemples
//Exemple d'appel absolu : S_CUD (C_NO:=Z12, CD:=E0.0, CU:=E0.1, S:=E0.2 & E0.3, PV:=120, R:=FALSE, CV:=binVal, Q:=actFlag); //Exemple d'appel dynamique : un autre compteur est appel // chaque parcours d'une boucle FOR : FUNCTION_BLOCK COMPT VAR_INPUT Compt: ARRAY [1..4] of STRUCT C_NO: INT; PV : WORD; END_STRUCT; . . END_VAR . . FOR I:= 1 TO 4 DO S_CD(C_NO:=compt[I].C_NO, S:=true, PV:= compt[I].PV); END_FOR; //Exemple d'appel dynamique grce l'emploi d'une variable //du type de donnes COUNTER : FUNCTION_BLOCK COMPTEUR VAR_INPUT MonCompteur:COUNTER; END_VAR . . Val_cour:=S_CD (C_NO:=MonCompteur,.....);

Nota Les noms des fonctions et des paramtres sont les mmes dans les jeux d'abrviations allemand et anglais. Seule la dsignation du compteur dpend du jeu d'abrviations utilis (allemand : Z, anglais : C).

13-2

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

Compteurs et temporisation

13.1.3 Dfinition des paramtres d'une fonction de comptage


Le tableau suivant indique les paramtres des fonctions de comptage :
Paramtre Type de donnes Description

C_NO CD CU S PV R Q CV RET_VAL

COUNTER INT BOOL BOOL BOOL WORD BOOL BOOL WORD WORD

Numro du compteur (DESIGNATION DU COMPTEUR) ; la plage dpend de la CPU. Entre CD : dcrmenter Entre CU : incrmenter Entre d'initialisation du compteur Valeur comprise entre 0 et 999 pour initialiser le compteur (saisie sous la forme 16#<valeur>, la valeur tant en format DCB) Entre de remise "0" du compteur Sortie : tat du compteur Sortie : tat du compteur en binaire Rsultat en format BCD

Rgles
Les valeurs des paramtres (par ex. CD:=E0.0) tant enregistres globalement, leur indication est facultative dans certains cas. Tenez compte des rgles gnrales suivantes pour la dfinition des paramtres. A l'appel, vous devez affecter une valeur au paramtre C_NO dsignant le compteur. Au lieu du numro absolu du compteur (par ex. Z12), vous pouvez aussi indiquer une variable ou une constante du type de donnes INT ou un paramtre d'entre du type de donnes COUNTER. Vous devez affecter une valeur soit au paramtre CU (compteur incrmental), soit au paramtre CD (compteur dcrmental). L'indication du couple de paramtres PV (valeur d'initialisation) et S (initialiser) est facultative. La valeur de rsultat en format DCB est toujours la valeur de la fonction.

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

13-3

Compteurs et temporisation

Exemple
FUNCTION_BLOCK FB1 VAR CurrVal, binVal: word; actFlag: bool; END_VAR BEGIN CurrVal

:=S_CD (C_NO:= Z10, CD:=TRUE, S:=TRUE, PV:=100, R:=FALSE, CV:=binVal,Q:=actFlag); CurrVal :=S_CU (C_NO:= Z11, CU:=M0.0, S:=M0.1, PV:=16#110, R:=M0.2, CV:=binVal,Q:=actFlag); CurrVal :=S_CUD(C_NO:= Z12, CD:=E0.0, CU:=E0.1, S:=E0.2 &E0.3, PV:=120, R:=FALSE, CV:=binVal,Q:=actFlag); CurrVal :=S_CD (C_NO:= Z10, CD:=FALSE, S:=FALSE, PV:=100, R:=TRUE, CV:=binVal,Q:=actFlag); END_FUNCTION_BLOCK

13-4

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

Compteurs et temporisation

13.1.4 Saisie et exploitation de la valeur de comptage


Pour saisir la valeur d'initialisation ou exploiter le rsultat de la fonction, vous avez besoin de la reprsentation interne de la valeur de comptage. Il s'agit du type de donnes WORD, les bits 0-11 indiquant la valeur de comptage dans le format DCB. Les bits 12-15 ne sont pas utiliss. Lorsque vous initialisez le compteur, la valeur que vous avez fixe s'y inscrit. La plage des valeurs autorises va de 0 999. Vous pouvez modifier la valeur de comptage dans cette plage en utilisant les fonctions compteur incrmental/dcrmental (S_CUD), compteur incrmental (S_CU) ou compteur dcrmental (S_CD).

Format
La figure suivante donne la reprsentation de la valeur de comptage en bits :

15

14

13

12 11 10

X I X I X I X

0 I 0 I 0 I 1

0 I 0 I 1 I 0

0 I 1 I 1 I 1

Valeur de comptage dans le format DCB (0 999) Ces bits sont insignifiants et ne sont donc pas pris en compte lorsque le compteur est mis 1 .

Saisie :
Dcimale sous forme de valeur entire : par exemple 295, si cette valeur correspond un format DCB_ autoris DCB (saisie sous forme de constante hexadcimale) : p. ex. 16#127

Exploitation :
Comme rsultat de la fonction (type WORD) : format DCB Comme paramtre de sortie CV (type WORD) : binaire

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

13-5

Compteurs et temporisation

13.1.5 Compteur incrmental (S_CU)


Le compteur incrmental (S_CU) vous permet uniquement d'excuter des oprations de comptage incrmental. Le tableau suivant indique comment le compteur fonctionne.
Opration Fonctionnement

Incrmenter Initialiser le compteur

La valeur du compteur est augmente de 1 lorsque l'tat logique de l'entre CU passe de "0" "1" et si la valeur de comptage est infrieure 999. Lorsque l'tat logique de l'entre S passe de "0" "1", le compteur est initialis avec la valeur de l'entre PV. Un tel changement d'tat logique est toujours requis pour initialiser un compteur. Le compteur est mis 0 lorsque l'entre R = 1. A la mise 0 du compteur, la valeur de comptage prend la valeur 0. L'interrogation de l'tat logique de la sortie Q fournit la valeur "1" si la valeur de comptage est suprieure 0. Elle fournit la valeur "0" si la valeur de comptage est gale 0.

Mettre le compteur 0 Interroger le compteur

13.1.6 Compteur dcrmental (S_CD)


Le compteur dcrmental (S_CD) vous permet uniquement d'excuter des oprations de comptage dcrmental. Le tableau suivant indique comment le compteur fonctionne :
Opration Fonctionnement

Dcrmenter

La valeur du compteur est diminue de 1 lorsque l'tat logique de l'entre CD passe de "0" "1" (front montant) et si la valeur de comptage est suprieure 0. Lorsque l'tat logique de l'entre S passe de "0" "1", le compteur est initialis avec la valeur de l'entre PV. Un tel changement d'tat logique est toujours requis pour initialiser un compteur.

Initialiser le compteur

Mettre le compteur 0 Le compteur est mis 0 lorsque l'entre R = 1. A la mise 0 du compteur, la valeur de comptage prend la valeur 0. Interroger le compteur L'interrogation de l'tat logique de la sortie Q fournit la valeur "1" si la valeur de comptage est suprieure 0. Il fournit la valeur "0" si la valeur de comptage est gale 0.

13-6

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

Compteurs et temporisation

13.1.7 Compteur incrmental/dcrmental (S_CUD)


Le compteur incrmental et dcrmental (S_CUD) vous permet d'excuter des oprations de comptage aussi bien incrmental que dcrmental. Lorsque leurs impulsions sont simultanes, les deux oprations sont traites. La valeur de comptage ne change pas. Le tableau suivant indique comment le compteur fonctionne.
Opration Fonctionnement

Incrmenter

La valeur du compteur est augmente de 1 lorsque l'tat logique de l'entre CU passe de "0" "1" et si la valeur de comptage est infrieure 999. La valeur du compteur est diminue de 1 lorsque l'tat logique de l'entre CD passe de "0" "1" et si la valeur de comptage est suprieure 0. Lorsque l'tat logique de l'entre S passe de "0" "1", le compteur est initialis avec la valeur de l'entre PV. Un tel changement d'tat logique est toujours requis pour initialiser un compteur. Le compteur est mis 0 lorsque l'entre R = 1. A la mise 0 du compteur, la valeur de comptage prend la valeur 0. L'interrogation de l'tat logique de la sortie Q fournit la valeur 1 si la valeur de comptage est suprieure 0. Il fournit la valeur 0 si la valeur de comptage est gale 0.

Dcrmenter Initialiser le compteur

Mettre le compteur 0 Interroger le compteur

13.1.8 Exemple de fonction de comptage

Dfinition des paramtres


Le tableau montre la dfinition des paramtres de la fonction S_CD prise pour exemple.
Paramtre Description MONCOMPTEUR ENTREE E0.0 INITIALISER VALEUR INITIALE 16#0089 METTRE_0 A0.7 VAL_BIN

C_NO CD S PV R Q CV

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

13-7

Compteurs et temporisation

Exemple
FUNCTION_BLOCK COMPTEUR VAR_INPUT MONCOMPTEUR : COUNTER ; END_VAR VAR_OUTPUT RESULTAT : INT ; END_VAR VAR INITIALISER : BOOL ; METTRE_0 : BOOL ; VAL_DCB : WORD ; // Etat du compteur cod DCB VAL_BIN : WORD ; // Etat du compteur binaire VAL_INITIALE : WORD ; END_VAR BEGIN A0.0 := 1 ; INITIALISER := E0.2 ; METTRE_0 := E0.3 ; VAL_INITIALE := 16#0089 ; //Dcrmenter VAL_DCB := S_CD (C_NO := MONCOMPTEUR, CD:= E0.0 , S := INITIALISER , PV:= VAL_INITIALE, R := METTRE_0 , CV:= VAL_BIN , Q := A0.7) ; //Traitement ultrieur en tant que paramtre de sortie RESULTAT := WORD_TO_INT (VAL_BIN) ; AW4 := VAL_DCB ; END_FUNCTION_BLOCK

13-8

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

Compteurs et temporisation

13.2

Temporisations

13.2.1 Fonctions de temporisation


Les temporisations sont des lments fonctionnels de votre programme vous permettant d'excuter et de contrler des squences dclenches par horloge. STEP 7 propose diverses fonctions standard de temporisation que vous pouvez utiliser avec S7-SCL.
Fonction de temporisation Signification

S_PULSE S_PEXT S_ODT S_ODTS S_OFFDT

Dmarrer une temporisation sous forme d'impulsion Dmarrer une temporisation sous forme d'impulsion prolonge Dmarrer une temporisation sous forme de retard la monte Dmarrer une temporisation sous forme de retard la monte mmoris Dmarrer une temporisation sous forme de retard la retombe

13.2.2

Appel d'une fonction de temporisation


Les fonctions de temporisation sont appeles comme des fonctions. La dsignation d'une fonction peut remplacer un oprande dans une expression, condition que le rsultat de la fonction soit d'un type compatible avec celui de l'oprande remplac. La valeur de la fonction (valeur de retour), fournie la position appelante, est une dure du type de donnes S5TIME.

Appel absolu ou dynamique


Vous pouvez entrer dans l'appel une valeur absolue de type TIMER comme numro de la temporisation (par ex. T_NO:=T10). Mais il faut savoir qu'une telle valeur n'est plus modifiable l'excution. A la place du numro absolu, vous pouvez aussi indiquer une variable ou une constante de type de donnes INT. Ceci a l'avantage de permettre un appel dynamique de la fonction, si vous affectez un autre numro la variable ou la constante chaque appel. Une autre possibilit pour l'appel dynamique est l'indication d'une variable du type de donnes TIMER.

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

13-9

Compteurs et temporisation

Exemples
//Exemple d'appel absolu : CurrTime:=S_ODT (T_NO:=T10, S:=TRUE, TV:=T#1s, R:=FALSE, BI:=biVal, Q:=actFlag); //Exemple d'appel dynamique : une autre temporisation est appele // chaque parcours d'une boucle FOR : FUNCTION_BLOCK TEMPO VAR_INPUT MA_TEMPO: ARRAY [1..4] of STRUCT T_NO: INT; TV : WORD; END_STRUCT; . . END_VAR . . FOR I:= 1 TO 4 DO CurrTime:= S_ODT(T_NO:=MA_TEMPO[I].T_NO, S:=true, TV:= MA_TEMPO[I].TV); END_FOR; //Exemple d'appel dynamique grce l'emploi d'une variable //du type de donnes TIMER : FUNCTION_BLOCK TEMPORISATION VAR_INPUT maTempo:TIMER; END_VAR . . Tempo_cour:=S_ODT (T_NO:=maTempo,.....);

Nota Les noms des fonctions sont les mmes dans les jeux d'abrviations allemand et anglais.

13-10

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

Compteurs et temporisation

13.2.3

Dfinition des paramtres d'une fonction de temporisation


Le tableau suivant indique les paramtres pour une fonction de temporisation.
Paramtre Type de donnes Description

T_NO S TV R Q BI RET_VAL

TIMER INTEGER BOOL S5TIME BOOL BOOL WORD S5TIME

Numro d'identification de la temporisation ; la plage dpend de la CPU. Entre de dmarrage Valeur par dfaut de la dure (format DCB) Entre de remise 0 Etat de la temporisation Dure restante (binaire) Valeur de la temporisation

Rgles
Les valeurs des paramtres tant enregistres globalement, leur indication est facultative dans certains cas. Tenez compte des rgles gnrales suivantes pour la dfinition des paramtres. A l'appel, il faut affecter une valeur au paramtre T_NO qui dsigne la temporisation. Au lieu du numro absolu de la temporisation (ex. T10), vous pouvez aussi indiquer une variable du type de donnes INT ou un paramtre d'entre du type TIMER. L'indication du couple de paramtres TV (valeur par dfaut) et S (dmarrer) est facultative. La valeur de rsultat en format S5TIME est toujours la valeur de la fonction.

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

13-11

Compteurs et temporisation

Exemple
FUNCTION_BLOCK FB2 VAR Duree_cour : S5time; Val_bin : word; Drapeau_act : bool; END_VAR BEGIN Duree_cour :=S_ODT (T_NO:= T10, S:=TRUE, TV:=T#1s, R:=FALSE, BI:=Val_bin,Q:=Drapeau_act); Duree_cour :=S_ODTS (T_NO:= T11, S:=M0.0, TV:= T#1s, R:=M0.1, BI:=Val_bin,Q:=Drapeau_act); Duree_cour :=S_OFFDT(T_NO:= T12, S:=E0.1 & Drapeau_act, TV:= T#1s, R:=FALSE, BI:=Val_bin,Q:=Drapeau_act); Duree_cour :=S_PEXT (T_NO:= T13, S:=TRUE, TV:= T#1s, R:=E0.0, BI:=Val_bin,Q:=Drapeau_act); Duree_cour :=S_PULSE(T_NO:= T14, S:=TRUE, TV:= T#1s, R:=FALSE, BI:=Val_bin,Q:=Drapeau_act); END_FUNCTION_BLOCK

13-12

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

Compteurs et temporisation

13.2.4 Saisie et exploitation de la valeur de temps


Pour saisir la valeur par dfaut ou exploiter le rsultat de la fonction en code DCB, vous avez besoin de la reprsentation interne de la valeur de temps. Il s'agit du type de donnes WORD, les bits 0 11 indiquant la valeur de temps en format DCB, les bits 12 et 13 la base de temps. Les bits 14 et 15 ne sont pas utiliss. La mise jour de la temporisation diminue la valeur de temps d'une unit par intervalle, celui-ci ayant t dtermin partir de la base de temps. La valeur de temps est diminue jusqu' ce qu'elle soit gale 0. La plage de valeurs de la temporisation est comprise entre 0 et 9990 secondes.

Format
La figure suivante donne la reprsentation de la valeur de temps en bits :
15... X I X I 1 I 0 ...8 0 I 0 I 0 I 1 7... 0 I 0 I 1 I 0 ...0 0 I 1 I 1 I 1

Base de temps 1 seconde

Valeur de temps dans le format DCB (0 999)

Ces bits sont insignifiants l'appel de la temporisation

Saisie
Vous pouvez charger une valeur de temps prdfinie dans les formats suivants : En reprsentation par niveaux En reprsentation dcimale Dans les deux cas, la base de temps est adapte automatiquement et la valeur est arrondie au nombre infrieur le plus proche avec cette base de temps.

Exploitation
Vous pouvez exploiter le rsultat dans deux formats diffrents : Comme rsultat de la fonction (type S5TIME) en format DCB Comme paramtre de sortie (valeur de temps sans base de temps du type WORD) en binaire

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

13-13

Compteurs et temporisation

Base de temps des valeurs de temps


Vous avez besoin de la base de temps (bits 12 et 13 du mot de temporisation) pour saisir et exploiter la valeur de temps. Elle dtermine l'intervalle selon lequel la valeur de temps est diminue d'une unit (voir le tableau suivant). La plus petite base de temps est de 10 ms, la plus grande de 10 s.
Base de temps Code binaire

10 ms 100 ms 1s 10 s

00 01 10 11

Nota Les valeurs de temps n'tant enregistres qu' l'intervalle de temps donn, celles qui ne sont pas un multiple exact de cet intervalle sont tronques. Celles dont la rsolution est trop grande pour la plage souhaite sont arrondies, de sorte que la plage souhaite est obtenue, mais pas la rsolution souhaite.

13-14

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

Compteurs et temporisation

13.2.5 Dmarrer une temporisation sous forme d'impulsion (S_PULSE)


La dure maximale pendant laquelle le signal de sortie reste "1" correspond la valeur de temps programme. Si l'entre prend l'tat logique "0" durant l'excution de la temporisation, celle-ci est mise "0". Ceci reprsente un arrt prmatur de l'excution.

Signal d'entre

E 2.1

Signal de sortie A 4.0 S_PULSE (temporisation sous forme d'impulsion)

Fonctionnement
Le tableau suivant explique comment procde la fonction "Dmarrer une temporisation sous forme d'impulsion".
Opration Fonctionnement

Dmarrer la temporisation

L'opration "Dmarrer une temporisation sous forme d'impulsion" dmarre la temporisation indique lorsque l'tat logique de l'entre de dmarrage (S) passe de "0" "1". Un changement d'tat logique est toujours requis pour valider la temporisation. La temporisation continue courir avec la valeur indique l'entre TV, jusqu' ce que la dure programme soit coule et tant que l'entre S = 1. Si l'entre S passe de "1" "0" avant que la valeur de temps ne soit coule, la temporisation est arrte. La temporisation est remise 0 lorsque l'entre de remise zro (R) passe de "0" "1" pendant que la temporisation court. La valeur de temps et la base de temps sont alors galement remises zro. L'tat logique "1" de l'entre R n'a aucun effet lorsque la temporisation ne court pas. Tant que la temporisation court, l'interrogation "1" de la sortie Q fournit le rsultat "1". Si l'excution a t arrte avant la fin, l'interrogation de la sortie Q fournit le rsultat "0". Vous pouvez interroger la valeur de temps actuelle la sortie BI l'aide de la valeur de la fonction S_PULSE.

Fixer la dure d'excution Arrter la temporisation avant la fin Remettre la temporisation 0

Interroger l'tat logique Interroger la valeur de temps actuelle

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

13-15

Compteurs et temporisation

13.2.6

Dmarrer une temporisation sous forme d'impulsion prolonge (S_PEXT)


Le signal de sortie reste "1" durant le temps (t) programm, quel que soit le temps pendant lequel le signal d'entre reste "1". Si l'impulsion de dmarrage est nouveau dclenche, la valeur de temps s'coule de nouveau, de sorte que l'impulsion de sortie est prolonge dans le temps (redmarrage).

Signal d'entre

E 2.1

Signal de sortie A 4.0 S_PEXT (temporisation sous forme d'impulsion prolonge)

Fonctionnement
Le tableau suivant explique comment procde la fonction "Dmarrer une temporisation sous forme d'impulsion prolonge".
Opration Fonctionnement

Dmarrer la temporisation

L'opration "Dmarrer une temporisation sous forme d'impulsion prolonge" dmarre la temporisation indique lorsque l'tat logique de l'entre de dmarrage (S) passe de "0" "1". Un changement d'tat logique est toujours requis pour valider la temporisation. Si l'tat logique de l'entre S passe nouveau "1" durant l'excution, la temporisation est redmarre avec la valeur de temps indique. La temporisation continue courir avec la valeur indique l'entre TV jusqu' ce que la dure programme soit coule. La temporisation est remise 0 lorsque l'entre de remise zro (R) passe de "0" "1" pendant que la temporisation court. La valeur de temps et la base de temps sont alors galement remises zro. L'tat logique "1" de l'entre R n'a aucun effet lorsque la temporisation ne court pas. Tant que la temporisation court, l'interrogation "1" de la sortie Q fournit le rsultat "1", quelle que soit la longueur du signal d'entre. Vous pouvez interroger la valeur de temps actuelle la sortie BI l'aide de la valeur de la fonction S_PEXT.

Redmarrer la dure d'excution Fixer la dure d'excution Remettre la temporisation 0

Interroger l'tat logique Interroger la valeur de temps actuelle

13-16

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

Compteurs et temporisation

13.2.7 Dmarrer une temporisation sous forme de retard la monte (S_ODT)


Le signal de sortie ne passe de "0" "1" que lorsque la temporisation programme s'est coule et que le signal d'entre est toujours "1". Ceci signifie que la sortie est active avec un retard. Les signaux d'entre dont la dure est plus courte que celle de la temporisation programme n'apparaissent pas la sortie.

Signal d'entre

E 2.1

A 4.0 Signal de sortie (temporisation sous forme de retard la monte)

S_ODT t

Fonctionnement
Le tableau suivant explique comment procde la fonction "Dmarrer une temporisation sous forme de retard la monte".
Opration Fonctionnement

Dmarrer la temporisation

L'opration "Dmarrer une temporisation sous forme de retard la monte" dmarre la temporisation indique lorsque l'tat logique de l'entre de dmarrage (S) passe de "0" "1". Un changement d'tat logique est toujours requis pour valider la temporisation. Si l'tat logique de l'entre S passe de "1" "0" pendant que la temporisation court, celle-ci est arrte. La temporisation continue de courir avec la valeur indique l'entre TV tant que l'tat logique de l'entre S = 1. La temporisation est remise 0 lorsque l'entre de remise zro (R) passe de "0" "1" pendant que la temporisation court. La valeur de temps et la base de temps sont alors galement remises zro. La temporisation est aussi remise zro lorsque R = 1 pendant qu'elle ne court pas. Une interrogation "1" de la sortie Q fournit le rsultat "1" lorsque la temporisation s'est coule correctement et que l'entre S est toujours "1". Si la temporisation a t arrte, l'interrogation "1" donne toujours "0". Une interrogation "1" de la sortie Q fournit galement le rsultat "0" lorsque la temporisation ne court pas et que l'tat logique de l'entre S est toujours "1". Vous pouvez interroger la valeur de temps actuelle la sortie BI l'aide de la valeur de la fonction S_ODT.

Arrter la temporisation Fixer la dure d'excution Remettre la temporisation "0"

Interroger l'tat logique

Interroger la valeur de temps actuelle

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

13-17

Compteurs et temporisation

13.2.8 Dmarrer une temporisation sous forme de retard la monte mmoris (S_ODTS)
Le signal de sortie ne passe de "0" "1" que lorsque la temporisation programme s'est coule, quel que soit le temps pendant lequel le signal d'entre reste "1".

Signal d'entre

E 2.1

A 4.0 S_ODTS Signal de sortie (temporisation sous forme de retard la monte mmoris)

Fonctionnement
Le tableau suivant explique comment procde la fonction "Dmarrer une temporisation sous forme de retard la monte mmoris".
Opration Fonctionnement

Dmarrer la temporisation

L'opration "Dmarrer une temporisation sous forme de retard la monte mmoris" dmarre la temporisation indique lorsque l'tat logique de l'entre de dmarrage (S) passe de "0" "1". Un changement d'tat logique est toujours requis pour valider la temporisation. La temporisation est redmarre avec la valeur indique lorsque l'entre S passe de "0" "1" pendant que la temporisation court. La temporisation continue de courir avec la valeur indique l'entre TV, mme lorsque l'tat logique de l'entre S passe "0" avant que la temporisation ne soit coule. La temporisation est remise 0 lorsque l'entre de remise zro (R) passe de "0" "1", quel que soit l'tat logique de l'entre S. Une interrogation "1" de la sortie Q fournit le rsultat "1" lorsque la temporisation s'est coule, quel que soit l'tat logique de l'entre S. Vous pouvez interroger la valeur de temps actuelle la sortie BI l'aide de la valeur de la fonction S_ODTS.

Redmarrer la temporisation Fixer la dure d'excution

Remettre la temporisation "0" Interroger l'tat logique Interroger la valeur de temps actuelle

13-18

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

Compteurs et temporisation

13.2.9 Dmarrer une temporisation sous forme de retard la retombe (S_OFFDT)


Lorsque l'tat logique de l'entre S passe de "0" "1", la sortie Q prend l'tat logique "1". Lorsque l'tat logique de l'entre de dmarrage passe de "1" "0", la temporisation est dmarre. Ce n'est qu'une fois la dure coule que la sortie prend l'tat logique "0". La sortie est donc dsactive avec un retard.

Signal d'entre

E 2.1

A 4.0 Signal de sortie (temporisation sous forme de retard la retombe)

S_OFFDT t

Fonctionnement
Le tableau suivant explique comment procde la fonction "Dmarrer une temporisation sous forme de retard la retombe".
Opration Fonctionnement

Dmarrer la temporisation

L'opration "Dmarrer une temporisation sous forme de retard la retombe" dmarre la temporisation indique lorsque l'tat logique de l'entre de dmarrage (S) passe de "1" "0". Un changement d'tat logique est toujours requis pour valider la temporisation. La temporisation est redmarre lorsque l'tat logique de l'entre S passe nouveau de "1" "0" (par exemple aprs la remise 0). La temporisation court avec la valeur indique l'entre TV. La temporisation est remise 0 lorsque l'entre de remise zro (R) passe de "0" "1" pendant que la temporisation court. Une interrogation "1" de la sortie Q fournit le rsultat "1" lorsque l'tat logique de l'entre S = 1 ou lorsque la temporisation court. Vous pouvez interroger la valeur de temps actuelle la sortie BI l'aide de la valeur de la fonction S_OFFDT.

Redmarrer la temporisation Fixer la dure d'excution Remettre la temporisation 0 Interroger l'tat logique Interroger la valeur de temps actuelle

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

13-19

Compteurs et temporisation

13.2.10 Exemple de fonction de temporisation


FUNCTION_BLOCK TEMPORISATION VAR_INPUT maTempo : TIMER ; END_VAR VAR_OUTPUT resultat : S5TIME ; END_VAR VAR initialiser : BOOL ; remettre_zero : BOOL ; val_dcb : S5TIME ;//Base de temps et valeur restante //codes DCB val_bin : WORD ; //Valeur de temps binaire val_defaut : S5TIME ; END_VAR BEGIN A0.0 := 1; initialiser := E0.0 ; remettre_zero := E0.1; val_defaut := T#25S ; val_dcb := S_PEXT (T_NO := maTempo , S := initialiser , TV := val_defaut , R := remettre_zero , BI := val_bin , Q := A0.7) ; //Traitement ultrieur en tant que paramtre de sortie resultat := valeur_dcb ; //A la sortie pour affichage AW4 := val_bin ; END_FUNCTION_BLOCK

13-20

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

Compteurs et temporisation

13.2.11 Choix de la temporisation approprie


La figure suivante prsente les cinq temporisations qui ont t dcrites dans ce chapitre pour vous aider choisir celle qui correspond vos besoins.

Signal d'entre

E 2.1

Signal de sortie (temporisation sous forme d'impulsion)

A 4.0 S_PULSE t Le temps maximal durant lequel le signal de sortie reste 1 est gal la valeur de temps t programme. Il reste 1 pour une dure plus courte, si le signal d'entre passe 0 .

Signal de sortie (temporisation sous forme d'impulsion prolonge)

A 4.0 S_PEXT t Le signal de sortie reste 1 pendant la dure programme, quelle que soit la dure pendant laquelle le signal d'entre reste 1 . L'impulsion est nouveau lance lorsque le signal de dclenchement est activ durant la priode t . S_ODT t Le signal de sortie ne passe de 0 1 que lorsque le temps programm s'est coul et si le signal d'entre est toujours 1 .

Signal de sortie A 4.0 (impulsion sous forme de retard la monte

Signal de sortie (temporisation sous forme de retard la monte mmoris)

A 4.0 S_ODTS t Le signal de sortie ne passe de 0 1 temps programm s'est coul, quelle que soit la dure pendant laquelle le signal d'entre reste 1

Signal de sortie (temporisation sous forme de retard la retombe)

A 4.0 S_OFFDT t Le signal de sortie ne passe de 0 1 que lorsque le signal d'entre passe de 0 1 . Il reste 1 pendant le temps programm. Le temps est dmarr lorsque le signal d'entre passe de 1 0 .

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

13-21

Compteurs et temporisation

13-22

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

14

Fonctions standard de S7-SCL

14.1

Conversion de types de donnes

14.1.1 Conversion de types de donnes


Lorsque vous combinez deux oprandes dans une opration, vous devez vous assurer de la compatibilit de leurs types de donnes. S'ils ne sont pas du mme type, il faut effectuer une conversion. S7-SCL connat plusieurs sortes de conversion du type de donnes. Conversion automatique du type de donnes Les types de donnes sont rpartis en classes. S7-SCL effectue une conversion automatique au sein de ces classes. Les fonctions que le compilateur utilise cet effet sont regroupes en "Fonctions de conversion de classe A". Conversion explicite du type de donnes Quand les oprandes ne font pas partie de la mme classe, c'est vous d'appeler une fonction de conversion. Pour cette conversion explicite du type de donnes, S7-SCL met votre disposition de nombreuses fonctions standard que l'on peut rpartir dans les classes suivantes : Fonctions de conversion de classe B Fonctions d'arrondi et de troncature.

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

14-1

Fonctions standard de S7-SCL

14.1.2 Conversion automatique du type de donnes


Au sein des classes dfinies dans le tableau suivant, le compilateur effectue une conversion automatique des types de donnes conformment l'ordre indiqu. Le type commun de deux oprandes est toujours le plus grand des deux types de donnes. Ainsi, INTEGER est le type commun de BYTE et WORD - WORD, par exemple. Sachez que la conversion d'un type de donnes dans la classe ANY_BIT met 0 les bits gauche.
Classes Ordre de conversion

ANY_BIT ANY_NUM

BOOL > BYTE > WORD > DWORD INT > DINT > REAL

Exemple de conversion automatique de types de donnes


VAR REGULATEUR_PID_1 : BYTE ; REGULATEUR_PID_2 : WORD ; END_VAR BEGIN IF (REGULATEUR_PID_1 <> REGULATEUR_PID_2) THEN ... (* Dans l'instruction IF ci-dessus, REGULATEUR_PID_1 est converti automatiquement de BYTE en WORD. *)

14.1.2.1 Fonctions de conversion de classe A


Le tableau suivant numre les fonctions de conversion du type de donnes appartenant la classe A. Quoique le compilateur les lance automatiquement, vous pouvez aussi les indiquer de manire explicite. Leur rsultat est toujours dfini.
Nom de la fonction Rgle de conversion

BOOL_TO_BYTE BOOL_TO_DWORD BOOL_TO_WORD BYTE_TO_DWORD BYTE_TO_WORD CHAR_TO_STRING DINT_TO_REAL INT_TO_DINT

Complment par des zros gauche Complment par des zros gauche Complment par des zros gauche Complment par des zros gauche Complment par des zros gauche Transformation en chane (de longueur 1) contenant le mme caractre. Transformation en REAL conformment la norme IEEE ; la valeur peut tre modifie en raison de l'autre prcision pour REAL. Pour un paramtre d'entre ngatif, le mot de poids fort de la valeur de la fonction est complt par 16#FFFF, dans tous les autres cas par des zros ; la valeur reste la mme. Transformation en REAL conformment la norme IEEE ; la valeur reste la mme. Complment par des zros gauche

INT_TO_REAL WORD_TO_DWORD

14-2

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

Fonctions standard de S7-SCL

14.1.3 Fonctions standard pour la conversion explicite du type de donnes


Vous trouverez la description gnrale d'un appel de fonction dans la rubrique "Appel d'une fonction". Particularits dont vous devez tenir compte pour l'appel d'une fonction de conversion : Paramtre d'entre Toute fonction de conversion d'un type de donnes possde un paramtre d'entre et un seul, appel IN. Puisqu'il s'agit d'un paramtre unique, il n'est pas ncessaire de l'indiquer. Valeur de la fonction Le rsultat est toujours la valeur de la fonction. Nom de la fonction Les types de donnes du paramtre d'entre et de la valeur de la fonction rsultant du nom de la fonction, ils ne sont pas mentionns dans la liste des fonctions de classe A ou B. Dans le cas de la fonction BOOL_TO_BYTE, par exemple, le type du paramtre d'entre est BOOL, celui de la valeur de la fonction tant BYTE.

14.1.3.1 Fonctions de conversion de classe B


Le tableau suivant numre les fonctions de conversion du type de donnes appartenant la classe B. Vous devez les spcifier explicitement. Leur rsultat peut tre indfini si la taille du type de donnes cible est insuffisante. Vous pouvez soit contrler vous-mme cette ventualit en plaant une vrification de limites en amont, soit demander au systme de le faire en slectionnant l'option "Activer drapeau OK" avant d'effectuer la compilation. Dans les cas o le rsultat est indfini, le systme affecte la valeur FALSE au drapeau OK.
Nom de la fonction Rgle de conversion OK

BOOL_TO_INT BOOL_TO_DINT BYTE_TO_BOOL BYTE_TO_CHAR BYTE_TO_INT BYTE_TO_DINT CHAR_TO_BYTE CHAR_TO_INT

WORD_TO_INT(BOOL_TO_WORD(x)) DWORD_TO_DINT(BOOL_TO_DWORD(x)) Copie du bit de poids faible Prise en charge de la chane binaire WORD_TO_INT(BYTE_TO_WORD(x)) DWORD_TO_DINT(BYTE_TO_DWORD(x)) Prise en charge de la chane binaire

N N O N N N N

La chane binaire du paramtre d'entre est inscrite dans l'octet de poids N faible de la valeur de la fonction ; l'octet de poids fort est complt par des zros. Prise en charge de la chane binaire Prise en charge de la chane binaire Prise en charge de la chane binaire N O N

DATE_TO_DINT DINT_TO_DATE DINT_TO_DWORD DINT_TO_INT

Copie du bit de signe ; la valeur contenue dans le paramtre d'entre est O interprte dans le type de donnes INT ; si elle est infrieure - 32_768 ou suprieure 32_767, la variable OK prend la valeur FALSE. Prise en charge de la chane binaire N

DINT_TO_TIME

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

14-3

Fonctions standard de S7-SCL

Nom de la fonction

Rgle de conversion

OK

DINT_TO_TOD DINT_TO_BOOL DINT_TO_BYTE DINT_TO_STRING DINT_TO_WORD DWORD_TO_BOOL DWORD_TO_BYTE DWORD_TO_DINT DWORD_TO_REAL DWORD_TO_WORD DWORD_TO_INT INT_TO_CHAR INT_TO_WORD INT_TO_BOOL INT_TO_BYTE INT_TO_DWORD INT_TO_STRING REAL_TO_DINT

Prise en charge de la chane binaire DWORD_TO_BOOL(DINT_TO_DWORD(x)) DWORD_TO_BYTE(DINT_TO_DWORD(x)) DI_STRNG DWORD_TO_WORD(DINT_TO_DWORD(x)) Copie du bit de poids faible Copie des 8 bits de poids faible Prise en charge de la chane binaire Prise en charge de la chane binaire Copie des 16 bits de poids faible DINT_TO_INT (DWORD_TO_ DINT(x)) Prise en charge de la chane binaire Prise en charge de la chane binaire WORD_TO_BOOL(INT_TO_WORD(x)) WORD_TO_BYTE(INT_TO_WORD(x)) WORD_TO_DWORD(INT_TO_WORD(x)) I_STRNG(x) Arrondi de la valeur REAL IEEE DINT ; si la valeur est infrieure 2_147_483_648 ou suprieure 2_147_483_647, la variable OK prend la valeur FALSE. Prise en charge de la chane binaire Arrondi de la valeur REAL IEEE INT ; si la valeur est infrieure 32_768 ou suprieure 32_767, la variable OK prend la valeur FALSE. R_STRNG(x) Copie du premier caractre de la chane ; si la longueur de STRING est diffrente de 1, la variable OK prend la valeur FALSE. STRNG_I(x) STRNG_DI(x) STRNG_R(x) Prise en charge de la chane binaire Prise en charge de la chane binaire Copie du bit de poids faible Copie des 8 bits de poids faible Prise en charge de la chane binaire INT_TO_DINT(WORD_TO_INT(x)) La configuration binaire de WORD est interprte comme numro de bloc de donnes. Le numro de bloc de donnes est interprt comme configuration binaire de WORD. L'expression x a le type WORD et est interprte comme valeur code BCD entre -999 et +999. Aprs la conversion, le rsultat se prsente sous forme de nombre entier (reprsentation binaire) de type INT. Si une erreur survient lors de la conversion, le systme d'automatisation se met en STOP. Une exploitation de la cause de l'arrt est possible dans l'OB121.

O O O N O O O N N O O O N O O N N O

REAL_TO_DWORD REAL_TO_INT REAL_TO_STRING STRING_TO_CHAR STRING_TO_INT STRING_TO_DINT STRING_TO_REAL TIME_TO_DINT TOD_TO_DINT WORD_TO_BOOL WORD_TO_BYTE WORD_TO_INT WORD_TO_DINT WORD_TO_BLOCK_DB BLOCK_DB_TO_WORD BCD_TO_INT(x) WORD_BCD_TO_INT(x)

N O O O N N N N N O O N N N N N

14-4

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

Fonctions standard de S7-SCL

Nom de la fonction

Rgle de conversion

OK

INT_TO_BCD(x) INT_TO_BCD_WORD(x)

L'expression x a le type INT et est interprte comme nombre entier avec une valeur comprise entre -999 et +999. Aprs la conversion, le rsultat se prsente sous forme de nombre cod BCD de type WORD. En dehors de la plage de valeurs, le rsultat est indfini. Lorsque l'option "Mettre le drapeau OK 1" est active, la valeur false est affecte au drapeau OK.

BCD_TO_DINT(x) DWORD_BCD_TO_DINT(x)

L'expression x a le type DWORD et est interprte comme valeur code BCD comprise entre -9999999 et +9999999. Aprs la conversion, le rsultat se prsente sous forme de nombre entier (reprsentation binaire) de type DINT Si une erreur se produit lors de la conversion, le systme d'automatisation se met en STOP. Une exploitation de la cause de l'arrt est possible dans l'OB121.

DINT_TO_BCD(x) DINT_TO_BCD_DWORD(x)

L'expression x a le type DINT et est interprte comme nombre entier avec une valeur comprise entre 9999999 et +9999999. Aprs la conversion, le rsultat se prsente sous forme de nombre cod BCD de type DWORD En dehors de la plage de valeurs, le rsultat est indfini. Lorsque l'option "Mettre le drapeau OK 1" est active, la valeur false est affecte au drapeau OK.

Attention Si une constante est convertie dun type de donnes dun niveau lev en un type de donnes moins lev, un message derreur saffichera la compilation si la constante se trouve en dehors de la plage du type de donnes de niveau bas Exemples : M0.0 :=WORD_TO_BOOL(W#16#FFFF); MW0 :=DINT_TO_INT(35000);

Nota
Vous avez en outre la possibilit d'utiliser d'autres fonctions CEI pour effectuer la conversion des types de donnes. Vous trouverez des informations dtailles sur chacune de ces fonctions dans le manuel de rfrence STEP 7 "Fonctions standard et fonctions systme pour S7-300/400".

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

14-5

Fonctions standard de S7-SCL

14.1.3.2 Fonctions d'arrondi et de troncature


Les fonctions d'arrondi et de troncature de nombres font galement partie de la conversion du type de donnes. Le tableau suivant indique le nom, le type de donnes (du paramtre d'entre et de la valeur de la fonction) et la tche de ces fonctions.
Nom de la fonction Type du paramtre d'entre Type de la valeur de Tche la fonction

ROUND

REAL

DINT

Arrondir (former un nombre DINT) Conformment la norme DIN EN 61131-3, l'arrondi se fait toujours l'entier pair le plus proche, c'est--dire que 1.5 est arrondi 2 et 2.5 galement 2.

TRUNC

REAL

DINT

Tronquer (former un nombre DINT)

Nota Vous avez en outre la possibilit d'utiliser d'autres fonctions CEI pour effectuer la conversion du type de donnes. Vous trouverez des informations dtailles sur chacune de ces fonctions dans le manuel de rfrence STEP 7 "Fonctions standard et fonctions systme pour S7-300/400".

Exemple
// Arrondi la valeur infrieure (rsultat : 3) ROUND (3.14) ; // Arrondi la valeur suprieure (rsultat : 4) ROUND (3.56) ; // Troncature (rsultat : 3) TRUNC (3.14) ; // Troncature (rsultat : 3) TRUNC (3.56) ;

14-6

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

Fonctions standard de S7-SCL

14.1.3.3 Exemples de conversion avec des fonctions standard


Dans l'exemple suivant, une conversion explicite s'avre indispensable, car le type de donnes cible est moins puissant que le type de donnes source. FUNCTION_BLOCK FB10 VAR COMMUTATEUR : INT; REGULATEUR : DINT; END_VAR (* INT est moins puissant que DINT *) COMMUTATEUR := DINT_TO_INT (REGULATEUR) ; // . . . END_FUNCTION_BLOCK

Dans l'exemple suivant, une conversion explicite est ncessaire, car le type de donnes REAL n'est pas autoris dans une expression arithmtique comportant l'opration MOD. FUNCTION_BLOCK FB20 VAR COMMUTATEUR : REAL VAL_ENT : INT := 17; CONV2 : INT ; END_VAR (* L'utilisation de MOD n'est autorise qu'avec des donnes de type INT ou DINT *) CONV2 := VAL_ENT MOD REAL_TO_INT (COMMUTATEUR); // . . . END_FUNCTION_BLOCK Dans l'exemple suivant, la conversion est indispensable car le type de donnes n'est pas autoris pour une opration logique. NOT ne peut tre applique qu' des donnes de type BOOL, BYTE, WORD ou DWORD. FUNCTION_BLOCK FB30 VAR VAL_ENT : INT := 17; CONV1 : WORD ; END_VAR (* L'utilisation de NOT n'est pas autorise avec des donnes de type INT *) CONV1 := NOT INT_TO_WORD(VAL_ENT); // . . . END_FUNCTION_BLOCK

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

14-7

Fonctions standard de S7-SCL

L'exemple suivant montre la conversion de valeurs d'entre et de sortie de la priphrie : FUNCTION_BLOCK FB40 VAR Rayon_ent : WORD ; Rayon : INT; END_VAR Rayon_ent := %EB0; Rayon := WORD_TO_INT (rayon_ent); (* Conversion en cas de passage dans une autre classe de types de donnes. La valeur provient du module d'entres, elle est convertie pour la suite du calcul.*) Rayon := Rayon (surface:= donnees_cercle.surface) %AB0 :=WORD_TO_BYTE (INT_TO_WORD(RAYON)); (*Le rayon est obtenu partir de la surface sous forme d'entier. Pour la sortie, la valeur est d'abord convertie en une autre classe de type (INT_TO_WORD), puis en un type moins puissant (WORD_TO_BYTE).*) // . . . END_FUNCTION_BLOCK

14-8

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

Fonctions standard de S7-SCL

14.2
14.2.1

Fonctions standard numriques


Fonctions standard arithmtiques gnrales
Il s'agit des fonctions permettant de calculer la valeur absolue, le carr ou la racine carre d'une grandeur. Le type de donnes ANY_NUM reprsente INT, DINT ou REAL. Sachez que les paramtres d'entre du type INT ou DINT sont convertis de manire interne en variables REAL quand la valeur de la fonction est de type REAL.
Nom de la fonction Type du paramtre d'entre Type de la valeur de la Description fonction

ABS SQR SQRT

ANY_NUM ANY_NUM ANY_NUM

ANY_NUM REAL REAL

Valeur absolue Carr Racine carre

Nota
Vous avez en outre la possibilit d'utiliser d'autres fonctions CEI pour effectuer la conversion du type de donnes. Vous trouverez des informations dtailles sur chacune de ces fonctions dans le manuel de rfrence STEP 7 "Fonctions standard et fonctions systme pour S7-300/400".

14.2.2

Fonctions logarithmiques
Il s'agit des fonctions permettant de calculer une valeur exponentielle ou le logarithme d'une grandeur. Le type de donnes ANY_NUM reprsente INT, DINT ou REAL. Sachez que les paramtres d'entre de type ANY_NUM sont convertis de manire interne en variables de type REAL.

Nom de la fonction

Type du paramtre d'entre

Type de la valeur de la fonction

Description

EXP EXPD LN LOG

ANY_NUM ANY_NUM ANY_NUM ANY_NUM

REAL REAL REAL REAL

e puissance IN 10 puissance IN Logarithme naturel Logarithme dcimal

Nota Vous avez en outre la possibilit d'utiliser d'autres fonctions CEI pour effectuer la conversion des types de donnes. Vous trouverez des informations dtailles sur chacune de ces fonctions dans le manuel de rfrence STEP 7 "Fonctions standard et fonctions systme pour S7-300/400".

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

14-9

Fonctions standard de S7-SCL

14.2.3

Fonctions trigonomtriques
Les fonctions trigonomtriques suivantes calculent des angles en radians. Le type de donnes ANY_NUM reprsente INT, DINT ou REAL. Sachez que les paramtres d'entre de type ANY_NUM sont convertis de manire interne en variables de type REAL.

Nom de la fonction

Type du paramtre d'entre

Type de la valeur de la fonction

Description

ACOS ASIN ATAN COS SIN TAN

ANY_NUM ANY_NUM ANY_NUM ANY_NUM ANY_NUM ANY_NUM

REAL REAL REAL REAL REAL REAL

Arccosinus Arcsinus Arctangente Cosinus Sinus Tangente

Nota Vous avez en outre la possibilit d'utiliser d'autres fonctions CEI pour effectuer la conversion des types de donnes. Vous trouverez des informations dtailles sur chacune de ces fonctions dans le manuel de rfrence STEP 7 "Fonctions standard et fonctions systme pour S7-300/400".

Appel des aides de rfrence sur les fonctions standard

14.2.4 Exemples de fonctions standard numriques

Appel

Rsultat

RESULTAT := ABS (-5) ; RESULTAT := SQRT (81.0); RESULTAT := SQR (23); RESULTAT := EXP (4.1); RESULTAT := EXPD (3); RESULTAT := LN (2.718 281) ; RESULTAT := LOG (245); PI := 3.141592 ; RESULTAT := SIN (PI / 6) ; RESULTAT := ACOS (0.5);

// 5 // 9 // 529 // 60.340 ... // 1_000 // 1 // 2.389_166 ... // 0.5 // 1.047_197 (=PI / 3)

14-10

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

Fonctions standard de S7-SCL

14.3

Fonctions standard sur chane binaire


Chaque fonction standard sur chane binaire possde deux paramtres d'entre dsigns par IN et N. Le rsultat est toujours la valeur de la fonction. Le tableau suivant indique les noms des fonctions ainsi que les types de donnes des deux paramtres d'entre et de la valeur de la fonction. La signification des paramtres d'entre est la suivante : paramtre d'entre IN : mmoire dans laquelle sont excutes les oprations de dcalage de bits ; le type de donnes de ce paramtre dtermine celui de la valeur de la fonction ; paramtre d'entre N : nombre de rotations pour les fonctions de rotation ROL et ROR ou nombre de positions dcaler pour les fonctions SHL et SHR.

Le tableau suivant dcrit toutes les fonctions standard sur chane binaire disponibles.
Nom de la Type du paramtre fonction d'entre IN Type du paramtre d'entre N Type de la valeur de la fonction Tche

ROL

BOOL BYTE WORD DWORD BOOL BYTE WORD DWORD BOOL BYTE WORD DWORD

INT INT INT INT INT INT INT INT INT INT INT INT

BOOL BYTE WORD DWORD BOOL BYTE WORD DWORD BOOL BYTE WORD DWORD

Une rotation vers la gauche du nombre de positions indiqu par le paramtre N va tre effectue sur la valeur donne par le paramtre IN. Une rotation vers la droite du nombre de positions indiqu par le paramtre N va tre effectue sur la valeur donne par le paramtre IN. Dans la valeur donne par le paramtre IN, le nombre de positions indiqu par le paramtre N va tre dcal vers la gauche et complt par des 0 droite. Dans la valeur donne par le paramtre IN, le nombre de positions indiqu par le paramtre N va tre dcal vers la droite et complt par des 0 gauche.

ROR

SHL

SHR

BOOL BYTE WORD DWORD

INT INT INT INT

BOOL BYTE WORD DWORD

Nota Vous avez en outre la possibilit d'utiliser d'autres fonctions CEI pour effectuer la conversion des types de donnes. Vous trouverez des informations dtailles sur chacune de ces fonctions dans le manuel de rfrence STEP 7 "Fonctions standard et fonctions systme pour S7-300/400".

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

14-11

Fonctions standard de S7-SCL

14.3.1 Exemple de fonctions standard sur chane binaire

Appel

Rsultat

RESULTAT := ROL (IN:=BYTE#2#1101_0011, N:=5); RESULTAT := ROR (IN:=BYTE#2#1101_0011, N:=2); RESULTAT := SHL (IN:=BYTE#2#1101_0011, N:=3); RESULTAT := SHR (IN:=BYTE#2#1101_0011, N:=2);

// 2#0111_1010 // (= 122 dcimal) // 2#1111_0100 // (= 244 dcimal) // 2#1001_1000 // (= 152 dcimal) // 2#0011_0100 // (= 52 dcimal)

14-12

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

Fonctions standard de S7-SCL

14.4
14.4.1

Fonctions de traitement de chane de caractres


Fonctions de manipulation de chane de caractres

LEN
La fonction LEN (FC21) fournit comme valeur de retour la longueur en cours d'une chane de caractres (nombre de caractres valables). Une chane vide ('') a la longueur zro. La fonction ne signale pas d'erreur. Exemple : LEN (S:= 'XYZ' )
Paramtre Dclaration Type de donnes Zone de mmoire Description

S Valeur de retour

INPUT

STRING INT

D, L E, A, M, D, L

Variable d'entre en format STRING Nombre de caractres en cours

CONCAT
La fonction CONCAT regroupe 32 variables STRING au maximum en une seule chane de caractres. Si la chane en rsultant est plus longue que la variable dfinie pour le paramtre de sortie, elle est rduite la longueur maximale dfinie. En cas dutilisation de la fonction S7-SCL CONCAT, le FC2 de la bibliothque "Fonctions CEI" est implicitement appel. Exemple : CONCAT (IN1:= 'soupape', IN2:= ' ouverte')
Paramtre Dclaration Type de donnes Zone de mmoire Description

IN1 IN2 INn Valeur de retour

INPUT INPUT INPUT

STRING CHAR STRING CHAR STRING CHAR STRING CHAR

D, L D, L D, L D, L

Variable d'entre en format STRING ou CHAR Variable d'entre en format STRING ou CHAR Variable d'entre en format STRING ou CHAR Chane de caractres forme par la runion des deux chanes

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

14-13

Fonctions standard de S7-SCL

LEFT ou RIGHT
Les fonctions LEFT et RIGHT (FC20 et FC32) fournissent les L premiers ou derniers caractres d'une chane de caractres. Si L est suprieur la longueur en cours de la variable STRING, c'est la chane complte qui est fournie comme valeur de retour. Si L = 0, la valeur de retour est une chane vide. Si L est une valeur ngative, la valeur de retour est une chane vide. Exemple : LEFT (IN:= 'soupape', L:= 4)
Paramtre Dclaration Type de donnes Zone de mmoire Description

IN L Valeur de retour

INPUT INPUT

STRING INT STRING

D, L E, A, M, D, L, const. D, L

Variable d'entre en format STRING Longueur de la partie gauche de la chane Variable de sortie en format STRING

MID
La fonction MID (FC26) fournit une partie d'une chane de caractres. L est la longueur de la chane lire, P est la position du premier caractre lire. Si la somme de L et de (P-1) dpasse la longueur en cours de la variable STRING, le rsultat de la fonction sera une chane dmarrant P et allant jusqu' la fin de la valeur d'entre. Dans tous les autres cas (P hors de la longueur en cours, P et/ou L galent zro ou ngatifs), la valeur de retour est une chane vide. Exemple : MID (IN:= 'temperature', L:= 2, P:= 3)
Paramtre Dclaration Type de donnes Zone de mmoire Description

IN L P Valeur de retour

INPUT INPUT INPUT

STRING INT INT STRING

D, L E, A, M, D, L, const. E, A, M, D, L, const. D, L

Variable d'entre en format STRING Longueur de la partie centrale de la chane Position du premier caractre Variable de sortie en format STRING

14-14

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

Fonctions standard de S7-SCL

INSERT
La fonction INSERT (FC17) insre la chane de caractres du paramtre IN2 dans celle du paramtre IN1 aprs le Pme caractre. Si P gale zro, la seconde chane sera insre avant la premire. Si P est suprieur la longueur en cours de la premire chane de caractres, la seconde chane sera accole la premire. Si P est ngatif, la valeur de retour sera une chane vide. Si la chane de rsultat est plus longue que la variable affecte au paramtre de sortie, la chane de rsultat sera limite la longueur maximale dfinie. Exemple : INSERT (IN1:= 'Participant P:= 12)
Paramtre Dclaration Type de donnes Zone de mmoire

arriv', IN2:='Durand':= 2,

Description

IN1 IN2 P Valeur de retour

INPUT INPUT INPUT

STRING STRING INT STRING

D, L D, L E, A, M, D, L, const. D, L

Variable STRING dans laquelle insrer Variable STRING insrer Position d'insertion Chane rsultant de l'opration

DELETE
La fonction DELETE (FC4) efface, dans une chane de caractres, L caractres partir du Pme caractre compris. Si L et/ou P galent zro ou si P est suprieur la longueur en cours de la chane d'entre, c'est cette chane d'entre qui sera fournie comme valeur de retour. Si la somme de L et de P est suprieure la chane d'entre, les caractres seront effacs jusqu' la fin de la chane. Si L et/ou P sont ngatifs, la valeur de retour sera une chane vide. Exemple : DELETE (IN:= 'temperature ok', L:= 6, P:= 5)

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

14-15

Fonctions standard de S7-SCL

REPLACE
La fonction REPLACE (FC31) remplace, partir du caractre P compris, L caractres de la premire chane (IN1) par la seconde chane (IN2). Si L gale zro, c'est la premire chane de caractres qui sera indique comme valeur de retour. Si P gale 0 ou 1, les caractres seront remplacs en partant du premier (y compris celui-ci). Si P se trouve hors de la premire chane, la seconde chane sera accole la premire. Si L et/ou P sont ngatifs, la valeur de retour sera une chane vide. Si la chane rsultant de l'opration est plus longue que la variable affecte comme paramtre de sortie, la chane sera limite la longueur maximale dfinie. Exemple : REPLACE (IN1:= 'temperature', IN2:= ' haute' L:= 7, P:= 5)
Paramtre Dclaration Type de donnes Zone de mmoire Description

IN1 IN2 L P Valeur de retour

INPUT INPUT INPUT INPUT

STRING STRING INT INT STRING

D, L D, L E, A, M, D, L, const. E, A, M, D, L, const. D, L

Variable STRING dans laquelle remplacer Variable STRING de remplacement Nombre de caractres remplacer Position du premier caractre remplac Chane rsultant de l'opration

FIND
La fonction FIND (FC11) fournit la position de la seconde chane de caractres (IN2) dans la premire (IN1). La recherche part de la gauche ; c'est la premire occurrence de la chane qui est signale. Si la seconde chane n'est pas contenue dans la premire, la valeur de retour est 0. La fonction ne signale pas d'erreur. Exemple : FIND (IN1:= 'station_de_traitement', IN2:='station')
Paramtre Dclaration Type de donnes Zone de mmoire Description

IN1 IN2 Valeur de retour

INPUT INPUT

STRING STRING INT

D, L D, L E, A, M, D, L

Variable STRING dans laquelle chercher Variable STRING rechercher Position de la chane trouve

14-16

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

Fonctions standard de S7-SCL

14.4.2

Fonctions de comparaison de chanes de caractres


Les oprations de comparaison de S7-SCL =, <>, <, >, <= et >= acceptent les chanes de caractres comme oprandes. Le compilateur intgre automatiquement l'appel de fonction ncessaire. Les fonctions qui suivent ne sont mentionnes ici qu' titre complmentaire.

EQ_STRNG et NE_STRNG
Les fonctions EQ_STRNG (FC10) et NE_STRNG (FC29) comparent les contenus de deux variables en format STRING pour en constater l'galit (FC10) ou la diffrence (FC29). Elles donnent le rsultat comme valeur de retour. Cette valeur de retour est "1" quand la chane de caractres du paramtre S1 est gale (diffrente de) celle du paramtre S2. La fonction ne signale pas d'erreur.
Paramtre Dclaration Type de donnes Zone de mmoire Description

S1 S2 Valeur de retour

INPUT INPUT

STRING STRING BOOL

D, L D, L E, A, M, D, L

Variable d'entre en format STRING Variable d'entre en format STRING Rsultat de la comparaison

GE_STRNG et LE_STRNG
Les fonctions GE_STRNG (FC13) et LE_STRNG (FC19) comparent les contenus de deux variables en format STRING dans le rapport "suprieur (infrieur) ou gal " et elles donnent le rsultat de la comparaison comme valeur de retour. Cette valeur de retour est "1" quand la chane de caractres du paramtre S1 est suprieure (infrieure) ou gale celle du paramtre S2. La fonction compare les caractres en partant de la gauche et au moyen de leur codage ASCII (par ex. 'a' est suprieur 'A'). Le premier caractre diffrent dcide du rsultat de la comparaison. Quand la partie gauche de la chane la plus longue est identique la chane la plus courte, c'est la chane la plus longue qui est suprieure. La fonction ne signale pas d'erreur.
Paramtre Dclaration Type de donnes Zone de mmoire Description

S1 S2 Valeur de retour

INPUT INPUT

STRING STRING BOOL

D, L D, L E, A, M, D, L

Variable d'entre en format STRING Variable d'entre en format STRING Rsultat de la comparaison

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

14-17

Fonctions standard de S7-SCL

GT_STRNG et LT_STRNG
Les fonctions GT_STRNG (FC15) et LT_STRNG (FC24) comparent les contenus de deux variables en format STRING dans le rapport "suprieur (infrieur) " et donnent le rsultat de la comparaison comme valeur de retour. Cette valeur de retour est "1" quand la chane de caractres du paramtre S1 est suprieure (infrieure) celle du paramtre S2. La fonction compare les caractres en partant de la gauche et au moyen de leur codage ASCII (par ex. 'a' est suprieure 'A'). Le premier caractre diffrent dcide du rsultat de la comparaison. Quand la partie gauche de la chane la plus longue est identique la chane la plus courte, c'est la chane la plus longue qui est suprieure. La fonction ne signale pas d'erreur.
Paramtre Dclaration Type de donnes Zone de mmoire Description

S1 S2 Valeur de retour

INPUT INPUT

STRING STRING BOOL

D, L D, L E, A, M, D, L

Variable d'entre en format STRING Variable d'entre en format STRING Rsultat de la comparaison

14-18

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

Fonctions standard de S7-SCL

14.4.3 Fonctions de conversion du type de donnes

INT_TO_STRING et STRING_TO_INT
Les fonctions INT_TO_STRING et STRING_TO_INT convertissent une variable de format INT en une chane de caractres ou une chane de caractres en une variable INT. Les fonctions I_TRNG (FC16) ou STRNG_I (FC38) de la bibliothque "Fonctions CEI" sont alors utilises de manire implicite. La chane sera prcde d'un signe. Si la variable affecte comme valeur de retour est trop courte, la conversion n'a pas lieu.
Paramtre INT_TO_ST RING Dclaration Type de donnes Zone de mmoire Description

I Valeur de retour
STRING_TO _INT

INPUT

INT STRING

E, A, M, D, L, const. D, L

Valeur d'entre Chane de caractres rsultant de l'opration

S Valeur de retour

INPUT

STRING INT

D, L E, A, M, D, L

Chane d'entre Rsultat

DINT_TO_STRING et STRING_TO_DINT
Les fonctions DINT_TO_STRING et STRING_TO_DINT convertissent une variable de format DINT en une chane de caractres ou une chane de caractres en une variable DINT. Les fonctions DI_STRNG (FC5) ou STRNG_I (FC37) de la bibliothque "Fonctions CEI" sont alors utilises de manire implicite. La chane sera prcde d'un signe. Si la variable affecte comme valeur de retour est trop courte, la conversion n'a pas lieu.
Paramtre DINT_TO_S TRING Dclaration Type de donnes Zone de mmoire Description

I Valeur de retour
STRING_TO _DINT

INPUT

DINT STRING

E, A, M, D, L, const. D, L

Valeur d'entre Chane de caractres rsultant de l'opration

S Valeur de retour

INPUT

STRING DINT

D, L E, A, M, D, L

Chane d'entre Rsultat

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

14-19

Fonctions standard de S7-SCL

REAL_TO_STRING und STRING_TO_REAL


Les fonctions REAL_TO_STRING et STRING_TO_REAL convertissent une variable de format REAL en une chane de caractres ou une chane de caractres en une variable REAL. Les fonctions (FC30) ou (FC39) de la bibliothque "Fonctions CEI" sont alors utilises de manire implicite. La chane de caractres doit avoir le format suivant : v.nnnnnnnExx ( = signe, v = position prcdant la virgule,n = positions suivant la virgule, x = exposants) Si la longueur de la chane est infrieure 14 ou si sa structure diffre de la structure cidessus, la conversion n'a pas lieu. Si la variable affecte comme valeur de retour est trop courte ou si le paramtre IN ne prsente pas de nombre virgule flottante correct, la conversion n'a pas lieu.
Paramtre REAL_TO_S TRING Dclaration Type de donnes Zone de mmoire Description

IN Valeur de retour
STRING_TO _REAL

INPUT

REAL STRING

E, A, M, D, L, const. D, L

Valeur d'entre Chane de caractres rsultant de l'opration

S Valeur de retour

INPUT

STRING REAL

D, L E, A, M, D, L

Chane d'entre Rsultat

14-20

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

Fonctions standard de S7-SCL

14.4.4 Exemple de traitement de chanes de caractres

Assembler des textes de signalisation


//Assemblage et mmorisation commands par le processus //des textes de signalisation //////////////////////////////////////////////////////////////////// //Le bloc contient les textes de signalisation requis et les // //20 derniers messages gnrs // //////////////////////////////////////////////////////////////////// DATA_BLOCK Textes_signalisation STRUCT indice memoire_textes materiel etats END_STRUCT BEGIN indice :=0; materiel[1] materiel[2] materiel[3] materiel[4] materiel[5] etats[1] etats[2] etats[3] etats[4] etats[5] END_DATA_BLOCK

: int; : array [0..19] of string[34]; : array [1..5] of string[16]; // 5 appareils diffrents : array [1..5] of string[12]; // 5 tats diffrents

:= := := := := := := := := :=

'moteur '; 'soupape '; 'presse '; 'station_soudage '; 'bruleur '; ' defecteux'; ' demarre'; ' temperature'; ' repare'; ' revise';

//////////////////////////////////////////////////////////////////// //La fonction assemble des textes de signalisation et les crit // //dans le DB Textes_signalisation. Les textes de signalisation // //sont stocks dans une mmoire circulaire. Le dernier indice // //libre de la mmoire e textes figure aussi dans le DB // //textes_signalisation o il est actualis par la fonction. // ////////////////////////////////////////////////////////////////////

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

14-21

Fonctions standard de S7-SCL

FUNCTION Generateur_textes : bool VAR_INPUT unite : int; //Indice du texte d'un appareil no : int; // N d'identification de l'appareil etat : int; valeur : int; END_VAR VAR_TEMP texte : string[34]; i : int; END_VAR //Initialisation des variables temporaires texte := ''; Generateur_textes := true; Case unite of 1..5 : case etat of 1..5 : texte := concat( in1 := textes_signalisation.materiel[unite], in2 := right(l:=2,in:=I_STRNG(no))); texte := concat( in1 := texte, in2 := Textes_signalisation.etats[etat]); if valeur <> 0 then texte := concat( in1 := texte, in2 := I_STRNG(valeur)); end_if; else Generateur_textes := false; end_case; else Generateur_textes := false; end_case; i := Textes_signalisation.indice; Textes_signalisation.memoire_textes[i] := texte; Textes_signalisation.indice := (i+1) mod 20; END_FUNCTION //////////////////////////////////////////////////////////////////// //La fonction est appele dans le programme cyclique en cas // //de front dans le %M10.0 et elle provoque l'criture unique d'un // //message si un paramtre change. // //////////////////////////////////////////////////////////////////// Organization_block zyklus Var_temp Besy_ifx : array [0..20] of byte; erreur: BOOL; End_var;

14-22

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

Fonctions standard de S7-SCL

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

14-23

Fonctions standard de S7-SCL

14-24

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

Fonctions standard de S7-SCL

//////////////////////////////////////////////////////////////////// //L'appel suivant provoque l'entre "Moteur 12 demarre" dans la // //mmoire de textes du DB Textes_signalisation, sachant qu'il faut// //transfrer un 1 par %MW0, le 12 par %EW2 et un 2 par %MW2. *) // //////////////////////////////////////////////////////////////////// if %M10.0 <> %M10.1 then erreur := Generateur_textes (unite := word_to_int(%MW0), no := word_to_int(%EW2), etat := word_to_int(%MW2), valeur := 0); %M10.1:=M10.0; end_if; end_organization_block

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

14-25

Fonctions standard de S7-SCL

14.5

Fonctions de slection de valeurs

14.5.1 Fonctions de slection de valeurs


Les fonctions suivantes de slection de valeurs sont disponibles sous forme de fonctions S7-SCL internes. Elles sont conformes CEI 61131-3.

Nota Certaines des fonctions sont galement contenues dans la bibliothque standard de STEP 7. Les fonctions de la bibliothque ne correspondent cependant pas en tous points aux exigences CEI.

SEL
La fonction SEL slectionne une valeur d'entre parmi deux. Comme valeurs d'entre, tous les types de donnes sont autoriss, l'exception des types de donnes ARRAY et STRUCT ainsi que des types de donnes Paramtre. Toutes les variables paramtres doivent appartenir au type de donnes de la mme classe. Exemple : A:= SEL (G:= SELECT, IN0:= X, IN1:= Y);
Paramtre Dclaration Type de donnes Zone de mmoire Description

G IN0

INPUT INPUT

BOOL Tous les types de donnes l'exception de ARRAY et STRUCT Tous les types de donnes l'exception de ARRAY et STRUCT Tous les types de donnes l'exception de ARRAY et STRUCT

E, A, M, D, L E, A, M, D, L

Critre de slection Premire valeur d'entre

IN1

INPUT

E, A, M, D, L

Deuxime valeur d'entre

Valeur en retour

OUTPUT

E, A, M, D, L

Valeur d'entre slectionne (option)

14-26

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

Fonctions standard de S7-SCL

MAX
La fonction MAX slectionne la plus grande valeur de variable parmi un certain nombre de valeurs de variables. Comme valeurs d'entre, les types de donnes numriques et les types de donnes de temporisation sont autoriss. Toutes les variables paramtres doivent appartenir au type de donnes de la mme classe. L'expression prend le type de donnes de poids le plus fort. Exemple : A:= MAX (IN1:=a, IN2:=b, IN3:=c, IN4:=d);
Paramtre Dclaration Type de donnes Zone de mmoire Description

IN1

INPUT

ANY_NUM Types de donnes de temporisation l'exception de S5TIME

E, A, M, D, L

Premire valeur d'entre

IN2

INPUT

ANY_NUM Types de donnes de temporisation l'exception de S5TIME

E, A, M, D, L

Deuxime valeur d'entre

INn (n=3...32)

INPUT

ANY_NUM Types de donnes de temporisation l'exception de S5TIME ANY_NUM Types de donnes de temporisation l'exception de S5TIME

E, A, M, D, L

Dernire valeur d'entre (option)

Valeur en retour OUTPUT

E, A, M, D, L

Plus grande des valeurs d'entre (option)

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

14-27

Fonctions standard de S7-SCL

MIN
La fonction MIN slectionne la plus petite valeur de variable parmi un certain nombre de valeurs de variables. Comme valeurs d'entre, les types de donnes numriques et les types de donnes de temporisation sont autoriss. Toutes les variables paramtres doivent appartenir au type de donnes de la mme classe. L'expression prend le type de donnes de poids le plus fort. Exemple : A:= MIN (IN1:=a, IN2:=b, IN3:=c, IN4:=d);
Paramtre Dclaration Type de donnes Zone de mmoire Description

IN1

INPUT

ANY_NUM Types de donnes de temporisation l'exception de S5TIME

E, A, M, D, L

Premire valeur d'entre

IN2

INPUT

ANY_NUM Types de donnes de temporisation l'exception de S5TIME

E, A, M, D, L

Deuxime valeur d'entre

INn (n=3...32)

INPUT

ANY_NUM Types de donnes de temporisation l'exception de S5TIME ANY_NUM Types de donnes de temporisation l'exception de S5TIME

E, A, M, D, L

Dernire valeur d'entre (option)

Valeur en retour OUTPUT

E, A, M, D, L

Plus petite des valeurs d'entre (option)

14-28

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

Fonctions standard de S7-SCL

LIMIT
La fonction LIMIT limite la valeur d'une variable des valeurs limite paramtrables. Comme valeurs d'entre, tous les types de donnes numriques et les types de donnes de temporisation sont autoriss. Tous les paramtres doivent appartenir au mme type de donnes. L'expression prend le type de donnes de poids le plus fort. La valeur limite infrieure (MN) ne doit pas tre plus grande que la valeur limite suprieure (MX). Exemple : A:= LIMIT (MN:=5, IN:= Bearbeitungsschritte, MX:= 10);
Paramtre Dclaration Type de donnes Zone de mmoire Description

MN

INPUT

ANY_NUM Types de donnes de temporisation l'exception de S5TIME

E, A, M, D, L

Limite infrieure

IN

INPUT

ANY_NUM Types de donnes de temporisation l'exception de S5TIME

E, A, M, D, L

Variable d'entre

MX

INPUT

ANY_NUM Types de donnes de temporisation l'exception de S5TIME

E, A, M, D, L

Limite suprieure

Valeur en retour OUTPUT

ANY_NUM Types de donnes de temporisation l'exception de S5TIME

E, A, M, D, L

Variable de sortie limite (option)

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

14-29

Fonctions standard de S7-SCL

MUX
La fonction MUX slectionne une valeur d'entre parmi un certain nombre de valeurs d'entre. La slection s'effectue avec le paramtre d'entre K. Comme valeurs d'entre, tous les types de donnes sont autoriss. L'expression prend le type de donnes de poids le plus fort. Exemple : A:= MUX (K:=SELECT, IN0:= Steps, IN1:=Number, IN2:=Total);
Paramtre Dclaration Type de donnes Zone de mmoire Description

K IN0

INPUT INPUT

INT Tous les types de donnes l'exception de ARRAY et STRUCT Tous les types de donnes l'exception de ARRAY et STRUCT Tous les types de donnes l'exception de ARRAY et STRUCT Tous les types de donnes l'exception de ARRAY et STRUCT

E, A, M, D, L E, A, M, D, L

Critre de slection Premire valeur d'entre

IN1

INPUT

E, A, M, D, L

Deuxime valeur d'entre

INn (n=231)

INPUT

E, A, M, D, L

Dernire valeur d'entre (option)

INELSE

INPUT

E, A, M, D, L

Valeur d'entre alternative (option) Si K se trouve en dehors de 0...n, cest la valeur actuelle de INELSE qui est utilise. Si INELSE nest pas occup, cest la valeur actuelle de INO qui est utilise.

Valeur en retour OUTPUT

Tous les types de donnes l'exception de ARRAY et STRUCT

E, A, M, D, L

Valeur slectionne (option)

14-30

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

Fonctions standard de S7-SCL

14.6

Fonctions systme, blocs fonctionnels systme et bibliothque standard


Fonctions systme, blocs fonctionnels systme et bibliothque standard
Le systme d'exploitation des CPU S7 contient des fonctions systme et des fonctions standard que vous pouvez utiliser lorsque vous programmez dans S7-SCL. Il s'agit de : Blocs d'organisation (OB) Fonctions systme (SFC) Blocs fonctionnels systme (SFB)

14.6.1

Interface d'appel des SFC/SFB


Vous pouvez adresser les blocs de manire symbolique ou absolue. Vous devez donc connatre soit leur mnmonique, qui doit tre dclar dans la table des mnmoniques, soit leur numro de dsignation absolue. Dans l'appel d'un bloc, vous devez affecter aux paramtres formels, dont vous avez dfini les noms et les types de donnes en crant le bloc paramtrable, les paramtres effectifs dont le bloc utilise les valeurs durant l'excution de votre programme. S7-SCL cherche le bloc appeler dans les rpertoires et bibliothques suivants : Le dossier "Programmes" La bibliothque standard SIMATIC La bibliothque standard CEI Lorsque S7-SCL trouve un bloc, il le copie dans le programme utilisateur. Certains blocs font exception : ce sont ceux qui doivent tre appels avec la notation (" ... ") par suite de leur nom ainsi que les blocs appels de manire absolue. S7-SCL cherche ces noms uniquement dans la table des mnmoniques du programme utilisateur. Vous devez les copier vous-mme dans le programme utilisateur l'aide de SIMATIC Manager.

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

14-31

Fonctions standard de S7-SCL

Appel conditionnel (SFB/SFC)


Si vous voulez raliser un appel conditionnel, vous devez affecter la valeur 0 au paramtre d'entre EN (par exemple l'entre E0.3) afin que le bloc ne soit pas appel. Lorsque EN reoit la valeur "1", la fonction est appele. Dans ce cas, le paramtre de sortie ENO est galement mis "1" (autrement "0") si aucune erreur ne survient durant l'excution du bloc. Il n'est pas recommand d'utiliser l'appel conditionnel pour les SFC, puisque la variable cense recevoir la valeur de retour de la fonction reste indfinie quand la fonction n'est pas appele.

Nota Lorsque vous utilisez les oprations suivantes pour les types de donnes TIME, DATE_AND_TIME et STRING dans votre programme, S7-SCL appelle automatiquement les blocs standard correspondants. C'est ce qui explique que les mnmoniques et les numros de ces blocs standard soient rservs et que leur emploi pour d'autres blocs soit interdit. Un manquement cette rgle n'est pas toujours contrl par S7-SCL et peut provoquer une erreur de compilateur.

Le tableau ci-aprs numre les fonctions standard CEI utilises automatiquement par S7-SCL.
Opration DATE_AND_TIME STRING

== <> > >= <= < DATE_AND_TIME + TIME DATE_AND_TIME + TIME DATE_AND_TIME + DATE_AND_TIME TIME_TO_S5TIME(TIME) S5TIME_TO_TIME(S5TIME)

EQ_DT (FC9) NE_DT (FC28) GT_DT (FC14) GE_DT (FC12) LE_DT (FC18) LT_DT (FC23) AD_DT_TM (FC1) SB_DT_TM (FC35) SB_DT_DT (FC34) TIM_S5TI (FC40) S5TI_TIM (FC33)

EQ_STRING (FC10) NE_STRING (FC29) GT_STRING (FC15) GE_STRING (FC13) LE_STRING (FC19) LT_STRING (FC24)

Pour des informations complmentaires sur les SFB, SFC et OB disponibles ainsi que pour une description dtaille de chaque interface, reportez-vous au manuel de rfrence STEP 7 "Fonctions standard et fonctions systme pour S7-300/400".

14-32

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

Fonctions standard de S7-SCL

14.6.2 Interface d'change avec les OB

Blocs d'organisation
Les blocs d'organisation constituent l'interface entre le systme d'exploitation de la CPU et le programme utilisateur. Ils permettent de cibler les parties de programme excuter : la mise en route de la CPU, de manire cyclique ou une cadence donne, des instants ou jours donns, aprs coulement d'une dure donne, l'apparition d'erreurs, lors du dclenchement d'alarmes de processus ou de communication. Les blocs d'organisation sont traits dans l'ordre de la priorit qui leur est affecte.

OB disponibles
Les CPU ne sont pas toutes en mesure de traiter l'ensemble des OB disponibles dans S7. Vrifiez dans les caractristiques techniques de votre CPU de quels OB vous diposez.

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

14-33

Fonctions standard de S7-SCL

14-34

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

15

Description du langage

15.1

Description formelle du langage

15.1.1 Prsentation des diagrammes syntaxiques


La description du langage faite dans les diffrentes rubriques se base sur des diagrammes syntaxiques. Ils vous montrent bien la structure syntaxique de S7-SCL. Ils sont regroups au complet avec les lments de langage correspondants dans les chapitres "Rgles lexicales" et "Rgles syntaxiques".

Qu'entend-on par diagramme syntaxique ?


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

Squence
Bloc 3 Bloc 1 Bloc 2 Bloc 4 Bloc 5

Option Itration

Alternative

Le diagramme syntaxique se lit de gauche droite. Il peut comporter : Squence : suite de blocs Option : branche facultative Itration : rptition de branches Alternative : aiguillage

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

15-1

Description du langage

Quelles sont les diffrentes sortes de blocs ?


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

Bloc terminal

Bloc non terminal


<Nom de la rgle>

Elment de base qui ne ncessite pas de description supplmentaire! Il s'agit de caractres imprimables et de caractres spciaux, de mots-cls et d'identificateurs prdfinis. Les indications relatives ces blocs doivent tre reprises telles quelles.

Le nom de la rgle est facultatif Elment complexe qui est dcrit par d'autres diagrammes syntaxiques.

Symbole
<Nom de la rgle> Le nom de la rgle doit figurer en majuscules ! Elment complexe, utilis comme lment de base dans les rgles syntaxiques et expliqu dans les rgles lexicales.

15.1.2 Rgles
Les rgles que vous pouvez utiliser pour construire votre programme S7-SCL comportent deux niveaux : il y a les rgles lexicales et les rgles syntaxiques.

Rgles lexicales
Les rgles lexicales dcrivent la structure des lments (symboles) sur lesquels porte l'analyse lexicale ralise par le compilateur. Le format de la notation n'est pas libre et les rgles sont appliquer rigoureusement. Cela signifie en particulier que : L'insertion de caractres de mise en forme n'est pas autorise ; L'insertion de blocs et de lignes de commentaire n'est pas possible ; L'insertion d'attributs pour les identificateurs n'est pas possible.

15-2

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

Description du langage

L'exemple montre la rgle lexicale IDENTIFICATEUR. Elle dcrit la composition d'un identificateur (nom ), par ex. : TABLEAU_MES_12 CONSIGNE_B_1

Lettre

_ Caractre de soulignement

Lettre

_ Caractre de soulignement

Lettre

Chiffre

Chiffre

Rgles syntaxiques
Les rgles syntaxiques dcrivent la structure de S7-SCL en s'appuyant sur les rgles lexicales. En respectant ces rgles, vous pouvez crer votre programme S7-SCL en toute libert de format.

Programme SCL
Rgles syntaxiques

Format libre Format non libre !

Rgles lexicales

Conventions
Chaque rgle est prcde de son nom. Si elle est utilise dans une rgle de niveau hirarchique suprieur, son nom figure dans un rectangle. Si le nom de la rgle est crit en majuscules, il s'agit d'un symbole qui est dcrit dans les rgles lexicales.

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

15-3

Description du langage

Smantique
Les rgles permettent uniquement de reprsenter la structure formelle du langage, sans toujours en livrer la signification. Des informations complmentaires sont donc crites ct des rgles pour les points importants. Voici des exemples : Un nom supplmentaire est indiqu en cas d'lments semblables mais de signification diffrente : par ex. dans la rgle d'indication de la date, Anne, Mois ou Jour pour SUITE DE CHIFFRES DECIMAUX. Le nom indique l'utilisation. Les restrictions importantes sont signales ct des rgles : par ex. la rgle Mnmonique est accompagne du rappel qu'un mnmonique doit tre dfini dans la table des mnmoniques.

15-4

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

Description du langage

15.1.3 Blocs terminaux des rgles lexicales

Dfinition
Un bloc terminal est un lment de base dont la description ne ncessite pas de rgle supplmentaire, mais une simple explication. Il est reprsent par la figure suivante dans les diagrammes syntaxiques :

Le bloc terminal est reprsent par un rectangle aux bouts arrondis ou par un cercle. Il contient soit un nom (en majuscules), soit directement une information. Celui-ci dfinit le nombre de caractres ASCII utilisables.

Les tableaux suivants numrent les diffrents blocs terminaux en indiquant pour chacun l'ensemble correspondant des lments du jeu de caractres ASCII.

Lettres et chiffres
Il s'agit des caractres les plus utiliss. L'IDENTIFICATEUR, par exemple, se compose de lettres, de chiffres et du caractre de soulignement.
Caractre Sous-groupe Elments du jeu de caractres

Lettre Chiffre Chiffre octal Chiffre hexadcimal Bit

Majuscule Minuscule Chiffre dcimal Chiffre octal Chiffre hexadcimal Chiffre binaire

AZ az 09 07 0 9, 0, 1 A F, a f

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

15-5

Description du langage

Caractres imprimables et caractres spciaux


Vous pouvez employer tout le jeu de caractres ASCII tendu dans les chanes, les commentaires et les mnmoniques.
Caractre Sous-groupe Elments du jeu de caractres

Caractre imprimable

Selon le code de caractres utilis. Tous les caractres imprimables Avec le code ASCII par exemple, partir du caractre quivalant au caractre dcimal 31, sans DEL ni les caractres de remplacement cidessous. Dollar Apostrophe $P ou $p $L ou $l $R ou $r $T ou $t $N ou $n $ ' Saut de page (formfeed, page) Changement de ligne (linefeed) Retour chariot (carriage return) Tabulation Nouvelle ligne Caractres quelconques enregistrables en code hexa (hh)

Caractre de remplacement Caractre de commande

Reprsentation de $hh remplacement en code hexadcimal

15-6

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

Description du langage

15.1.4 Caractres de mise en forme, sparateurs et oprations


Dans les rgles lexicales
Le tableau suivant montre l'utilisation de certains caractres du jeu de caractres ASCII comme caractres de mise en forme et comme sparateurs au niveau des rgles lexicales.
Caractre Description

: . '' "" _ caractre de soulignement $ $> $<

Sparateur entre heures, minutes et secondes Attributs Sparateur pour l'adressage absolu et dans la reprsentation des nombres rels et des intervalles de temps Caractre et chane de caractres Caractre introduisant le mnmonique suivant les rgles de la table des mnmoniques Sparateur pour les valeurs numriques dans les constantes, peut figurer dans les IDENTIFICATEURS Caractre d'alignement pour indiquer des caractres de commande ou des caractres de remplacement Interruption d'une chane si sa longueur dpasse une ligne ou pour insrer des commentaires

Pour les constantes


Le tableau suivant montre l'utilisation de certains caractres et chanes de caractres pour des constantes au niveau des rgles lexicales. Il s'applique aux jeux d'abrviations allemand et anglais.
Prfixe Caractrise Rgle lexicale

BOOL# BYTE# WORD# DWORD# INT# DINT# REAL# CHAR# 2# 8# 16# D# DATE# DATE_AND_TIME# DT# E e

Constante type de type BOOL Constante type de type BYTE Constante type de type WORD Constante type de type DWORD Constante type de type INT Constante type de type DINT Constante type de type REAL Constante type de type CHAR Constante numrique Constante numrique Constante numrique Indication temporelle Indication temporelle Indication temporelle Indication temporelle Sparateur pour constante relle Sparateur pour constante relle

Constante binaire Constante binaire Constante binaire Constante binaire Constante entire Constante entire Constante relle Constante sur caractre Suite de chiffres binaires Suite de chiffres octaux Suite de chiffres hexadcimaux Date Date Date et heure Date et heure Exposant Exposant

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

15-7

Description du langage

Prfixe

Caractrise

Rgle lexicale

D H M MS S T# TIME# TIME_OF_DAY# TOD#

Sparateur pour intervalle de temps (jour) Jours (rgle : reprsentation par niveaux) Sparateur pour intervalle de temps (heure) Heures : (rgle : reprsentation par niveaux) Sparateur pour intervalle de temps Minutes : (rgle : reprsentation par (minutes) niveaux) Sparateur pour intervalle de temps Millisecondes : (rgle : reprsentation par (millisecondes) niveaux) Sparateur pour intervalle de temps Secondes : (rgle : reprsentation par (secondes) niveaux) Indication temporelle Dure Indication temporelle Dure Indication temporelle Heure du jour Indication temporelle Heure du jour

Dans les rgles syntaxiques


Le tableau suivant montre l'utilisation de certains caractres comme caractres de mise en forme et comme sparateurs au niveau des rgles syntaxiques ainsi que dans les commentaires et les attributs.
Caractre Description Rgle syntaxique, commentaire ou attribut

Sparateur pour l'indication du type, dans une instruction aprs un repre de saut Fin de dclaration ou d'instruction

Dclaration de variable, dclaration d'instance, fonction, section des instructions, instruction CASE Dclaration de variable, section des instructions, section d'affectation de DB, section de constantes, section de repres de saut, dclaration de composant Dclaration de variable, spcification du type de donnes ARRAY, liste d'initialisation d'un tableau, paramtres de FB, paramtres de FC, liste de valeurs, dclaration d'instance Spcification du type de donnes ARRAY, liste de valeurs Appel de FB, variable complexe Appel de fonction et de FB, expression, liste d'initialisation de tableau, multiplication simple, expression de puissance Spcification du type de donnes ARRAY, spcification du type de donnes STRING

Sparateur dans les listes et les sections de repres de saut

.. . ()

Indication de plage Sparateur pour nom de FB et de DB, adressage absolu Appel de fonction et de bloc fonctionnel, mise entre parenthses dans les expressions, liste d'initialisation de tableau Dclaration d'un tableau, variable complexe, partie de tableau, indexation pour variables globales et chanes de caractres Bloc de commentaire Ligne de commentaire Section d'attributs Introduction d'un identificateur direct Introduction d'un non-mot-cl

[]

(* *) // {} % #

voir "Rgles lexicales" voir "Rgles lexicales" Affectation d'attributs Pour programmer en conformit avec CEI, on peut employer %M4.0 au lieu de M4.0. Caractrise un identificateur comme n'tant pas un mot-cl, par ex. #FOR.

15-8

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

Description du langage

Oprations
Le tableau suivant numre toutes les oprations de S7-SCL, les mots-cls tels que AND et les oprations courantes reprsentes par un seul caractre. Il s'applique aux jeux d'abrviations allemand et anglais.
Opration Description Rgle syntaxique

:=

Opration d'affectation, affectation de dpart, initialisation de type de donnes

Affectation de valeur, section d'affectation de DB, section de constantes, dfinition de sortie ou d'entre/sortie, dfinition d'entre, dfinition d'entre/sortie

+, +, -, *, / MOD; DIV ** NOT AND, &, OR; XOR, <,>,<=,>=,=,<>

Oprations arithmtiques : oprations Expression, expression simple, expression de unaires, signes puissance Oprations arithmtiques de base Oprations arithmtiques : opration de puissance Oprations logiques : ngation Oprations logiques de base Oprations de comparaison Opration arithmtique de base, multiplication simple Expression Expression, oprande Opration logique de base Opration de comparaison

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

15-9

Description du langage

15.1.5 Mots-cls et identificateurs prdfinis


Le tableau suivant dresse la liste par ordre alphabtique des mots-cls de S7-SCL et des identificateurs prdfinis. Ils sont accompagns d'une description et de la rgle syntaxique dans laquelle ils sont utiliss comme blocs terminaux. De faon gnrale, les mots-cls ne dpendent pas du jeu d'abrviations.
Mot-cl Description Rgle syntaxique

AND ANY ARRAY

Opration logique Dsignation du type de donnes ANY Introduction de la spcification d'un tableau, suivie de la liste des indices place entre "[" et "]". Dclare un accs une variable

Opration logique de base Spcification d'un type de donnes paramtre Spcification du type de donnes ARRAY Dclaration de variable

AT BEGIN

Introduction de la section des instructions Bloc d'organisation, fonction, bloc pour les blocs de code ou de la section fonctionnel, bloc de donnes d'initialisation pour les blocs de donnes Dsignation du type de donnes BLOCK_DB Dsignation du type de donnes BLOCK_FB Dsignation du type de donnes BLOCK_FC Dsignation du type de donnes BLOCK_SDB Type de donnes simple pour donnes binaires Introduction de l'incrment Type de donnes simple Introduction de l'instruction de contrle pour slection Type de donnes simple Instruction de commande pour les boucles FOR, WHILE et REPEAT Type de donnes pour compteur, utilisable seulement dans une section de paramtres Introduction du bloc de donnes Type de donnes simple pour date Type de donnes complexe pour date et heure Type de donnes simple pour entier prcision double Opration pour division Spcification d'un type de donnes paramtre Spcification d'un type de donnes paramtre Spcification d'un type de donnes paramtre Spcification d'un type de donnes paramtre Type de donnes binaire Instruction FOR Type de donnes binaire Instruction CASE Type de donnes caractre Instruction CONTINUE Spcification d'un type de donnes paramtre Bloc de donnes Type de donnes temporel DATE_AND_TIME Type de donnes numrique Opration arithmtique de base, multiplication simple

BLOCK_DB BLOCK_FB BLOCK_FC BLOCK_SDB BOOL BY BYTE CASE CHAR CONST CONTINUE COUNTER

Introduction de la dfinition de constantes Section de constantes

DATA_BLOCK DATE DATE_AND_TIME DINT DIV DO

Introduction de la section des instructions Instruction FOR, instruction WHILE pour l'instruction FOR

15-10

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

Description du langage

Mot-cl

Description

Rgle syntaxique

DT DWORD ELSE ELSIF EN ENO END_CASE END_CONST END_DATA_BLOCK END_FOR END_FUNCTION END_FUNCTION_BLOCK END_IF END_LABEL END_TYPE END_ORGANIZATION_ BLOCK END_REPEAT END_STRUCT END_VAR END_WHILE EXIT FALSE

Type de donnes simple pour date et heure Introduction du cas o aucune condition n'est remplie Introduction de la condition alternative Drapeau validant le bloc Drapeau d'erreur du bloc Fin de l'instruction CASE Fin de la dfinition de constantes Fin du bloc de donnes Fin de l'instruction FOR Fin de la fonction Fin du bloc fonctionnel Fin de la condition IF Fin de la section de repres de saut Fin de l'UDT Fin du bloc d'organisation Fin de l'instruction REPEAT Fin de la spcification d'une structure Fin d'une section de dclaration Fin de l'instruction WHILE Abandon direct du traitement d'une boucle Constante boolenne prdfinie : condition logique non remplie, valeur gale 0 Introduction de l'instruction de contrle pour traitement de boucle Introduction de la fonction Introduction du bloc fonctionnel

DATE_AND_TIME

Type de donnes simple pour double mot Type de donnes binaire Instruction IF, instruction CASE Instruction IF

Instruction CASE Section de constantes Bloc de donnes Instruction FOR Fonction Bloc fonctionnel Instruction IF Section de repres de saut Type de donnes utilisateur Bloc d'organisation Instruction REPEAT Spcification du type de donnes STRUCT de variables temporaires, de variables statiques, de paramtres Instruction WHILE EXIT

FOR FUNCTION FUNCTION_BLOCK GOTO IF INT LABEL MOD NIL

Instruction FOR Fonction Bloc fonctionnel

Instruction ordonnant un saut un repre Saut dans le programme de saut Introduction de l'instruction de contrle pour slection Type de donnes simple pour entier prcision simple Introduction de la section de repres de saut Instruction IF Type de donnes numrique Section de repres de saut

Opration arithmtique pour le reste de la Opration arithmtique de base, division multiplication simple Pointeur zro

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

15-11

Description du langage

Mot-cl

Description

Rgle syntaxique

NOT OF OK OR ORGANIZATION_BLOCK POINTER

Opration logique faisant partie des oprations unaires

Expression, oprande

Introduction de la spcification du type de Spcification du type de donnes donnes ARRAY, instruction CASE Drapeau indiquant si les instructions d'un bloc ont t excutes sans erreur Opration logique Introduction du bloc d'organisation Opration logique de base Bloc d'organisation

Type de donnes pointeur, autoris Voir chapitre "Donnes globales". seulement dans la dclaration de paramtre dans la section de paramtres, n'est pas trait dans S7-SCL Introduction de la section des instructions Bloc fonctionnel d'un FB (synonyme de FUNCTION_BLOCK) Type de donnes simple Introduction de l'instruction de contrle pour traitement de boucle Valeur en retour d'une fonction Instruction de commande pour revenir d'un sous-programme Type de donnes simple, format S5 spcial Type de donnes pour chane de caractres Introduction de la spcification d'une structure, suivie de la liste des composants Introduction des actions conscutives si la condition est remplie Type de donnes simple pour indications temporelle Type de donnes pour temporisation, utilisable seulement dans une section de paramtres Type de donnes simple pour l'heure du jour Introduction de la valeur finale Type de donnes simple pour l'heure du jour Constante boolenne prdfinie : condition logique remplie, valeur diffrente de 0 Introduction d'un UDT Introduction d'une section de dclaration Introduction d'une section de dclaration Introduction de la condition d'abandon pour instruction REPEAT Type de donnes utilisateur Section de variables statiques Section de variables temporaires Instruction REPEAT Type de donnes numrique Instruction REPEAT Fonction Instruction RETURN Type de donnes temporel Spcification du type de donnes STRING Spcification du type de donnes STRUCT Instruction IF Type de donnes temporel Spcification de type de donnes paramtre Type de donnes temporel Instruction FOR Type de donnes temporel

PROGRAM

REAL REPEAT RET_VAL RETURN S5TIME STRING STRUCT

THEN TIME TIMER

TIME_OF_DAY TO TOD TRUE

TYPE VAR VAR_TEMP UNTIL

15-12

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

Description du langage

Mot-cl

Description

Rgle syntaxique

VAR_INPUT VAR_IN_OUT VAR_OUTPUT WHILE WORD VOID XOR

Introduction d'une section de dclaration Introduction d'une section de dclaration Introduction d'une section de dclaration Introduction de l'instruction de contrle pour traitement de boucle Type de donnes simple pour mot Pas de valeur de retour pour un appel de fonction Opration logique

Section de paramtres Section de paramtres Section de paramtres Instruction WHILE Type de donnes binaire Fonction Opration logique de base

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

15-13

Description du langage

15.1.6 Identificateurs d'oprande et mots-cls de bloc

Donnes systme globales


Le tableau suivant dresse la liste des identificateurs d'oprande de S7-SCL et en donne une description. Indication de l'identificateur d'oprande : prfixe de mmoire (A, E, M, PA, PE) ou bloc de donnes (D) Indication de la taille de l'lment de donnes : prfixe de taille (facultatif ou B, D, W, X) L'abrviation est une combinaison de l'identificateur d'oprande (prfixe de mmoire ou D pour bloc de donnes) et du prfixe de taille qui sont tous deux des rgles lexicales. Le tableau est class dans l'ordre alphabtique des abrviations allemandes ; les abrviations anglaises sont cites en regard.
Abrviation allemande Abrviation anglaise Prfixe de mmoire ou bloc de donnes Prfixe de taille

A AB AD AW AX D DB DD DW DX E EB ED EW EX M MB MD MW MX PAB PAD PAW PEB PED PEW

Q QB QD QW QX D DB DD DW DX I IB ID IW IX M MB MD MW MX PQB PQD PQW PIB PID PIW

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

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

15-14

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

Description du langage

Mots-cls de bloc
Ils servent l'adressage absolu de blocs. Le tableau donne la liste des mots-cls de bloc classs d'aprs les abrviations allemandes, avec les abrviations anglaises correspondantes.
Abrviation allemande Abrviation anglaise Prfixe de mmoire ou bloc de donnes

DB FB FC OB SDB SFC SFB T UDT Z

DB FB FC OB SDB SFC SFB T UDT C

Bloc de donnes (Data_Block) Bloc fonctionnel (Function_Block) Fonction (Function) Bloc d'organisation (Organization_Block) Bloc de donnes systme (System_Data_Block) Fonction systme (System_Function) Bloc fonctionnel systme (System_Function_Block) Temporisation (Timer) Type de donnes global ou utilisateur (Userdefined_Data_Type) Compteur (Counter)

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

15-15

Description du langage

15.1.7

Prsentation des blocs non terminaux


Un bloc non terminal est un lment complexe, dcrit par une rgle supplmentaire. Il est reprsent par une bote. Le nom figurant dans cette bote est celui de la rgle plus dtaille.
Bloc non terminal <Nom de la rgle> Nom de la rgle : majuscules ou minuscules !

Cet lment se rencontre dans les rgles lexicales et dans les rgles syntaxiques.

15.1.8 Prsentation des symboles


Un symbole est un lment complexe qui est employ comme lment de base dans les rgles syntaxiques et expliqu dans les rgles lexicales. Il est reprsent par un rectangle. Le NOM en majuscules est celui de la rgle lexicale plus dtaille (sans rectangle).
Symbole <Nom de la rgle> Nom de la rgle : toujours en majuscules !

Les symboles dfinis reprsentent des identificateurs qui dcoulent des rgles lexicales. Ils dcrivent : Les identificateurs L'attribution de noms dans S7-SCL Les constantes prdfinies et les drapeaux

15-16

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

Description du langage

15.1.9 Identificateurs

Identificateurs
Les identificateurs servent adresser des objets du langage S7-SCL. Le tableau suivant vous renseigne sur les classes d'identificateurs.
Type d'identificateur Remarques, exemples

Mots-cls Noms prdfinis

par ex. instructions de commande BEGIN, DO, WHILE Noms de


Types de donnes standard (par ex. BOOL, BYTE, INT) Fonctions standard prdfinies (par ex. ABS) Constantes standard TRUE et FALSE

Identificateurs d'oprande dans les identificateurs absolus Noms quelconques de votre choix conformes la rgle IDENTIFICATEUR

Pour donnes systme globales et blocs de donnes globaux : par ex. E1.2, MW10, FC20, T5, DB30, DB10.D4.5 Noms de

Variables dclares Composants de structure Paramtres Constantes dclares Repres de saut

Mnmoniques de la table des Conformes la rgle lexicale IDENTIFICATEUR ou la rgle lexicale mnmoniques Mnmonique, c'est--dire crits entre guillemets, par ex. "xyz"

Majuscules et minuscules
La distinction entre majuscules et minuscules n'est pas faite pour les mots-cls. Depuis la version 4.0 de S7-SCL, elle n'est plus faite non plus pour les noms prdfinis, pour les noms que vous choisissez vous-mme, par ex. pour les variables, ainsi que pour les mnmoniques de la table des mnmoniques (voir le tableau ci-aprs).
Type d'identificateur Distinction entre majuscules et minuscules ?

Mots-cls Noms prdfinis des types de donnes standard Noms des fonctions standard prdfinies Noms prdfinis des constantes standard Identificateurs d'oprande dans les identificateurs absolus Noms quelconques de votre choix Mnmoniques de la table des mnmoniques

non non non non non non non

Vous pouvez donc crire aussi en minuscules les noms des fonctions standard, comme par ex. BYTE_TO_WORD et ABS. Il en est de mme pour les paramtres des fonctions de temporisation et de comptage, par ex. SV, se ou ZV.

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

15-17

Description du langage

15.1.10 Attribution de noms dans S7-SCL

Attribution de noms au choix


Il y a deux faons d'attribuer des noms. Vous pouvez les attribuer vous-mme dans S7-SCL. Ils doivent tre conformes la rgle IDENTIFICATEUR qui s'applique chaque nom employ dans S7-SCL. Vous pouvez les introduire par l'intermdiaire de STEP 7 l'aide de la table des mnmoniques. Ils suivent alors la rgle IDENTIFICATEUR ou bien celle des mnmoniques. Le mnmonique tant indiqu entre guillemets, il peut comporter tous les caractres imprimables (par ex. des espaces).
IDENTIFICATEUR
Lettre

_ Caractre de soulignement

Lettre

Lettre

Chiffre

Caractre de soulignement

Chiffre

MNEMONIQUE
" Caractre imprimable "

Les mnmoniques doivent tre dfinis dans la table des mnmoniques.

Rgles pour l'attribution de noms


Tenez compte des points suivants : Choisissez des noms univoques et vocateurs qui contribuent la clart du programme. Assurez-vous que le nom n'est pas dj utilis par le systme, par exemple pour les identificateurs des types de donnes ou des fonctions standard. Domaine de validit : Dans le cas de variables globales, s'tend tout le programme, dans le cas de variabales locales, se limite au bloc. On trouve donc des variables de mme nom dans des blocs diffrents (voir le tableau ci-dessous sur les rgles d'attribution de noms).

15-18

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

Description du langage

Restrictions
En attribuant un nom, tenez compte des quelques restrictions suivantes. Les noms doivent tre univoques dans leur zone de validit, c'est--dire qu'il n'est pas permis d'utiliser encore une fois dans le mme bloc un nom qui y a dj t attribu. En outre, il ne faut pas employer les noms suivants qui sont utiliss par le systme : Noms de mots-cls, par ex. CONST, END_CONST, BEGIN ; Noms des oprations, par ex. AND, XOR ; Noms des identificateurs prdfinis, par ex. noms de types de donnes tels que BOOL, STRING, INT ; Noms des constantes prdfinies TRUE et FALSE ; Noms des fonctions standard, par ex. ABS, ACOS, ASIN, COS, LN ; Noms des identificateurs d'oprande pour donnes systme globales, par ex. EB, EW, ED, AB, AW, AD MB, MD.

Utilisation de la rgle IDENTIFICATEUR


Le tableau suivant prcise dans quels cas vous pouvez attribuer des noms conformes la rgle IDENTIFICATEUR.
Identificateur Description Rgle

Nom de bloc Nom de temporisation et de compteur Nom d'attribut Nom de constante Repre de saut

Nom symbolique de bloc

DESIGNATION DE BLOC, appel de fonction

Nom symbolique de temporisation DESIGNATION DE et de compteur TEMPORISATION, DESIGNATION DE COMPTEUR Nom pour un attribut Dclaration d'une constante symbolique, utilisation Dclaration d'un repre de saut, utilisation d'un repre de saut Dclaration d'une variable temporaire ou statique Affectation d'attribut Section de constantes, constante Section de repres de saut, section des instructions, instructions GOTO Dclaration de variable, variable simple, variable complexe

Nom de variable Nom d'instance locale

Dclaration d'une instance locale Dclaration d'instance, nom d'appel de FB

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

15-19

Description du langage

DESIGNATION DE BLOC
Dans la rgle DESIGNATION DE BLOC, vous pouvez employer au choix les rgles IDENTIFICATEUR et Mnmonique.
DESIGNATION DE BLOC

Mot-cl de bloc DB, FB, FC, OB, SDB, SFC, SFB, UDT IDENTIFICATEUR

Numro

Mnmonique

Il en est de mme pour les rgles DESIGNATION DE TEMPORISATION et DESIGNATION DE COMPTEUR.

15.1.11 Constantes et drapeaux prdfinis


Les deux tableaux s'appliquent aux jeux d'abrviations allemand comme anglais.

Constantes
Abrviation Description

FALSE TRUE

Constante boolenne prdfinie (constante standard) de valeur 0. Sa signification logique est qu'une condition n'est pas remplie. Constante boolenne prdfinie (constante standard) de valeur 1. Sa signification logique est qu'une condition est remplie.

Drapeaux
Abrviation Description

EN ENO OK

Drapeau validant le bloc Drapeau d'erreur du bloc Drapeau qui est mis FALSE quand une erreur s'est produite dans l'excution d'une instruction.

15-20

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

Description du langage

15.2

Rgles lexicales

15.2.1 Prsentation des rgles lexicales


Les rgles lexicales dcrivent la structure des lments (symboles) sur lesquels porte l'analyse lexicale ralise par le compilateur. Le format de la notation n'est pas libre et les rgles sont appliquer rigoureusement. Cela signifie en particulier que : L'insertion de caractres de mise en forme n'est pas autorise. L'insertion de blocs et de lignes de commentaire n'est pas possible. L'insertion d'attributs pour les identificateurs n'est pas possible.

15.2.2 Dsignations
Rgle Diagramme syntaxique

Identificateur
IDENTIFICATEUR
Lettre

_ Caractre de soulignement

Lettre

_ Caractre de soulignement

Lettre

Chiffre

Chiffre

Dsignation de bloc
DESIGNATION DE BLOC

Mot-cl de bloc DB, FB, FC, OB, SDB, SFC, SFB, UDT IDENTIFICATEUR

Numro

Mnmonique

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

15-21

Description du langage

Rgle

Diagramme syntaxique

Dsignation de temporisation

T
Abrviation allemande et anglaise

Numro

IDENTIFICATEUR

Mnmonique

Dsignation de compteur
Z Abrviation allemande 'Z' Abrviation anglaise 'C' IDENTIFICATEUR Numro

Mnmonique

Mot-cl de bloc
OB FC SFC FB SFB DB UDT Bloc d'organisation Fonction Fonction systme Bloc fonctionnel

Bloc fonctionnel systme Bloc de donnes Type de donnes utilisateur (User Data Type)

Mnmonique
" Caractre imprimable "

Numro
Chiffre

15-22

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

Description du langage

15.2.3 Constantes
Rgle Diagramme syntaxique
CONSTANTE BINAIRE
BOOL# BYTE# SUITE DE CHIFFRES DECIMAUX SUITE DE CHIFFRES OCTAUX SUITE DE CHIFFRES HEXA SUITE DE CHIFFRES BINAIRES CARACTERES (1)

Constante binaire

WORD# DWORD#

(1) pour le type BYTE seulement

Constante entire
CONSTANTE ENTIERE
INT# DINT# + SUITE DE CHIFFRES DECIMAUX SUITE DE CHIFFRES OCTAUX SUITE DE CHIFFRES HEXA SUITE DE CHIFFRES BINAIRES CARACTERES (1)

(1) pour le type INT seulement

Constante relle
CONSTANTE REELLE
SUITE DE CHIFFRE DECIMAUX . SUITE DE CHIFFRE DECIMAUX

+ REAL# -

SUITE DE CHIFFRE DECIMAUX

SUITE DE CHIFFRE DECIMAUX

Exposant

Suite de chiffres dcimaux

Suite de chiffres dcimaux

Chiffre

_
Chiffres dcimaux : 0-9

Caractre de soulignement

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

15-23

Description du langage

Rgle

Diagramme syntaxique

Suite de chiffres binaires


2# Chiffre binaire

_ Chiffre binaire : 0 ou 1 Caractre de soulignement

Suite de chiffres octaux


Suite de chiffres octaux
8# Chiffre octal

_ Caractre de soulignement

Suite de chiffres hexadcimaux

CHIFFRE HEXADECIMAL 16# Chiffre hexadcimal

_ Chiffre hexadcimal : 0-9 A-F Caractre de soulignement

Exposant
Exposant
E + SUITE DE CHIFFRES DECIMAUX e -

Constante sur caractre


CONSTANTE SUR CARACTERE
CHAR# ' Caractre '

SUITE DE CHIFFRES DECIMAUX

15-24

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

Description du langage

Rgle

Diagramme syntaxique
CONSTANTE SUR CHAINE

Constante sur chane

'

Caractre

Interruption de la chane

Caractre

'

Caractre

Interruption d'une chane de caractres

Interruption d'une chane de caractres

Caractre de mise en forme $> Commentaire

Caractre d'espacement (blank) de changement de ligne (linefeed) de retour chariot (carriage return) de saut de page (formfeed, page) de tabulation horizontale (tabulator)

$<

Date
Date
DATE# Indication de la date D#

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

15-25

Description du langage

Rgle

Diagramme syntaxique

Dure
Dure
TIME# Reprsentation dcimale

T#

Reprsentation par niveau

Reprsentation dcimale

-Chaque unit de temps (heures, minutes) ne doit tre indique qu'une seule fois -L'ordre - jours, heures, minutes, secondes, millisecondes - doit tre respect

Heure du jour
Heure du jour
TIME_OF_DAY# Indication de l'heure du jour TOD#

Date et heure
Date et heure
DATE_AND_TIME# Indication de la date DT# Indication de l'heure du jour

Indication de date
Indication de la date
SUITE DE CHIFFRES DECIMAUX Anne SUITE DE CHIFFRES DECIMAUX Mois SUITE DE CHIFFRES DECIMAUX Jour

15-26

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

Description du langage

Rgle

Diagramme syntaxique
Indication de l'heure du jour
SUITE DE CHIFFRES DECIMAUX SUITE DE CHIFFRES DECIMAUX

Indication d'heure du jour

Indication des heures

Indication des minutes

SUITE DE CHIFFRES DECIMAUX Indication des secondes

SUITE DE CHIFFRES DECIMAUX Indication des millisecondes

Reprsentation dcimale

Reprsentation dcimale
SUITE DE CHIFFRES DECIMAUX . SUITE DE CHIFFRES DECIMAUX D Jours

SUITE DE CHIFFRES DECIMAUX

SUITE DE CHIFFRES DECIMAUX

Heures

SUITE DE CHIFFRES DECIMAUX

SUITE DE CHIFFRES DECIMAUX

Minutes M

SUITE DE CHIFFRES DECIMAUX

SUITE DE CHIFFRES DECIMAUX

Secondes

SUITE DE CHIFFRES DECIMAUX

SUITE DE CHIFFRES DECIMAUX

MS

Millisecondes

Pour passer la reprsentation dcimale, il faut que les units temporelles n'aient pas encore t dfinies

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

15-27

Description du langage

Rgle

Diagramme syntaxique
Reprsentation par niveaux

Reprsentation par niveaux

SUITE DE CHIFFRES DECIMAUX

SUITE DE CHIFFRES DECIMAUX

Jours

Heures

SUITE DE CHIFFRES DECIMAUX

SUITE DE CHIFFRES DECIMAUX

Minutes

Secondes

SUITE DE CHIFFRES DECIMAUX

MS

Millisecondes

15-28

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

Description du langage

15.2.4 Adressage absolu

Rgle

Diagramme syntaxique

Adressage simple de la mmoire

IDENTIFICATEUR D'OPERANDE

Adresse Adressage absolu

IDENTIFICATEUR

MNEMONIQUE

Adressage symbolique

Adessage index de la mmoire


Prfixe de mmoire Prfixe de taille [ Expression de base Indice Pour adressage binaire seulement , Expression de base ]

Identificateur d'oprande

Identificateur d'oprande pour mmoire

Identificateur d'oprande
Prfixe de mmoire Prfixe de taille

Adresage absolu d'un DB


Identificateur d'oprande DB Adresse

Adressage absolu

Adressage index d'un DB

Index

Identificateur d'oprande DB

Expression de base

Expression de base

uniquement pour l'adressage par bit

Adressage structur d'un DB


IDENTIFICATION DU DB

Variable simple

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

15-29

Description du langage

Rgle

Diagramme syntaxique
Identificateur d'oprande DESIGNATION DU DB Prfixe de taille

Identificateur d'oprande DB

Prfixe de mmoire
Prfixe de mmoire
E A M PE PA Abrviations allemandes I Q M PI PQ Entre Sortie Mmento Priphrie des entres Priphrie des sorties

Abrviations anglaises

Prfixe de taille pour mmoire et DB

Prfixe de taille
X B W D Bit Octet Mot Double mot

Adresse pour mmoire et DB

Adresse
Numro . Numro

uniquement pour une adresse binaire

Adressage de l'instance locale


IDENTIFICATEUR Nom de l'instance locale .

Variable simple

15-30

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

Description du langage

15.2.5 Commentaires
Voici les restrictions dont vous devez tenir compte lorsque vous insrez des commentaires : L'imbrication de commentaires est autorise quand l'option "Imbrication de commentaires possible" est active. L'insertion de commentaires est possible n'importe o dans les rgles syntaxiques, mais il ne l'est pas dans les rgles lexicales.
Rgle Diagramme syntaxique

Commentaire
Ligne de commentaire

Bloc de commentaire

Ligne de commentaire
Ligne de commentaire
Caractre imprimable

//

CR Retour chariot (carriage return)

Bloc de commentaire

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

15-31

Description du langage

15.2.6

Attributs de bloc
Les attributs de blocs peuvent se trouver avec la syntaxe suivante aprs la DESIGNATION DU BLOC et avant la dclaration de la premire section de variables ou de paramtres.

Rgle

Diagramme syntaxique

Titre

Version

Protection de bloc

Auteur

Nom

Famille de blocs

Attributs systme pour bloc

Attributs systme de blocs


24 caractres au maximum
caractre imprimable

IDENTIFICATEUR

:=

'

15-32

LAMICED ERBMON
'

LAMICED ERBMON

TCETORP_WOH_WONK

noisreV

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

Description du langage

15.2.7 Options du compilateur


Les options du compilateur se trouvent dans une ligne distincte en dehors des limites de blocs dans la source. Aucune distinction n'est faite entre les majuscules et les minuscules.
Rgle Diagramme de syntaxe

Option du compilateur

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

15-33

Description du langage

15.3

Rgles syntaxiques

15.3.1 Prsentation des rgles syntaxiques


Les rgles syntaxiques dcrivent la structure de S7-SCL en s'appuyant sur les rgles lexicales. En respectant ces rgles, vous pouvez crer votre programme S7-SCL en toute libert de format. Chacune des rgles est prcde de son nom. Si elle est applique dans une rgle de niveau hirarchique suprieur, son nom figure dans un rectangle. Si le nom est crit en majuscules dans le rectangle, il s'agit d'un symbole qui est dcrit dans les rgles lexicales. Pour les noms de rgle figurant dans un rectangle aux coins arrondis ou dans un cercle, vous trouverez des informations au chapitre "Description formelle du langage".

Libert de format
La libert de format implique que : L'insertion de caractres de mise en forme est partout possible ; L'insertion de lignes et de blocs de commentaire est possible.

15-34

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

Description du langage

15.3.2 Organisation des sources S7-SCL

Rgle

Diagramme syntaxique

Programme S7-SCL
Elment du programme SCL

Elment de programme S7-SCL

Bloc d'organisation

Fonction

Bloc fonctionnel

Bloc de donnes

Type de donnes utilisateur

Bloc d'organisation
Bloc d'organisation

ORGANIZATION_BLOCK

DESIGNATION DE L'OB

Section de dclaration de l'OB

BEGIN

Section des instructions

END_ORGANIZATION_BLOCK

Fonction
N'oubliez pas que pour les fonctions sans VOID dans la section des instructions, la valeur de retour doit tre affecte au nom de la fonction !
Fonction
VOID DESIGNATION DE LA FC Spcification du type de donnes

FUNCTION

Section de dclaration de la FC

BEGIN

Section des instructions

END_FUNCTION

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

15-35

Description du langage

Rgle

Diagramme syntaxique

Bloc fonctionnel
Bloc fonctionnel
PROGRAM

DESIGNATION DU FB

Section de dclaration du FB

FUNCTION_BLOCK

END_PROGRAM

BEGIN

Section des instructions END_FUNCTION_BLOCK

Bloc de donnes
Bloc de donnes
DESIGNATION DU DB

DATA_BLOCK

Section de dclaration du DB

BEGIN

Section d'affectation du DB

END_DATA_BLOCK

Type de donnes utilisateur

Type de donnes utilisateur


Spcification du type de donnes STRUCT

TYPE

DESIGNATION DE L`UDT

END_TYPE

15-36

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

Description du langage

15.3.3 Composition des sections de dclaration

Rgle

Diagramme syntaxique

Section de dclaration de l'OB


Section des constantes Section des repres de saut Section des variables temporaires

Section de dclaration de la FC
Section des constantes Section des repres de saut

Section des variables temporaires Section des paramtres Interface

Section de dclaration du FB
Section des constantes Section des repres de saut Section des variables temporaires Section des variables statiques

Section des paramtres

Interface

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

15-37

Description du langage

Rgle

Diagramme syntaxique

Section de dclaration du DB
DESIGNATION DE L'UDT Structure de la spcification du type de donnes

Section d'affectation du DB

Section d'affectation du DB
Variable simple

:=

Constante*

* en notation LIST

Section des constantes


Section des constantes

CONST

IDENTIFICATEUR Mnmonique de la constante

:=

Expression simple

END_CONST

Section des repres de saut

Section de dclaration des repres de saut

LABEL

IDENTIFICATEUR Repre de saut ,

END_LABEL

15-38

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

Description du langage

Rgle

Diagramme syntaxique

Section des variables statiques

Section de variables statiques


Dclaration des variables VAR Dclaration d'instance* END_VAR

* pour FB seulement

Dclaration de variables
Initialisation du type de donnes

IDENTIFICATEUR Nom de la variable, du paramtre ou du composant

1)

Spcification du type de donnes

Nom du composant dans la structure , Pas l'initialisation

1)

Attributs systme de paramtres

24 caractres au maximum

IDENTIFICATEUR

:=

'

caractre imprimable

'

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

.LAITINID ETSIL

ETNATSNOC

UAELBAT NUD

NOITASILAITINI

Initialisation du type de donnes

15-39

Description du langage

Rgle

Diagramme syntaxique

Dclaration d'instance (possible seulement dans la section VAR d'un FB)

Dclaration d'instances
DESIGNATION DU FB IDENTIFICATEUR Nom de l'instance locale , : DESIGNATION DU SFB

Le FB et le SFB doivent dj exister !

Section de variables temporaires

Section de variables temporaires

VAR_TEMP

Dclaration de la variable

END_VAR

, L'initialisation n'est pas possible

15-40

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

SETNATSNOC ED .TEPER ED ETSIL

ETNATSNOC

.TITEPER ED ETSIL

SETNATSNOC ED

ETNATSNOC

SETNATSNOC ED NOITITEPER ED ETSIL


,

Liste d'initialisation de tableau

XUAELBAT ED NOITASILAITINID ETSIL

NOITITEPER ED RUETCAF
[

SELAMICED SERFFIHC ED ENIAHC

Description du langage

Rgle

Diagramme syntaxique

Section de paramtres
Section des paramtres
VAR_INPUT VAR_OUTPUT Dclaration de la variable

END_VAR

VAR_IN_OUT L'initialisation est uniquement possible pour VAR_INPUT et VAR_OUTPUT

Spcification du type de donnes

Type de donnes lmentaire

DATE_AND_TIME

Spcification du type de donnes chane de caractres

Spcification du type de donnes ARRAY Spcification du type de donnes STRUCT DESIGNATION DE L'UDT

Spcification du type de donnes paramtre

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

15-41

Description du langage

15.3.4

Types de donnes dans S7-SCL

Rgle

Diagramme syntaxique

Type de donnes simple


Type de donnes binaire

Type de donnes caractre

Type de donnes numrique

Type de donnes temporel

Type de donnes binaire


BOOL BYTE WORD DWORD Bit Octet Mot Double mot

Type de donnes caractre

CHAR

Spcification du type de donnes STRING

Spcification du type de donnes STRING

STRING

Expression simple Longueur de la chane

Type de donnes numrique

INT DINT REAL

Entier Entier, double prcision

Nombre rel

15-42

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

Description du langage

Rgle

Diagramme syntaxique

Type de donnes temporel

S5TIME TIME TIME_OF_DAY

Temps Format S5 Temps

Heure du jour TOD DATE Date

DATE_AND_TIME
DATE_AND_TIME
DATE_AND_TIME# Indication de la date DT# Indication de l'heure du jour

Spcification du type de donnes ARRAY

Spcification du type de donnes ARRAY

Spcification des indices

ARRAY

Indice 1

.. ,

Indice n

6 dimensions au plus

OF

Spcification du type de donnes

Spcification du type de donnes STRUCT


N'oubliez pas de terminer le Spcification du type de donnes STRUCT mot-cl END_STRUCT par un point-virgule ! Dclaration des
STRUCT composants

END_STRUCT

Dclaration des composants


IDENTIFICATEUR Nom du composant : Spcification du type de donnes Initialisation des donnes ;

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

15-43

Description du langage

Rgle

Diagramme syntaxique

Spcification du type de donnes paramtre

TIMER COUNTER

Temporisation Compteur Type quelconque

ANY

POINTER

Adresse

BLOCK_FC BLOCK_FB BLOCK_DB BLOCK_SDB

Fonction Bloc fonctionnel Bloc de donnes Bloc de donnes systme

15-44

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

Description du langage

15.3.5 Section des instructions

Rgle

Diagramme syntaxique

Section des instructions


Section des instructions

IDENTIFICATEUR Repre de saut

Instruction

Instruction
Instruction
Affectation de valeur

Excution de sous-programme

Instruction de contrle

Affectation de valeur
Affectation de valeur

Variable simple Variable absolue Dans zones de mmoire CPU Variable dans DB

:=

Expression

Variable instance locale

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

15-45

Description du langage

Rgle

Diagramme syntaxique

Variable tendue
Variable tendue
Variable simple Variable absolue pour les zones de mmoire de la CPU Variable dans un DB

Variable dans une instance locale Appel de FC

Variable simple
IDENTIFICATEUR Nom de la variable ou du paramtre Variable structure

Tableau simple

Variable compose
IDENTIFICATEUR Identificateur au dbut Nom de la variable ou du paramtre

Tableau simple Nom du composant suit la virgule .

15-46

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

Description du langage

15.3.6 Affectations de valeur

Rgle

Diagramme syntaxique

Expression
Expression
Oprande Oprations logiques de base

Expression

Expression

Oprations de comparaison

Oprations arithmtiques de base Puissance Expression ** Exposants

+ NOT

Expression Plus unaire Moins unaire Ngation ( Expression )

Expression simple

+ Expression simple Multiplication simple

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

15-47

Description du langage

Rgle

Diagramme syntaxique

Multiplication simple
* /

Multiplication simple

DIV MOD

Constante ( Expression simple )

Oprande
Constante

Variable tendue

( Expression)

NOT

Oprande

Variable tendue
Variable tendue
Variable simple Variable absolue pour les zones de mmoire de la CPU Variable dans un DB

Variable dans une instance locale Appel de FC

15-48

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

Description du langage

Rgle

Diagramme syntaxique

Constante
Constante

Valeur numrique

Chane de caractres

Nom de constante

Exposant
Exposant
E + SUITE DE CHIFFRES DECIMAUX e -

Opration logique de base


AND & XOR OR

Opration arithmtique de base

Oprations arithmtiques de base

MOD

DIV

Opration de comparaison

Opration de comparaison

<

>

<=

>=

<>

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

15-49

Description du langage

15.3.7

Appel de fonctions et de blocs fonctionnels

Rgle

Diagramme syntaxique

Appel de FB
Appel d 'un FB
FB : bloc fonctionnel SFB : bloc fonctionnel systme

DESIGNATION DU FB

Nom de l'instance globale


DESIGNATION DU SFB . DESIGNATION DU DB ( Paramtres du FB )

IDENTIFICATEUR

Nom de l'instance locale

Appel de fonction
Appel de fonction

DESIGNATION DE LA FC

DESIGNATION DE LA SFC

Paramtres de la FC FC : fonction SFC : fonction systme

IDENTIFICATEUR Nom de la fonction standard ou mnmonique

Fonction standard ralise dans le compilateur

Paramtres de FB
Paramtres du FB
Affectation de l'entre

Affectation de l'entre/sortie

15-50

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

Description du langage

Rgle

Diagramme syntaxique
Paramtres d'une FC
Expression Affectation de l'entre Affectation de la sortie ou de l'entre/sortie ,

Paramtres de FC

Affectation de l'entre Affectation de l'entre


Paramtre effectif Expression DESIGNATION DE LA TEMPORISATION IDENTIFICATEUR Nom du paramtre d'entre (Paramtre formel) := DESIGNATION DU COMPTEUR DESIGNATION DU BLOC

Affectation de l'entre/sortie
Affectation de l'entre/sortie
Variable tendue Paramtre effectif

IDENTIFICATEUR Nom du paramtre d'entre/sortie (Paramtre formel)

:=

Affectation de la sortie

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

15-51

Description du langage

15.3.8 Instructions de contrle

Rgle

Diagramme syntaxique
Instruction IF

Instruction IF
N'oubliez pas de terminer le mot-cl END_IF par un point-virgule !

IF

Expression Condition

THEN

Section des instructions

ELSIF

Expression Condition

THEN

Section des instructions

ELSE

Section des instructions

END_IF

Instruction CASE
Instruction CASE

N'oubliez pas de terminer le mot-cl END_CASE par un point-virgule !

Expression de slection (entier) CASE Expression Valeur Section des instructions OF

Liste de valeurs

ELSE

Section des instructions

END_CASE

15-52

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

Description du langage

Rgle

Diagramme syntaxique
Liste de valeurs
Nombre entier Valeur

Liste de valeurs

Valeur

..

Valeur

Valeur
Constante numrique

IDENTIFICATEUR Nom de la constante

Instructions d'itration et de saut

Instruction FOR

Instruction WHILE

Instruction REPEAT Instruction CONTINUE

Instruction EXIT

Instruction RETURN

Instruction GOTO

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

15-53

Description du langage

Rgle

Diagramme syntaxique
Instruction FOR

Instruction FOR
N'oubliez pas de terminer le mot-cl END_FOR par un point-virgule !

FOR

Affectation initiale pour la valeur initiale

TO

Expression de base pour la valeur terminale

BY

Expression de base pour l'incrment

DO

Section des instructions

END_FOR

Instruction initiale
Instruction initiale
Variable tendue Expression de base pour la valeur initiale

:=

Type de donnes INT/DINT

Instruction WHILE
Instruction WHILE

N'oubliez pas de terminer le mot-cl END_WHILE par un point-virgule.

WHILE

Expression Condition d'excution

DO

Section des instructions

END_WHILE

Instruction REPEAT
Instruction REPEAT

N'oubliez pas de terminer le mot-cl END_REPEAT par un point-virgule.

REPEAT

Section des instructions

UNTIL

Expression

END_REPEAT

Condition d'abandon

15-54

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

Description du langage

Rgle

Diagramme syntaxique
Instruction CONTINUE

Instruction CONTINUE

CONTINUE

Instruction RETURN
Instruction RETURN
RETURN

Instruction EXIT
Instruction EXIT

EXIT

Saut dans le programme

Branchement de programme
GOTO IDENTIFICATEUR Repre de saut

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

15-55

Description du langage

15-56

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

16

Conseils et astuces

Code optimal l'excution en cas d'adressage de structures dans les blocs de donnes
Si vous devez adresser plus d'une fois une structure dans un bloc de donnes, il est recommand de procder de la manire suivante : 1. Crez une variable locale du type de la structure. 2. Affectez-lui une fois la structure se trouvant dans le bloc de donnes. 3. Aprs quoi vous pouvez utiliser la variable plusieurs fois dans le code, sans devoir adresser de nouveau le DB. Exemple : DB100.tableau[i].value := DB100.tableau[i].valeur1 * DB100.tableau[i].valeur2 / DB100.tableau[i].valeur3 ; Cet exemple ncessitera moins de mmoire et sera d'excution plus courte si vous le programmez comme suit : VAR_TEMP tmp : STRUCT value valeur1 valeur2 valeur3 END_STRUCT; : : : : REAL; REAL; REAL; REAL;

END_VAR tmp := DB100.tableau[i]; DB100.tableau[i].value := tmp.valeur1 * tmp.valeur2 / tmp.valeur3;

Nota
Avec VAR_TEMP, vous rangez des variables dans la pile de la CPU. Cela peut conduire un dpassement de capacit de la pile pour les petites CPU. Evitez d'utiliser trop de variables temporaires dans votre programme !

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

16-1

Conseils et astuces

Problmes lors de l'affectation de la pile L pour les petites CPU


Les problmes survenant lors de l'affectation de la pile L sont dus sa taille rduite dans les petites CPU. Ceci est facile viter dans la plupart des cas, si vous tenez compte des conseils suivants. Utilisez les variables temporaires avec modration (section VAR_TEMP ou VAR). Ne dclarez pas de variable de type de donnes complexe et rduisez au minimum le nombre de variables de type simple. Utilisez des variables statiques : Quand vous programmez un FB, vous pouvez employer la section VAR au lieu de VAR_TEMP. Quand vous programmez un OB ou une FC, rabattez-vous sur un bloc de donnes global ou sur des mmentos.

Evitez les expressions volumineuses. Pour les traiter, le compilateur enregistre en effet des rsultats intermdiaires dans la pile. Selon le type ou le nombre de ces rsultats, la taille de pile disponible peut s'en trouver dpasse. Solution : Dcomposez l'expression en plusieurs expressions plus petites et affectez les rsultats intermdiaires des variables explicites.

Sortie de nombres REAL durant la visualisation


Pour sortir des nombres rels non reprsentables, la fonction de test "Visualiser" peut fournir les configurations suivantes :
Valeur Reprsentation

+ infinity - infinity Indefinite NaN digit.

1.#INFrandom-digits -1.#INFrandom-digits digit.#INDrandom-digits #NANrandom-digits

Affichage de programmes S7-SCL en reprsentation LIST


Vous pouvez ouvrir un bloc S7-SCL avec l'diteur CONT/LOG/LIST et afficher ainsi les instructions MC7 gnres. Mais n'effectuez pas de modifications en LIST, car : les instructions MC7 affiches ne reprsentent pas ncessairement un bloc LIST correct dans chacun des cas, une compilation sans erreur avec le compilateur LIST suppose normalement des modifications qui demandent des connaissances approfondies tant de LIST que de S7-SCL, le bloc compil avec LIST ne porterait plus la marque du langage S7-SCL, mais celle du langage LIST, la source S7-SCL et le code MC7 ne seraient plus cohrents.

16-2

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

Conseils et astuces

Traitement des horodatages de la source, de l'interface et du code


Horodatage de la source Une source S7-SCL a toujours l'horodatage de la dernire modification. Horodatage du bloc de code Les blocs (FB, FC et OB) reoivent toujours l'horodatage du moment de la compilation. Horodatage de l'interface du bloc L'horodatage d'une interface est modifi seulement quand la structure de l'interface est modifie. En d'autres termes : L'horodatage d'une interface ne change pas quand des modifications sont apportes la section des instructions, aux attributs, au commentaire, la section VAR_TEMP (pour les FC aussi VAR) ou l'orthographe des noms de paramtres ou de variables. Ceci est vrai aussi pour les interfaces de rang infrieur dans la hirarchie. L'horodatage d'une interface est mis jour quand le type de donnes ou une ventuelle initialisation d'un paramtre ou d'une variable se trouvent modifis ou encore quand des paramtres ou des variables sont supprims et quand le nom du FB change en cas de multi-instance. Ceci est vrai aussi pour les interfaces de rang infrieur dans la hirarchie.

Division de deux valeurs entires avec rsultat en format REAL


Vous programmez en S7-SCL l'instruction suivante : Fraction:=Dividend/Divisor; Fraction tant une valeur relle, tandis que Dividend et Divisor sont des valeurs entires. Sachez que le compilateur effectue une conversion automatique du type de donnes pour de telles oprations et qu'il traduit donc ainsi l'instruction ci-dessus : Fraction:=INT_TO_REAL(Dividend/Divisor); Il s'ensuit que la division fournit toujours une valeur arrondie comme rsultat, par ex. 1/3 = 0 ou 3/2 = 1.

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

16-3

Conseils et astuces

Valeur de retour des fonctions standard et des fonctions systme de STEP 7


De nombreuses fonctions standard et fonctions systme de STEP 7 possdent une valeur de la fonction qui est du type INT et qui contient le code d'erreur. Le manuel de rfrence traitant de ces fonctions indique les codes d'erreur possibles en tant que constantes WORD sous la forme "W#16#8093". Cependant, S7-SCL tant un langage vrifiant rigoureusement l'identit des types, il n'est pas possible de mlanger INT et WORD. C'est ainsi que l'interrogation suivante, par exemple, ne donnerait pas le rsultat souhait : IF SFCxx(..) = 16#8093 THEN ... Il y a moyen de faire savoir au compilateur S7-SCL qu'il doit considrer une constante WORD comme type INT : En typant les constantes ; dans ce cas, l'interrogation ci-dessus s'nonce ainsi : IF SFCxx(..) = INT#16#8093 THEN ... En recourant la fonction de conversion WORD_TO_INT() ; il faut alors formuler ainsi l'interrogation ci-dessus : IF SFCxx(..) = WORD_TO_INT(16#8093) THEN ...

Rassignation de blocs
Vous ne pouvez pas utiliser la commande Outils > Rassignation de SIMATIC Manager pour rassigner les appels de bloc figurant dans les blocs S7-SCL. Vous devez diter manuellement les appels des blocs concerns dans la source S7-SCL. Conseils : Dfinissez des noms symboliques pour les blocs dans la table des mnmoniques et appelez les blocs sous forme symbolique. Dfinissez des mnmoniques pour les adresses absolues (E, M, A, etc.) dans la table des mnmoniques et utilisez-les dans votre programme. Si vous souhaitez ensuite rassigner un bloc, il vous suffira de modifier l'affectation dans la table des mnmoniques et vous n'aurez aucune modification faire dans la source S7-SCL.

16-4

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

Conseils et astuces

Affectation de structures avec une longueur d'octets impaire


La longueur d'une structure est toujours complte pour atteindre une limite correspondant un mot. Pour affecter une structure avec un nombre d'octets impair, S7-SCL met votre disposition la construction AT :

Exemple :
VAR theStruct : STRUCT twoBytes : ARRAY [0..1] OF BYTE; oneInt : INT oneByte : BYTE; END_STRUCT; fiveBytes AT theStruct : ARRAY[0..4] OF BYTE; END_VAR

L o 5 octets sont requis, vous utilisez l'identificateur fiveBytes. Grce l'identificateur theStruct, il est alors possible de raliser un accs structur.

Valeurs limite pour instructions FOR


Afin de programmer des instructions FOR "sres" ne ralisant pas de boucle sans fin, veuillez tenir compte de la rgle ainsi que des valeurs limite suivantes : Rgles FOR ii := dbut TO fin BY pas DO
Si... ...alors Nota

dbut < fin

fin < (PMAX - pas)

La variable d'excution ii s'excute dans le sens positif. La variable d'excution ii s'excute dans le sens ngatif.

dbut > fin AND pas < 0

fin > (NMAX - pas)

Valeurs limite Les deux types de donnes possibles possdent diffrentes valeurs limite :
Type de donnes PMAX NMAX

ii de type INT ii de type DINT

32_767 2_147_483_647

-32_768 -2_147_483_648

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

16-5

Conseils et astuces

16-6

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

Glossaire
Abrviations
Les abrviations reprsentent les oprandes et les oprations de programmation de manire abrge (E, par exemple, dsigne l'entre). STEP 7 reconnat les abrviations CEI (exprimes en anglais) et les abrviations SIMATIC (exprimes d'aprs les oprations et conventions d'adressage SIMATIC allemandes).

Accs ( une variable)


Pour adresser avec un type de donnes supplmentaire une variable dclare, vous pouvez dfinir un accs la variable ou des zones au sein de la variable. Cet accs peut tre utilis dans le bloc comme toute autre variable. Il hrite de tous les attributs de la variable qu'il dsigne ; seul le type de donnes est diffrent.

Activer les points d'arrt


Cette fonction permet de mettre l'unit centrale (CPU) en attente des endroits dfinis du programme. Lorsqu'un point d'arrt est atteint, vous pouvez excuter les fonctions de test, comme par exemple le traitement incrmental d'instructions ou la visualisation de l'tat des variables.

Adressage
Affectation d'une adresse dans le programme utilisateur. On peut affecter des adresses des oprandes ou des zones d'oprandes donnes (exemples : entre E 12.1, mot de mmento MW25)

Adressage absolu
L'adressage absolu consiste indiquer l'adresse de l'oprande traiter. Exemple : l'adresse A 4.0 dsigne le bit 0 dans l'octet 4 de la mmoire image des sorties.

Adressage symbolique
L'adressage symbolique consiste indiquer de manire symbolique l'oprande traiter, son mnmonique. Les mnmoniques sont associs aux adresses au moyen de la table des mnmoniques ou d'un fichier symbolique.

Affectation
Mcanisme servant donner une valeur une variable.

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

Glossaire-1

Glossaire

Aide en ligne
STEP 7 vous offre la possibilit d'afficher l'cran des textes d'aide contextuels pendant votre travail avec le logiciel de programmation.

Appel de bloc
Dmarrage d'un bloc dans le programme utilisateur STEP 7 : les blocs d'organisation sont toujours appels par le systme d'exploitation, tous les autres blocs le sont par le programme utilisateur STEP 7.

Attente
L'tat d'attente peut tre obtenu partir de l'tat de marche sur sollicitation depuis la console de programmation. Cet tat de fonctionnement permet de raliser des fonctions de test particulires.

Attribut
Un attribut est une proprit qui caractrise par exemple une dsignation de bloc ou un nom de variable. Dans S7-SCL, il existe des attributs pour les indications suivantes : titre du bloc, version, protection du bloc, auteur, nom du bloc, famille de bloc.

Bloc
Les blocs constituent des parties dlimites d'un programme utilisateur par leur fonction, leur structure et leur objet. Dans STEP 7, il existe des blocs de code (FB, FC, OB, SFC, SFB), des blocs de donnes (DB, SDB) et des types de donnes utilisateur (UDT).

Bloc de code
Dans SIMATIC S7, un bloc de code est un bloc contenant une partie du programme utilisateur STEP 7, contrairement aux blocs de donnes qui ne contiennent que des donnes. Parmi les blocs de code, on distingue les blocs d'organisation (OB), les blocs fonctionnels (FB), les fonctions (FC), les blocs fonctionnels systme (SFB) et les fonctions systme (SFC).

Bloc de donnes (DB)


Les blocs de donnes contiennent des donnes et des paramtres avec lesquels le programme utilisateur travaille. Contrairement tous les autres blocs, ils ne contiennent pas d'instructions.

Bloc de donnes d'instance (DB d'instance)


Un bloc de donnes d'instance mmorise les paramtres formels et les donnes locales statiques de blocs fonctionnels. Un DB d'instance est associ un appel de bloc fonctionnel ou une hirarchie d'appel de blocs fonctionnels.

Glossaire-2

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

Glossaire

Bloc de donnes systme (SDB)


Les blocs de donnes systme (SDB) sont des zones de donnes dans la CPU S7 qui contiennent des paramtres systme et des paramtres de module. Vous pouvez les gnrer et les modifier avec le logiciel de base STEP 7.

Bloc d'organisation (OB)


Les blocs d'organisation constituent l'interface entre le systme d'exploitation de la CPU et le programme utilisateur. L'ordre de traitement du programme utilisateur est dfini dans les blocs d'organisation.

Bloc fonctionnel (FB)


Selon la norme CEI 1131-3, un bloc fonctionnel (FB) est un bloc de code avec donnes statiques. Puisqu'un FB possde une mmoire (bloc de donnes d'instance), ses paramtres (par exemple sorties) sont accessibles tout instant tout bloc du programme utilisateur.

Bloc fonctionnel systme (SFB)


Un bloc fonctionnel systme (SFB) est un bloc fonctionnel intgr au systme d'exploitation de la CPU qu'il est possible d'appeler dans le programme utilisateur STEP 7.

Bloc non terminal


Un bloc non terminal est un lment compos dans une description syntaxique, dcrit par une rgle lexicale ou syntaxique supplmentaire.

Bloc terminal
Un bloc terminal est un lment de base d'une rgle lexicale ou syntaxique dont la description ne ncessite pas de rgle supplmentaire, mais une simple explication. Il peut s'agir par exemple d'un mot-cl ou d'un caractre unique.

Charger dans le systme cible


Des objets chargeables (par exemple des blocs de code) sont chargs depuis la console de programmation dans la mmoire de chargement d'une CPU.

Classe de bloc
En fonction de leur contenu, les blocs sont subdiviss en deux classes, les blocs de code et les blocs de donnes.

Commentaire
Structure permettant d'intgrer dans un programme un texte explicatif qui n'aura pas d'influence sur l'excution du programme.

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

Glossaire-3

Glossaire

Commentaire de bloc
Les commentaires de bloc sont des informations supplmentaires sur un bloc (par exemple des explications sur le processus d'automatisation) qui ne sont pas charges dans la mmoire de travail des automates programmables SIMATIC S7.

Compilateur de S7-SCL
Le compilateur de S7-SCL est un compilateur squentiel qui permet de traduire le programme pralablement dit (source SCL) en code machine MC7. Les blocs ainsi crs sont rangs dans le programme S7 qui se trouve dans le dossier Blocs.

Compilation
Traduction d'une source en programme utilisateur excutable.

Compilation source
Dans le mode de saisie source, la compilation en programme utilisateur excutable n'est effectue qu'une fois toutes les instructions saisies. Cette compilation est accompagne d'une vrification dtectant les erreurs de saisie ventuelles.

Compteur
Les compteurs sont partie constituante de la mmoire systme de la CPU. Leur contenu est actualis par le systme d'exploitation de faon asynchrone au programme utilisateur. Des instructions en STEP 7 permettent de dfinir la fonction exacte de la cellule de comptage (par ex. incrmentation) et d'en lancer l'excution.

Constante
Les constantes rservent la place pour des valeurs constantes dans les blocs de code. Elles servent amliorer la lisibilit d'un programme. Exemple : au lieu d'indiquer une valeur directement (ex. : 10 ), on indique "Nbmax_repetitions_boucle". A l'appel de la constante, elle est remplace par sa valeur (10).

Constante littrale
Notation formelle dterminant la valeur et le type d'une constante.

Constante symbolique
Les constantes aux noms symboliques rservent la place pour des valeurs constantes dans les blocs de code. Elles permettent d'amliorer la lisibilit d'un programme.

Conversion de types de donnes


Une conversion de type de donnes est ncessaire lorsqu'il faut combiner entre eux deux oprandes de types diffrents.

Glossaire-4

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

Glossaire

DCB
Nombre dcimal cod binaire. Dans STEP 7, les temporisations et les compteurs sont indiqus exclusivement dans le format DCB l'intrieur de la CPU.

Dbogueur de S7-SCL
Le dbogueur de S7-SCL est un dbogueur de langage volu permettant de trouver les erreurs de programmation logiques dans le programme utilisateur cr avec S7-SCL.

Dclaration
Mcanisme servant dfinir un lment de langage. Une dclaration tablit le lien entre un identificateur et l'lment de langage et lui affecte des attributs et des types de donnes.

Dclaration de variable
La dclaration d'une variable consiste indiquer son mnmonique, son type de donnes et ventuellement une valeur par dfaut, une adresse et un commentaire.

Donnes globales
Les donnes globales sont des donnes accessibles chaque bloc de code (FB, FC, OB), savoir des mmentos (M), des entres (E), des sorties (A), des temporisations, des compteurs et des lments de blocs de donnes. Il est possible d'y accder par adressage absolu ou symbolique.

Donnes locales
Les donnes locales sont les donnes associes un bloc de code qui sont dclares dans la section de dclaration ou dans la dclaration des variables de ce bloc. Elles comprennent - selon le bloc - les paramtres formels, les donnes statiques, les donnes temporaires.

Donnes statiques
Les donnes statiques sont des donnes locales d'un bloc fonctionnel qui sont mmorises dans le bloc de donnes d'instance et donc conserves jusqu'au traitement suivant du bloc fonctionnel.

Donnes temporaires
Les donnes temporaires sont des donnes locales d'un bloc qui sont sauvegardes dans la pile des donnes locales (pile L) durant l'excution de ce bloc et ne sont plus disponibles une fois l'excution termine.

Donnes utiles
Les donnes utiles sont changes par l'intermdiaire de la mmoire image ou par adressage direct entre une unit centrale et un module de signaux, un module fonctionnel et des modules de communication. Il peut s'agir des signaux d'entre/sortie TOR et analogiques de modules de signaux, d'informations de forage et d'tat de modules de fonctions.

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

Glossaire-5

Glossaire

Drapeau OK
Le drapeau OK signale l'excution correcte ou incorrecte d'une squence d'instructions d'un bloc. Il a gnralement le type de donnes BOOL.

Editeur de S7-SCL
L'diteur de S7-SCL s'adapte tout particulirement aux exigences de S7-SCL pour crer la source S7-SCL.

EN (Enable)
Dans STEP 7, tout bloc fonctionnel et toute fonction dispose du paramtre d'entre "Enable" (EN) dfini automatiquement et qui peut tre mis 1 l'appel du bloc. Si EN est vrai, le bloc appel est excut, autrement il ne l'est pas.

En ligne
Il s'agit de l'tat de fonctionnement dans lequel une liaison (physique, logique) est tablie entre la console de programmation et l'automate programmable.

ENO (Enable out)


Dans STEP 7, tout bloc possde une sortie "Enable Output" (ENO). A la fin de l'excution d'un bloc, la valeur actuelle du drapeau OK est inscrite dans ENO. Immdiatement aprs l'appel d'un bloc, vous pouvez vrifier, l'aide de la valeur du paramtre ENO, si toutes les oprations dans le bloc se sont droules correctement ou si des erreurs sont survenues.

Entier (INT)
L'entier (INT) est l'un des types de donnes simples. On le reprsente comme nombre entier 16 bits.

Expression
Une expression permet de traiter des donnes dans S7-SCL. Il existe des expressions arithmtiques, logiques et de comparaison.

Fonction (FC)
Selon la norme CEI 1131-3, une fonction (FC) est un bloc de code sans donnes statiques. Elle permet la transmission de paramtres dans le programme utilisateur. Aussi les fonctions se prtent-elles la programmation de fonctions complexes se rptant souvent, comme les calculs.

Fonction systme (SFC)


Une fonction systme (SFC) est une fonction intgre au systme d'exploitation de la CPU qu'il est possible d'appeler dans le programme utilisateur STEP 7.

Glossaire-6

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

Glossaire

Hirarchie d'appel
Pour pouvoir tre excuts, tous les blocs doivent pralablement tre appels. On appelle hirarchie d'appel, l'ordre et l'imbrication de ces appels.

Hors ligne
Il s'agit de l'tat de fonctionnement dans lequel aucune liaison (physique, logique) n'est tablie entre la console de programmation et l'automate programmable.

Identificateur
Combinaison de lettres, de chiffres et de caractres de soulignement qui identifie un lment de langage.

Identificateur d'oprande
L'identificateur d'oprande est la partie de l'oprande d'une opration qui contient des informations. La zone de mmoire dans laquelle l'opration trouve une valeur qu'elle va combiner ou la grandeur d'une valeur qu'elle va combiner en sont des exemples. Dans l'instruction "Valeur := EB10", "EB" est l'identificateur d'oprande ("E" signifie la zone d'entre de la mmoire, "B" signifie un octet dans cette zone).

Instance
On dsigne par instance l'appel d'un bloc fonctionnel. Un bloc de donnes d'instance ou une instance locale lui sont associs. Si, par exemple, un bloc fonctionnel est appel n fois avec des paramtres et ds noms de blocs de donnes diffrents dans le programme utilisateur STEP 7, il existe n instances de ce bloc.

Instruction
Une instruction est la plus petite unit autonome d'un programme utilisateur crit dans un langage textuel. Il s'agit d'une tche que doit excuter le processeur.

Instruction CASE
L'instruction CASE permet de raliser un branchement. Elle sert slectionner 1 parmi n parties de programme en fonction de la valeur d'une expression de slection.

Instruction CONTINUE
Dans S7-SCL, l'instruction CONTINUE permet d'abandonner le parcours momentan de la boucle d'une instruction d'itration (FOR, WHILE ou REPEAT).

Instruction EXIT
Structure dans un programme qui sert mettre fin une boucle un endroit quelconque et indpendamment de conditions.

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

Glossaire-7

Glossaire

Instruction FOR
Structure dans un programme. L'instruction FOR excute une squence d'instructions dans une boucle et des valeurs successives sont alors affectes une variable (variable de contrle).

Instruction GOTO
Structure dans un programme. Une instruction GOTO ralise le saut immdiat un repre donn et par consquent une autre instruction dans le mme bloc.

Instruction REPEAT
Structure dans un programme qui sert rpter une squence d'instructions jusqu' la ralisation d'une condition d'abandon.

Instruction RETURN
Structure dans un programme ordonnant l'ordinateur de quitter le bloc actif.

Interface d'appel
L'interface d'appel est dfinie par les paramtres d'entre, de sortie et d'entre/sortie (paramtres formels) d'un bloc dans le programme utilisateur STEP7. Ces paramtres sont remplacs par les paramtres effectifs lors de l'appel du bloc.

Mmento (M)
Un mmento est une zone de mmoire dans la mmoire systme d'une CPU SIMATIC S7 qui peut tre adresse en criture et en lecture (par bit, octet, mot et double mot). L'utilisateur peut employer la zone de mmento pour y enregistrer des rsultats intermdiaires.

Mmoire image
Les tats de signaux des modules d'entres et de sorties TOR sont sauvegards dans une mmoire image dans la CPU. On distingue la mmoire image des entres (MIE) et la mmoire image des sorties (MIS).

Mmoire image des entres (MIE)


Avant le traitement du programme utilisateur, le systme d'exploitation lit la mmoire image des entres dans les modules d'entre.

Mmoire image des sorties (MIS)


A la fin du traitement du programme utilisateur, le systme d'exploitation transmet la mmoire image des sorties aux modules de sortie.

Glossaire-8

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

Glossaire

Mmoire systme (zone de mmoire)


La mmoire systme est une mmoire vive intgre la CPU S7, dans laquelle sont enregistres les zones d'oprandes (par exemple temporisations, compteurs, mmentos) ainsi que les zones de donnes requises de manire interne par le systme d'exploitation (par exemple mmoire pour la communication).

Mnmonique
Un mnmonique est un nom que l'utilisateur dfinit en respectant les rgles de syntaxe imposes. Une fois son affectation dtermine (par ex. variable, type de donnes, repre de saut, bloc), ce nom peut tre utilis en programmation et en contrle-commande. Exemple : oprande : E 5.0, type de donnes : Bool, mnmonique : Bouton_arret_urg.

Mot-cl
Unit lexicale caractrisant un lment de langage, par exemple "IF". Dans S7-SCL, les mots-cls servent identifier le dbut d'un bloc, les sections de dclaration, les instructions. Ils sont utiliss en outre pour les commentaires et les attributs.

Mot d'tat
Le mot d'tat fait partie des registres de la CPU. Il contient des informations d'tat et des informations d'erreur susceptibles de survenir dans le traitement d'instructions STEP 7. Les bits d'tat peuvent tre lus et crits par l'utilisateur, les bits d'erreur peuvent uniquement tre lus.

Multi-instance
Lorsque vous utilisez des multi-instances, le bloc de donnes d'instance contient les donnes pour plusieurs blocs fonctionnels d'une hirarchie d'appel.

Nombre rel
Un nombre rel est un nombre positif ou ngatif reprsentant une valeur dcimale comme par exemple 0.339 ou 11.1.

Oprande
Un oprande est la partie d'une instruction indiquant l'objet que le processeur doit traiter. On peut y accder par une adresse absolue ou symbolique.

Opration
Une opration est la partie d'une instruction indiquant ce que le processeur doit faire.

Paramtre effectif
Les paramtres effectifs remplacent les paramtres formels lors de l'appel d'un bloc fonctionnel (FB) ou d'une fonction (FC). Exemple : le paramtre formel "Dmarrer" est remplac par le paramtre effectif "E.3.6".

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

Glossaire-9

Glossaire

Paramtre formel
Un paramtre formel "rserve la place" pour le paramtre effectif dans les blocs de code paramtrables. Pour les FB et les FC, c'est l'utilisateur qui dclare les paramtres formels ; ils existent dj pour les SFB et les SFC. A l'appel du bloc, un paramtre effectif est affect au paramtre formel afin que le bloc appel utilise les valeurs en cours. Les paramtres formels font partie des donnes locales du bloc et se rpartissent en paramtres d'entre, de sortie et d'entre/sortie.

Paramtres d'entre
Seuls les fonctions et les blocs fonctionnels possdent des paramtres d'entre. Ils permettent de transmettre des donnes traiter au bloc appel.

Paramtres d'entre/sortie
Les fonctions et les blocs fonctionnels possdent des paramtres d'entre/sortie. Ils permettent de transmettre des donnes au bloc appel ; elles y sont alors traites et les rsultats sont ensuite stocks dans la mme variable.

Paramtres de sortie
Les paramtres de sortie d'un bloc permettent de transmettre des rsultats au bloc appelant dans le programme utilisateur.

Pas pas
C'est un mode de test utilis des fins de mise au point par le dbogueur de S7-SCL. Il permet d'excuter le programme instruction par instruction tout en le visualisant dans la fentre de rsultat.

Programmation structure
La rsolution de tches d'automatisation complexes appelle la subdivision du programme utilisateur en parties dlimites de programmes (blocs). La structure du programme utilisateur peut tre fonctionnelle ou conforme la structure technologique de l'installation.

Programmation symbolique
Le langage de programmation S7-SCL permet de remplacer les oprandes par des chanes de caractres symboliques, les mnmoniques : l'oprande A1.1 peut par exemple tre remplac par "Vanne_17". Le lien entre l'oprande et la chane de caractres qui lui est associe est tabli par la table des mnmoniques.

Programme utilisateur
Le programme utilisateur contient toutes les instructions et dclarations ainsi que toutes les donnes ncessaires au traitement des signaux qui permettent de commander une installation ou un processus. Il est associ un module programmable (par exemple CPU, FM) et peut tre structur en units plus petites, les blocs.

Glossaire-10

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

Glossaire

Programme utilisateur S7
Dossier pour les blocs qui vont tre chargs dans un module programmable S7 (par exemple CPU, FM) pour y tre excuts afin de commander une installation ou un processus.

Projet
Un projet est un dossier contenant tous les objets d'une solution d'automatisation, indpendamment du nombre de stations, de modules et de leur mise en rseau.

Protection de bloc
On entend par protection de bloc la possibilit de protger des blocs individuels contre la dcompilation en effectuant la compilation de la source avec le mot-cl "KNOW_HOW_PROTECTED".

Rgle lexicale
Les rgles lexicales constituent le niveau infrieur de la description formelle du langage S7-SCL. Elles m'autorisent pas l'utilisation d'un format libre, c'est--dire que vous ne pouvez ajouter aux blocs ni espaces ni caractres de commande.

Rgle syntaxique
Les rgles syntaxiques constituent le niveau suprieur de la description formelle du langage S7-SCL. Elles autorisent l'utilisation d'un format libre, c'est--dire que vous pouvez par exemple ajouter aux blocs des espaces et des caractres de commande.

RUN
A l'tat de fonctionnement RUN (marche), le programme utilisateur est trait, la mmoire image est actualise cycliquement et toutes les entres TOR sont valides.

RUN-P
L'tat de fonctionnement RUN-P se distingue de l'tat de fonctionnement RUN en ce qu'il autorise l'application sans restrictions de nombreuses fonctions de la console de programmation.

S7-SCL
Langage volu proche du PASCAL, conforme la norme DIN EN 61131-3 (CEI 1131-3), adapt la programmation de tches complexes d'automatisation, comme par exemple des algorithmes ou du traitement de donnes. S7-SCL est l'abrviation de "Structured Control Language".

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

Glossaire-11

Glossaire

Section de dclaration
C'est dans la section de dclaration que vous dclarez les donnes locales d'un bloc de code quand vous crivez le programme avec un diteur de texte. La dclaration des variables d'un bloc se dcompose en plusieurs sections servant dclarer les diffrents paramtres du bloc. La section de dclaration IN, par exemple, contient la dclaration des paramtres d'entre, la section OUT celle des paramtres de sortie.

Smantique
Relation entre les lments symboliques d'un langage de programmation et leur signification, leur interprtation et leur utilisation.

Signet
Les signets sont des marques de texte temporaires qui reprent un emplacement quelconque au sein dune source. Elles facilitent la navigation dans la source.

Source
Partie de programme labore avec un diteur graphique ou textuel et donnant par compilation un programme utilisateur excutable.

Source S7-SCL
La source S7-SCL est le fichier S7-SCL dans lequel vous crez le programme qui va ensuite tre compil avec le compilateur de S7-SCL.

Structure (STRUCT)
Type de donnes complexe compos d'lments de donnes quelconques de types de donnes diffrents. Les types de donnes composant une structure peuvent tre euxmmes simples ou complexes.

Tableau
Un tableau (ARRAY) est un type de donnes complexe form d'lments de donnes de mme type, pouvant eux-mmes tre des types de donnes simples ou complexes.

Table des mnmoniques


Cette table contient l'affectation de mnmoniques (ou noms symboliques) des adresses (oprandes) de donnes globales et de blocs. Exemples : Arret_urg (mnmonique), E 1.7 (oprande) ou Rgulateur (mnmonique), SFB24 (bloc).

Table des variables


La table des variables regroupe les variables que vous voulez visualiser et forcer, avec les indications correspondantes sur le format.

Glossaire-12

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

Glossaire

Temporisation
Les temporisations sont partie constituante de la mmoire systme de la CPU. Leur contenu est actualis par le systme d'exploitation de faon asynchrone au programme utilisateur. Des instructions en STEP 7 permettent de dfinir la fonction exacte de la cellule de temporisation (par ex. retard la monte) et d'en lancer l'excution.

Temps de cycle
Le temps de cycle est le temps que met la CPU traiter une fois le programme utilisateur.

Temps de surveillance du cycle


Si le temps d'excution du programme utilisateur excde le temps de surveillance du cycle choisi, le systme d'exploitation met un message d'erreur et la CPU passe l'tat d'arrt.

Type de bloc
L'architecture des blocs de STEP 7 distingue les types de blocs suivants : bloc d'organisation, bloc fonctionnel, fonction, bloc de donnes de mme que bloc fonctionnel systme, fonction systme, bloc de donnes systme et type de donnes utilisateur.

Type de donnes complexe


Les types de donnes complexes sont composs d'lments dont le type de donnes est simple. On distingue les structures et les tableaux. STRING et DATE_AND_TIME sont galement des types de donnes complexes.

Type de donnes simple


Les types de donnes simples sont des types de donnes prdfinis selon CEI 1131-3. Exemples : le type de donnes "BOOL" dfinit une variable binaire ("bit") et le type de donnes "INT" une variable entire de 16 bits.

Type de donnes utilisateur


Les types de donnes utilisateur (UDT) sont crs par l'utilisateur avec la dclaration de type de donnes. Ils ont leur propre nom et sont donc rutilisables. Un type de donnes utilisateur peut, par exemple, servir la cration de plusieurs blocs de donnes de mme organisation (par exemple, rgulateur).

Type de paramtre
Un type de paramtre est un type de donnes spcial rserv aux temporisations, aux compteurs et aux blocs. Vous pouvez l'utiliser pour les paramtres d'entre de blocs fonctionnels et de fonctions ainsi que pour les paramtres d'entre/sortie des blocs fonctionnels seulement, afin de transmettre des temporisations, des compteurs et des blocs au bloc appel.

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

Glossaire-13

Glossaire

Types de donnes
Les types de donnes dterminent la nature et la signification des lments de donnes, les zones de mmoire et les plages de valeurs autorises pour les lments de donnes, le nombre d'oprations que vous pouvez raliser avec un oprande de ce type de donnes et la manire dont les lments de donnes sont crits.

UDT
Voir : Type de donnes utilisateur

Valeur de retour (RET_VAL)


Contrairement aux blocs fonctionnels, les fonctions fournissent comme rsultat une valeur de retour.

Valeur initiale
Valeur attribue une variable la mise en route du systme.

Variable
Une variable dfinit une donne de contenu variable pouvant tre utilise dans le programme utilisateur STEP 7. Elle comprend un oprande (par ex. M3.1) et un type de donnes (par ex. BOOL) et peut tre identifie par un mnmonique (par ex. B. BANDE_MARCHE). Vous la dclarez dans la section de dclaration.

Visualisation
Visualiser un programme vous permet d'en contrler le droulement dans la CPU. Pour cela, des noms de variables et de paramtres par exemple sont affichs par ordre chronologique avec leurs valeurs en cours qui sont mises jour cycliquement.

Zone de mmoire
Une unit centrale dans SIMATIC S7 possde trois zones de mmoire, savoir la mmoire de chargement, la mmoire de travail et la zone systme.

Glossaire-14

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

Index
*
* 11-7, 11-8 ** 11-7 Affectation de valeur des variables de type STRUCT et UDT 12-3 une variable absolue pour zones de mmoire 12-9 une variable de type DATE_AND_TIME 12-8 une variable de type de donnes simple 12-2 une variable de type STRING 12-7 une variable globale 12-10 rgles syntaxiques 15-47 Affectation d'une valeur 6-12 Affichage des informations sur la communication de la CPU 4-41 Affichage des piles de la CPU 4-41 Afficher et modifier l'tat de fonctionnement de la CPU 4-38 Afficher et rgler la date et l'heure de la CPU 4-38 Afficher le temps de cycle de la CPU 4-40 Afficher les blocs dans la CPU 4-40 Afficher l'horodatage de la CPU 4-40 Afficher/comprimer la mmoire utilisateur de la CPU 4-39 Aiguillage 12-12 Aller 4-13 AND 11-9, 11-10 Annuler la dernire action d'dition 4-10 ANY 7-19, 7-20 Appel de bloc 4-17 Appel d'un bloc fonctionnel (FB ou SFB) comme instance globale 12-29 comme instance locale 12-29 dfinition des entres 12-33 Dfinition des entres/sorties 12-34 Dfinition des paramtres du FB 12-31 lecture des valeurs de sortie 12-35 marche suivre 12-29 syntaxe 12-29 Appel d'une fonction (FC) dfinition des entres 12-41 dfinition des paramtres 12-40 dfinition des sorties et des entres/sorties 12-42 marche suivre 12-38 paramtre de sortie ENO 12-46 paramtre d'entre EN 12-45 syntaxe 12-38 valeur de retour 12-39

/
/ 11-7

+
+ 11-7, 11-8

<
< 11-12, 11-13 <= 11-13 <> 11-11, 11-13

=
= 11-11

>
> 11-13 >= 11-11

A
ABS 14-9 Accs des zones de variable 8-5 ACOS 14-10 Addition 11-1 Adressage absolu rgles lexicales 15-29 Adressage absolu des blocs de donnes 10-8 Adressage absolu des zones de mmoire de la CPU 10-3 Adressage index des blocs de donnes 10-10 Adressage index des zones de mmoire de la CPU 10-6 Adressage structur des blocs de donnes 10-11 Adressage symbolique des zones de mmoire de la CPU 10-5 Adresses 10-2 Affectation de structures avec une longueur d'octets impaire 16-5

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

Index-1

Index

Appel d'une fonction de comptage 13-1 Appel d'une fonction de temporisation 13-9 ARRAY 7-10, 7-11, 8-3, 8-4, 12-6 affectation de valeur 12-5 ASIN 14-10 AT (mot-cl) 8-5 ATAN 14-10 Attributs 6-5, 6-6 Attributs de bloc attributs systme pour bloc 6-8 dfinition 6-5 rgles lexicales 15-32 Attributs systme pour bloc 6-8 Attributs systme pour paramtre 6-10 AUTHORS.EXE 2-6 Automation License Manager 2-1, 2-4 Autorisation 2-1, 2-6 Autorisation de dpannage 2-6 Avertissements 4-23

C
Caractres imprimables 9-9, 9-11 Caractres non imprimables 9-10, 9-11 Certificate of License 2-1 Chane de caractres 5-13 CHAR 7-3, 9-9 CHAR_TO_BYTE 14-3 CHAR_TO_INT 14-3 Charger 4-27 Charger dans la CPU 4-27 Choisir la taille de papier 4-24 Choix de la temporisation approprie 13-21 Commentaire modles 4-17 rgles lexicales 15-31 Commentaires bloc de commentaire 5-15 ligne de commentaire 5-16 Communication de la CPU 4-41 Compatibilit avec les normes 1-1 Compilateur 1-2 Compiler 4-19, 4-22, 6-23 liminer les erreurs 4-23 fichier d'informations compilation 4-22 options de compilation 4-20 Composition de la section de dclaration 6-9 Composition d'un bloc 6-3 Composition d'un bloc de donnes (DB) 6-18 Composition d'un bloc d'organisation (OB) 6-17 Composition d'un bloc fonctionnel (FB) 6-13 Composition d'une fonction (FC) 6-15 Composition d'une source S7-SCL 6-9 - 6-18 Compteurs appel d'une fonction de comptage 13-1 compteur dcrmental (S_CD) 13-6 compteur incrmental (S_CU) 13-6 compteur incrmental et dcrmental (S_CUD) 13-7 dfinition des paramtres d'une fonction de comptage 13-3 exemple de fonction de comptage 13-7 saisie et exploitation de la valeur de comptage 13-5 CONCAT 14-13 Conception d'un programme SCL 3-1 Condition d'abandon 12-22, 12-24 Conditions 12-13 Constante binaire 9-6 Constante de date 9-13 Constante de date et d'heure 9-17 Constante de dure 9-13 Constante d'heure du jour 9-16 Constante entire 9-7 Constante relle 9-8 Constante sur caractre 9-9 Constante sur chane 9-11, 9-12
S7-SCL V5.3 pour S7-300/400 A5E00324651-01

B
Barre de titre 4-2 Barre des menus 4-2 Barre d'tat 4-2 Barre d'outils 4-2 BIT 7-3 Bloc appel 4-17 modles 4-17 Bloc de commentaire 5-15 Bloc de donnes 6-19, 6-20 Bloc d'organisation 6-17 Bloc fonctionnel (FB) 6-13, 12-27 - 12-31 Bloc non terminal (dans les diagrammes syntaxiques) 15-16 BLOCK_DB_TO_WORD 14-4 Blocs 4-6, 6-1 Blocs dans la CPU 4-40 Blocs dans les diagrammes syntaxiques 5-1 Blocs de code 3-4, 4-8, 6-1 Blocs de donnes 10-7 - 10-11 Blocs terminaux des rgles lexicales (diagrammes syntaxiques) 15-5 Boucle 12-12 Branchement 12-12 BYTE 7-3 BYTE_TO_BOOL 14-3 BYTE_TO_CHAR 14-3

Index-2

Index

Constantes 9-2 Constantes et drapeaux prdfinis description formelle du langage 15-20 Constantes littrales 9-6 - 9-17 voir Constantes 15-23 Conversion du type de donnes fonctions d'arrondi et de troncature 14-6 fonctions de classe B 14-3 fonctions standard 14-3 Copier des parties de texte 4-11 COS 14-10 Couleur et police du texte source 4-15, 4-25 COUNTER 7-16, 13-1 Couper des parties de texte 4-12 Crer une nouvelle source SCL 4-4

D
DATE 7-4 DATE_AND_TIME 7-5 DATE_TO_DINT 14-3 Dbogueur 1-2 Dbut de bloc 6-3 Dbutants exemple 3-1 Dclaration 6-9 Dclaration de variables statiques 8-2 Dclaration d'une instance 8-7 Dfinir les proprits de l'objet 4-6 Dfinition des entres/sorties 12-42 Dfinition des entres/sorties (FB/SFB) 12-34 Dfinition des paramtres 12-27 Dfinition des paramtres d'une fonction de comptage 13-3 Dfinition des paramtres d'une fonction de temporisation 13-11 Dfinition d'un environnement d'appel des blocs 4-33 Dfinition d'un environnement d'appel des points d'arrt 4-35 DELETE 14-15 Dmarrer SCL 4-1 Description du langage 5-1, 15-1 Dsignation de bloc 5-7, 6-3, 6-4 Dsignations rgles lexicales 15-21 Dsinstallation de la licence d'utilisation 2-5 DI_STRNG 14-19 Diagrammes syntaxiques 5-1, 15-1 Diffrence 11-1 DINT 7-3 DINT_TO_DATE 14-3 DINT_TO_DWORD 14-3 DINT_TO_INT 14-3, 14-4 DINT_TO_TIME 14-3 DINT_TO_TOD 14-4 Disquette d'autorisation 2-6 DIV 11-7
S7-SCL V5.3 pour S7-300/400 A5E00324651-01

Division 11-1 Division entire 11-1 Domaine d'application 1-1 Donnes de CPU 4-39 Donnes de rfrence 4-36 Donnes globales 10-1 prsentation 10-2 Donnes locales 5-17, 8-1, 8-3, 8-10, 8-11 Donnes utilisateur globales 10-1 Double mot 7-3 Drapeau OK 8-1, 8-8 DWORD 7-3 DWORD_TO_BOOL 14-4 DWORD_TO_BYTE 14-4 DWORD_TO_DINT 14-4 DWORD_TO_REAL 14-4 DWORD_TO_WORD 14-4

E
Editer une source SCL 4-10 - 4-18 Editeur 1-2 Effacement gnral de la mmoire de la CPU 4-27 Effacer des parties de texte 4-12 Egalit 11-1 Eliminer les erreurs aprs la compilation 4-23 EN 12-45 ENO 12-46 Enregistrer une source S7-SCL 4-24 Entres/sorties de priphrie 10-2 Environnement d'appel 4-33 Environnement de dveloppement 1-2 Environnement requis 2-6 EQ_STRNG 14-17 Erreurs de compilation 4-23 ET 11-1 Etat de fonctionnement 4-38 Excution de sous-programme 6-12 Exemple "Saisie de valeurs de mesure" 3-1 Exemples 7-20, 12-35, 12-37, 12-44, 13-7, 14-7, 14-10, 14-12 temporisations 13-20 EXP 14-9 EXPD 14-9 Expression boolenne 11-11 Expression simple 11-6 Expressions 11-1 - 11-10 Expressions arithmtiques 11-7 Expressions de comparaison 11-12, 11-13

F
FC 6-15, 6-16, 12-27, 12-38 Fermer une source S7-SCL 4-5 Fichier d'information de compilation 6-23 Fichier d'informations compilation 4-22 Fin de bloc 6-3 FIND 14-16

Index-3

Index

Fonction (FC) 12-27, 12-38 Fonction modulo 11-1 Fonctionnement de S7-SCL 1-2 Fonctions (FC) 6-15 Fonctions d'arrondi et de troncature 14-6 Fonctions de conversion du type de donnes 14-3 classe B 14-3 fonctions d'arrondi et de troncature 14-6 Fonctions de slection de valeurs 14-26 Fonctions de temporisation 13-9 Fonctions de test de S7-SCL 4-29 - 4-31, 4-33 Fonctions de test de STEP 7 4-36 Fonctions logarithmiques 14-9 Fonctions offertes par S7-SCL 1-4 Fonctions standard 14-3, 14-6 Fonctions standard mathmatiques 14-9, 14-10 Fonctions standard numriques 14-9, 14-10 Fonctions standard sur chane binaire 14-11 Fonctions systme blocs fonctionnels systme et bibliothque standard 14-31 Fonctions trigonomtriques 14-10

G
GE_STRNG 14-17 Gnrer des sources S7-SCL avec un diteur standard 4-6 Gnrer et afficher les donnes de rfrence 4-36 GT_STRNG 14-18

Installation de Automation License Manager 2-4 Instance globale 12-29, 12-36 Instance locale 12-29, 12-30, 12-37 Instruction CASE 12-12, 12-16 Instruction CONTINUE 12-12, 12-23 Instruction de saut 12-12 Instruction de slection 12-12 Instruction d'itration 12-12 Instruction EXIT 12-12, 12-24 Instruction FOR 12-12, 12-18, 16-5 Instruction GOTO 12-12, 12-25 Instruction IF 12-12, 12-14 Instruction REPEAT 12-12, 12-22 Instruction RETURN 12-12, 12-26 Instruction WHILE 12-12, 12-21 Instructions 12-1 Instructions de contrle 6-12 insertion 4-18 instruction CASE 12-16 instruction CONTINUE 12-23 instruction EXIT 12-24 instruction FOR 12-18 instruction GOTO 12-25 instruction IF 12-14 instruction REPEAT 12-22 instruction WHILE 12-21 modles 4-18 rgles syntaxiques 15-52 INT 7-3 INT_TO_CHAR 14-4 INT_TO_WORD 14-4 Interface utilisateur de SCL 4-2

H
Horodatage de la CPU 4-40

J
Jeu de caractres 5-4

I
I_STRNG 14-19 Identificateur d'oprande 5-9 Identificateur standard 5-7 Identificateurs dfinition 5-6 description formelle du langage 15-17, 15-18 exemple 5-6 rgles 5-6 Imprimer une source SCL 4-25 Indentation des lignes 4-14 Initialisation 8-3 Insrer des appels de bloc 4-17 Insrer des modles de bloc 4-17 Insrer des modles de commentaire 4-17 Insrer des modles de paramtre 4-18 Insrer des structures de contrle 4-18 INSERT 14-15 Installation 2-6

L
Label (repre de saut) 9-18 Language de programmation volu 1-1, 1-4, 1-5 LE_STRNG 14-17 Lecture des valeurs de sortie dfinition des sorties l'appel de la FC 12-42 dfinition des sorties l'appel du FB 12-35 LEFT 14-14 LEN 14-13 Libert de format 5-2, 5-3 Licence 2-2, 2-3 Licence d'utilisation 2-6 Licence d'utilisation avec Automation License Manager 2-1 License Key 2-1, 2-5 License Manager 2-1, 2-2 Lieu de stockage de variables 8-5 Ligne de commentaire 5-16

Index-4

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

Index

Lire la mmoire de diagnostic de la CPU 4-39 Lire les donnes de CPU 4-39 LN 14-9 LOG 14-9 LT_STRNG 14-18

OU exclusif 11-1 Ouvrir des blocs 4-6 Ouvrir une source SCL 4-5

P
Paramtre modles 4-18 Paramtre de sortie 8-1 Paramtre de sortie ENO 12-46 Paramtre d'entre dfinition 8-1 Paramtre d'entre/sortie 8-1 Paramtre effectif dfinition 8-1 Paramtre formel 8-1 Paramtres 4-3, 4-20, 6-10, 7-16, 7-17, 8-1, 8-9, 12-42, 12-43 Paramtres de bloc 5-17, 8-12 Paramtres de FB 12-31 - 12-35 Paramtres de FC 12-40 - 12-42 Paramtres d'entre dfinition (FB) 12-33 dfinition des entres (FC) 12-41 paramtre d'entre EN 12-45 Paramtres d'entre/sortie 12-34 Paramtres effectifs dfinition des entres 12-41 Pas pas 4-31 Piles 4-41 Plus unaire 11-1 POINTER 7-17, 7-18 Pointeur zro 7-19 Points d'arrt 4-34, 4-36 Positionnement de signets dans le texte source 4-16 Positionner le curseur dans une ligne donne 4-13 Prsentation du texte source conforme la syntaxe 4-15 Programmation structure 1-4 Programmation structure 3-4, 3-6 Programmation symbolique 4-9 Programme utilisateur 3-4, 6-1 Protection de bloc 4-7 Puissance 11-1

M
Marque de texte 4-16 Mmentos 10-2 Mmoire image des entres/sorties 10-2 Mmoire tampon de diagnostic 4-39 Mmoire utilisateur 4-39 Mettre la date 4-38 Mettre l'heure 4-38 MID 14-14 Mise entre parenthses 11-1 Mnmoniques utilisation 4-9 Mnmoniques pour les constantes 9-2 MOD 11-7, 11-8 Modles de bloc 4-17 Modles de commentaire 4-17 Modles de paramtre 4-18 Moins unaire 11-1 Mots rservs 5-5 Mots-cls 5-5, 15-10 Multi-instances 8-7 Multiplication 11-1

N
NE_STRNG 14-17 Ngation 11-1 Nombres 5-11, 5-12 Noms dfinition 5-6 description formelle du langage 15-17, 15-18 exemples 5-6 rgles 5-6 Norm CEI EN-61131-3 1-1 NOT 11-9, 11-10 Notions fondamentales de SCL 5-4 - 5-13 Nouveauts 1-6 Numros de ligne 4-3, 4-25

O
OB 6-17 OK (drapeau) 8-8 Oprandes 11-2, 11-3 Oprations liste par ordre alphabtique 15-7 Options du compilateur 6-23, 15-33 OR 11-9, 11-10 Ordre des blocs 4-8 Organigramme de EXPLOITER 3-13 Organigramme de SAISIR 3-17 OU 11-1
S7-SCL V5.3 pour S7-300/400 A5E00324651-01

R
R_STRNG 14-19 REAL 7-3 REAL_TO_DINT 14-4 REAL_TO_DWORD 14-4 REAL_TO_INT 14-4 Rechercher et remplacer des parties de texte 4-10 Rgles utilisation des License Keys 2-5

Index-5

Index

Rgles d'utilisation des License Keys 2-5 Rgles lexicales 15-21 Rgles pour les sources SCL 4-8 Rgles syntaxiques 15-34 Remplacer des parties de texte 4-10 Repres de saut 9-18 REPLACE 14-16 Rtablir une action d'dition 4-10 RIGHT 14-14 ROL 14-11 ROR 14-11 ROUND 14-6

STRING 7-7 - 7-9, 9-11, 14-13 - 14-20 STRING_TO_CHAR 14-4 STRNG_DI 14-19 STRNG_I 14-19 STRNG_R 14-19 STRUCT 7-12, 7-13 Structures 7-12 Style et couleur des caractres 4-15, 4-25

T
Tableau (ARRAY) Affectation de valeur une variable du type de donnes ARRAY 12-5 initialisation 8-3 Tableaux 7-10 Taille de papier 4-24 TAN 14-10 Temporisations 13-9 appel d'une fonction de temporisation 13-9 dfinition des paramtres d'une fonction de temporisation 13-11 dmarrer une temporisation sous forme de retard la monte (S_ODT) 13-17 dmarrer une temporisation sous forme de retard la monte mmoris (S_ODTS) 13-18 dmarrer une temporisation sous forme de retard la retombe (S_OFFDT) 13-19 dmarrer une temporisation sous forme d'impulsion (S_PULSE) 13-15 dmarrer une temporisation sous forme d'impulsion prolonge (S_PEXT) 13-16 exemples 13-20 saisie et exploitation de la valeur de temps 13-13 Temps de cycle 4-40 Test avec points d'arrt 4-31 Test en pas pas 4-31 TIME 7-4 TIME_OF_DAY 7-4 TIME_TO_DINT 14-4 TIMER 7-16 TOD_TO_DINT 14-4 TRUNC 14-6 Type de donnes ANY 7-19 Type de donnes ARRAY 7-10 Type de donnes COUNTER 7-16 Type de donnes DATE_AND_TIME 7-5 Type de donnes POINTER 7-17 Type de donnes STRING 7-7 Type de donnes STRUCT 7-12 Type de donnes TIMER 7-16 Types de donnes description 7-1 Types de donnes binaires 7-3 Types de donnes BLOCK 7-17 Types de donnes complexes 7-2, 7-5, 7-7
S7-SCL V5.3 pour S7-300/400 A5E00324651-01

S
S_CD 13-6 S_CU 13-6 S_CUD 13-7 S_ODT 13-17 S_ODTS 13-18 S_OFFDT 13-19 S_PEXT 13-16 S_PULSE 13-15 S5Time 13-13 S5TIME 7-4 S7-SCL 1-2, 1-4 S7-SCL fonctionnement 1-2 fonctions 1-4 Saut dans le programme 12-12 Saut de page 4-25 SCL interface utilisateur 4-2 Section de dclaration 8-3, 8-11 composition 6-9 dfinition 6-9 initialisation 8-3 paramtres de bloc 8-12, 8-13 rgles syntaxiques 15-37 variables statiques 8-10 variables temporaires 8-11 Section des instructions composition 6-11 rgles syntaxiques 15-45 Sections de dclaration prsentation 8-9 Slectionner des parties de texte 4-11 SFC/SFB 14-31 SHL 14-11 SHR 14-11 Signet 4-16 SIN 14-10 Source 4-4 - 4-25, 6-11, 6-21 Soustraction 11-1 SQR 14-9 SQRT 14-9 STEP 7 fonctions de test 4-36

Index-6

Index

Types de donnes numriques 7-3 Types de donnes paramtre 7-16, 7-17 Types de donnes simples 7-1, 7-3, 7-4 Types de donnes sur caractre 7-3 Types de donnes utilisateur (UDT) 6-21, 7-14, 12-3 Types de licences Enterprise License 2-1 Floating License 2-3 Rental License 2-3 Trial License 2-3 Upgrade License 2-3

Variables dclaration d'une instance 8-7 initialisation 8-3, 8-4 sections de dclaration 8-9 syntaxe gnrale d'une dclaration de variable ou de paramtre 8-2 Variables locales et paramtres de bloc 8-1 Variables statiques 5-17, 8-1, 8-2, 8-7, 8-10 Variables temporaires 5-17, 8-1, 8-11 Vrification de la cohrence des blocs 4-37 Visualisation 4-33 Visualisation continue 4-30 Visualiser 4-30, 4-32

U
UDT 7-14 appel 6-21 dfinition 6-22 lments 6-21

W
WORD 7-3 WORD_TO_BLOCK_DB 14-4 WORD_TO_BOOL 14-4 WORD_TO_BYTE 14-4 WORD_TO_INT 14-4

V
Valeur de retour (FC) 12-39 Valeur de temps (dure) 13-13 Valeurs initiales 8-3 Valeurs limite pour instructions FOR 16-5 VAR 8-9 VAR_IN_OUT 8-9 VAR_INPUT 8-9 VAR_OUTPUT 8-9 VAR_TEMP 8-9 Variable tendue 11-3

X
XOR 11-9

Z
Zone de travail 4-2 Zones de mmoire de la CPU 5-9, 10-1 - 10-6

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

Index-7

Index

Index-8

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

You might also like