Professional Documents
Culture Documents
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
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.
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 Aktiengesellschaft
A5E00324651-01
Avant-propos
But du manuel
Ce manuel donne une description exhaustive de la programmation avec S7-SCL. Il vous guidera pour installer le logiciel et le mettre en service. Il explique comment crire des programmes utilisateur et prsente les diffrents lments de langage. Il s'adresse aux programmeurs en langage S7-SCL et tous ceux qui travaillent la configuration, la mise en service et la maintenance des systmes d'automatisation. Nous recommandons de se familiariser avec l'exemple du chapitre 2 "Conception d'un programme S7-SCL". Il facilite l'apprentissage de la programmation avec S7-SCL.
Validit du manuel
Ce manuel s'applique au logiciel S7-SCL V5.3.
iii
Avant-propos
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.
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.
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
iv
Avant-propos
Aide en ligne
L'aide en ligne vous donne les informations qui vous manquent l'endroit o vous en avez besoin. De cette manire, vous obtenez trs vite les renseignements pertinents, sans avoir chercher dans des manuels. Vous disposez des commandes suivantes : Rubriques d'aide propose la liste des sujets traits dans l'aide ; Aide contextuelle (touche F1) affiche des informations sur l'objet slectionn ou sur la bote de dialogue ou la fentre active ; Introduction donne un aperu de l'application, de ses caractristiques et de sa fonctionnalit ; Mise en route rsume les oprations effectuer pour obtenir un premier rsultat ; Utiliser l'aide dcrit les moyens dont vous disposez pour trouver certaines informations dans l'aide ; A propos de renseigne sur la version actuelle de l'application.
Avant-propos
Assistance supplmentaire
Si des questions sont restes sans rponse dans ce manuel, veuillez vous adresser votre interlocuteur Siemens dans la filiale ou l'agence de votre rgion. Vous trouvez votre interloculeur sous : http://www.siemens.com/automation/partner Vous trouvez un fil rouge pour la recherche de documentations techniques sur les produits et systmes SIMATIC ladresse suivante sur Internet : http://www.siemens.com/simatic-tech-doku-portal Le catalogue en ligne et le systme de commande en ligne se trouvent l'adresse : http://mall.automation.siemens.com/
vi
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
vii
Avant-propos
viii
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
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
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
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
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
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
Sommaire
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
Glossaire Index
xv
Sommaire
xvi
Prsentation du produit
1.1
Certificat PLCopen
S7-SCL correspond au langage volu textuel ST (Structured Text) dfini dans la norme CEI 61131-3 et a t conu en vue de la certification pour Reusability Level.
Domaine d'application
S7-SCL est optimis pour la programmation d'automates programmables et contient, outre des lments du langage de programmation PASCAL, galement des lments d'automatisation typiques, tels que p. ex. des entres/sorties, temporisations et compteurs. S7-SCL convient tout particulirement aux tches suivantes : programmation d'algorithmes complexes, programmation de fonctions mathmatiques, gestion de donnes ou de recettes, optimisation de processus.
1-1
Prsentation du produit
1.2
Fonctionnement de S7-SCL
Intgration STEP 7
S7-SCL prend en charge le concept de blocs STEP 7.
OB
FC
FB
DB 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
Prsentation du produit
Editeur
Compilateur squentiel
Dbogueur
1-3
Prsentation du produit
1.3
Bibliothques de blocs
Des blocs prdfinis sont fournis dans des bibliothques, p. ex. : fonctions systme fonctions CEI fonctions de conversion La navigation dans la bibliothque s'effectue dans une bote de dialogue. Lorsque vous slectionnez un bloc, le modle des paramtres de la fonction est automatiquement copi dans le fichier dit. Vous n'avez alors plus qu' entrer les paramtres souhaits.
Modles de programmes
L'diteur S7-SCL met votre disposition ces modles qu'il vous suffit de complter : modles de blocs (p. ex. blocs fonctionnels, blocs de donnes) et leurs appels modles pour commentaires de blocs, paramtres de blocs et constantes modles pour structures de contrle (IF, CASE, FOR, WHILE, REPEAT)
1-4
Prsentation du produit
1-5
Prsentation du produit
1.4
Impression en couleurs
Il est possible d'imprimer les sources S7-SCL en couleurs.
1-6
Prsentation du produit
1-7
Prsentation du produit
1-8
Installation
2.1
2.1.1
Licences
Des licences sont ncessaires pour l'utilisation des progiciels de STEP 7 protgs par des droits de licence. Une licence est accorde comme droit d'utilisation de produits. Les reprsentants de ce droit sont : CoL (Certificate of License) et License Key
2-1
Installation
License Keys
La "License Key" est le reprsentant technique d'une licence (marque de licence lectronique). SIEMENS AG attribue une "License Key" pour tout logiciel protg par des droits de licence. Le logiciel correspondant peut exclusivement tre utilis conformment aux conditions de licence et d'utilisation lies la "Licence Key" correspondante si la prsence de la "License Key" valide est constate sur un ordinateur, aprs dmarrage du logiciel.
Nota
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
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.
2-3
Installation
2.1.2
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.
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
Installation
2.1.3
Avertissement Tenez compte des indications d'utilisation des "License Keys" dcrites dans l'aide en ligne et dans le fichier Lisezmoi.wri de Automation License Manager. Le non-respect de ces rgles risque d'entraner la perte irrmdiable des "License Keys".
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".
2-5
Installation
2.2
2.2.1
Installation
Environnement requis
2.2.2
Installation de S7-SCL
2-6
3.1
Objectifs
L'exemple propos veut vous apprendre utiliser au mieux les possibilits offertes par S7-SCL. Les questions les plus frquentes au dbut sont par exemple : Comment faire pour concevoir mon programme avec S7-SCL ? Quels sont les lments de langage de S7-SCL adquats pour rsoudre ce problme ? Quelles sont les fonctions de test mises ma disposition ? Ce chapitre entend rpondre ces questions et quelques autres.
Matriel requis
Vous pouvez excuter le programme-exemple dans un automate SIMATIC S7-300 ou SIMATIC S7-400 dot de la priphrie suivante : Un module d'entre 16 voies, Un module de sortie 16 voies.
3-1
3.2
Enonc du problme
Prsentation
Il s'agit de saisir des valeurs de mesure au moyen d'un module d'entre, pour les trier et traiter ensuite l'aide d'un programme S7-SCL. Les rsultats seront indiqus par un module de sortie.
Valeur de mesure
Commutateur de tri
1 1 1 1 1 1 1 1
255
Racine carre Carr
1 2 3 4 6 8 11 16
3-2
x=Evaluation du front
0
Racine carre ou carr
1
Valeur de mesure ou rsultat
Valeur de mesure
Racine carre
Carr
1 Adressage de la sortie 2 3 4 6 8 11 16
Slection de la sortie
Rsultats
4
Sortie
3-3
3.3
Types de bloc
Un programme S7-SCL structur permet de rsoudre au mieux le problme pos. Un tel programme est de construction modulaire, c'est--dire divis en blocs chargs chacun d'une tche partielle bien dtermine. Comme dans les langages de programmation de STEP 7, vous disposez dans S7-SCL des types de bloc suivants.
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
3-5
3.4
Tches partielles
Dans la figure ci-aprs, les tches partielles sont reprsentes par des blocs. Les zones rectangulaires grises reprsentent les blocs. La disposition des blocs de code de la gauche vers la droite correspond leur ordre d'appel.
3-6
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.
3-7
3.5
Prsentation
L'interface d'un bloc est forme de paramtres auxquels il est possible d'accder depuis d'autres blocs. Les paramtres dclars dans le bloc sont des marques de rservation dont les valeurs ne sont fixes qu'au moment de l'utilisation concrte (appel). On les nomme paramtres formels, tandis que les valeurs qui leur sont affectes l'appel du bloc sont dsignes par paramtres effectifs. Lorsqu'un bloc est appel, des donnes d'entre lui sont transmises en tant que paramtres effectifs. Aprs le retour au bloc appelant, les donnes de sortie sont mises disposition pour tre prises en charge. Une fonction (FC) peut transmettre son rsultat sous forme de valeur de la fonction. On peut classer les paramtres de bloc dans les catgories suivantes :
Paramtres de bloc 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
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
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
3-9
3.6
Systme d'automatisation
Octet 1
Octet 5
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
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
3.7
3.8
3-11
3.9
3.9.1
3-12
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
I signifie index
non
oui Echanger les valeurs de la mmoire de tri [I-1] et de la mmoire de tri [I]
ECHANGER = TRUE
I := I-1
changer ? FALSE I := 0
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
3-13
: ARRAY[0..LIMITE] OF INT;
VAR_OUTPUT memoire_calcul : ARRAY[0..LIMITE] OF STRUCT racine_carree : INT; carre : INT; END_STRUCT; END_VAR VAR_TEMP echanger : BOOL; indice, aux : INT; valeur_r, resultat_r: REAL; END_VAR
3-14
Droulement du programme
Le paramtre d'entre/sortie "memoire_tri" est combin avec la mmoire circulante "valeurs_mesure", c'est--dire que le contenu original de la mmoire est cras par les valeurs de mesure tries. Le nouveau tableau "memoire_calcul" est cr comme paramtre de sortie pour les rsultats du calcul. Ses lments sont structurs de telle faon qu'ils contiennent la racine carre et le carr de chaque valeur de mesure. La figure ci-aprs montre le lien entre les tableaux dcrits.
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.
3-15
3-16
3.11
Cration du FB SAISIE
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.
oui Trier la mmoire circulante et effectuer les calculs (crer cet effet le tableau des rsultats).
CALCUL
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
Fin
Charger : inscrire les lments de la liste avec les adresses de sortie dans les paramtres de sortie pour ensuite afficher leurs valeurs.
3-17
3-18
Variables statiques
Nous avons choisi le type de bloc FB parce qu'il y a des donnes enregistrer d'un cycle de programme au suivant. Il s'agit des variables statiques qui sont dclares dans la section de dclaration "VAR, END_VAR". On appelle variables statiques les variables locales dont les valeurs sont conserves durant toutes les excutions du bloc concern. Elles servent stocker les valeurs d'un bloc fonctionnel et sont conserves dans le bloc de donnes d'instance.
Initialisation de variables
Notez les valeurs initiales qui sont crites dans les variables lors de l'initialisation du bloc (aprs son chargement dans la CPU). L'instance locale du FB CALCUL est galement dclare dans la section de dclaration "VAR, END_VAR". Ce nom sera utilis plus tard pour l'appel et l'accs aux paramtres de sortie. L'instance globale SAISIE_DONNEES sert de mmoire de donnes.
Nom 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
3-19
3-20
Calcul de l'adresse
La figure ci-aprs montre le calcul de l'adresse. Le mot d'entre EW0 contient dans ses bits 12 14 le codage qui est valid lorsqu'un front est dtect au commutateur de codage (bit 15). La valeur "adresse" est dtermine par dcalage vers la droite au moyen de la fonction standard SHR et masquage des bits significatifs avec un masque AND. C'est avec cette adresse que les lments du tableau (rsultat du calcul et valeur de mesure correspondante) sont crits dans les paramtres de sortie. Le paramtre "choix_fonction" dtermine si le rsultat est la racine carre ou le carr. Un front du commutateur de codage est signal par le changement de "nouv_selection" par rapport "anc_selection".
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
3-21
3-22
3.12
3-23
3-24
3.13
Donnes de test
Conditions requises
Vous avez besoin pour le test d'un module d'entre avec l'adresse 0 et d'un module de sortie avec l'adresse 4. Avant le test, poussez vers la gauche ("0") les 8 commutateurs suprieurs du module d'entre et vers la droite ("1") les 8 commutateurs infrieurs. Chargez nouveau les blocs dans la CPU, puisque les valeurs initiales des variables sont galement testes.
Etapes du test
Effectuez maintenant le test en vous conformant aux tapes dcrites dans le tableau ciaprs.
Test Action 1 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 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.
3-25
Test complmentaire
Les tableaux ci-aprs expliquent les commutateurs du module d'entre et proposent des modles de test pour la racine carre et le carr qui vous aideront dfinir vos propres tapes de test. L'entre est effectue au moyen des commutateurs : les 8 du haut permettent de commander le programme, les 8 du bas de fournir une valeur de mesure. La sortie est effectue au moyen d'indicateurs : le groupe du haut indique l'octet de sortie de poids fort, celui du bas l'octet de poids faible.
Commutateurs de Nom commande 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
Utilisation de S7-SCL
4.1
4-1
Utilisation de S7-SCL
4.2
Interface utilisateur
Les fentres de S7-SCL comportent les lments standard suivants :
1. Barre de titre : elle contient le titre de la fentre et les boutons permettant de la commander. 2. Barre des menus : elle contient tous les menus disponibles dans cette fentre. 3. Barre d'outils : elle contient des icnes permettant de dclencher rapidement les commandes les plus frquentes. 4. Zone de travail : elle contient les diffrentes fentres dans lesquelles vous ditez le texte du programme ou consultez les informations du compilateur ou du test. 5. Barre d'tat : elle affiche l'tat et d'autres informations sur l'objet slectionn.
4-2
Utilisation de S7-SCL
4.3
Personalisation de l'diteur
Pour adapter l'diteur vos besoins, choisissez la commande Outils > Paramtres et cliquez sur l'onglet "Editeur" dans la bote de dialogue "Paramtres". Vous pouvez y faire les choix suivants :
Options de l'onglet "Editeur" 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.
Indentation automatique
Style/Couleur
Les choix faits dans cet onglet ne sont efficaces que si vous avez activ l'option "Utiliser les formats suivants" en tte de l'onglet.
4-3
Utilisation de S7-SCL
4.4
4.4.1
Sources
Mnmoniques
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
Utilisation de S7-SCL
4.4.2
2. Dans la bote de dialogue, choisissez le projet souhait, le programme S7 souhait et le dossier Sources correspondant.
Nota Vous pouvez aussi ouvrir des sources S7-SCL dans SIMATIC Manager en cliquant deux fois sur leur icne ou en choisissant la commande Edition > Ouvrir l'objet aprs avoir slectionn la source qui vous intresse.
4.4.3
Nota Si vous avez modifi la source, un message vous proposera d'enregistrer ces modifications avant la fermeture. Si vous ne les enregistrez pas, elles seront perdues.
4-5
Utilisation de S7-SCL
4.4.4
Nota La maintenance de vos programmes de CPU sera plus facile si vous effectuez les modifications ventuelles dans les sources S7-SCL et les compilez nouveau.
4.4.5
4.4.6
4-6
Utilisation de S7-SCL
4.4.7
Protection de bloc
Vous pouvez instaurer pour vos blocs une protection de bloc, en indiquant dans la source l'attribut KNOW_HOW_PROTECT lors de la programmation.
4-7
Utilisation de S7-SCL
4.5
4.5.1
4.5.2
4-8
Utilisation de S7-SCL
4.5.3
Utilisation de mnmoniques
Dans un programme S7-SCL, vous travaillez avec des oprandes tels que signaux d'E/S, mmentos, compteurs, temporisations et blocs. Vous pouvez les adresser de manire absolue (ex. : E1.1, M2.0, FB11), mais vos sources S7-SCL seront beaucoup plus lisibles si vous employez cet effet des mnmoniques (ex. : Moteur_marche). C'est alors par son mnmonique que vous accderez un oprande dans votre programme utilisateur.
Nota Veillez ce que les mnmoniques soient univoques et qu'ils ne soient pas identiques un mot-cl.
4-9
Utilisation de S7-SCL
4.6
4.6.1
4.6.2
4.6.3
4-10
Utilisation de S7-SCL
4.6.4
4.6.5
3. Amenez le curseur l'endroit (dans la mme application ou dans une autre) o vous voulez insrer (coller) la partie de texte. 4. Collez-la en cliquant sur l'icne "Coller" de la barre d'outils ou en choisissant la commande Edition > Coller.
4-11
Utilisation de S7-SCL
4.6.6
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
4-12
Utilisation de S7-SCL
4.6.8
4-13
Utilisation de S7-SCL
4.6.9
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
Utilisation de S7-SCL
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.
4-15
Utilisation de S7-SCL
4.6.11
Validit
Les signets sont valides tant que la source est ouverte. Ils ne sont pas enregistrs avec cette dernire.
Insertion de signets
1. Positionnez le curseur dans la ligne que vous souhaitez slectionner. 2. Choisissez la commande de menu Edition > Afficher/Masquer les signets.
Suppression de signets
Choisissez la commande de menu Edition > Supprimer tous les signets.
Nota Les fonctions ncessaires l'utilisation de signets sont rapidement disponibles dans la barre des signets. Vous affichez la barre des signets en slectionnant la commande de menu Affichage > Barre des signets.
4-16
Utilisation de S7-SCL
4-17
Utilisation de S7-SCL
4-18
Utilisation de S7-SCL
4.7
4.7.1
4-19
Utilisation de S7-SCL
4.7.2
4-20
Utilisation de S7-SCL
Affichage des avertissements Erreurs avant avertissements Gnration des donnes de rfrence
4-21
Utilisation de S7-SCL
4.7.3
Compiler le programme
Avant de pouvoir excuter un programme ou de le tester, il faut d'abord le compiler. Pour tre sr(e) que vous compilez toujours la version la plus rcente de votre source S7-SCL, il est conseill de choisir la commande Outils > Paramtres et de cocher l'option "Enregistrer avant de compiler" dans l'onglet "Editeur". La commande Fichier > Compiler enregistre alors automatiquement la source S7-SCL.
6. La bote de dialogue "Erreurs et avertissements" affiche toutes les erreurs et tous les avertissements concernant la syntaxe qui ont t mis lors de la compilation du programme. Corrigez les ventuelles erreurs signales, puis rptez les tapes dcrites ci-dessus.
4.7.4
3. Tapez le nom du fichier dans la zone de texte approprie (24 caractres au plus) et confirmez par "OK". 4. Le fichier est cr et s'affiche dans une fentre de travail pour que vous puissiez l'diter. Tapez dans l'ordre souhait les noms des sources S7-SCL compiler et enregistrez le fichier. 5. Dmarrez ensuite la compilation en choisissant la commande Fichier > Compiler.
4-22
Utilisation de S7-SCL
4.7.5
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.
4-23
Utilisation de S7-SCL
4.8
4.8.1
4.8.2
Important Les indications sur l'orientation du papier doivent tre faites dans la bote de dialogue "Mise en page". Celles effectues dans la bote de dialogue "Configuration de l'imprimante" ne sont pas significatives pour l'impression de sources S7-SCL.
La commande Fichier > Aperu avant impression permet de vrifier l'effet obtenu par les choix effectus avant d'envoyer le document l'imprimante.
4-24
Utilisation de S7-SCL
4.8.3
3. Choisissez les options d'impression dans la bote de dialogue, comme par exemple l'tendue d'impression ou le nombre de copies. 4. Confirmez par "OK".
4.8.4
4-25
Utilisation de S7-SCL
Elment de langage Ligne de commentaire Mnmonique global (table des mnmoniques) crit entre guillemets
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
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
Conditions requises
Lors de la compilation d'une source S7-SCL , les blocs sont gnrs partir de la source et enregistrs dans le dossier Blocs du programme S7. Les blocs qui sont appels au premier niveau depuis les blocs S7-SCL sont recherchs, puis copis automatiquement avec les autres dans le rpertoire "Blocs" et adopts dans la liste de chargement. Vous devez charger les autres blocs du programme utilisateur de la console de programmation dans la CPU l'aide du SIMATIC Manager. Pour que le chargement soit effectu, il faut qu'une liaison existe entre la PG et la CPU. Il faut aussi qu'un programme utilisateur en ligne soit affect au module de CPU dans SIMATIC Manager.
4-27
Utilisation de S7-SCL
Marche suivre
Une fois que vous avez compil la source, vous avez le choix entre deux types de chargement : La commande Fichier > Charger charge tous les blocs contenus dans la source ainsi que tous les blocs appels au premier niveau. La commande Fichier > Chargement partiel ouvre une bote de dialogue permettant de slectionner certains blocs pour les charger. Les blocs sont alors transfrs dans la CPU. Si l'un d'eux se trouve dj dans la mmoire vive (RAM) de la CPU, un message vous demandera d'en confirmer l'crasement.
Nota Il est prfrable de charger le programme utilisateur l'tat de fonctionnement ARRET, car l'crasement d'un ancien programme l'tat MARCHE risque de provoquer des erreurs.
4-28
Utilisation de S7-SCL
4.10
4.10.1
Attention Un test effectu sur une installation en fonctionnement peut causer des lsions corporelles graves ou un dommage matriel important en cas de mauvais fonctionnement ou d'erreurs de programmation. Avant d'utiliser les fonctions de test, assurez-vous que des tats dangereux ne risquent pas de se produire !
4-29
Utilisation de S7-SCL
Zone de visualisation
Le volume d'instructions visualiser est limit par les performances de la CPU connecte. Les instructions S7-SCL du code source tant reprsentes par un nombre diffrent d'instructions en code machine, la longueur de la zone de visualisation est variable ; le dbogueur S7-SCL la dtermine et l'affiche lorsque vous slectionnez la premire instruction de la zone qui vous intresse. Vous avez en outre la possibilit de dfinir une zone de visualisation prcise. Slectionnez cet effet les instructions visualiser dans la source.
Modes de test
L'interrogation des informations de test provoque le plus souvent un allongement des temps de cycle. S7-SCL propose deux modes diffrents qui permettent d'influencer cet allongement.
Mode de test 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
Utilisation de S7-SCL
Points d'arrt
Vous pouvez dfinir des points d'arrt n'importe quel endroit de la section des instructions du texte source. Ils ne sont transfrs dans le systme d'automatisation et activs que lorsque vous choisissez la commande Test > Activer les points d'arrt. Le programme est alors excut jusqu' ce que la CPU atteigne le premier point d'arrt. Le nombre maximal de points d'arrt activs dpend de la CPU.
Condition requise
La source ouverte ne doit pas avoir t modifie dans l'diteur.
4-31
Utilisation de S7-SCL
4.10.4
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.
4-32
Utilisation de S7-SCL
Nota Lorsque vous avez dfini un environnement dappel, procdez comme suit pour dmarrer la visualisation : 1. Positionnez le curseur sur le bloc visualiser pour lequel vous avez dfini lenvironnement dappel. 2. Slectionnez la commande de menu Test > Visualiser. La fonction de visualisation est lance. Le bloc est visualis si toutes les conditions dappel que vous avez dfinies sont remplies.
4-33
Utilisation de S7-SCL
4.10.5
Pour effacer tous les points d'arrt, choisissez la commande Test > Supprimer tous les points d'arrt.
4-34
Utilisation de S7-SCL
4-35
Utilisation de S7-SCL
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.
4-36
Utilisation de S7-SCL
Conditions
STEP 7 V5.3 SP2 ou une version suprieure est install sur votre appareil. Une source concerne par la fonction "Vrifier la cohrence des blocs" doit avoir t compile une fois avec S7-SCL V5.3 SP1 ou une version suprieure. S7-SCL doit tre install sur l'appareil sur lequel vous ralisez la vrification de cohrence.
Rsultat
STEP 7 vrifie les horodatages et interfaces de tous les blocs et de toutes les sources correspondantes dans le dossier actuel et signale les conflits suivants : conflits d'horodatage entre sources S7-SCL et blocs, rfrences entre diffrents blocs et conflits d'interface qui en rsultent. Lorsqu'une incohrence est dtecte, une nouvelle compilation de la source correspondante est lance. Si la source contient plusieurs sources de blocs, tous les blocs rsultant de cette source sont de nouveau gnrs. Lors de la compilation, les options actuelles paramtres sont valables.
4-37
Utilisation de S7-SCL
Nota Vous trouverez de plus amples informations sur cette fonction dans l'aide de STEP 7.
4.11
4.11.1
Attention Modifier l'tat de fonctionnement d'une installation en marche peut causer des lsions corporelles graves ou un dommage matriel important en cas de mauvais fonctionnement ou d'erreurs de programmation. Avant d'utiliser cette fonction, assurez-vous que des situations dangereuses ne risquent pas de se produire !
4-38
Utilisation de S7-SCL
4.11.3
4.11.4
4-39
Utilisation de S7-SCL
4-40
Utilisation de S7-SCL
4-41
Utilisation de S7-SCL
4-42
5.1
Squence
Bloc 3 Bloc 1 Bloc 2 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.
5-1
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.
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
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;
5-3
5.2
Jeu de caractres
Lettres et chiffres
Dans le jeu de caractres ASCII, S7-SCL utilise : Les lettres (majuscules et minuscules) de A Z Les chiffres arabes 0 9 Le caractre d'espacement (valeur ASCII 32) et tous les caractres de commande (ASCII 0- 31), y compris le caractre de fin de ligne (ASCII 13)
Autres caractres
Les caractres suivants ont une signification bien prcise dans S7-SCL :
+ : ; * $ / # = " < ' > { [ } ] % ( . ) ,
Nota
Le chapitre "Description du langage" offre une liste dtaille de tous les caractres utilisables en prcisant comment ils sont interprts dans S7-SCL.
5-4
5.3
Mots rservs
Il s'agit de mots-cls dont l'usage est prdfini. La distinction entre les majuscules et les minuscules n'est pas faite.
5-5
5.4
Identificateur
Dfinition
Un identificateur est un nom que vous pouvez attribuer un objet du langage S7-SCL, savoir une constante, une variable ou un bloc.
Rgles
Il peut s'agit d'une combinaison quelconque de 24 lettres (non accentues) et chiffres au maximum, le premier caractre devant tre une lettre ou le caractre de soulignement. Vous pouvez employer aussi bien des majuscules que des minuscules, sachant qu'aucune distinction n'est faite entre elles (par exemple, AnNa et AnnA sont quivalents).
Lettre
_ 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
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
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)
5-7
Il y a plusieurs manires de dsigner un bloc dans S7-SCL. Le numro du bloc peut tre un nombre dcimal entier.
Mot-cl de bloc DB, FB, FC, OB, UDT
Numro
IDENTIFICATEUR
Mnmonique
Exemple
Voici des dsignations autorises : FB10 DB100 T141
5-8
5.7
Identificateur d'oprande
Dfinition
Un identificateur d'oprande permet d'adresser une zone de mmoire de la CPU, partir d'un endroit quelconque du programme.
Rgles
Le tableau suivant donne la liste des identificateurs d'oprande classs d'aprs les abrviations allemandes, avec les abrviations anglaises correspondantes. Les identificateurs d'oprande pour blocs de donnes doivent tre indiqus avec le bloc de donnes correspondant.
Abrviations allemandes 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
Exemple
E1.0 MW10 PAW5 DB20.DW3
5-9
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
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
5-11
Nombre rel
Un nombre rel doit comporter une virgule dcimale ou un exposant (ou les deux). La virgule dcimale doit figurer entre deux chiffres. Un nombre rel ne peut donc ni commencer, ni se terminer par une virgule dcimale. Voici des nombres rels autoriss :
0.0 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 :
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
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 $< .
5-13
5.12
Mnmonique
Dans S7-SCL, vous pouvez indiquer un mnmonique selon la syntaxe suivante. Il n'est ncessaire de le placer entre guillemets que s'il n'est pas conforme la rgle IDENTIFICATEUR.
Syntaxe :
"
Caractre imprimable
"
5-14
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
5-15
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
//
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
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
5-17
5-18
6.1
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.
6-1
6.2
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
6.3
6.4
Fonction
FC
Bloc d'organisation
OB
Bloc de donnes
DB
UDT
6-3
Dsignation de bloc
Dans le tableau , nom_xx reprsente la dsignation de bloc conformment la syntaxe suivante :
Numro
IDENTIFICATEUR
Mnmonique
Le numro de bloc peut aller de 0 65533, mais l'identificateur de bloc DB0 est rserv. N'oubliez pas que vous devez dfinir un identificateur ou un mnmonique dans la table des mnmoniques de STEP 7.
Exemples
FUNCTION_BLOCK FB10 FUNCTION_BLOCK Bloc rgulateur FUNCTION_BLOCK "Rgulateur.B1&U2"
6-4
6.5
Attributs de bloc
Dfinition
Un attribut de bloc est une proprit de bloc que vous pouvez par exemple utiliser pour indiquer le titre du bloc, la version, la protection du bloc ou encore l'auteur. Lorsque vous choisissez des blocs pour votre application, vous pouvez afficher leurs proprits dans une fentre de STEP 7. Vous pouvez donner les attributs suivants :
Mot-cl / attribut 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 :
NAME : FAMILY :
NAME : PID NAME : 'A&D AS' FAMILY : Exemple FAMILY : 'A&D AS'
6-5
Rgles
Vous dclarez les attributs de bloc l'aide de mots-cls directement aprs l'instruction de dbut de bloc. Les identificateurs peuvent comporter au plus 8 caractres. La saisie d'attributs de bloc doit respecter la syntaxe suivante :
Exemples
FUNCTION_BLOCK FB10 TITLE = 'Moyenne' VERSION : '2.1' KNOW_HOW_PROTECT AUTHOR : AUT_1
6-6
6.6
Commentaire de bloc
Les commentaires concernant l'ensemble du bloc sont saisir dans l'en-tte la suite de la ligne "TITLE:". Utilisez pour cela la notation de la ligne de commentaire. Si le commentaire s'tend sur plusieurs lignes, chacune d'elles commence par //. Le commentaire de bloc s'affiche par exemple dans la fentre des proprits du bloc dans SIMATIC Manager ou dans l'diteur CONT/LOG/LIST.
Exemple
FUNCTION_BLOCK FB15 TITLE=MON_BLOC //Ceci est un commentaire de bloc. //Il est saisi sous la forme d'une suite de lignes de commentaire //et peut tre affich dans SIMATIC Manager, par exemple. AUTHOR... FAMILY...
6-7
6.7
Dfinition
Les attributs systme sont en vigueur dans le systme de conduite au-del des limites d'une application particulire. Les attributs systme pour bloc s'appliquent l'ensemble d'un bloc.
Rgles
Vous dclarez les attributs systme directement aprs l'instruction de dbut de bloc. La saisie doit respecter la syntaxe suivante :
IDENTIFICATEUR
:=
'
'
Exemples
FUNCTION_BLOCK FB10 {S7_m_c := 'true' ; S7_blockview := 'big'}
6-8
6.8
Section de dclaration
Dfinition
La section de dclaration sert dclarer les variables locales, les paramtres, les constantes et les repres de saut. Dfinissez dans la section de dclaration du bloc de code les variables locales, les paramtres, les constantes et les repres de saut qui ne doivent tre valables que dans un bloc. Dfinissez dans la section de dclaration de blocs de donnes les zones de donnes qui doivent tre adressables par tout bloc de code. Dans la section de dclaration d'un UDT, vous dfinissez un type de donnes utilisateur.
Composition
Une section de dclaration se divise elle-mme en plusieurs sections, respectivement caractrises par un couple de mots-cls. Chacune d'entre elles contient une liste de dclaration pour des donnes de mme type. L'ordre de ces sections est libre. Le tableau suivant numre les sections de dclaration possibles :
Donnes 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.
6-9
6.9
Dfinition
Les attributs systme sont en vigueur dans le systme de conduite au-del des limites d'une application particulire. Ils servent par exemple la configuration de messages ou de liaisons. Les attributs systme pour paramtre ne s'appliquent chaque fois qu'au seul paramtre configur. Vous pouvez affecter des attributs systme aux paramtres d'entre, de sortie ou d'entre/sortie.
Rgles
Vous affectez les attributs systme pour paramtre dans les sections de dclaration des paramtres d'entre, de sortie ou d'entre/sortie. Un identificateur doit comporter au plus 24 caractres. La saisie doit respecter la syntaxe suivante :
IDENTIFICATEUR
:=
'
'
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
6.10
Dfinition
La section des instructions contient les instructions qui doivent tre excutes aprs l'appel d'un bloc de code. Elles servent traiter des donnes ou des adresses. La section des instructions d'un bloc de donnes contient des instructions pour donner une valeur par dfaut ses variables.
Rgles
La section des instructions peut tre introduite facultativement par le mot-cl BEGIN. Dans les blocs de donnes, BEGIN est imprativement ncessaire. La section des instructions se termine par le mot-cl de fin de bloc. Chaque instruction se termine par un point-virgule. Tous les identificateurs employs dans la section des instructions doivent tre au pralable dclars. Chaque instruction peut tre prcde facultativement de repres de saut. La saisie doit respecter la syntaxe suivante :
Instruction
Exemple
BEGIN VALEUR_DEBUT :=0; VALEUR_FIN :=200; . . ENREGISTRER: RESULTAT . . END_FUNCTION_BLOCK
:=CONSIGNE;
6-11
6.11
Instructions
Dfinition
Une instruction est la plus petite unit autonome du programme utilisateur. Elle reprsente une tche que doit excuter le processeur. S7-SCL connat les types d'instruction suivants : Affectations de valeur permettant d'attribuer une variable soit une valeur, soit le rsultat d'une expression ou encore la valeur d'une autre variable ; Instructions de contrle (de branchement) servant rpter des instructions ou des groupes d'instructions ou orienter la suite du droulement d'un programme ; Excutions de sous-programmes destins appeler des fonctions et des blocs fonctionnels.
Rgles
La saisie doit respecter la syntaxe suivante :
Instruction
Affectation de valeur
Excution de sous-programme
Instruction de contrle
Exemples
Les exemples suivants montrent les divers types d'instructions. // Exemple d'affectation de valeur VALEUR_MESURE:= 0 ; // Exemple d'excution de sous-programme FB1.DB11 (TRANSFERT:= 10) ; // Exemple d'instruction de contrle WHILE COMPTEUR < 10 DO.. . . END_WHILE;
6-12
6.12
Dfinition
Un bloc fonctionnel (FB) est un bloc de code contenant une partie d'un programme et disposant d'une zone de mmoire qui lui est affecte. Chaque fois qu'un bloc fonctionnel est appel, il faut lui associer un DB d'instance. Vous dterminez la composition de ce DB d'instance en dfinissant la section de dclaration du FB.
Syntaxe
Bloc fonctionnel
PROGRAM
DESIGNATION DU FB
Section de dclaration du FB
FUNCTION_BLOCK
END_PROGRAM
BEGIN
Dsignation de FB
Indiquez comme dsignation de FB la suite du mot-cl FUNCTION_BLOCK ou PROGRAM le mot-cl FB suivi du numro de bloc ou du nom symbolique du FB. Le numro de bloc peut aller de 0 65533. Exemples : FUNCTION_BLOCK FB10 FUNCTION_BLOCK MOTEUR1
Section de dclaration du FB
La section de dclaration du FB sert dclarer les donnes spcifiques au bloc. Les sections de dclaration autorises sont indiques la rubrique "Section de dclaration". N'oubliez pas que la section de dclaration dtermine aussi la composition du DB d'instance associ au FB.
6-13
Exemple
FUNCTION_BLOCK FB11 VAR_INPUT V1 : INT := 7 ; END_VAR VAR_OUTPUT V2 : REAL ; END_VAR VAR FX1, FX2, FY1, FY2 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
6.13
Dfinition
Une fonction (FC) est un bloc de code auquel aucune zone de mmoire n'est affecte en propre. Elle n'a pas besoin de DB d'instance. Contrairement un FB, une fonction peut fournir un rsultat (valeur de retour) au point d'appel. Elle peut tre utilise de ce fait comme une variable dans une expression. Les fonctions de type VOID ne fournissent pas de valeur de retour.
Syntaxe
Fonction
VOID DESIGNATION DE LA FC Spcification du type de donnes
FUNCTION
Section de dclaration de la FC
BEGIN
END_FUNCTION
Dsignation de FC
Indiquez comme dsignation de FC la suite du mot-cl "FUNCTION" le mot-cl FC suivi du numro de bloc ou du nom symbolique de la FC. Le numro de bloc peut aller de 0 65533. Exemple : FUNCTION FC17 : REAL FUNCTION FC17 : VOID
Section de dclaration de la FC
La section de dclaration de la FC sert dclarer les donnes locales (variables temporaires, paramtres d'entre, de sortie, d'entre/sortie, constantes, repres de saut).
6-15
Exemple
FUNCTION FC11: REAL VAR_INPUT x1: REAL ; x2: REAL ; x3: REAL ; x4: REAL ; END_VAR VAR_OUTPUT Q2: REAL ; END_VAR BEGIN // Retour de la valeur de la fonction FC11:= SQRT( (x2 - x1)**2 + (x4 - x3) **2 ) ; Q2:= x1 ; END_FUNCTION
6-16
6.14
Dfinition
Comme un FB ou une FC, un bloc d'organisation est une partie du programme utilisateur, que le systme d'exploitation appelle cycliquement ou lors d'vnements prcis. Il constitue l'interface entre le programme utilisateur et le systme d'exploitation.
Syntaxe
Bloc d'organisation
ORGANIZATION_BLOCK
DESIGNATION DE L'OB
BEGIN
END_ORGANIZATION_BLOCK
Dsignation d'OB
Indiquez comme dsignation la suite du mot-cl "ORGANIZATION_BLOCK" le mot-cl OB suivi du numro de bloc ou du nom symbolique de l'OB. Le numro de bloc peut aller de 1 65533. Exemples : ORGANIZATION_BLOCK OB1 ORGANIZATION_BLOCK ALARM
Exemple
ORGANIZATION_BLOCK OB1 VAR_TEMP EN_TETE : ARRAY [1..20] OF BYTE ; //20 octets pour le systme d'exploitation END_VAR BEGIN FB17.DB10 (V1 := 7) ; END_ORGANIZATION_BLOCK
6-17
6.15
Dfinition
Les donnes globales spcifiques l'utilisateur qui doivent tre accessibles tous les blocs d'un programme sont stockes dans des blocs de donnes. Chaque FB, FC ou OB peut lire ou crire dans ces blocs de donnes. Il y a deux types de blocs de donnes. Blocs de donnes Il s'agit de blocs de donnes auxquels tout bloc de code du programme CPU peut accder. Tout bloc fonctionnel (FB), toute fonction (FC) ou tout bloc d'organisation (OB) a accs en lecture et en criture aux donnes contenues dans ces blocs de donnes. Blocs de donnes d'instance Les blocs de donnes d'instance sont associs un bloc fonctionnel (FB) prcis. Ils contiennent les donnes locales pour ce bloc fonctionnel associ. Ils sont gnrs automatiquement par le compilateur S7-SCL ds que vous appelez le FB dans le programme utilisateur.
Syntaxe
Bloc de donnes
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
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
// 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
6-19
Section d'affectation du DB
La section d'affectation vous sert affecter des valeurs spcifiques de votre application particulire aux donnes que vous avez dclares dans la section de dclaration. La section d'affectation est introduite par le mot-cl BEGIN et se compose d'une suite d'affectations de valeurs.
Section d'affectation du DB
Variable simple
:=
Constante*
* en notation LIST
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
6.16
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
6-21
:=
2.7 ;
6-22
6.17
Dfinition
Outre des blocs, les sources S7-SCL peuvent galement contenir des indications sur les paramtres du compilateur avec lesquels les diffrents blocs doivent tre compils. Les options du compilateur dfinissent le processus de compilation des blocs individuels ou de la source globale, quels que soient les paramtres figurant dans l'onglet "Compiler (paramtres)". Vous pouvez utiliser les options du compilateur dans les sources S7-SCL ou dans les fichiers d'information de compilation.
Validit
Les options sont uniquement valables pour la compilation de la source pour laquelle elles ont t dfinies. L'application d'une option du compilateur commence par sa dsignation et se termine la fin de la source ou du fichier d'information de compilation. En prsence d'options identiques du compilateur, c'est la dernire en date qui s'applique. Si des options du compilateur ont t dfinies pour un bloc, leur priorit est plus leve que les paramtrages de l'onglet "Compiler (paramtres)". Les paramtrages dans l'onglet restent cependant valables.
Rgles
Les rgles suivantes s'appliquent aux options du compilateur : Dans la source, les options se trouvent en dehors des limites des blocs. Les options figurent dans une ligne distincte. Aucune distinction n'est faite entre les minuscules et les majuscules.
6-23
Options disponibles
Le tableau indique les options disponibles :
Option Valeur Signification
[Scl_]ResetOptions
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
'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
6-25
Types de donnes
7.1
7-1
Types de donnes
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.
7-2
Types de donnes
7.2
7.2.1
7.2.2
7.2.3
7-3
Types de donnes
7.2.4
Type Dure S5
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
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
Types de donnes
7.3
7.3.1
Dfinition
Ce type de donnes dfinit une zone de 64 bits (8 octets) pour l'indication de la date et de l'heure. Cette zone de donnes enregistre les informations suivantes : anne, mois, jour, heures, minutes, secondes, millisecondes.
Syntaxe
DATE_AND_TIME
DATE_AND_TIME# Indication de la date DT# 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
7-5
Types de donnes
Exemple
Voici la dfinition correcte du 20.10.1995 12 heures 20 min. 30 s et 10 ms : DATE_AND_TIME#1995-10-20-12:20:30.10 DT#1995-10-20-12:20:30.10
Nota Des fonctions standard sont votre disposition (dans la bibliothque de STEP 7) pour vous permettre d'accder avec prcision aux composants DATE ou TIME.
7-6
Types de donnes
7.3.2
Dfinition
Le type de donnes STRING dfinit une chane de 254 caractres au plus. La zone de mmoire standard rserve une chane de caractres est de 256 octets. Cette zone de mmoire est requise pour enregistrer les 254 caractres ainsi qu'un en-tte de 2 octets. Vous pouvez rduire la place mmoire requise par une chane de caractres en indiquant dans sa dfinition le nombre maximal de caractres enregistrer dans la chane. Une chane de longueur nulle, c'est--dire sans contenu, reprsente la plus petite valeur possible.
Syntaxe
STRING
L'expression simple reprsente le nombre maximal de caractres dans la chane. Tous les caractres du code ASCII sont autoriss. Une chane peut contenir aussi des caractres spciaux, comme par exemple des caractres de commande, et des caractres non imprimables. Vous les entrez au moyen de la syntaxe $hh, hh reprsentant la valeur hexadcimale du caractre ASCII (ex. : '$0D$0AText' ). Quand vous dclarez la place mmoire requise par une chane de caractres, vous pouvez fixer le nombre maximal de caractres enregistrer dans cette chane. Si vous n'indiquez pas ici de longueur maximale, c'est une chane de longueur 254 qui sera cre.
7-7
Types de donnes
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.
Nota
Quand une fonction provenant d'une bibliothque standard fournit une valeur de retour qui est du type de donnes STRING et que cette valeur doit tre affecte une variable temporaire, il faut d'abord initialiser la variable.
7-8
Types de donnes
Exemple : FUNCTION Test : STRING[45] VAR_TEMP x : STRING[45]; END_VAR x := 'a'; x := concat (in1 := x, in2 := x); Test := x; END_FUNCTION Sans l'initialisation x := 'a'; la fonction fournirait un rsultat faux.
Cadrage
Les variables de type STRING commencent et finissent une limite de mot.
7-9
Types de donnes
7.3.3
Dfinition
Un type de donnes ARRAY possde un nombre dtermin de composants d'un seul et mme type de donnes. S7-SCL distingue : le type de donnes ARRAY unidimensionnel : c'est une liste d'lments de donnes disposs selon un ordre croissant ; le type de donnes ARRAY bidimensionnel : c'est un tableau de donnes comportant des lignes et des colonnes ; la premire dimension se rapporte au numro de ligne, la seconde au numro de colonne ; le type de donnes ARRAY de dimension suprieure : c'est l'extension du type ARRAY bidimensionnel des dimensions supplmentaires ; le nombre maximal de dimensions autorises est de 6.
Syntaxe
Spcification du type de donnes ARRAY
Spcification des indices
ARRAY
Indice 1
.. ,
Indice n
6 dimensions au plus
OF
7-10
Types de donnes
Exemple
VAR REGULATEUR1 : ARRAY[1..3,1..4] OF INT:= -1289, 60, 10362, 385, 2, -54, 736, -83, 77,
Cadrage
Les variables de type ARRAY sont cres ligne par ligne. Chaque dimension d'une variable de type BOOL, BYTE ou CHAR se termine une limite d'octet, toutes les autres une limite de mot.
7-11
Types de donnes
7.3.4
Dfinition
Un type de donnes STRUCT dcrit une zone comportant un nombre fixe de composants dont les types de donnes peuvent tre diffrents. Ces lments de donnes sont indiqus dans la dclaration des composants, immdiatement aprs le mot-cl STRUCT. Un lment de donnes de type STRUCT peut tre lui-mme complexe, ce qui autorise l'imbrication des types de donnes STRUCT.
Syntaxe
STRUCT
END_STRUCT
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
Types de donnes
Exemple
VAR MOTEUR : STRUCT DONNEES : STRUCT COURANT_CHARGE : REAL ; TENSION : INT := 5 ; END_STRUCT ; END_STRUCT ; END_VAR
Cadrage
Les variables de type STRUCT commencent et finissent une limite de mot.
Important Si vous dfinissez une structure qui ne se termine pas une limite WORD, S7-SCL complte automatiquement les octets manquants et adapte ainsi la taille de la structure. L'adaptation de la taille de la structure risque d'entraner des conflits d'accs aux types de donnes possdant une longueur d'octets impaire.
7-13
Types de donnes
7.4
7.4.1
Dfinition
Vous dfinissez un type de donnes utilisateur (UDT) en tant que bloc. Une fois dfini, il peut tre utilis dans l'ensemble du programme utilisateur. Il s'agit donc d'un type de donnes global. Vous pouvez l'utiliser dans la section de dclaration d'un bloc ou d'un bloc de donnes en indiquant sa dsignation UDTx (x reprsente un numro) ou le mnmonique qui lui est affect. Le type de donnes utilisateur peut servir dclarer des variables, des paramtres, des blocs de donnes et d'autres types de donnes utilisateur. Il permet galement de dclarer des composants de structures ou de tableaux.
Syntaxe
Type de donnes utilisateur
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
Types de donnes
Nota Dans un type de donnes utilisateur, il faut employer la syntaxe de LIST. Ceci concerne par exemple la manire d'crire les constantes et l'attribution de valeurs initiales (initialisation). L'aide en ligne relative LIST fournit des informations sur l'criture des constantes.
Exemple
// Dfinition d'UDT avec dsignation symbolique TYPE VALEURS_MESURE: STRUCT BIPOL_1 : INT := 5; BIPOL_2 : WORD := W#16#FFAA ; BIPOL_3 : BYTE := B#16#F1 ; BIPOL_4 : WORD := W#16#1919 ; MESURE : STRUCT BIPOLAIRE_10V : REAL ; UNIPOLAIRE_4_20MA : REAL ; END_STRUCT; END_STRUCT; END_TYPE //Utilisation de l'UDT dans un FB FUNCTION_BLOCK FB10 VAR PLAGE_MESURE : VALEURS_MESURE; END_VAR BEGIN // . . . PLAGE_MESURE.BIPOL_1 := -4 ; PLAGE_MESURE.MESURE.UNIPOLAIRE_4_20MA // . . . END_FUNCTION_BLOCK
:=
2.7 ;
7-15
Types de donnes
7.5
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 :
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
7-16
Types de donnes
7.5.2
7.5.3
Restrictions
Le type de donnes POINTER est autoris pour les paramtres formels d'entre, d'entre/sortie de FB et de FC de mme que pour les paramtres de sortie de FC. Les constantes ne sont pas autorises comme paramtres effectifs ( l'exception de la constante NIL). Lorsque vous affectez une variable temporaire un paramtre formel de type POINTER l'appel d'un FB ou d'une FC, vous ne pouvez pas transmettre ce paramtre un autre bloc. Les variables temporaires perdent leur validit lors de la transmission.
7-17
Types de donnes
A l'appel d'une FC ou d'un FB, vous pouvez uniquement affecter des paramtres formels du type Pointer des entres du processus (%PEW), si le paramtre formel a t dclar comme paramtre d'entre. A l'appel d'un FB, vous pouvez uniquement affecter des paramtres formels du type Pointer des sorties du processus (%PEW), si le paramtre formel a t dclar comme paramtre de sortie.
Exemple
FUNCTION FC100 : VOID VAR_IN_OUT N_out : INT; out : POINTER; END_VAR VAR_TEMP ret : INT; END_VAR BEGIN // ... ret := SFC79(N := N_out, SA := out); // ... END_FUNCTION FUNCTION_BLOCK FB100 VAR ii : INT; aa : ARRAY[1..1000] OF REAL; END_VAR BEGIN // ... FC100( N_out := ii, out := aa); // ... END_FUNCTION_BLOCK
7-18
Types de donnes
7.6
Restrictions
Le type de donnes ANY est autoris pour les paramtres formels d'entre, d'entre/sortie de FB et de FC de mme que pour les paramtres de sortie de FC. Les constantes ne sont pas autorises comme paramtres effectifs ou droite d'une affectation ( l'exception de la constante NIL). Lorsque vous affectez une variable temporaire un paramtre formel de type ANY lors de l'appel d'un FB ou d'une FC, vous ne pouvez pas transmettre ce paramtre un autre bloc. Les variables temporaires perdent leur validit lors de la transmission. Il n'est pas permis d'utiliser les variables de ce type comme composant d'une structure ou lment d'un tableau. A l'appel d'une FC ou d'un FB, vous pouvez uniquement affecter des paramtres formels du type ANY des entres du processus (%PEW), si le paramtre formel a t dclar comme paramtre d'entre. A l'appel d'un FB, vous pouvez uniquement affecter des paramtres formels du type ANY des sorties du processus (%PEW), si le paramtre formel a t dclar comme paramtre de sortie.
7-19
Types de donnes
7.6.1
CASE ii OF 1: pANY := MW4; 3..5: pANY:= aINT[ii]; 100: pANY := iANY; pANY := NIL; END_CASE; SFCxxx(IN := pANY);
// 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
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
Drapeau OK
Le compilateur de S7-SCL offre un drapeau servant dceler les erreurs durant l'excution de programmes dans la CPU. Il s'agit d'une variable locale de type BOOL dont le nom prdfini est "OK".
8-1
8.2
Dclaration de variable
AT
Variable simple
Exemples
VALEUR1 : REAL; S'il y a plusieurs variables du mme type : VALEUR2, VALEUR3,VALEUR4,....: INT; TABLEAU : ARRAY[1..100, 1..10] OF REAL; PHRASE : STRUCT TABLEAU_MESURE:ARRAY[1..20] OF REAL; COMMUTATEUR:BOOL; END_STRUCT
Nota Pour utiliser des mots rservs comme identificateurs, vous devez les faire prcder du signe # (par exemple, #FOR).
8-2
8.3
Initialisation
Lorsque vous dclarez des variables statiques, des paramtres d'entre et des paramtres de sortie d'un FB, vous pouvez leur affecter une valeur par dfaut. De mme pour les paramtres d'entre/sortie, mais seulement quand ils sont d'un type de donnes simple. Pour les variables simples, vous devez affecter (:=) une constante aprs avoir indiqu le type de donnes.
Syntaxe
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.
.LAITINID ETSIL
ETNATSNOC
UAELBAT NUD
NOITASILAITINI
8-3
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
8.4
Exemple
Dans l'exemple ci-aprs, plusieurs accs un paramtre d'entre sont rendus possibles : VAR_INPUT Tampon : ARRAY[0..255] OF BYTE; Telegramme1 AT Tampon : UDT100 ; Telegramme2 AT Tampon : UDT200 ; END_VAR Le bloc appelant dfinit le paramtre Tampon, il ne voit pas les noms Telegramme1 et Telegramme2. Le bloc appel dispose alors de 3 faons d'interprter les donnes, savoir comme tableau de nom Tampon ou organises autrement sous Telegramme1 ou Telegramme2.
8-5
Rgles
La dclaration d'un accs supplmentaire une variable doit tre effectue dans le mme bloc de dclaration et la suite de la dclaration de la variable sur laquelle il doit pointer. L'initialisation n'est pas possible. Le type de donnes de l'accs doit tre compatible avec celui de la variable. C'est la variable qui impose la taille de la zone de mmoire. La place mmoire requise par l'accs peut tre infrieure ou gale cette taille. Il faut respecter en outre les rgles de combinaison suivantes :
Type de donnes de l'accs Type de donnes de la variable simple FB 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
simple = BOOL, BYTE, WORD, DWORD, INT, DINT, DATE, TIME, S5TIME, CHAR complexe = ARRAY, STRUCT, DATE_AND_TIME, STRING
8-6
8.5
Utilisation de multi-instances
Il est possible qu'en raison des performances des CPU S7 utilises (par exemple espace mmoire), vous ne puissiez ou ne souhaitiez associer qu'un nombre limit de blocs de donnes aux donnes d'instance. Si d'autres blocs fonctionnels dj existants sont appels dans un FB de votre programme utilisateur (hirarchie d'appel de FB), vous pouvez les appeler sans DB d'instance en propre (c'est--dire sans DB d'instance supplmentaire). Vous pouvez employer pour cela la solution suivante : Entrez les FB appeler comme variables statiques dans la dclaration des variables du FB appelant. Appelez dans ce bloc fonctionnel d'autres blocs fonctionnels sans DB d'instance en propre. Vous pouvez ainsi regrouper les donnes d'instance dans un seul DB d'instance, et donc mieux utiliser le nombre de DB disponibles.
8.6
Syntaxe
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;
8-7
8.7
Drapeau OK
Le drapeau OK sert noter l'excution correcte ou incorrecte d'un bloc. Il s'agit d'une variable locale de type BOOL dont le nom prdfini est "OK". Au dbut de l'excution d'un programme, le drapeau OK a la valeur TRUE. Des instructions S7-SCL permettent de l'interroger un endroit quelconque du bloc ou de lui donner la valeur TRUE / FALSE. Si une erreur se produit durant l'excution d'une opration (par exemple une division par zro), le drapeau OK prend la valeur FALSE. Lorsque vous quittez le bloc, la valeur du drapeau OK est enregistre dans le paramtre de sortie ENO o elle peut tre exploite par le bloc appelant.
Dclaration
Le drapeau OK est une variable dclare dans le systme. Il n'est donc pas ncessaire de la dclarer. Si vous souhaitez vous en servir dans votre programme utilisateur, vous devez cocher l'option de compilation "Activer drapeau OK" avant d'effectuer la compilation.
Exemple
// Mettre le drapeau OK sur TRUE, // afin de pouvoir vrifier // que l'action se droule correctement. OK:= TRUE; Division:= 1 / IN; IF OK THEN // La division a t excute correctement. // : // : ELSE // La division a t excute avec une erreur. // : END_IF;
8-8
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.
8-9
8.8.2
Variables statiques
Les variables statiques sont des variables locales dont la valeur reste la mme durant toutes les excutions d'un bloc (mmoire du bloc). Elles servent stocker les valeurs d'un bloc fonctionnel et sont enregistres dans un bloc de donnes d'instance associ.
Syntaxe
Les variables statiques sont dclares dans la section de dclaration VAR / END_VAR. Cette section fait partie de la section de dclaration du FB. Aprs la compilation, c'est cette section qui, avec les sections pour les paramtres de bloc, dterminera la composition du bloc de donnes d'instance associ. Vous pouvez : Y crer des variables, affecter aux variables des types de donnes ainsi que des valeurs initiales ou dclarer en tant que variable statique un FB appeler si vous souhaitez l'appeler comme instance locale dans le FB actif.
Section de variables statiques
Exemple
VAR PASSAGE TABLEAU_MESURE COMMUTATEUR MOTEUR_1,MOTEUR_2 END_VAR
Adressage
L'adressage des variables s'effectue dans la section des instructions. Adressage au sein du bloc : vous pouvez adresser une variable dans la section des instructions du bloc fonctionnel dont la section de dclaration contient la dclaration de cette variable. La marche suivre est explique avec prcision dans la rubrique "Affectation de valeur". Adressage depuis l'extrieur par le DB d'instance : vous pouvez adresser une variable depuis d'autres blocs au moyen d'un adressage index, par ex. DBx.variable.
8-10
8.8.3
Variables temporaires
Les variables temporaires appartiennent localement un bloc de code et n'occupent aucune zone de mmoire statique. Elles sont stockes dans la pile de la CPU. Leur valeur ne reste la mme que durant une excution du bloc. Il n'est pas possible d'adresser les variables temporaires en dehors du bloc dans lequel elles ont t dclares. Au dbut de l'excution d'un OB, d'un FB ou d'une FC, la valeur des donnes temporaires n'est pas dfinie. L'initialisation n'est pas possible. Dclarez des donnes comme temporaires lorsque vous en avez besoin seulement pour y enregistrer des rsultats intermdiaires lors du traitement de votre OB, FB ou FC.
Syntaxe
La dclaration des variables temporaires s'effectue dans la section de dclaration VAR_TEMP / END_VAR. Cette section fait partie d'un FB, d'une FC ou d'un OB. Le nom de la variable et son type de donnes sont indiqus dans la dclaration de la variable.
VAR_TEMP
Dclaration de la variable
END_VAR
Exemple
VAR_TEMP TAMPON 1 : ARRAY [1..10] OF INT ; AIDE1, AIDE2 : REAL; END_VAR
Adressage
L'adressage de ces variables s'effectue toujours dans la section des instructions du bloc de code dont la section de dclaration contient la dclaration de la variable (adressage interne), voir la rubrique "Affectation de valeur".
8-11
8.8.4
Paramtres de bloc
Les paramtres de bloc servent rserver de la place et ne sont dtermins que lors de l'utilisation concrte du bloc (appel). Ceux qui sont dclars dans le bloc sont appels paramtres formels, les valeurs qui leur sont affectes l'appel du bloc sont appeles paramtres effectifs. Ainsi, les paramtres constituent un mcanisme d'change d'informations entre les blocs.
Syntaxe
Les paramtres formels doivent tre dclars dans la section de dclaration d'un bloc fonctionnel ou d'une fonction. Suivant le type de paramtre, ils sont dclars dans l'une des trois sections de dclaration des paramtres. Vous dterminez leur nom et leur type de donnes dans la dclaration des variables. Seuls les paramtres d'entre et les paramtres de sortie d'un FB peuvent tre initialiss. Pour la dclaration des paramtres formels, vous pouvez non seulement utiliser des types de donnes simples, complexes et utilisateur, mais galement des types de donnes pour paramtre.
Section des paramtres
VAR_INPUT VAR_OUTPUT Dclaration de la variable
END_VAR
8-12
Exemple
VAR_INPUT // Paramtre d'entre MON_DB : BLOCK_DB ; REGULATEUR : DWORD ; HEURE_DU_JOUR : TIME_OF_DAY ; END_VAR VAR_OUTPUT // Paramtre de sortie CONSIGNES: ARRAY [1..10] of INT ; END_VAR VAR_IN_OUT // Paramtre d'entre/sortie REGLAGE : INT ; END_VAR
Adressage
L'adressage des paramtres de bloc s'effectue dans la section des instructions d'un bloc de code. Adressage interne : c'est--dire dans la section des instructions du bloc dont la section de dclaration contient la dclaration des paramtres. Ceci est expliqu la rubrique "Affectations de valeur" et la rubrique " "Expressions, oprations et oprandes". Adressage depuis l'extrieur par DB d'instance : vous pouvez adresser les paramtres d'un bloc fonctionnel par l'intermdiaire du DB d'instance associ.
8-13
8-14
9.1
Constantes
Les constantes sont des donnes possdant une valeur fixe qui ne varie pas durant l'excution du programme. S7-SCL connat les catgories suivantes de constantes. Constantes binaires Constantes numriques : Constantes entires Constantes relles
Constantes temporelles : Constantes de date Constantes de dure Constantes d'heure du jour Constantes de date et heure
9-1
9.1.1
Syntaxe
Section des constantes
CONST
:=
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
9.1.2
Le type de donnes affect une constante est celui dont la plage de valeurs suffit juste encore prendre en charge la constante sans perte de valeur. Par exemple, la constante "12345" n'est pas toujours du type INT comme dans LIST, mais elle fait partie de la classe de types de donnes ANY_NUM, c'est--dire qu'elle sera INT, DINT ou REAL suivant l'emploi.
Constantes types
La notation type des constantes vous permet d'indiquer aussi explicitement un type de donnes pour les types numriques suivants. Exemples :
Type de donnes 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
9-3
9.1.3
BYTE
8 bits (1 caractre ASCII) 254 caractres ASCII maximum Nombre hexadcimal de 16 bits
9-4
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
DINT
L#-2147483648 L#+2147483647
REAL
S5TIME
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
DATE TIME_OF_DAY
9-5
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#
_ Caractre de soulignement
Exemple
Les exemples suivants montrent des notations correctes de constantes binaires : Bool#false 8#177777 DW#16#0000_0000
9-6
Syntaxe
CONSTANTE ENTIERE
INT# DINT# + SUITE DE CHIFFRES DECIMAUX SUITE DE CHIFFRES OCTAUX SUITE DE CHIFFRES HEXA SUITE DE CHIFFRES BINAIRES CARACTERES (1)
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
9-7
Syntaxe
CONSTANTE REELLE
SUITE DE CHIFFRE DECIMAUX . SUITE DE CHIFFRE DECIMAUX
+ REAL# -
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
Syntaxe
CONSTANTE SUR CARACTERE
CHAR#
' Caractre '
Exemple
Caractre_1 := 'B'; Caractre_2 := char#43; Caractre_3 := char#'B';
9-9
Syntaxe du caractre
Il peut provenir du jeu tendu complet de caractres ASCII. Pour saisir un caractre de mise en forme spcial, une apostrophe (') ou le caractre $, placez devant le caractre $. Vous pouvez galement utiliser des caractres non imprimables du jeu de caractres ASCII tendu. Il vous suffit pour cela d'indiquer leur reprsentation en code hexadcimal.
Exemple de caractre en code hexadcimal : CARACTERE Espace := '$41' ; :='$20'; //quivaut au caractre 'A' //quivaut au caractre _
| |
9-10
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.
9-11
$<
Exemples
// Constante sur chane: NOM:= 'SIEMENS'; //Interruption d'une constante sur chane MESSAGE1:= 'MOTEUR- $> $< Commande'; // Chane en reprsentation hexadcimale: MESSAGE1:= '$41$4E' (*suite de caractres AN*);
9-12
Syntaxe
Indication de la date
SUITE DE CHIFFRES DECIMAUX Anne SUITE DE CHIFFRES DECIMAUX Mois SUITE DE CHIFFRES DECIMAUX Jour
Exemple
VARIABLE_TEMPS1:= DATE#1995-11-11 ; VARIABLE_TEMPS2:= D#1995-05-05 ;
Syntaxe
Dure
TIME# Reprsentation dcimale
T#
Reprsentation dcimale
-Chaque unit de temps (heures, minutes) ne doit tre indique qu'une seule fois -L'ordre - jours, heures, minutes, secondes, millisecondes - doit tre respect
Passer de la reprsentation par niveaux la reprsentation dcimale n'est possible que tant que les units horaires ne sont pas encore indiques. Aprs les prfixes introductifs T# ou TIME#, vous devez indiquer au moins une unit horaire.
9-13
Reprsentation dcimale
Utilisez la reprsentation dcimale si vous souhaitez indiquer sous forme de nombre dcimal un composant horaire, comme par exemple les heures ou les minutes.
Reprsentation dcimale
SUITE DE CHIFFRES DECIMAUX . SUITE DE CHIFFRES DECIMAUX D Jours
Heures
Minutes M
Secondes
MS
Millisecondes
Pour passer la reprsentation dcimale, il faut que les units temporelles n'aient pas encore t dfinies
9-14
Jours
Heures
Minutes
Secondes
MS
Millisecondes
Exemple
// Reprsentation dcimale Intervalle1:= TIME#10.5S ; // Reprsentation par niveaux Intervalle2:= T#3D_2S_3MS ; // Reprsentation par niveaux et dcimale Intervalle3 := T#2D_2.3s ;
9-15
Syntaxe
Heure du jour
TIME_OF_DAY# Indication de l'heure du jour TOD#
Pour indiquer l'heure du jour, vous entrez les heures, minutes et secondes spares par deux-points. L'indication des millisecondes est facultative. Elle est spare des autres par un point.
Exemple
HEURE1:= TIME_OF_DAY#12:12:12.2 ; HEURE2:= TOD#11:11:11 ;
9-16
Syntaxe
Date et heure
DATE_AND_TIME# Indication de la date 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
Exemple
HEURE1:= DATE_AND_TIME#1995-01-01-12:12:12.2 ; HEURE2:= DT#1995-02-02-11:11:11;
9-17
9.2
Syntaxe
Section de dclaration des repres de saut
LABEL
END_LABEL
Exemple
LABEL REPERE1, REPERE2, REPERE3; END_LABEL
9-18
10
Donnes globales
10.1
10-1
Donnes globales
10.2
Syntaxe de l'adressage
Vous adressez une zone de mmoire de la CPU dans une affectation de valeur ralise dans la section des instructions d'un bloc de code par : Adressage simple indiqu de manire absolue ou symbolique, ou adressage index.
Adressage simple de la mmoire
IDENTIFICATEUR D'OPERANDE Adresse Adressage absolu IDENTIFICATEUR
Mnmonique
Adressage symbolique
IDENTIFICATEUR D'OPERANDE
10-2
Donnes globales
L'identificateur absolu renvoie une zone de mmoire dans la CPU que vous spcifiez en indiquant l'identificateur d'oprande (EB dans notre exemple) suivi de l'adresse (ici 10).
Prfixe de 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
Abrviations anglaises
Selon le jeu d'abrviations slectionn, la signification des identificateurs d'oprandes allemands ou anglais est rserve.
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
Exemples
OCTET_ETAT :=EB10; ETAT_3 :=E1.1; VAL_MESURE :=EW20;
10-4
Donnes globales
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 ;
10-5
Donnes globales
E X [i,j]
Adresse
Expression de base
Identificateur d'oprande
Prfixe de mmoire
Prfixe de taille
Expression de base
, Indice
Expression de base
Identificateur d'oprande
Exemple
VAL_MESURE_1 REPERE :=EW[COMPTEUR]; :=E[NOCTET, NBIT];
10-6
Donnes globales
10.3
Blocs de donnes
Adressage
Il y a plusieurs faons d'adresser les donnes d'un bloc de donnes global : Adressage absolu ou simple, Adressage structur , Adressage index.
Adressage absolu d'un DB
Identificateur d'oprande Adresse
Identificateur d'oprande
Identificateur d'oprande
Mnmonique d'un DB
10-7
Donnes globales
ETAT_5:= DB11.DX13.1;
Adresse Prfixe de taille Dsignation du DB Variable de mme type
Syntaxe
Vous spcifiez l'adressage en indiquant la dsignation du DB, suivie du prfixe de taille et de l'adresse.
Adressage absolu d'un DB
Identificateur d'oprande DESIGNATION DU DB Prfixe de taille
Adresse
Prfixe de taille
Le prfixe de taille indique la longueur de la zone de mmoire qui doit tre adresse dans le bloc de donnes. Vous pouvez par exemple lire un octet ou un mot du DB. Si vous ne souhaitez spcifier qu'un bit, l'indication du prfixe de taille est facultative.
Prfixe de taille
X B W D Bit Octet Mot Double mot
10-8
Donnes globales
Adresse
Pour prciser l'adresse, vous devez d'abord indiquer l'adresse d'octet absolue, puis spare par un point, l'adresse de bit de l'octet concern (uniquement en cas d'adressage binaire).
Adresse
Numro
Numro
Exemple
Voici quelques exemples d'adressage absolu d'un bloc de donnes. Le bloc de donnes luimme est indiqu de manire absolue dans la premire partie et de manire symbolique dans la seconde : OCTET_ETAT :=DB101.DB10; ETAT_3 :=DB30.D1.1; VAL_MESURE :=DB25.DW20; OCTET_ETAT :=Donnees_etat.DB10; ETAT_3 :="Nouvelles_donnees".D1.1; VAL_MESURE :=Donnees_mesure.DW20.DW20; ETAT_1 :=WORD_TO_BLOCK_DB (INDICE).DW10;
10-9
Donnes globales
Prfixe de taille
Prfixe de mmoire
Dsignation du DB.
D X [i,j]
Adresse
Expression de base comme indice, indique entre crochets
Identificateur d'oprande
Syntaxe
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
Donnes globales
Syntaxe
IDENTIFICATION DU DB
Variable simple
Ce faisant, la variable simple reprsente une variable laquelle vous avez affect un type de donnes simple ou complexe lors de la dclaration du DB. L'utilisation, pour introduire l'adressage d'un bloc de donnes, d'un paramtre de type BLOCK_DB ou du rsultat de la fonction de conversion WORD_TO_BLOCk_DB ne permet pas l'adressage structur, mais seulement l'adressage absolu ou index.
Exemple
Dans la section de dclaration du FB10 : VAR Rsultat : STRUCT RES1 : INT; RES2 : WORD; END_STRUCT END_VAR Type de donnes utilisateur UDT1 TYPE UDT1 STRUCT RES1 : INT; RES2 : WORD; END_STRUCT DB20 avec type de donnes utilisateur : DB20 UDT1 BEGIN ... DB30 sans type de donnes utilisateur : DB30 STRUCT RES1 : INT; RES2 : WORD; END_STRUCT BEGIN ... Bloc fonctionnel .. FB10.DB10(); MOT_RES_A := MOT_RES_B := MOT_RES_C := avec les adressages :
10-11
Donnes globales
10-12
11
11.1
Oprations
Une expression se compose d'oprations et d'oprandes. La plupart des oprations de S7-SCL combinent deux oprandes et sont par suite qualifies de binaires. Les autres oprations n'utilisant qu'un oprande sont des oprations unaires. Une opration binaire s'crit entre les oprandes (par exemple A + B). Une opration unaire prcde immdiatement son oprande (par exemple -B). C'est la priorit des oprations, indique dans le tableau suivant, qui dtermine l'ordre de calcul. Le chiffre "1" correspond la priorit la plus leve.
Classe Opration 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 :
4 4 4 4 5 5 6 6 6 6 7 7 3
8 9 10 1
11-1
11.2
Oprandes
Les oprandes sont des objets avec lesquels vous pouvez former une expression. Voici les lments autoriss pour former des oprandes :
Oprande
Constante Variable tendue
(Expression)
NOT
Oprande
Constantes
Vous pouvez utiliser des constantes sous forme de valeur numrique, de mnmonique ou de chane de caractres.
Constante
Valeur numrique
Chane de caractres
Mnmonique
Voici des exemples de constantes autorises : 4_711 4711 30.0 'CARACTERE' FACTEUR
11-2
Variable tendue
Variable tendue est un terme gnrique dsignant une srie de variables qui sont traites plus en dtail au chapitre "Affectations de valeur".
Variable tendue
Variable simple Variable absolue pour les zones de mmoire de la CPU Variable dans un DB
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.
11-3
11.3
Syntaxe
Expression
Oprande Oprations logiques de base
Expression
Expression
Oprations de comparaison
+ NOT
Ordre de calcul
L'ordre de calcul de l'expression est dtermin par : Lapriorit des oprations prsentes ; Leur position de gauche droite ; Les parenthses utilises dans le cas d'oprations de mme priorit.
11-4
Rgles
Les rgles suivantes s'appliquent la rsolution des expressions : Un oprande plac entre deux oprations de priorits diffrentes est toujours li celle qui a la plus haute priorit. Les oprations sont traites dans l'ordre hirarchique. Les oprations de mme priorit sont traites de gauche droite. Faire prcder un identificateur d'un signe moins quivaut le multiplier par -1. Les oprations arithmtiques ne peuvent pas venir immdiatement la suite l'une de l'autre. Ainsi l'expression a * - b n'est pas autorise, par contre a*(-b) l'est. L'utilisation de parenthses peut annuler la priorit entre des oprations, car les parenthses possdent la priorit la plus leve. Les expressions entre parenthses sont considres comme des oprandes uniques et sont toujours traites en premier. Le nombre de parenthses d'ouverture doit tre quivalent celui des parenthses de fermeture. Les oprations arithmtiques ne peuvent s'appliquer des caractres ou des donnes logiques. Ainsi des expressions telles 'A' + 'B' et (n<=0) + (m>0) sont incorrectes.
Exemples d'expressions
EB10 A1 AND (A2) (A3) < (A4) 3+3*4/2 // // // // oprande expression logique expression de comparaison expression arithmtique
11-5
11.4
Expression simple
Dans S7-SCL, on entend par expression simple une expression arithmtique simple. Vous pouvez multiplier ou diviser des valeurs constantes deux par deux, puis combiner ces couples par addition ou soustraction.
Multiplication simple
* /
DIV MOD
Exemple :
EXPRESSION_SIMPLE= A * B + D / C - 3 * VALEUR1;
11-6
11.5
Expressions arithmtiques
Il s'agit d'expressions formes d'oprations arithmtiques. Elles permettent de traiter des types de donnes numriques. Le tableau ci-aprs regroupe les oprations possibles et indique quel type il faut associer le rsultat, en fonction des oprandes utiliss. Nous employons les abrviations suivantes :
ANY_INT 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
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
Nota Le type de donnes du rsultat d'une division (/) est dtermin par le type de donnes de l'oprande de poids le plus lev. Si p. ex. deux oprandes du type de donnes INT sont diviss, le rsultat est galement du type de donnes INT (c'est--dire 10/3=3 correspond 10.0/3=3.33).
11-7
Rgles
L'ordre de traitement des oprations dans une expression arithmtique est fonction de leur priorit. Pour une meilleure lisibilit, il est recommand d'indiquer les nombres ngatifs entre parenthses, mme lorsque cela n'est pas indispensable. Pour les divisions avec deux oprandes entiers de type INT, les oprations "DIV" et "/" fournissent le mme rsultat (voir l'exemple ci-aprs). Pour les oprations de division "/", "MOD" et "DIV", le second oprande doit tre diffrent de zro. Lorsque l'un des oprandes est du type INT (entier) et le second du type REAL (nombre virgule flottante), le rsultat est toujours du type REAL. Pour la soustraction de donns du type DATE_AND_TIME et TIME, l'oprande avec le type de donnes TIME doit toujours se trouver droite de l'oprateur "-".
Exemples
// Le rsultat (11) de l'expression arithmtique // est affect la variable "VALEUR" VALEUR1 := 3 + 3 * 4 / 2 - (7+3) / (-5) ; // La VALEUR de l'expression suivante est 1 VALEUR2 := 9 MOD 2 ;
11-8
11.6
Expressions logiques
Il s'agit d'une expression forme d'oprations logiques.
AND
&
XOR
OR
Oprations logiques
Le rsultat de l'expression est soit TRUE ou FALSE lorsque vous combinez des oprandes boolens, soit un profil binaire aprs combinaison binaire des deux oprandes. Le tableau ci-aprs indique les expressions logiques disponibles ainsi que le type de donnes du rsultat et des oprandes. Nous employons l'abrviation suivante :
ANY_BIT pour les types de donnes BOOL, BYTE, WORD, DWORD
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.
11-9
Exemples
// Inversion du rsultat de l'expression de comparaison IF NOT (COMPTEUR > 5) THEN . . . ; // Inversion du rsultat de la premire expression de comparaison et // intersection avec le rsultat de la seconde expression A := NOT (COMPTEUR1 = 4) AND (COMPTEUR2 = 10) ; // Runion de deux expressions de comparaison WHILE (A >= 9) OR (INTERROGATION <> "n") DO.... ; // Masquage d'un octet d'entre (combinaison binaire) Rsultat := EB10 AND 2#11110000 ;
11-10
11.7
Expressions de comparaison
Les oprations de comparaison comparent les valeurs de deux oprandes et fournissent une valeur boolenne. Si la comparaison s'avre juste, le rsultat est TRUE, dans le cas contraire il est FALSE.
Syntaxe
Opration de comparaison
<
>
<=
>=
<>
Rgles
Le tableau suivant indique les types de donnes comparables ainsi que les rgles appliquer pour la comparaison :
Type de donnes 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
11-11
<>
>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
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
Exemples
// Comparaison 3 INFERIEUR OU EGAL A 4. Le rsultat // est "TRUE" A := 3 <= 4 // Comparaison 7 DIFFERENT DE 7. Le rsultat // est "FALSE" 7 <> 7 // Rsolution d'une expression de comparaison dans // un aiguillage IF IF COMPTEUR < 5 THEN .... // Combinaison de deux expressions de comparaison Valeur_A > 20 AND Valeur_B < 20 // Combinaison de deux expressions de comparaison avec // des parenthses A<>(B AND C)
11-13
11-14
12
Instructions
12.1
Affectations de valeur
Une affectation de valeur remplace la valeur momentane d'une variable par une nouvelle valeur, indique sous forme d'expression. Cette expression peut aussi contenir des identificateurs de fonctions qui s'en trouvent actives et fournissent des valeurs correspondantes (valeurs de retour). Conformment la figure ci-dessous, l'expression figurant dans la partie droite de l'affectation de valeur est value et le rsultat est mmoris dans la variable dont le nom figure gauche du signe d'affectation. Les variables autorises sont indiques dans la figure suivante.
Variable simple Variable absolue Dans zones de mmoire CPU Variable dans DB
:=
Expression
Le type d'une expression d'affectation est celui de l'oprande de gauche. La variable simple peut tre d'un type de donnes simple ou complexe.
12-1
Instructions
12.1.1
Exemple
FUNCTION_BLOCK FB12 VAR COMMUTATEUR_1 : INT ; COMMUTATEUR_2 : INT ; CONSIGNE_1 : REAL ; CONSIGNE_2 : REAL ; INTERROG_1 : BOOL ; DUREE_1 : S5TIME ; DUREE_2 : TIME ; DATE_1 : DATE ; HEURE_DU_JOUR_1 : TIME_OF_DAY ; END_VAR BEGIN // Affectation d'une constante une variable COMMUTATEUR_1 := -17 ; CONSIGNE_1 := 100.1 ; INTERROG_1 := TRUE ; DUREE_1 := T#1H_20M_10S_30MS ; DUREE_2 := T#2D_1H_20M_10S_30MS ; DATE_1 := D#1996-01-10 ; // Affectation d'une variable une autre variable CONSIGNE_1 := CONSIGNE_2 ; COMMUTATEUR_2 := COMMUTATEUR_1 ; // Affectation d'une expression une variable COMMUTATEUR_2 := COMMUTATEUR_1 * 3 ; END_FUNCTION_BLOCK
12-2
Instructions
12-3
Instructions
Exemple
FUNCTION_BLOCK FB3 VAR VAR_AUX : REAL ; VALEUR_MESURE : STRUCT
[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
Instructions
12-5
Instructions
Exemple
FUNCTION_BLOCK FB3 VAR CONSIGNES : ARRAY [0..127] OF INT ; VALEURS_EFFECTIVES : ARRAY [0..127] OF INT ; //Dclaration d'une matrice (=tableau bidimensionnel) //comportant 3 lignes et 4 colonnes REGULATEUR : ARRAY [1..3, 1..4] OF INT ; //Dclaration d'un vecteur (=tableau unidimensionnel) // 4 composants REGULATEUR_1 : ARRAY [1..4] OF INT ; END_VAR BEGIN //Affectation d'un tableau complet un autre tableau CONSIGNES := VALEURS_EFFECTIVES ; //Affectation d'un vecteur la deuxime ligne //du tableau REGULATEUR REGULATEUR[2] := REGULATEUR_1 ; //Affectation d'un composant de tableau un composant //du tableau REGULATEUR REGULATEUR[1,4] := REGULATEUR_1 [4] ; END_FUNCTION_BLOCK
12-6
Instructions
Exemple
FUNCTION_BLOCK FB3 VAR AFFICHAGE_1 : STRING[50] ; STRUCTURE1 : STRUCT AFFICHAGE_2 : STRING[100] ; AFFICHAGE_3 : STRING[50] ; END_STRUCT ; END_VAR BEGIN // Affectation d'une constante une variable de type STRING AFFICHAGE_1 := 'Erreur dans le module 1' ; // Affectation d'un composant de structure une variable // de type STRING. AFFICHAGE_1 := STRUCTURE1.AFFICHAGE_3 ; // Affectation d'une variable STRING une autre variable // de type STRING If AFFICHAGE_1 <> STRUCTURE1.AFFICHAGE_3 THEN AFFICHAGE_1 := STRUCTURE1.AFFICHAGE_3 ; END_IF; END_FUNCTION_BLOCK
12-7
Instructions
Exemple
FUNCTION_BLOCK FB3 VAR DUREE_1 : DATE_AND_TIME ; STRUCTURE1 : STRUCT DUREE_2 : DATE_AND_TIME ; DUREE_3 : DATE_AND_TIME ; END_STRUCT ; END_VAR BEGIN // Affectation d'une constante une variable de type DATE_AND_TIME DUREE_1 := DATE_AND_TIME#1995-01-01-12:12:12.2 ; STRUCTURE1.DUREE_3 := DT#1995-02-02-11:11:11 ; // Affectation d'un composant de structure une variable // de type DATE_AND_TIME DUREE_1 := STRUCTURE1.DUREE_2 ; // Affectation d'une variable DATE_AND_TIME une // autre variable DATE_AND_TIME If DUREE_1 < STRUCTURE1.DUREE_3 THEN DUREE_1 := STRUCTURE1.DUREE_3 ; END_IF ; END_FUNCTION_BLOCK
12-8
Instructions
12.1.6
Variable absolue
Identificateur d'oprande Prfixe de mmoire Prfixe de taille Adresse
Exemple
FUNCTION_BLOCK FB3 VAR MOT_ETAT1 : WORD ; MOT_ETAT2 : BOOL ; MOT_ETAT3 : BYTE ; MOT_ETAT4 : BOOL ; ADRESSE : INT ; END_VAR BEGIN ADRESSE := 10 ; // Affectation d'un mot d'entre une variable (adressage simple) MOT_ETAT1 := EW4 ; // Affectation d'une variable un bit de sortie (adressage simple) a1.1 := MOT_ETAT2 ; // Affectation d'un octet d'entre une variable (adressage index) MOT_ETAT3 := EB[ADRESSE] ; // Affectation d'un bit d'entre une variable (adressage index) FOR ADRESSE := 0 TO 7 BY 1 DO MOT_ETAT4 := e[1, ADRESSE] ; END_FOR ; END_FUNCTION_BLOCK
12-9
Instructions
12.1.7
Syntaxe de la variable de DB
Variable de DB
Identificateur d'oprande DESIGNATION DU DB . D Prfixe de taille Adresse
12-10
Instructions
Exemple
FUNCTION_BLOCK FB3 VAR REGULATEUR_1 : ARRAY [1..4] OF INT ; MOT_ETAT1 : WORD ; MOT_ETAT2 : ARRAY [0..10] OF WORD ; MOT_ETAT3 : INT ; MOT_ETAT4 : WORD ; ADRESSE : INT ; END_VAR VAR_INPUT MOT_ADRESSE : WORD ; END_VAR BEGIN // Affectation du mot 1 du DB11 // une variable (adressage simple) MOT_ETAT1 := DB11.DW1 ; // La valeur de la variable "NOMBRE" est affecte // le composant de la 1re ligne et de la 1re // colonne de la matrice (adressage structur) : REGULATEUR_1[1] := DB11.CHIFFRE; // Affectation du composant "NOMBRE2" // de la structure "NOMBRE1" la variable MOT_ETAT3 MOT_ETAT3 := DB11.NOMBRE1.NOMBRE2 ; // Affectation d'un mot du DB11 avec adresse indexe // une variable (adressage index) FOR ADRESSE := 1 TO 10 BY 1 DO MOT_ETAT2[ADRESSE] := DB11.DW[ADRESSE] ; // Le paramtre d'entre MOT_ADRESSE est utilis ici // comme numro du DB et l'indice ADRESSE // pour indiquer l'adresse du mot dans le DB MOT_ETAT4 := WORD_TO_BLOCK_DB(MOT_ADRESSE).DW[ADRESSE] ; END_FOR ; END_FUNCTION_BLOCK
12-11
Instructions
12.2
Instructions de contrle
Instructions de slection
Une instruction de slection vous permet d'aiguiller le droulement du programme vers diffrentes squences d'instructions en fonction de conditions.
Type de branchement 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.
12-12
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)
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
ELSIF
Expression Condition
THEN
ELSE
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
Instructions
Exemple
IF E1.1 THEN N := 0 ; SOMME := 0 ; OK := FALSE ; // Attribuer la valeur FALSE au drapeau OK ELSIF START = TRUE THEN N := N + 1 ; SOMME := SOMME + N ; ELSE OK := FALSE ; END_IF ;
12-15
Instructions
Syntaxe
Instruction CASE
Expression de slection (entier) CASE Expression Valeur OF
Liste de valeurs
ELSE
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
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
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;
12-17
Instructions
Syntaxe
Instruction FOR
Affectation initiale pour la valeur initiale Expression de base pour la valeur terminale
FOR
TO
BY
DO
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
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
:=
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.
12-19
Instructions
Exemple
FUNCTION_BLOCK FOR_BSP VAR INDICE: INT ; MOT_CLE: ARRAY [1..50] OF STRING; END_VAR BEGIN FOR INDICE := 1 TO 50 BY 2 DO IF MOT_CLE [INDICE] = 'CLE' THEN EXIT; END_IF; END_FOR; END_FUNCTION_BLOCK
12-20
Instructions
Syntaxe
Instruction WHILE
WHILE
DO
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
12-21
Instructions
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
Instructions
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
12-23
Instructions
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
: : : :
BEGIN INDICE_2 := 0 ; FOR INDICE_1 := 1 TO 51 BY 2 DO // Quitter la boucle FOR si // MOT_CLE[INDICE_1] est gal 'CLE' IF MOT_CLE[INDICE_1] = 'CLE' THEN INDICE_2 := INDICE_1 ; EXIT ; END_IF ; END_FOR ; // L'affectation de valeur suivante est excute // aprs l'excution de l'instruction EXIT ou // aprs la fin normale de la boucle FOR : INDICE_CHERCHE := INDICE_2 ; END_FUNCTION_BLOCK
12-24
Instructions
Syntaxe
Branchement de programme
GOTO IDENTIFICATEUR Repre de saut
"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: // . . .
12-25
Instructions
Syntaxe
Instruction RETURN
RETURN
Nota A la fin de la section d'excution d'un bloc de code ou de la section de dclaration d'un bloc de donnes, l'instruction RETURN serait redondante puisqu'elle est excute automatiquement.
12-26
Instructions
12.3
Appel de FC et FB
Afin d'assurer une meilleure lisibilit et une maintenance plus aise des programmes utilisateur, il est usuel de diviser l'ensemble des fonctions d'un programme en tches partielles, ralises par des blocs fonctionnels (FB) et des fonctions (FC). Dans un bloc S7-SCL, vous avez galement la possibilit d'appeler d'autres FC ou FB, savoir : les blocs fonctionnels et fonctions crs dans S7-SCL, les blocs fonctionnels et fonctions crs dans d'autres langages de programmation de STEP 7 (CONT, LOG, LIST), des fonctions systme (SFC) et blocs fonctionnels systme (SFB), disponibles dans le systme d'exploitation de votre CPU.
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).
12-28
Instructions
12.3.2
Syntaxe
Appel d 'un FB
FB : bloc fonctionnel SFB : bloc fonctionnel systme
DESIGNATION DU FB
IDENTIFICATEUR
12-29
Instructions
12-30
Instructions
Affectation de l'entre/sortie
Pour dfinir un paramtre, vous devez tenir compte des rgles suivantes : L'ordre des affectations est quelconque. Les types de donnes paramtre formel et paramtre effectif doivent tre identiques. Chaque affectation est spare de la prcdente par une virgule. Affecter des valeurs aux sorties n'est pas possible dans un appel de FB. La valeur d'un paramtre de sortie que vous avez dclar est enregistre dans les donnes d'instance o elle peut tre adresse par tous les FB. Pour la lire, vous devez dfinir son adressage partir d'un FB. Tenez compte des particularits des paramtres de type de donnes ANY et de type de donnes POINTER.
12-31
Instructions
Exemple
Voici un exemple d'appel avec dfinition d'un paramtre d'entre et d'un paramtre d'entre/sortie : FB31.DB77(Par_E:=3, Par_ES:=LONGUEUR);
12-32
Instructions
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
12-33
Instructions
Variable tendue
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
:=
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
Instructions
Exemple
RESULTAT := DB10.CONTROLE ;
Bloc fonctionnel
FUNCTION_BLOCK TEST VAR_INPUT VALEUR_FINALE: INT; END_VAR VAR_IN_OUT IQ1 : REAL; END_VAR VAR_OUTPUT CONTROLE: BOOL; END_VAR VAR INDICE: INT; END_VAR 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
12-35
Instructions
Appel
Vous pouvez appeler ce FB de l'une des faons suivantes. On suppose que VARIABLE1 a t dclare comme variable de type REAL dans le bloc appelant. //Appel absolu, instance globale : FB17.DB10 (VALEUR_FINALE:=10, IQ1:=VARIABLE1); //Appel symbolique, instance globale : TEST.TEST_1 (VALEUR_FINALE:= 10, IQ1:= VARIABLE1) ;
Rsultat
Une fois le bloc excut, la valeur fournie pour le paramtre d'entre/sortie IQ1 est disponible dans la VARIABLE1.
12-36
Instructions
Appel
FUNCTION_BLOCK CALL VAR // Dclaration d'instance locale TEST_L : TEST ; VARIABLE1 : REAL ; RESULTAT : BOOL ; END_VAR BEGIN . . . // Appel, instance locale : TEST_L (VALEUR_FINALE:= 10, IQ1:= VARIABLE1) ;
12-37
Instructions
12.3.3
Appel de fonctions
Aprs l'appel, les rsultats de la fonction sont disponibles comme valeurs de retour ou comme paramtres de sortie et d'entre/sortie (paramtres effectifs).
Syntaxe
Appel de fonction
DESIGNATION DE LA FC
DESIGNATION DE LA SFC
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
Instructions
Nota
Avec les fonctions dont la valeur de retour est du type ANY, il faut qu'un paramtre d'entre ou d'entre/sortie au moins soit aussi du type ANY. Si vous avez dfini plusieurs paramtres ANY, vous devez leur affecter des paramtres effectifs de la mme classe (par exemple INT, DINT et REAL). La valeur de retour est alors automatiquement du plus grand type de donnes utilis dans cette classe. La longueur maximale du type de donnes STRING peut tre rduite de 254 caractres un nombre de caractres quelconque.
12-39
Instructions
12.3.3.3 Paramtres de FC
Contrairement aux blocs fonctionnels, les fonctions n'ont pas de mmoire o enregistrer les valeurs des paramtres. Les donnes locales ne sont enregistres que temporairement durant l'excution de la fonction. C'est la raison pour laquelle, lorsque vous appelez une fonction, vous devez affecter un paramtre effectif chaque paramtre formel d'entre, d'entre/sortie et de sortie que vous avez dclar dans la section de dclaration de la fonction.
Syntaxe
Paramtres d'une FC
Expression Affectation de l'entre Affectation de la sortie ou de l'entre/sortie ,
Rgles
Pour dfinir un paramtre, vous devez tenir compte des rgles suivantes : L'ordre des affectations est quelconque. Les types de donnes du paramtre formel et du paramtre effectif doivent tre identiques. Chaque affectation est spare de la prcdente par une virgule.
Exemple
Voici un exemple d'appel avec dfinition d'un paramtre d'entre, d'un paramtre de sortie et d'un paramtre d'entre/sortie : FC32 (Param_e1:=5,Param_es1:=LONGUEUR, Param_s1:=total_horizontal)
12-40
Instructions
Expression
Une expression reprsente une valeur et se compose d'oprandes et d'oprations. Voici les types d'expressions disponibles :
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.
12-41
Instructions
Variable tendue
Variable simple et paramtre Adressage de variable absolue Adressage de bloc de donnes Appel de fonction
Syntaxe
:=
12-42
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.
12-43
Instructions
Bloc appelant
Diverses possibilits s'offrent vous pour utiliser ultrieurement la valeur de la fonction : FUNCTION_BLOCK CALL VAR LONGUEUR : REAL ; TOTAL_HORIZONTAL : REAL ; RAYON : REAL; Y : REAL; END_VAR BEGIN . . . // Appel dans une affectation de valeur LONGUEUR := ECART (X1:=3, Y1:=2, X2:=8.9, Y2:= 7.4, Q2:=TOTAL_HORIZONTAL) ; //Appel dans une expression arithmtique ou logique, par exemple Y := RAYON + ECART (X1:=-3, Y1:=2, X2:=8.9, Y2:=7.4, Q2:=total_horizontal) //Utilisation dans la dfinition des paramtres d'un autre bloc appel FB32.DB32 (DISTANCE:= ECART (X1:=-3, Y1:=2, X2:=8.9, Y2:=7.4), Q2:=total_horizontal) . . . END_FUNCTION_BLOCK
12-44
Instructions
Nota La valeur de retour d'une fonction n'est pas dfinie si la fonction n'a pas t appele (EN : FALSE).
Exemple
FUNCTION_BLOCK FB57 VAR MON_ACTIVE: BOOL ; Rsultat : REAL; END_VAR // . . . BEGIN // . . . MON_ACTIVE:= FALSE ; // Appel d'une fonction avec dfinition du paramtre EN : Rsultat := FC85 (EN:= MON_ACTIVE, PAR_1:= 27) ; // FC85 n'a pas t excute, car MON_ACTIVE a t mis FALSE cidessus.... END_FUNCTION_BLOCK
12-45
Instructions
Exemple
// Appel d'un bloc fonctionnel : FB30.DB30 ([dfinition des paramtres]); // Vrification du droulement correct dans le bloc appel : IF ENO THEN // tout s'est droul correctement // . . . ELSE // une erreur est survenue et doit tre corrige // . . . END_IF;
12-46
13
Compteurs et temporisation
13.1
Compteurs
Compteur incrmental (Counter Up) Compteur dcrmental (Counter Down) Compteur incrmental/dcrmental (Counter Up Down)
13.1.2
13-1
Compteurs et temporisation
Exemples
//Exemple d'appel absolu : S_CUD (C_NO:=Z12, CD:=E0.0, CU:=E0.1, S:=E0.2 & E0.3, PV:=120, R:=FALSE, CV:=binVal, Q:=actFlag); //Exemple d'appel dynamique : un autre compteur est appel // chaque parcours d'une boucle FOR : FUNCTION_BLOCK COMPT VAR_INPUT Compt: ARRAY [1..4] of STRUCT C_NO: INT; PV : WORD; END_STRUCT; . . END_VAR . . FOR I:= 1 TO 4 DO S_CD(C_NO:=compt[I].C_NO, S:=true, PV:= compt[I].PV); END_FOR; //Exemple d'appel dynamique grce l'emploi d'une variable //du type de donnes COUNTER : FUNCTION_BLOCK COMPTEUR VAR_INPUT MonCompteur:COUNTER; END_VAR . . Val_cour:=S_CD (C_NO:=MonCompteur,.....);
Nota Les noms des fonctions et des paramtres sont les mmes dans les jeux d'abrviations allemand et anglais. Seule la dsignation du compteur dpend du jeu d'abrviations utilis (allemand : Z, anglais : C).
13-2
Compteurs et temporisation
C_NO 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.
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
Compteurs et temporisation
Format
La figure suivante donne la reprsentation de la valeur de comptage en bits :
15
14
13
12 11 10
X I X I X I X
0 I 0 I 0 I 1
0 I 0 I 1 I 0
0 I 1 I 1 I 1
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
13-5
Compteurs et temporisation
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.
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
Compteurs et temporisation
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.
C_NO CD S PV R Q CV
13-7
Compteurs et temporisation
Exemple
FUNCTION_BLOCK COMPTEUR VAR_INPUT MONCOMPTEUR : COUNTER ; END_VAR VAR_OUTPUT RESULTAT : INT ; END_VAR VAR INITIALISER : BOOL ; METTRE_0 : BOOL ; VAL_DCB : WORD ; // Etat du compteur cod DCB VAL_BIN : WORD ; // Etat du compteur binaire VAL_INITIALE : WORD ; END_VAR BEGIN A0.0 := 1 ; INITIALISER := E0.2 ; METTRE_0 := E0.3 ; VAL_INITIALE := 16#0089 ; //Dcrmenter VAL_DCB := S_CD (C_NO := MONCOMPTEUR, CD:= E0.0 , S := INITIALISER , PV:= VAL_INITIALE, R := METTRE_0 , CV:= VAL_BIN , Q := A0.7) ; //Traitement ultrieur en tant que paramtre de sortie RESULTAT := WORD_TO_INT (VAL_BIN) ; AW4 := VAL_DCB ; END_FUNCTION_BLOCK
13-8
Compteurs et temporisation
13.2
Temporisations
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
13-9
Compteurs et temporisation
Exemples
//Exemple d'appel absolu : CurrTime:=S_ODT (T_NO:=T10, S:=TRUE, TV:=T#1s, R:=FALSE, BI:=biVal, Q:=actFlag); //Exemple d'appel dynamique : une autre temporisation est appele // chaque parcours d'une boucle FOR : FUNCTION_BLOCK TEMPO VAR_INPUT MA_TEMPO: ARRAY [1..4] of STRUCT T_NO: INT; TV : WORD; END_STRUCT; . . END_VAR . . FOR I:= 1 TO 4 DO CurrTime:= S_ODT(T_NO:=MA_TEMPO[I].T_NO, S:=true, TV:= MA_TEMPO[I].TV); END_FOR; //Exemple d'appel dynamique grce l'emploi d'une variable //du type de donnes TIMER : FUNCTION_BLOCK TEMPORISATION VAR_INPUT maTempo:TIMER; END_VAR . . Tempo_cour:=S_ODT (T_NO:=maTempo,.....);
Nota Les noms des fonctions sont les mmes dans les jeux d'abrviations allemand et anglais.
13-10
Compteurs et temporisation
13.2.3
T_NO S TV R Q BI RET_VAL
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.
13-11
Compteurs et temporisation
Exemple
FUNCTION_BLOCK FB2 VAR Duree_cour : S5time; Val_bin : word; Drapeau_act : bool; END_VAR BEGIN Duree_cour :=S_ODT (T_NO:= T10, S:=TRUE, TV:=T#1s, R:=FALSE, BI:=Val_bin,Q:=Drapeau_act); Duree_cour :=S_ODTS (T_NO:= T11, S:=M0.0, TV:= T#1s, R:=M0.1, BI:=Val_bin,Q:=Drapeau_act); Duree_cour :=S_OFFDT(T_NO:= T12, S:=E0.1 & Drapeau_act, TV:= T#1s, R:=FALSE, BI:=Val_bin,Q:=Drapeau_act); Duree_cour :=S_PEXT (T_NO:= T13, S:=TRUE, TV:= T#1s, R:=E0.0, BI:=Val_bin,Q:=Drapeau_act); Duree_cour :=S_PULSE(T_NO:= T14, S:=TRUE, TV:= T#1s, R:=FALSE, BI:=Val_bin,Q:=Drapeau_act); END_FUNCTION_BLOCK
13-12
Compteurs et temporisation
Format
La figure suivante donne la reprsentation de la valeur de temps en bits :
15... 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
Saisie
Vous pouvez charger une valeur de temps prdfinie dans les formats suivants : En reprsentation par niveaux En reprsentation dcimale Dans les deux cas, la base de temps est adapte automatiquement et la valeur est arrondie au nombre infrieur le plus proche avec cette base de temps.
Exploitation
Vous pouvez exploiter le rsultat dans deux formats diffrents : Comme rsultat de la fonction (type S5TIME) en format DCB Comme paramtre de sortie (valeur de temps sans base de temps du type WORD) en binaire
13-13
Compteurs et temporisation
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
Compteurs et temporisation
Signal d'entre
E 2.1
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.
13-15
Compteurs et temporisation
13.2.6
Signal d'entre
E 2.1
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.
13-16
Compteurs et temporisation
Signal d'entre
E 2.1
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.
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.
Remettre la temporisation "0" Interroger l'tat logique Interroger la valeur de temps actuelle
13-18
Compteurs et temporisation
Signal d'entre
E 2.1
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
13-19
Compteurs et temporisation
13-20
Compteurs et temporisation
Signal d'entre
E 2.1
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 .
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 .
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
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 .
13-21
Compteurs et temporisation
13-22
14
14.1
14-1
ANY_BIT ANY_NUM
BOOL > BYTE > WORD > DWORD INT > DINT > REAL
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
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
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
14-3
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
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".
14-5
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
Nota Vous avez en outre la possibilit d'utiliser d'autres fonctions CEI pour effectuer la conversion du type de donnes. Vous trouverez des informations dtailles sur chacune de ces fonctions dans le manuel de rfrence STEP 7 "Fonctions standard et fonctions systme pour S7-300/400".
Exemple
// Arrondi la valeur infrieure (rsultat : 3) ROUND (3.14) ; // Arrondi la valeur suprieure (rsultat : 4) ROUND (3.56) ; // Troncature (rsultat : 3) TRUNC (3.14) ; // Troncature (rsultat : 3) TRUNC (3.56) ;
14-6
Dans l'exemple suivant, une conversion explicite est ncessaire, car le type de donnes REAL n'est pas autoris dans une expression arithmtique comportant l'opration MOD. FUNCTION_BLOCK FB20 VAR COMMUTATEUR : REAL VAL_ENT : INT := 17; CONV2 : INT ; END_VAR (* L'utilisation de MOD n'est autorise qu'avec des donnes de type INT ou DINT *) CONV2 := VAL_ENT MOD REAL_TO_INT (COMMUTATEUR); // . . . END_FUNCTION_BLOCK Dans l'exemple suivant, la conversion est indispensable car le type de donnes n'est pas autoris pour une opration logique. NOT ne peut tre applique qu' des donnes de type BOOL, BYTE, WORD ou DWORD. FUNCTION_BLOCK FB30 VAR VAL_ENT : INT := 17; CONV1 : WORD ; END_VAR (* L'utilisation de NOT n'est pas autorise avec des donnes de type INT *) CONV1 := NOT INT_TO_WORD(VAL_ENT); // . . . END_FUNCTION_BLOCK
14-7
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
14.2
14.2.1
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
Description
Nota Vous avez en outre la possibilit d'utiliser d'autres fonctions CEI pour effectuer la conversion des types de donnes. Vous trouverez des informations dtailles sur chacune de ces fonctions dans le manuel de rfrence STEP 7 "Fonctions standard et fonctions systme pour S7-300/400".
14-9
14.2.3
Fonctions trigonomtriques
Les fonctions trigonomtriques suivantes calculent des angles en radians. Le type de donnes ANY_NUM reprsente INT, DINT ou REAL. Sachez que les paramtres d'entre de type ANY_NUM sont convertis de manire interne en variables de type REAL.
Nom de la fonction
Description
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
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);
14-10
14.3
Le tableau suivant dcrit toutes les fonctions standard sur chane binaire disponibles.
Nom de la Type du paramtre fonction d'entre IN Type du paramtre d'entre N Type de la valeur de la fonction Tche
ROL
BOOL BYTE WORD DWORD 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
Nota Vous avez en outre la possibilit d'utiliser d'autres fonctions CEI pour effectuer la conversion des types de donnes. Vous trouverez des informations dtailles sur chacune de ces fonctions dans le manuel de rfrence STEP 7 "Fonctions standard et fonctions systme pour S7-300/400".
14-11
Appel
Rsultat
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
14.4
14.4.1
LEN
La fonction LEN (FC21) fournit comme valeur de retour la longueur en cours d'une chane de caractres (nombre de caractres valables). Une chane vide ('') a la longueur zro. La fonction ne signale pas d'erreur. Exemple : LEN (S:= 'XYZ' )
Paramtre Dclaration Type de donnes Zone de mmoire Description
S Valeur de retour
INPUT
STRING INT
D, L E, A, M, D, L
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
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
14-13
LEFT ou RIGHT
Les fonctions LEFT et RIGHT (FC20 et FC32) fournissent les L premiers ou derniers caractres d'une chane de caractres. Si L est suprieur la longueur en cours de la variable STRING, c'est la chane complte qui est fournie comme valeur de retour. Si L = 0, la valeur de retour est une chane vide. Si L est une valeur ngative, la valeur de retour est une chane vide. Exemple : LEFT (IN:= 'soupape', L:= 4)
Paramtre Dclaration Type de donnes Zone de mmoire Description
IN L Valeur de retour
INPUT INPUT
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
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
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
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)
14-15
REPLACE
La fonction REPLACE (FC31) remplace, partir du caractre P compris, L caractres de la premire chane (IN1) par la seconde chane (IN2). Si L gale zro, c'est la premire chane de caractres qui sera indique comme valeur de retour. Si P gale 0 ou 1, les caractres seront remplacs en partant du premier (y compris celui-ci). Si P se trouve hors de la premire chane, la seconde chane sera accole la premire. Si L et/ou P sont ngatifs, la valeur de retour sera une chane vide. Si la chane rsultant de l'opration est plus longue que la variable affecte comme paramtre de sortie, la chane sera limite la longueur maximale dfinie. Exemple : REPLACE (IN1:= 'temperature', IN2:= ' haute' L:= 7, P:= 5)
Paramtre Dclaration Type de donnes Zone de mmoire Description
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
INPUT INPUT
D, L D, L E, A, M, D, L
Variable STRING dans laquelle chercher Variable STRING rechercher Position de la chane trouve
14-16
14.4.2
EQ_STRNG et NE_STRNG
Les fonctions EQ_STRNG (FC10) et NE_STRNG (FC29) comparent les contenus de deux variables en format STRING pour en constater l'galit (FC10) ou la diffrence (FC29). Elles donnent le rsultat comme valeur de retour. Cette valeur de retour est "1" quand la chane de caractres du paramtre S1 est gale (diffrente de) celle du paramtre S2. La fonction ne signale pas d'erreur.
Paramtre Dclaration Type de donnes Zone de mmoire Description
S1 S2 Valeur de retour
INPUT INPUT
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
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-17
GT_STRNG et LT_STRNG
Les fonctions GT_STRNG (FC15) et LT_STRNG (FC24) comparent les contenus de deux variables en format STRING dans le rapport "suprieur (infrieur) " et donnent le rsultat de la comparaison comme valeur de retour. Cette valeur de retour est "1" quand la chane de caractres du paramtre S1 est suprieure (infrieure) celle du paramtre S2. La fonction compare les caractres en partant de la gauche et au moyen de leur codage ASCII (par ex. 'a' est suprieure 'A'). Le premier caractre diffrent dcide du rsultat de la comparaison. Quand la partie gauche de la chane la plus longue est identique la chane la plus courte, c'est la chane la plus longue qui est suprieure. La fonction ne signale pas d'erreur.
Paramtre Dclaration Type de donnes Zone de mmoire Description
S1 S2 Valeur de retour
INPUT INPUT
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
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
S Valeur de retour
INPUT
STRING INT
D, L E, A, M, D, L
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
S Valeur de retour
INPUT
STRING DINT
D, L E, A, M, D, L
14-19
IN Valeur de retour
STRING_TO _REAL
INPUT
REAL STRING
E, A, M, D, L, const. D, L
S Valeur de retour
INPUT
STRING REAL
D, L E, A, M, D, L
14-20
: int; : array [0..19] of string[34]; : array [1..5] of string[16]; // 5 appareils diffrents : array [1..5] of string[12]; // 5 tats diffrents
:= := := := := := := := := :=
'moteur '; 'soupape '; 'presse '; 'station_soudage '; 'bruleur '; ' defecteux'; ' demarre'; ' temperature'; ' repare'; ' revise';
//////////////////////////////////////////////////////////////////// //La fonction assemble des textes de signalisation et les crit // //dans le DB Textes_signalisation. Les textes de signalisation // //sont stocks dans une mmoire circulaire. Le dernier indice // //libre de la mmoire e textes figure aussi dans le DB // //textes_signalisation o il est actualis par la fonction. // ////////////////////////////////////////////////////////////////////
14-21
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
14-23
14-24
//////////////////////////////////////////////////////////////////// //L'appel suivant provoque l'entre "Moteur 12 demarre" dans la // //mmoire de textes du DB Textes_signalisation, sachant qu'il faut// //transfrer un 1 par %MW0, le 12 par %EW2 et un 2 par %MW2. *) // //////////////////////////////////////////////////////////////////// if %M10.0 <> %M10.1 then erreur := Generateur_textes (unite := word_to_int(%MW0), no := word_to_int(%EW2), etat := word_to_int(%MW2), valeur := 0); %M10.1:=M10.0; end_if; end_organization_block
14-25
14.5
Nota Certaines des fonctions sont galement contenues dans la bibliothque standard de STEP 7. Les fonctions de la bibliothque ne correspondent cependant pas en tous points aux exigences CEI.
SEL
La fonction SEL slectionne une valeur d'entre parmi deux. Comme valeurs d'entre, tous les types de donnes sont autoriss, l'exception des types de donnes ARRAY et STRUCT ainsi que des types de donnes Paramtre. Toutes les variables paramtres doivent appartenir au type de donnes de la mme classe. Exemple : A:= SEL (G:= SELECT, IN0:= X, IN1:= Y);
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
IN1
INPUT
E, A, M, D, L
Valeur en retour
OUTPUT
E, A, M, D, L
14-26
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
E, A, M, D, L
IN2
INPUT
E, A, M, D, L
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
E, A, M, D, L
14-27
MIN
La fonction MIN slectionne la plus petite valeur de variable parmi un certain nombre de valeurs de variables. Comme valeurs d'entre, les types de donnes numriques et les types de donnes de temporisation sont autoriss. Toutes les variables paramtres doivent appartenir au type de donnes de la mme classe. L'expression prend le type de donnes de poids le plus fort. Exemple : A:= MIN (IN1:=a, IN2:=b, IN3:=c, IN4:=d);
Paramtre Dclaration Type de donnes Zone de mmoire Description
IN1
INPUT
E, A, M, D, L
IN2
INPUT
E, A, M, D, L
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
E, A, M, D, L
14-28
LIMIT
La fonction LIMIT limite la valeur d'une variable des valeurs limite paramtrables. Comme valeurs d'entre, tous les types de donnes numriques et les types de donnes de temporisation sont autoriss. Tous les paramtres doivent appartenir au mme type de donnes. L'expression prend le type de donnes de poids le plus fort. La valeur limite infrieure (MN) ne doit pas tre plus grande que la valeur limite suprieure (MX). Exemple : A:= LIMIT (MN:=5, IN:= Bearbeitungsschritte, MX:= 10);
Paramtre Dclaration Type de donnes Zone de mmoire Description
MN
INPUT
E, A, M, D, L
Limite infrieure
IN
INPUT
E, A, M, D, L
Variable d'entre
MX
INPUT
E, A, M, D, L
Limite suprieure
E, A, M, D, L
14-29
MUX
La fonction MUX slectionne une valeur d'entre parmi un certain nombre de valeurs d'entre. La slection s'effectue avec le paramtre d'entre K. Comme valeurs d'entre, tous les types de donnes sont autoriss. L'expression prend le type de donnes de poids le plus fort. Exemple : A:= MUX (K:=SELECT, IN0:= Steps, IN1:=Number, IN2:=Total);
Paramtre Dclaration 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
IN1
INPUT
E, A, M, D, L
INn (n=231)
INPUT
E, A, M, D, L
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.
E, A, M, D, L
14-30
14.6
14.6.1
14-31
Nota Lorsque vous utilisez les oprations suivantes pour les types de donnes TIME, DATE_AND_TIME et STRING dans votre programme, S7-SCL appelle automatiquement les blocs standard correspondants. C'est ce qui explique que les mnmoniques et les numros de ces blocs standard soient rservs et que leur emploi pour d'autres blocs soit interdit. Un manquement cette rgle n'est pas toujours contrl par S7-SCL et peut provoquer une erreur de compilateur.
Le tableau ci-aprs numre les fonctions standard CEI utilises automatiquement par S7-SCL.
Opration DATE_AND_TIME STRING
== <> > >= <= < 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
Blocs d'organisation
Les blocs d'organisation constituent l'interface entre le systme d'exploitation de la CPU et le programme utilisateur. Ils permettent de cibler les parties de programme excuter : la mise en route de la CPU, de manire cyclique ou une cadence donne, des instants ou jours donns, aprs coulement d'une dure donne, l'apparition d'erreurs, lors du dclenchement d'alarmes de processus ou de communication. Les blocs d'organisation sont traits dans l'ordre de la priorit qui leur est affecte.
OB disponibles
Les CPU ne sont pas toutes en mesure de traiter l'ensemble des OB disponibles dans S7. Vrifiez dans les caractristiques techniques de votre CPU de quels OB vous diposez.
14-33
14-34
15
Description du langage
15.1
Squence
Bloc 3 Bloc 1 Bloc 2 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
15-1
Description du langage
Bloc terminal
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
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
Rgles lexicales
Conventions
Chaque rgle est prcde de son nom. Si elle est utilise dans une rgle de niveau hirarchique suprieur, son nom figure dans un rectangle. Si le nom de la rgle est crit en majuscules, il s'agit d'un symbole qui est dcrit dans les rgles lexicales.
15-3
Description du langage
Smantique
Les rgles permettent uniquement de reprsenter la structure formelle du langage, sans toujours en livrer la signification. Des informations complmentaires sont donc crites ct des rgles pour les points importants. Voici des exemples : Un nom supplmentaire est indiqu en cas d'lments semblables mais de signification diffrente : par ex. dans la rgle d'indication de la date, Anne, Mois ou Jour pour SUITE DE CHIFFRES DECIMAUX. Le nom indique l'utilisation. Les restrictions importantes sont signales ct des rgles : par ex. la rgle Mnmonique est accompagne du rappel qu'un mnmonique doit tre dfini dans la table des mnmoniques.
15-4
Description du langage
Dfinition
Un bloc terminal est un lment de base dont la description ne ncessite pas de rgle supplmentaire, mais une simple explication. Il est reprsent par la figure suivante dans les diagrammes syntaxiques :
Le bloc terminal est reprsent par un rectangle aux bouts arrondis ou par un cercle. Il contient soit un nom (en majuscules), soit directement une information. Celui-ci dfinit le nombre de caractres ASCII utilisables.
Les tableaux suivants numrent les diffrents blocs terminaux en indiquant pour chacun l'ensemble correspondant des lments du jeu de caractres ASCII.
Lettres et chiffres
Il s'agit des caractres les plus utiliss. L'IDENTIFICATEUR, par exemple, se compose de lettres, de chiffres et du caractre de soulignement.
Caractre Sous-groupe Elments du jeu de caractres
Majuscule Minuscule Chiffre dcimal Chiffre octal Chiffre hexadcimal Chiffre binaire
AZ az 09 07 0 9, 0, 1 A F, a f
15-5
Description du langage
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)
15-6
Description du langage
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
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
15-7
Description du langage
Prfixe
Caractrise
Rgle lexicale
Sparateur pour intervalle de temps (jour) Jours (rgle : reprsentation par niveaux) Sparateur pour intervalle de temps (heure) Heures : (rgle : reprsentation par niveaux) Sparateur pour intervalle de temps Minutes : (rgle : reprsentation par (minutes) niveaux) Sparateur pour intervalle de temps Millisecondes : (rgle : reprsentation par (millisecondes) niveaux) Sparateur pour intervalle de temps Secondes : (rgle : reprsentation par (secondes) niveaux) Indication temporelle Dure Indication temporelle Dure Indication temporelle Heure du jour Indication temporelle Heure du jour
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
.. . ()
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
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
:=
Affectation de valeur, section d'affectation de DB, section de constantes, dfinition de sortie ou d'entre/sortie, dfinition d'entre, dfinition d'entre/sortie
Oprations arithmtiques : oprations Expression, expression simple, expression de unaires, signes puissance Oprations arithmtiques de base 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
15-9
Description du langage
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 section des instructions Instruction FOR, instruction WHILE pour l'instruction FOR
15-10
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
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
15-11
Description du langage
Mot-cl
Description
Rgle syntaxique
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
15-12
Description du langage
Mot-cl
Description
Rgle syntaxique
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
15-13
Description du langage
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
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
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)
15-15
Description du langage
15.1.7
Cet lment se rencontre dans les rgles lexicales et dans les rgles syntaxiques.
Les symboles dfinis reprsentent des identificateurs qui dcoulent des rgles lexicales. Ils dcrivent : Les identificateurs L'attribution de noms dans S7-SCL Les constantes prdfinies et les drapeaux
15-16
Description du langage
15.1.9 Identificateurs
Identificateurs
Les identificateurs servent adresser des objets du langage S7-SCL. Le tableau suivant vous renseigne sur les classes d'identificateurs.
Type d'identificateur Remarques, exemples
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
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
Vous pouvez donc crire aussi en minuscules les noms des fonctions standard, comme par ex. BYTE_TO_WORD et ABS. Il en est de mme pour les paramtres des fonctions de temporisation et de comptage, par ex. SV, se ou ZV.
15-17
Description du langage
_ Caractre de soulignement
Lettre
Lettre
Chiffre
Caractre de soulignement
Chiffre
MNEMONIQUE
" Caractre imprimable "
15-18
Description du langage
Restrictions
En attribuant un nom, tenez compte des quelques restrictions suivantes. Les noms doivent tre univoques dans leur zone de validit, c'est--dire qu'il n'est pas permis d'utiliser encore une fois dans le mme bloc un nom qui y a dj t attribu. En outre, il ne faut pas employer les noms suivants qui sont utiliss par le systme : Noms de mots-cls, par ex. CONST, END_CONST, BEGIN ; Noms des oprations, par ex. AND, XOR ; Noms des identificateurs prdfinis, par ex. noms de types de donnes tels que BOOL, STRING, INT ; Noms des constantes prdfinies TRUE et FALSE ; Noms des fonctions standard, par ex. ABS, ACOS, ASIN, COS, LN ; Noms des identificateurs d'oprande pour donnes systme globales, par ex. EB, EW, ED, AB, AW, AD MB, MD.
Nom de bloc Nom de temporisation et de compteur Nom d'attribut Nom de constante Repre de saut
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
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
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
Description du langage
15.2
Rgles lexicales
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
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
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#
Constante entire
CONSTANTE ENTIERE
INT# DINT# + SUITE DE CHIFFRES DECIMAUX SUITE DE CHIFFRES OCTAUX SUITE DE CHIFFRES HEXA SUITE DE CHIFFRES BINAIRES CARACTERES (1)
Constante relle
CONSTANTE REELLE
SUITE DE CHIFFRE DECIMAUX . SUITE DE CHIFFRE DECIMAUX
+ REAL# -
Exposant
Chiffre
_
Chiffres dcimaux : 0-9
Caractre de soulignement
15-23
Description du langage
Rgle
Diagramme syntaxique
_ Caractre de soulignement
Exposant
Exposant
E + SUITE DE CHIFFRES DECIMAUX e -
15-24
Description du langage
Rgle
Diagramme syntaxique
CONSTANTE SUR CHAINE
'
Caractre
Interruption de la chane
Caractre
'
Caractre
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#
15-25
Description du langage
Rgle
Diagramme syntaxique
Dure
Dure
TIME# Reprsentation dcimale
T#
Reprsentation dcimale
-Chaque unit de temps (heures, minutes) ne doit tre indique qu'une seule fois -L'ordre - jours, heures, minutes, secondes, millisecondes - doit tre respect
Heure du jour
Heure du jour
TIME_OF_DAY# Indication de l'heure du jour TOD#
Date et heure
Date et heure
DATE_AND_TIME# Indication de la date 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
Description du langage
Rgle
Diagramme syntaxique
Indication de l'heure du jour
SUITE DE CHIFFRES DECIMAUX SUITE DE CHIFFRES DECIMAUX
Reprsentation dcimale
Reprsentation dcimale
SUITE DE CHIFFRES DECIMAUX . SUITE DE CHIFFRES DECIMAUX D Jours
Heures
Minutes M
Secondes
MS
Millisecondes
Pour passer la reprsentation dcimale, il faut que les units temporelles n'aient pas encore t dfinies
15-27
Description du langage
Rgle
Diagramme syntaxique
Reprsentation par niveaux
Jours
Heures
Minutes
Secondes
MS
Millisecondes
15-28
Description du langage
Rgle
Diagramme syntaxique
IDENTIFICATEUR D'OPERANDE
IDENTIFICATEUR
MNEMONIQUE
Adressage symbolique
Identificateur d'oprande
Identificateur d'oprande
Prfixe de mmoire Prfixe de taille
Adressage absolu
Index
Identificateur d'oprande DB
Expression de base
Expression de base
Variable simple
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
X B W D Bit Octet Mot Double mot
Adresse
Numro . Numro
Variable simple
15-30
Description du langage
15.2.5 Commentaires
Voici les restrictions dont vous devez tenir compte lorsque vous insrez des commentaires : L'imbrication de commentaires est autorise quand l'option "Imbrication de commentaires possible" est active. L'insertion de commentaires est possible n'importe o dans les rgles syntaxiques, mais il ne l'est pas dans les rgles lexicales.
Rgle Diagramme syntaxique
Commentaire
Ligne de commentaire
Bloc de commentaire
Ligne de commentaire
Ligne de commentaire
Caractre imprimable
//
Bloc de commentaire
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
IDENTIFICATEUR
:=
'
15-32
LAMICED ERBMON
'
LAMICED ERBMON
TCETORP_WOH_WONK
noisreV
Description du langage
Option du compilateur
15-33
Description du langage
15.3
Rgles syntaxiques
Libert de format
La libert de format implique que : L'insertion de caractres de mise en forme est partout possible ; L'insertion de lignes et de blocs de commentaire est possible.
15-34
Description du langage
Rgle
Diagramme syntaxique
Programme S7-SCL
Elment du programme SCL
Bloc d'organisation
Fonction
Bloc fonctionnel
Bloc de donnes
Bloc d'organisation
Bloc d'organisation
ORGANIZATION_BLOCK
DESIGNATION DE L'OB
BEGIN
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
END_FUNCTION
15-35
Description du langage
Rgle
Diagramme syntaxique
Bloc fonctionnel
Bloc fonctionnel
PROGRAM
DESIGNATION DU FB
Section de dclaration du FB
FUNCTION_BLOCK
END_PROGRAM
BEGIN
Bloc de donnes
Bloc de donnes
DESIGNATION DU DB
DATA_BLOCK
Section de dclaration du DB
BEGIN
Section d'affectation du DB
END_DATA_BLOCK
TYPE
DESIGNATION DE L`UDT
END_TYPE
15-36
Description du langage
Rgle
Diagramme syntaxique
Section de dclaration de la FC
Section des constantes Section des repres de saut
Section de dclaration du FB
Section des constantes Section des repres de saut Section des variables temporaires Section des variables statiques
Interface
15-37
Description du langage
Rgle
Diagramme syntaxique
Section de dclaration du DB
DESIGNATION DE L'UDT Structure de la spcification du type de donnes
Section d'affectation du DB
Section d'affectation du DB
Variable simple
:=
Constante*
* en notation LIST
CONST
:=
Expression simple
END_CONST
LABEL
END_LABEL
15-38
Description du langage
Rgle
Diagramme syntaxique
* pour FB seulement
Dclaration de variables
Initialisation du type de donnes
1)
1)
24 caractres au maximum
IDENTIFICATEUR
:=
'
caractre imprimable
'
.LAITINID ETSIL
ETNATSNOC
UAELBAT NUD
NOITASILAITINI
15-39
Description du langage
Rgle
Diagramme syntaxique
Dclaration d'instances
DESIGNATION DU FB IDENTIFICATEUR Nom de l'instance locale , : DESIGNATION DU SFB
VAR_TEMP
Dclaration de la variable
END_VAR
15-40
ETNATSNOC
.TITEPER ED ETSIL
SETNATSNOC ED
ETNATSNOC
NOITITEPER ED RUETCAF
[
Description du langage
Rgle
Diagramme syntaxique
Section de paramtres
Section des paramtres
VAR_INPUT VAR_OUTPUT Dclaration de la variable
END_VAR
DATE_AND_TIME
Spcification du type de donnes ARRAY Spcification du type de donnes STRUCT DESIGNATION DE L'UDT
15-41
Description du langage
15.3.4
Rgle
Diagramme syntaxique
CHAR
STRING
Nombre rel
15-42
Description du langage
Rgle
Diagramme syntaxique
DATE_AND_TIME
DATE_AND_TIME
DATE_AND_TIME# Indication de la date DT# Indication de l'heure du jour
ARRAY
Indice 1
.. ,
Indice n
6 dimensions au plus
OF
END_STRUCT
15-43
Description du langage
Rgle
Diagramme syntaxique
TIMER COUNTER
ANY
POINTER
Adresse
15-44
Description du langage
Rgle
Diagramme syntaxique
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
15-45
Description du langage
Rgle
Diagramme syntaxique
Variable tendue
Variable tendue
Variable simple Variable absolue pour les zones de mmoire de la CPU Variable dans un DB
Variable simple
IDENTIFICATEUR Nom de la variable ou du paramtre Variable structure
Tableau simple
Variable compose
IDENTIFICATEUR Identificateur au dbut Nom de la variable ou du paramtre
15-46
Description du langage
Rgle
Diagramme syntaxique
Expression
Expression
Oprande Oprations logiques de base
Expression
Expression
Oprations de comparaison
+ NOT
Expression simple
15-47
Description du langage
Rgle
Diagramme syntaxique
Multiplication simple
* /
Multiplication simple
DIV MOD
Oprande
Constante
Variable tendue
( Expression)
NOT
Oprande
Variable tendue
Variable tendue
Variable simple Variable absolue pour les zones de mmoire de la CPU Variable dans un DB
15-48
Description du langage
Rgle
Diagramme syntaxique
Constante
Constante
Valeur numrique
Chane de caractres
Nom de constante
Exposant
Exposant
E + SUITE DE CHIFFRES DECIMAUX e -
MOD
DIV
Opration de comparaison
Opration de comparaison
<
>
<=
>=
<>
15-49
Description du langage
15.3.7
Rgle
Diagramme syntaxique
Appel de FB
Appel d 'un FB
FB : bloc fonctionnel SFB : bloc fonctionnel systme
DESIGNATION DU FB
IDENTIFICATEUR
Appel de fonction
Appel de fonction
DESIGNATION DE LA FC
DESIGNATION DE LA SFC
Paramtres de FB
Paramtres du FB
Affectation de l'entre
Affectation de l'entre/sortie
15-50
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/sortie
Affectation de l'entre/sortie
Variable tendue Paramtre effectif
:=
Affectation de la sortie
15-51
Description du langage
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
ELSIF
Expression Condition
THEN
ELSE
END_IF
Instruction CASE
Instruction CASE
Liste de valeurs
ELSE
END_CASE
15-52
Description du langage
Rgle
Diagramme syntaxique
Liste de valeurs
Nombre entier Valeur
Liste de valeurs
Valeur
..
Valeur
Valeur
Constante numrique
Instruction FOR
Instruction WHILE
Instruction EXIT
Instruction RETURN
Instruction GOTO
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
TO
BY
DO
END_FOR
Instruction initiale
Instruction initiale
Variable tendue Expression de base pour la valeur initiale
:=
Instruction WHILE
Instruction WHILE
WHILE
DO
END_WHILE
Instruction REPEAT
Instruction REPEAT
REPEAT
UNTIL
Expression
END_REPEAT
Condition d'abandon
15-54
Description du langage
Rgle
Diagramme syntaxique
Instruction CONTINUE
Instruction CONTINUE
CONTINUE
Instruction RETURN
Instruction RETURN
RETURN
Instruction EXIT
Instruction EXIT
EXIT
Branchement de programme
GOTO IDENTIFICATEUR Repre de saut
15-55
Description du langage
15-56
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;
Nota
Avec VAR_TEMP, vous rangez des variables dans la pile de la CPU. Cela peut conduire un dpassement de capacit de la pile pour les petites CPU. Evitez d'utiliser trop de variables temporaires dans votre programme !
16-1
Conseils et astuces
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.
16-2
Conseils et astuces
16-3
Conseils et astuces
Rassignation de blocs
Vous ne pouvez pas utiliser la commande Outils > Rassignation de SIMATIC Manager pour rassigner les appels de bloc figurant dans les blocs S7-SCL. Vous devez diter manuellement les appels des blocs concerns dans la source S7-SCL. Conseils : Dfinissez des noms symboliques pour les blocs dans la table des mnmoniques et appelez les blocs sous forme symbolique. Dfinissez des mnmoniques pour les adresses absolues (E, M, A, etc.) dans la table des mnmoniques et utilisez-les dans votre programme. Si vous souhaitez ensuite rassigner un bloc, il vous suffira de modifier l'affectation dans la table des mnmoniques et vous n'aurez aucune modification faire dans la source S7-SCL.
16-4
Conseils et astuces
Exemple :
VAR theStruct : STRUCT twoBytes : ARRAY [0..1] OF BYTE; oneInt : INT oneByte : BYTE; END_STRUCT; fiveBytes AT theStruct : ARRAY[0..4] OF BYTE; END_VAR
L o 5 octets sont requis, vous utilisez l'identificateur fiveBytes. Grce l'identificateur theStruct, il est alors possible de raliser un accs structur.
La variable d'excution ii s'excute dans le sens positif. La variable d'excution ii s'excute dans le sens ngatif.
Valeurs limite Les deux types de donnes possibles possdent diffrentes valeurs limite :
Type de donnes PMAX NMAX
32_767 2_147_483_647
-32_768 -2_147_483_648
16-5
Conseils et astuces
16-6
Glossaire
Abrviations
Les abrviations reprsentent les oprandes et les oprations de programmation de manire abrge (E, par exemple, dsigne l'entre). STEP 7 reconnat les abrviations CEI (exprimes en anglais) et les abrviations SIMATIC (exprimes d'aprs les oprations et conventions d'adressage SIMATIC allemandes).
Adressage
Affectation d'une adresse dans le programme utilisateur. On peut affecter des adresses des oprandes ou des zones d'oprandes donnes (exemples : entre E 12.1, mot de mmento MW25)
Adressage absolu
L'adressage absolu consiste indiquer l'adresse de l'oprande traiter. Exemple : l'adresse A 4.0 dsigne le bit 0 dans l'octet 4 de la mmoire image des sorties.
Adressage symbolique
L'adressage symbolique consiste indiquer de manire symbolique l'oprande traiter, son mnmonique. Les mnmoniques sont associs aux adresses au moyen de la table des mnmoniques ou d'un fichier symbolique.
Affectation
Mcanisme servant donner une valeur une variable.
Glossaire-1
Glossaire
Aide en ligne
STEP 7 vous offre la possibilit d'afficher l'cran des textes d'aide contextuels pendant votre travail avec le logiciel de programmation.
Appel de bloc
Dmarrage d'un bloc dans le programme utilisateur STEP 7 : les blocs d'organisation sont toujours appels par le systme d'exploitation, tous les autres blocs le sont par le programme utilisateur STEP 7.
Attente
L'tat d'attente peut tre obtenu partir de l'tat de marche sur sollicitation depuis la console de programmation. Cet tat de fonctionnement permet de raliser des fonctions de test particulires.
Attribut
Un attribut est une proprit qui caractrise par exemple une dsignation de bloc ou un nom de variable. Dans S7-SCL, il existe des attributs pour les indications suivantes : titre du bloc, version, protection du bloc, auteur, nom du bloc, famille de bloc.
Bloc
Les blocs constituent des parties dlimites d'un programme utilisateur par leur fonction, leur structure et leur objet. Dans STEP 7, il existe des blocs de code (FB, FC, OB, SFC, SFB), des blocs de donnes (DB, SDB) et des types de donnes utilisateur (UDT).
Bloc de code
Dans SIMATIC S7, un bloc de code est un bloc contenant une partie du programme utilisateur STEP 7, contrairement aux blocs de donnes qui ne contiennent que des donnes. Parmi les blocs de code, on distingue les blocs d'organisation (OB), les blocs fonctionnels (FB), les fonctions (FC), les blocs fonctionnels systme (SFB) et les fonctions systme (SFC).
Glossaire-2
Glossaire
Bloc terminal
Un bloc terminal est un lment de base d'une rgle lexicale ou syntaxique dont la description ne ncessite pas de rgle supplmentaire, mais une simple explication. Il peut s'agir par exemple d'un mot-cl ou d'un caractre unique.
Classe de bloc
En fonction de leur contenu, les blocs sont subdiviss en deux classes, les blocs de code et les blocs de donnes.
Commentaire
Structure permettant d'intgrer dans un programme un texte explicatif qui n'aura pas d'influence sur l'excution du programme.
Glossaire-3
Glossaire
Commentaire de bloc
Les commentaires de bloc sont des informations supplmentaires sur un bloc (par exemple des explications sur le processus d'automatisation) qui ne sont pas charges dans la mmoire de travail des automates programmables SIMATIC S7.
Compilateur de S7-SCL
Le compilateur de S7-SCL est un compilateur squentiel qui permet de traduire le programme pralablement dit (source SCL) en code machine MC7. Les blocs ainsi crs sont rangs dans le programme S7 qui se trouve dans le dossier Blocs.
Compilation
Traduction d'une source en programme utilisateur excutable.
Compilation source
Dans le mode de saisie source, la compilation en programme utilisateur excutable n'est effectue qu'une fois toutes les instructions saisies. Cette compilation est accompagne d'une vrification dtectant les erreurs de saisie ventuelles.
Compteur
Les compteurs sont partie constituante de la mmoire systme de la CPU. Leur contenu est actualis par le systme d'exploitation de faon asynchrone au programme utilisateur. Des instructions en STEP 7 permettent de dfinir la fonction exacte de la cellule de comptage (par ex. incrmentation) et d'en lancer l'excution.
Constante
Les constantes rservent la place pour des valeurs constantes dans les blocs de code. Elles servent amliorer la lisibilit d'un programme. Exemple : au lieu d'indiquer une valeur directement (ex. : 10 ), on indique "Nbmax_repetitions_boucle". A l'appel de la constante, elle est remplace par sa valeur (10).
Constante littrale
Notation formelle dterminant la valeur et le type d'une constante.
Constante symbolique
Les constantes aux noms symboliques rservent la place pour des valeurs constantes dans les blocs de code. Elles permettent d'amliorer la lisibilit d'un programme.
Glossaire-4
Glossaire
DCB
Nombre dcimal cod binaire. Dans STEP 7, les temporisations et les compteurs sont indiqus exclusivement dans le format DCB l'intrieur de la CPU.
Dbogueur de S7-SCL
Le dbogueur de S7-SCL est un dbogueur de langage volu permettant de trouver les erreurs de programmation logiques dans le programme utilisateur cr avec S7-SCL.
Dclaration
Mcanisme servant dfinir un lment de langage. Une dclaration tablit le lien entre un identificateur et l'lment de langage et lui affecte des attributs et des types de donnes.
Dclaration de variable
La dclaration d'une variable consiste indiquer son mnmonique, son type de donnes et ventuellement une valeur par dfaut, une adresse et un commentaire.
Donnes globales
Les donnes globales sont des donnes accessibles chaque bloc de code (FB, FC, OB), savoir des mmentos (M), des entres (E), des sorties (A), des temporisations, des compteurs et des lments de blocs de donnes. Il est possible d'y accder par adressage absolu ou symbolique.
Donnes locales
Les donnes locales sont les donnes associes un bloc de code qui sont dclares dans la section de dclaration ou dans la dclaration des variables de ce bloc. Elles comprennent - selon le bloc - les paramtres formels, les donnes statiques, les donnes temporaires.
Donnes statiques
Les donnes statiques sont des donnes locales d'un bloc fonctionnel qui sont mmorises dans le bloc de donnes d'instance et donc conserves jusqu'au traitement suivant du bloc fonctionnel.
Donnes temporaires
Les donnes temporaires sont des donnes locales d'un bloc qui sont sauvegardes dans la pile des donnes locales (pile L) durant l'excution de ce bloc et ne sont plus disponibles une fois l'excution termine.
Donnes utiles
Les donnes utiles sont changes par l'intermdiaire de la mmoire image ou par adressage direct entre une unit centrale et un module de signaux, un module fonctionnel et des modules de communication. Il peut s'agir des signaux d'entre/sortie TOR et analogiques de modules de signaux, d'informations de forage et d'tat de modules de fonctions.
Glossaire-5
Glossaire
Drapeau OK
Le drapeau OK signale l'excution correcte ou incorrecte d'une squence d'instructions d'un bloc. Il a gnralement le type de donnes BOOL.
Editeur de S7-SCL
L'diteur de S7-SCL s'adapte tout particulirement aux exigences de S7-SCL pour crer la source S7-SCL.
EN (Enable)
Dans STEP 7, tout bloc fonctionnel et toute fonction dispose du paramtre d'entre "Enable" (EN) dfini automatiquement et qui peut tre mis 1 l'appel du bloc. Si EN est vrai, le bloc appel est excut, autrement il ne l'est pas.
En ligne
Il s'agit de l'tat de fonctionnement dans lequel une liaison (physique, logique) est tablie entre la console de programmation et l'automate programmable.
Entier (INT)
L'entier (INT) est l'un des types de donnes simples. On le reprsente comme nombre entier 16 bits.
Expression
Une expression permet de traiter des donnes dans S7-SCL. Il existe des expressions arithmtiques, logiques et de comparaison.
Fonction (FC)
Selon la norme CEI 1131-3, une fonction (FC) est un bloc de code sans donnes statiques. Elle permet la transmission de paramtres dans le programme utilisateur. Aussi les fonctions se prtent-elles la programmation de fonctions complexes se rptant souvent, comme les calculs.
Glossaire-6
Glossaire
Hirarchie d'appel
Pour pouvoir tre excuts, tous les blocs doivent pralablement tre appels. On appelle hirarchie d'appel, l'ordre et l'imbrication de ces appels.
Hors ligne
Il s'agit de l'tat de fonctionnement dans lequel aucune liaison (physique, logique) n'est tablie entre la console de programmation et l'automate programmable.
Identificateur
Combinaison de lettres, de chiffres et de caractres de soulignement qui identifie un lment de langage.
Identificateur d'oprande
L'identificateur d'oprande est la partie de l'oprande d'une opration qui contient des informations. La zone de mmoire dans laquelle l'opration trouve une valeur qu'elle va combiner ou la grandeur d'une valeur qu'elle va combiner en sont des exemples. Dans l'instruction "Valeur := EB10", "EB" est l'identificateur d'oprande ("E" signifie la zone d'entre de la mmoire, "B" signifie un octet dans cette zone).
Instance
On dsigne par instance l'appel d'un bloc fonctionnel. Un bloc de donnes d'instance ou une instance locale lui sont associs. Si, par exemple, un bloc fonctionnel est appel n fois avec des paramtres et ds noms de blocs de donnes diffrents dans le programme utilisateur STEP 7, il existe n instances de ce bloc.
Instruction
Une instruction est la plus petite unit autonome d'un programme utilisateur crit dans un langage textuel. Il s'agit d'une tche que doit excuter le processeur.
Instruction CASE
L'instruction CASE permet de raliser un branchement. Elle sert slectionner 1 parmi n parties de programme en fonction de la valeur d'une expression de slection.
Instruction CONTINUE
Dans S7-SCL, l'instruction CONTINUE permet d'abandonner le parcours momentan de la boucle d'une instruction d'itration (FOR, WHILE ou REPEAT).
Instruction EXIT
Structure dans un programme qui sert mettre fin une boucle un endroit quelconque et indpendamment de conditions.
Glossaire-7
Glossaire
Instruction FOR
Structure dans un programme. L'instruction FOR excute une squence d'instructions dans une boucle et des valeurs successives sont alors affectes une variable (variable de contrle).
Instruction GOTO
Structure dans un programme. Une instruction GOTO ralise le saut immdiat un repre donn et par consquent une autre instruction dans le mme bloc.
Instruction REPEAT
Structure dans un programme qui sert rpter une squence d'instructions jusqu' la ralisation d'une condition d'abandon.
Instruction RETURN
Structure dans un programme ordonnant l'ordinateur de quitter le bloc actif.
Interface d'appel
L'interface d'appel est dfinie par les paramtres d'entre, de sortie et d'entre/sortie (paramtres formels) d'un bloc dans le programme utilisateur STEP7. Ces paramtres sont remplacs par les paramtres effectifs lors de l'appel du bloc.
Mmento (M)
Un mmento est une zone de mmoire dans la mmoire systme d'une CPU SIMATIC S7 qui peut tre adresse en criture et en lecture (par bit, octet, mot et double mot). L'utilisateur peut employer la zone de mmento pour y enregistrer des rsultats intermdiaires.
Mmoire image
Les tats de signaux des modules d'entres et de sorties TOR sont sauvegards dans une mmoire image dans la CPU. On distingue la mmoire image des entres (MIE) et la mmoire image des sorties (MIS).
Glossaire-8
Glossaire
Mnmonique
Un mnmonique est un nom que l'utilisateur dfinit en respectant les rgles de syntaxe imposes. Une fois son affectation dtermine (par ex. variable, type de donnes, repre de saut, bloc), ce nom peut tre utilis en programmation et en contrle-commande. Exemple : oprande : E 5.0, type de donnes : Bool, mnmonique : Bouton_arret_urg.
Mot-cl
Unit lexicale caractrisant un lment de langage, par exemple "IF". Dans S7-SCL, les mots-cls servent identifier le dbut d'un bloc, les sections de dclaration, les instructions. Ils sont utiliss en outre pour les commentaires et les attributs.
Mot d'tat
Le mot d'tat fait partie des registres de la CPU. Il contient des informations d'tat et des informations d'erreur susceptibles de survenir dans le traitement d'instructions STEP 7. Les bits d'tat peuvent tre lus et crits par l'utilisateur, les bits d'erreur peuvent uniquement tre lus.
Multi-instance
Lorsque vous utilisez des multi-instances, le bloc de donnes d'instance contient les donnes pour plusieurs blocs fonctionnels d'une hirarchie d'appel.
Nombre rel
Un nombre rel est un nombre positif ou ngatif reprsentant une valeur dcimale comme par exemple 0.339 ou 11.1.
Oprande
Un oprande est la partie d'une instruction indiquant l'objet que le processeur doit traiter. On peut y accder par une adresse absolue ou symbolique.
Opration
Une opration est la partie d'une instruction indiquant ce que le processeur doit faire.
Paramtre effectif
Les paramtres effectifs remplacent les paramtres formels lors de l'appel d'un bloc fonctionnel (FB) ou d'une fonction (FC). Exemple : le paramtre formel "Dmarrer" est remplac par le paramtre effectif "E.3.6".
Glossaire-9
Glossaire
Paramtre formel
Un paramtre formel "rserve la place" pour le paramtre effectif dans les blocs de code paramtrables. Pour les FB et les FC, c'est l'utilisateur qui dclare les paramtres formels ; ils existent dj pour les SFB et les SFC. A l'appel du bloc, un paramtre effectif est affect au paramtre formel afin que le bloc appel utilise les valeurs en cours. Les paramtres formels font partie des donnes locales du bloc et se rpartissent en paramtres d'entre, de sortie et d'entre/sortie.
Paramtres d'entre
Seuls les fonctions et les blocs fonctionnels possdent des paramtres d'entre. Ils permettent de transmettre des donnes traiter au bloc appel.
Paramtres d'entre/sortie
Les fonctions et les blocs fonctionnels possdent des paramtres d'entre/sortie. Ils permettent de transmettre des donnes au bloc appel ; elles y sont alors traites et les rsultats sont ensuite stocks dans la mme variable.
Paramtres de sortie
Les paramtres de sortie d'un bloc permettent de transmettre des rsultats au bloc appelant dans le programme utilisateur.
Pas pas
C'est un mode de test utilis des fins de mise au point par le dbogueur de S7-SCL. Il permet d'excuter le programme instruction par instruction tout en le visualisant dans la fentre de rsultat.
Programmation structure
La rsolution de tches d'automatisation complexes appelle la subdivision du programme utilisateur en parties dlimites de programmes (blocs). La structure du programme utilisateur peut tre fonctionnelle ou conforme la structure technologique de l'installation.
Programmation symbolique
Le langage de programmation S7-SCL permet de remplacer les oprandes par des chanes de caractres symboliques, les mnmoniques : l'oprande A1.1 peut par exemple tre remplac par "Vanne_17". Le lien entre l'oprande et la chane de caractres qui lui est associe est tabli par la table des mnmoniques.
Programme utilisateur
Le programme utilisateur contient toutes les instructions et dclarations ainsi que toutes les donnes ncessaires au traitement des signaux qui permettent de commander une installation ou un processus. Il est associ un module programmable (par exemple CPU, FM) et peut tre structur en units plus petites, les blocs.
Glossaire-10
Glossaire
Programme utilisateur S7
Dossier pour les blocs qui vont tre chargs dans un module programmable S7 (par exemple CPU, FM) pour y tre excuts afin de commander une installation ou un processus.
Projet
Un projet est un dossier contenant tous les objets d'une solution d'automatisation, indpendamment du nombre de stations, de modules et de leur mise en rseau.
Protection de bloc
On entend par protection de bloc la possibilit de protger des blocs individuels contre la dcompilation en effectuant la compilation de la source avec le mot-cl "KNOW_HOW_PROTECTED".
Rgle lexicale
Les rgles lexicales constituent le niveau infrieur de la description formelle du langage S7-SCL. Elles m'autorisent pas l'utilisation d'un format libre, c'est--dire que vous ne pouvez ajouter aux blocs ni espaces ni caractres de commande.
Rgle syntaxique
Les rgles syntaxiques constituent le niveau suprieur de la description formelle du langage S7-SCL. Elles autorisent l'utilisation d'un format libre, c'est--dire que vous pouvez par exemple ajouter aux blocs des espaces et des caractres de commande.
RUN
A l'tat de fonctionnement RUN (marche), le programme utilisateur est trait, la mmoire image est actualise cycliquement et toutes les entres TOR sont valides.
RUN-P
L'tat de fonctionnement RUN-P se distingue de l'tat de fonctionnement RUN en ce qu'il autorise l'application sans restrictions de nombreuses fonctions de la console de programmation.
S7-SCL
Langage volu proche du PASCAL, conforme la norme DIN EN 61131-3 (CEI 1131-3), adapt la programmation de tches complexes d'automatisation, comme par exemple des algorithmes ou du traitement de donnes. S7-SCL est l'abrviation de "Structured Control Language".
Glossaire-11
Glossaire
Section de dclaration
C'est dans la section de dclaration que vous dclarez les donnes locales d'un bloc de code quand vous crivez le programme avec un diteur de texte. La dclaration des variables d'un bloc se dcompose en plusieurs sections servant dclarer les diffrents paramtres du bloc. La section de dclaration IN, par exemple, contient la dclaration des paramtres d'entre, la section OUT celle des paramtres de sortie.
Smantique
Relation entre les lments symboliques d'un langage de programmation et leur signification, leur interprtation et leur utilisation.
Signet
Les signets sont des marques de texte temporaires qui reprent un emplacement quelconque au sein dune source. Elles facilitent la navigation dans la source.
Source
Partie de programme labore avec un diteur graphique ou textuel et donnant par compilation un programme utilisateur excutable.
Source S7-SCL
La source S7-SCL est le fichier S7-SCL dans lequel vous crez le programme qui va ensuite tre compil avec le compilateur de S7-SCL.
Structure (STRUCT)
Type de donnes complexe compos d'lments de donnes quelconques de types de donnes diffrents. Les types de donnes composant une structure peuvent tre euxmmes simples ou complexes.
Tableau
Un tableau (ARRAY) est un type de donnes complexe form d'lments de donnes de mme type, pouvant eux-mmes tre des types de donnes simples ou complexes.
Glossaire-12
Glossaire
Temporisation
Les temporisations sont partie constituante de la mmoire systme de la CPU. Leur contenu est actualis par le systme d'exploitation de faon asynchrone au programme utilisateur. Des instructions en STEP 7 permettent de dfinir la fonction exacte de la cellule de temporisation (par ex. retard la monte) et d'en lancer l'excution.
Temps de cycle
Le temps de cycle est le temps que met la CPU traiter une fois le programme utilisateur.
Type de bloc
L'architecture des blocs de STEP 7 distingue les types de blocs suivants : bloc d'organisation, bloc fonctionnel, fonction, bloc de donnes de mme que bloc fonctionnel systme, fonction systme, bloc de donnes systme et type de donnes utilisateur.
Type de paramtre
Un type de paramtre est un type de donnes spcial rserv aux temporisations, aux compteurs et aux blocs. Vous pouvez l'utiliser pour les paramtres d'entre de blocs fonctionnels et de fonctions ainsi que pour les paramtres d'entre/sortie des blocs fonctionnels seulement, afin de transmettre des temporisations, des compteurs et des blocs au bloc appel.
Glossaire-13
Glossaire
Types de donnes
Les types de donnes dterminent la nature et la signification des lments de donnes, les zones de mmoire et les plages de valeurs autorises pour les lments de donnes, le nombre d'oprations que vous pouvez raliser avec un oprande de ce type de donnes et la manire dont les lments de donnes sont crits.
UDT
Voir : Type de donnes utilisateur
Valeur initiale
Valeur attribue une variable la mise en route du systme.
Variable
Une variable dfinit une donne de contenu variable pouvant tre utilise dans le programme utilisateur STEP 7. Elle comprend un oprande (par ex. M3.1) et un type de donnes (par ex. BOOL) et peut tre identifie par un mnmonique (par ex. B. BANDE_MARCHE). Vous la dclarez dans la section de dclaration.
Visualisation
Visualiser un programme vous permet d'en contrler le droulement dans la CPU. Pour cela, des noms de variables et de paramtres par exemple sont affichs par ordre chronologique avec leurs valeurs en cours qui sont mises jour cycliquement.
Zone de mmoire
Une unit centrale dans SIMATIC S7 possde trois zones de mmoire, savoir la mmoire de chargement, la mmoire de travail et la zone systme.
Glossaire-14
Index
*
* 11-7, 11-8 ** 11-7 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
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
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
Index-7
Index
Index-8