Premire partie :
Conception
Deuxime partie :
Utilisation et test
Troisime partie :
Description du langage
SIMATIC
Annexes
Manuel
6ES7811-1CA02-8CA0
Informations relati- Ce manuel donne des consignes que vous devez respecter pour votre propre scurit ainsi
ves la scurit que pour viter des dommages matriels. Elles sont mises en vidence par un triangle daver-
tissement et sont prsentes, selon le risque encouru, de la faon suivante :
Danger
! signifie que la non-application des mesures de scurit appropries conduit la mort, des
lsions corporelles graves ou un dommage matriel important.
Attention
! signifie que la non-application des mesures de scurit appropries peut conduire la mort,
des lsions corporelles graves ou un dommage matriel important.
Avertissement
! signifie que la non-application des mesures de scurit appropries peut conduire des
lsions corporelles lgres ou un dommage matriel.
Nota
doit vous rendre tout particulirement attentif des informations importantes sur le produit,
aux manipulations effectuer avec le produit ou la partie de la documentation correspon-
dante.
Personnel qualifi La mise en service et lutilisation de la console ne doivent tre effectues que conformment
au manuel.
Seules des personnes qualifies sont autorises effectuer des interventions sur la console. Il
sagit de personnes qui ont lautorisation de mettre en service, de mettre la terre et de rep-
rer des appareils, systmes et circuits lectriques conformment aux rgles de scurit en
vigueur.
Attention
! Le produit ne doit tre utilis que pour les applications spcifies dans le catalogue ou dans
la description technique, et exclusivement avec des priphriques et composants recomman-
ds par Siemens.
Marques SIMATIC, SIMATIC NET et SMATIC HMI sont des marques dposes de
SIEMENS AG.
Les autres dsignations dans cette publication peuvent tre des marques dont lutilisation par
des tiers pour leur compte peut lser les droits des propritaires.
Objet du manuel Ce manuel constitue une aide prcieuse lorsque vous crivez vos programmes utili-
sateur dans le langage de programmation SCL. Il traite des procdures de principe
concernant la cration de programmes avec lditeur, le compilateur et le dbogueur
de SCL.
Ce manuel comporte en outre une partie de rfrence traitant des lments de lan-
gage de SCL, en particulier de leur syntaxe et de leur fonction.
Groupe cible Le prsent manuel sadresse aux programmeurs de programmes S7, ainsi quau per-
sonnel de mise en service et de maintenance. Des connaissances gnrales dans le
domaine de la technique dautomatisation savrent utiles.
Vue densemble de Il existe une importante documentation utilisateur destine vous aider pour la
la documentation configuration et la programmation dun automate programmable S7 et dont vous
utilisateur vous servirez de manire slective. Les explications de la figure ci-aprs doivent
faciliter lutilisation de cette documentation.
Introduction la mthodologie
Ouvrages de rfrence nutiliser que de faon slective
Documentation complte par une aide en ligne
Progiciels de langage
Titre Contenu
Petit manuel illustr Ce cahier constitue une introduction trs simple la mthodologie de configuration et de
Faites connaissance avec le programmation dun automate S7-300. Il sadresse tout particulirement aux utilisateurs ne
S7-300... connaissant pas les automates programmables S7.
Manuel de programmation Ce manuel de programmation prsente les connaissances de base sur lorganisation du sys-
Conception de programmes tme dexploitation et dun programme utilisateur dune CPU S7. Il est conseill aux nou-
S7-300/400 veaux utilisateurs des S7-300/400 de lutiliser pour avoir une vue densemble de la mthodo-
logie de programmation et pour concevoir, ensuite, leur programme utilisateur.
Manuel de rfrence Les CPU S7 disposent de blocs dorganisation et de fonctions systme intgrs dont vous
Fonctions standard et fonc- pouvez vous servir lors de la programmation. Ce manuel prsente une vue densemble des
tions systme fonctions systme, blocs dorganisation et fonctions standard chargeables disponibles dans
S7-300/400 S7, ainsi que comme informations de rfrence des descriptions dinterface dtailles pour
leur utilisation dans le programme utilisateur.
Guide de lutilisateur Ce guide de lutilisateur STEP 7 explique le principe dutilisation et les fonctions du logiciel
STEP 7 dautomatisation STEP 7. Que vous soyez un utilisateur dbutant de STEP 7 ou que vous
connaissiez bien STEP 5, il vous donne une vue densemble sur la marche suivre pour la
configuration, la programmation et la mise en uvre dun automate S7-300/S7-400. Vous
pouvez, lors de lutilisation du logiciel, accder de manire slective laide en ligne qui r-
pondra vos questions prcises sur le logiciel.
STEP 7 Vous aurez besoin de ce guide si vous avez lintention de convertir des programmes S5
Pour une conversion facile existants afin de les excuter dans des CPU S7. Ce guide vous donne une vue densemble du
de S5 S7... mode de fonctionnement et de lutilisation du convertisseur ; vous trouverez des informations
Manuel dtailles sur lutilisation des fonctions du convertisseur dans laide en ligne. Cette dernire
contient galement la description dinterface des fonctions S7 converties disponibles.
Manuels Les manuels concernant les progiciels de langage LIST, CONT, LOG et SCL contiennent
LIST, CONT, LOG, SCL1 aussi bien des instructions pour lutilisateur que la description du langage. Vous navez be-
soin, pour la programmation dun S7-300/400, que de lun de ces langages, mais pouvez les
mlanger lintrieur dun projet si besoin est. Il est conseill, lors de la premire utilisation
des langages, de se familiariser avec la mthodologie de la cration de programmes laide du
manuel.
Dans le logiciel, vous pouvez appeler laide en ligne qui rpondra vos questions dtail-
les sur lutilisation des diteurs et compilateur associs.
Manuels Les langages GRAPH, HiGraph et CFC offrent des possibilits supplmentaires pour la rali-
GRAPH1, HiGraph1, CFC1 sation de commandes squentielles, de graphes dtat ou de cblages graphiques de blocs. Ces
manuels contiennent aussi bien des instructions pour lutilisateur que la description du lan-
gage. Il est conseill, lors de la premire utilisation de ces langages, de se familiariser avec la
mthodologie de la cration de programmes laide du manuel.
Dans le logiciel, vous pouvez appeler laide en ligne (except pour HiGraph) qui rpondra
vos questions dtailles sur lutilisation des diteurs et compilateurs associs.
1 Progiciels optionnels pour le logiciel systme de S7-300/400
Structure du La connaissance thorique des programmes S7 est suppose acquise. Elle est prsen-
manuel te dans le manuel de programmation /234/. Puisque la mise en uvre des progiciels
de langage requiert le logiciel de base, vous devriez tre familiaris avec lutilisa-
tion de ce dernier, dcrite dans le guide de lutilisateur/234/.
Ce manuel est organis daprs les thmes suivants :
S Le chapitre 1 contient des informations gnrales sur la programmation avec
SCL.
S La chapitre 2 traite de la conception dun processus en sappuyant sur un exem-
ple que vous avez la possibilit de mettre en application.
S Le paragraphe 3-6 vous montre comment utiliser lenvironnement de dveloppe-
ment de SCL. Vous y apprendrez vous servir de lditeur, du compilateur et du
dbogueur de SCL.
S Les chapitres 7 9 constituent la partie de rfrence, qui vous donne des infor-
mations dtailles sur la fonction de chaque instruction de SCL.
En annexe vous trouverez :
S La reprsentation syntaxique complte de SCL.
S Un glossaire dans lequel les termes essentiels sont expliqus.
S Un index vous permettant de localiser rapidement les termes principaux.
Conventions Les renvois dautres publications sont indiqus laide de numros entre barres
obliques /.../. Vous trouverez, laide de ces numros, le titre exact de ces publica-
tions dans la bibliographie lannexe D.
Aide Adressez-vous votre agence Siemens pour toute question sur le logiciel dcrit
supplmentaire laquelle vous ne trouveriez pas de rponse dans la documentation papier ou dans
laide en ligne. Vous trouverez les adresses des agences Siemens dans le monde
lannexe des publications /70/ ou /100/, dans les catalogues ainsi que sur
Compuserve (go autforum).
En outre, notre ligne rouge est galement votre disposition :
Tel. +49(911) 895-7000 (Fax 7001)
Si vous avez des questions ou des remarques sur le prsent manuel, nous vous prions
de complter le formulaire la fin du manuel et de lenvoyer ladresse indique.
Nhsitez pas galement indiquer votre apprciation personnelle du manuel.
Nous proposons des cours pour faciliter lapprentissage des automates programma-
bles SIMATIC S7. Adressez-vous votre centre de formation ou notre centre prin-
cipal :
D-90327 Nrnberg, tl. 19/ 49 / 911 / 895 3154.
Avant-propos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iii
1 Prsentation du produit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-1
1.1 Prsentation de SCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2
1.2 Avantages offerts par SCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-3
1.3 Caractristiques de lenvironnement de dveloppement . . . . . . . . . . . . . . . . . . . . . 1-5
2 Dveloppement dun programme SCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-1
2.1 Prsentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-2
2.2 Enonc de la tche rsoudre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-3
2.3 Solution utilisant des blocs SCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-5
2.3.1 Dlimitation des tches partielles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-5
2.3.2 Choix et affectation des blocs possibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-6
2.3.3 Dfinition des interfaces entre les blocs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-7
2.3.4 Dfinition de linterface dentre/sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-9
2.3.5 Programmation des blocs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-10
2.4 Programmation du bloc dorganisation CYCLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-11
2.5 Programmation du bloc fonctionnel SAISIE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-12
2.6 Programmation du bloc fonctionnel CALCUL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-17
2.7 Programmation de la fonction CARRE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-21
2.8 Donnes de test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-22
Annexes
Caractristiques Pour pouvoir utiliser SCL, il vous faut une console de programmation SIMATIC ou
techniques un PC ( partir du processeur 80486, mmoire RAM de 16 Mo).
Elments de langage
Oprateurs Puissance/arithmtique
Comparaisons/
Combinaisons
Fonctions Temporisations/Compteurs
Appels de blocs fonctionnels
Langage de SCL (Structured Control Language) est un langage de programmation volu proche
programmation du PASCAL, conforme une norme sur les automates programmables.
volu
La norme DIN EN 61131-3 (qui correspond la norme internationale CEI 1131-3) normalise
les langages de programmation destins aux automates programmables. La partie
traitant du texte structur constitue le fondement de SCL. Vous trouverez plus de
dtails ce sujet dans la table de correspondance la norme dans le fichier
NORM_TBL.WRI (anglais) ou NORM_TAB.WRI (allemand) de STEP 7.
Outre les lments du langage volu, SCL dispose galement dlments de langage
spcifiques aux automates programmables, comme les entres, sorties, temporisations,
mmentos, appels de blocs etc.. SCL complte et largit ainsi le spectre du logiciel de
programmation STEP 7 avec ses langages de programmation CONT, LOG et LIST.
Compilateur
Editeur Dbogueur
squentiel
Langage de SCL propose non seulement tous les avantages dun langage de programmation vo-
programmation lu, mais galement des proprits qui ont tout particulirement t conues pour
volu permettre une programmation structure, comme par exemple :
S la structure de blocs de STEP 7,
S des modles de blocs,
S la compatibilit avec STEP 5.
Conservation de la SCL permet de rsoudre de manire optimale les diverses tches qui composent un
structure de bloc projet dautomatisation, si bien quil peut tre mis en uvre efficacement avec
de STEP 7 STEP 7 dans chaque phase du projet.
En appliquant en particulier le concept de blocs de STEP 7, SCL permet comme
LIST, LOG et CONT, la programmation norme de blocs.
Blocs STEP 7
Types de blocs De par leur fonction, leur structure ou leur utilisation, les blocs de STEP 7 sont des
sections limites dun programme utilisateur. SCL vous permet de crer les blocs
suivants :
Blocs prdfinis Vous ntes pas amens dfinir chaque fonction par vous mme, mais avez la pos-
sibilit dutiliser des blocs prdfinis. Ils se trouvent dans le systme dexploitation
de lunit centrale ou dans des bibliothques (S7lib) du logiciel de base STEP 7 et
peuvent tre utiliss pour programmer des fonctions de communication. Il sagit des
types de blocs suivants :
Compatibilit des Les blocs programms dans SCL sont compatibles avec les blocs LIST, CONT et
blocs LOG. Ceci signifie quun bloc programm dans SCL peut appeler un bloc pro-
gramm dans LIST, CONT ou LOG et inversement. Ainsi, les langages de program-
mation STEP 7 et SCL (logiciel optionnel) se compltent parfaitement.
Compatibilit avec A quelques rares exceptions prs, la compatibilit ascendante des blocs crs avec
STEP 5 SCL dans STEP 5 est assure, ce qui signifie que ces blocs peuvent galement tre
dits, compils et tests avec SCL pour STEP 7.
Mthodes de Grce des mthodes modernes de gnie logiciel, SCL applique la programmation
programmation structure.
Apprentissage Une exprience succincte dans un langage de programmation volu est suffisante
pour pouvoir aisment apprendre utiliser SCL, car lventail des lments de lan-
gage de SCL est orient vers de tels langages volus.
Editeur Lditeur de SCL sert diter des textes quelconques. Il vous permet principalement
de crer et dditer des fichiers source pour vos programmes STEP 7. Vous pouvez
programmer un ou plusieurs blocs dans un fichier source :
Editeur
Bloc 1
.
.
Bloc i
Fichier source j
. .
Fichier source 1
Compilateur Aprs avoir cr votre fichier source avec lditeur de SCL, vous devez le compiler
en code machine.
Bloc 1
.
.
Bloc i
ou
Compilateur
Fichier source 1 squentiel
.
.
Fichier source j Blocs dans le pro-
gramme S7
Fichier dinformations compilation
Dbogueur
2.1 Prsentation
Objectifs Lexemple propos vous montre comment utiliser au mieux les possibilits offertes
par SCL. Le prsent chapitre a pour but de rpondre aux questions nonces
ci-aprs que vous vous posez le plus frquemment :
S comment puis-je procder pour dvelopper un programme dans SCL ?
S quels sont les lments de langage de SCL appropris la rsolution de cette
tche ?
S quelles sont les fonctions de test mises ma disposition ?
Configuration Vous pouvez excuter le programme donn en exemple dans un automate SIMATIC
matrielle S7-300 ou SIMATIC S7-400 en utilisant comme priphries :
S un module dentre avec 16 voies
S un module de sortie avec 16 voies
Fonctions de test Le programme a t conu pour pouvoir tre test rapidement laide des commuta-
teurs de lentre et des organes daffichage de la sortie. Pour effectuer un test com-
plet en utilisant les fonctions de test de SCL, reportez-vous au chapitre 6.
Vous disposez en outre des fonctions du logiciel de base STEP 7 quel que soit le
langage utilis.
Prsentation Il sagit de saisir, de trier puis de traiter des valeurs de mesure laide du module
dentre. Pour une plage de valeurs de mesure comprise entre 0 et 255, il faut un
octet pour effectuer la saisie. Comme fonctions, lon utilisera la racine carre et le
carr. Les rsultats doivent tre affichs sur le module de sortie, ce qui ncessite un
mot. Cest un octet dentre qui doit commander le programme.
Saisie des valeurs Une valeur de mesure que vous slectionnez sur les 8 commutateurs de saisie doit
de mesure tre enregistre dans le tablau des valeurs de mesure de la mmoire au moment o
un front est dtect sur le commutateur de saisie voir figure 2-1. Ce tableau de
valeurs de mesure doit tre organis en mmoire circulante 8 entres au maxi-
mum.
Traitement des Le traitement doit comporter les deux tapes suivantes : tri des valeurs de mesure et
valeurs de mesure calcul des rsultats, voir figure 2-1 :
Commutateur de
saisie Valeur de mesure Commutateur de tri
X 1 1 1 1 1 1 1 1 X
255
Slection de la Puisque la sortie ne peut afficher quune seule valeur la fois, vous devez pouvoir
sortie choisir entre :
S la slection dun lment dans une liste,
S la slection de la valeur de mesure, de la racine carre ou du carr.
Les rglages suivants des commutateurs doivent permettre dadresser un lment
dans une liste afin de le slectionner :
S Trois commutateurs permettent de slectionner un codage qui est valid
lorsquun front est dtect sur le quatrime commutateur, le commutateur de
codage. Ceci permet de dterminer ladresse de la sortie voir figure 2-2.
S La mme adresse fournit trois valeurs de sortie, savoir la valeur de mesure, la
racine carre et le carr. Deux inverseurs reprsents la figure 2-2 vous
permettent de slectionner lune dentre-elles.
Prsentation Nous vous proposons de rsoudre la tche nonce sous forme de programme SCL
structur. Il sagit dun programme modulaire, cest--dire divis en blocs traitant
une ou plusieurs tches partielles. Comme dans les langages de programmation de
STEP 7, vous disposez dans SCL de plusieurs types de blocs. Pour plus de dtails,
reportez-vous aux chapitres 1, 7 et 8.
Prsentation Les tches partielles sont reprsentes la figure 2-3 sous forme de pavs. Les
zones rectangulaires grises reprsentent les blocs. La disposition des blocs de code
de la gauche vers la droite correspond leur ordre dappel :
SAISIE_DONNEES Enregistre-
ment des Sens de d- Sens de d-
Bloc de donnes (DB) placement du placement
donnes
programme des donnes
Figure 2-3 Formation de blocs pour la rsolution des diverses tches partielles
CYCLE Un programme utilisateur ne peut tre dmarr que dans un OB. Puisque les valeurs
de mesure vont continuellement tre fournies et devoir tre saisies, vous devez utili-
ser un OB dappel cyclique (OB1). Une partie de lexcution lentre des donnes
et de la sortie des donnes va tre programme dans lOB.
SAISIE Pour rsoudre la tche partielle de saisie des valeurs de mesure vous devez utiliser
un bloc possdant une mmoire, cest--dire un FB, car certaines donnes locales
(par exemple la mmoire circulante) doivent tre conserves dun cycle de pro-
gramme au suivant. Cest dans le bloc de donnes dinstance SAISIE_DONNEES,
galement appel mmoire que va seffectuer lenregistrement des donnes.
Le mme FB peut galement raliser ladressage et la slection de la sortie,
puisquil dispose des donnes requises.
CALCUL Dans le choix du type de bloc utiliser pour effectuer le tri des valeurs de mesure et
le calcul des rsultats, il faut tenir compte du fait quune mmoire de sortie doit tre
cre pour contenir les rsultats des calculs de la racine carre et du carr de chaque
valeur de mesure.
Seul un FB rpond ces critres. Puisquil est appel par un autre FB de niveau hi-
rarchique suprieur, lutilisation de son propre DB savre inutile et ses donnes
dinstance peuvent tre inscrites dans le bloc de donnes dinstance du FB appelant.
SQRT (racine carre) Pour la rsolution de la tche partielle de calcul de la racine carre ou du carr, une
et CARRE FC convient le mieux, car la sortie du rsultat correspond la valeur de la fonction.
En outre, ce calcul ne ncessite pas de donnes devant tre conserves pendant plus
dun cycle de programme.
Pour le calcul de la racine carre, vous pouvez utiliser la fonction standard de SCL,
la fonction SQRT. Pour calculer le carr, vous allez crer la fonction CARRE qui
doit galement vrifier les limites de la plage des valeurs autorise.
Prsentation Pour dfinir linterface dun bloc un autre, vous devez dclarer ses paramtres
formels. Dans SCL, il existe les possibilits suivantes :
S paramtres dentre : dclaration avec VAR_INPUT
S paramtres de sortie : dclaration avec VAR_OUTPUT
S paramtres dentre/sortie : dclaration avec VAR_IN_OUT
Lorsque vous appelez un bloc, des donnes dentre lui sont transmises comme
paramtres effectifs. Aprs retour au bloc appelant, les donnes de sortie sont pr-
pares pour y tre valides. Une FC peut fournir son rsultat sous forme de valeur
de la fonction (pour plus dinformations, reportez-vous au chapitre 16).
SQRT et CARRE Ces fonctions sont appeles par le FB CALCUL. Elles requirent une valeur dentre
et fournissent leur rsultat comme valeur de la fonction, voir tableau2-3.
Prsentation La figure 2-4 reprsente linterface dentre/sortie. Observez que pour lentre/sortie
sous forme doctet, loctet de poids faible se trouve en haut et loctet de poids fort
en bas. Pour lentre/sortie sous forme de mot cest linverse :
Organes daffichage
Bloc CPU
Commutateurs
dalimen- 314
tation
Adresse en mmoire :
Systme entre : 0
dautomatisation sortie : 4
Saisie Sortie
Module dentre Voie Signification
0 Validation de la valeur de mesure
1 Dmarrage du tri et du calcul
Commutateurs
sinon 0
07 Octet de poids faible du mot de sortie
Octet 1 (bits 0 7) :
valeur de mesure ou rsultat :
racine carre ou carr
Programmation de Une fois que vous avez dfini les interfaces, vous pouvez crire les blocs spar-
blocs ment. Il est prfrable de procder de haut en bas, cest--dire dans lordre CYCLE,
SAISIE, CALCUL et CARRE, comme dcrit ci-aprs.
La compilation de blocs impose quun bloc ait t cr avant dtre utilis, cest--
dire avant dtre appel par un autre bloc. Dans la source SCL, lordre des blocs est
donc le suivant : CARRE, CALCUL, SAISIE et CYCLE (pour des informations ce
sujet, reportez-vous au chapitre 8).
Programmation Vous contribuez une meilleure lisibilit du programme si vous affectez des mn-
symbolique moniques aux adresses des modules et aux blocs. Vous devez pour cela complter
une table de mnmoniques, comme dcrit la figure 2-5 (voir chapitre 7). Vous pou-
vez former les mnmoniques en appliquant la convention de dsignation des IDEN-
TIFICATEURS ou des mnmoniques (par exemple Entre 0.0 ), voir annexe A.
(*##########################################################################################
Etapes suivre Nous avons slectionn un OB1 car STEP 7 lappelle cycliquement. Il ralise les
tches suivantes dans le programme :
S appel du bloc fonctionnel SAISIE auquel il fournit les donnes de saisie et de
commande,
S validation des donnes de rsultat du bloc fonctionnel SAISIE,
S sortie des valeurs afficher.
La zone de donnes temporaires donnes_systme de 20 octets se trouve au
dbut de la section de dclaration (voir aussi chapitre 8).
ORGANIZATION_BLOCK CYCLE
(**************************************************************************************
Le FB CYCLE correspond lOB1, c.-d. il est appel cycliquement par le systme S7
1re partie : appel du bloc fonctionnel et saisie des valeurs dentre
2nde partie : validation des valeurs de sortie et sortie avec slection
**************************************************************************************)
VAR_TEMP
donnes_systme : ARRAY[0..20] OF BYTE; // Zone de lOB1
END_VAR
BEGIN
(* 1re partie : *****************************************************************)
SAISIE.SAISIE_DONNEES(
entre_val_mesure := WORD_TO_INT(saisie),
nouv_val := Entre 0.0, //commutateur de saisie sous forme
//de mnmonique
nouv_tri := Commutateur_de_tri,
choix_fonction := Commutateur_de_fonction,
nouv_slection := Commutateur_de_codage,
slection := Codage);
(* 2nde partie : ******************************************************************)
IF Commutateur_de_sortie THEN //Commutation de la sortie
Sortie := SAISIE_DONNEES.sortie_rsultat; //Racine carre ou carr
ELSE
Sortie := SAISIE_DONNEES.sortie_val_mesure; //Valeur de mesure
END_IF;
END_ORGANIZATION_BLOCK
Conversion du La valeur de mesure fournie lentre possde le type de donnes BYTE et doit tre
type de donnes convertie dans le type INT : vous devez donc effectuer une conversion de WORD en
INT, la conversion prcdente de BYTE en WORD tant effectue automatiquement
par le compilateur (voir chapitre 18). La conversion de la sortie savre inutile, puis-
que son type de donnes dclar dans la table des mnmoniques est INT, voir
figure 2-5.
Etapes suivre Cest le type de bloc FB qui a t choisi, car des donnes doivent tre enregistres
dun cycle de programme au suivant. Il sagit de variables statiques, dclares dans
la partie dclarative VAR, END_VAR , voir tableau 2-4.
Les variables statiques sont des variables locales dont les valeurs subsistent au-del
des cycles de blocs. Elles servent stocker les valeurs dun bloc fonctionnel et sont
ranges dans le bloc de donnes dinstance.
FUNCTION_BLOCK SAISIE
(*******************************************************************************
1re partie : Saisie des valeurs de mesure
2me partie : Dmarrage du tri et du calcul
3me partie : Evaluation du codage et prparation de la sortie
*******************************************************************************)
Tenez compte des valeurs par dfaut qui sont affectes aux variables lors de linitia-
lisation du bloc (aprs son chargement dans la CPU). Linstance locale pour le FB
CALCUL est galement dclare dans la partie dclarative VAR, END_VAR .
Vous utiliserez son nom pour appeler et adresser ultrieurement les paramtres de
sortie. Comme mmoire des donnes, cest linstance globale SAISIE_DONNEES
que lon utilise.
CONST
LIMITE := 7;
NOMBRE := LIMITE + 1;
END_CONST
VAR_INPUT
entre_val_mesure : INT; // Nouvelle valeur de mesure
nouv_val : BOOL; // Valider la valeur de mesure dans la mmoire
// circulante valeurs_mesure
nouv_tri : BOOL; // Trier les valeurs de mesure
choix_fonction : BOOL; // Choix de la fonction de calcul de la racine
// carre ou du carr
nouv_slection : BOOL; // Validation de ladresse de sortie
slection : WORD; // Adresse de sortie
END_VAR
VAR_OUTPUT
sortie_rsultat : INT; // Valeur calcule
sortie_val_mesure : INT; // Valeur de mesure correspondante
END_VAR
VAR
valeurs_mesure : ARRAY[0..LIMITE] OF INT := 8(0);
mmoire_rsultat : ARRAY[0..LIMITE] OF
STRUCT
racine_carre : INT;
carr : INT;
END_STRUCT;
index : INT := 0;
anc_val : BOOL := TRUE;
anc_tri : BOOL := TRUE;
anc_slection : BOOL := TRUE;
adresse : INT := 0; //Adresse de sortie convertie
instance_calcul : CALCUL; //Dclaration de linstance locale
END_VAR
Saisie des valeurs Si le paramtre dentre nouv_val est diffrent de anc_val , une nouvelle
de mesure valeur de mesure est inscrite dans la mmoire circulante.
Dmarrage du tri et Le tri et le calcul sont dmarrs par lappel du bloc fonctionnel CALCUL, si le para-
du calcul mtre dentre nouv_tri est diffrent de anc_tri .
Evaluation du La saisie du codage seffectue par mots : daprs les conventions appliques dans
codage et SIMATIC, ceci signifie que les 8 bits de poids fort du mot dentre sont attribus au
prparation de la groupe de commutateurs du haut (octet 0) et les 8 bits de poids faible au groupe de
sortie commutateurs du bas (octet 1). La figure 2-9 indique o se trouvent les commuta-
teurs sur lesquels vous devez effectuer le codage :
0 0 0 0
1 1 1 1 adresse
2 2 2 2
Commutateur
3
4
3
4 3
4
3
4
pour valeur 5 5 5 5
de codage 6 6 6 6
Commutateur 7 7 7 7
de codage Octet 0
0 8 8 8
1 9 9 9
2 10 10 10
3 11 11 11
4 12 12 12
5 13 13 13
6 14 14 14
7
Octet 1
15
EW0
15 15
Calcul de ladresse La figure 2-9 montre galement le calcul de ladresse : les bits 12 14 du mot den-
tre EW0 contiennent le codage qui est valid lorsquun front est dtect sur le com-
mutateur de codage (bit 15). Le dcalage vers la droite laide de la fonction stan-
dard SHR et le masquage des bits significatifs laide dun masque AND permet de
dterminer l adresse .
Cest avec cette adresse que les composantes du tableau (rsultat du calcul et valeur
de mesure correspondante) sont inscrites dans les paramtres de sortie. Cest le
choix_fonction qui dtermine sil sagit de la racine carre ou du carr.
Un front est dtect sur le commutateur de codage lorsque nouv_val est diffrent
de anc_val .
SAISIE
Bloc fonctionnel
Dbut
oui
Modifier
nouvelle
valeur ?
Inscrire valeur de mesure La mmoire circulante est ralise
non dans mmoire circulante, avec lopration MOD : lorsque la li-
recalculer lindex mite est atteinte, elle recommence au
dbut.
oui
Modifier
nouveau
tri ?
Trier la mmoire circulante et ef-
CALCUL fectuer les calculs (crer cet
non effet le tableau des rsultats).
oui
Modifier
nouveau
code ?
Dabord dcaler les bits non
Evaluation du codage et significatifs vers le bord droit,
dtermination de ladresse de sortie puis masquer les places inuti-
les laide de AND
TRUE
Choix
fonction ?
FALSE
Charger :
Charger valeur de mesure inscrire les lments de la liste
avec les adresses de sortie dans
les paramtres de sortie pour en-
suite afficher leurs valeurs.
Fin
BEGIN
END_FUNCTION_BLOCK
FUNCTION_BLOCK CALCUL
(******************************************************************************
1re partie : Tri de la mmoire circulante avec les valeurs de mesure
2me partie : Dmarrage du calcul des rsultats
*******************************************************************************)
CONST
LIMITE := 7;
END_CONST
VAR_IN_OUT
mmoire_tri : ARRAY[0..LIMITE] OF INT;
END_VAR
VAR_OUTPUT
mmoire_calcul : ARRAY[0..LIMITE] OF
STRUCT
racine_carre : INT;
carr : INT;
END_STRUCT;
END_VAR
VAR_TEMP
changer : BOOL;
index, aux : INT;
valeur_r, rsultat_r : REAL;
END_VAR
mmoire_tri
valeurs_mesure
mmoire_calcul
CALCUL
Comment Les valeurs de mesure sont tout dabord tries dans la mmoire circulante, puis les
proocder calculs sont effectus :
S Mthode de lalgorithme de tri
Pour effectuer le tri de la mmoire circulante, la mthode utilise est celle de
lchange permanent des valeurs o deux valeurs conscutives sont compares entre
elles et changes jusqu ce que lordre de tri soit atteint. La mmoire utilise est le
paramtre dentre/sortie mmoire_tri .
S Dmarrage du calcul
Lorsque le tri est ralis, une boucle appelle les fonctions CARRE pour llvation
au carr et SQRT pour le calcul de la racine. Leurs rsultats sont enregistrs dans le
tableau structur mmoire_calcul .
Dbut de linstruction
REPEAT changer := FALSE
Dbut de linstruction
FOR I := LIMITE
I signifie index
non
I >= 1 ?
oui
oui
mmoire_tri [I-1] >
mmoire_tri [I]
?
Echanger les valeurs
de la mmoire de tri [I-1]
non
et de la mmoire de tri [I]
ECHANGER = TRUE
I := I - 1
Fin de linstruction
FOR
FALSE
Dbut de linstruction I := 0
FOR
non
I <= LIMITE ?
oui
I := I + 1
Fin de linstruction
FOR
Fin
BEGIN
(* 1re partie Tri :********************************************************************
procd de tri par change de paires de cls : changer les valeurs par
paires jusqu ce que la mmoire des valeurs de mesure soit trie. *)
REPEAT
changer := FALSE;
FOR index := LIMITE TO 1 BY -1 DO
IF mmoire_tri[index-1] > mmoire_tri[index] THEN
aux := mmoire_tri[index];
mmoire_tri[index] := mmoire_tri[index-1];
mmoire_tri[index-1] := aux;
changer := TRUE;
END_IF;
END_FOR;
UNTIL NOT changer
END_REPEAT;
Comment procder Il faut avant tout vrifier si la valeur dentre pour laquelle le rsultat dpasserait la
plage des valeurs des entiers autorise est atteinte. Si tel est le cas, cest la valeur
maximale des entiers qui est fournie. Sinon cest le calcul du carr qui est ralis.
Le rsultat est donn comme valeur de la fonction.
Conditions Pour raliser le test, un module dentre doit tre enfich ladresse 0 et un module
de sortie ladresse 4 (voir figure 2-4).
Avant de commencer le test, les 8 commutateurs du groupe suprieur doivent tre
positionns vers la gauche ( 0 ) et les 8 commutateurs du groupe infrieur vers la
droite ( 1 ).
Les valeurs initiales des variables tant galement testes, vous devez effectuer un
nouveau chargement des blocs dans la CPU.
Etapes du test Les tapes du test sont dcrites dans le tableau 2-5.
Test En vous inspirant des explications sur les commutateurs de commande figurant dans
complmentaire le tableau 2-6 et des exemples de test du tableau 2-7 vous pouvez dfinir vous-
mme les tapes que vous souhaitez tester :
S Lentre seffectue avec les commutateurs : les 8 du haut sont destins aux com-
mandes, les 8 du bas servent slectionner la valeur de mesure.
S La sortie a lieu sur les organes daffichage : le groupe du haut affiche loctet de
sortie de poids fort, celui du bas loctet de sortie de poids faible.
Le tableau 2-7 contient 8 valeurs de mesure exemple classes dj dans le bon or-
dre.
Saisissez les valeurs dans lordre que vous voulez. Choisissez cet effet la combi-
naison binaire voulue et validez la valeur en actionnant le commutateur de saisie.
Une fois que toutes les valeurs ont t saisies, vous dmarrez le tri et le calcul en
actionnant le commutateur de tri. Vous avez ensuite la possibilit de visualiser les
valeurs de mesure tries ou alors les rsultats racine carre ou carr.
Introduction Lutilisation du logiciel SCL requiert une autorisation spcifique pour le produit
(licence dutilisation). Le logiciel ainsi protg ne peut tre utilis que si lautorisa-
tion requise pour le programme ou le logiciel est installe sur le disque dur de la PG
ou du PC correspondant.
Disquette Vous devez possder la disquette dautorisation protge fournie la livraison. Elle
dautorisation contient lautorisation ainsi que le programme AUTHORS ncessaire lafficher,
linstaller et la dsinstaller.
Le nombre dautorisations possibles est dfini sur cette disquette par un compteur
qui est dcrment de 1 pour chaque nouvelle autorisation utilise. Lorsque le
compteur est zro, il nest plus possible dinstaller dautorisation avec cette dis-
quette.
Vous trouverez des informations dtailles, de mme que les rgles relatives aux
autorisations dans le guide de lutilisateur /231/.
Avertissement
! Tenez compte des instructions donnes dans le fichier LISEZMOI.TXT sur la disquette
dautorisation. En cas de leur non-respect, lautorisation risque dtre perdue irrm-
diablement.
Installation de Vous devez fournir lautorisation lorsque vous y tes sollicit durant la premire
lautorisation la installation de votre logiciel par un message correspondant. Procdez de la manire
mise en service suivante :
1. Introduisez la disquette dautorisation dans le lecteur lorsque vous y tes sollicit
par un message.
2. Confirmez ensuite ce message.
Lautorisation est alors installe sur une unit physique (ceci signifie que votre PG
ou PC ont en mmoire que vous tes titulaire de lautorisation).
Installation Si vous dmarrez le logiciel SCL sans quune autorisation soit installe, un message
ultrieure de vous en informe. Pour linstaller ultrieurement, appelez le programme AUTHORS
lautorisation figurant sur la disquette dautorisation. Il vous permet dafficher, dinstaller et de
dsinstaller les autorisations laide de menus.
Nota
Pour linstallation de lautorisation pour SCL, indiquez toujours C: comme unit
cible.
Dsinstallation de Si une nouvelle autorisation est requise, par exemple dans le cas o vous voulez
lautorisation formater lunit sur laquelle elle se trouve, vous devez pralablement la sauvegar-
der . A cet effet, il vous faut la disquette dautorisation originale.
Pour rapatrier lautorisation sur la disquette originale, procdez de la manire sui-
vante :
1. Introduisez la disquette dautorisation originale dans le lecteur de 3,5 pouces.
2. Appelez le programme AUTHORS.EXE partir de ce lecteur.
3. Choisissez la commande Autorisation Dsinstaller.
4. Dans la bote de dialogue qui souvre, indiquez lunit sur laquelle se trouve
lautorisation, puis confirmez. La liste de toutes les autorisations dtectes sur
lunit correspondante saffiche.
5. Slectionnez lautorisation que vous souhaitez dsinstaller, puis confirmez. Si la
dsinstallation est russie, le message suivant saffiche
Lautorisation <Nom> a t retire avec succs du lecteur <X:>.
6. Confirmez ce message.
Vous obtenez ensuite nouveau la liste des autorisations restantes sur lunit corres-
pondante. Fermez cette bote de dialogue si vous ne souhaitez pas dsinstaller dau-
tre autorisation.
Vous pouvez ensuite nouveau utiliser cette disquette pour installer une autorisa-
tion.
En cas de Si une dfaillance se produit sur votre disque dur avant que vous nayez dsinstall
dfaillance de lautorisation, veuillez contacter le service SIEMENS comptant.
votre disque dur...
Conditions Avant de pouvoir raliser linstallation de SCL, Windows 95 doit tre dmarr et le
logiciel STEP 7 doit tre charg.
Au cas o une Si le programme dinstallation dtecte une version de SCL dj installe sur loutil
version de SCL est de dveloppement, un message vous en informe et les possibilits suivantes soffrent
dj installe vous :
S abandonner linstallation (pour dsinstaller lancienne version de SCL sous
Windows 95 puis redmarrer linstallation) ou
S poursuivre linstallation et craser lancienne version par la nouvelle.
Avant de procder une installation, nous vous recommandons dans tous les cas de
dsinstaller une ventuelle ancienne version. Le simple crasement dune ancienne
version a pour inconvnient de conserver certaines parties lors dune dsinstallation
ultrieure.
Durant la procdure dinstallation, vous serez amen rpondre des questions ou
choisir des options dans des botes de dialogue. Pour y parvenir le plus rapidement
possible, nous vous recommandons de tenir compte des informations suivantes.
Niveau Toutes les langues disponibles et tous les exemples requirent environ 8 Mo de m-
dinstallation moire.
Autorisation La vrification de la prsence dune autorisation sur le disque dur est ralise durant
linstallation. Si tel nest pas le cas, un message vous informe que le logiciel ne peut
tre utilis quavec une autorisation. Vous avez alors la possibilit de la fournir
immdiatement ou alors de poursuivre linstallation et de la fournir ultrieurement.
Dans le premier cas, il vous suffit dintroduire la disquette dautorisation dans le
lecteur lorsque lon vous la demandera, puis de confirmer. Des informations ce
sujet vous sont donnes au paragraphe 3.1.
Installation russie Si linstallation est russie, un message correspondant vous en informe lcran.
Dmarrage depuis Aprs avoir install le logiciel SCL sur votre PG, vous pouvez dmarrer SCL en
Windows utilisant le bouton Dmarrer de la barre des tches de Windows 95 (via loption
SIMATIC / STEP 7 )
Dmarrage depuis La manire la plus rapide de dmarrer SCL consiste positionner le curseur sur une
SIMATIC Manager source SCL et deffectuer un double-clic. Pour plus dinformations reportez-vous au
guide de lutilisateur /231/.
La figure 4-1 montre la fentre SCL aprs le dmarrage du logiciel SCL.
Nota
Le guide de lutilisateur de Windows 95 ou le didacticiel de laide en ligne corres-
pondant vous donneront des informations dtailles sur lutilisation standard et sur
les options de Windows 95.
Prsentation Comme les autres fentres de STEP 7, les fentres de SCL comportent les compo-
santes standard suivantes, voir figure 4-2 :
Barre de titre :
elle comporte le titre de la fentre ainsi que les boutons de commande de la
fentre.
Barre des menus :
elle comporte tous les menus disponibles dans la fentre.
Barre doutils :
elle contient tous les boutons permettant dexcuter rapidement les commandes
les plus frquentes.
Zone de travail :
elle comporte les diverses fentre ddition, de compilation ou de test.
Barre dtat :
elle affiche ltat de lobjet slectionn ainsi que des informations supplmen-
taires.
Barre doutils
Zone de travail
Modification des Vous avez la possibilit dadapter les lments suivants vos exigences particuli-
composantes res :
affichage de la barre doutils
affichage de la barre des points darrt
affichage de la barre dtat
Adaptation de la Vous avez la possibilit dafficher ou de masquer la barre doutils. Il vous suffit
barre doutils dactiver ou de dsactiver la commande Affichage Barre doutils. Si la com-
mande est active, elle est coche.
Adaptation de la Vous pouvez galement afficher ou masquer la barre des points darrt. Il vous suffit
barre des points dactiver ou de dsactiver la commande Affichage Barre des points darrt. Si
darrt la commande est active, elle est coche.
Adaptation de la Vous avez galement la possibilit dafficher ou de masquer la barre dtat. Il vous
barre dtat suffit dactiver ou de dsactiver la commande Affichage Barre dtat. Si la com-
mande est active, elle est coche.
Adaptation de Lditeur et le compilateur vous offrent des options qui ont pour but de vous faciliter
lenvironnement le travail.
options de cration de blocs
options du compilateur
options de lditeur
Cration du bloc Vous pouvez, par exemple, dfinir si les blocs existants doivent tre crass durant
la compilation ou pas. Choisissez cet effet la commande Outils Paramtres et
cliquez sur longlet Cration du bloc dans la bote de dialogue Paramtres .
Une description dtaille des options figure au paragraphe 5.5.
Adaptation du Vous pouvez adapter la procdure de compilation vos exigences particulires. Une
compilateur description dtaille des options figure au paragraphe 5.5.
Choisissez cet effet la commande Outils Paramtres et cliquez sur longlet
Compilateur dans la bote de dialogue Paramtres .
Prsentation Une source SCL est principalement compose de texte au kilomtre. Des fonctions
ddition spcialement dveloppes pour SCL vous assistent lors de la saisie du
texte.
Fentre ddition Vous entrez lobjet source pour votre programme utilisateur par saisie sur le clavier.
Vous avez la possibilit douvrir plusieurs fentres du mme ou dun autre objet
source. La commande Fentre vous permet den modifier la disposition.
proj1\Station SIMATIC 300 (1)\CPU 314 (1)\..._source 1
FUNCTION_BLOCK FB11
VAR
I:INT;
Tableau:ARRAY[1..10,1..20] OF REAL;
REGULATEUR:
ARRAY[1..3,1..4] OF INT:=54, 736, 83, 77,
1289, 10362, 385, 2,
60, 37, 7, 103;
END_VAR
BEGIN
Pour obtenir de laide, appuyez sur F1. Insertion 0:0 hors ligne
Slection de texte Pour slectionner une zone de texte dans SCL, vous positionnez le curseur au dbut
de la zone slectionner, puis tout en maintenant le bouton de la souris enfonc,
vous faites glisser la souris sur la zone correspondante.
Vous avez galement la possibilit de slectionner
lensemble du texte dune source en choisissant la commande Edition Slec-
tionner tout,
un mot en cliquant deux fois sur celui-ci ou
une ligne entire en cliquant 3 fois dessus.
Rechercher et La commande Edition Rechercher /Remplacer ouvre une bote de dialogue dans
remplacer laquelle vous pouvez rechercher une chane de caractres en vue de la remplacer par
dautres objets de texte.
Insertion de En vous permettant de respecter plus aisment les rgles de syntaxe, linsertion de
modles modles contribue une programmation plus efficace. Dans SCL, vous pouvez :
insrer des modles de bloc, en choisissant la commande Insertion Modle de
bloc.
insrer des structures de contrle, en choisissant la commande Insertion Struc-
ture de contrle.
Couper, copier, Le menu Edition vous propose comme laccoutume les commandes vous permet-
coller, effacer tant de couper, copier, coller et effacer des objets de texte.
Vous avez galement la possibilit de dplacer ou de copier des objets en les coupant/
collant laide de la souris (Drag&Drop).
Aller La commande de menu Edition Aller ouvre une bote de dialogue. Vous pouvez
y indiquer le numro de la ligne laquelle vous dsirez vous rendre, puis valider
votre choix par OK . Le curseur se placera alors au dbut de la ligne voulue.
Annuler, rtablir La commande de menu Edition Annuler permet dannuler la dernire action.
Vous pouvez, par exemple, rtablir une ligne efface. La commande Edition
Rtablir permet de rtablir une action venant dtre annule.
Conditions Avant de crer un programme avec SCL, vous devriez raliser les tches suivantes :
pralables
1. Crez un projet dans SIMATIC Manager.
2. Dans SIMATIC Manager, affectez chaque CPU une adresse de communication
dans le rseau.
3. Configurez et paramtrez lunit centrale et les modules de signaux.
4. Si vous souhaitez utiliser des mnmoniques pour les zones de mmoire de la
CPU ou pour les dsignations de blocs, vous devez crer une table de mnmoni-
ques.
Table de SCL aura recours cette table lors de la compilation. Vous crez et remplissez la
mnmoniques table des mnmoniques sous STEP 7.
Vous pouvez ensuite louvrir depuis le SIMATIC Manager ou directement dans SCL
grce la commande de menu Outils Table de mnmoniques.
Vous pouvez galement importer et modifier des tables de mnmoniques sous forme
de fichiers de texte (lditeur utilis tant indiffrent). Pour plus dinformations ce
sujet, reportez-vous au guide de lutilisateur /231/.
Comment procder Pour crer un programme utilisateur dans SCL, vous crez dabord une source SCL
dans laquelle vous pouvez diter un ou plusieurs blocs (OB, FB, FC, DB et UDT)
que vous allez ensuite compiler laide dune procdure squentielle. Aprs compi-
lation, ces blocs figureront dans le classeur Programme utilisateur (<AP-off>,
voir figure 5-1) du programme S7 correspondant, dans lequel est galement enregis-
tre la source.
Vous avez la possibilit de crer et dditer la source SCL avec lditeur intgr ou
avec un diteur standard quelconque. Dans le second cas, vous devez importer les
sources dans le projet avec SIMATIC Manager. Vous pouvez ensuite les ouvrir afin
de les diter ou de les compiler.
Prsentation Les sources que vous crez avec SCL sintgrent de la manire suivante dans la
structure dun programme S7 :
Programme S7
Blocs Bloc
(par exemple, FB1, OB1)
Sources Source
(par exemple, source SCL)
Mnmoniques
Crer une source Pour crer une source pour SCL, procdez de la manire suivante :
SCL
1. Choisissez la commande Fichier Nouveau ou cliquez sur le bouton Nou-
veau dans la barre doutils.
2. Slectionnez dans la bote de dialogue Nouveau le projet souhait et le clas-
seur des sources du programme S7 correspondant.
3. Ouvrez le classeur des sources et choisissez la commande Insertion Logiciel
S7 Source SCL.
4. Slectionnez la source et choisissez la commande Edition Proprits de lob-
jet. Entrez le nom de lobjet source dans la page donglet Fiche didentit .
Vous disposez de 24 caractres au maximum. La distinction entre les majuscules
et les minuscules joue un rle dans les noms de sources.
5. Effectuez un double clic sur la source. Une fentre vide dans laquelle vous pou-
vez diter la source SCL souvre.
Ouvrir une source Vous pouvez ouvrir un objet source cr et enregistr avec SCL afin de lditer et de
SCL le compiler.
Procdez de la manire suivante :
1. Choisissez la commande Fichier Ouvrir, ou cliquez sur le bouton Ouvrir .
2. Slectionnez le projet souhait et le programme S7 correspondant dans la bote
de dialogue Ouvrir .
3. Assurez-vous que le filtre Source SCL a t choisi et slectionnez le classeur
des sources.
4. Toutes les sources SCL du programme S7 correspondant saffichent dans la bote
de dialogue. Slectionnez lobjet que vous souhaitez ouvrir, puis confirmez par
OK ou effectuez un double-clic sur la source.
Vous pouvez ouvrir de la mme manire les sources que vous avez cres avec un
diteur standard, aprs les avoir importes dans le projet laide de SIMATIC
Manager.
Prsentation La saisie de sources SCL rpond des rgles de syntaxe bien prcises qui font partie
intgrante de la description du langage. Elles sont nonces en annexe.
proj1\Station SIMATIC 300 (1)\CPU 314 (1)\...\source 1
FUNCTION_BLOCK FB11
VAR
I:INT;
Tableau:ARRAY[1..10,1..20] OF REAL;
REGULATEUR:
ARRAY[1..3,1..4] OF INT:=-54, 736, -83, 77,
-1289, 10362, 385, 2,
60, -37, -7, 103;
END_VAR
BEGIN
Enregistrer une Dans SCL, lenregistrement dsigne lenregistrement dun fichier source. Les blocs
source SCL sont crs durant la compilation du fichier source et sont quant eux, enregistrs
automatiquement dans le rpertoire du programme correspondant.
Diverses possibilits soffrent vous pour enregistrer une source SCL :
Choisissez la commande Fichier Enregistrer, ou cliquez sur le bouton Enre-
gistrer dans la barre doutils.
La source SCL est mise jour.
Si vous souhaitez faire une copie du fichier SCL en cours, choisissez la com-
mande Fichier Enregistrer sous. Dans la bote de dialogue Enregistrer
sous qui souvre, vous pouvez indiquer le nom et le chemin de la copie.
Si vous choisissez la commande Fichier Fermer sans avoir pralablement
enregistr la source que vous avez modifie, vous devrez spcifier si vous sou-
haitez enregistrer les modifications, les ignorer ou encore annuler la commande
Fermer.
Choisir la commande Fichier Fermer revient cliquer sur le bouton Fer-
mer dans la barre doutils.
Lorsque vous choisissez la commande Fichier Quitter sans que la version en
cours des sources ouvertes ne soit enregistre, un dialogue vous est propos pour
chaque source afin denregistrer ou dignorer les modifications.
Imprimer une Vous pouvez imprimer les blocs, dclarations et instructions dune source SCL sur une
source imprimante que vous devez pralablement installer et configurer dans la gestion du sys-
tme de Windows. Procdez de la manire suivante :
Cliquez sur le bouton Imprimer dans la barre doutils ou choisissez la com-
mande Fichier Imprimer. Dans la bote de dialogue qui souvre, vous pouvez
choisir diverses options dimpression, comme par exemple la zone imprimer
ou le nombre de copies.
Confirmez par OK , pour envoyer le document sur limprimante.
Dfinir la mise en La commande Fichier Mise en page vous permet de dfinir le format de page de
page votre document.
Dfinir les en-ttes Vous pouvez dfinir les en-ttes et bas de page du document imprimer en choisis-
et bas de page sant la commande Fichier En-ttes et bas de page dans le gestionnaire de pro-
jets SIMATIC.
Aperu avant Avec la commande Fichier Aperu avant impression, vous avez la possibilit
impression de visualiser un document avant de limprimer. Son dition nest cependant pas pos-
sible.
Prsentation Avant de pouvoir excuter ou tester votre programme, vous devez le compiler. En
initiant le processus de compilation, vous activez un compilateur, qui possde les
proprits suivantes :
Il fonctionne daprs le principe du traitement par lots, ce qui signifie quil
considre une source SCL comme un ensemble. La compilation partielle (par
exemple ligne par ligne) est impossible.
Il vrifie la syntaxe de la source SCL, puis signale toutes les erreurs dtectes
durant la compilation.
Il cre des blocs comportant des informations de dboguage si la compilation de
la source est exempte derreur et si vous avez slection loption correspondante
(voir ci-aprs). Vous devez choisir cette option dinformation de dboguage pour
chaque programme dont vous souhaitez tester le niveau de langage volu.
A chaque appel de bloc fonctionnel, il gnre le bloc de donnes dinstance cor-
respondant si ce dernier nexiste pas encore.
Slectionner les Vous avez la possibilit dadapter la procdure de compilation vos exigences parti-
options du culires. Choisissez cet effet la commande Outils Paramtres, puis cliquez sur
compilateur longlet Compilateur dans la bote de dialogue Paramtres . Vous pouvez
activer ou dsactiver les options proposes laide de la souris.
Paramtres
Cration du bloc Longlet Cration du bloc vous offre encore dautres possibilit de paramtrer le
processus de compilation :
Vous pouvez dfinir si les blocs existants doivent tre crass ou pas lors de la
compilation.
Vous pouvez slectionner la gnration automatique de donnes de rfrence lors
de la compilation dune source. Lactivation de cette option rallonge cependant
la dure du processus de compilation.
Vous activez loption Prise en compte de lattribut systme S7_server lorsque
le bloc est utilis pour la configuration de messages ou de liaisons. Cette option
rallonge galement la dure de la compilation.
Fin de la Lorsque la compilation est termine, une fentre souvre pour indiquer soit que la
compilation compilation sest correctement droule, soit que dventuelles erreurs et avertisse-
ments sont apparus, voir figure 5-4 :
Source 1
F:L00016 C00012 : impression errone
W: gnrateur de code non appel pour cause derreur
Erreurs : 1, avertissements : 1
Message
15:4397 Texte daide
Erreurs : 1, avertissements : 1
Aller
Fermer Aide
Recherche des Tout message est indiqu avec sa position (ligne et colonne) de mme quavec une
causes derreurs et description succincte. Pour obtenir une description dtaille de lerreur ou de laver-
davertissements tissement survenus, slectionnez le message correspondant et cliquez sur le bouton
Aide .
En effectuant un double-clic sur un message, vous pouvez positionner le curseur
lendroit correspondant dans la source SCL.
Ces deux possibilits vous permettent de localiser et de corriger rapidement les
erreurs et avertissements.
Prsentation Durant la compilation dune source SCL, les blocs sont crs partir de la source et
sauvegards dans le classeur des blocs du programme S7 correspondant. Dans SCL,
vous pouvez ensuite charger exclusivement ces blocs depuis la console de program-
mation dans la CPU.
Si vous souhaitez transmettre dautres blocs du programme S7 dans votre automate
programmable, utilisez SIMATIC Manager.
Conditions Les conditions suivantes doivent tre remplies pour permettre la transmission du
pralables programme utilisateur dans lAP :
une liaison doit tre tablie entre la console de programmation et lautomate pro-
grammable.
les blocs que vous voulez charger doivent avoir t compils sans erreurs.
Charger dans le Il est recommand de charger les blocs ltat darrt, car ltat de marche, lcra-
systme cible sement dun ancien programme est susceptible de provoquer des erreurs. Procdez
de la manire suivante :
1. Choisissez la commande Systme cible Charger.
2. Si le bloc est dj prsent dans la RAM de la CPU, confirmez son crasement
lorsque vous y tre sollicit.
Fichier Vous pouvez crer un fichier dinformations compilation pour votre projet STEP 7.
dinformations Vous y indiquez les noms des sources SCL contenues dans le projet. Ces sources
compilation SCL vont ensuite tre compiles dans une procdure de traitement par lots.
Compiler Durant la compilation, les blocs crs sont rangs dans le classeur des blocs du pro-
gramme S7.
Informations Laide en ligne de SCL fournit des informations dtailles sur le test et rpond aux
supplmentaires questions prcises que vous vous posez lorsque vous utilisez SCL.
6.1 Prsentation
Niveau de langage Les fonctions de test de SCL vous permettent de tester les programmes utilisateur
volu que vous avez programms pour ce qui est de leur niveau de langage volu. Avec
ce type de test vous pouvez :
S dceler des erreurs de programmation,
S visualiser et contrler laction dun programme utilisateur sur lexcution dans la
CPU.
Conditions Avant de tester un programme SCL, vous devez procder aux tapes suivantes :
pralables
1. Vous devez compiler le programme en ayant activ les options de compilation
Cration du code objet et Cration de linformation Dboguage . Vous les
slectionnez dans longlet Compilateur de la bote de dialogue que vous
obtenez en choisissant la commande Outils Paramtres.
2. Vous devez tablir une liaison en ligne entre votre PG/PC et la CPU.
3. Vous devez en outre charger le programme dans la CPU. Cest ce que vous rali-
sez avec la commande Systme cible Charger.
Fonctions de test Le tableau 6-1 dsigne et rsume les caractristiques des principales fonctions de
de SCL test que vous pouvez appeler dans SCL.
Fonction Caractristiques
Visualisation contine Affichage des noms et des valeurs actuelles
(CPU S7-300/400) des variables dun domaine de visualisation
Activer les points darrt Dfinition, suppression et dition des points
(uniquement CPU S7-400) darrt : test pas pas
Visualiser/forer des variables Visualisation/forage des valeurs actuelles des
donnes globales
Gnration des donnes de rfrence Cration dun aperu du programme utilisa-
teur
Fonctions de test du logiciel de base STEP 7 Consultation/modification de ltat de fonc-
tionnement de la CPU
Avertissement
! La dfaillance dune fonction ou une erreur de programmation survenant durant
lexcution du test lorsque linstallation est en marche peuvent occasionner des
dommages matriels et personnels ! Avant dexcuter une fonction de test, assurez-
vous quaucune situation dangereuse ne soit susceptible de se produire.
Mode de test Lorsque vous effectuez un test en mode de Visualisation continue , les valeurs
actuelles des donnes comprises dans le domaine de visualisation sont consultes et
affiches. La consultation a lieu pendant lexcution du domaine de visualisation.
Elle entrane gnralement une augmentation du temps de cycle, que vous pouvez
cependant influencer grce aux deux environnements de test proposs par SCL :
S Environnement de test Processus :
Dans lenvironnement de test Processus , le dbogueur de SCL limite le
domaine de visualisation maximal, de sorte ce que durant le test, le temps de
cycle ne dpasse pas ou peine le temps dexcution rel du processus.
S Environnement de test Laboratoire :
Dans lenvironnement de test Laboratoire , le domaine de visualisation nest
limit que par la puissance de la CPU connecte. Le temps de cycle peut cepen-
dant tre plus long que le processus rel, mais le domaine de visualisation maxi-
mal est suprieur celui de lenvironnement de test Processus .
Mise en uvre de Pour excuter la fonction Visualisation continue , procdez de la manire sui-
la Visualisation vante :
continue
1. Assurez-vous que les conditions pralables enonces au paragraphe 6.1 sont bien
remplies.
2. Activez la fentre qui contient la source du programme tester.
3. Si vous souhaitez changer lenvironnement de test prdfini (processus), chois-
sez la commande Test Environnement de test Laboratoire.
4. Positionnez le point dinsertion dans la ligne du texte source contenant la pre-
mire instruction du domaine tester.
5. Choisissez la commande Test Visualisation continue.
Rsultat : le domaine de visualisation le plus grand possible va alors tre dter-
min et signal par une barre grise au bord gauche de la fentre. La fentre se
scinde en deux et sa partie droite affiche ligne par ligne les noms et valeurs
actuelles des variables comprises dans le domaine de visualisation.
6. Choisissez la commande Test Visualisation continue, pour interrompre le test
et le poursuivre ultrieurement.
7. Choisissez la commande Test Mettre fin au test, pour terminer le test.
Prsentation Le test avec la fonction Activer les points darrt seffectue pas pas. Vous pou-
vez excuter le programme instruction par instruction et visualiser comment les
valeurs des variables dites varient.
Aprs avoir dfini des points darrt, vous pouvez dans un premier temps excuter le
programme jusqu lun dentre eux, et partir de l, commencer la visualisation
pas pas.
Points darrt Vous pouvez dfinir des points darrt en divers endroits dans la section dinstruc-
tions du texte source.
Les points darrt ne sont chargs dans lautomate programmable et activs que lors-
que vous choisissez la commande Test Activer les points darrt. Le programme
est alors excut jusqu ce que le premier point darrt est atteint.
Le nombre de points darrt actifs dpend de la CPU :
S CPU 416 : au maximum 4 points darrt actifs
S CPU 414 : au maximum 2 points darrt actifs
S CPU 314 : aucun point darrt actif possible
Fonctions de test Aprs avoir appel la fonction de test Activer les points darrt, vous pouvez
pas pas excuter les fonctions suivantes :
S Instruction suivante
Excution de linstruction suivante. Permet dafficher les valeurs des variables.
S Poursuivre
Poursuite de lexcution jusquau prochain point darrt activ.
S Jusqu la slection
Poursuite de lexcution jusqu la position du curseur que vous dfinissez dans
la source.
Nota
Veillez ne pas dpasser le nombre maximal de points darrt actifs autoriss lors-
que vous utilisez les commandes Instruction suivante ou Jusqu la slection, ces
dernires crant et activant automatiquement un point darrt.
Mise en uvre de Avant de dbuter le test, assurez-vous que les conditions cites au chapitre 6.1 sont
Activer les points remplies. Vous pouvez alors tester votre programme pas pas avec la fonction
darrt Activer les points darrt . La manire de procder est dcrite dans les tapes
suivantes et reprsente la figure 6-1 :
1. Slectionnez la fentre qui contient la source du bloc tester.
2. Slectionnez les points darrt en positionnant le curseur lendroit voulu dans
la source du programme et en choisissant soit la commande Test Dfinir un
point darrt. Les points darrt sont reprsents sous forme de cercle rouge au
bord gauche de la fentre.
3. Dmarrez ensuite le test pas pas en choisissant la commande Test Activer les
points darrt.
Rsultat : la fentre se divise verticalement en deux parties et le programme
dmarre. Le point darrt suivant est recherch. Quand il est atteint, la CPU
passe ltat de fonctionnement ATTENTE et la position recherche est mar-
que par une flche jaune.
4. Vous disposez des fonctions de test pas pas suivantes :
Choisissez la commande Test Instruction suivante (4a) :
Rsultat : la CPU se met brivement ltat de marche. Lorsque linstruction
suivante est atteinte, elle se met nouveau larrt et affiche ligne par ligne dans
la partie gauche de la fentre la valeur des variables dites dans linstruction
prcdente.
Choisissez la commande Test Poursuivre (4b) :
Rsultat : la CPU se met ltat de marche. Lorsque le point darrt actif
suivant est atteint, elle se met nouveau larrt et signale le point darrt au
bord gauche de la fentre. Pour afficher les valeurs des variables, vous devez
choisir nouveau la commande Test Instruction suivante.
Choisissez la commande Test Jusqu la slection (4c) :
Un point darrt est automatiquement dfini et activ lendroit de la slec-
tion. La CPU se met en marche. Lorsque la slection est atteinte, elle se met
nouveau larrt et slectionne ce point darrt. Pour afficher les valeurs
des variables, vous devez choisir nouveau la commande Test Instruction
suivante.
5. Si vous souhaitez poursuivre le test avec des points darrt modifis, retournez
ltape 2. Vous pouvez y dfinir de nouveaux points darrt ou encore effacer des
points darrt existants.
6. Choisissez la commande de menu Test Activer les points darrt pour inter-
rompre la boucle de test.
7. Si vous ne souhaitez pas tester dautre instruction dans la source, mettez fin au
test en choisissant la commande de menu Test Mettre fin au test.
1)
Ouvrir
Source SCL
oui
Nouveau point
darrt
?
non 2) Dfinir un point darrt Fentre de
(ou leffacer) la source SCL
Poursuivre
oui
Renouveler
?
non
5) Mettre fin
Terminer le test Activer les points darrt
pas pas
oui
Renouveler
?
non
Fin
Visualiser et forcer En choisissant la commande Systme cible Visualiser/forcer des variables, vous
des variables pouvez :
S dfinir des points et conditions de dclenchement,
S attribuer des valeurs aux variables dun programme utilisateur.
Vous devez dans les deux cas tablir une table des variables dans laquelle vous indi-
quez quelles variables vous allez diter. Dans le cas du forage , vous devez en
plus donner les valeurs souhaites.
Une description dtaille de la fonction de test est faite dans le guide de lutilisateur
STEP 7, /231/.
Prsentation Pour vous faciliter le test et la modification de votre programme utilisateur, vous
pouvez gnrer et exploiter des donnes de rfrence.
Les donnes de rfrence englobent : la structure de programme, la liste des rfren-
ces croises, le tableau daffectation, la liste des oprandes libres ainsi que la liste
des mnmoniques manquants.
Vous pouvez utiliser les donnes de rfrence :
S pour obtenir un aperu de lensemble de votre programme utilisateur,
S comme base pour effectuer des modifications et tests,
S pour complter la documentation de votre programme.
Gnrer des Pour gnrer des donnes de rfrence, vous avez plusieurs possibilits :
donnes de
S Vous pouvez gnrer, actualiser et afficher les donnes de rfrence si cela est
rfrence
ncessaire, en choisissant la commande Outils Donnes de rfrence.
S En choisissant la commande Outils Paramtres, vous pouvez dfinir que les
donnes de rfrence soient gnres automatiquement lors de la compilation
dune source. Pour ce faire, slectionnez loption Gnration des donnes de
rfrence dans la page donglet Cration de blocs .
La gnration automatique des donnes de rfrence rallonge cependant la dure
du processus de compilation.
Une description dtaille de la fonction de test est faite dans le guide de lutilisateur
STEP 7, /231/.
Editeur LIST Dans STEP 7, vous avez la possibilit douvrir en LIST des blocs compils avec
SCL afin de les tester dans le mode de reprsentation LIST.
Afficher les Dans la bote de dialogue qui souvre lorsque vous choisissez la commande Systme
proprits de la cible Etat du module, vous pouvez :
CPU
S constater la cause du passage ltat darrt par lecture de la mmoire de dia-
gnostic,
S interroger le contenu des piles de la CPU. La pile des interruptions constitue une
aide prcieuse dans la dtermination des causes derreur,
S consulter les caractristiques techniques de la CPU,
S afficher la date et lheure rgles pour la CPU,
S afficher le temps de cycle de la CPU,
S obtenir des informations sur les blocs contenus dans la CPU,
S obtenir des informations sur la communication avec la CPU.
Pour que vous puissiez excuter toutes ces fonctions, il est impratif que la CPU soit
en ligne.
Types de donnes 9
Dclaration de variables locales et
de paramtres de blocs 10
Dclaration de constantes et de
repres de saut 11
Affectation de valeurs 14
Instructions de contrle 15
Appel de fonctions et de blocs
fonctionnels 16
Compteurs et temporisations 17
Interface dappel 19
SCL pour SIMATIC S7-300/400, Programmation de blocs
6-12 C79000-G7077-C522-01
Notions fondamentales dans SCL 7
Prsentation Le prsent chapitre dcrit les divers lments de langage que SCL met votre dis-
position ainsi que la manire de les utiliser. Il constitue une simple introduction aux
concepts de base de SCL et donne uniquement les dfinitions fondamentales qui
seront approfondies dans les chapitres suivants.
Description du Les diagrammes syntaxiques servent de base la description du langage faite dans
langage SCL les chapitres suivants. Ils permettent dillustrer la structure syntaxique (cest--dire
grammaticale) dans SCL. Ces diagrammes sont regroups au complet avec les l-
ments de langage correspondants en annexe B du prsent manuel.
Dfinition dun Il sagit dune reprsentation graphique de la structure du langage. Cette structure
diagramme est constitue dune suite de rgles, pouvant elles-mmes se fonder sur des rgles
syntaxique dj nonces.
Nom de la rgle
Squence
Pav 3
Option Pav 5
Itration
Alternative
Types de pavs Un pav peut tre un lment de base ou alors tre lui-mme compos dautres l-
ments de base. La figure suivante illustre les types de symboles reprsentant les
pavs :
Elment de base qui ne ncessite Elment compos qui est dcrit par
pas de description supplmentaire. dautres diagrammes syntaxiques.
Il sagit de caractres imprimables et
de caractres spciaux, de mots-cls
et didentificateurs prdfinis.
Les donnes relatives ces pavs
doivent tre reprises telles quelles.
Signification du Lorsque vous saisissez un texte source, vous devez tenir compte aussi bien des
format libre rgles syntaxiques que des rgles lexicales. Ces deux types de rgles sont reprsen-
ts en annexe B et C.
Le format libre signifie quentre les pavs, vous pouvez insrer des caractres de
mise en forme, comme par exemple des caractres despacement, des tabulateurs,
des caractres de changement de page ainsi que des commentaires.
Rgle lexicale Pour les rgles lexicales, comme par exemple la figure 7-2, le format nest pas
libre. Lorsque vous appliquez une rgle lexicale, vous devez reprendre les donnes
telles quelles.
Lettre
_ Lettre _ Lettre
Caractre de Caractre de
soulignement soulignement
Chiffre Chiffre
Rgle syntaxique Pour les rgles syntaxiques (voir, par exemple, figure 7-3), le format est libre.
Autres caractres Les caractres suivants ont une signification bien prcise dans SCL :
+ * / = < > [ ] ( )
. , : ; $ # { }
Informations En annexe A, vous trouverez une liste dtaille de tous les caractres utilisables,
supplmentaires prcisant comment SCL les interprte.
Dfinition Il sagit de mots-cls dont lusage est prdfini. Il ny a pas de distinction entre les
minuscules et les majuscules.
Autres noms EN
rservs ENO
OK
TRUE
FALSE
1
Dfinition Un identificateur est un nom que vous pouvez attribuer un objet du langage de
SCL, savoir une constante, une variable, une fonction ou un bloc.
IDENTIFICATEUR
Lettre
_ Lettre _ Lettre
Caractre de Caractre de
soulignement soulignement
Chiffre Chiffre
Les noms didentificateurs suivants sont interdits pour les raisons indiques :
4me Le premier caractre doit tre une lettre ou le caractre de souligne-
ment.
Array ARRAY est un mot-cl et nest pas autoris.
S Valeur Les caractres despacement comptent comme des caractres et ne
sont pas autoriss.
Dfinition Une srie didentificateurs sont dj prdfinis dans SCL. Il sagit des identifica-
teurs standard suivants :
S mots-cls de blocs et
S identificateurs doprandes pour adresser les zones de mmoire de la CPU.
Mots-cls de blocs Ces identificateurs standard sont utiliss pour ladressage absolu de blocs.
Le tableau 7-1 donne les mots-cls de blocs classs daprs les abrviations
SIMATIC, avec les abrviations internationales CEI correspondantes.
IDENTIFICATEUR STANDARD
Motcl
Numro
de bloc
1 Ces identificateurs doprandes ne sont valables que sils sont indiqus avec le bloc de donnes correspondant
7.6 Nombres
Prsentation Il y a plusieurs manires dcrire un nombre dans SCL. Il peut comporter un signe,
une virgule dcimale (reprsente par un point) ou un exposant. Les rgles suivantes
sappliquent tous les nombres :
1. Un nombre ne doit comporter ni virgule, ni caractre despacement.
2. Le caractre de soulignement ( _ ) peut tre utilis comme sparateur optique.
3. Un nombre peut tre prcd soit dun plus ( + ), soit dun moins ( ). En labsence
de signe le nombre est considr comme tant positif.
4. Un nombre doit tre compris entre des valeurs minimales et maximales donnes.
Nombres entiers Un nombre entier ne comporte ni virgule dcimale, ni exposant. Il sagit simplement
dune simple suite de chiffres, pouvant tre signe. Dans SCL, il existe deux types
dentiers avec des plages de valeurs diffrentes, INT et DINT (voir chapitre 9).
Voici des nombres entiers autoriss :
0 1 +1 -1
743 -5280 600_00 -32_211
Les nombres suivants ne sont pas autoriss pour les raisons indiques :
123,456 Les virgules sont interdites.
36. La virgule dcimale (reprsente par un point) est interdite dans un
nombre entier.
10 20 30 Les caractres despacement ne sont pas autoriss.
Nombres entiers Dans SCL, vous pouvez reprsenter un nombre entier dans diffrents systmes de
sous forme de numration. Il faut alors le faire prcder dun mot-cl pour dsigner le systme
nombres binaires, dont il sagit. 2# dsigne le systme binaire, 8# dsigne le systme octal et 16# d-
octaux ou signe le systme hexadcimal.
hexadcimaux
Voici le nombre dcimal 15 correctement reprsent dans dautres systmes de
numration :
2#1111 8#17 16#F
Nombres rels Un nombre rel doit comporter une virgule dcimale ou un exposant (ou les deux).
La virgule dcimale doit figurer entre deux chiffres. Un nombre rel ne peut donc ni
commencer, ni se terminer par une virgule dcimale.
Voici des nombres rels autoriss :
0.0 1.0 -0.2 827.602
50000.0 -0.000743 12.3 -315.0066
Les nombres rels suivants ne sont pas corrects pour les raisons indiques :
1. La virgule dcimale (point) doit figurer entre deux chiffres.
1,000.0 Les virgules ne sont pas autorises.
.3333 La virgule dcimale doit figurer entre deux chiffres.
Les nombres rels suivants ne sont pas corrects pour les raisons indiques :
3.E+10 La virgule dcimale doit figurer entre deux chiffres.
8e2.3 Lexposant doit tre un nombre entier.
.333e-3 La virgule dcimale doit figurer entre deux chiffres.
30 E10 Les caractres despacement ne sont pas autoriss.
Chanes de Une chane de caractres est une suite de caractres (lettres, chiffres et caractres
caractres spciaux) entours dapostrophes. Les majuscules et les minuscules sont autorises.
Voici des chanes de caractres autorises :
ROUGE 75 000 Paris 270-32-3456
Fr19.95 Le rsultat correct est :
Pour saisir un caractre de mise en forme spcial, une apostrophe ( ) ou le carac-
tre $, faites le prcder du caractre $.
Texte source aprs compilation
SIGNAL$ROUGE$ SIGNALROUGE
50.0$$ 50.0$
VALEUR$P VALEUR nouvelle page
REG-$L REG- changement de ligne
REGULATEUR$R REGULATEUR retour chariot
ETAPE$T ETAPE tabulation
Pour indiquer un caractre non imprimable, entrez sa reprsentation en code hexad-
cimal $hh, o hh correspond la valeur hexadcimale du caractre ASCII.
Pour interrompre une chane de caractres (pour des commentaires qui ne doivent
tre ni imprims, ni affichs), SCL met votre disposition les caractres $> et $< .
Gnralits Dans toute dclaration de variable, vous devez indiquer son type de donnes. Il
dtermine la plage des valeurs de la variable et dfinit les oprations quelle permet
de raliser.
Un type de donnes comprend :
S le type et la signification de llment de donnes,
S la plage autorise de llment de donnes,
S le nombre doprations que vous pouvez raliser avec un oprande de ce type de
donnes et
S la notation des donnes de ce type.
Type de donnes Le type de donnes simple dfinit une structure de donnes que lon ne peut pas
simple dcomposer en units plus petites. Il rpond la norme DIN EN 1131-3.
Dans SCL, douze types de donnes simples sont prdfinis :
BOOL CHAR INT TIME
BYTE DINT DATE
WORD REAL TIME_OF_DAY
DWORD S5TIME
Type de donnes Le type de donnes complexe dfinit une structure de donnes qui peut tre dcom-
complexe pose en dautres types de donnes. SCL autorise les types de donnes complexes
suivants :
DATE_AND_TIME
STRING
ARRAY
STRUCT
Type de donnes Il sagit dun type de donnes global (UDT) que vous pouvez crer dans SCL pour
utilisateur votre application. Vous pouvez lutiliser dans la section de dclaration dun bloc ou bloc
de donnes sous sa dsignation UDTx (x correspond son numro) ou sous le mnmo-
nique que vous lui avez attribu.
Types de Outre les types de donnes simples, complexes et utilisateur, vous pouvez galement
paramtres utiliser des types de paramtres afin de dfinir des paramtres. SCL propose les
types de paramtres suivants :
7.8 Variables
Dclaration de On appelle variable, un identificateur dont la valeur peut tre modifie durant lex-
variables cution du programme. Toute variable doit tre dclare individuellement avant de
pouvoir tre utilise dans un bloc de code ou de donnes. La dclaration de la varia-
ble permet de dfinir un identificateur comme variable (et non pas comme constante
etc.) et den spcifier le type en laffectant au type de donnes.
On distingue les variables suivantes :
S donnes locales,
S donnes utilisateur globales et
S variables prdfinies (zones de mmoire dune CPU).
Donnes locales Il sagit de donnes qui sont dclares dans un bloc de code (FC, FB, OB) et qui ne
sont valables que pour celui-ci.
Variable Signification
Variable statique Une variable statique est une variable locale dont la valeur reste
inchange tout au long de lexcution du bloc (mmoire du bloc). Elle
sert enregistrer les valeurs dun bloc fonctionnel.
Variable temporaire Une variable temporaire appartient localement un bloc de code et
noccupe aucune zone de mmoire statique. Sa valeur ne reste conser-
ve que durant une excution du bloc. Il nest pas possible dy acc-
der en dehors du bloc dans lequel elle a t dclare.
Paramtre de bloc Il sagit dun paramtre formel de bloc fonctionnel ou de fonction.
Cest une variable locale qui sert transmettre les paramtres actuels
indiqus lappel du bloc.
Donnes Les donnes utilisateur globales sont des donnes ou zones de donnes que vous
utilisateur globales pouvez utiliser partir dun endroit quelconque du programme. Vous devez cet
effet crer des blocs de donnes (DB).
Lorsque vous crez un DB, vous dfinissez sa structure en la dclarant. Vous pouvez
cependant galement utiliser un type de donnes utilisateur (UDT) au lieu de dcla-
rer la structure du DB. Lordre dans lequel vous indiquez la composante de la struc-
ture dtermine celui des donnes dans le DB.
Zones de mmoire Vous pouvez adresser les zones de mmoire dune CPU directement partir dun
dune CPU endroit quelconque du programme, en utilisant des identificateurs doprandes (voir
paragraphe 7.5) quil est inutile de dclarer.
Vous avez en outre toujours la possibilit dadresser ces zones de donnes de faon
symbolique. Dans ce cas, vous leur affectez des mnmoniques dans STEP 7, avec
une table des mnmoniques. Vous trouverez des informations complmentaires ce
sujet dans le guide de lutilisateur /231/.
7.9 Expressions
Prsentation Une expression reprsente une valeur qui sera calcule durant la compilation ou
lexcution du programme. Elle comporte un ou plusieurs oprandes combins par
des oprateurs, dont lordre dexcution dpend de leur priorit. Lutilisation de
parenthses permet de modifier la priorit. SCL distingue :
S des expressions arithmtiques,
S des expressions logiques,
S des expressions de comparaison.
Expression de Il sagit dune expression logique dont le rsultat peut tre vrai ou faux. En voici un
comparaison exemple :
Valeur_consigne < 100.0
Dans cet exemple, Valeur_consigne est une variable relle et le symbole < un
oprateur de comparaison. La valeur de lexpression est vraie si Valeur_consi-
gne est infrieure 100.0, sinon elle est fausse.
7.10 Instructions
Prsentation Dans SCL, une instruction dsigne une action excutable dans la section des instruc-
tions dun bloc de code. Il en existe trois types principaux :
1. Affectations de valeurs (affectation dune expression une variable).
2. Instructions de contrle (itration ou branchement dinstructions).
3. Traitements de sous-programmes (appels ou branchements de blocs de code).
Excution de Lorsque vous indiquez une dsignation de fonction (FC) ou de bloc fonctionnel
sous-programmes (FB), le bloc de code ayant t dclar avec cet identificateur est appel1. Si des
paramtres formels ont t dclars dans la dclaration du bloc de code, vous pou-
vez leur affecter des oprandes effectifs lorsque vous les appelez.
Tous les paramtres qui figurent dans les blocs de dclaration
VAR_INPUT, VAR_OUTPUT et VAR_IN_OUT
dun bloc de code sont appels paramtres formels. On appelle par contre param-
tres effectifs, les paramtres correspondants appels dans la section des instructions.
La transmission des paramtres effectifs aux paramtres formels fait partie de lap-
pel.
Voici un exemple typique de traitement de sous-programme :
FC31(X:=5, S1:=Somme_chiffres);
1 Pour les FC, laffectation des paramtres effectifs est indispensable, pour les FB elle est optionnelle.
Prsentation Dans une source SCL, vous pouvez programmer de 1 n blocs comme texte source.
FUNCTION_BLOCK FB10
Fichier source SCL
Motcl A CONST
Constante:INT;
Section de dclaration END_CONST
VAR
VALEUR1,VALEUR2:REAL;
END_VAR
D
D Section des instructions BEGIN
D VALEUR1:=100;
D :
Motcl B
END_FUNCTION_BLOCK
Types de blocs De part leur fonction, leur structure ou leur utilisation, les blocs STEP 7 sont des
sections limites dun programme utilisateur. SCL vous permet de programmer les
blocs suivants :
OB FC FB DB UDT
Blocs STEP 7
Blocs prdfinis Vous ntes pas obligs de programmer vous-mme chaque fonction. Il en existe
galement qui sont prdfinies. Elles se trouvent dans le systme dexploitation de
lunit centrale ou dans des bibliothques (S7lib) du logiciel de base STEP 7. Vous
pouvez les utiliser pour programmer des fonctions de communication, par exemple.
Section de La section de dclaration sert noncer les dfinitions qui constitueront la base de
dclaration la section des instructions : dfinition des constantes, dclaration des variables et
des paramtres, par exemple.
Section des La section des instructions est introduite par le mot-cl BEGIN est se termine par un
instructions identificateur standard de fin de bloc END_xxx (voir paragraphe 8.2 ).
Chaque instruction se termine par un point-virgule ( ; ) et peut tre prcde dun
repre de saut (tiquette) optionnel. La syntaxe de la section des instructions et
dune instruction individuelle est donne au chapitre 13.
IDENTIFICATEUR : Instruction ;
Repre de saut
Dans la section des instructions dun bloc de donnes, vous pouvez affecter des
valeurs par dfaut aux donnes du DB. Cest la raison pour laquelle, la section des
instructions dun DB sera appele section daffectation dans les chapitres suivants.
Programme S7 Une fois compils, les blocs crs sont enregistrs dans le classeur des blocs du pro-
gramme S7 correspondant, do vous devez les charger dans la CPU. Vous trouverez
des informations ce sujet dans le guide de lutilisateur /231/ .
7.12 Commentaires
Prsentation Les commentaires permettent de documenter un bloc SCL afin de le rendre plus
intelligible. Une fois compils, ils ninterviennent daucune faon dans lexcution
du programme. Il existe deux types de commentaires :
S la ligne de commentaire et
S le bloc de commentaire
Ligne de Il sagit dun commentaire introduit par // qui stend jusqu la fin de la ligne. Sa
commentaire longueur est limite 253 caractres au maximum, y compris les caractres dintro-
duction de commentaire //. Il peut tre reprsent par le diagramme syntaxique sui-
vant :
Ligne de commentaire
Caractre
// CR
imprimable
La liste de tous les caractres imprimables figure dans le tableau A-2 lannexe A.
La paire de caractres (* et *) est insignifiante dans une ligne de commentaire.
Bloc de Commentaire pouvant stendre sur plusieurs lignes, introduit par (* et se termi-
commentaire nant par *). Le chevauchement des blocs de commantaire est autoris de manire
standard. Toutefois, vous avez la possibilit de modifier ce paramtre et dinterdire
le chevauchement des blocs de commantaire.
Bloc de commentaire
(* Caractre *)
Exemple Lexemple suivant comporte deux blocs de commentaire et une ligne de commen-
dintgration de taire :
commentaires
FUNCTION_BLOCK FB 15
(* Ceci est un bloc de commentaire pouvant stendre
sur plusieurs lignes*)
VAR
COMMUTATEUR: INT; // Ligne de commentaire
END_VAR;
BEGIN
(* Affecter une valeur la variable COMMUTATEUR *)
COMMUTATEUR:= 3;
END_FUNCTION_BLOCK
Nota
Les lignes de commentaire suivant immdiatement la section de dclaration dun bloc
de donnes sont conserves lors dune dcompilation en programme LIST.
Ces commentaires se trouvent dans LIST dans la partie de linterface, cest--dire dans
la partie suprieure de la fentre (voir galement /231/).
8.1 Structure
Prsentation Un fichier source SCL contient le texte source de 1 n blocs (FB, FC, OB, DB ou UDT).
Afin de pouvoir compiler votre fichier source SCL en blocs individuels, vous devez
tenir compte de la structure et des rgles syntaxiques propres ces blocs.
Bloc dorganisation
Fonction
Bloc fonctionnel
Bloc de donnes
Ordre des blocs Lorsque vous crivez le fichier source, vous devez tenir compte des rgles suivantes
quant lordre des blocs :
Un bloc appel doit prcder le bloc appelant.
Ceci signifie que :
S Un type de donnes utilisateur (UDT) prcde les blocs qui lutilisent.
S Un bloc de donnes avec un type de donnes utilisateur (UDT) affect suit cet
UDT.
S Un bloc de donnes auquel tout bloc de code peut accder prcde le bloc qui
lappelle.
S Un bloc de donnes avec un bloc fonctionnel affect suit ce bloc fonctionnel.
S LOB1 qui appelle dautres blocs doit tre le dernier bloc. Les blocs appels par
dautres blocs, eux-mmes appels par lOB1 doivent les prcder.
Les blocs que vous appelez dans un fichier source sans pour autant les programmer
dans le mme fichier source doivent se trouver dans le programme utilisateur corres-
pondant au moment de la compilation du fichier.
affect
UDT
appelle
DB
appelle
DB avec UDT
affect
appelle
Ordre dans le fichier source FB 3
DB dinstance du FB 3
appelle
FC 5
OB 1
Structure gnrale Le code source dun bloc comprend en principe les sections suivantes :
des blocs
S dbut de bloc avec dsignation du bloc (absolue ou symbolique),
S attributs de bloc (facultatif),
S section de dclaration (diffre selon le type de bloc),
S section dinstructions dans les blocs de code ou
affectation de valeurs actuelles dans les blocs de donnes (facultatif).
S fin de bloc.
Prsentation Le texte source de chaque bloc est introduit selon le type de bloc par un identifica-
teur standard de dbut de bloc et la dsignation de bloc ; il est boucl par un identi-
ficateur standard de fin de bloc (voir tableau 8-1).
Tableau 8-1 Identificateurs standard pour le dbut et la fin de bloc
ORGANIZATION_BLOCK nom_ob
: OB Bloc dorganisation
END_ORGANIZATION_BLOCK
FUNCTION nom_fc:type_fonction
: FC Fonction
END_FUNCTION
FUNCTION_BLOCK nom_fb
: FB Bloc fonctionnel
END_FUNCTION_BLOCK
DATA_BLOCK nom_db
: DB Bloc de donnes
END_DATA_BLOCK
TYPE nom_udt
: UDT Type de donnes utilisateur
END_TYPE
Dsignation dun Dans le tableau 8-1, nom_xx correspond la dsignation des blocs. Elle rpond aux
bloc rgles syntaxiques suivantes :
Mot-cl Numro
de bloc
DB, FB, FC, OB, UDT
IDENTIFICATEUR
Mnmonique
Attributs de blocs Vous pouvez indiquer le titre dun bloc, sa version, sa protection, son auteur, son
nom et sa famille en utilisant des mots-cls.
Titre
Caractre
TITLE =
imprimable
Version
Version : NOMBRE DECIMAL . NOMBRE DECIMAL
Protection de bloc
KNOW_HOW_PROTECT
Attributs systme Vous pouvez en outre affecter des attributs systme aux blocs, par exemple pour la
de blocs configuration de systmes de conduite.
Le tableau 8-2 indique les attributs systme que vous pouvez affecter aux blocs dans
SCL.
Affectation Vous affectez les attributs aprs la dsignation du bloc et avant la section de dcla-
dattributs ration.
FUNCTION_BLOCK FB10
Section de dclaration TITLE=Moyenne
VERSION:2.1
KNOW_HOW_PROTECT
Section des instructions
AUTHOR:AUT 1
NAME:B12
FAMILY:ANALOGIQUE
{s7_m_c:=true ;
S7_blockview:=big}
Prsentation La section de dclaration sert dfinir les variables locales et globales, les param-
tres, les constantes et les repres de saut.
S Dans la section de dclaration dun bloc de code, vous dfinissez les variables
locales, les paramtres, les constantes et les repres de saut qui ne doivent tre
valables que pour ce bloc de code.
S Dans la section de dclaration dun DB, vous dfinissez les donnes globales
auxquelles tout bloc de code doit pouvoir accder.
S Dans la section de dclaration dun UDT, vous dfinissez un type de donnes
utilisateur.
1 Pour les DB et UDT, les mots-cls VAR et END_VAR sont remplacs par STRUCT et
END_STRUCT.
2 La dclaration de variables entre les mots-cls VAR et END_VAR est autorise pour les fonc-
tions, cependant lors de la compilation, les dclarations sont dcales dans la zone temporaire.
Attributs systme Vous pouvez en outre affecter des attributs systme aux paramtres dentre, de sor-
de paramtres tie ou dentre/sortie, par exemple pour la configuration de messages ou liaisons.
24 caractres au maximum
caractre }
{ IDENTIFICATEUR :=
imprimable
Le tableau 8-4 indique les attributs systme que vous pouvez affecter aux
paramtres.
Affectation Vous affectez les attributs systme de paramtres dans les blocs de dclaration
dattributs paramtres dentre, paramtres de sortie ou paramtres dentre/sortie.
Exemple :
VAR_INPUT
in1 {S7_server:=alarm_archiv;
S7_a_type:=ar_send}:DWORD;
END_VAR
La figure 8-8 illustre la syntaxe de la section des instructions. Elle consiste en une
suite des instructions individuelles, chacune pouvant tre prcde dun repre de
saut optionnel (voir paragraphe 11.6) qui correspond au branchement dune instruc-
tion de saut.
IDENTIFICATEUR : Instruction ;
Repre de saut
8.6 Instruction
Instruction
Affectation de valeur
Excution de
sous-programme
Instruction de contrle
Prsentation Un bloc fonctionnel (FB) est un bloc de code qui contient une partie dun pro-
gramme et qui dispose dune zone de mmoire qui lui est affecte. A chaque fois
que vous appelez un FB, vous devez lui affecter un DB dinstance (voir chapitre 10)
dont vous dfinissez la structure dans la section de dclaration du FB.
Bloc fonctionnel
DESIGNATION Section de d-
FUNCTION_BLOCK DU FB claration du FB
VAR
VALEUR1,VALEUR2,VALEUR3:INT;
END_VAR
Exemple Lexemple 8-2 reprsente le code source dun bloc fonctionnel. Des valeurs initiales
ont t affectes aux paramtres dentre et de sortie (V1, V2).
FUNCTION_BLOCK FB11
VAR_INPUT
V1: INT:= 7;
END_VAR
VAR_OUTPUT
V2: REAL;
END_VAR
VAR
PASSAGE_1:INT;
END_VAR
BEGIN
IF V1 = 7 THEN
PASSAGE_1:= V1;
V2:= FC2 (VALEURTEST:= PASSAGE_1);
//Appel de la fonction FC2 avec
//affectation des paramtres par la
//variable statique PASSAGE_1
END_IF;
END_FUNCTION_BLOCK
Prsentation Une fonction (FC) est un bloc de code auquel aucune zone de mmoire individuelle
nest affecte. Elle na donc pas besoin de DB dinstance. Contrairement un FB,
une fonction peut fournir un rsultat (valeur en retour) au point appelant. Elle peut
de ce fait tre utilise comme une variable dans une expression. Les fonctions de
type VOID ne donnent pas de valeur en retour.
Fonction
VOID
DESIGNATION Spcification du
FUNCTION DE LA FC : type de donnes
Section de dcla-
BEGIN Section des instructions END_FUNCTION
ration de la FC
Spcification du Indiquez le type de donnes de la valeur en retour. Tous les types de donnes dcrits
type de donnes au chapitre 9 sont autoriss, lexception des types de donnes STRUCT et
ARRAY. Lindication du type de donnes savre inutile lorsque vous renoncez la
valeur en retour en utilisant lattribut VOID.
Section des Dans la section des instructions, vous devez affecter le rsultat de la fonction au
instructions nom de la fonction. Voici un exemple dinstruction correcte pour la fonction FC31 :
FC31:= VALEUR;
Exemple Lexemple reprsente une fonction avec les paramtres dentre formels x1, x2, y1,
y2, un paramtre de sortie formel Q2 et une valeur en retour FC11.
La signification des paramtres formels est dcrite au chapitre 10.
Bloc dorganisation
Exemples :
ique de lOB.
ORGANIZATION_BLOCK OB14
ORGANIZATION_BLOCK ALARME_HORAIRE
//ALARME HORAIRE
VAR_TEMP
HEADER:ARRAY [1..20] OF BYTE;// 20 octets pour
// linformation de dpart
:
:
END_VAR
Les autres sections de dclaration autorises pour les OB sont indiques au paragra-
phe 8.4.
Description Un bloc de donnes (DB) contient des donnes utilisateur globales, auxquelles tous les
blocs dun programme peuvent accder. Tout(e) FB, FC ou OB peut lire ou crire dans
ces DB. La structure des blocs de donnes (DB dinstance) qui ne sont affects qu cer-
tains FB est donne au chapitre 12.
Bloc de donnes
DESIGNATION
DATA_BLOCK DU DB Section de dclaration du DB
Section de Dans la section de dclaration du DB, vous dfinissez la structure des donnes du
dclaration du DB DB. Vous pouvez affecter le type de donnes structure (STRUCT) ou le type de don-
nes utilisateur (UDT) une variable du DB.
Section de dclaration du DB
DESIGNATION
DE LUDT
Spcification du type
de donnes STRUCT
Exemple
DATA_BLOCK DB20
STRUCT // Section de dclaration
VALEUR:ARRAY [1..100] OF INT;
END_STRUCT
Section Vous pouvez affecter des valeurs spcifiques pour votre application particulire aux
daffectation du donnes que vous avez dclares dans la section de dclaration. La section daffec-
DB tation commence par le mot-cl :
BEGIN
puis comprend une suite daffectations de valeurs avec la syntaxe suivante :
Section daffectation du DB
Nota
Il convient de respecter la syntaxe de LIST lors de lattribution des valeurs initiales
(initialisation) et de lindication dattributs et de commentaires au sein du DB. Pour
plus dinformations sur les diffrentes notations de constantes, attributs et commen-
taires, reportez-vous aux manuels /231/ ou /232/.
Exemple Lexemple suivant montre comment formuler la section daffectation si les compo-
santes [1] et [5] du tableau doivent prendre les valeurs entires 5 et -1 la place de
la valeur par dfaut 1.
DATA_BLOCK DB20
SRTUCT //Dclaration de donnes
//avec valeurs par dfaut
VALEUR : ARRAY [ 1..100] OF INT := 100 (1);
MEMENTO : BOOL := TRUE;
S_MOT : WORD := W#16#FFAA;
S_OCTET : BYTE := B#16#FF
S_TIME : S5TIME := S5T#1h30m30s
END_STRUCT
Prsentation Un type de donnes utilisateur (UDT) est une structure de donnes particulire que
vous crez vous-mme. Puisquil possde un nom, il peut tre utilis plusieurs fois.
Il peut par dfinition tre utilis dans lensemble du programme de la CPU et corres-
pond donc un type de donnes globales. Vous pouvez donc utiliser ce type de don-
nes :
S comme type de donnes simple ou complexe dans un bloc ou
S comme modle pour crer des blocs de structure de donnes identique.
Spcification
DESIGNATION du type de donnes
TYPE DE LUDT END_TYPE
STRUCT
Spcification des Elle est toujours ralise laide de la spcification du type de donnes STRUCT.
types de donnes Vous pouvez utiliser le type de donnes UDT dans les sections de dclaration de
blocs de code ou de blocs de donnes, ou alors laffecter des DB. Les sections de
dclaration autorises et de plus amples informations ce sujet sont donnes au cha-
pitre 9.
9.1 Prsentation
Gnralits Le tableau 9-1 indique les types de donnes utiliss dans SCL.
Prsentation Un type de donnes simple dfinit la structure de donnes qui ne peuvent pas tre
divises en lments plus petits. Il rpond la dfinition de la norme
DIN EN 1131-3. Un type de donnes simple dcrit une zone de mmoire de lon-
gueur fixe et correspond une grandeur exprime sous forme binaire, entire, relle,
sous forme de dure, dheure ou de caractre. Tous ces types de donnes sont prd-
finis dans SCL.
Tableau 9-2 Longueur en bits et plage des valeurs des types de donnes simples
Dfinit une zone pour une chane de 254 caractres au maximum (type de
STRING donnes (CHAR).
Prsentation Le type de donnes DATE_AND_TIME est compos des types de donnes DATE et
TIME et dfinit une zone de 64 bits (8 octets) pour lindication de la date et de
lheure. Cette zone de donnes enregistre les informations suivantes :
anne-mois-jour-heures:minutes:secondes.millisecondes
DATE_AND_TIME
DATE_AND_TIME#
DT#
La syntaxe exacte pour indiquer la date et lheure du jour est donne au chapitre 11
du prsent manuel. Voici la dfinition correcte du 20.10.1995 12 heures 20 min. 30 s
et 10 ms :
DATE_AND_TIME#1995-10-20-12:20:30.10
DT#1995-10-20-12:20:30.10
Nota
Des fonctions standard sont votre disposition pour vous permettre daccder prcis-
ment la composante DATE ou TIME.
Prsentation Le type de donnes STRING dfinit une chane de caractres, dont la longueur maxi-
male est de 254 caractres uniques.
La zone de mmoire standard rserve une chane de caractres est de 256 octets, o
vont tre enregistrs les 254 caractres ainsi quun en-tte de 2 octets.
Vous avez la possibilit de diminuer cette zone de mmoire rserve une chane de
caractres, en dfinissant le nombre maximal de caractres enregistrer dans la chane.
Une chane de longueur nulle, cest--dire une chane sans contenu reprsente la plus
petite valeur possible.
STRING [ Expression ]
simple
Longueur de la chane
Plage des valeurs Tous les caractres du code ASCII sont autoriss dans une chane de caractres. Le
chapitre 11 dcrit comment utiliser des caractres de commande et des caractres
non imprimables.
Nota
Afin doptimiser les ressources de votre CPU, vous avez la possibilit de rduire un
nombre quelconque de caractres la zone de 254 caractres rserve de manire stan-
dard. Choisissez la commande Paramtres dans le menu Outils, puis longlet Com-
pilateur dans la bote de dialogue suivante. Indiquez ensuite le nombre de caractres
voulus pour loption Long. de chane max..
Spcification du
OF type de donnes
Spcification du Elle consiste dclarer le type de donnes des composantes du tableau. Tous les
type de donnes types de donnes dcrits dans ce chapitre sont autoriss. Le type de donnes dun
tableau (ARRAY) peut galement tre une structure (STRUCT).
Voici des spcifications de tableaux autorises :
ARRAY[1..10] OF REAL
ARRAY[1..10] OF STRUCT..END_STRUCT
ARRAY[1..100, 1..10] OF REAL
Prsentation Le type de donnes STRUCT dcrit une zone comportant un nombre fixe de compo-
santes dont les types de donnes peuvent tre diffrents. Dans le diagramme syntaxi-
que de la figure 9-4, ces lments de donnes sont indiqus dans la dclaration des
composantes, immdiatement aprs le mot-cl STRUCT.
Un lment de donnes du type de donnes STRUCT peut lui-mme tre une struc-
ture, rendant ainsi leur imbrication possible.
Au chapitre 10, vous apprendrez adresser les donnes dune structure.
Dclaration des Elle correspond la liste des diverses composantes dune structure. Comme le mon-
composantes tre le diagramme syntaxique 9-5, elle comporte :
S 1 n identificateurs avec
S le type de donnes qui leur est affect et
S des valeurs initiales par dfaut optionelles.
Spcification du Initialisation du
IDENTIFICATEUR : type de donnes type de donnes ;
Nom de la composante
Initialisation du Aprs la spcification du type de donnes, vous pouvez optionnellement affecter une
type de donnes valeur initiale une composante individuelle de la structure. Cette affectation de
valeur est dcrite au chapitre 10.
Exemple Lexemple 9-1 montre une dfinition possible pour un type de donnes STRUCT.
STRUCT
//DEBUT de la dclaration des composantes
A1 :INT;
A2 :STRING[254];
A3 :ARRAY [1..12] OF REAL;
Prsentation Vous dfinissez un type de donnes utilisateur (UDT) sous forme de bloc, comme
dcrit au chapitre 8. Une fois dfini, un tel type de donnes peut tre utilis dans
lensemble du programme utilisateur. Il sagit donc dun type de donnes global.
Vous pouvez lutiliser dans la section de dclaration dun bloc ou bloc de donnes
en indiquant sa dsignation UDTx (x correspond au numro) ou le mnmonique qui
lui est affect.
Spcification
DESIGNATION du type de donnes
TYPE DE LUDT END_TYPE
STRUCT
Dsignation de La dclaration dun UDT est introduite par le mot-cl TYPE, suivi du nom de
lUDT lUDT (identificateur de lUDT). Comme dcrit au chapitre 8, le nom de lUDT
peut tre attribu de manire absolue comme nom standard de la forme UDTx
(x correspond un numro) ou de manire symbolique avec un mnmonique (voir
aussi chapitre 8).
Utilisation dun Vous pouvez vous servir du type de donnes ainsi dfini pour utiliser des variables
UDT ou des paramtres, ainsi que pour dclarer des DB. LUDT vous permet galement
de dclarer des composantes de structures ou de tableaux, mme dans dautres UDT.
Nota
Il convient de respecter la syntaxe de LIST lors de lattribution des valeurs initiales
(initialisation) au sein de lUDT. Pour plus dinformations sur les diffrentes nota-
tions de constantes, reportez-vous aux manuels /231/ ou /232/.
Exemple Cet exemple vous montre comment dfinir un UDT et utiliser ce type de donnes
dans la dclaration dune variable. On suppose que le mnmonique
VALEURS_MESURE a t dclar pour lUDT50 dans la table des mnmoni-
ques.
FUNCTION_BLOCK
VAR
ETENDUE_MESURE: VALEURS_MESURE;
END_VAR
BEGIN
...
ETENDUE_MESURE.BIPOL:= -4;
ETENDUE_MESURE.MESURE.UNIPOLAIRE_4_20MA:= 2.7;
...
END_FUNCTION_BLOCK;
Prsentation Outre les types de donnes simples, complexes et dfinis par lutilisateur, vous pou-
vez galement utiliser ce que lon appelle des types de paramtres pour dfinir les
paramtres de bloc formels des FB et FC. Ces types de donnes servent :
S dclarer des fonctions de comptage et de temporisation (TIMER ou
COUNTER),
S dclarer des FC, FB, DB et SDB comme paramtres (BLOCK_xx),
S autoriser lutilisation dun oprande dun type de donnes quelconque comme
paramtre (ANY),
S autoriser lutilisation dune zone de mmoire comme paramtre (POINTER).
TIMER et Vous dfinissez une temporisation ou un compteur particuliers qui vont tre utiliss
COUNTER lors de lexcution dun bloc. Les types de paramtres TIMER et COUNTER ne sont
autoriss que pour les paramtres dentre (VAR_INPUT).
Types de Vous dfinissez un bloc particulier qui doit tre utilis comme paramtre dentre.
paramtres Cest la dclaration du paramtre dentre qui dtermine le type de bloc (FB, FC ou
BLOCK DB). Pour laffectation du paramtre, vous pouvez indiquer lidentificateur de bloc
de manire absolue (par exemple FB20) ou de manire symbolique, avec un mn-
monique.
SCL ne propose pas doprations sur ces types de paramtres. Eux seuls peuvent
tre affects lors dappels de blocs. Pour les FC, lindication dun paramtre den-
tre nest pas possible.
Vous pouvez affecter dans SCL des paramtres effectifs aux oprandes des types de
donnes suivants :
S blocs fonctionnels sans paramtres formels,
S fonctions sans paramtres formels ni valeur en retour (VOID),
S blocs de donnes et blocs de donnes systme.
ANY SCL offre la possibilit de dclarer des paramtres de blocs du type ANY. Lorsque
vous appelez un tel bloc, vous pouvez affecter des oprandes de type quelconque (
lexception de ANY) ces paramtres. SCL ne propose toutefois quune possibilit
dutilisation du type de paramtre ANY : la transmission des blocs de niveau hi-
rarchique infrieur.
SCL vous permet daffecter des oprandes avec les types de donnes suivants
comme paramtres effectifs :
S types de donnes simples :
vous indiquez ladresse absolue ou le mnmonique du paramtre effectif.
S types de donnes complexes :
vous indiquez le mnmonique des donnes avec le type de donnes complexes
(par exemple tableaux et structures).
S type de donnes ANY :
ceci nest possible que lorsque loprande est un type de paramtre compatible
avec des paramtres formels.
S type de donnes NIL :
vous indiquez un pointeur zro.
S temporisations, compteurs et blocs ; vous indiquez leur numro (par exemple T1,
Z20 ou FB6).
Le type de paramtre ANY est autoris pour les paramtres formels dentre, den-
tre/sorties de FB et de FC de mme que pour les paramtres de sortie de FC.
Nota
Lorsque lors de lappel dun FB ou dune FC, vous affectez une variable temporaire
un paramtre formel de type ANY, vous ne pouvez pas transmettre ce paramtre
un autre bloc dans le bloc appel. En effet, les adresses des variables temporaires per-
dent leur validit lors de la transmission.
POINTER SCL offre la possisbilit de dclarer des paramtres de bloc du type de donnes
POINTER. Lorsque vous appelez un tel bloc, vous pouvez affecter des oprandes
dun type de donnes quelconque ces paramtres. SCL ne propose toutefois quune
instruction de traitement du type de donnes POINTER : la transmission des blocs
de niveau hirarchique infrieur.
Comme paramtres effectifs, vous pouvez affecter des oprandes des types de
donnes suivants dans SCL :
S types de donnes simples :
vous indiquez ladresse absolue ou le mnmonique du paramtre effectif.
S types de donnes complexes :
vous indiquez le mnmonique des donnes avec le type de donnes complexes
(par exemple tableaux et structures).
S type de donnes POINTER :
ceci nest possible que lorsque loprande est un type de paramtre compatible
avec des paramtres formels.
S type de donnes NIL :
vous indiquez un pointeur zro.
Le type de paramtre POINTER est autoris pour les paramtres formels dentre,
dentre/sorties de FB et de FC de mme que pour les paramtres de sortie de FC.
Nota
Lorsque lors de lappel dun FB ou dune FC, vous affectez une variable temporaire
un paramtre formel de type POINTER, vous ne pouvez pas transmettre ce paramtre
un autre bloc dans le bloc appel. En effet, les adresses des variables temporaires per-
dent leur validit lors de la transmission.
Exemples
END_FUNCTION
FUNCTION_BLOCK FB100
VAR
ii:INT;
aa, bb:ARRAY[1..1000] OF REAL;
END_VAR
BEGIN
//...
FC100(in:=aa, out:=bb);
//...
END_FUNCTION_BLOCK
10.1 Prsentation
Diverses variables Le tableau 10-1 dcrit les catgories dans lesquelles entrent les variables locales :
Variable Signification
Variables statiques Les variables statiques sont des variables locales, dont la valeur
reste inchange durant plusieurs excutions de blocs (mmoire du
bloc). Elles servent stocker les valeurs dun bloc fonctionnel et
sont enregistres dans son bloc de donnes dinstance.
Variables temporaires Les variables temporaires appartiennent localement un bloc de
code et noccupent aucune zone de mmoire statique, puisquelles
sont enregistres dans la pile de la CPU. Leur valeur ne reste
conserve que durant une excution du bloc. Il nest pas possible
dadresser les variables temporaires en dehors du bloc dans lequel
elles ont t dclares.
Divers paramtres Les paramtres de bloc servent rserver de la place et ne sont dfinis que lors de
de blocs lutilisation concrte du bloc (appel). Les paramtres de bloc dclars dans le bloc
sont les paramtres formels, les valeurs qui leur sont affectes lappel du bloc sont
les paramtres effectifs. Les paramtres formels dun bloc peuvent tre considrs
comme variables locales.
Le tableau 10-2 dcrit les catgories dans lesquelles entrent les paramtres de bloc :
Drapeaux Le compilateur de SCL dispose dun drapeau servant dceler des erreurs durant
(drapeau OK) lexcution de programmes dans la CPU. Il sagit dune variable locale de type
BOOL, dont le nom prdfini est OK .
Dclaration de Une section de dclaration diffrente et une paire de mots-cls sont affectes cha-
variables et de que catgorie de variables locales ou de paramtres, comme le montre le
paramtres tableau 10-3.
Chaque section contient les dclaration qui y sont autorises. Elle ne doit figurer
quune seule fois dans la section de dclaration dun bloc, lordre des sections tant
quelconque.
Les sections de dclaration autorises dans chaque bloc sont marqus x .
Donnes Syntaxe FB FC OB
VAR
Variable statique : X X1
END_VAR
VAR_TEMP
Variable temporaire : X X X
END_VAR
Paramtres de bloc comme : VAR_INPUT
Paramtre dentre : X X
END_VAR
VAR_OUTPUT
Paramtre de sortie : X X
END_VAR
VAR_IN_OUT
Paramtre dentre/sortie : X X
END_VAR
1 La dclaration de variables entre les mots-cls VAR et END_VAR est autorise pour les fonc-
tions, cependant lors de la compilation, les dclarations sont dcales dans la zone temporaire.
Initialisation Lorsque vous dclarez des variables et des paramtres, vous devez leur affecter un
type de donnes qui dfinit leur structure et par consquent aussi la place mmoire
requise. Vous pouvez en outre affecter des valeurs initiales des variables statiques
et aux paramtres dun bloc fonctionnel. Le tableau 10-4 prcise quand linitialisa-
tion est possible ou ne lest pas.
1) Spcification du Initialisation du
IDENTIFICATEUR : type de donnes ;
type de donnes
nom de la variable,
du paramtre
ou
de la composante
1) Attributs systme de paramtres
,
Nota
Vous pouvez dclarer les mots rservs, valables uniquement dans SCL, comme
identificateurs en les faisant prcder par le signe # (par exemple, #FOR). Ceci est
utile lorsque vous voulez transmettre des paramtres effectifs des blocs program-
ms dans un langage diffrent (par exemple LIST).
10.3 Initialisation
Principe Lorsque vous dclarez des variables statiques, des paramtres dentre et des para-
mtres de sortie dun FB vous pouvez leur affecter une valeur par dfaut. Pour ce
faire, vous affectez une valeur ( := ) aprs lindication du type de donnes. Comme
le montre la figure 10-2, vous pouvez affecter :
S une constante une variable simple ou
S une liste dinitialisation un tableau.
Initialisation
Constante
:= Liste dinitialisation
dun tableau
Exemple :
VALEUR :REAL := 20.25;
Sachez que linitialisation dune liste de variables (A1, A2, A3,...: INT:=...) nest
pas possible. Vous devez dans ce cas initialiser les variables sparment. Vous pou-
vez affecter des valeurs initiales des tableaux, comme le montre la figure 10-3.
Constante
Liste dinitialisation
de tableaux
Constante
Suite des
chiffres dcimaux ( )
Liste dinitialisation
Facteur de rptition de tableaux
VAR
INDICE1: INT:= 3;
END_VAR
60 60 60 60
VAR
REGULATEUR:
ARRAY [1..4, 1..4] OF INT:= -54, 736, -83, 77,
-1289, 10362, 385, 2,
60, -37, -7, 103,
4(60);
END_VAR
VAR
GENERATEUR:STRUCT
DONNEES: REAL := 100.5;
A1: INT := 10;
A2: STRING[6]:= FACTEUR;
A3: ARRAY[1..12] OF REAL:= 12(100.0);
END_STRUCT;
END_VAR
Prsentation Dans la section de dclaration de blocs fonctionnels, vous pouvez non seulement
dclarer des variables de types de donnes simples, complexes ou dfinis par lutili-
sateur, mais galement des variables de type FB ou SFB. Il sagit des instances
locales du FB ou du SFB.
Les instances locales sont enregistres dans le bloc de donnes dinstance du bloc
fonctionnel appelant.
IDENTIFICATEUR : ;
Nom de linstance locale DESIGNATION
DU SFB
,
Exemples : voici des exemples dans lesquels la syntaxe de la figure 10-4 est cor-
recte :
Alimentation1 : FB10;
Alimentation2,Alimentation3,Alimentation4 : FB100;
Moteur1 : Moteur ;
// Moteur est un mnmonique dfini dans la table des mnmoniques.
Prsentation Une variable statique est une variable locale, dont la valeur reste inchange durant
toutes les excutions du bloc (mmoire du bloc). Elle sert stocker les valeurs dun
bloc fonctionnel et est enregistre sous le bloc de donnes dinstance.
Dclaration
de la variable
VAR END_VAR
Dclaration
de linstance
Section de Cette section de dclaration fait partie de la section de dclaration du FB. Vous pou-
dclaration vez y :
VAR
S dclarer les noms de variables et des types de donnes (linitialisation est option-
END_VAR
nelle) grce la dclaration de la variable, comme dcrit au paragraphe 10.2 ou
S insrer dautres dclarations existantes de variables grce la dclaration de
linstance, comme dcrit au paragraphe 10.4.
Aprs la compilation, cest cette section qui, avec les sections pour les paramtres
de blocs dterminera la structure du bloc de donnes dinstance correspondant.
END_VAR
VAR_TEMP Dclaration
de la variable END_VAR
Section de Cette section de dclaration fait partie dun FB, dune FC, ou dun OB. Comme
dclaration mentionn au paragraphe 10.2, le nom de la variable et le type de donnes doivent
VAR_TEMP tre spcifis dans la dclaration de la variable.
END_VAR
Au dbut de lexcution dun OB, FB ou dune FC, la valeur des donnes temporai-
res nest pas dfinie. Linitialisation nest pas possible.
VAR_TEMP
MEMOIRE_1 :ARRAY [1..10] OF INT;
AUXIL1,AUXIL2:REAL;
END_VAR
Adressage Ladressage de ces variables seffectue toujours dans la section des instructions du
bloc de code dont la section de dclaration contient la dclaration de la variable
(adressage interne), voir chapitre 14, Affectation de valeurs.
Prsentation Les paramtres de bloc sont des paramtres formels dun bloc fonctionnel ou dune
fonction. A lappel du bloc fonctionnel ou de la fonction, les paramtres effectifs
remplacent les paramtres formels, ce qui constitue un moyen dchange dinforma-
tions entre les blocs appels et les blocs appelants.
S Les paramtres dentre formels prennent les valeurs dentre en cours (flux de
donnes de lextrieur vers lintrieur).
S Les paramtres de sortie formels servent transmettre des valeurs de sortie (flux
de donnes de lintrieur vers lextrieur).
S Les paramtres dentre/sortie ont la fois la fonction dun paramtre dentre et
celle dun paramtre de sortie.
De plus ample informations sur lutilisation de paramtres et lchange dinforma-
tions sont fournies au chapitre 16.
VAR_INPUT
VAR_OUTPUT Dclaration
de la variable END_VAR
VAR_IN_OUT
Section de Cette section de dclaration fait partie dun FB, ou dune FC. Comme mentionn au
dclaration paragraphe 10.2, le nom de la variable et le type de donnes doivent tre spcifis
VAR_INPUT dans la dclaration de la variable.
VAR_OUTPUT
Aprs la compilation dun FB, ce sont ces sections qui, avec la section VAR et
VAR_IN_OUT
END_VAR dtermineront la structure du bloc de donnes dinstance correspondant.
Adressage Dans la section des instructions dun bloc de code, ladressage des paramtres de
bloc seffectue :
S par adressage interne, cest--dire dans la section des instructions du bloc dont
la section de dclaration contient la dclaration des paramtres. Cest ce qui est
expliqu au chapitre 14, Affectation de valeurs et au chapitre 13, Expressions,
oprateurs et oprandes.
S par adressage externe par lintermdiaire du DB dinstance
Vous pouvez accder aux paramtres de bloc dun bloc fonctionnel par son DB
dinstance (voir paragraphe 14.8).
Description Le drapeau OK sert marquer lexcution correcte ou incorrecte dun bloc. Il sagit
dune variable globale de type BOOL avec le mot-cl OK .
Si une erreur se produit durant lexcution dune instruction de bloc (par exemple un
dbordement haut pour une multiplication), alors le drapeau OK prend la valeur
FALSE. Lorsque vous quittez le bloc, la valeur du drapeau OK est enregistre dans
le paramtre de sortie ENO dfini automatiquement (paragraphe 16.4) do il peut
tre exploit par le bloc appelant.
Au dbut de lexcution dun bloc, le drapeau OK a la valeur TRUE. Il peut tre
interrog un endroit quelconque du bloc par des instructions de SCL ou prendre la
valeur TRUE/FALSE.
Dclaration Le drapeau OK est une variable dclare dans le systme. Il savre donc inutile de
la dclarer. Si vous souhaitez lutiliser dans votre programme utilisateur, vous devez
cependant choisir loption de compilation Drapeau OK avant deffectuer la com-
pilation.
11.1 Constantes
Utilisation de Outre les variables et les paramtres de bloc, vous pouvez galement utiliser des
constantes constantes dans les affectations de valeurs et les expressions. Il peut sagir de cons-
tantes sous forme de constantes littrales ou de constantes dsignes par un mnmo-
nique.
Dclaration de La dclaration des mnmoniques des constantes seffectue dans la section de dcla-
mnmoniques ration CONST de votre bloc de code (voir paragraphe 8.4)
Lexpression simple dsigne une expression arithmtique, dans laquelle vous pouvez
utiliser les oprations de base +, -, *, /, DIV et MOD.
CONST
Nombre := 10 ;
HEURE1 := TIME#1D_1H_10M_22S.2MS ;
NOM := SIEMENS ;
NOMBRE2 := 2 * 5 + 10 * 4 ;
NOMBRE3 := 3 + NOMBRE2 ;
END_CONST
Notations SCL met votre disposition diverses notations (formats) pour saisir ou afficher des
constantes, que lon dsignera alors par constantes littrales. Cest delles que nous
allons parler dans la suite de ce chapitre.
Dfinition Une constante littrale est caractrise par une notation formelle qui dfinit sa
valeur et son type. Il existe les classes suivantes de constantes littrales :
S constantes littrales numriques,
S constantes littrales de type caractre,
S constantes de temporisation.
La notation de la valeur de la constante diffre selon le type et le format de donnes
choisis :
Affectation de Le type de donnes affect une constante est celui dont la plage de valeurs suffit
types de donnes juste encore pour y inscrire la constante sans perdre de valeur. Ce type de donnes
des constantes doit tre compatible avec celui qui a t choisi pour utiliser des constantes dans une
littrales affectation une variable ou comme type de donnes cible dans une expression :
Si, par exemple, vous dfinissez une constante littrale entire dont la valeur est
suprieure la plage des entiers autorise, elle sera considre comme un entier
double. Si vous affectez cette valeur une variable de type entier, le compilateur
met un message derreur.
Prsentation Pour les notations de valeurs numriques, SCL met votre disposition :
S des constantes littrales entires pour les nombres entiers et
S des constantes littrales relles pour les nombres virgule flottante.
Chacun de ces deux types de constantes littrales correspond une suite de chiffres,
dont la structure est reprsente la figure 11-2. Dans les diagrammes syntaxiques
suivants, on parlera de suite de chiffres dcimaux.
INT: REAL:
40 3000.40
2000 20.00
Dans une constante littrale, une suite de chiffres dcimaux peut optionnellement
tre spare par des caractres de soulignement pour amliorer la lisibilit de grands
nombres.
_
Caractre de soulignement
Voici des notations correctes de suites de chiffres dcimaux dans les constantes litt-
rales :
1000
1_120_200
666_999_400_311
Constante littrale Les constantes littrales entires sont des valeurs entires que vous affectez en fonc-
entire tion de leur longueur des variables du type de donnes :
BOOL, BYTE, INT, DINT, WORD ou DWORD
La figure 11-4 reprsente la syntaxe dune constante littrale entire :
Voici des notations correctes de suites de chiffres dcimaux dans des constantes lit-
trales entires :
1000
+1_120_200
-666_999_400_311
Valeurs binaires, Vous avez la possibilit dentrer une constante littrale entire dans un autre systme
octales et de numration que le systme dcimal en entrant dabord le prfixe 2#, 8# ou 16#,
hexadcimales suivi du nombre dans la reprsentation du systme respectif. Lusage du caractre de
soulignement des fins de meilleure lisibilit de grands nombres est optionnel.
La figure 11-5 illustre la notation gnrale dune constante littrale entire, en pre-
nant pour exemple une suite de chiffres formant un nombre octal :
_
Caractre de soulignement
Constante littrale Les constantes littrales relles sont des valeurs avec virgule que vous pouvez affec-
relle ter aux variables de type REAL. Lindicatio
11-6 donne la syntaxe dun nombre rel :
Exposant
E +
SUITE DE CHIFFRES
DECIMAUX
e
Prsentation SCL offre aussi la possibilit de saisir et de traiter des informations textuelles, par
exemple une chane de caractres qui doit tre affiche comme message.
Les constantes littrales de type caractre ne permettent pas deffectuer de calculs et
ne peuvent de ce fait pas tre utilises dans des expressions. Il existe :
S les constantes littrales de type caractre unique,
S les constantes littrales de type chane de 254 caractres au maximum.
Constante littrale Comme le montre la figure 11-8, une constante littrale de type caractre comporte
de type caractre exactement un caractre, reprsent entre deux apostrophes ().
unique
Constante littrale de type caractre
Caractre
Exemple :
Caractre_1:=B; // Caractre B
Constante littrale Une constante littrale de type chane de caractres est une chane de 254 caractres
de type chane de au maximum (lettres, chiffres et caractres spciaux), reprsente entre deux apos-
caractres trophes (). Aussi bien les majuscules que les minuscules y sont autories.
Interruption
Caractre Caractre
de la chane
Laffectation :
TEXT:STRING[20]:=SIEMENS KARLSRUHE Rheinbrckenstr.
gnre un message derreur et inscrit SIEMENS KARLSRUHE Rh
dans la variable TEXT.
Pour entrer des caractres de mise en forme, lapostrophe ( ) ou le caractre dollar
$ , faites les prcder du caractre dalignement $. Vous avez la possibilit din-
terrompre plusieurs reprises une constante littrale de type chane de caractres
puis de la reprendre.
Interruption dune Une chane de caractres peut se trouver sur une mme ligne dun bloc SCL ou tre
chane de rpartie sur plusieurs lignes, grce des codes spciaux. Le code $> permet din-
caractres terrompre une chane, le code $< de la poursuivre dans la ligne suivante.
TEXT:STRING[20]:=Le FB$>//Version provisoire
$<convertit;
Lcart entre le code dinterruption et le code de poursuite peut stendre sur plu-
sieurs lignes et ne peut contenir, hormis des caractres despacement, que des com-
mentaires. Comme le montre la figure 11-10, vous pouvez interrompre et reprendre
plusieurs fois une constante littrale de type chane de caractres.
$> $<
Commentaire
Caractres Les caractres que vous pouvez utiliser dans les constantes littrales de type carac-
imprimables tre ou chane de caractres sont ceux du jeu de caratres ASCII tendu complet.
Pour entrer des caractres de mise en forme spciaux et des caractres qui ne peu-
vent tre reprsents directement ( et $), utilisez le caractre dalignement $.
Caractre
Caractre
imprimable
Caractre dalignement $
$
Caractre de remplacement
$ ou
Caractre de commande
P, L, R ou T
Chiffre Chiffre
hexadcimal hexadcimal
Caractres non Vous avez galement la possibilit dindiquer des caractres non imprimables du jeu
imprimables de caractres ASCII tendu complet dans une constante littrale de type caractre ou
chane de caractres. Il vous suffit pour cela dindiquer leur reprsentation en code
hexadcimal.
Pour indiquer un caractre ASCII, vous entrez $hh, hh correspondant sa valeur
hexadcimale.
Exemple :
CARACTERE_A :=$41; //correspond la lettre A
Blank :=$20; //correspond au caractre _
Exemples Les exemples suivants illustrent la formulation des constantes littrales de type
caractre :
Notation des types SCL met votre disposition divers formats pour entrer des valeurs de date et
de temporisations dheure. Voici les donnes de temporisation possibles :
Date
Dure
Heure du jour
Date et heure
Date Comme le montre la figure 11-12, une date est introduite par le prfixe DATE# ou
D#.
Date
DATE#
Indication de la date
D#
Pour indiquer la date, vous entrez des nombres entiers pour lanne (4 places), le
mois et le jour, spars par des tirets.
Indication de la date
Dure Comme le montre la figure 11-14, une dure est introduite par le prfixe TIME# ou
T#. Lindication de la dure peut tre ralise de deux manires :
S par la reprsentation dcimale,
S par la reprsentation par nivea.ux.
Dure
TIME# Reprsentation dcimale
-chaque unit de temps (heures, minutes) ne doit tre indiqu quune seule fois
-lodre - jours, heures, minutes, secondes, millisecondes - doit tre respect
Reprsentation dcimale
Jours Heures
Minutes Secondes
SUITE DE CHIFFRES _
DECIMAUX MS
Millisecondes
Heure du jour Comme le montre la figure 11-17, lheure du jour est introduite par le prfixe
TIME_OF_DAY# ou TOD#.
Heure du jour
TIME_OF_DAY#
TOD#
Pour indiquer lheure du jour, vous entrez les heures, minutes et secondes spares
par deux-points. Lindication des millisecondes est optionnelle. Elle est spare des
autres par un point. La figure 11-18 reprsente la syntaxe de lindication de lheure
du jour :
Date et heure Comme le montre la figure 11-19, lindication de la date et de lheure est introduite
par le prfixe DATE_AND_TIME# ou DT#. Il sagit dune constante littrale forme
de lindication de la date et de celle de lheure du jour.
Date et heure
DATE_AND_TIME#
DT#
Description Les repres de saut (tiquettes) servent dfinir le branchement dune instruction
GOTO (voir paragraphe 11.4).
Dclaration de Les repres de saut doivent tre dclars avec leur mnmonique dans la section de
repres dclaration dun bloc de code (voir paragraphe 8.4) :
LABEL
REPERE1, REPERE2, REPERE3;
END_LABEL;
12.1 Prsentation
Donnes globales Dans SCL, vous avez la possibilit dadresser des donnes globales. Il en existe
deux sortes :
S Les zones de mmoire de la CPU :
Il sagit de donnes dclares dans le systme, comme par exemple les entre,
les sorties et les mmentos (voir paragraphe 7.5). Leur nombre dpend de votre
CPU.
S Les donnes utilisateur globales sous forme de blocs de donnes que vous
pouvez charger :
Ces zones de donnes se trouvent dans des blocs de donnes. Pour pouvoir les
utiliser, vous devez pralablement crer les blocs et y dclarer les donnes. Dans
le cas de blocs de donnes dinstance, elles rsultent de blocs fonctionnels et
sont cres automatiquement.
Dfinition Les zones de mmoire dune CPU sont des zones dclares dans le systme, que
vous navez par consquent pas besoin de dclarer dans votre bloc de code.
Diverses zones de Chaque CPU met votre disposition les zones de mmoire suivantes possdant leur
mmoire propre zone dadressage :
S entres/sorties de la mmoire image,
S entres/sorties de la priphrie,
S mmentos,
S temporisations, compteurs (voir chapitre 17).
Syntaxe de Vous adressez les zones de mmoire de la CPU dans une affectation de valeur rali-
ladressage se dans la section des instructions dun bloc de code (voir paragraphe 14.3) par :
S adressage simple, absolu, symbolique, ou
S adressage index.
IDENTIFICATEUR Adresse
DOPERANDE
Adressage absolu
IDENTIFICATEUR
IDENTIFICATEUR Expression
[ de base ]
DOPERANDE
Principe Ladressage absolu dune zone de mmoire seffectue par exemple en affectant une
valeur une variable de mme type :
ETAT_2:= EB10;
Adressage absolu
Variable de mme type
Lidentificateur absolu dsigne une zone de mmoire dans la CPU, que vous spci-
fiez en indiquant lidentificateur doprande (EB dans notre exemple) suivi de
ladresse (ici 10).
Identificateur Lidentificateur absolu est form dun identificateur doprande, lui-mme compos
absolu dun prfixe de mmoire et dun prfixe de taille, ainsi que dune adresse.
Prfixe de taille
Prfixe de mmoire E B 10 Adresse
Identificateur doprande
Identificateur Lassociation dun prfixe de mmoire et dun prfixe de taille constitue un identifi-
doprande cateur doprande.
Identificateur doprande
Prfixe Prfixe
de mmoire de taille
Prfixe de Le prfixe de mmoire permet de dfinir le type de zone de mmoire. Vous disposez
mmoire des types reprsents la figure 12-31:
Prfixe de mmoire I
E Entre
Q
A Sortie
M M Mmento
1 Selon le choix opr dans le SIMATIC Manger (slection du compilateur), ce sont les abrviations SIMATIC (alleman-
des) ou les abrviations CEI (internationales) dont la signification est rserve. Le choix des abrviations ne dpend
pas de celui de la langue.
Prfixe de taille Lindication du prfixe de taille vous permet de spcifier la taille ou le type de la
zone de mmoire qui doit tre lue dans la priphrie, par exemple un octet ou un
mot (voir figure 12-4). Si vous spcifiez un bit, cette indication est optionnelle. La
syntaxe est indique par la figure 12-4 :
Prfixe de taille
X Bit
B Octet
W Mot
D Double mot
Adresse Pour ladresse, vous indiquez une adresse absolue qui dsigne un bit, un octet, un
mot ou un double mot, selon le prfixe de taille que vous avez utilis. Si vous avez
spcifi un bit , vous pouvez indiquer une adresse binaire supplmentaire, voir
figure 12-5. Le premier numro correspond ladresse doctet et le second
ladresse binaire.
Adresse
Numro . Numro
OCTET_ETAT := EB10;
ETAT_3 := E1.1;
Valeur_mesure := EW20;
Pour affecter les mnmoniques aux oprandes respectifs de votre programme utilisa-
teur, vous devez crer une table de mnmoniques.
Tous les types de donnes simples sont autoriss, si tant est que leur longueur est
suffisante pour la longueur dadressage.
Adressage Ladressage consiste par exemple affecter une valeur une variable de mme type
avec le mnmonique dclar.
VALEUR_MESURE_1:= Contact_moteur;
Cration dune La cration de la table de mnmoniques et la saisie des valeurs doit tre ralise
table de avec STEP 7.
mnmoniques
Vous pouvez ouvrir la table de mnmoniques avec SIMATIC Manager, ou directe-
ment avec SCL en choisissant la commande Outils Table de mnmoniques.
Vous avez en outre la possibilit dy importer dautres tables de mnmoniques
cres avec un diteur de texte quelconque et enregistres sous forme de fichiers de
texte afin de les y traiter (pour plus dinformations reportez-vous au guide de lutili-
sateur /231/.
OCTET_ETAT := Octet_entre_bas;
ETAT_3 := Entre 1.1;
Valeur_mesure := Canaux_mesure;
Principe Vous avez galement la possibilit deffectuer un adressage index des zones de
mmoire de la CPU. Lavantage par rapport ladressage absolu rside dans le fait
que vous pouvez adresser les zones de mmoire de manire dynamique, en utilisant
des indices variables. Ainsi, vous pouvez par exemple utiliser la variable de contrle
dune boucle FOR comme indice.
Ladressage index dune zone de mmoire est similaire ladressage absolu et se
distingue que dans lindication de ladresse. A la place de ladresse, vous devez sp-
cifier un indice. Il peut sagir dune constante, dune variable ou dune expression
arithmtique.
Identificateur Dans ladressage index, lidentificateur absolu est form de lidentificateur dop-
absolu rande ainsi que dune expression de base comme indice (voir paragraphe 12.3).
Prfixe de taille
Prfixe de mmoire E X [i,j] Adresse
Expression de base
comme indice,
Identificateur doprande indique entre crochets
VALEUR_MESURE_1 := EW[COMPTEUR];
Prsentation Dans les blocs de donnes, vous pouvez enregistrer et traiter toutes les donnes dont
le domaine de validit stend sur lensemble du programme ou du projet de votre
application. Tout bloc de code y a accs en lecture et en criture.
Adressage des Ladressage des donnes de tout bloc de donnes peut tre :
blocs de donnes
S simple ou absolu,
S index,
S structur.
La figure 12-6 illustre ces divers modes dadressage :
Adresse
Figure 12-6 Syntaxe : adressage absolu, index et structur des blocs de donnes
Principe De mme que pour les zones de mmoire de la CPU, ladressage absolu un bloc de
donnes est ralis par affectation dune valeur une variable de mme type. Aprs
la dsignation du DB, vous indiquez le mot-cl D , suivi du prfixe de taille (par
exemple X pour BIT) et de ladresse doctet (par exemple 13.1).
ETAT_5:= DB11.DX13.1;
Adresse
Prfixe de taille
Dsignation du DB
Variable de mme type
Adressage Comme le montre la figure 12-7, vous spcifiez ladressage en indiquant la dsigna-
tion du DB, suivi du prfixe de taille et de ladresse.
DESIGNATION Prfixe
DU DB . D de taille Adresse
Prfixe de taille Il prcise la longueur de la zone de mmoire qui doit tre adresse dans le bloc de
donnes, par exemple un octet ou un mot. Si vous ne souhaitez spcifier quun bit,
lindication du prfixe de taille est optionnelle. La figure 12-8 reprsente la syntaxe
du prfixe de taille.
Prfixe de taille
X Bit
B Octet
D
W Mot
D Double mot
Adresse Selon le prfixe de taille utilis, vous indiquez une adresse absolue dsignant un bit,
un octet, un mot ou un double mot, comme le montre la figure 12-9. Si vous navez
spcifi quun bit , vous avez la possibilit dindiquer une adresse binaire suppl-
mentaire. Le premier numro dsigne alors dadresse doctet, le second ladresse du
bit.
Adresse
Numro . Numro
Exemples Voici quelques exemples dadressage absolu dun bloc de donnes. Dans la premire
partie, le bloc de donnes est indiqu de manire absolue, dans la seconde il lest de
manire symbolique :
OCTET_ETAT := DB101.DB10;
ETAT_3 := DB30.D1.1;
Valeur_mesure := DB25.DW20;
OCTET_ETAT := Donnes_tat.DB10;
ETAT_3 := Nouvelles donnes D1.1;
Valeur_mesure := Donnes_mesure.DW20;
ETAT_1 := WORD_TO_BLOCK_DB(INDEX).DW10;
Adressage index Vous avez galement la possibilit dadresser les blocs de donnes globaux de
manire indexe. Par rapport ladressage absolu, lavantage rside dans le fait que
vous adressez le DB de manire dynamique, en utilisant des indices variables. Vous
pouvez par exemple utiliser la variable de contrle dune boucle FOR comme
indice.
Ladressage index dun bloc de donnes est similaire ladressage absolu. Seule
lindication de ladresse est diffrente.
A la place de ladresse, vous indiquez un indice qui peut tre une constante, une
variable ou une expression arithmtique.
Identificateur Dans ladressage index, lidentificateur absolu est form de lidentificateur dop-
absolu rande (voir paragraphe 12.7) ainsi que dune expression de base pour lindexage.
ETAT_1:= DB11.DW[COMPTEUR];
ETAT_2:= DB12.DW[NO_W, NO_BIT];
ETAT_1:= Base_donnes1.DW[COMPTEUR];
ETAT_2:= Base_donnes2.DW[NO_W, NO_BIT];
ETAT_1:= WORD_TO_BLOCK_DB(INDEX).DW[COMPTEUR];
Principe Vous ralisez ladressage structur en affectant une valeur une variable de mme
type.
HEURE_1:= DB11.HEURE_JOUR ;
Variable simple
Dsignation du DB
Variable de mme type
Exemples
Dans la section de dclaration du FB10 :
VAR
Rsultat: STRUCT ERG1 : INT;
ERG2 : WORD;
END_STRUCT
END_VAR
Type de donnes utilisateur UDT1 :
TYPE UDT1 STRUCT ERG1 : INT;
ERG2 : WORD;
END_STRUCT
DB20 avec type de donnes utilisateur :
DB20
UDT1
BEGIN ...
DB30 sans type de donnes utilisateur :
DB30 STRUCT ERG1 : INT;
ERG2 : WORD;
END_STRUCT
BEGIN ...
13.1 Oprateurs
Prsentation Les expressions sont formes doprateurs et doprandes. La plupart des oprateurs
de SCL combinent deux oprandes et sont ce de fait dsigns doprateurs binaires.
Les autres oprateurs nutilisent quun oprande et sont donc des oprateurs unaires.
Un oprateur binaire sinscrit entre deux oprandes (par exemple A + B). Un opra-
teur unaire prcde immdiatement son oprande (par exemple -B).
Cest la priorit des oprateurs, indique dans le tableau 13-1, qui dtermine lordre
de calcul. Le chiffre 1 correspond la priorit la plus leve.
Tableau 13-1 Liste des oprateurs
Oprateurs Puissance ** 2
arithmtiques Oprateurs unaires
Plus unaire + 3
Ces oprateurs permet- Moins unaire - 3
tent deffectuer des cal-
culs mathmatiques
Oprateurs arithmtiques de base
Multiplication * 4
Fonction Modulo MOD 4
Division dentiers DIV 4
Addition + 5
Soustraction - 5
Oprateurs de compa- Infriorit < 6
raison Supriorit > 6
Infriorit ou galit <= 6
Ces oprateurs permettent
Supriorit ou galit >= 6
de formuler des conditions
Egalit = 7
Diffrence <> 7
Parenthses (expression) ( ) 1
Prsentation Les diverses expressions sont reprsentes dans le diagramme syntaxique de la fi-
gure 13-1. Puisque les expressions arithmtiques, expressions logiques, expressions
de comparaison et expressions de puissances prsentent quelques particularits, elles
seront traites sparment dans les paragraphes 13.3 13.6.
Expression
Oprande
Oprateur
de comparaison
Oprateur atithm
tique de base
Puissance
Expression ** Exposants
+ Expression
Plus anaire
Moins anaire
NOT Ngation
( Expression )
EB10 // Oprande
A1 AND (A2) // Expression logique
(A3) < (A4) // Expression de comparaison
3+3*4/2 // Expression arithmtique
13.2.1 Oprandes
Prsentation Les oprandes sont des objets avec lesquels vous pouvez former des expressions. Ils
sont reprsents par le diagramme syntaxique de la figure 13-2.
Oprande Constante
Variable tendue
(Expression)
NOT Oprande
Constante Vous pouvez utiliser une constante sous forme de valeur numrique, de mnmonique
ou de chane de caractres.
Constante
Valeur numrique
Chane de caractres
Mnmonique
Variable tendue Une variable tendue est un concept gnral pour dsigner une srie de variables qui
seront traites plus en dtails au chapitre 14.
Variable tendue
Variable simple
Variable absolue
pour les zones de mmoire
de la CPU
Variable dans un DB
Appel de FC
Nota
Lors dun appel de fonction, le rsultat du calcul, savoir la valeur en retour remplace
la dsignation de la fonction dans lexpression. Les fonctions VOID qui ne possdent
pas de valeur en retour ne peuvent donc pas tre utilises comme oprandes dans des
expressions.
* / MOD DIV +
Oprations Le tableau 13-2 reprsente les oprations arithmtiques possibles et indique quel
arithmtiques type de donnes leur rsultat est affect, en fonction des oprandes utiliss.
ANY_INT reprsente les types de donnes INT, DINT
ANY_NUM reprsente les types de donnes ANY_INT et REAL
1 Il est noter que le type du rsultat est dtermin par le type doprande le plus puissant.
Rgles Lordre de traitement des oprateurs dans une expression arithmtique est fonction
de leur priorit (voir tableau 13-2).
S Pour une meilleure lisibilit, il est recommand dindiquer les nombres ngatifs
entre parenthses, mme lorsque cela nest pas indispensable.
S Pour des divisions avec deux oprandes entiers de type INT, les oprateurs
DIV et / fournissent le mme rsultat (cf. exemple 13-3).
S Avec les oprateurs de division /, MOD et DIV, le second oprande doit
tre diffrent de zro.
S Lorsque lun des oprandes est du type INT (entier) et le second du type REAL
(nombre virgule flottante), le rsultat est toujours du type REAL.
Expression Valeur
i + j 8
i - j 14
i * j -33
i DIV j -3
i MOD j 2
i/j -3
Soient i et j, deux variables entires dont les valeurs respectives sont 3 et -5. Le
rsultat de lexpression arithmtique reprsente dans lexemple 13-4, savoir la
valeur entire 7, est ensuite affect la variable VALEUR.
13.4 Exposants
Prsentation La figure 13-6 reprsente la formation dun exposant dune expression de puissance.
(voir paragraphe 13.2). Il est noter que vous pouvez en particulier utiliser des
variables tendues pour la formation dun exposant.
Exposant
Variable tendue
Dfinition Une expression de comparaison est une expression de type BOOL forme avec des
oprateurs de comparaison. Il sagit dune combinaison doprandes du mme type
ou de la mme classe de types avec les oprateurs reprsents la figure 13-7.
Oprateurs de comparaison
Oprateurs de Les oprateurs de comparaison comparent la valeur numrique des deux oprandes.
comparaison
1er Oprande Oprateur 2nd Oprande Valeur boolenne
Le rsultat de la comparaison est une valeur qui est soit vraie, soit fausse. La valeur
est vraie (TRUE) si la comparaison est ralise, fausse (FALSE) si elle ne
lest pas.
Rgles Pour former une expression de comparaison, vous devez appliquer les rgles suivan-
tes :
S Vous devriez indiquer les oprandes logiques entre parenthses pour prciser
lordre dexcution des oprations logiques.
S Vous pouvez appliquer la logique boolenne pour combiner des expressions logi-
ques et formuler des conditions du type si a < b et b < c, alors... . Comme
expressions, vous pouvez utiliser des variables ou des constantes du type BOOL,
de mme que des expressions de comparaison.
S Pour les classes de types suivantes, toutes les variables peuvent tre compares :
INT, DINT, REAL
BOOL, BYTE, WORD, DWORD
CHAR, STRING
S Pour les types de temps suivants, seules les variables appartenant au mme type
peuvent tre compares :
DATE, TIME, TOD, DT
S La comparaison de caractres (type CHAR) seffectue daprs la chane de
caractres ASCII.
S Il nest pas possible de comparer les variables S5TIME.
S Lorsque les deux oprandes sont du type DT ou STRING, vous devez les compa-
rer avec la fonction CEI correspondante.
Dfinition Une expression logique est forme doprateurs logiques (AND, &, XOR, OR)
qui permettent de combiner des oprandes logiques (de type BOOL) ou des variables
de type BYTE, WORD ou DWORD. La ngation (cest--dire linversion) de la
valeur dun oprande logique sobtient avec loprateur NOT.
Oprateurs Le tableau 13-3 reprsente les expressions logiques disponibles et les types de don-
logiques nes du rsultat et des oprandes utiliss.
ANY_BIT reprsente les types de donnes BOOL, BYTE, WORD, DWORD
Exemples Soit n une variable entire avec la valeur 10 et s une variable de type caractre
reprsentant la lettre A. Voici des expressions logiques combinant ces deux varia-
bles :
Expression Valeur
Informations SCL connat les instructions simples et les instructions structures. Les premires
supplmentaires englobent, outre les affectations de valeurs, les instructions dappel et linstruction
GOTO. Vous trouverez des informations ce sujet dans les chapitres 15 et 16.
Les instructions de contrle pour le branchement de programme et pour le traite-
ment de boucles comptent parmi les instructions structures. Des informations sont
donnes ce sujet au chapitre 15.
14.1 Prsentation
Principe Laffectation dune valeur consiste remplacer la valeur actuelle dune variable par
une nouvelle valeur, donne sous forme dexpression. Celle-ci peut comporter des
identificateurs de fonctions ( FC ) qui vont tre excutes et fournir des valeurs cor-
respondantes (valeurs en retour).
Comme lillustre le diagramme syntaxique, lexpression est calcule dans la partie
droite de laffectation de valeur, le rsultat tant enregistr dans la variable dont le
nom figure gauche du signe daffectation. Les variables autorises sont reprsen-
tes la figure 14-1.
Affectation de valeur
Variable absolue
dans les zones de mmoire
de la CPU
Variable dans un DB
Affectation Toute expression et toute variable de type de donnes simple peuvent tre affectes
une autre variable de type identique.
Identificateur := expression;
Identificateur := variable de type de donnes lementaire;
FUNCTION_BLOCK FBx
VAR
COMMUTATEUR_1 :INT;
COMMUTATEUR_2 :INT;
VALEUR_CONSIGNE_1 :REAL;
VALEUR_CONSIGNE_2 :REAL;
INTERROGATION_1 :BOOL;
HEURE_1 :S5TIME;
HEURE_2 :TIME;
DATE_1 :DATE;
HEURE_JOUR_1 :TIME_OF_DAY;
END_VAR
BEGIN
// Affecter une constante une variable
COMMUTATEUR_1 := -17;
VALEUR_CONSIGNE_1 := 100.1;
INTERROGATION_1 := TRUE;
HEURE_1 :=TIME#1H_20M_10S_30MS;
HEURE_2 :=TIME#2D_1H_20M_10S_30MS;
DATE_1 :=DATE#19960110;
// Affecter une variable
VALEUR_CONSIGNE_1 := VALEUR_CONSIGNE_2;
COMMUTATEUR_2_ := COMMUTATEUR_1;
// Affecter une expression une variable
COMMUTATEUR_2:= COMMUTATEUR_1 * 3;
END_FUNCTION_BLOCK
Variables de type Les variables de type STRUCT et UDT sont des variables structures qui dsignent
STRUCT et UDT une structure complte ou lune de ces composantes.
Voici des indications correctes de variables comme structures :
Image //Identificateur de structure
Image.lment //Identificateur de composante de
//structure
Image.tableau //Identificateur de tableau simple
//dans une structure
Image.tableau[2,5] //Identificateur dune composante de
//tableau dans une structure
Affectation dune Une structure complte ne peut tre affecte une autre structure que si leurs com-
structure complte posantes possdent les mmes types de donnes et les mmes noms. Voici une affec-
tation correcte :
Nom_structure_1:=Nom_structure_2;
Affectation de A toute composante de structure vous pouvez affecter une variable, une expression
composantes de ou une autre composante de structure de type compatible. Voici des affectations cor-
structure rectes :
Nom_structure_1.lement1 := Valeur;
Nom_structure_1.lement1 := 20.0;
Nom_struct_1.lem1 := Nom_struct_2.lemt1;
Nom_strc_1.nom_tabl1 := Nom_strc_2.nom_tabl2;
Nom_structure_1.nom_tableau[10] := 100;
FUNCTION_BLOCK FB10
VAR
VAR_AUX :REAL;
VALEUR_MESURE :STRUCT //Structure cible
TENSION:REAL;
RESISTANCE:REAL;
Tableau_simple:ARRAY[1..2,1..2] OF INT;
END_STRUCT;
Affectation dun Vous pouvez affecter un tableau complet un autre tableau. Il faut pour cela que les
tableau complet types de donnes des composantes et les limites des tableaux (indices minimaux et
maximaux) soient identiques. Voici un exemple daffectation correct :
nom_tableau_1:=nom_tableau_2;
Affectation dune Pour affecter des valeurs un tableau partiel, vous indiquez les indices entre cro-
composante de chets aprs le nom du tableau, en en omettant certains, en commenant par la droite.
tableau Vous adressez ainsi un tableau partiel, dont le nombre de dimensions correspond au
nombre dindices omis.
Il en rsulte que bien que vous pouvez rfrencer des lignes et des composantes
individuelles dans une matrice, vous ne pouvez pas rfrencer de colonnes successi-
ves (cest--dire de ... ).
Voici des exemples daffectation correcte :
nom_tableau_1[i]:=nom_tableau_2[j];
nom_tableau_1[i]:=expression;
identificateur_1 :=non_tableau_1[i];
Exemples Les exemples suivants illustrent les affectations de valeurs des tableaux :
FUNCTION_BLOCK FB3
VAR
VALEURS_CONSIGNE :ARRAY [0..127] OF INT;
VALEURS_EFFECTIVES:ARRAY [0..127] OF INT;
BEGIN
// Affectation dun tableau complet
// un tableau
VALEURS_CONSIGNE:=VALEURS_EFFECTIVES;
Variable de type Une variable de type STRING contient une chane dau maximum 254 caractres.
STRING
Affectation A chaque variable du type de donnes STRING, vous pouvez affecter une autre
variable de mme type. Voici des exemples daffectations correctes :
variable_chane_1 := const_litt_chane ;
variable_chane_1 := variable_chane_2 ;
Exemple Les exemples suivants illustrent des affectations de valeurs des variables de type
STRING :
FUNCTION_BLOCK FB3
VAR
AFFICHAGE_1 : STRING[50] ;
STRUCTURE1 : STRUCT
AFFICHAGE_2 : STRING[100] ;
AFFICHAGE_3 : STRING[50] ;
END_STRUCT;
END_VAR
BEGIN
// Affectation dune constante une variable
// de type STRING
AFFICHAGE_1 := STRUCTURE1.AFFICHAGE_3 ;
Variable Le type de donnes DATE_AND_TIME dfinit une zone de 64 bits (8 octets) pour y
DATE_AND_TIME indiquer la date et lheure.
Affectation A toute variable du type de donnes DATE_AND_TIME, vous pouvez affecter une
autre variable ou constante de mme type. Voici des exemples daffectations correc-
tes :
variable_dt_1 := constante littrale de type date et heure ;
variable_dt_1 := variable_dt_2 ;
Exemple Les exemples suivants illustrent les affectations de valeurs des variables de type
DATE_AND_TIME :
FUNCTION_BLOCK FB3
VAR
HEURE_1 : DATE_AND_TIME;
STRUCTURE : STRUCT
HEURE_2 : DATE_AND_TIME ;
HEURE_3 : DATE_AND_TIME ;
END_STRUCT;
END_VAR
BEGIN
// Affectation dune constante
// une variable de type DATE_AND_TIME
HEURE_1 := DATE_AND_TIME#1995010112:12:12.2 ;
STRUCTURE.HEURE_3 := DT#1995020211:11:11 ;
HEURE_1 := STRUCTURE.HEURE_2 ;
Variable absolue Une variable absolue dsigne les zone de mmoire autorises dune CPU. Comme
dcrit au chapitre 12, vous avez trois possibilits pour adresser ces zones afin de les
affecter des variables.
Variable absolue
Identificateur doprande
Prfixe Prfixe Adresse
de mmoire de taille
Exemple Les exemples suivants illustrent les affectations de valeurs des identificateurs
absolus :
FUNCTION_BLOCK_FB10
VAR
MOT_ETAT1: WORD;
MOT_ETAT2: BOOL;
MOT_ETAT3: BYTE;
MOT_ETAT4: BOOL;
ADRESSE: INT:= 10;
END_VAR
BEGIN
// Affectation dun mot dentre
// une variable (adressage simple)
MOT_ETAT1:= EW4 ;
// Affectation dun bit de sortie
// une variable (adressage simple)
MOT_ETAT2:= a1.1 ;
// Affectation dun octet dentre
// une variable (adressage index)
MOT_ETAT3:= EB[ADRESSE];
// Affectation dun bit dentre
// une variable (adressage index)
FOR ADRESSE:= 0 TO 7 BY 1 DO
MOT_ETAT4:= e[1,ADRESSE] ;
END_FOR;
END_FUNCTION_BLOCK
Variable dans un Ladressage des variables globales dans des blocs de donnes seffectue galement
DB par affectation dune valeur une variable de type identique ou inversement. Vous
pouvez adresser ces donnes de manire structure, absolue ou indexe (voir chapi-
tre 12).
Variable de DB
Identificateur doprande
DESIGNATION Prfixe
DU DB . D de taille Adresse
Affectation A toute variable globale, vous pouvez affecter une variable ou une expression de
type identique. Voici des exemples daffectation correcte :
DB11.DW10:=20;
DB11.DW10:=Etat;
Exemples Dans lexemple suivant, il est admis comme hypothse, que dans le DB11 vous avez
dclar une variable NOMBRE de type INTEGER et une structure NOMBRE1
avec la composante NOMBRE2 de type INTEGER.
BEGIN
MOT10:=W#16#bb;
END_DATA_BLOCK
VAR
REGULATEUR_1: ARRAY [1..4] OF INT;
MOT_ETAT1 : WORD ;
MOT_ETAT2 : ARRAY [1..4] OF INT;
MOT_ETAT3 : INT ;
ADRESSE : INT ;
END_VAR
BEGIN
// Affectation du mot 10 du DB11
// une variable (adressage simple)
MOT_ETAT1:= DB11.DW10
// La variable NOMBRE du DB11
// est affecte la 1re composante du tableau
// (adressage structur)
REGULATEUR_1[1]:= DB11.NOMBRE;
// Affectation de la composante NOMBRE2
// de la structure NOMBRE1
// la variable MOT_ETAT3
MOT_ETAT3:= DB11.NOMBRE1.NOMBRE2
// Affectation dun mot avec lindice ADRESSE
// du DB11 une variable
// (adressage index)
FOR ADRESSE:= 1 TO 10 BY 1 DO
MOT_ETAT2[ADRESSE]:= DB11.DW[ADRESSE] ;
END_FOR;
15.1 Prsentation
Instructions de Il est frquent quen fonction de certaines conditions, diverses instructions dun pro-
slection gramme doivent tre excutes. Les instructions de slection vous permettent de
programmer de 2 n alternatives afin de raliser un branchement dans lexcution
du programme.
Tableau 15-1 Types de branchements
Type de bran-
Fonction
chement
Instruction IF Linstruction IF vous permet de raliser le branchement de votre
programme vers lune parmi deux alternatives, en fonction dune
condition qui peut tre soit vraie, soit fausse.
Instruction Linstruction CASE vous permet de raliser le branchement de
CASE votre programme vers lune parmi n alternatives. Il vous suffit de
faire prendre une variable, une valeur parmi n possibles.
Instructions Vous pouvez programmer lexcution de boucles en utilisant des instructions ditra-
ditration tion. Celles-ci vous permettent de dfinir quelles parties de votre programme doi-
vent tre rptes en fonction de certaines conditions.
Tableau 15-2 Types dinstructions ralisant lexcution de boucles
Type de bran-
Fonction
chement
Instruction Elle permet de rpter une suite dinstructions tant que la varia-
FOR ble reste dans la plage des valeurs indique.
Instruction Elle permet de rpter une suite dinstructions tant quune condi-
WHILE tion dexcution est ralise.
Instruction Elle permet de rpter une suite dinstructions jusqu ce quune
REPEAT condition darrt soit ralise.
Type de bran-
Fonction
chement
Instruction Elle permet dabandonner lexcution de la boucle en cours.
CONTINUE
Instruction Elle permet de quitter une boucle un endroit quelconque, que la
EXIT condition darrt soit remplie ou pas.
Instruction Elle provoque le saut immdiat un repre de saut dfini.
GOTO
Instruction Elle permet de quitter le bloc en cours dexcution.
RETURN
Conditions La condition est soit une expression de comparaison, soit une expression logique.
Elle est du type BOOL et peut prendre les valeurs TRUE (vrai) ou FAlSE (faux).
Voici des exemples dexpressions de comparaison correctes :
COMPTEUR<=100
SQR(A)>0.005
Rponse = 0
SOLDE>=TRANSFERT
ch1< T
Nota
Il est noter que les oprandes logiques (ici les expressions de comparaison) figurent
entre parenthses afin dviter toute confusion dans lordre dexcution.
15.2 Instruction IF
Principe Linstruction IF est une instruction conditionnelle qui propose une ou plusieurs
options pour slectionner lune (ou le cas chant aucune) de ses sections des ins-
tructions.
Syntaxe Instruction IF
Section
IF Expression THEN des instructions
Condition
Section
ELSIF Expression THEN des instructions
Condition
Nota
Noubliez pas de terminer linstruction END_IF par un point-virgule !
Nota
Lavantage dutiliser une ou plusieurs branches ELSIF plutt quune squence
dinstructions IF, rside dans le fait que les expressions logiques qui suivent une
expression vraie ne sont plus value, ce qui permet de diminuer la dure dexcu-
tion dun programme.
IF E1.1 THEN
N:= 0;
SUM:= 0;
OK:= FALSE; // Affecter valeur FALSE au drapeau OK
ELSIF START = TRUE THEN
N:= N + 1;
SUM:= SUM + N;
ELSE
OK:= FALSE;
END_IF;
CASE Expression OF
Valeur
Section
ELSE : des instructions END_CASE
Nota
Noubliez pas de terminer linstruction END_CASE par un point-virgule !
Liste de valeurs Elle contient les valeurs autorises pour lexpression de slection.
Liste de valeurs
Nombre entier
Valeur
Valeur .. Valeur
Rgles Lorsque vous formulez la liste de valeurs, vous devez tenir compte des rgles sui-
vantes :
S toute liste de valeur peut commencer par une constante, une liste de constantes
ou une plage de constantes,
S les valeurs de la liste doivent tre du type INTEGER,
S chaque valeur doit tre unique,
CASE TW OF
1: AFFICHAGE
:= TEMP_FOUR;
2: AFFICHAGE
:= VITESSE_MOTEUR;
3: AFFICHAGE
:= TARE_BRUTE;
AW4:= 16#0003;
4..10:AFFICHAGE := INT_TO_DINT (TW);
AW4:= 16#0004;
11,13,19:AFFICHAGE:= 99;
AW4:= 16#0005;
ELSE: AFFICHAGE:= 0;
TW_ERROR:= 1;
END_CASE;
Nota
Veillez ce que la dure dexcution des boucles ne soit pas trop longue, car la CPU
se mettrait larrt suite un retard dacquittement.
Principe Une instruction FOR, encore appele instruction ditration excute une suite dins-
tructions dans une boucle, alors que des valeurs sont continuellement affectes une
variable (variable de contrle). La variable de contrle doit tre lidentificateur
dune variable locale de type INT ou DINT.
Instruction FOR
Affectation Expression
FOR initiale TO de base
Expression Section
BY de base DO des instructions
pour lincrment
END_FOR
Nota
Noubliez pas de terminer linstruction END_FOR par un point-virgule !
Instruction Pour former la valeur initiale de la variable de contrle, vous disposez de linstruc-
dinitialisation tion initiale reprsente la figure 15-5.
Instruction initiale
Variable := Expression
tendue de base
Exemples :
FOR I := 1 TO 20
FOR I := 1 TO (valeur initiale +J)
Valeur finale et Pour former la valeur finale et lincrment, vous pouvez respectivement crer une
incrment expression de base.
FUNCTION_BLOCK RECHERCHER
VAR
INDEX : INT;
MOT_CLE : ARRAY [1..50] OF STRING;
END_VAR
BEGIN
FOR INDEX:= 1 TO 50 BY 2 DO
IF MOT_CLE [INDEX] = CLE THEN
EXIT;
END_IF;
END_FOR;
END_FUNCTION_BLOCK
Principe Linstruction WHILE permet de rpter lexcution dune suite dinstructions tant
quune condition dexcution est ralise. Celle-ci applique les rgles dune expres-
sion logique.
Instruction WHILE
Section
WHILE Expression DO des instructions END_WHILE
Condition dexcution
La section des instructions qui suit DO est rpte tant que la condition dexcution
est TRUE.
Nota
Noubliez pas de terminer linstruction END_WHILE par un point-virgule !
FUNCTION_BLOCK RECHECHER
VAR
INDEX : INT;
MOT_CLE : ARRAY [1..50] OF STRING;
END_VAR
BEGIN
INDEX:= 1;
WHILE INDEX <= 50 AND MOT_CLE[INDEX] <> CLE DO
INDEX:= INDEX + 2;
END_WHILE;
END_FUNCTION_BLOCK
Instruction REPEAT
Section
REPEAT des instructions UNTIL Expression END_REPEAT
Condition dabandon
Nota
Noubliez pas de terminer linstruction END_REPEAT par un point-virgule !
FUNCTION_BLOCK RECHERCHER
VAR
INDEX : INT;
MOT_CLE : ARRAY [1..50] OF STRING;
END_VAR
BEGIN
INDEX:= 0;
REPEAT
INDEX:= INDEX + 2;
UNTIL
INDEX > 50 OR MOT_CLE[INDEX] = CLE
END_REPEAT;
END_FUNCTION_BLOCK
Instruction CONTINUE
CONTINUE
FUNCTION_BLOCK CONTINUE
VAR
INDEX :INT;
TABLEAU :ARRAY[1..100] OF INT;
END_VAR
BEGIN
INDEX:= 0;
WHILE INDEX <= 100 DO
INDEX:= INDEX + 1;
// Si TABLEAU[INDEX] est gal INDEX,
// alors TABLEAU [INDEX] nest pas modifi :
IF TABLEAU[INDEX] = INDEX THEN
CONTINUE;
END_IF;
TABLEAU[INDEX]:= 0;
// Instructions suivantes
//....
END_WHILE;
END_FUNCTION_BLOCK
Principe Linstruction EXIT permet de quitter une boucle (boucle FOR, WHILE ou
REPEAT) un endroit quelconque, que la condition dabandon soit ralise ou ne le
soit pas.
Instruction EXIT
EXIT
FUNCTION_BLOCK EXIT
VAR
INDEX_1 := INT;
INDEX_2 := INT;
INDEX_RECHERCHE:= INT;
MOT_CLE : ARRAY[1..51] OF STRING;
END_VAR
BEGIN
INDEX_2 := 0;
FOR INDEX_1:= 1 TO 51 BY 2 DO
// La boucle FOR est quitte si
// MOT_CLE[INDEX_1] est gal CLE :
IF MOT_CLE[INDEX_1] = CLE THEN
INDEX_2:= INDEX_1;
EXIT;
END_IF;
END_FOR;
// Laffectation de valeur suivante est effectue
// aprs lexcution de EXIT ou
// aprs la fin normale de la boucle FOR :
INDEX_RECHERCHE:= INDEX_2;
END_FUNCTION_BLOCK
Branchement de programme
GOTO IDENTIFICATEUR
Repre de saut
FUNCTION_BLOCKFB3//Ex_GOTO
VAR
INDEX : INT;
A : INT;
B : INT;
C : INT;
MOT_CLE: ARRAY[1..51] OF STRING;
END_VAR
LABEL
REPERE1, REPERE2, REPERE3;
END_LABEL
BEGIN
IF A > B THEN GOTO REPERE1;
ELSIF A > C THEN GOTO REPERE2;
END_IF;
//...
REPERE1 : INDEX:= 1;
GOTO REPERE3;
REPERE2 : INDEX:= 2;
//...
REPERE3 : ;
//...
END_FUNCTION_BLOCK
Principe Linstruction RETURN permet de quitter le bloc en cours dexcution (OB, FB, FC)
et de revenir au bloc appelant ou au systme dexploitation, dans le cas dun OB.
Instruction RETURN
RETURN
Nota
A la fin de la section dexcution dun bloc de code ou de la section de dclaration dun
bloc de donnes, linstruction RETURN est redondante, puisquelle est excute auto-
matiquement.
Transmission de Lorsque vous appelez une fonction ou un bloc fonctionnel, un change de donnes a
paramtres lieu entre le bloc appelant et le bloc appel. Les paramtres transmettre doivent
tre indiqus sous forme de liste de paramtres lors de lappel. Ils doivent figurer
entre parenthses et tre spars par des virgules.
Principe Lexemple suivant illustre lappel dune fonction pour laquelle sont indiqus un
paramtre dentre, un paramtre dentre/sortie et un paramtre de sortie.
Liste de paramtres
Comme le montre la figure 16-2, lindication des paramtres a la forme dune affec-
tation de valeurs. En effet, elle consiste affecter des valeurs (paramtres effectifs)
aux paramtres que vous avez dfinis dans la section de dclaration du bloc appel
(paramtres formels).
Paramtres Les paramtres formels sont ceux qui sont dclars dans le bloc appel. Leur unique
formels fonction est de rserver la place pour les paramtres effectifs qui seront transmis au
bloc lors de son appel. Vous les avez dfinis dans la section de dclaration du bloc
(FB ou FC).
Tableau 16-1 Sections de dclaration autorises pour les paramtres formels
Instance globale et Lorsque vous appelez un bloc fonctionnel dans SCL, vous pouvez utiliser
locale
S aussi bien des blocs de donnes dinstance globaux,
S que des zones dinstances locales du bloc de donnes dinstance actuel.
Cest lendroit o sont enregistres les donnes qui distingue lappel dun FB
comme instance locale de celui dun FB comme instance globale. Dans le premier
cas, les donnes ne sont pas enregistres dans un DB particulier, mais dans le bloc
de donnes dinstance du FB appelant.
Appel dun FB
FB : bloc fonctionnel
SFB : bloc fonctionnel systme
DESIGNATION
DU FB
Nom de linstance globale
DESIGNATION DESIGNATION
. DU DB ( Paramtres du FB )
DU SFB
voir paragraphe 16.2.1
IDENTIFICATEUR
Appel absolu :
FB10.DB20 (X1:=5,X2:=78,......);
MOTEUR (X1:=5,X2:=78,......);
16.2.1 Paramtres du FB
Principe Lorsque vous appelez un bloc fonctionnel comme instance globale ou locale ,
vous devez faire la distinction entre
S ses paramtres dentre et
S ses paramtres dentre/sortie
dans la liste des paramtres. Dans les deux cas, vous affectez les paramtres effec-
tifs aux paramtres formels :
Paramtres Paramtres
formels effectifs
Par_E 3 //Affectation de lentre
Par_E/S LONGUEUR //Affectation de lentre/sortie
Les paramtres de sortie ne sont pas indiqus lappel dun FB, en revanche ils sont
affects aprs lappel.
La syntaxe de laffectation des paramtres du FB est la mme quil sagisse
dinstances globales ou locales.
Paramtres du FB
Affectation
de lentre
Affectation de
lentre/sortie
Exemple Voici un exemple dappel de FB avec une affectation de lentre et une affectation
de la sortie :
FB31.DB77(Par_E:=3, Par_E/S:=LONGUEUR);
Expression
DESIGNATION DE
LA TEMPORISATION
IDENTIFICATEUR :=
DESIGNATION
Nom du paramtre DU COMPTEUR
dentre
(Paramtre formel) DESIGNATION
DU BLOC
Paramtre Explication
effectif
Expression S expression arithmtique, logique ou de comparaison
S constante
S variable tendue
Dsignation Vous dfinissez une temporisation ou un compteur qui seront utiliss lors
TEMPORISA- de lexcution dun bloc (voir aussi le chapitre 17).
TION/COMP-
TEUR
Dsignation Vous dfinissez un bloc qui sera utilis comme paramtre dentre. Le type
BLOC de bloc (FB, FC, DB) doit tre dfini dans la dclaration du paramtre
dentre.
A laffectation du paramtre, vous indiquez la dsignation du bloc, absolue
ou symbolique (voir aussi le chapitre 9).
Affectation de lentre/sortie
IDENTIFICATEUR := Variable
tendue
Nom du paramtre
Paramtre effectif
dentre/sortie
(Paramtre formel)
Paramtres Puisque le paramtre effectif affect peut tre modifi comme paramtre dentre/
effectifs possibles sortie durant lexcution du FB, il doit sagir dune variable. Cest la raison pour
laquelle vous ne pouvez pas affecter un paramtre dentre un paramtre dentre/
sortie (la nouvelle valeur ne pourrait pas y tre inscrite).
Paramtre Explication
effectif
Variable Vous pouvez utiliser les types de variables tendues suivants :
tendue variable simple et paramtre
adressage de variable absolue
adressage de bloc de donnes
appel de fonction
(voir aussi le chapitre 14)
Principe Un bloc fonctionnel comportant une boucle FOR pourrait se prsenter comme dans
lexemple 16-1. Il y est suppos que le mnmonique TEST a t dclar pour le
FB17 dans la table des mnmoniques.
FUNCTION_BLOCK TEST
VAR_INPUT
VAL_FIN: INT; //Paramtre dentre
END_VAR
VAR_IN_OUT
IQ1: REAL; //Param. dentre/sortie
END_VAR
VAR_OUTPUT
CONTROLE: BOOL;//Paramtre de sortie
END_VAR
VAR
INDEX: INT;
END_VAR
BEGIN
CONTROLE:= FALSE;
FOR INDEX:= 1 TO VAL_FIN DO
IQ1:= IQ1 * 2;
IF IQ1 > 10000 THEN
CONTROLE:= TRUE;
END_IF;
END_FOR;
END_FUNCTION_BLOCK
Appel Vous pouvez appeler ce FB de lune des faons suivantes. On suppose que
VARIABLE1 a t dclare comme variable de type REAL dans le bloc appelant.
Principe Lexemple 16-1 reprsente un bloc fonctionnel programm avec une boucle FOR
simple. On suppose que le mnmonique TEST a t dclar pour le FB17 dans la
table de mnmoniques.
Appel En supposant que VARIABLE1 a t dclare comme variable de type REAL dans
le bloc appelant, vous pourriez appeler le FB comme suit :
Lecture des La lecture du paramtre de sortie CONTROLE peut tre ralise de la manire sui-
paramtres de vante :
sortie
Valeur en retour Contrairement aux blocs fonctionnels, les fonctions fournissent un rsultat, la valeur
en retour. Cest la raison pour laquelle elles peuvent tre traites comme des opran-
des. Les fonctions dont la valeur en retour est du type VOID constituent une excep-
tion.
Dans laffectation de valeurs suivante, la fonction ECART est appele avec des
paramtres donns :
LONGUEUR:= ECART (X1:=-3, Y1:=2);
ECART constitue la valeur en retour !
La fonction calcule la valeur en retour qui porte le mme nom quelle et la transmet
au bloc appelant, o elle remplace lappel de la fonction.
Vous pouvez utiliser la valeur en retour dans les lments suivants dune FC ou dun
FB :
S une affectation de valeur,
S une expression logique, arithmtique ou de comparaison ou
S comme paramtre pour lappel dun autre bloc fonctionnel ou dune autre fonc-
tion.
Les fonctions de type VOID constituent une exception. Elles ne possdent pas de
valeur en retour et ne peuvent donc pas tre utilises dans des expressions.
La figure 16-10 montre la syntaxe de lappel dune fonction :
Appel de fonction
DESIGNATION
DE LA FC
DESIGNATION ( Paramtres )
DE LA SFC de la FC
IDENTIFICATEUR
FC : fonction
Nom de la fonction standard SFC : fonction systme
ou mnmonique
Fonction standard ralise dans le compilateur
Nota
Si dans SCL vous appelez une fonction dont la valeur en retour na pas t affecte,
il peut en rsulter une excution errone du programme utilisateur.
Dans une fonction SCL, ce cas peut survenir lorsque bien que la valeur en retour ait
t affecte, lexcution du programme ne passe pas par linstruction correspon-
dante.
Dans une fonction LIST, CONT ou LOG, ce cas peut survenir lorsque la fonction a
t programme sans affectation de la valeur en retour ou lorsque lexcution du
programme ne passe pas par linstruction correspondante.
Exemple Le nom de la fonction qui dsigne la valeur en retour peut tre absolu ou symboli-
que, par exemple :
Rsultat de lappel Aprs lappel dune fonction, les rsultats sont disponibles sous forme de
S valeur en retour ou
S paramtre de sortie et dentre/sortie (paramtre effectif).
De plus amples informations ce sujet sont donnes au chapitre 18.
16.3.1 Paramtres de la FC
Principe Contrairement aux blocs fonctionnels, les fonctions nont pas de mmoire dans
laquelle ils pourraient enregistrer les valeurs des paramtres. Les donnes locales ne
sont enregistres que temporairement durant lexcution de la fonction. Cest la rai-
son pour laquelle, lorsque vous appelez une fonction, vous devez affecter des para-
mtres effectifs tous les paramtres dentre, dentre/sortie et de sortie que vous
avez dclar dans la section de dclaration de la fonction.
La figure 16-11 montre la syntaxe de laffectation de paramtres une FC :
Affectation
de lentre
Affectation de
la sortie ou de
lentre/sortie
FC32 (Param1_E:=5,Param1_E/S:=LONGUEUR,
Param1_S:=Somme_chiffres)
Principe Laffectation de lentre consiste affecter des paramtres effectifs aux paramtres
dentre formels de la FC appele. Celle-ci peut les utiliser sans toutefois pouvoir
les modifier. Laffectation de lentre est obligatoire dans lappel dune FC, contrai-
rement ce qui est le cas pour lappel dun FB. Voici la syntaxe de laffectation de
lentre :
Expression
DESIGNATION DE
LA TEMPORISATION
IDENTIFICATEUR :=
DESIGNATION
Nom du paramtre DU COMPTEUR
dentre
DESIGNATION
(Paramtre formel) DU BLOC
Principe Laffectation de la sortie vous permet de dfinir o vont tre inscrites les valeurs de
sortie obtenues aprs lexcution dune fonction. Laffectation dune entre/sortie
vous permet daffecter une valeur effective un paramtre dentre/sortie.
IDENTIFICATEUR := Variable
tendue
Nom du paramtre
de sortie ou Paramtre effectif
dentre/sortie
(Paramtre formel)
Principe Soit la fonction ECART permettant de calculer lcart entre deux points (X1,Y1) et
(X2,Y2) dans un plan laide de leur coordonnes cartsiennes (il est suppos que
le mnmonique ECART a t dclar pour la FC37 dans la table des mnmoni-
ques) :
Prsentation Les paramtres dfinis automatiquement sont ceux que vous pouvez utiliser sans
devoir pralablement les dclarer dans un bloc. SCL en met deux votre disposi-
tion :
S le paramtre dentre EN,
S le paramtre de sortie ENO.
Tous deux sont du type de donnes BOOL et se trouvent dans la zone des donnes
temporaires du bloc.
Paramtre dentre Tout bloc fonctionnel et toute fonction possdent le paramtre dentre EN, dfini
EN automatiquement. Si EN est vrai, le bloc appel est excut, sinon il ne lest pas.
Laffectation dune valeur au paramtre EN est facultative.
Sachez que EN ne doit pas tre dclar dans la section de dclaration dun bloc ou
dune fonction.
Puisque EN est un paramtre dentre, vous ne pouvez pas le modifier dans un bloc.
Nota
Si la fonction nest pas appele car EN:=FALSE,sa valeur en retour nest pas dfi-
nie.
FUNCTION_BLOCK FB57
VAR
RESULTAT : REAL;
MA_VALID : BOOL;
END_VAR
//...
BEGIN
MA_VALID:= FALSE;
// Appel dune fonction,
// avec affectation de valeur au paramtre EN :
Paramtre de Tout bloc fonctionnel et toute fonction possdent le paramtre de sortie ENO de type
sortie ENO BOOL, dfini automatiquement. A la fin de lexcution dun bloc, la valeur actuelle
de la variable OK est inscrite dans le paramtre ENO.
Immdiatement aprs avoir appel un bloc, vous pouvez vrifier, laide de la
valeur du paramtre ENO, si toutes les oprations dans le bloc ont t excutes cor-
rectement ou si des erreurs sont survenues.
FUNCTION_BLOCK FB57
//...
//...
BEGIN
// Appel dun bloc fonctionnel :
FB30.DB30 (X1:=10, X2:=10.5);
IF ENO THEN
// tout cest correctement droul
//...
ELSE
// une erreur est survenue,
// et doit tre corrige
//...
END_IF;
//...
//...
END_FUNCTION_BLOCK
FB30.DB30(X1:=10, X2:=10.5);
Prsentation STEP 7 met votre disposition une srie de fonctions de comptage standard que
vous pouvez utiliser dans votre programme SCL sans devoir pralablement les
dclarer. Il vous suffit de leur affecter les paramtres requis. Voici les fonctions de
comptage que vous propose STEP 7 :
S compteur incrmental (Counter Up)
S compteur dcrmental (Counter Down)
S compteur incrmental et dcrmental (Counter Up Down)
Appel Vous appelez une fonction de comptage de la mme manire que vous appelez une
fonction. La dsignation dune fonction peut remplacer tout oprande dans une
expression, si le type du rsultat de la fonction est compatible avec celui de lop-
rande remplac.
Valeur de la La valeur de la fonction (valeur en retour) fournie l o elle est appele correspond
fonction la valeur de comptage actuelle (format DCB) dans le type de donnes WORD.
Vous trouverez de plus amples informations ce sujet au paragraphe 17.1.1.
Paramtres La dsignation et la description des paramtres dappel des trois fonctions de comp-
dappel tage figurent dans le tableau 17-2. Il faut gnralement distinguer les types de para-
mtres suivants :
S paramtres de commande (p. ex. mettre 1 , mettre 0 , indication du
sens de comptage)
S valeur de prslection du compteur
S sortie de ltat (indiquant la fin du comptage)
S tat du compteur sous forme binaire
Exemple Dans lexemple 17-1, une zone de mmoire globale de type COUNTER appele
Z12 est rserve lors du calcul de la fonction.
Appel dynamique Au lieu dappeler le compteur par un numro absolu (par exemple C_NO=Z10),
vous pouvez galement indiquer une variable de type de donnes COUNTER.
Lavantage rside dans le fait que vous pouvez raliser lappel de la fonction de
comptage de manire dynamique, en affectant chaque appel un numro absolu
diffrent sa variable.
Exemple :
FUNCTION_BLOCK COMPTEUR;
Var_Input
MonCompteur: Counter;
End_Var
:
currVAL:=S_CD (C_NO:=MonCompteur,........);
Rgles Puisque les valeurs des paramtres (par exemple CD:=E.0) sont enregistres globa-
lement, leur indication est dans certains cas facultative. Vous devez tenir compte des
rgles suivantes pour laffectation des paramtres :
S Lorsque vous appelez le compteur, vous devez toujours affecter une valeur son
paramtre de dsignation C_NO.
S Selon la fonction de comptage choisie, vous devez affecter une valeur au para-
mtre CU (compteur incrmental) ou au paramtre CD (compteur dcrmental).
S Lindication de la paire de paramtres PV (valeur de prslection) et S (mettre
1 ) est facultative.
S Le rsultat dans le format DCB correspond toujours la valeur de la fonction.
Nota
Les abrviations SIMATIC et CEI des noms des fonctions et des paramtres sont les
mmes, lexception de la dsignation du compteur : SIMATIC : Z et CEI : C.
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_CD(C_NO:=Z10,CD:=FALSE,
S:=FALSE,
PV:=100, R:=TRUE, CV:=bVal,
Q:=actFlag);
end_function_block
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
X X X X 0 0 0 1 0 0 1 0 0 1 1 1
1 2 7
Ces bits sont insignifiants et ne sont donc pas pris en compte lorsque le
compteur est mis 1 .
Saisie Pour charger une valeur de comptage prdfinie, vous pouvez utiliser les formats
suivants :
S dcimal sous forme de valeur entire : p. ex. 295, si cette valeur correspond un
codage DCB autoris.
S format DCB (saisie sous forme de constante hexadcimale) : p. ex. 16#127
Exploitation Pour exploiter le rsultat, vous pouvez utiliser les deux formats suivants :
S comme rsultat de la fonction (type WORD) : format DCB
S comme paramtre de sortie CV (type WORD) : binaire
Description Le compteur incrmental vous permet uniquement deffectuer des oprations din-
crmentation.
Description Le compteur incrmental et dcrmental vous permet dexcuter aussi bien des op-
rations dincrmentation que de dcrmentation. Lorsque deux impulsions sont
simultanes, les deux oprations sont traites. La valeur de comptage reste inchan-
ge.
Affectation des Le tableau 17-6 montre un exemple daffectation de paramtres la fonction S_CD.
paramtres
Paramtre Description
C_NO MonCompteur
CD Entre E0.0
S METTRE_1
PV Prslection 16#0089
R METTRE_0
Q A0.7
CV VAL_BIN
FUNCTION_BLOCK COMPTER
VAR_INPUT
MONCOMPTEUR: COUNTER;
END_VAR
VAR_OUTPUT
RESULTAT: INT;
END_VAR
VAR
METTRE_1 : BOOL;
METTRE_0 : BOOL;
VAL_DCB : WORD; //Etat du compteur, format DCB
VAL_BIN : WORD; //Etat du compteur, format binaire
PRESELECTION : WORD;
END_VAR
BEGIN
A0.0:= 1;
METTRE_1:= E0.2;
METTRE_0:= E0.3;
PRESELECTION:= 16#0089;
VAL_DCB:= S_CD
(C_NO := MONCOMPTEUR,//dcrmenter
CD := E.0,
S := METTRE_1,
PV := PRESELECTION,
R := METTRE_0,
CV := VAL_BIN,
Q := A0.7);
RESULTAT:=WORD_TO_INT(VAL_BIN);//EXPLOITATION RESULTAT
//comme paramtre de sortie
AW4:= VAL_DCB; //Vers la sortie pour affichage
END_FUNCTION_BLOCK
Prsentation Les temporisations sont des lments fonctionnels de votre programme vous permet-
tant dexcuter et de contrler des squences dclenches par horloge. STEP 7 met
votre disposition une srie de fonctions de temporisation standard que vous pouvez
utiliser dans votre programme SCL pour :
S rgler des temps dattente
S permettre des temps de surveillance
S crer des impulsions
S chronomtrer des dures
Appel Vous appelez une fonction de temporisation de la mme manire quune fonction de
comptage. La dsignation dune fonction peut remplacer tout oprande dans une
expression, si le type du rsultat de la fonction est compatible avec celui de lop-
rande remplac.
Valeur de la La valeur de la fonction (valeur en retour) fournie l o elle est appele correspond
fonction la valeur de temps de type de donnes S5TIME. Vous trouverez de plus amples
informations ce sujet au paragraphe 17.2.1.
Paramtres Les paramtres auxquels vous devez affecter une valeur sont donns sous forme de
dappel tableau dans la description de chaque fonction de temporisation. Le tableau 17-8
indique les noms des cinq fonctions de temporisation avec les types de donnes cor-
respondants.
Il faut gnralement distinguer les types de paramtres suivants :
S paramtre de commande (par exemple mettre 1 , mettre 0 ),
S valeur de prslection pour le temps initial,
S tat de la sortie, indique si la temporisation fonctionne encore,
S valeur de temps restante,
Exemple Dans lexemple 17-4, une zone de mmoire globale de type TIMER appele T10 est
rserve lors de lexcution de la temporisation.
Appel dynamique Au lieu dappeler la temporisation par un numro absolu (par exemple T10), vous
pouvez galement indiquer une variable de type de donnes TIMER. Lavantage
rside dans le fait que vous pouvez raliser lappel de la fonction de temporisation
de manire dynamique, en affectant chaque appel un numro absolu diffrent sa
variable.
Exemple :
FUNCTION_BLOCK TEMPORISATION
VAR_INPUT
MaTempo: Timer;
END_VAR
:
currTime:=S_ODT (T_NO:=MaTempo,.........)
Rgles Puisque les valeurs des paramtres sont enregistres globalement, leur indication est
dans certains cas facultative. Vous devez tenir compte des rgles suivantes pour laf-
fectation des paramtres :
S Lorsque vous appelez la temporisation, vous devez toujours affecter une valeur
abslolue ou symbolique son paramtre de dsignation T_NO.
S Lindication de la paire de paramtres TV (valeur de prslection) et S (mettre
1 ) est facultative.
S Laffectation de la sortie est facultative. Vous pouvez adresser Q et BI par une
affectation de valeur.
S Le rsultat dans le format S5TIME correspond toujours la valeur de la fonc-
tion.
Nota
Les abrviations SIMATIC et CEI des noms des fonctions sont les mmes.
VAR
currTime: S5time;
biVal: word;
actFlag: bool;
END VAR
BEGIN
currTime:= S_ODT (T_NO:=T10, S:=TRUE, TV:=T#1s,
R:=FALSE, BI:=biVal,
Q:=actFlag);
1 2 7
Saisie Pour charger une valeur de temps prdfinie, vous pouvez utiliser les reprsentations
suivantes :
S reprsentation par niveaux : TIME#aH_bbM_ccS_dddMS
S reprsentation dcimale : TIME#2.4H
Exploitation Pour exploiter le rsultat, vous pouvez utiliser lun des deux formats suivants :
S comme rsultat de la fonction (type S5TIME) : format DCB,
S comme paramtre de sortie (valeur de temps sans base de temps du type WORD) :
format binaire.
Base de temps Les bits 12 et 13 du mot de temporisation contiennent la base de temps dans le for-
mat binaire. Cest elle qui dfinit lintervalle dans lequel la valeur de temps est
diminue dune unit (voir tableau 17-9 et figure 17-2). La base de temps la plus
petite est gale 10 ms, la plus grande 10 s.
Nota
Les valeurs ntant enregistres que durant un intervalle de temps donn, celles qui
nen sont pas un multiple exact sont tronques.
Les valeurs dont la rsolution est trop grande pour la plage souhaite sont arrondies,
si bien que lobjectif est la plage voulue et non pas la rsolution dsire.
Description Le temps maximal durant lequel le signal de sortie reste 1 est gal la valeur
de temps t programme.
Si ltat de signal 0 apparat lentre pendant la dure dexcution de la tempo-
risation, la sortie est mise 0 (le temps est arrt). La dure dexcution est
donc interrompue avant la fin.
La figure 17-3 reprsente le fonctionnement de la temporisation Dmarrer une
temporisation sous forme dimpulsion :
Tableau 17-10 Fonctionnement de lopration Dmarrer une temporisation sous forme dim-
pulsion
Description Durant le temps (t) programm, le signal de sortie reste 1 , quelle que soit la
dure pendant laquelle le signal dentre reste 1 . Lorsque limpulsion de
dmarrage est nouveau initie, la dure scoule une nouvelle fois, se sorte que
limpulsion de sortie est prolonge dans la temps (redmarrage).
La figure 17-4 reprsente le fonctionnement de la temporisation Dmarrer une
temporisation sous forme dimpulsion prolonge .
Figure 17-4 Temporisation Dmarrer une temporisation sous forme dimpulsion prolonge
Tableau 17-11 Fonctionnement de lopration Dmarrer une temporisation sous forme dim-
pulsion prolonge
A 4.0 S_ODT
Signal de sortie t
(temporisation sous forme
de retard la monte)
Figure 17-5 Temporisation Dmarrer une temporisation sous forme de retard la monte
A 4.0 S_ODTS
Signal de sortie t
(temporisation sous forme de
retard la monte mmoris)
Figure 17-6 Temporisation Dmarrer une temporiastion sous forme de retard la monte
mmoris
A 4.0 S_OFFDT
Signal de sortie t
(temporisation sous forme
de retard la retombe)
Figure 17-7 Temporisation Dmarrer une temporisation sous forme de retard la retombe
FUNCTION_BLOCK HORLOGE
VAR_INPUT
MA_TEMPO: TIMER;
END_VAR
VAR_OUTPUT
RESULTAT: S5TIME;
END_VAR
VAR
METTRE_1 : BOOL;
METTRE_0 : BOOL;
VAL_DCB : S5TIME;//Valeur temps et valeur
//restante, format DCB
VAL_BIN : WORD; //valeur temps, binaire
PRESELECTION : S5TIME;
END_VAR
BEGIN
A0.0:= 1;
METTRE_1:= E0.0;
METTRE_0:= E0.1;
PRESELECTION:= T#25S;
;
VAL_DCB:= S_PEXT(T_NO:= MA_TEMPO,
S := METTRE_1,
TV := PRESELECTION,
R := METTRE_0,
BI := VAL_BIN,
Q := A0.7);
La figure 17-8 reprsente les cinq temporisations qui ont t dcrites dans ce chapi-
tre. Vous pouvez ainsi choisir celle qui correspond vos besoins.
Prsentation Lorsque vous combinez deux oprandes de types de donnes diffrents ou affectez
des expressions des variables, vous devez chaque fois vous assurer de la compa-
tibilit de leur type de donnes. Les cas suivants conduisent des rsultats errons :
S lorsque vous passez un type dune autre classe, comme par exemple du type de
donnes binaire au type de donnes numrique,
S lorsque dans une mme classe de types, le type de donnes cible est moins puis-
sant que le type de donnes source.
Cest la raison pour laquelle, dans ces deux cas, vous devez raliser une conversion
explicite du type de donnes. De plus amples informations ce sujet vous sont don-
nes au paragraphe 18.2.
En dehors de ces deux cas, le compilateur effectue une conversion automatique dans
un format commun, que par la suite nous dsignerons par conversion implicite.
Conversion Le compilateur effectue une conversion implicite des types de donnes au sein de
automatique de lune des deux classes de types de donnes auxiliaires dfinies dans le tableau 18-1,
types de donnes en respectant lordre indiqu. Le format commun de deux oprandes est toujours le
type de donnes le plus petit, dont la plage des valeurs contient les deux oprandes.
Ainsi, le format commun de BYTE et de INTEGER est INTEGER.
Sachez que lors de la conversion dun type de donnes dans la classe ANY_BIT , les
bits gauche sont mis 0.
FUNCTION_BLOCK FB10
VAR
REGULATEUR_PID_1:BYTE;
REGULATEUR_PID_2:WORD;
END_VAR
BEGIN
IF (REGULATEUR_PID_1 <> REGULATEUR_PID_2) THEN
// ...
(* * Dans linstruction conditionnelle IF / THEN
prcdente, la variable REGULATEUR_PID_1 est convertie
automatiquement en variable de type de donnes WORD *)
END_FUNCTION_BLOCK
Conversion Vous ralisez la conversion explicite de types de donnes laide des fonctions stan-
explicite dard dont la liste figure dans les tableaux 18-2 et 18-3.
Appel de fonction La description dtaille des appels de fonctions gnraux est donne au chapitre 16.
S Paramtre dentre :
Toute fonction de conversion dun type de donnes possde exactement un param-
tre dentre, appel IN. Puisquil sagit dune fonction possdant un seul paramtre,
il suffit dindiquer le paramtre effectif.
S Valeur de la fonction
Le rsultat correspond toujours la valeur de la fonction. Les tableaux 18-2 et 18-3
donnent les rgles de conversion de donnes. Le tableau 18-3 prcise en outre si le
drapeau OK est influenc par la fonction respective.
S Nom de la fonction
Puisque les types de donnes du paramtre dentre et de la valeur de la fonction
sont explicits dans le nom de la fonction, ils ne sont pas dtaills dans les tableaux
18-2 et 18-3 : dans le cas de la fonction BOOL_TO_BYTE, par exemple, le type de
donnes du paramtre dentre est BOOL, celui de la valeur de la fonction tant
BYTE.
Liste des fonctions Le tableau 18-2 donne la liste des fonctions de conversion des types de donnes de
de conversion classe A. Quoique le compilateur les initie implicitement, vous pouvez galement
(classe A) les indiquer de manire explicite. Leur rsultat est toujours dfini.
Liste des fonctions Le tableau 18-3 donne la liste des fonctions de conversion des types de donnes de
de conversion classe B. Vous devez les spcifier explicitement. Si la taille du type de donnes cible
(classe B) est insuffisante, leur rsultat peut tre indfini.
Vous pouvez vrifier vous-mme cette ventualit, en insrant une vrification de
limites ou alors la faire vrifier par le systme, en slectionnant loption Drapeau
OK avant leffectuer la compilation. Dans les cas o le rsultat est indfini, le sys-
tme affecte la valeur FALSE la variable OK.
Nota
Vous avez en outre la possibilit dutiliser des fonctions CEI pour effectuer la conver-
sion des types de donnes. Copiez cet effet la fonction souhaite de la bibliothque
de STEP 7 STDLIBS\IEC dans le rperoire de votre programme. Vous trouverez des
informations dtailles sur chacune de ces fonctions CEI dans la publication /235/.
Exemples pour la Dans lexemple 18-2, une conversion explicite savre indispensable, car le type de
conversion donnes cible est moins puissant que le type de donnes source.
explicite
FuNCTION_BLOCK FB10
VAR
COMMUTATEUR : INT;
REGULATEUR : DINT;
END_VAR
BEGIN
COMMUTATEUR := DINT_TO_INT (REGULATEUR);
(* INT est moins puissant que DINT *)
// ...
END_FUNCTION_BLOCK
Exemple 18-2 Type de donnes cible incompatible avec type de donnes source
Dans lexemple 18-3, une conversion explicite des donnes est ncessaire, car le
type de donnes REAL nest pas autoris dans une expression arithmtique compor-
tant loprateur MOD.
FUNCTION_BLOCK FB20
VAR
val_ent:INT:=17;
CONV2 := INT;
END_VAR
BEGIN
CONV2 := val_ent MOD REAL_TO_INT (2.3);
(* MOD ne peut tre applique qu des donnes de
type INT ou DINT. *)
// ...
END_FUNCTION_BLOCK
Dans lexemple 18-4, la conversion est indispensable car le type de donnes nest
pas autoris pour un oprateur logique. NOT ne peut tre applique qu des don-
nes de type BOOL, BYTE, WORD ou DWORD.
FUNCTION_BLOCK FB30
VAR
val_ent:INT:=17;
CONV1 :=WORD;
END_VAR
BEGIN
CONV1 := NOT INT_TO_WORD(val_int);
(* NOT ne peut tre applique qu des donnes
de type INT. *)
// ...
END_FUNCTION_BLOCK
FUNCTION_BLOCK FB40
VAR
rayon_oui: WORD;
rayon : INT;
END_VAR
BEGIN
rayon_oui := EB0;
rayon := WORD_TO_INT(rayon_oui);
(* Conversion lors du passage une autre classe de types.
La valeur vient de lentre et doit tre converti pour
pouvoir tre exploite.*)
Fonctionnalit Toute fonction numrique standard possde un paramtre dentre. Son rsultat cor-
respond toujours la valeur de la fonction. Chacun des tableaux 18-5, 18-6 ou 18-7
spcifie un groupe de fonctions numriques standard, en indiquant leur nom et type
de donnes. Le type de donnes ANY_NUM correspond INT, DINT ou REAL.
Liste des fonctions Les fonctions gnrales permettent de calculer la valeur abslolue, le carr ou la
gnrales racine carre dune grandeur.
1 Sachez que les paramtres dentre de type ANYNUM sont convertis de manire interne en variables de
type Real.
Liste des fonctions Les fonctions logarithmiques permettent de calculer la valeur dune puissance ou le
logarithmiques logarithme dune grandeur.
1 Sachez que les paramtres dentre de type ANYNUM sont convertis de manire interne en variables de
type Real.
Nota
Vous avez en outre la possibilit dutiliser des fonctions CEI comme fonctions numri-
ques standard. Copiez cet effet la fonction souhaite de la bibliothque de STEP 7
STDLIBS\IEC dans le rperoire de votre programme. Vous trouverez des informa-
tions dtailles sur chacune de ces fonctions CEI dans la publication /235/.
Liste des fonctions Les fonctions trigonomtriques indiques dans le tableau 18-7 calculent des angles
trigonomtriques en radians.
1 Sachez que les paramtres dentre de type ANYNUM sont convertis de manire interne en variables de
type Real.
Exemples Le tableau 18-8 reprsente des appels de fonctions numriques standard et indique
le rsultat correspondant :
Appel Rsultat
RESULTAT := ABS (-5); 5
RESULTAT := SQRT (81.0); 9
RESULTAT := SQR (23); 529
RESULTAT := EXP (4.1); 60.340 ...
RESULTAT := EXPD (3); 1_000
RESULTAT := LN (2.718_281); 1
RESULTAT := LOG (245); 2.389_166 ...
PI := 3. 141 592; 0.5
RESULTAT := SIN (PI / 6);
RESULTAT := ACOS (0.5); 1.047_197
(=PI / 3)
Fonctionnalit Toute fonction standard sur les chanes binaires possde deux paramtres dentre
dsigns par IN ou N. Leur rsultat correspond toujours la valeur de la fonction.
Le tableau 18-9 indique leur nom ainsi que les types de donnes des deux param-
tres dentre et de la valeur de la fonction. La signification des paramtres dentre
est la suivante :
S paramtre dentre IN : mmoire dans laquelle sont ralises les oprations de
dcalage de bits,
S paramtre dentre N : nombre de rotations pour les fonctions de rotation ROL et
ROR ou nombre de chiffres dcaler pour les fonctions SHL et SHR.
Liste des fonctions Le tableau 18-9 indique les fonctions standard sur chanes binaires.
Nota
Vous avez en outre la possibilit dutiliser des fonctions CEI pour effectuer des opra-
tions sur les chanes binaires. Copiez cet effet la fonction souhaite de la bibliothque
de STEP 7 STDLIBS\IEC dans le rperoire de votre programme. Vous trouverez des
informations dtailles sur chacune de ces fonctions CEI dans la publication /235/.
Exemples Le tableau 18-10 reprsente des appels de fonctions standard sur les chanes binaires
et indique le rsultat correspondant :
Appel Rsultat
RESULTAT := ROL 2#0111_1010
(IN:=2#1101_0011, N:=5); (= 122 dcimal)
// IN := 211 dcimal
RESULTAT := ROR 2#1111_0100
(IN:=2#1101_0011, N:=2); (= 244 dcimal)
// IN := 211 dcimal
RESULTAT := SHL 2#1001_1000
(IN:=2#1101_0011, N:=3); (= 152 dcimal)
// IN := 211 dcimal
RESULTAT := SHR 2#0011_0100
(IN:=2#1101_0011, N:=2); (= 52 dcimal)
// IN := 211 dcimal
Prsentation Un bloc peut tre appel de manire symbolique ou absolue. Vous devez cet effet
indiquer soit le mnmonique du bloc, que vous avez dclar dans la table des mn-
moniques, soit son numro de dsignation absolue.
A lappel du bloc, vous devez affecter les paramtres effectifs, dont les valeurs
vont tre utilises par le bloc durant lexcution du programme, aux paramtres
formels, dont vous avez dfini le nom et le type de donnes lorsque vous avez cr
le bloc paramtrable.
Toutes les informations relatives ce sujet sont fournies dans le manuel /235/ . Ce-
lui-ci prsente non seulement les principales fonctions disponibles dans S7, mais
dcrit galement, dans une partie de rfrence, les interfaces qui permettent de les
utiliser dans votre programme utilisateur.
Exemple SFC 31 Les instructions suivantes permettent dappeler la fonction systme SFC 31 (interro-
gation de lalarme horaire) :
FUNCTION_BLOCK FY20
VAR
Resultat: INT;
END_VAR
BEGIN
// ...
Resultat:= SFC31 (NO_OB:= 10,ETAT:= MW100 );
// ...
// ...
END_FUNCTION_BLOCK
Rsultats
La valeur de la fonction est du type entier. Si elle est > = 0, le bloc a t excut
sans erreur, si elle est < 0, une erreur sest produite. Aprs avoir appel le bloc,
vous avez la possibilit dexploiter le paramtre de sortie ENO dfini automatique-
ment.
Appel conditionnel Si vous voulez raliser un appel conditionnel, vous devez affecter la valeur 0 au
paramtre dentre EN (par exemple lentre E0.3), afin que le bloc ne soit pas
appel. Si vous affectez la valeur 1 au paramtre EN, la fonction est appele. Si
aucune erreur ne se produit durant lexcution du bloc, le paramtre de sortie ENO
prend alors galement la valeur 1 (sinon il est mis 0 ).
Nota
Dans un bloc fonctionnel ou bloc fonctionnel systme, linformation qui, sil sagis-
sait dune fonction, serait transmise par la valeur en retour, doit ici tre enregistre
dans un paramtre de sortie. Celui-ci est ensuite exploit grce au bloc de donnes
dinstance. De plus amples informations ce sujet sont donnes au chapitre 16.
OB disponibles Les CPU ne sont pas toutes en mesure de traiter lensemble des OB disponibles dans
S7. Vrifiez dans les caractristiques techniques de votre CPU, quels sont les OB
votre diposition.
Informations Laide en ligne ainsi que les manuels suivants constituent une aide supplmentaire :
supplmentaires
S /70/ Manuel: Automate programmable S7-300, Installation et configuration -
Caractristiques des CPU
Ce manuel contient les fiches techniques dcrivant les caractristiques des
diverses CPU S7-300, ainsi que les vnements de dclenchement des OB.
S /100/ Manuel de mise en uvre: Systmes dautomatisation S7-400, M7-400,
Installation et configuration
Ce manuel contient les fiches techniques dcrivant les caractristiques des
diverses CPU S7-400, ainsi que les vnements de dclenchement des OB.
Rgles lexicales B
Rgles syntaxiques C
Bibliographie D
SCL pour SIMATIC S7-300/400, Programmation de blocs
S-6 C79000-G7077-C522-01
Description formelle du langage A
Description du Les diagrammes syntaxiques servent de base la description du langage faite dans
langage SCL les diffrents chapitres. Ils permettent dillustrer la structure syntaxique (cest--dire
grammaticale) dans SCL. Ces diagrammes sont regroups au complet, avec les l-
ments de langage correspondants, dans les annexes B et C.
A.1 Prsentation
Nom de la rgle
Squence
Pav 3
Option Pav 5
Itration
Alternative
Figure A-1 Exemple de diagramme syntaxique
Types de pavs Un pav peut tre un lment de base ou alors tre lui-mme compos dautres l-
ments de base. La figure suivante illustre les types de symboles reprsentant les
pavs :
Rgles Les rgles que vous appliquez pour structurer votre programme SCL peuvent tre
rparties dans deux groupes, les rgles lexicales et les rgles syntaxiques.
Rgles lexicales Elles dcrivent la structure des lments (symboles) soumis lanalyse lexicale par
le compilateur. Le format utilis dans leur notation nest pas libre, ce qui signifie
que vous devez respecter scrupuleusement les rgles nonces, en particulier :
S linsertion de caractres de mise en forme nest pas autorise,
S linsertion de blocs ou de lignes de commentaires nest pas possible,
S linsertion dattributs didentificateurs est impossible.
IDENTIFICATEUR
Lettre
_ Lettre _ Lettre
Caractre de Caractre de
soulignement soulignement
Chiffre Chiffre
Rgles Les rgles syntaxiques dcrivent la structure de SCL, en se fondant sur les rgles
syntaxiques lexicales. Vous pouvez crer votre programme SCL dans un format libre, dans le
respect des rgles nonces :
Programme SCL
Conventions Chaque rgle est prcde de son nom. Si elle est utilise dans une rgle de niveau
hirarchique suprieur, son nom y figure sous forme de pav nom terminal.
Si le nom de la rgle est inscrit en majuscules, il sagit dun symbole qui est dcrit
dans les rgles lexicales.
Dfinition Un pav terminal est un lment de base dont la description ne ncessite pas lusage
dune rgle supplmentaire. Il est reprsent par les schmas suivants dans les dia-
grammes syntaxiques :
Prsentation Les tableaux suivants dcrivent les pavs terminaux en indiquant lensemble des
lments du jeu de caractres ASCII correspondant :
Lettres et chiffres Il sagit des caractres les plus utiliss. LIDENTIFICATEUR (voir figure A-3) est
par exemple compos de lettres, de chiffres et du caractre de soulignement.
Dans les rgles Le tableau A-3 montre lutilisation de caractres individuels du jeu de caractres
lexicales ASCII comme caractres de mise en forme et comme sparateurs dans les rgles
lexicales (voir annexe B).
Tableau A-3 Caractres de mise en forme et sparateurs dans les rgles lexicales
Caractre Description
: Sparateur entre heures, minutes et secondes. Attributs
. Sparateur dans ladressage absolu, reprsentation de nombres rels et
dintervalles de temps
Caractre et chane de caractres
Caractre dintroduction de mnmoniques, daprs les rgles de lditeur de
mnmoniques
_ caractre de Sparateur de valeurs numriques dans les constantes littrales, peut tre
soulignement utilis dans les IDENTIFICATEURS
$ Caractre dalignement pour introduire un caractre de commande ou un
caractre de substitution
$> $< Interruption de la chane si sa longueur dpasse une ligne ou pour introduire
des commentaires
Tableau A-4 Abrviations pour les constantes, classes par ordre alphabtique
Dans les rgles Le tableau suivant montre lutilisation de caractres individuels comme caractres
syntaxiques de mise en forme et comme sparateurs dans les rgles syntaxiques, de mme que
dans les commentaires et les attributs (voir annexes B.2 et B.3).
Tableau A-5 Caractres de mise en forme et sparateurs dans les rgles syntaxiques
Oprateurs Le tableau A-6 reprsente tous les oprateurs de SCL, les mots-cls comme par
exemple AND, ainsi que les autres oprateurs utiliss comme caractre individuels.
Il sapplique la fois aux abrviations SIMATIC et CEI
Mots-cls et Le tableau A-7 contient la liste alphabtique des mots-cls et des identificateurs
identificateurs prdfinis dans SCL. Il en donne galement une description et cite la rgle syntaxi-
prdfinis que correspondante, nonce en annexe C, dans laquelle ils figurent sous forme de
pavs terminaux. Les mots-cls restent les mmes quelles que soient les abrviations
choisies.
Tableau A-7 Liste alphabtique des mots-cls et des identificateurs prdfinis dans SCL
Tableau A-7 Liste alphabtique des mots-cls et des identificateurs prdfinis dans SCL (suite)
Tableau A-7 Liste alphabtique des mots-cls et des identificateurs prdfinis dans SCL (suite)
Donnes systme Le tableau A-8 donne la liste des abrviations ainsi que la description des abrvia-
globales tions SIMATIC correspondant aux identificateurs doprandes SCL :
S indication de lidentificateur doprande :
prfixe de mmoire (A, E, M, PA, PE) ou bloc de donnes (D)
S indication de la taille de llment de donnes :
prfixe de taille (facultatif ou B, D, W, X)
Labrviation rsulte de la combinaison entre lidentificateur doprande (prfixe de
mmoire ou D pour bloc de donnes) et le prfixe de taille qui correspondent tous
deux des rgles lexicales. Les abrviations CEI figurent en regard des abrviations
SIMATIC.
Mots-cls de blocs Ils sont utiliss pour ladressage absolu de blocs. Le tableau est class daprs les
abrviations SIMATIC et indique les abrviations CEI correspondantes.
Dfinition Un pav non terminal est un lment complexe qui est dcrit par une autre rgle. Il
est reprsent par un rectangle. Le nom qui y figure correspond la rgle suivante,
etc.
Cet lment figure dans les rgles lexicales et dans les rgles syntaxiques.
Dfinition Un symbole est un lment complexe utilis comme lment de base dans les rgles
syntaxiques et dcrit dans les rgles lexicales. Il est reprsent par un rectangle. Le
NOM en lettre majuscules correspond au nom de la rgle lexicale suivante (sans
rectangle).
Symbole
<Nom de la rgle>
Prsentation Les symboles dfinis reprsentent les identificateurs qui dcoulent des rgles lexica-
les. Ils dcrivent :
S les identificateurs
S lattribution de noms dans SCL
S les constantes et drapeaux prdfinis
A.9 Identificateurs
Identificateurs Les identificateurs vous permettent dadresser les lments de langage de SCL. Le
dans SCL tableau A-10 dcrit les divers types didentificateurs :
Tableau A-11 Distinction entre les majuscules et les minuscules pour les types didentificateurs
Les noms des fonctions standard, comme par exemple BYTE_TO_WORD et ABS
peuvent donc galement tre crits en minuscules. Il en est de mme pour les para-
mtres des fonctions de temporisation ou de comptage, comme par exemple SV, se
ou ZV.
IDENTIFICATEUR
Lettre
_ Lettre _ Lettre
Caractre de Caractre de
soulignement soulignement
Chiffre Chiffre
MNEMONIQUE
Caractre
imprimable
Restrictions Lorsque vous attribuez un nom, vous devez tenir compte des restrictions suivantes :
Dans leur domaine de validit, les noms doivent tre univoques, ce qui signifie que
vous ne ntes pas autoriss attribuer une nouvelle fois un nom qui la dj t
dans le mme bloc. En outre, vous ne pouvez pas attribuer les noms suivants, dj
utiliss dans le systme :
S Noms de mots-cls : p. ex. CONST, END_CONST, BEGIN
S Noms doprateurs : p. ex. AND, XOR
S Noms didentificateurs prdfinis : p. ex. les noms pour les types de donnes
comme BOOL, STRING, INT
S Noms des constantes prdfinies TRUE et FALSE
S Noms des fonctions standard : p. ex. ABS, ACOS, ASIN, COS, LN
S Noms didentificateurs doprandes ou doprandes absolus pour des donnes
systme globales: p. ex. EB, EW, ED, AB, AW, AD MB, MD
Utilisation de la Le tableau A-12 prcise dans quels cas vous pouvez attribuer des noms en utilisant
rgle la rgle des IDENTIFICATEURS.
IDENTIFICATEURS
Tableau A-12 Utilisation de la rgle IDENTIFICATEURS
DESIGNATION DE BLOC
Motcl
Numro
de bloc
IDENTIFICATEUR
Mnmonique
Constantes et Les deux tableaux sont les mmes pour les abrviations SIMATIC et CEI.
drapeaux
prdfinis
Tableau A-13 Constantes prdfinies
Abrviation Description
FALSE Constante boolenne (standard) prdfinie, de valeur 0. En logique
boolenne, elle signifie quune condition nest pas remplie.
TRUE Constante boolenne (standard) prdfinie, de valeur 1. En logique
boolenne, elle signifie quune condition est remplie.
Abrviation Description
EN Drapeau de validation dun bloc
ENO Drapeau derreur dun bloc
OK Le drapeau affiche FALSE lorsquune instruction na pas t traite correc-
tement.
Rgles lexicales Les rgles lexicales dcrivent la structure des lments (symboles) sur lesquels porte
lanalyse lexicale ralise par le compilateur. Le format de la notation nest pas
libre, ce qui signifie que les rgles doivent tre appliques scrupuleusement et en
particulier que :
S linsertion de caractres de mise en forme nest pas autorise.
S linsertion de blocs et de lignes de commentaires nest pas possible.
S linsertion dattributs pour les identificateurs nest pas possible.
B.1 Identificateurs
IDENTIFICATEUR
Lettre
_ Lettre _ Lettre
Caractre de Caractre de
soulignement soulignement
Chiffre Chiffre
DESIGNATION DE
BLOC Cette rgle sapplique galement au nom de rgles suivants :
DESIGNATION DU DB
DESIGNATION DU FB
DESIGNATION DE LA FC
DESIGNATION DE LOB DESIGNATION DE LUDT
Mot-cl Numro
du bloc
DB, FB, FC, OB, UDT
IDENTIFICATEUR
Mnmonique
DESIGNATION DE
TEMPORISATION T Numro
Abrviation SIMATIC
et CEI
IDENTIFICATEUR
Mnmonique
DESIGNATION DE
COMPTEUR Z Numro
Abrviation SIMATIC
Labrviation CEI est C
IDENTIFICATEUR
Mnmonique
Mot-cl de bloc
OB Bloc dorganisation
FC Fonction
Bloc fonctionnel
FB
DB Bloc de donnes
Mnmonique
Caractre
imprimable
Numro
Chiffre
CONSTANTE +
LITTERALE ENTIERE SUITE DE CHIFFRES
DECIMAUX
1
Suite de chiffres binaires
SUITE DE CHIFFRES
Chiffre dcimal
DECIMAUX
_
Chiffre dcimal : 09
Caractre de soulignement
SUITE DE CHIFFRES
2# Chiffre binaire
BINAIRES
_
Chiffre binaire : 0 ou 1 Caractre de soulignement
SUITE DE CHIFFRES
8# Chiffre octal
OCTAUX
_
Chiffre octal : 08 Caractre de soulignement
SUITE DE CHIFFRES
16# Chiffre hexadcimal
HEXADECIMAUX
_
Chiffre hexadcimal : 09
A-F Caractre de soulignement
Exposant
E +
SUITE DE CHIFFRES
DECIMAUX
e
Constante littrale de
type caractre
Caractre
Constante littrale de
type chane de carac-
tres
Interruption
Caractre Caractre
de chane
Caractre
Caractre
imprimable
Caractre dalignement $
$
Caractre de substitution
$ ou
Caractre de commande
P, L, R ou T
Chiffre Chiffre
hexadcimal hexadcimal
Interruption de chane
Caractre despacement (blank)
de changement de ligne (linefeed)
de retour chariot (carriage return)
de saut de page (formfeed, page) ou
de tabulation horizontale (tabulator)
Caractre de
mise en forme
$> $<
Commentaire
DATE
DATE#
Indication de la date
D#
DUREE
TIME# Reprsentation
dcimale
T# Reprsentation Reprsentation
par niveaux dcimale
chaque unit de temps (p. ex. heures, minutes) ne doit tre indique quune seule fois
lordre jours, heures, minutes, secondes, millisecondes doit tre respect
HEURE DE JOUR
TIME_OF_DAY#
TOD#
DATE ET HEURE
DATE_AND_TIME#
DT#
Indication de la date
SUITE DE CHIFFRES SUITE DE CHIFFRES SUITE DE CHIFFRES
DECIMAUX DECIMAUX DECIMAUX
Anne Mois Jour
Indication de lheure
SUITE DE CHIFFRES SUITE DE CHIFFRES
du jour DECIMAUX : DECIMAUX :
Reprsentation
dcimale
SUITE DE CHIFFRES . SUITE DE CHIFFRES Jours
DECIMAUX DECIMAUX D
Reprsentation par
niveaux
SUITE DE CHIFFRES SUITE DE CHIFFRES _
D _ H
DECIMAUX DECIMAUX
Jours Heures
Minutes Secondes
SUITE DE CHIFFRES _
DECIMAUX MS
Millisecondes
IDENTIFICATEUR
Adressage symbolique
MNEMONIQUE
Index
ADRESSAGE DE
MEMOIRE INDEXE
IDENTIFICATEUR
DOPERANDE POUR
Prfixe Prfixe
MEMOIRE de mmoire de taille
ADRESSAGE
ABSOLU DE DB
Identificateur doprande DB Adresse
Adressage absolu
Index
ADRESSAGE
INDEXE DE DB
Identificateur [ Expression , Expression ]
doprande DB de base de base
ADRESSAGE
STRUCTURE DE DB
Dsignation du DB . Variable
simple
Prfixe de mmoire E
I
Entre
Q
A Sortie
M M Mmento
Abrviations Abrviations
SIMATIC CEI
B Octet
W Mot
D Double mot
Adresse pour la
mmoire et le DB
Numro . Numro
Adressage de
linstance locale
IDENTIFICATEUR . Variable
simple
Nom de linstance locale
B.2 Commentaires
Important Voici les restrictions dont vous devez tenir compte lorsque vous insrer des com-
mentaires :
S limbrication de commentaires nest pas autorise
S linsertion de commentaires est possible un endroit quelconque de la rgle syn-
taxique, mais ne lest pas dans une rgle lexicale.
COMMENTAIRE
Ligne de commentaire
Bloc de commentaire
LIGNE DE COMMEN-
caractre
TAIRE // CR
imprimable
BLOC DE COMMEN-
TAIRE (* Caractre *)
TITRE
Caractre
TITLE =
imprimable
VERSION
SUITE DE CHIFFRES SUITE DE CHIFFRES
VERSION : .
DECIMAUX DECIMAUX
0-15 0-15
PROTECTION DE
BLOC KNOW_HOW_PROTECT
Attributs systme de
blocs 24 caractres au maximum
caractre }
{ IDENTIFICATEUR :=
imprimable
Conventions Chacune des rgles est prcde de son nom. Si elle est applique dans une rgle de
niveau hirarchique suprieur, son nom figure dans un rectangle.
Si le nom de la rgle est crit en majuscules, vous devez vous reporter aux rgles
lexicales.
Les informations figurant dans un rectangle aux bouts arrondis ou dans un cercle
sont dcrites en annexe A.
Bloc fonctionnel
Bloc de donnes
Bloc dorganisation
DESIGNATION Section de dclaration de lOB
ORGANIZATION_BLOCK DE LOB
Fonction VOID
Bloc fonctionnel
DESIGNATION Section de
FUNCTION_BLOCK DU FB dclaration
du FB
Bloc de donnes
DESIGNATION
DATA_BLOCK Section de dclaration du DB
DU DB
Type de donnes
utilisateur Spcification du
DESIGNATION type de donnes
TYPE DE LUDT END_TYPE
STRUCT
Section des
variables temporaires
Section des
variables temporaires
Section des
variables temporaires
Section des
variables statiques
Structure de la
spcification du
type de donnes
Section daffectation
du DB
Variable simple := Constante ;
Section des
constantes
CONST IDENTIFICATEUR := Expression ; END_CONST
simple
Nom de la constante
VAR END_VAR
Dclaration
de linstance
Dclaration de
variables Spcification du Initialisation du
IDENTIFICATEUR 1) : type de donnes ;
type de donnes
Nom de la variable,
du paramtre
ou de la composante
Nom de la composante dans la structure
,
Pas linitialisation
24 caractres au maximum
:= caractre
{ IDENTIFICATEUR }
imprimable
:= Liste dinitialisation
du tableau
Constante
SUITE DE CHIFFRES DECIMAUX ( )
Facteur de rptition Liste dinitialisation
du tableau
IDENTIFICATEUR : ;
Nom de linstance locale DESIGNATION
DU SFB
,
Section des
paramtres VAR_INPUT
VAR_OUTPUT Dclaration
de la variable END_VAR
VAR_IN_OUT
Linitialisation nest possible que pour VAR_INPUT et VAR_OUTPUT !
DATE_AND_TIME
Spcification du
type de donnes
chane de caractres
Spcification du
type de donnes
ARRAY
Spcification du
type de donnes
STRUCT
DESIGNATION
DE LUDT
Spcification du
type de donnes
paramtre
Type de donnes
Type de donnes
simple binaire
Type de donnes
caractre
Type de donnes
numrique
Type de donnes
temporel
WORD Mot
Type de donnes
CHAR
caractre
Spcification du type
de donnes chane de Expression
STRING [ ]
caractres simple
Type de donnes
INT Entier
numrique
Entier, double prcision
DINT
Tableau C-4 Syntaxe des types de donnes dans la section de dclaration (suite)
TIME_OF_DAY
Heure du jour
TOD
DATE Date
DATE_ET_TIME DATE_AND_TIME#
Indication de la date Indication de lheure du jour
DT#
,
5 itrations max. = 6 dimensions !
Spcification du
OF type de donnes
Spcification de type
STRUCT Dclaration END_STRUCT
de donnes STRUCT des composantes
Noubliez pas de
terminer le mot-cl
END_STRUCT avec un
point-virgule !
Tableau C-4 Syntaxe des types de donnes dans la section de dclaration (suite)
Nom de la composante
POINTER Adresse
Instruction
Affectation de valeur
Traitement dun
sousprogramme
Instruction de contrle
Variable absolue
dans les zones mmoire de la CPU
Variable dans un DB
Variable absolue
dans les zones mmoire de la CPU
Variable dans un DB
Appel de FC
Nom de la variable
ou du paramtre
Variable
structure
Tableau
simple
Variable structure
IDENTIFICATEUR Identificateur au dbut
Nom de la variable ou
du paramtre
Tableau
simple
Nom de la composante
suit la virgule
.
Expression Oprande
Oprateur
Expression logique de base Expression
Oprateur
de comparaison
Oprateur
arithmtique
de base
Puissance
Expression ** Expression
de puissance
+ Expression
Plus anaire
Moins anaire
NOT Ngation
( Expression )
Expression simple
+
Expression Multiplication
simple simple
Multiplication simple
*
Multiplication
simple
/
DIV
MOD
Constante
( Expression )
simple
Oprande Constante
Variable tendue
( Expression)
NOT Oprande
Variable absolue
pour les zones de mmoire de la CPU
Variable dans un DB
Appel de FC
Constante
Constante
Valeur numrique
Chane de caractres
Nom de constante
Oprateur logique de
base
AND & XOR OR
Oprateur arithm-
tique de base
* / MOD DIV +
Oprateur de compa-
raison
< > <= >= = <>
DESIGNATION
DU FB
Nom de linstance globale
IDENTIFICATEUR
Appel de fonction
DESIGNATION
DE LA FC
DESIGNATION Paramtres
( )
DE LA SFC de la FC
IDENTIFICATEUR
FC : fonction
Nom de la fonction standard SFC : fonction systme
ou mnmonique
fonction standard ralise dans le compilateur
Paramtres du FB Affectation
de lentre
Affectation de
lentre/sortie
Paramtres de la FC Expression
Affectation
de lentre
Affectation de
lentre/sortie
Affectation de lentre
Paramtre effectif
Expression
DESIGNATION DE
TEMPORISATION
IDENTIFICATEUR :=
DESIGNATION
Nom du paramtre dentre DE COMPTEUR
Affectation de lentre/
sortie IDENTIFICATEUR := Variable
tendue
Nom du paramtre
Paramtre effectif
dentre/sortie
Paramtre formel
Instruction IF
Section
IF Expression THEN dinstructions
Condition
Section
ELSIF Expression THEN dinstructions
Condition
Instruction Case
CASE Expression OF
Valeur
Valeur .. Valeur
Valeur
IDENTIFICATEUR
Nom de la constante
Instruction
WHILE
Instruction
REPEAT
Instruction
CONTINUE
Instruction
EXIT
Instruction
RETURN
Instruction
GOTO
Expression Section
BY DO
de base dinstructions
pour lincrment
Noubliez pas de terminer le
mot-cl END_FOR avec un
point-virgule !
END_FOR
Affectation initiale
Variable := Expression
simple de base
Type de donnes pour la valeur initiale
INT/DINT
Instruction WHILE
Section END_WHILE
WHILE Expression DO dinstructions
Noubliez pas de
terminer le mot-cl
END_WHILE avec un
point-virgule !
Instruction REPEAT
Section END_REPEAT
Noubliez pas de REPEAT dinstructions UNTIL Expression
terminer le mot-cl
END_REPEAT avec un
point-virgule !
Instruction
CONTINUE CONTINUE
Instruction RETURN
RETURN
Instruction EXIT
EXIT
Saut dans le
programme GOTO IDENTIFICATEUR
Repre de saut
/800/ DOCPRO,
Documentation normalise dun projet (uniquement sur CD-ROM )
/801/ Tlservice pour automates programmables de type S7,C7 et M7,
(uniquement sur CD-ROM)
/802/ Simulateur PLC de STEP 7,
(uniquement sur CD-ROM)
/803/ Manuel de rfrence : Logiciel systme pour S7-300/400,
STEP 7 Fonctions standard, 2me partie (uniquement sur CD-ROM)
Activer les points Cette fonction permet de mettre lunit centrale (CPU) en attente des endroits
darrt dfinis du programme. Lorsquun point darrt est atteint, vous pouvez raliser les
fonctions de test, comme par exemple le traitement incrmental dinstructions ou la
visualisation de ltat des variables.
Adressage absolu Ladressage absolu consiste indiquer ladresse de loprande traiter. Exemple :
ladresse A 4.0 dsigne le bit 0 dans loctet 4 de la mmoire image des sorties.
Aide en ligne STEP 7 vous offre la possibilit dafficher lcran des textes daide contextuels
pendant votre travail avec le logiciel de programmation.
Appel de bloc Lexcution des blocs est dmarre de la manire suivante dans le programme utili-
sateur STEP 7 : les blocs dorganisation sont par principe toujours appels par le
systme, tous les autres le sont par le programme utilisateur STEP 7.
Attente Ltat dattente peut tre obtenu partir de ltat de marche sur sollicitation depuis
la console de programmation. Cet tat de fonctionnement permet de raliser des
fonctions de test particulires.
Attribut Un attribut est une proprit qui caractrise par exemple une dsignation de bloc ou
un nom de variable. Dans SCL, il existe des attributs pour les indications suivantes :
titre du bloc, version, protection du bloc, auteur, nom du bloc, famille de bloc.
Bloc Les blocs constituent des parties dlimites dun programme utilisateur par leur
fonction, leur structure et leur objet. Dans STEP 7, il existe des blocs de code (FB,
FC, OB, SFC, SFB), des blocs de donnes (DB, SDB) et des types de donnes utili-
sateur (UDT).
Bloc de code Dans SIMATIC S7, un bloc de code est un bloc contenant une partie du programme
utilisateur STEP 7, contrairement aux blocs de donnes qui ne contiennent que des
donnes. Il existe, comme blocs de code, les blocs dorganisation (OB, les blocs
fonctionnels (FB), les fonctions (FC), les blocs fonctionnels systme (SFB) et les
fonctions systme (SFC).
Bloc de donnes Les blocs de donnes (DB) sont des zones de mmoire dans le programme utilisa-
(DB) teur qui contiennent des donnes utilisateur. Il existe des blocs de donnes globales
auxquels tous les blocs de code peuvent accder et des blocs de donnes dinstance
associs un appel de FB prcis.
Bloc de donnes Un bloc de donnes dinstance sauvegarde les paramtres formels et les donnes
dinstance locales statiques de blocs fonctionnels. Un DB dinstance est associ un appel de
(DB dinstance) bloc fonctionnel ou une hirarchie dappel de blocs fonctionnels. Il est gnr
automatiquement dans SCL.
Bloc de donnes Les blocs de donnes systme (SDB) sont des zones de donnes dans lunit centrale
systme (SDB) qui contiennent des paramtres systme et des paramtres de module. Vous pouvez
les crer et les modifier avec le logiciel de base STEP 7.
Bloc fonctionnel Selon la norme CEI 1131-3, un bloc fonctionnel (FB) est un bloc de code avec don-
nes statiques. Un bloc fonctionnel permet la transmission de paramtres dans le
programme utilisateur. Aussi, les blocs fonctionnels se prtent-ils la programma-
tion de fonctions complexes se rptant souvent, comme par exemple les rgulations
et le choix du mode de fonctionnement. Puisquun FB possde une mmoire (bloc
de donnes dinstance), ses paramtres (par exemple sorties) sont accessibles tout
instant tout bloc du programme utilisateur.
Bloc fonctionnel Un bloc fonctionnel systme (SFB) est un bloc fonctionnel intgr au systme dex-
systme (SFB) ploitation de la CPU quil est possible dappeler dans le programme utilisateur
STEP 7.
Charger dans la Des objets chargeables (par exemple des blocs de code) sont chargs depuis la
PG mmoire de chargement dun module programmable dans la console de programma-
tion. Ceci peut tre ralis via une console de programmation directement connecte
ou, par exemple, via PROFIBUS.
Charger dans le Des objets chargeables (par exemple des blocs de code) sont chargs depuis la
systme cible console de programmation dans la mmoire de chargement dun module program-
mable. Ceci peut tre ralis via une console de programmation directement connec-
te ou, par exemple, via PROFIBUS.
Classe de bloc En fonction de leur contenu, les blocs sont subdiviss en deux classes, les blocs de
code et les blocs de donnes.
Classeur Classeur quil est possible douvrir dans linterface utilisateur de SIMATIC Manager
et qui peut contenir dautres classeurs et objets.
Commentaire de Les commentaires de bloc sont des informations supplmentaires sur un bloc (par
bloc exemple des explications sur le processus dautomatisation) qui ne sont pas charges
dans la mmoire de travail des automates programmables SIMATIC S7.
Compilateur de Le compilateur de SCL est un compilateur squentiel qui permet de traduire le pro-
SCL gramme pralablement dit (source SCL) en code machine MC7. Les blocs ainsi
crs sont enregistrs dans le programme S7 qui se trouve dans le classeur des blocs.
Compilation Dans le mode de saisie source, dventuelles erreurs de saisie ne sont recherches
source que durant la compilation. Le code excutable nest obtenu quen absence totale
derreurs.
Compteur Les compteurs font partie constituante de la mmoire systme de la CPU. Leur
contenu est actualis de faon asynchrone au programme utilisateur par le systme.
Les instructions en STEP 7 permettent de dfinir la fonction exacte de la cellule de
comptage (par exemple incrmentation) et den lancer lexcution.
Constante Les constantes aux noms symboliques servent rserver la place pour les valeurs
(symbolique) constantes dans les blocs de code. Elles permettent damliorer la lisibilit dun pro-
gramme.
Constante Ce sont des constantes dont la valeur et le type sont dtermins par la syntaxe. On
(littrale) distingue des constantes littrales de type numrique, caractre ou de temporisation.
Conversion La conversion explicite consiste insrer une fonction de conversion dans le pro-
explicite gramme source. Lorsque lutilisateur effectue la combinaison de deux oprandes de
types de donnes diffrents, il doit raliser une conversion explicite : lors du passage
une autre classe de types de donnes, comme par exemple dun type de donnes
binaire un type de donnes numrique et lorsque le type de donnes cible est
moins puissant que le type de donnes source mme au sein de la mme classe.
DCB DCB signifie Dcimal Cod binaire . Lindication interne la CPU des tempori-
sations et des compteurs est uniquement ralise dans le format DCB.
Dbogueur de SCL Le dbogueur de SCL est un dbogueur de langage volu permettant de trouver des
erreurs de programmation logiques dans le programme utilisateur cr avec SCL.
Dclaration des La dclaration dune variable consiste indiquer son mnmonique, son type de don-
variables nes et ventuellement une valeur de prslection, une adresse et un commentaire.
Dclaration du Dans la dclaration du type de donnes, lutilisateur peut dclarer des types de don-
type de donnes nes utilisateur.
Donnes globales Les donnes globales sont des donnes accessibles chaque bloc de code (FB, FC,
OB), savoir des mmentos (M), des entres (E), des sorties (A), des temporisa-
tions, des compteurs et des lments de blocs de donnes. Il est possible dy accder
par adressage absolu ou symbolique.
Donnes locales Les donnes locales sont les donnes associes un bloc de code qui sont dclares
dans la section de dclaration ou dans la dclaration des variables de ce bloc. Elles
comprennent selon le bloc les paramtres formels, les donnes statiques, les don-
nes temporaires.
Donnes statiques Les donnes statiques sont des donnes locales dun bloc fonctionnel, sauvegardes
dans le bloc de donnes dinstance et donc conserves jusquau traitement suivant
du bloc fonctionnel.
Donnes Les donnes temporaires sont des donnes locales dun bloc de code qui sont ran-
temporaires ges dans la pile L pendant lexcution de ce bloc et ne sont plus disponibles une
fois lexcution acheve.
Donnes utiles Les donnes utiles sont changes par lintermdiaire de la mmoire image ou par
adressage direct entre une unit centrale et un module de signaux, un module fonc-
tionnel et des modules de communication. Il peut sagir des signaux dentre/sortie
TOR et analogiques de modules de signaux, dinformations de commande et dtat
de modules de fonctions.
Editeur de SCL Lditeur de SCL sadapte tout particulirement aux exigences de SCL pour crer la
source SCL.
En ligne Il sagit de ltat de fonctionnement dans lequel aucune liaison (physique, logique)
nest tablie entre la console de programmation et lautomate programmable.
Enable (EN) Tout bloc dans STEP 7 dispose dune entre Enable (EN) qui ralise lappel du
bloc. Si le signal 1 arrive sur EN le bloc est excut, dans le cas dun signal 0 il
nest pas appel.
Enable out (ENO) Tout bloc dans STEP 7 dispose dune sortie Enable Output (ENO). Lutilisateur
a la possibilit de combiner lentre Enable avec une valeur interne (UND) dans
le bloc. Le rsultat est affect automatiquement la sortie ENO. Dans limbrication
dappels de blocs, la sortie ENO permet de soumettre lexcution du bloc suivant au
droulement correct du bloc prcdent.
Entier (INT) Lentier (INT) est lun des types de donnes simples. On le reprsente comme nom-
bre entier 16 bits.
Expression Une expression permet de traiter des donnes dans SCL. Il existe des expressions
arithmtiques, logiques et de comparaison.
Fentre de rsultat Il sagit dans le contexte du dbogueur SCL de la fentre affichant les rsultats des
fonctions de test Activer les points darrt et Visualisation continue .
Fonction Selon la norme CEI 1131-3, une fonction (FC) est un bloc de code sans donnes
(FC) statiques. Elle permet la transmission de paramtres dans le programme utilisateur.
Aussi, les fonctions se prtent-elles la programmation de fonctions complexes se
rptant souvant, comme les calculs.
Fonction systme Une fonction systme (SFC) est une fonction intgre au systme dexploitation de
(SFC) la CPU quil est possible dappeler dans le programme utilisateur STEP 7.
Globales Les donnes globales sont des zones de mmoire de la CPU, accessibles chaque
(donnes) bloc de code du programme (par exemple aux mmentos).
Hirarchie dappel Pour pouvoir tre excuts, tous les blocs doivent pralablement tre appels. On
appelle hirarchie dappel, lordre et limbrication de ces appels.
Hors ligne Il sagit de ltat de fonctionnement dans lequel aucune liaison (physique, logique)
nest tablie entre la console de programmation et lautomate programmable.
Identificateur Les identificateurs servent adresser des objets du langage SCL. Il existe les classes
didentificateurs suivantes : identificateurs standard, noms et mots-cls prdfinis,
identificateurs absolus (par exemple les identificateurs doprandes), noms quelcon-
ques de votre choix, par exemple pour les variables et les repres de saut, ou encore
mnmoniques dfinis dans la table des mnmoniques.
Instance On dsigne par instance lappel dun bloc fonctionnel. Un bloc de donnes dins-
tance ou une instance locale lui sont associs. Si, par exemple, un bloc fonctionnel
est appel n fois avec des paramtres et des noms de blocs de donnes diffrents
dans le programme utilisateur STEP 7, il existe n instances
FB13.DB3 (P3:=. . .), FB13.DB4 (P4:=. . .),
FB13.DB5 (P5:=. . .), ..., FB13.DBn (Pn:=. . .),
Instance locale Vous dfinissez linstance locale dans la section des variables statiques dun bloc
fonctionnel. A la place dun bloc de donnes dinstance global, seule une partie
locale est utilise comme zone de donnes pour le bloc fonctionnel. Vous lappelez
par le nom de linstance locale.
Instruction Une instruction est la plus petite unit autonome dun programme utilisateur cr
dans un langage textuel. Il sagit dune tche que doit excuter le processeur.
Instruction CASE Linstruction CASE permet de raliser un branchement. Elle sert slectionner
1 parmi n parties dun programme en fonction de la valeur dune expression de
slection.
Instruction FOR Linstruction FOR permet de rpter une suite dinstructions tant que la variable de
contrle se trouve dans la plage des valeurs indique.
Instruction GOTO Linstruction GOTO ralise le saut immdiat un repre de saut donn.
Instruction Linstruction REPEAT permet de rpter une suite dinstructions jusqu une condi-
REPEAT tion dabandon.
Interface dappel Linterface dappel est dfinie par les paramtres dentre, de sortie et dentre/sor-
tie (paramtres formels) dun bloc dans le programme utilisateur STEP 7. Ces para-
mtres sont remplacs par les paramtres effectifs lors de lappel du bloc.
Mmento (M) Un mmento est une zone de mmoire dans la mmoire systme dune CPU
SIMATIC S7 qui peut tre adresse en criture et en lecture (par bit, octet, mot et
double mot). Lutilisateur peut utiliser la zone de mmento pour y enregistrer des
rsultats intermdiaires.
Mmoire image Les tats de signaux des modules dentres et de sorties TOR sont rangs dans une
mmoire image dans la CPU. On distingue la mmoire image des entres (MIE) et
la mmoire image des sorties (MIS).
Mmoire systme La mmoire systme est une mmoire vive intgre lunit centrale, dans laquelle
(zone de mmoire) sont enregistres les zones doprandes (par exemple temporisations, compteurs,
mmentos) ainsi que les zones de donnes requises de manire interne par le sys-
tme (par exemple mmoire pour la communication).
Mnmonique Un mnmonique est un nom que lutilisateur dfinit en respectant les rgles de syn-
taxe imposes. Ce nom peut tre utilis en programmation et en contrle-commande
une fois son affectation dtermine (par exemple, variable, type de donnes, repre
de saut, bloc). Exemple : adresse E 5.0, type de donnes : Bool, mnmonique : Bou-
ton_arret_urg.
Mode de saisie Le mode de saisie source consiste diter les blocs ou le programme utilisateur
source entier dans un fichier de texte. La vrification syntaxique nest ralise que lors de
la compilation. SCL autorise le mode de saisie source.
Mot-cl Dans SCL, les mots-cls servent identifier le dbut dun bloc, annoncer les sec-
tions de dclaration, identifier des instructions, des commentaires et des attributs.
Mot dtat Le mot dtat fait partie des registres de la CPU. Il contient des informations dtat et
des informations derreur susceptibles de survenir avec le traitement dinstructions
STEP 7. Les bits dtat peuvent tre lus et dcrits par lutilisateur, les bits derreur peu-
vent uniquement tre lus.
Multi-instance Lorsque vous utilisez des multi-instances, le bloc de donnes dinstance contient les
donnes pour plusieurs blocs fonctionnels dune hirarchie dappel.
Nombre rel Un nombre rel, ou nombre virgule flottante est un nombre positif ou ngatif
reprsentant une valeur dcimale comme par exemple 0.339 ou -11.1.
Oprande Un oprande est la partie dune instruction indiquant lobjet que le processeur doit trai-
ter. On peut y accder par une adresse absolue ou symbolique.
Opration Une opration est la partie dune instruction indiquant ce que le processeur doit
faire.
Paramtre Dans SCL, il sagit dune variable dun bloc de code (paramtre effectif, paramtre
formel).
Paramtre dentre Seules les fonctions et les blocs fonctionnels possdent des paramtres dentre. Ils
permettent de transmettre des donnes traiter au bloc appel.
Paramtre Les fonctions et les blocs fonctionnels possdent des paramtres dentre/sortie. Ils
dentre/sortie permettent de transmettre des donnes au bloc appel, o elles sont traites, pour
ensuite ranger les rsultats dans la mme variable.
Paramtre de Le paramtre de sortie dun bloc permet de transmettre des rsultats au bloc appe-
sortie lant dans le programme utilisateur STEP 7.
Paramtre effectif Les paramtres effectifs remplacent les paramtres formels lors de lappel dun bloc
fonctionnel (FB) ou dune fonction (FC).
Exemple : le paramtre formel Dmarrer est remplac par le paramtre effectif
E.3.6 .
Paramtre formel Un paramtre formel rserve la place pour le paramtre effectif dans les blocs de
code paramtrables. Pour les FB et les FC, cest lutilisateur qui dclare les param-
tres formels ; ils existent dj pour les SFB et les SFC. A lappel du bloc, un para-
mtre effectif est affect au paramtre formel afin que le bloc appel utilise les
valeurs en cours. Les paramtres formels font partie des donnes locales du bloc et
se rpartissent en paramtres dentre, de sortie et dentre/sortie.
Pav non terminal Un pav non terminal est un lment complexe, dcrit par une nouvelle rgle lexi-
cale ou syntaxique.
Pav terminal Un pav terminal est un lment de base dune rgle lexicale ou syntaxique dont la
description ne ncessite pas de rgle supplmentaire, mais une simple explication. Il
peut par exemple sagir dun mot-cl ou dun caractre unique.
Programmation Le langage de programmation SCL permet de remplacer les oprandes par des cha-
symbolique nes de caractres symboliques : loprande A 1.1 peut par exemple tre remplac
par Vanne_17 . La correspondance entre loprande et la chane de caractres qui
lui est associe est ralise dans la liste des symboles.
Programme Le programme utilisateur contient toutes les instructions et dclarations ainsi que
utilisateur toutes les donnes pour le traitement des signaux permettant de commander une
installation ou un processus. Il est associ un module programmable (par exemple
CPU, FM) et peut tre structur en units plus petites : les blocs.
Programme Le programme utilisateur S7 se trouve dans le classeur des blocs. Il contient les
utilisateur S7 blocs qui vont tre chargs dans un module programmable S7 (par exemple une
CPU) pour y tre excuts afin de raliser la commande dune installation ou dun
processus.
Projet Un projet est un classeur pour tous les objets dune solution dautomatisation, ind-
pendamment du nombre de stations, modules et de leur mise en rseau.
Protection du bloc La protection du bloc dsigne la possibilit de pouvoir protger des blocs indivi-
duels contre la dcompilation, en effectuant la compilation de la source avec le
mot-cl KNOW_HOW_PROTECTED .
Rgle lexicale Les rgles lexicales constituent le niveau infrieur dans la description du langage
SCL. Elles nautorisent pas lutilisation dun format libre, ce qui signifie quelles ne
peuvent tre compltes ni par des caractres despacement, ni par des caractres de
commande.
Rgle syntaxique Les rgles syntaxiques constituent le niveau suprieur de description du langage
SCL. Elles autorisent lutilisation dun format libre, ce qui signifie quelles peuvent
tre compltes par des caractres despacement et par des caractres de commande.
Saisie source La programmation dans SCL permet le mode de saisie source dun programme
STEP 7, avec un diteur de texte quelconque. Ce nest que durant la compilation
que le code de programme rel est cr et que dventuelles erreurs sont dceles.
Ce mode de saisie se prte la cration symbolique de programmes standard.
SCL SCL est labrviation de Structured Control Language . Il sagit dun langage
volu proche du PASCAL, conforme la norme DIN EN 61131-3 (CEI 1131-3), adapt
la programmation de tches complexes dautomatisation, comme par exemple des
algorithmes ou du traitement de donnes.
Section de Cest dans la section de dclaration que vous dclarez les donnes locales dun bloc
dclaration de code.
Source Une source (fichier de texte) contient le code source (texte ASCII) qui peut tre
crit dans un diteur de texte quelconque. Elle est compile en un programme utili-
sateur excutable par un compilateur (LIST, SCL). Une source est enregistre dans
le classeur des sources, sous le programme S7.
Source SCL La source SCL est le fichier SCL dans lequel vous crez le programme qui va
ensuite tre compil avec le compilateur de SCL.
Structure Une structure est un type de donnes complexe compos dlments de donnes de
(STRUCT) types diffrents. Il peut sagir dlments de donnes simples ou complexes.
Tableau Un tableau (ARRAY) est un type de donnes complexe form dlments de don-
nes de mme type, pouvant eux-mmes tre des types de donnes simples ou com-
plexes.
Table des Cette table contient laffectation de mnmoniques (ou noms symboliques) des
mnmoniques adresses pour les donnes globales et les blocs. Exemple : Arret_urg (mnmonique),
E 1.7 (adresse), Rgulateur (mnmonique), SFB24 (bloc).
Table des variables La table des variables regroupe les variables que vous voulez visualiser et forcer,
avec les indications correspondantes sur le format.
Temporisation Les temporisations font partie constituante de la mmoire systme de la CPU. Leur
contenu est actualis de faon asynchrone au programme utilisateur par le systme.
Les instructions en STEP 7 permettent de dfinir la fonction exacte de la cellule de
temporisation (par exemple retard la monte) et den lancer lexcution.
Temps de cycle Le temps de cycle est le temps que met la CPU traiter une seule fois le programme
utilisateur.
Test incrmental Le mode de test incrmental est une fonction du dbogueur de SCL. Il vous permet
dexcuter le programme instruction par instruction et de le visualiser dans une
fentre de rsultat.
Type de bloc Larchitecture des blocs de STEP 7 distingue les types de blocs suivants : bloc dor-
ganisation, bloc fonctionnel, fonction, bloc de donnes de mme que bloc fonction-
nel systme, fonction systme et bloc de donnes systme Bloc.
Type de donnes On dfinit, laide du type de donnes, comment la valeur dune variable ou dune
constante doit tre utilise dans le programme utilisateur. Dans SCL, lutilisateur en
a trois sortes sa disposition :
S les types de donnes simples,
S les types de donnes complexes,
S les types de donnes utilisateur (UDT).
Type de donnes On distingue les structures et les tableaux. Les structures sont composes de divers
complexe types de donnes diffrents (par exemple des types de donnes simples), alors que
les tableaux comportent plusieurs lments dun mme type de donnes. Les types
de donnes STRING et DATE_AND_TIME sont galement des types de donnes
complexes.
Type de donnes Les types de donnes simples sont des types de donnes prdfinis selon
simple CEI 1131-3. Exemples : le type de donnes BOOL dfinit une variable binaire (bit)
et le type de donnes INT une variable entire de 16 bits.
Type de donnes Les types de donnes utilisateur (UDT) sont crs par lutilisateur avec la dclara-
utilisateur tion de type de donnes. Ils ont un nom en propre et sont donc rutilisables. Un type
de donnes utilisateur peut, par exemple, servir la cration de plusieurs blocs de
donnes de mme organisation (par exemple, rgulateur).
Type de paramtre Un type de paramtre est un type de donnes spcial rserv aux temporisations, aux
compteurs et aux blocs. Vous pouvez lutiliser pour les paramtres dentre de blocs
fonctionnels et de fonctions, pour les paramtres dentre/sortie uniquement de
blocs fonctionnels afin de transmettre des temporisations, des compteurs et des blocs
au bloc appel.
Variable Une variable dfinit une donne de contenu variable pouvant tre utilise dans le
programme utilisateur STEP 7. Elle comprend un oprande (par exemple M 3.1) et
un type de donnes (par exemple BOOL) et peut tre identifie par un mnmonique.
Vous la dclarez dans la section de dclaration.
Visualisation Il sagit de lun des modes de test dans SCL. La visualisation continue dun pro-
continue gramme vous permet de tester une suite dinstructions, galement appele domaine
de visualisation.
Zone de mmoire Une unit centrale dans SIMATIC S7 possde trois zones de mmoire, savoir la
mmoire de chargement, la mmoire de travail et la zone systme.
L P
Paramtres
LABEL. Voir Repres de saut, 11-14
affectation, 16-3
Langage de programmation
dentre, 10-10, 16-20
CONT, 1-2
dentre/sortie, 10-10
LIST, 1-2
de bloc, 7-14, 10-2, 10-10
SCL, description, 7-2, A-1
adressage, 10-11
textuel volu, 1-2, 1-3
de la FC, 16-15
Licence dutilisation, 3-2
affectation de lentre, 16-16
Ligne de commentaire, 7-20
de sortie, 10-10, 16-21
LIST
dfinis automatiquement, 16-20
dcompilation blocs SCL, 1-4
du FB
langage de programmation, 1-2
affectation de lentre, 16-7
Liste alphabtique
affectation de lentre/sortie, 16-8
constantes, A-7
principe, 16-5
identificateurs, A-9
effectifs, 16-2
identificateurs doprandes, A-12
affectation de lentre, 16-16
mots-cls, A-9
affectation de la sortie ou de lentre/sortie,
mots-cls de blocs, A-13
16-17
formels, 16-2
dentre, 10-10
M dentre/sortie, 10-10
Mthodes de programmation, 1-4 de sortie, 10-10
gnie logiciel, 1-4 types de donnes, 9-12
Mots-cls, 9-3, 9-5 sortie, lecture, 16-12
de blocs, liste alphabtique, A-13 systme, ENO, 10-12
liste alphabtique, A-9 transmission, 7-13
types de donnes, 7-13
PASCAL, 1-2
N Pavs, 7-2, A-2
non terminaux, A-14
Nom, attribution, 7-7
terminaux, A-5
Norme
POINTER, type de paramtre, 7-13, 9-12
CEI 1131-3, 1-2
conformit, 1-2
DIN EN 61131-3, 1-2
Type de donnes utilisateur (UDT), 1-3, 7-13, 8-19, Utilisation de SCL, 4-1
9-10
appel, 8-19
composantes, 8-19 V
dfinition, 8-19
Valeur
Type de paramtre, 7-13, 9-12
de mesure, traitement, 2-3
ANY, 7-13, 9-12
de temps, saisie, 17-14
BLOCK, 7-13, 9-12
en retour, 16-13
COUNTER, 7-13, 9-12
finale, 15-9
POINTER, 7-13, 9-12, 9-14
initiale, 15-9
TIMER, 7-13, 9-12
sortie, lecture, 16-11
Types de blocs, fonction, 1-3, 1-4
Variable
Types de donnes
dclaration, 10-10
ARRAY, 9-7
tendue, 13-6
dimensions, 9-7
statique, 2-13, 7-14, 10-2, 10-8
BOOL, 16-20
temporaire, 7-14, 10-2, 10-9
caractre, 9-3
Visualisation continue, fonction, 6-3
complexe, 9-4
conversion, 18-2, 18-3
description, 9-3
lmentaire, 7-12 W
numrique, 9-3 WHILE, instruction, 15-2, 15-10
paramtres formels, 9-12 Windows 95, 1-2
simple, 9-3
spcification, 9-7
STRUCT, 9-8 Z
dclaration des composantes, 9-8
Z_RUECK. Voir Dcrmenter
dclaration des variables, 9-8
Z_VORW. Voir Incrmenter
temps, 9-3
Zone
de donnes, dclaration, 12-2
de mmoire de la CPU, donnes globales, 12-2
U de travail, 4-3
UDT. Voir Type de donnes utilisateur
stliche Rheinbrckenstr. 50
D-76181 Karlsruhe
Rpublique Fdrale dAllemagne
Expditeur :
Vos . Nom : _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _____
Fonction : _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Entreprise : _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Rue : _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ____
Code postal : _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Ville : _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ____
Pays : _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ____
Tlphone : _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Rpondez aux questions suivantes en attribuant une note comprise entre 1 pour trs bien
et 5 pour trs mauvais.
1. Le contenu du manuel rpond-il votre attente ?
2. Les informations requises peuvent-elles facilement tre trouves ?
3. Le texte est-il comprhensible ?
4. Le niveau des dtails techniques rpond-il votre attente ?
5. Quelle valuation attribuez-vous aux figures et tableaux ?