cd_2 _manuals francais s7 scl mise en route

28
s Mise en route Cet exemple accompagnant le produit n'est pas une description isolée mais fait partie du manuel. Il peut être appelé via l'icône "Mise en route". SIMATIC S7-SCL V5.3 pour S7-300/400 Getting Started Edition 01/2005

Upload: bsamatrbs

Post on 26-Sep-2015

23 views

Category:

Documents


1 download

DESCRIPTION

CD_2 _Manuals Francais S7 SCL Mise en Route

TRANSCRIPT

  • s

    Mise en route

    Cet exemple accompagnant le produit n'est pas une description isole mais fait partie du manuel. Il peut tre appel via l'icne "Mise en route".

    SIMATIC S7-SCL V5.3 pour S7-300/400 Getting Started Edition 01/2005

  • Copyright Siemens AG 2005 Tous droits rservs Exclusion de responsabilit

    Toute communication et reproduction de ce support d'information, toute exploitation ou communication de son contenu sont interdites, sauf autorisation expresse. Tout manquement cette rgle est illicite et expose son auteur au versement de dommages et intrts. Tous nos droits sont rservs, notamment pour le cas de la dlivrance d'un brevet ou celui de l'enregistrement d'un modle d'utilit.

    Siemens AG Automation and Drives Postfach 4848, 90327 Nrnberg, Allemagne

    Nous avons vrifi la conformit du contenu du prsent manuel avec le matriel et le logiciel qui y sont dcrits. Or des divergences n'tant pas exclues, nous ne pouvons pas nous porter garants pour la conformit intgrale. Si l'usage de ce manuel devait rvler des erreurs, nous en tiendrons compte et apporterons les corrections ncessaires ds la prochaine dition. Veuillez nous faire part de vos suggestions.

    Siemens AG 2005 Sous rserve de modifications techniques

    Siemens Aktiengesellschaft A5E00324656-01

    Consignes de scurit

    Ce manuel donne des consignes que vous devez respecter pour votre propre scurit ainsi que pour viter des dommages matriels. Elles sont mises en vidence par un triangle davertissement et sont prsentes, selon le risque encouru, de la faon suivante :

    !

    Danger signifie que la non-application des mesures de scurit appropries entrane la mort, des blessures graves ou un dommage matriel important.

    !

    Attention signifie que la non-application des mesures de scurit appropries peut entraner la mort, des blessures graves ou un dommage matriel important.

    !

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

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

    Important doit vous rendre tout particulirement attentif des informations importantes sur le produit, aux manipulations effectuer avec le produit ou la partie de la documentation correspondante.

    Personnel qualifi La mise en service et lutilisation d'un appareil ne doivent tre effectues que par des personnes qualifies. Il sagit de personnes qui ont lautorisation de mettre en service, de mettre la terre et de reprer des appareils, des systmes et circuits lectriques conformment aux rgles de scurit en vigueur.

    Utilisation conforme Tenez compte des points suivants :

    !

    Attention Lappareil ne doit tre utilis que pour les applications spcifies dans le catalogue ou dans la description technique, et exclusivement avec des priphriques et composants recommands par Siemens. Le transport, le stockage, le montage, la mise en service ainsi que lutilisation et la maintenance adquats de l'appareil sont les conditions indispensables pour garantir son fonctionnement correct et sr.

    Marques de fabrique SIMATIC, SIMATIC HMI et SIMATIC NET sont des marques dposes de Siemens AG.

    Les autres dsignations dans ce document peuvent tre des marques dont lutilisation par des tiers leurs propres fins peut enfreindre les droits des propritaires desdites marques.

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

    Dveloppement d'un programme S7-SCL

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

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

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

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

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

  • Dveloppement d'un programme S7-SCL

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

    Enonc du problme

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

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

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

    Commutateur de triValeur de mesure

    Tri des valeurs de mesure

    Calcul des rsultatsSaisie des valeurs de mesure

    Calculs

    x=Evaluation du front

    Commutateur de saisie

    1

    3

    7

    15

    31

    63

    127

    255

    255

    127

    63

    31

    15

    7

    3

    1

    1

    2

    3

    4

    6

    8

    11

    16

    1

    9

    49

    225

    961

    3969

    16129Dbordement

    Racine carre

    1 1 1 1 1 1 1 1

    255

    Saisie des donnes :

    X X

    haut

    Carr

  • Dveloppement d'un programme S7-SCL

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

    Slection pour les sorties Le module de sortie ne pouvant indiquer qu'une seule valeur la fois, il faudra disposer des possibilits suivantes : Slection d'un lment dans une liste, Choix entre valeur de mesure, racine carre et carr. La valeur indiquer est slectionne de la manire suivante : Trois commutateurs forment un codage qui est valid en cas de front un quatrime

    commutateur, le commutateur de codage. Ceci permet de calculer l'adresse de la sortie. Trois valeurs sont mises disposition pour la sortie la mme adresse, la valeur de

    mesure, la racine carre et le carr. Deux inverseurs sont prvoir pour choisir une valeur parmi les trois.

    Saisie des donnes :

    Deux inverseurs Codage

    Valeurs tries Rsultats

    Sortie des donnes :

    Sortie

    Commutateur de codage

    x=Evaluation du front

    X

    4

    Racine carre ou carr

    Valeur de mesureoursultat

    10

    1

    3

    7

    15

    31

    63

    127

    255

    1

    2

    3

    4

    6

    8

    11

    16

    1

    9

    49

    225

    961

    3969

    16129Dbordement

    Racine carre

    3

    1

    1

    0

    Valeur de mesure

    Commutateur sur module d'entre

    Affichage sur le module de sortie

    Slection de la sortie

    Adressage de la sortie

    Inverseur

    haut

    Carr

  • Dveloppement d'un programme S7-SCL

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

    Composition d'un programme structur avec S7-SCL

    Types de bloc Un programme S7-SCL structur permet de rsoudre au mieux le problme pos. Un tel programme est de construction modulaire, c'est--dire divis en blocs chargs chacun d'une tche partielle bien dtermine. Comme dans les langages de programmation de STEP 7, vous disposez dans S7-SCL des types de bloc suivants.

    BlocsSTEP 7

    OB

    FB

    FC

    DB

    UDT

    Les blocs d'organisation constituent l'interface entre le systme d'exploitation de la CPU S7 et le programme utilisateur. C'est ici qu'est dfini l'ordre d'excution des blocs du programme utilisateur.

    Les blocs fonctionnels sont des blocs de code donnes statiques. Le FB disposant d'une mmoire, il est possible d'accder ses paramtres (par ex.des sorties) depuis n'importe quelle position du programme utilisateur. Les fonctions sont des blocs de code sans mmoire. De ce fait, il faut que les valeurs calcules soient traites aussitt aprs l'appel de la fonction.

    Les blocs de donnes sont des zones servant mmoriser les donnes utilisateur. On distingue les DB globaux auxquels tous les blocs de code ont accs et les DB d'instance qui sont associs un appel de FB dtermin.Les types de donn es utilisateur sont des types complexes que vous dfinissez vous-mme au besoin et qui sont rutilisables. Ainsi, un typede donnes utilisateur peut servir gnrer plusieurs blocs de donnes de mme structure. Les UDT s'emploient comme des blocs.

  • Dveloppement d'un programme S7-SCL

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

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

    Une source pour un programme

    Plusieurs sources pour un programme

    .

    FB22.

    .

    .

    FC2.

    .

    .

    OB1.

    Source SCL

    OB1FC2

    DBD'instance

    Dossier Blocs Hors ligne

    SourceSCLpourOB1

    Source

    FC2 FB22

    FB22

    SCLSCLpourpour

    Source

  • Dveloppement d'un programme S7-SCL

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

    Dfinition des tches partielles

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

    CYCLEBloc d'organisation (OB)

    SAISIEBloc fonctionnel (FB)

    CALCULBloc fonctionnel (FB)

    Tri des valeurs de

    mesure

    Saisie des valeurs de

    mesure

    Adressage et slection de

    la sortieCalcul des

    rsultats

    AppelCycli-que

    SAISIE_DONNEES Bloc de donnes (DB)

    Entre des donnes

    Sortie des donnes

    Racine carre, carr

    Enregistre-ment des donnes

    SQRT (racine carre)

    et CARRE Fonctions (FC)

    Sens de d-placement du

    programme

    Sens de d-Placement

    des donnes

  • Dveloppement d'un programme S7-SCL

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

    Choix et affectation des types de bloc possibles Les diffrents blocs ont t choisis d'aprs les critres suivants :

    Fonction Nom de bloc Un programme utilisateur ne peut tre dclench que dans un OB. Les valeurs de mesure devant tre saisies cycliquement, il nous faut un OB d'appel cyclique (OB1). Une partie du traitement - Entre des donnes et Sortie des donnes - sera programme dans l'OB.

    OB "CYCLE"

    Pour la tche partielle Saisie des valeurs de mesure, il nous faut un bloc mmoire, donc un FB, puisque certaines donnes locales (la mmoire circulante, par exemple) doivent tre conserves d'un cycle de programme au suivant. Le lieu propre l'Enregistrement des donnes (mmoire) est le bloc de donnes d'instance SAISIE_DONNEES. Le mme FB peut encore se charger de la tche partielle Adressage et slection de la sortie, puisqu'il dispose des donnes requises.

    FB "SAISIE"

    Dans le choix du type de bloc qui assumera les tches partielles Tri des valeurs de mesure et Calcul des rsultats, il faut tenir compte du fait qu'une mmoire tampon de sortie doit tre cre qui contiendra, pour chaque valeur de mesure, la racine carre et le carr rsultant des calculs. Seul un FB entre en ligne de compte. Comme il est appel par un FB de rang suprieur, il n'a pas besoin de DB en propre. Ses donnes d'instance peuvent tre stockes dans le bloc de donnes d'instance du bloc appelant.

    FB "CALCUL"

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

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

  • Dveloppement d'un programme S7-SCL

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

    Dfinition des interfaces entre blocs

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

    Paramtres de bloc Signification Dclaration avec Paramtres d'entre A l'appel du bloc, les paramtres d'entre prennent

    les valeurs d'entre actuelles. Vous pouvez y accder uniquement en lecture.

    VAR_INPUT

    Paramtres de sortie Les paramtres de sortie transmettent les valeurs de sortie actuelles au bloc appelant. Vous pouvez y accder en criture comme en lecture.

    VAR_OUTPUT

    Paramtres d'entre/sortie

    Les paramtres d'entre/sortie prennent en charge la valeur actuelle d'une variable lors de l'appel, la traitent et rangent ensuite les rsultats dans la mme variable.

    VAR_IN_OUT

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

    FB SAISIE

    Nom de paramtre Type de donnes

    Type de dclaration

    Description

    Entree_val_mesure INT VAR_INPUT Valeur de mesure nouv_val BOOL VAR_INPUT Commutateur pour prendre en charge la valeur

    de mesure dans la mmoire circulante nouv_tri BOOL VAR_INPUT Commutateur pour trier et exploiter les valeurs

    de mesure choix_fonction BOOL VAR_INPUT Inverseur pour choisir la racine carre ou le

    carr Selection WORD VAR_INPUT Codage pour slectionner la valeur de sortie nouv_selection BOOL VAR_INPUT Commutateur pour valider le codage Sortie_resultat DWORD VAR_OUTPUT Sortie du rsultat calcul Sortie_val_mesure DWORD VAR_OUTPUT Sortie de la valeur de mesure correspondante

  • Dveloppement d'un programme S7-SCL

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

    FB CALCUL Le FB SAISIE appelle le FB CALCUL. Les deux FB ont comme donnes communes le tableau de valeurs de mesure trier. Il faut donc dclarer ce tableau comme paramtre d'entre/sortie. Un tableau de structures est cr en tant que paramtre d'entre pour les rsultats du calcul que sont la racine carre et le carr. Voici les paramtres formels :

    Nom Type de donnes

    Type de dclaration

    Description

    Memoire_tri ARRAY[..] OF REAL

    VAR_IN_OUT Tableau des valeurs de mesure, correspond la mmoire circulante

    Memoire_calcul ARRAY[..] OF STRUCT

    VAR_OUTPUT Tableau pour les rsultats : stucture avec les composants "racine_carree" et "carre" de type INT

    SQRT et CARRE Ces fonctions sont appeles par CALCUL. Elles ncessitent une valeur d'entre et fournissent le rsultat en tant que valeur de la fonction.

    Nom Type de donnes

    Type de dclaration

    Description

    Valeur REAL VAR_INPUT Entre pour SQRT SQRT REAL valeur de la

    fonction Racine carre de la valeur d'entre

    Valeur INT VAR_INPUT Entre pour CARRE CARRE INT Valeur de la

    fonction Carr de la valeur d'entre

  • Dveloppement d'un programme S7-SCL

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

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

    Module d'entre

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

    0 7 Octet d'entre : valeur de mesure

    Module de sortie

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

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

    Systme d'automatisation

    Module TORd'entre

    Module TORde sortie

    Octet 1

    Octet 5

    Octet 4

    Octet 0

    E 0.3E 0.4

    0

    0

    1

    1

    2

    2

    3

    3

    4

    4

    5

    5

    6

    6

    7

    7

    Octet 0

    Octet 1 Octet 5

    Octet 4

  • Dveloppement d'un programme S7-SCL

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

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

    FC CARRE

    FB CALCUL

    FB SAISIE

    OB CYCLE

    appelle

    appelle

    appelle

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

  • Dveloppement d'un programme S7-SCL

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

    Cration de la fontion CARRE

    Section des instructions de la fonction CARRE

    Section des instructions Il faut d'abord vrifier si la valeur d'entre ne dpasse pas la limite pour laquelle le rsultat ne serait plus dans la plage de valeurs des entiers. Si c'est le cas, c'est la valeur maximale pour entier qui est inscrite. Sinon, l'lvation au carr est effectue. Le rsultat est transmis comme valeur de la fonction.

    FUNCTION CARRE : INT (******************************************************************* Cette fonction fournit comme valeur le carr de la valeur d'entre ou en cas de dbordement, la valeur maximale pouvant tre reprsente par un entier. *******************************************************************) VAR_INPUT valeur : INT; END_VAR BEGIN IF valeur

  • Dveloppement d'un programme S7-SCL

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

    Cration du FB CALCUL

    Organigramme de EXPLOITER

    Cette figure reprsente l'algorithme sous forme d'organigramme.

    Dbut

    I >= 1 ?

    mmoire_tri [I-1] >mmoire_tri [I] ? Echanger les valeurs

    de la mmoire de tri [I-1]et de la mmoire de tri [I]

    ECHANGER = TRUE

    I := I-1

    Fin

    changer := FALSE

    I := LIMITE

    I := 0

    I := I+1

    CALCULBloc fonctionnel

    Dbut de linstructionREPEAT

    Dbut de linstructionFOR

    I signifie index

    non

    oui

    oui

    non

    TRUEFALSE

    non

    oui

    Fin de linstructionFOR

    Fin de linstructionREPEAT changer ?

    I

  • Dveloppement d'un programme S7-SCL

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

    Section de dclaration du FB CALCUL

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

    CONST LIMITE := 7; END_CONST

    VAR_IN_OUT memoire_tri : ARRAY[0..LIMITE] OF INT; END_VAR

    VAR_OUTPUT memoire_calcul : ARRAY[0..LIMITE] OF STRUCT racine_carree : INT; carre : INT; END_STRUCT; END_VAR

    VAR_TEMP echanger : BOOL; indice, aux : INT; valeur_r, resultat_r: REAL; END_VAR

  • Dveloppement d'un programme S7-SCL

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

    Section des instructions du FB CALCUL

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

    valeurs_mesure

    mmoire_tri

    mmoire_calcul

    CALCUL

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

    Section des instructions Les valeurs de mesure sont d'abord tries dans la mmoire circulante, puis les calculs sont effectus. Mthode de l'algorithme de tri

    C'est la mthode de permutation permanente des valeurs qui est utilise pour trier la mmoire circulante ; en d'autres termes, deux valeurs conscutives sont compares l'une l'autre et permutes jusqu' obtention de l'ordre de tri souhait. La mmoire utilise est le paramtre d'entre/sortie "memoire_tri".

    Dclenchement du calcul Une fois le tri termin, une boucle de calcul est parcourue qui contient l'appel des fonctions CARRE pour l'lvation au carr et SQRT pour l'extraction de la racine carre. Les rsultats sont enregistrs dans le tableau de structures "memoire_calcul".

  • Dveloppement d'un programme S7-SCL

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

    Section des instructions du FB CALCUL La section des instructions du bloc de code se prsente comme suit :

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

  • Dveloppement d'un programme S7-SCL

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

    Cration du FB SAISIE

    Organigramme de SAISIR

    Cette figure reprsente l'algorithme sous forme d'organigramme.

    Dbut

    Fin

    Modifiernouvellevaleur ?

    oui

    oui

    oui

    non

    non

    non

    TRUE

    FALSE

    Modifiernouveau code ?

    Modifiernouveau tri ?

    Choixfonction ?

    SAISIEBloc fonctionnel

    La mmoire circulante est raliseavec lopration MOD : lorsque la limiteest atteinte, elle recommence audbut.

    Inscrire valeur de mesuredans mmoire circulante,recalculer lindex

    Trier la mmoire circulante et effectuerles calculs (crer ceteffet le tableau des rsultats).

    Dabord dcaler les bits nonsignificatifs vers le bord droit,puis masquer les places inutiles laide de AND

    charger depuis le blocde donnes dinstance

    Charger :inscrire les lments de la listeavec les adresses de sortie dansles paramtres de sortie pour ensuiteafficher leurs valeurs.

    Evaluation du codage etdtermination de ladresse de sortie

    Reprise des rsultats des calculs dans le tableau des rsultats

    Charger rsultat du calculde la racine carre

    Charger rsultat du calcul du cadre

    Charger valeur de mesure

    CALCUL

  • Dveloppement d'un programme S7-SCL

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

    Section de dclaration du FB SAISIE

    Composition de la section de dclaration La section de dclaration de ce bloc se compose des blocs de dclaration suivants : Dclaration des constantes entre CONST et END_CONST, Paramtres d'entre entre VAR_INPUT et END_VAR, Paramtres de sortie entre VAR_OUTPUT et END_VAR, Variables statiques entre VAR et END_VAR ; c'est ici aussi qu'est effectue la dclaration

    de l'instance locale du bloc CALCUL.

    CONST LIMITE := 7; NOMBRE := LIMITE + 1; END_CONST VAR_INPUT entree_val_mesure : INT ; // Nouvelle valeur de mesure nouv_val : BOOL; // Prendre en charge la valeur // de mesure dans la mmoire // circulante "valeurs_mesure" nouv_tri : BOOL; // Trier les valeurs de mesure choix_fonction : BOOL; // Choix de la fonction de calcul Racine carre ou Carr nouv_selection : BOOL; // Valider l'adresse de sortie selection : WORD; // Adresse de sortie END_VAR VAR_OUTPUT sortie_resultat : INT; // Valeur calcule sortie_val_mesure : INT; // Valeur de mesure correspondante END_VAR VAR valeurs_mesure : ARRAY[0..LIMITE] OF INT := 8(0); memoire_resultats : ARRAY[0..LIMITE] OF STRUCT racine_carree : INT; carre : INT; END_STRUCT; pointeur : INT := 0; anc_val : BOOL := TRUE; anc_tri : BOOL := TRUE; anc_selection : BOOL := TRUE; adresse : INT := 0; //Adresse de sortie convertie instance_calcul : CALCUL, //Dfinition de l'instance //locale END_VAR

  • Dveloppement d'un programme S7-SCL

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

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

    Initialisation de variables Notez les valeurs initiales qui sont crites dans les variables lors de l'initialisation du bloc (aprs son chargement dans la CPU). L'instance locale du FB CALCUL est galement dclare dans la section de dclaration "VAR, END_VAR". Ce nom sera utilis plus tard pour l'appel et l'accs aux paramtres de sortie. L'instance globale SAISIE_DONNEES sert de mmoire de donnes.

    Nom Type de donnes Valeur initiale Description Valeurs_mesure ARRAY [..]

    OF INT 8(0) Mmoire circulante pour les valeurs de

    mesure

    Memoire_resultats ARRAY [..] OF STRUCT

    - Tableau de structures avec les composants "racine_carree" et "carre" de type INT

    Pointeur INT 0 Pointeur de la mmoire circulante dsignant l'endroit o la valeur de mesure suivante est crite

    anc_val BOOL FALSE Valeur prcdente pour la prise en charge de valeur de mesure avec "nouv_val"

    anc_tri BOOL FALSE Valeur prcdente pour le tri avec "nouv_tri"

    anc_selection BOOL FALSE Valeur prcdente pour la validation du codage avec "nouv_selection"

    Adresse INT 0 Adresse pour la sortie de valeur de mesure ou de rsultat

    Instance_calcul Instance locale - Instance locale du FB CALCUL

  • Dveloppement d'un programme S7-SCL

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

    Section des instructions du FB SAISIE

    Composition de la section des instructions La section des instructions de SAISIE comporte 3 parties. Saisie des valeurs de mesure

    Lorsque le paramtre d'entre "nouv_val" a chang par rapport "anc_val", une nouvelle valeur de mesure est lue dans la mmoire circulante.

    Dclenchement du tri et du calcul Tri et calcul sont dclenchs par l'appel du bloc fonctionnel CALCUL lorsque le paramtre d'entre "nouv_tri" a chang par rapport "anc_tri".

    Evaluation du codage et prparation de la sortie Le codage est lu sous forme de mot. Conformment la convention SIMATIC, cela signifie que le groupe de commutateurs du haut (octet 0) contient les 8 bits de poids fort du mot d'entre et que le groupe de commutateurs du bas (octet 1) contient ceux de poids faible. La figure ci-aprs montre l'emplacement des commutateurs permettant d'effectuer le codage.

  • Dveloppement d'un programme S7-SCL

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

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

    01234567

    0123456

    Commutateur pour valeur de codage

    Commutateur de codage

    01234567

    891011

    15

    121314

    Commutateur sur module

    Mot dans mmoire

    Vers SHRde 12 places

    Vers AND,Masque 0007

    01234567

    891011

    15

    121314

    01234567

    891011

    15

    121314

    adresse

    7Octet 0

    Octet 1 EW0

  • Dveloppement d'un programme S7-SCL

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

    Section des instructions La section des instructions du bloc de code se prsente comme suit.

    BEGIN (***************************************************************** 1re partie : saisie des valeurs de mesure. La modification de "nouv_val" provoque la saisie de la valeur de mesure. L'opration MOD permet de raliser une mmoire circulante pour valeurs de mesure. ******************************************************************) IF nouv_val anc_val THEN pointeur := pointeur MOD NOMBRE; valeurs_mesure[pointeur] := entree_val_mesure; pointeur := pointeur + 1; END_IF; anc_val := nouv_val; (****************************************************************** 2me partie : dclenchement du tri et du calcul La modification de "nouv_tri" dclenche le tri de la mmoire circulante et l'excution de calculs avec les valeurs de mesure. Les rsultats sont enregistrs dans un nouveau tableau "memoire_calcul". ******************************************************************) IF nouv_tri anc_tri THEN pointeur := 0; //Remise 0 du pointeur de la mmoire circulante instance_calcul(memoire_tri := valeurs_mesure);//Appel du FB CALCUL END_IF; anc_tri := nouv_tri; memoire_resultats := instance_calcul.memoire_calcul; //Carr et racine carre

    (****************************************************************** 3me partie : valuation du codage et prparation de la sortie Si modification de "nouv_selection", le codage pour adressage de l'lment de tableau pour la sortie est dtermin de nouveau : les bits significatifs de "selection" sont masqus et convertis en entiers. Selon la position de l'inverseur de "choix_fonction", c'est "racine_carree" ou "carre" qui est mis disposition pour la sortie. *******************************************************************) IF nouv_selection anc_selection THEN adresse := WORD_TO_INT(SHR(IN := selection, N := 12) AND 16#0007); END_IF; anc_selection := nouv_selection; IF choix_fonction THEN sortie_resultat:= memoire_resultats[adresse].carre; ELSE sortie_resultat:= memoire_resultats[adresse].racine_carree; END_IF; sortie_val_mesure := valeurs_mesure[adresse]; //Indication de la valeur de mesure END_FUNCTION_BLOCK

  • Dveloppement d'un programme S7-SCL

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

    Cration du bloc d'organisation CYCLE

    Tches de l'OB CYCLE Nous avons choisi un OB1, car il est appel de manire cyclique. Il sert raliser les tches suivantes pour le programme : Appel et dfinition des paramtres du bloc fonctionnel SAISIE avec donnes d'entre et

    donnes de commande, Prise en charge des donnes de rsultat du bloc fonctionnel SAISIE, Sortie des valeurs indiquer. La section de dclaration commence par la zone de donnes temporaire "donnees_systeme" de 20 octets.

    Code du programme de l'OB CYCLE

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

    (* 2me partie : **************************************************) IF commutateur_de_sortie THEN //Commutation de la sortie sortie := SAISIE_DONNEES.sortie_resultat; //Racine carre //ou carr ELSE sortie := SAISIE_DONNEES.sortie_val_mesure; //Valeur de mesure END_IF; END_ORGANIZATION_BLOCK

  • Dveloppement d'un programme S7-SCL

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

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

  • Dveloppement d'un programme S7-SCL

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

    Donnes de test

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

    Etapes du test Effectuez maintenant le test en vous conformant aux tapes dcrites dans le tableau ci-aprs.

    Test Action Consquence 1 Rglez le codage sur "111" (E0.4, E0.5 et E0.6) et

    validez-le l'aide du commutateur de codage (E0.7).

    Toutes les sorties du module de sortie (octet de poids faible) sont actives et les diodes s'allument.

    2 Faites indiquer la racine carre correspondante en positionnant le commutateur de sortie (E0.3) sur "1".

    Les indications la sortie quivalent la valeur binaire "10000" (=16).

    3 Faites indiquer le carr correspondant en positionnant le commutateur de fonction (E0.2) sur "1".

    15 indicateurs s'allument la sortie. Ceci signale un dbordement, car 255 x 255 est une valeur trop leve pour la plage des entiers.

    4a Remettez le commutateur de sortie (E0.3) "0". La valeur de mesure est nouveau indique : tous les indicateurs des sorties de l'octet de poids faible du module de sortie sont "1".

    4b Donnez comme nouvelle valeur de mesure au module d'entre la valeur 3, c'est--dire la valeur binaire "11".

    Rien ne change encore sur le module de sortie.

    5a Observez la lecture de la valeur de mesure : rglez le codage sur "000" et validez-le l'aide du commutateur de codage (E0.7) afin de pouvoir observer plus tard la saisie de la valeur.

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

    5b Inversez le commutateur de saisie "entree 0.0" (E0.0). Ceci provoque la lecture de la valeur donne la 4e tape du test.

    La sortie indique la valeur de mesure 3 , valeur binaire "11".

    6 Dclenchez le tri et le calcul en inversant le commutateur de tri (E0.1).

    La sortie indique nouveau 0, puisque le tri a dcal la valeur de mesure vers le haut du tableau.

    7 Indication de la valeur de mesure aprs le tri : rglez le codage sur "110" (E0.6 = 1, E0.5 = 1, E0.4 = 0 pour EB0, ce qui correspond aux bits 14, 13 et 12 de EW0) et validez-le en inversant le commutateur de codage.

    La sortie indique nouveau la valeur de mesure "11", puisque c'est la seconde valeur la plus leve dans le tableau.

    8a Indication des rsultats correspondants : une inversion du commutateur de sortie (E0.3) provoque l'indication du carr de la valeur de mesure de l'tape 7 du test.

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

    8b Inversez le commutateur de fonction (E0.2) pour obtenir aussi la racine carre.

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

  • Dveloppement d'un programme S7-SCL

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

    Test complmentaire Les tableaux ci-aprs expliquent les commutateurs du module d'entre et proposent des modles de test pour la racine carre et le carr qui vous aideront dfinir vos propres tapes de test. L'entre est effectue au moyen des commutateurs : les 8 du haut permettent de

    commander le programme, les 8 du bas de fournir une valeur de mesure. La sortie est effectue au moyen d'indicateurs : le groupe du haut indique l'octet de sortie

    de poids fort, celui du bas l'octet de poids faible.

    Commutateurs de commande

    Nom Explication

    Voie 0 Commutateur de saisie Inversion pour prise en charge de la valeur de mesure

    Voie 1 Commutateur de tri Inversion pour tri/exploitation Voie 2 Commutateur de fonction A gauche ("0") : racine carre,

    A droite ("1") : carr Voie 3 Commutateur de sortie A gauche ("0") : valeur de mesure,

    A droite ("1") : rsultat Voie 4 Codage Adresse de sortie, bit 0 Voie 5 Codage Adresse de sortie, bit 1 Voie 6 Codage Adresse de sortie, bit 2 Voie 7 Commutateur de codage Inversion pour validation du codage

    Le tableau suivant contient 8 valeurs de mesure dj tries titre d'exemple. Entrez les valeurs dans n'importe quel ordre. Pour cela, rglez la combinaison binaire respective et prenez la valeur en charge en inversant le commutateur de saisie. Une fois toutes les valeurs saisies, dclenchez le tri et l'exploitation en inversant le commutateur de tri. Aprs cela, vous pouvez prendre connaissance des valeurs de mesure tries ou des rsultats, racine carre ou carr.

    Valeur de mesure Racine carre Carr 0000 0001 = 1 0, 0000 0001 = 1 0000 0000, 0000 0001 = 1 0000 0011 = 3 0, 0000 0010 = 2 0000 0000, 0000 1001 = 9 0000 0111 = 7 0, 0000 0011 = 3 0000 0000, 0011 0001 = 49 0000 1111 = 15 0, 0000 0100 = 4 0000 0000, 1110 0001 = 225 0001 1111 = 31 0, 0000 0110 = 6 0000 0011, 1100 0001 = 961 0011 1111 = 63 0, 0000 1000 = 8 0000 1111, 1000 0001 = 3969 0111 1111 = 127 0, 0000 1011 = 11 0011 1111, 0000 0001 = 16129 1111 1111 = 255 0, 0001 0000 = 16 0111 111, 1111 1111 = indication de dbordement !

    TitreDveloppement d'un programme S7-SCLBienvenue dans l'exemple pour dbutants "Saisie de valeurs de mesure"Enonc du problmeComposition d'un programme structur avec S7-SCLDfinition des tches partiellesDfinition des interfaces entre blocsDfinition de l'interface d'entre/sortieDfinition de l'ordre des blocs dans la sourceDfinition des mnmoniquesCration de la fontion CARRESection des instructions de la fonction CARRE

    Cration du FB CALCULOrganigramme de EXPLOITERSection de dclaration du FB CALCULSection des instructions du FB CALCUL

    Cration du FB SAISIEOrganigramme de SAISIRSection de dclaration du FB SAISIESection des instructions du FB SAISIE

    Cration du bloc d'organisation CYCLEDonnes de test