Vous êtes sur la page 1sur 49

Fev.

-11 Automatismes ST
Table des matires


1 DESCRIPTION 2
1.1 Prsentation des fentres de latelier 2
1.2 Cycles de lautomatisme 6
1.3 Syntaxe du langage ST 6
1.4 Fonctionnalits avances 12
2 CONCEPTION DUN PROGRAMME 15 Tous droits rservs
Il est interdit de reproduire tout ou partie de cet ouvrage ou de le
transmettre sous quelque forme que ce soit, sans laccord pralable
de SOFREL.
Les informations dcrites dans ce manuel ont t vrifies avec
soin et sont supposes exactes. Toutefois, SOFREL ne peut tre
tenu responsable des erreurs ou des imprcisions qui pourraient
exister dans ce manuel, ni des dommages directs ou indirects qui
en rsulteraient mme sil a t avis de la possibilit de tels
dommages.
Suite au dveloppement continuel de ses produits, SOFREL se
rserve le droit dapporter des modifications ce manuel et aux
produits qui y sont mentionns tout moment, sans avoir prvenir
les personnes concernes.
Marques
2.1 Organisation 15
2.2 Analyse du besoin fonctionnel 15
2.3 dition et dclaration des variables 16
2.4 Construction 17
2.5 Simulation 18
2.6 Chargement du programme 18
2.7 Mise au point sur le poste local (Debugger en
ligne) 18
3 OPRATEURS 19
3.1 Arithmtique 19
3.2 Oprateurs boolens 19
SOFREL, PCWin, SOFBUS, S500, S50, S50 THERMIX, TELBOX,
LINEBOX, CELLBOX, PC500, CS100, S10, S15, sont des marques
dposes par la socit SOFREL.
Microsoft Windows, Microsoft Excel, Microsoft Word sont des
marques ou des marques dposes par Microsoft Corporation.
Tous les autres noms de produits ou de socits mentionns dans
cet ouvrage ne servent qu des fins didentification et peuvent tre
des marques dposes par leurs propritaires respectifs.
3.3 Oprateurs de comparaisons 20
4 FONCTIONS 21
4.1 Dfinition 21
4.2 Utilisation dune fonction 21
4.3 Fonctions standard ST 21
4.4 Fonctions spcifiques SOFREL 34
Lgende
S500-doc_09-AUTO - 1 -
5 BLOCS FONCTIONNELS 36

: cliquez 1 fois sur le bouton gauche de la souris
: cliquez 1 fois sur le bouton droit de la souris
: double-cliquez sur le bouton gauche de la souris
5.1 Dfinition 36
5.2 Principe dutilisation 36
5.3 Exemple dutilisation dun bloc fonctionnel 37
5.4 Blocs fonctionnels standard ST 39


CG

CD

DCG

Automatismes ST
1 Description
Lapplication Automatismes ST S500 permet dautomatiser des tches propres chacun des sites
surveills. Pour cela, les programmes interagissent sur les informations de tlgestion de S500.
Les programmes sont dcrits en langage ST conformment la norme IEC1131-3.

1.1 Prsentation des fentres de latelier
Aprs avoir dmarr SOFTOOLS, modifiez la configuration du poste local S500,

CG
sur le dossier Automatismes et
DCG
sur le dossier
Automatismes ST pour activer latelier dautomatisme.

1.1.1 Fentre principale
La fentre principale permet de naviguer dans les diffrentes fentres de lautomatisme (liste des
programmes, dition, variables, construction, simulation, ...).

S500-doc_09-AUTO - 2 -




1 Maintien de la fentre principale toujours en avant-plan.
2 Accs la fentre Liste des programmes pour ldition dun programme.
3 Accs la fentre Liste des variables .
4 Navigation dans les diffrentes fentres lies lautomatisme.
5 Construction des programmes.
6 Affichage du journal pour visualiser les messages du suivi (messages systme et suivi applicatif).
7 Passage en mode Simulation pour contrler lexcution du programme sur le PC.
8 Passage en mode Mise au point (Debugger) pour contrler lexcution du programme sur le poste local.
9 Affichage de la fentre Espion pour visualiser les variables lors de lexcution.


1
3 2
5 7
9
4
6
8

Automatismes ST

1.1.2 Liste des programmes
Cette fentre regroupe les programmes de lautomatisme.

Un programme est une suite dinstructions destin rsoudre un problme fonctionnel. Il est donc
vivement conseiller dutiliser un programme par problme fonctionnel ; cela permet de simplifier
lapproche (par exemple : un programme pour automatiser la permutation de pompes, et un autre
programme pour grer lidentification des personnes qui ont accs la station de pompage).
1.1.3 dition du programme
Cest dans cette fentre que lutilisateur crit son programme (suite dinstructions).
Exemple : Remplissage dune cuve selon 2 seuils (information Bornier DI )

Lditeur est dot dune coloration
syntaxique, c'est--dire que les
composantes du langage prennent
une couleur spcifique :
les mots cl en bleu ,
les valeurs numriques en gris ,
les commentaires sont en vert
et tout le reste est en noir .

S500-doc_09-AUTO - 3 -


data1 : Seuil Niveau haut
data2 : Seuil Niveau bas
data3 : Commande pompage
Cuve n 1
1

0
0

1

Automatismes ST

1.1.4 Liste des variables


CG
sur le + pour
dvelopper chaque liste.
Les variables sont :
soit des informations du poste local S500.
Les informations S500 correspondant des variables dautomatisme prdfinies
nommes <dataxxxx> (xxxx correspondant au numro de linformation 1 1000).
soit des variables internes lautomatisme.

1.1.5 Construction
Laction Construire (ou compiler) sert convertir les programmes ST dans un langage
comprhensible par S500. Elle gnre un code qui sera ensuite charg en mme temps que la
configuration dans le S500.

S500-doc_09-AUTO - 4 -


Automatismes ST
1.1.6 Simulation de lexcution dun programme
Un programme peut tre simul avant dtre transfr dans S500.


La fentre variable permet de visualiser ltat des variables en temps rel. Il est galement possible
de modifier la valeur dune variable en cours de simulation ; pour ce faire, il suffit de double cliquer
sur la variable, et la fentre suivante apparat :
ou
1.1.7 Fentre Espion
Elle permet de visualiser en simulation ltat de variables regroupes dans une mme fentre.

Pour visualiser les variables du programme, il suffit deffectuer un glisser-dplacer
de la variable, de la fentre Liste des variables vers la fentre Espion .
S500-doc_09-AUTO - 5 -


Automatismes ST

1.2 Cycles de lautomatisme


















DEBUT CYCLE

Acquisition des Entres / Sorties de
lautomatisme
(Informations S500)
Programme 1
Temps de cycle =200 ms
(excution des automatismes toutes les 200 millisecondes).
Programme 2
:
:
Programme n

Les entres-sorties de lautomatisme S500 correspondent des
variables pr-dfinies nommes <dataxxxx>(xxxx allant de 1 1000).
Restitution des sorties de
lautomatisme
(sortie/consigne et information
dautomatisme S500)

FIN CYCLE
1.3 Syntaxe du langage ST
La cration dun programme dautomatisme ncessite de connatre la syntaxe du langage ST.
Un programme ST est une suite dinstructions. Les instructions dun programme sont excutes dans
lordre dapparition. Des structures de contrle permettent de modifier dynamiquement lordre
dexcution de ces instructions en fonction de conditions.











DBUT PROGRAMME
Instruction 1
Instruction 2
:
:
S500-doc_09-AUTO - 6 -

FIN PROGRAMME
:
:
Instruction n

S500-doc_09-AUTO - 7 -

Automatismes ST

1.3.1 Instructions
Une instruction se termine obligatoirement par un point-virgule : ;
Les instructions sont construites partir de variables, de constantes, de fonctions et doprateurs.
En rgle gnrale, il ny a pas de distinction entre les lettres minuscules et majuscules.
1.3.1.1 Affectation
Laffectation dune valeur une variable se fait laide de loprateur := .
Variable := Expression ;
Exemple : data3 := data1 + data2 ;
La variable et lexpression doivent avoir le mme type : logique/boolen, numrique/rel, entier
(Cf 1.3.4 pour la dfinition des types de variables). Si ncessaire, il est possible dutiliser des
fonctions de conversion de type (cf 4.3.3).

1.3.1.2 Parenthses
Il est vivement conseill dutiliser les parenthses pour simplifier la lecture dune expression
complexe.
Sans parenthse, lordre dvaluation par dfaut pour les oprateurs du langage ST est le
suivant :
1 Ngation NOT
2 Multiplication, Division * /
3 Addition, Soustraction +-
4 Comparaisons <> <= >= = <>
5 ET boolen AND
6 OU boolen OR
7 OU exclusif XOR

Exemple : data4 := (data1 + data2) data3 ;

1.3.1.3 Commentaires
Des commentaires de longueur variable peuvent tre insrs nimporte o dans un programme ST.
Un commentaire dbute par les caractres ( et se termine par ) .
Toute ligne commenant par // est considre comme une ligne de commentaires.
Dans lditeur, les commentaires sont affichs en vert.
Exemples :

(* Exemple de commentaire
sur plusieurs lignes*)

// Autre exemple de commentaires saisis sur une seule ligne.

Automatismes ST
1.3.1.4 Appel de fonction
Les fonctions permettent de raliser des traitements simples. Chaque fonction retourne une
valeur de sortie unique qui dpend uniquement des valeurs de ses paramtres dentre.
Les constantes ou les variables utilises lors de lappel de la fonction doivent tre du type
autoris par la fonction (cf. 1.3.4 pour la dfinition des types de variables et, si ncessaire,
le 4.3.3 pour lutilisation des fonctions de conversion).
Il existe des fonctions dfinies dans la norme IEC1131-3 et dautres, dveloppes par
SOFREL, spcifiques au mtier de la Tlgestion.
Les fonctions disponibles sont dcrites dans le 4 de ce chapitre.
Exemple : data3 := SIN (data1);

1.3.1.5 Appel de bloc fonctionnel
Les blocs fonctionnels permettent de raliser des traitements ncessitant la mmorisation
dinformations. Un bloc fonctionnel peut possder plusieurs paramtres dentre et plusieurs
paramtres de sortie.
Les constantes ou les variables utilises lors de lappel dun bloc fonctionnel doivent tre du
type autoris par le bloc fonctionnel (cf. 1.3.4 pour la dfinition des types de variables et, si
ncessaire, le 4.2 pour lutilisation des fonctions de conversion).
Il existe des blocs fonctionnels standard dfinis dans la norme IEC1131-3 et dautres,
dvelopps par SOFREL, spcifiques au mtier de la Tlgestion. Les diffrents blocs
fonctionnels standard sont dcrits dans le 5 de ce chapitre.

1.3.2 Structures de contrle dun programme
Instruction de test
Premire forme : IF (c ) THEN ondition boolenne
liste d'instructions ;
END_IF ;
Deuxime forme :
IF (condition boolenne) THEN
liste d'instructions 1 ;
ELSE
liste d'instructions 2 ;
END_IF ;


Troisime forme :
IF (c ) THEN ondition boolenne 1
liste d'instructions 1 ;
ELSIF (condition boolenne 2)
THE N
d'instructions 2 ; liste
...
ELSIF (condition boolenne k)
THEN
liste d'instructions k ;
ELSE
liste d'instructions k+1 ;
END_IF ;






S500-doc_09-AUTO - 8 -


Automatismes ST

Instruction de slection :

E CAS (expression entire) OF
constante
1
, constante
2
, ... :
liste d'instructions 1 ;
constante
a
, constante
b
, ... :
liste d'instructions 2 ;
...
Constante
x
, constante
y
, ... :
liste d'instructions k ;
ELSE
liste d'instructions k+1 ;
END_CASE ;
Exemple : (* contrle les nombres premiers dans une liste de 0 6*)
CASE iNumber OF







ELSE
Alarm := TRUE;
AlarmText := 'I don't know after 6 !';
END_CASE;
0 :
Alarm := TRUE;
AlarmText := '0 gives no result';
1, 3, 5 :
bPrime := TRUE;
4, 6 :
bPrime := FALSE;









Itrations (excution dune boucle)
Boucle <Tant que> :

On commence par valuer la condition. Si elle est vraie, on effectue la liste
dinstructions. Puis on recommence. Lorsque la condition devient fausse, on sort de
la boucle.
Boucle <Rpter> :

On commence par effectuer la liste dinstructions. Puis on value la condition. Si elle
est vraie, on sort de la boucle, sinon on recommence.
WH nne) DO ILE (condition boole
ctions ; liste d'instru
END_WHILE ;
REPEAT
liste d'instructions ;
UNTIL (condition boolenne)
END_REPEAT ;
FO MIN TO MAX BY PAS DO R variable entire :=
tructions ; liste d'ins
END_FOR ;
Boucle <Pour> :


La liste dinstructions sexcute : de la variable MIN la variable MAX . A chaque
excution de la liste dinstructions, la variable sincrmente du P

AS ; MIN, MAX
et PAS sont des expressions entires (constantes, variables, ).
S500-doc_09-AUTO - 9 -


Automatismes ST
1.3.3 Variables
1.3.3.1 Dfinition des variables
Les variables sont :
soit des informations du poste local S500 :
Entres logiques,
Entres numriques
Sorties logiques : toutes les sorties logiques et les variables logiques de type
Automatismes ,
Sorties numriques : toutes les sorties numriques, les entres numriques de
type Compteurs et les variables numriques de type Automatismes .
Les informations S500 correspondent des variables dautomatisme prdfinies
nommes <dataxxxx>(xxxx correspondant au numro dinformation de 1 1000).
soit des variables internes lautomatisme,
1.3.3.2 Liste des variables
Groupe de variables Contenu
Variables globales Variables internes connues de tous les programmes
Variables mmorises Variables internes connues de tous les programmes et qui
conservent leurs valeurs lors dune rinitialisation simple de
S500
Programme nx Variables locales au programme : ces variables sont
connues uniquement par le programme dans lequel elles
ont t dclares.
Blocs fonctionnels Variables locales et paramtres dentres-sorties dun bloc
fonctionnel
Entres logiques
Informations dentres-sorties de S500
Sorties logiques
Entres numriques
Sorties numriques
Les variables utilises dans les programmes doivent tre dabord dclares dans
lditeur de variables sauf celles correspondant aux informations S500 qui sont
automatiquement cres lors du lancement de latelier dautomatismes.
1.3.3.3 Fentre variable
Exemple : pour crer une variable globale partir de la fentre Liste des variables :

CD
sur Variable globale et choisissez Ajouter une variable

Valeur que prendra la variable
chaque dmarrage de
lapplication Automatismes ST
S500-doc_09-AUTO - 10 -


S500-doc_09-AUTO - 11 -

Automatismes ST

1.3.4 Types de variables ou de constantes
Les informations S500 sont de type :
BOOL pour les informations logiques,
REAL les informations numriques.

its)
pour
Taille
Type Description
(b
Remarques
BOOL Boolen 1 TRUE pour une information/variable active
FALSE pour une information/variable inactive
REAL Rel 32
).
ut tre utiliss pour spcifier un exposant :
Les constantes relles doivent inclure un point comme sparateur
dcimal : 3.0 par exemple (ceci afin de les diffrencier des entiers
Le caractre E pe
3.0
E
10 par exemple.
DINT Entier sign 32 -2147483648 +2147483647
Exemple de notation : 125 en dcimal peut scrire :
2#01111101 en binaire.
16#7D en hexadcimal,

TIME Dure mps doit tre prfixe par T#.

valeur maximale de cette variable est 23h59m59s.
utes et 10 secondes.
Une constante de te
Elles sexpriment :
par un nombre dheures suivi de h ,

un nombre de secondes suivi de s ,
un nombre de minutes suivi de m ,
et un nombre de millisecondes suivi de ms .
Lordre des units (heures, minutes, secondes, millisecondes) doit tre
respect. La
Exemples :
T#1h4m10s pour 1 heure, 4 min
T#15m pour 15 minutes.
T#25ms pour 25 millisecondes.
STRING
caractres

rsenter un
imable dans une chane :
re exprim sous forme
de 2 digits hexadcimaux
Chane de Taille infrieure 255 caractres
Ces constantes doivent tre crites entre apostrophes (.....).
Les squences suivantes peuvent tre utilises pour rep
caractre spcial ou non impr

$ une apostrophe
$$ un caractre $

$R un retour chariot
$T une tabulation

$L un saut de ligne
uivi dun saut de ligne
$P un saut de page
$xx code ASCII de tout caract
$N un retour chariot s

Bloc
fonctionnel
Dclaration des blocs fonctionnels utiliss (cf. 5 de ce chapitre)


lement limites que par la taille
ste local :
255 programmes dautomatisme.
Les capacits de lautomatisme ne sont rel
mmoire que peut grer le po
65535 variables,

Automatismes ST

1.4 Fonctionnalits avances
1.4.1 Gestion des temporisations
En langage ST, il est possible de grer simplement des temporisations en dclarant une variable de
type TIME.
Dans un programme :
linstruction TSTART (nom de variable) permet de dmarrer la temporisation,
une instruction de test (IF, THEN, ELSE, END_IF) permet de vrifier lchance de la
temporisation,
linstruction TSTOP (nom de variable) permet darrter la temporisation.
Exemple : Automatisation de la marche dune pompe pendant 20 minutes et de
larrt pendant 10 minutes.
Information Description Origine Correspondance variable dautomatisme
N 1 Commande pompage Bornier DO Sortie logique : data3

Dclaration dune variable type TIME.
Nom de la variable : timer
TSTART (timer)


S500-doc_09-AUTO - 12 -


S500-doc_09-AUTO - 13 -

Automatismes ST
1.4.2 Utilisation des dfinitions globales ou locales
1.4.2.1 Principe
Une dfinition est un identificateur unique qui peut tre utilis dans les programmes pour
remplacer un autre texte. Les dfinitions sont typiquement utilises pour remplacer une
expression constante et faciliter la lecture et la maintenance des programmes.
Il y a 2 niveaux de dfinitions :
Globales tous les programmes ; elles peuvent tre dites partir du menu
Outils de la fentre Liste des programmes .
Locales un programme ; elles peuvent tre dites partir du menu Outils de la
fentre dition du programme .

Chaque dfinition doit tre entre sur une ligne de texte selon la syntaxe suivante :
Dfinition = Texte remplacer (* commentaire *)
Exemple :
PI = 3.14 (* constante numrique *)
NOMBRE_DE_POMPES = 4 (* nombre de pompes gres *)
Il est possible dutiliser une dfinition dans le contenu dune autre dfinition. La
dfinition utilise dans lautre doit tre dclare en premier.
Exemple :
PI = 3.14 (* constante numrique *)
2PI = (PI * 2.0) (* 2 fois la constante numrique PI *)
Les dfinitions sont aussi trs pratiques pour rendre un programme indpendant
rties dataxxxx de lautomatisme S500.
E
COMMANDE_POMPAGE = data5

1.4.3 Importation / Exportation de programmes et de blocs fonctionnels spcifiques
s blocs fonctionnels spcifiques, dvelopps par
SOFREL et rpondant des besoins particuliers.
Exemples :
dun dbit moyen,
etc.
rire ses propres blocs fonctionnels et les exporter pour les mettre
disposition dautres utilisateurs.
des variables dentres-so
xemple :
Volume_cuve = data45
Niveau_bache = data9
Latelier dautomatismes ST permet dimporter de

Permutations dactionneurs,
Calcul
Un utilisateur peut galement c

S500-doc_09-AUTO - 14 -

Automatismes ST

De mme, latelier dautomatismes ST permet dimporter des programmes complets raliss par
SOFREL.
Exemples :
Dtection dintrusion,
Commande dclairage via lhorloge astronomique,
etc.
Un utilisateur peut, de la mme faon, exporter les programmes quil a cr pour les mettre
disposition dautres utilisateurs.
Diffrence entre un bloc fonctionnel et un programme :
un bloc fonctionnel dispose de paramtres dentres et de sorties, et son
utilisation ncessite lcriture dun programme ST dans lequel il sera utilis.
un programme est directement utilisable sans connaissance particulire du
langage ST ; il suffit de modifier les dfinitions locales du programme pour les
associer aux informations dentres-sorties du poste local S500.

1.4.4 Suivi de fonctionnement
Lutilisateur peut ajouter, dans les programmes dautomatisme, des appels de fonctions permettant
dafficher des messages textes et numriques dans une fentre de journal de fonctionnement des
automatismes ST. Ce suivi est accessible par lintermdiaire du Navigateur (en connexion locale ou
distante via SOFTOOLS).
Cette fonction permet le suivi visuel du bon droulement du programme.
Attention, toutefois, lutilisation excessive de messages dans un programme
qui peut augmenter de manire significative son temps de cycle.
Pour plus dinformations, reportez-vous au 4.4.2 o les fonctions de suivi SFMONMSG et
SFMONSUI sont dcrites.
En mode simulation, les messages de suivi sont affichs dans la fentre Journal .

1.4.5 Particularits de fonctionnement
1.4.5.1 Dtection de lexcution dun automatisme en boucle
Dans le cas o lensemble des programmes dautomatisme ne sexcute pas correctement,
le logiciel S500 redmarre automatiquement sans lapplication Automatismes ST .
Un message signalant ce dysfonctionnement est alors archiv dans le journal de diagnostic
et S500 active alors automatiquement les informations internes Dfaut systme et
Chien de garde . Dans ce cas, il est ncessaire de modifier la configuration du poste local
et de recharger lautomatisme S500 avec SOFTOOLS.
1.4.5.2 Dure des temps de cycles dpasse
En cas de dpassement de tous les temps de cycle conscutifs pendant une minute, deux
messages Apparition Dfaut systme et Temps de cycle automatisme trop long
signalant ce dysfonctionnement sont alors archivs dans le journal de diagnostic et S500
active alors automatiquement linformation Dfaut systme .
La prsence dune carte DO-Wdg permet de scuriser les installations en activant un
automatisme dgrad sur dtection dun dfaut (cf. Utilisation des informations).

Automatismes ST
2 Conception dun programme
2.1 Organisation
La conception dun programme dautomatisme ncessite de respecter les tapes suivantes :
1. Analyse du besoin fonctionnel (algorithme),
2. dition des programmes et dclaration des variables,
3. Construction (Compilation),
4. Simulation sur le PC,
5. Mise au point (Debugger) au niveau du poste local,
6. Chargement des programmes dans S550.

2.2 Analyse du besoin fonctionnel
Cette phase consiste laborer sur papier une solution automatise pour rpondre au problme
pos.
Exemple : Remplissage automatique dun rservoir suivant
2 seuils (Min. et Max. ) sur une mesure de niveau.

La pompe est dmarre ds que le niveau descend en dessous de 1 mtre.
Elle est arrte ds que le niveau deau atteint 5 mtres.
Information Description Origine Correspondance variable dautomatisme
N 4 Niveau rservoir 1 Bornier AI Entres numriques : data4
N 3 Commande pompage Bornier DO Sortie logique : data3

data3 : Commande pompage
5 m





1 m
data4 : Niveau rservoir 1


Algorithme de remplissage :
SI niveau infrieur 1 mtre, ALORS Marche de la pompe,
SI niveau suprieur ou gal 5 mtres, ALORS Arrt de la pompe.
S500-doc_09-AUTO - 15 -


Automatismes ST
2.3 dition et dclaration des variables
2.3.1 Dclaration des variables
Dans lexemple prcdent, seules les variables data4 et data3 sont ncessaires. Ces variables
correspondant directement des informations de S500, elles sont automatiquement dclares.

2.3.2 dition du programme
A partir de la fentre Liste des programmes ,
CG
sur le menu Fichier - Nouveau ou
Fichier Ouvrir pour diter le programme souhait.


2.3.3 Protection du programme
Il est possible de protger un programme en
CD
sur son nom et en modifiant ses Proprits :

Cochez la case Protection pour viter quun
autre utilisateur ne puisse modifier le
programme. La saisie dun mot de passe de 1
6 caractres sera alors systmatiquement
demande chaque modification du programme
Lorsque la case Validation nest pas coche,
le programme dautomatisme ne peut tre
excut.

CD
sur la cl pour ter la protection
du programme.
S500-doc_09-AUTO - 16 -


Automatismes ST

CG sur ce bouton pour


vrifier la syntaxe du programme

dition du
programme
Il est possible de redimensionner cet espace pour
afficher le rsultat de la vrification de la syntaxe.
Rsultat

Pour faciliter la saisie des noms de variables, il est possible de procder un
Glisser Dplacer de la variable choisie, de la fentre variables vers la
fentre dition du programme .
2.4 Construction
Lors de la construction, les erreurs de syntaxe sont automatiquement dtectes.

DCG
sur lerreur positionne automatiquement le curseur sur lerreur
dans la fentre ddition du programme.



Une erreur pouvant en entraner une autre, il est conseill de corriger les erreurs
une une, partir de la premire.
Il est galement recommand de vrifier la syntaxe du programme au fur et
mesure de son dition.
S500-doc_09-AUTO - 17 -



Automatismes ST
2.5 Simulation
La simulation permet de tester le programme directement dans latelier. Il est possible partir de la
fentre variables ou espion de modifier nimporte quelle variable de manire vrifier le
comportement du programme.
Pour simuler le fonctionnement dun programme, il existe un mode cycle cycle qui permet
dexcuter le ou les programmes une seule fois, et de dtecter plus facilement les ventuelles erreurs.


Simulez le
programme
soit en mode
classique,
soit en mode
cycle cycle
(arrt toutes les
200 millisecondes).
Simulez la variation
dun niveau pour
dtection
automatique des
seuils.
S500-doc_09-AUTO - 18 -

Exemple de fentre ESPION :

Effectuez un
Glisser-Dplacer
pour mettre jour la
fentre Espion .
Espionnez que la
commande
pompage sactive
automatiquement
sur variation du
Niveau.

2.6 Chargement du programme
Lorsque le programme a t mis au point en simulation, il suffit de le charger dans le S500 en
effectuant une criture de configuration.
2.7 Mise au point sur le poste local (Debugger en ligne)
Pour une vrification finale, loutil Debugger peut tre utilis en connexion locale ou distante avec
le poste local, simplement en cliquant sur le bouton de la fentre principale (cf. 1.1.1. ).
Il permet ainsi de contrler lexcution des programmes ST en grant directement les entres-sorties
du poste local avec tous les traitements qui y sont effectus (temporisations, seuils, ).

S500-doc_09-AUTO - 19 -

Automatismes ST
3 Oprateurs
3.1 Arithmtique
3.1.1 + Addition de variables
Ex. : data5 := (data51 + data52) + data53;

3.1.2 Soustraction de variables
Ex. : data10 := data101 data102;

3.1.3 Multiplication de variables
Ex. : data10 := data101 * data102;

3.1.4 / Division de variables
Ex. : data10 := data101 / data102;

3.1.5 lvation la puissance dune variable
Ex. : data100:= data10**2.0;


3.2 Oprateurs boolens
3.2.1 AND ET boolen entre variables boolennes
Ex. : data10 := data101 AND data102;

3.2.2 OR OU boolen entre variables boolennes
Ex. : data5 := data51 OR data52;

3.2.3 XOR OU exclusif boolen entre variables boolennes
Ex. : data10 := data101 XOR data102;

3.2.4 NOT NON boolen : inversion dune variable boolenne
Ex. : data22 := NOT data101;


S500-doc_09-AUTO - 20 -

Automatismes ST
3.3 Oprateurs de comparaisons
Ces oprateurs permettent de comparer des variables ou des constantes entre elles. Le rsultat de
cette comparaison est une valeur boolenne :
TRUE si la comparaison est vraie,
FALSE si la comparaison est fausse.

3.3.1 < Infrieur : teste si une valeur est plus petite quune autre
(valeurs relles, valeurs entires, temporisations)
Ex. : data1 := (data2 < 5.0);
(* data1 is TRUE if data2 < 5 *)
3.3.2 <= Infrieur ou gal : teste si une valeur est plus petite ou gale une autre
(valeurs relles, valeurs entire, temporisations)
Ex. : data1 := (data2 <= 5.0);
(* data1 is TRUE if data2 < 5 *)
3.3.3 = gal : teste si une valeur est gale une autre
(valeurs relles, valeurs entire, chanes de caractres)
Ex. : data1 := (data2 = 5.0);
(* data1 is TRUE if data2 = 5 *)
3.3.4 <> Diffrent de : teste si une valeur est diffrente par rapport une autre
(valeurs relles, valeurs entire, temporisations ou chanes de caractres)
Ex. : data1 := (data2 <> data3);
(* data1 is TRUE if data2 data3 *)
3.3.5 > Suprieur : teste si une valeur est plus grande quune autre
(valeurs relles, valeurs entire, temporisations)
Ex. : data1 := (data2 > 5.0);
(* data1 is TRUE if data2 > 5 *)
3.3.6 >= Suprieur ou gal : teste si une valeur est plus grande ou gale une autre
(valeurs relles, valeurs entire, temporisations)
Ex. : data1 := (data2 >= 5.0);
(* data1 is TRUE if data2 > 5 *)

S500-doc_09-AUTO - 21 -

Automatismes ST
4 Fonctions
4.1 Dfinition
Les fonctions permettent de raliser des traitements simples. Chaque fonction retourne une valeur de
sortie unique qui dpend uniquement des valeurs courantes de ses paramtres dentre.
Les constantes ou les variables utilises lors de lappel de la fonction doivent tre du type autoris par
la fonction, sinon il est ncessaire dutiliser les fonctions de conversion de type. Il existe des fonctions
dfinies dans la norme IEC1131-3 et dautres, dveloppes spcifiquement par SOFREL pour le
mtier de la Tlgestion.
4.2 Utilisation dune fonction
Syntaxe: <retour>:=<nom de la fonction>(<parametre1>, , <parametreN>);
Ex. : data3 := SIN (data1);
4.3 Fonctions standard ST
4.3.1 Fonctions mathmatiques
4.3.1.1 ABS Calcul de la valeur absolue dun rel
Entre IN REAL
Sortie Q REAL valeur absolue
Ex. : value := ABS (delta);
4.3.1.2 ACOS Calcul de larc cosinus dun rel
Entre IN REAL (toute valeur dans lintervalle [-1.0 +1.0])
o t S r ie Q REAL arc cosinus de la valeur dentre dans lintervalle [0.0 PI]
ur une entre invalide
Ex. : result := ACOS (data1);
4.3.1.3 ASIN Calcul de larc sinus dune valeur relle
=0.0 po
Entre IN REAL (toute valeur dans lintervalle [-1.0 +1.0])
Sortie Q
+PI/2] =0.0 pour une entre invalide
Ex. : result := ASIN (data1);
REAL arc sinus de la valeur dentre dans lintervalle
[-PI/2

S500-doc_09-AUTO - 22 -

Automatismes ST

4.3.1.4 ATAN Calcul de larc tangente dune valeur relle
Entre IN REAL
Sortie Q REAL arc sinus de la valeur dentre dans lintervalle
[-PI/2 +PI/2] =0.0 pour une entre invalide
Ex. : result := ATAN (data1);
4.3.1.5 COS Calcul du cosinus dune valeur relle
Entre IN REAL (toute valeur ) relle
Sortie Q REAL cosinus de la valeur dentre dans lintervalle [-1.0 +1.0]
Ex. : result := COS (angle);
4.3.1.6 EXPT lvation une puissance (exposant entier)
Entre IN REAL nombre rel lever la puissance
EXP DINT puissance (exposant entier)
Sortie Q REAL IN puissance EXP
1.0 si IN est diffrent de 0.0 et EXP est gal 0.0
0.0 si IN est gal 0.0 et EXP est ngatif
t EXP sont gaux 0.0
Ex. : result := EXPT (value, 3);
4.3.1.7
1.0 si IN e
LOG Calcul logarithmique base 10 dune valeur relle
Entre IN REAL toute valeur suprieure 0
Sortie Q REAL logarithme (base 10) de la valeur dentre
Ex. : result := LOG (data5);
4.3.1.8 POW lvation une puissance (exposant rel)
Entre IN REAL nombre analogique rel lever
EXP REAL puissance (exposant rel)
Sortie Q REAL IN puissance EXP
1.0 si IN est diffrent de 0.0 et EXP est gal 0.0
t gal 0.0 et EXP est ngatif
1.0 si IN et EXP sont gaux 0.0
Ex. : result := POW (value, 3.0);
0.0 si IN es

S500-doc_09-AUTO - 23 -

Automatismes ST

4.3.1.9 RAND Valeur alatoire dans un intervalle donn
Entre IN DINT dfinit lintervalle de valeurs autorises
Sortie Q DINT valeur alatoire dans lintervalle [0 base-1]
Ex. : variable := RAND (4);
(* slection alatoire dune valeur parmi 4 valeurs prdfinies. La valeur issue
de lappel RAND est un nombre entier dans lintervalle [0 3] *)
4.3.1.10 SIN Calcul du sinus dune valeur relle
Entre IN REAL toute valeur relle
Sortie Q REAL sinus de la valeur dentre dans lintervalle [-1.0 +1.0]
Ex. : result := SIN (angle);
4.3.1.11 SQRT Calcul de la racine carre dune valeur relle
E t n r e IN REAL toute valeur suprieure ou gale 0
(si IN est infrieur 0, Q =0)
Sortie Q REAL racine carre de la valeur dentre
Ex. : result := SQRT (32400.00);
4.3.1.12 TAN Calcul de la tangente dune valeur relle
Entre IN REAL diffrent de PI/2 modulo PI
Sortie Q REAL tangente de la valeur dentre
Ex. : result := TAN (angle);
4.3.1.13 tie entire TRUNC Tronque une valeur relle pour obtenir sa par
Entre IN REAL toute valeur relle signe
Sortie Q REAL si IN>0, plus grand entier infrieur ou gal IN
ntier suprieur ou gal IN
Ex. : result := TRUNC (+2.67) + TRUNC (-2.0891);
si IN<0, plus petit e
(* result := 2.0 + (-2.0) := 0.0; *)

S500-doc_09-AUTO - 24 -

Automatismes ST
4.3.1.14 I LIM T Limite une valeur entire un intervalle donn
La variable conserve sa valeur si elle est entre le minimum et le maximum. La variable est
nimum (si elle est en
Entre
force la valeur maximale (si elle est au dessus), ou force au mi
dessous).
MIN DINT valeur minimum autorise
IN DINT valeur entire contrler
MAX DINT valeur maximale autorise
Sortie Q DINT valeur limite la plage autorise
Ex. : new_value := L IMIT (mini, value, maxi);
(* limite la valeur lintervalle [mini - maxi] *)
4.3.1.15 MIN Fonction Minimum : donne la valeur minimum entre deux variables entires
Entre IN1 DINT toute valeur entire
IN2 DINT
Sortie Q DINT valeur minimale entre les 2 variables dentre
4.3.1.16 MAX Fonction Maximum : donne la valeur maximale entre deux variables entires
Ex. : new_value := MIN (value 1, value 2);
Entre IN1 DINT toute valeur entire
Sortie
IN2 DINT
Q DINT valeur maximale entre les 2 variables dentre
4.3.1.17 MOD Fonction Modulo : calcule le reste de la division dune valeur entire
Ex. : new_value := MAX (value 1, value 2);
Entre IN DINT toute valeur entire
Base DINT (Base est le diviseur

>0)
Sortie Q DINT rsultat du modulo (rend -1 si Base infrieur ou gal 0)
4.3.1.18 ODD Fonction Test dimparit dun entier
Ex. : new_value := MOD (value, divisor);
(* rest of division *)
Entre IN DINT toute valeur entire
Sortie Q BOOL TRUE si la valeur est impaire FALSE si la valeur est paire
Ex. : (* if value = odd *)
IF (ODD (value)) THEN value := value + 1;
END_IF;

S500-doc_09-AUTO - 25 -

Automatismes ST
4.3.2 Fonctions de manipulation de caractres

4.3.2.1 ASCII Code ASCII dun caractre dans une chane
Entre IN STRING chane de caractres non vide
Pos DINT position du caractre slectionn dans [1 long]
long tant la longueur de la chane de caractres IN.
Sortie Code DINT code du caractre slectionn dans lintervalle [0 255]
retourne 0 si Pos nest pas dans la chane
Ex. : First_character := ASCII (string, 1);
(* First_character is code ASCII of the first character of the string *)

4.3.2.2 laboration dun caractre partir de son code ASCII CHAR
Entre Code DINT code ASCII dans lintervalle [0 255]
Sortie Q STRING chane dun caractre le caractre a le code ASCII
spcifi dans Code : le code ASCII est pris modulo 256.
+ 48 );
48 is code ASCII of 0
the result is a string of one character [0 to 9] *)

4.3.2.3 a
Ex. : Result := CHAR ( value
(* value is in interval [0 to 9]
DELETE Suppression dune partie dune chane de car ctres
Entre IN STRING chane de caractres
NbC DINT nombre de caractres supprimer
Pos DINT position du premier caractre supprimer
Sortie Q

i Pos >longueur de la chane IN
chane initiale si NbC <=0
Ex. :
);
new_string := ABGH;
(* delete 4 characters from third position *)
STRING chane modifie
chane vide si position <1
chane initiale s

complete_string := ABCD + EFGH;
(* = ABCDEFGH *)
new_string := DELETE (complete_string, 4, 3

S500-doc_09-AUTO - 26 -

Automatismes ST
4.3.2.4 FIND Recherche des caractres dans une chane
Entre IN STRING chane de caractres
Pat STRING toute chane non vide
Sortie Pos DINT =0 si sous chane Pat non trouve
=position du premier caractre de la premire occurrence
de la chane Pat (cette fonction diffrencie les
majuscules des minuscules)
Ex. : complete_string := ABCD + EFGH;
(* = ABCDEFGH *)
dataposition := FIND (complete_string, CDEF);
(*dataposition := 3 *)
4.3.2.5 INSERT Insertion de caractres dans une chane
Entre IN STRING chane initiale
Str STRING chane de caractres insrer
Pos DINT position de linsertion (avant la position donne)
Sortie Q
os est plus grand
N
Ex. UPONT, Frank , 4);
(* = Mr Frank DUPONT *)
4.3.2.6 LEFT Extraction de la partie gauche dune chane
STRING chane vide si Pos <=0
concatnation des 2 chanes si P
que la longueur de la chane I
: My_name := INSERT (Mr D
Entre IN STRING chane de caractres non vide
NbC DINT nombre extraire (infrieur la longu r de la ch
Sortie
eu ane)
Q
C >=longueur de la chane IN
Ex. : := LEFT (12345678, 4);
4.3.2.7
STRING partie gauche de la chane IN
chane vide si Nbc <=0
chane IN initiale si Nb
complete_string
(* = 1234 *)
MID Extraction de la partie centrale dune chane
Entre In STRING chane de caractres
NbC DINT nombre extraire (infrieur la longueur de la chane)
Pos DINT position du premier caractre extraire
Sortie Q
<=0
chane IN initiale si NbC >=longueur de la chane IN
Ex. : new_string := MID (abcdefgh, 2, 4);
(* = de *)
STRING partie centrale de la chane (sa longueur =NbC)
chane vide si Nbc


S500-doc_09-AUTO - 27 -

Automatismes ST

4.3.2.8 MLEN Calcul de la longueur dune chane
Entre IN STRING chane de caractres
Sortie NbC DINT nombre de caractres dans la chane IN
Ex. : number_characters := MLEN (complete_string);
IF (number_characters >= 3) THEN
prefix := LEFT (complete_string, 3);
END_IF;
(* this program extract the 3 characters at the left of the string and put the
result in the variable prefix *)
4.3.2.9 REPLACE Remplacement des caractres dans une chane
Entre IN STRING chane de caractres
STR STRING chane contenant les caractres insrer
NbC DINT nombre de caractres dtruire
Pos DINT lac

position du premier caractre remp
Sortie Q STRING chane modifie : (NbC caractres sont dtruits partir
de Pos et la chane STR est insre cette position
- rend une chane vide si Pos <=0
- rend la concatnation des chanes (IN+STRING
si Pos est suprieur la longueur de c
)
)
hane IN
0
Ex. dier, 1, 4);
(* Mr Didier DUPONT *)

4.3.2.10 RIGHT Extraction de la partie droite dune chane
- rend la chane initiale IN si NbC <=
: My_name := REPLACE (Mr X DUPONT, Di
Entre IN STRING chane de caractres
NbC DINT nombre de caractres extraire
Sortie Q
>=longueur de la chane IN
Ex. : ing := RIGHT (12345678, 4);
(* 5678 *)
STRING partie droite de la chane IN (sa longueur =NbC)
- chane vide si NbC <=0
- chane IN initiale si NbC
complete_str

S500-doc_09-AUTO - 28 -

Automatismes ST
4.3.3 Fonctions de conversion

4.3.3.1 BOO Conversion en variable boolenne
Entre IN
Sortie Q BOOL TRUE pour une valeur entire ou relle non nulle
FALSE pour une valeur nulle
Ex. : result := BOO (10);
(* result = TRUE *)
4.3.3.2 ANA Conversion en valeur entire
Entre IN
Sortie Q
isecondes
r un rel : partie entire
Ex. : RUE);
Ex. : ;
(* result = 198 *)
4.3.3.3 REAL Conversion en variable relle
DINT Pour un boolen : 0 pour FALSE / 1 pour TRUE
Pour une temporisation : nombre de mill
Pou
result := ANA (T
(* result = 1 *)
result := ANA (0198)
Entre IN
Sortie Q
ur une temporisation : nombre de millisecondes
Ex. : e);
Ex. : ;
(* result = 198.00 *)
REAL Pour un boolen : 0.0 pour FALSE / 1.0 pour TRUE
Pour un entier XXX : ajout de la partie dcimale XXX.00
Po
result := REAL (tru
(* result = 1.0 *)
result := REAL (198)

S500-doc_09-AUTO - 29 -

Automatismes ST

4.3.3.4 MSG Conversion en variable de type STRING
Entre IN
Sortie Q STRING Pour un boolen : FALSE ou TRUE
Ex. : result := MSG (true);
(* result = TRUE *)
Ex. : result := MSG (125);
(* result = 125 *)
Ex. : result := MSG (125.851);
(* result = 125.85 *)

4.3.3.5 TMR Conversion en variable de type TIME
Entre IN
Sortie Q TIME nombre de millisecondes (temps reprsent par IN)
Ex. :
(* result = t#1s256ms *)
result := TMR (1256.3);

Automatismes ST
4.3.4 Fonctions de registres
4.3.4.1 AND_MASK Masque ET bit bit entre deux entiers
Entre IN DINT (format entier)
MSK DINT (format entier)
Sortie Q DINT ET logique bit bit entre IN et MSK
Ex. :result := AND_MASK (16#abc, 16#f0f);
(* result = 16#a0c *)
4.3.4.2 NOT_MASK Masque inversion logique bit bit dun entier
Entre IN DINT (format entier)
Sortie Q DINT inversion logique bit bit de IN (sur 32 bits)
Ex. :
(* result hexa = 16#FFFF_EDCB *)
4.3.4.3 OR_MASK Masque OU
result := NOT_MASK (16#1234);
bit bit entre deux entiers
Entre IN DINT (format entier)
MSK DINT (format entier)
Sortie Q DINT OU logique bit bit entre IN et MSK
Ex. : SK (value, 1);
Ex. :
4.3.4.4 ROL Rotation gauche des bits dun entier
is_odd := OR_MA
(* always odd *)
result := OR_MASK (16#abc, 16#f0f);
(*result hexadecimal = 16#fbf *)

Entre IN DINT (toute valeur entire)
31]) NBR DINT (nombre de rotations de 1 bit dans lintervalle [1
Sortie Q DINT valeur dcale gauche (sans effet si NBR <=0)
Ex. :
result := ROL (regist, 1);
(* result = 2#1001_1010_0110_1010*)
regist = 2#0100_1101_0011_0101
S500-doc_09-AUTO - 30 -


Automatismes ST

4.3.4.5 ROR Rotation droite des bits dun entier

Entre IN DINT (toute valeur entire)
NBR DINT (nombre de rotations de 1 bit dans lintervalle [1 31])
Sortie Q DINT valeur dcale droite (sans effet si NBR <=0)
Ex. : regist = 2#0100_1101_0011_0101
result := ROR (regist, 1);
(* result = 2#1010_0110_1001_1010 *)
4.3.4.6 SHL Dcalage gauche des bits dun entier

Entre IN DINT (toute valeur entire)
NBS DINT (nombre de dcalages de 1 bit dans lintervalle [1 31])
Sortie
S500-doc_09-AUTO - 31 -

Q <=0)
e le bit de poids faible
Ex. 1_0101
(* result = 2#1001_1010_0110_1010 *)
4.3.4.7 SHR Dcalage droite des bits dun entier
DINT valeur dcale gauche (sans effet si NBS
la valeur 0 remplac
: regist = 2#0100_1101_001
result := SHL (regist, 1);
Entre IN DINT (toute valeur entire)
NBS DINT (nombre de dcalages de 1 bit dans lintervalle [1
Sortie
31])
Q
est recopi chaque dcalage
Ex. :
(* result = 2#0010_0110_1001_1010 *)
4.3.4.8
DINT valeur dcale droite (sans effet si NBS <=0)
le bit de poids fort
regist = 2#0100_1101_0011_0101
result := SHR (regist, 1);
XOR_MASK Masque OU exclusif bit bit entre deux entiers
Entre IN DINT
Sortie
MSK DINT
Q DINT (OU exclusif logique bit bit entre IN et MSK)
Ex. : result := XOR_MASK (16#012, 16#011);
(* result hexa = 16#003 *)

S500-doc_09-AUTO - 32 -

Automatismes ST
4.3.5 Fonctions de slecteurs
4.3.5.1 MUX4 Slection dune valeur parmi 4 valeurs entires
Entre SEL DINT valeur entire de slection dans lintervalle [0 3]
IN1 IN4 DINT valeurs entires slectionner
Sortie Q DINT =IN1 si SEL =0
=IN2 si SEL =1
=IN3 si SEL =2
=IN4 si SEL =3
=0 pour toutes les autres valeurs de SEL
Ex. : selection := MUX4 (choice, 1, 10, 100, 1000);
(* select 1 value among 4 : if choice = 1, select = 10 *)
4.3.5.2 MUX8 Slection dune valeur parmi 8 valeurs entires
Entre SEL DINT valeur entire de slection dans
IN8
lintervalle [0 7]
ctionner IN1 DINT valeurs entires sle
Sortie Q
Ex. : 5000);
(* select 1 value among 8 : if choice = 3, select = 50 *)
4.3.5.3 SEL Slection dune valeur parmi 2 valeurs entires
DINT =IN1 si SEL =0
=IN2 si SEL =1
=IN8 si SEL =7
=0 pour toutes les autres valeurs de SEL
selection := MUX8 (choice, 1, 5, 10, 50, 100, 500, 1000,
Entre SEL BOOL indique la valeur choisie
IN1, IN2 DINT valeurs slectionner
Sortie Q DINT =IN1 si SEL =FALSE =IN2 si SEL =TRUE
Ex. : );
(* select a command for the process *)
selection := SEL (choice, value1, value2

S500-doc_09-AUTO - 33 -

Automatismes ST
4.3.6 Fonctions de tableaux
4.3.6.1 ARCREATE Cration dun tableau dentiers
Entre ID DINT identificateur du tableau (dans lintervalle [0 15])
SIZE DINT nombre dlments du tableau crer
Sortie ok DINT compte rendu dexcution :
- 1 =si le tableau a t cr avec succs
- 2 =identificateur invalide ou tableau dj cr
- 3 =taille invalide
- 4 =pas assez de mmoire
Ex. : status := ARCREATE (ident, 20);
4.3.6.2 ARREAD Lecture dune valeur dans un tableau
Entre ID DINT identificateur du tableau (dans lintervalle [0 15])
Pos DINT position de llment dans lintervalle [0 size-1]
Sortie ok DINT valeur de llment lu (0 si les arguments sont invalides)
Ex. : read_value := ARREAD (ident, index);
4.3.6.3 ARWRITE criture dune valeur dans un tableau dentiers
Entre ID DINT identificateur du tableau (dans lintervalle [0 15])
Pos DINT position de llment dans linte

rvalle [0 size-1]
IN DINT nouvelle valeur pour llment
Sortie ok
au invalide
s := ARWRITE (ident, index, value);
4.3.7 orisation
4.3.7.1 TSTART Dmarrage de la temporisation
DINT compte rendu dexcution :
- 1 =lcriture a russi
- 2 =identificateur de table
- 3 =indice (Pos) invalide
Ex. : write_statu
Fonctions de temp
4.3.7.2 TSTOP Arrt de la temporisation
La gestion des temporisations est dcrite prcdemment
au 1.4- Fonctionnalits avances .

S500-doc_09-AUTO - 34 -

Automatismes ST
4.4 Fonctions spcifiques SOFREL
4.4.1 Fonctions de temps
Les noms de jour utiliss dans lautomatisme sont toujours en anglais.
4.4.1.1 DAY_TIME Fourniture des date et heure courantes
Entre SEL DINT slection de linformation peut tre entier
0=date courante 1=heure courante 2=jour de la semaine
Sortie Q r s


nom du jour SEL =2 (ex: Monday)
Ex. : Date := DAY_TIME (0) + ; + DAY_TIME (1);
4.4.1.2 Lecture unitaire dune date sous forme dentier
STRING date/heure sous forme de chane de ca actre
AAAA/MM/J J si SEL =0
HH:MM:SS si SEL =1
SFTIMDAY
E t n r e TYPE DINT Valeur de la date ou de lh
- 0 : jour du mois ( - 1)
- 1 : mois (1-12)
- 2 : anne (0-2099)
- 3 : heure (0-23)
- 4 : minute (0-59)
- 5 : seconde (0-59)
eure lire :
1 3

imanche)

- 6 : jour de la semaine (1 : lundi, 7 : d
Sortie VAL DINT Valeur d
Ex. : Day := SFTIMDAY( 0 ) ;
Month := SFTIMDAY( 1 ) ;
Year := SFTIMDAY( 2 ) ;
emande sous forme dentier
Ret := MSG (month)+/+ MSG (year)) ;
our affecter cette valeur entire une variable numrique dautomatisme, il est
type REAL :

Exemple : data12 := REAL (SFTIMDAY(4)) ;
SFMONMSG (Today the + MSG (day)+/+
(* Give the current date for monitoring *)
P
ncessaire dutiliser la fonction de conversion de

S500-doc_09-AUTO - 35 -

Automatismes ST

4.4.2 Fonctions de traces dans le suivi
4.4.2.1 SFMONMSG Affichage dun message dans le suivi dautomatisme
Entre OPTION DINT Option dhorodatage du message :
- 0 : Pas dhorodatage
- 1 : Heure
- 2 : Date
- 3 : Date +Heure

IN STRING Chane afficher dans le suivi dautomatisme
Sortie Q BOOL Toujours TRUE
Ex. : result := SFMONMSG (0, Status of Input :+ MSG (data1));

4.4.2.2 SFMONSUI Affichage dun message dans le suivi dautomatisme
Grce cette fonction, il est possible dajouter des filtres qui permettront dafficher, dans le
menu Diagnostic Suivi des programmes ST du Navigateur, uniquement les messages
qui intressent lutilisateur :
Entre ID
PARAM1
PARAM2
T
ge

IN STRING Chane afficher dans le suivi dautomatisme
Sortie
STRING Chane de filtrage du suivi dautomatisme

DINT Entier de filtrage du suivi (si 0 pas de filtrage)

DINT Entier de filtrage du suivi (si 0 pas de filtrage)

OP ION DINT Option dhorodatage du message :
- 0 : Pas dhorodata
- 1 : Heure
- 2 : Date
- 3 : Date +Heure



Q BOOL Toujours TRUE
Ex. : result := SFMONSUI (state, 1,2,3, Status of Input :+ MSG (data1));

S500-doc_09-AUTO - 36 -

Automatismes ST
5 Blocs fonctionnels
5.1 Dfinition
Un bloc fonctionnel permet de raliser des traitements ncessitant la mmorisation des informations
manipules (par exemple, le bloc fonctionnel compteur permet dactiver un comptage jusqu une
valeur donne).
Le langage ST fournit de base un certain nombre de blocs fonctionnels. Lutilisateur peut aussi crer
ses propres blocs fonctionnels et des blocs fonctionnels mtier ont t spcifiquement dvelopps
par SOFREL.
Ce chapitre dcrit uniquement les blocs fonctionnels standard du langage ST.
Lutilisation des blocs fonctionnels et des programmes ST SOFREL est documente
dans des notes spcifiques disponibles via laide en ligne de SOFTOOLS.

5.2 Principe dutilisation

A la diffrence dune fonction ST qui ralise un calcul ne dpendant que de ses paramtres dentre,
un bloc fonctionnel ralise un calcul dpendant de ses paramtres dentres et des rsultats
prcdents de ses calculs.
Dautre part, un bloc fonctionnel peut disposer de plusieurs paramtres de sortie.
Exemple : le bloc fonctionnel TON qui incrmente une temporisation jusqu une
valeur donne.

- Paramtres dentre :
. un boolen qui, au passage ltat actif va dmarrer la
temporisation et la remet zro au passage ltat inactif,
. la valeur maximale de la temporisation.

- Paramtres de sortie :
. un boolen indiquant si la temporisation a atteint sa valeur
maximale,
. la valeur courante de la temporisation.

Dans lexemple ci-dessus, le bloc TON mmorise lui-mme ltat du boolen dentre afin den
dtecter le front montant ; il conserve en interne la valeur de la temporisation dun appel lautre afin
de dtecter son passage la valeur maximale.

Consquence de cette mmorisation : afin de permettre plusieurs utilisations du mme bloc
fonctionnel (par exemple : TON) dans un programme, il est ncessaire didentifier individuellement
chaque bloc fonctionnel TON. Cette identification est ralise en dclarant, pour chaque utilisation du
bloc fonctionnel, une variable particulire ayant, pour type , ce bloc fonctionnel.

S500-doc_09-AUTO - 37 -

Automatismes ST

5.2.1 Mode demploi dun bloc fonctionnel
5.2.1.1 Dclaration
A chaque fois que lon a besoin dutiliser un bloc fonctionnel, il faut le dclarer auparavant
en tant que variable Nom_variable (le type de la variable doit tre choisi dans la liste des
types de blocs fonctionnels).
5.2.1.2 Appel du bloc
La syntaxe dappel du bloc fonctionnel est la suivante :
Nom_variable (param_input1, param_input2, ..., param_inputN);
(* Rcupration des paramtres de sortie *)
<result1> := nom_variable.param_output1;
<result2> := nom_variable.param_output2;
Les paramtres dentre et les variables daffectation des paramtres de sortie doivent
respecter les types dfinis dans la description du bloc fonctionnel.

5.3 Exemple dutilisation dun bloc fonctionnel
TON : incrmente une temporisation jusqu une valeur donne
Paramtres dentre
IN BOOL si front montant, dmarre lincrment dune temporisation
si front descendant, arrte et remet 0 la temporisation
PT TIME temps maximal programm
Paramtres de sortie

ET TIME temps coul depuis le dmarrage
Q BOOL TRUE, si le temps maximal programm est coul

5.3.1 Cas dapplication
Surveiller les temps de fonctionnement de 2 pompes (P1/P2) :
Configurez les informations S500 DI-Borniers n 1 et 2 pour dtecter les mises en marche des
es n 101, 102
et 103 pour indiquer les dpassements de temps de fonctionnement des pompes :
et P2 fonctionnent simultanment pendant plus de 5 minutes,
activer data103.

pompes (data12 =Marche P1 et data13 =Marche P2).
Puis configurez les informations S500 de type Automatismes Variables logiqu
Si la pompe P1 est en marche pendant plus de 10 minutes, activer data101.
Si la pompe P2 est en marche pendant plus de 15 minutes, activer data102.
Si les pompes P1

Automatismes ST

Ensuite, crez un nouveau Programme ST pour utiliser ce bloc fonctionnel.
Liste des programmes :

S500-doc_09-AUTO - 38 -

Variables utilises dans le programme :

dition du programme :


Pour mettre au point ce programme, il est possible de le simuler en remplaant
les minutes par des secondes.

S500-doc_09-AUTO - 39 -

Automatismes ST
5.4 Blocs fonctionnels standard ST
5.4.1 Boolen
5.4.1.1 SR Bistable passage 1 prioritaire
Paramtres dentre
SET1 BOOL si TRUE, force Q1 TRUE (prioritaire)
RESET BOOL si TRUE, force Q1 FALSE
Paramtres de sortie
Q1 BOOL tat de la bascule
Set1 Reset Q1(prcdent) Q1 rsultant
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 1
Soit var_sr le nom de la variable dclare :
Ex. : tart_cmd), stop_cmd);
command := var_sr.Q1;
5.4.1.2 Bistable remise 0 prioritaire
var_sr((auto_mode AND s
RS
Paramtres dentre
SET BOOL si TRUE, force Q1 TRUE
RESET1 BOOL si TRUE, force Q1 FALSE (prioritaire)
Paramtres de sortie
Q1 BOOL la ba
Set Reset1 Q1(prcdent) Q1 r ltant
tat de scule
su
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 0
1 1 1 0
Soit var_rs le nom de la variable dclare :
Ex. : var_rs(start_cmd, (stop_cmd OR alarm));
command := var_rs.Q1;

S500-doc_09-AUTO - 40 -

Automatismes ST

5.4.1.3 R_TRIG : Dtection du front montant dune variable boolenne
Paramtres dentre
CLK BOOL toute variable boolenne
Paramtres de sortie
Q BOOL TRUE quand CLK passe de FALSE TRUE
FALSE dans tous les autres cas
m de la variable dclare :
Ex. :
e;
(* Comptage du nombre dactivations *)

5.4.1.4 : Dtection le front descendant dune variable boolenne
Soit var_r_trig le no
var_r_trig(cmd);
nb_edge := ANA(var_r_trig.Q) + nb_edg
F_TRIG
Paramtres dentre
CLK BOOL toute variable boolenne
Paramtres de sortie
Q BOOL TRUE quand CLK passe de TRUE FALSE
m de la variable dclare :
Ex. :
e;
(* Comptage du nombre dactivations *)
FALSE dans tous les autres cas
Soit var_f_trig le no
var_f_trig(cmd);
nb_edge := ANA(var_f_trig.Q) + nb_edg

S500-doc_09-AUTO - 41 -

Automatismes ST
5.4.2 Comptage
5.4.2.1 CTU : Compteur croissant
Paramtres dentre
CU BOOL si TRUE =incrmentation du comptage
RESET BOOL si TRUE =remise zro prioritaire
PV DINT valeur maximale programme
Paramtres de sortie
Q BOOL TRUE quand CV =PV (overflow))

Attention
CV DINT rsultat courant du comptage
: Le bloc CTU ne dtecte pas les fronts montants ou descendants de
lentre de comptage (CU). Il doit tre associ un bloc fonctionnel R_TRIG
Ex. : umber of passages to 1 of the Boolean variable signal
reset, 100);
(* CV sincrmente de 1 chaque appel lorsque lentre CU est TRUE *)

5.4.2.2 oissant
ou F_TRIG pour raliser un compteur dimpulsions.
// Counting of the n
var_rtrig (signal);
var_ctu(var_rtrig.Q, var_
overflow := var_ctu.Q;
result := var_ctu.CV;

CTD : Dcompte dcr
Paramtres dentre
CD BOOL entre de comptage (dcompte si CD =TRUE)
LOAD BOOL commande de chargement (prioritaire) (CV =PV si LOAD =TRUE)
valeur initiale programme PV DINT
Paramtres de sortie
Q BOOL TRUE quand CV =0 (underflow)
CV DINT rsultat courant du comptage
Attention : Le bloc CTD ne dtecte pas les fronts montants ou descendants de
lentre de comptage (CD). Il doit tre associ un bloc fonctionnel R_TRIG
Ex. : owns of the Boolean variable signal
oad, 100);
THEN
(* CV se dcrmente de 1 chaque appel lorsque lentre CD est TRUE *)
ou F_TRIG pour raliser un compteur dimpulsions.
// Countdown of the number of shut-d
var_ftrig (signal);
var_ctd (var_ftrig.Q, Var_l
underflow := var_ctd.Q;
result := var_ctd.CV;
IF ( INIT = TRUE )
INIT := FALSE;
END_IF;

S500-doc_09-AUTO - 42 -

Automatismes ST

5.4.2.3 CTUD : compteur croissant et dcroissant
Paramtres dentre
CU BOOL si TRUE =incrmentation du comptage
CD BOOL si TRUE =dcrmentation du comptage
RESET BOOL si TRUE, CV est remis zro
LOAD BOOL si TRUE, CV =PV
PV DINT valeur maximale programme
Paramtres de sortie

QD BOOL TRUE quand CV =0 (underflow)
QU BOOL TRUE quand CV =PV (overflow)

CV DINT rsultat courant du comptage
Attention: Le bloc CTUD ne dtecte pas les fronts montants ou descendan
entres de comptage (CU et CD). Il doit tre associ un bloc foncti
ts des
onnel
ulsions.
Ex. : mber of m3 in input or output
var_ftrig.Q, var_reset, var_load, 100);

result := var_ctud.CV;

R_TRIG ou F_TRIG pour raliser un compteur dimp
// Counting of the nu
var_rtrig (Signal1);
var_ftrig (Signal2);
var_ctud (var_rtrig.Q,
full := var_ctud.QU;
empty := var_ctud.QD;


Automatismes ST
5.4.3 Temporisations

Pour grer des temporisations, il est galement possible dutiliser les instructions TSTART et TSTOP
(cf. 1.4.1).

5.4.3.1 TON : incrmente une temporisation jusqu une valeur donne
(temporisateur enclenchement)
Paramtres dentre
IN BOOL si front montant, dmarre lincrment dune temporisation
si front descendant, arrte et remet 0 la temporisation
PT TIME temps maximum programm
Paramtres de sortie
Q BOOL si TRUE, le temps programm est coul
E temps coul depuis le dmarrage
Chronogramme :
ET TIM

ion jusqu une valeur donne 5.4.3.2 TOF : incrmente une temporisat
(temporisateur dclenchement)
Paramtres dentre
IN BOOL si front descendant, dmarre lincrment dune temporisation
t 0 la temporisation
mps maximum programm
si front montant, arrte et reme
PT TIME te
Paramtres de sortie
Q BOOL si TRUE: le temps programm nest pas encore coul
temps coul depuis le dmarrage
Chronogramme :
ET TIME

S500-doc_09-AUTO - 43 -


Automatismes ST
5.4.3.3 TP : incrmente une temporisation jusqu une valeur donne
(temporisateur impulsion)
Paramtres dentre
IN BOOL si TRUE (front montant), dmarre et incrmente une tempo
si FALSE et seulement si le temps est coul, remet zro
la temporisation
(tout changement sur IN pendant le comptage, est sans effet).
PT TIME temps maximum programm
Paramtres de sortie

ET TIME temps coul depuis le dmarrage
Q BOOL si TRUE : la temporisation est en cours (comptage)

Chronogramme :


S500-doc_09-AUTO - 44 -


Automatismes ST
5.4.4 Rels
5.4.4.1 AVERAGE : stocke une valeur chaque appel et calcule la moyenne des valeurs
Le nombre dchantillons ne peut pas excder 128.
Si lentre RUN vaut FALSE (rinitialisation), la valeur de sortie est gale la valeur dentre.
Quand N valeurs ont t stockes, la premire valeur qui a t stocke est remplace par la
dernire.
A chaque appel du bloc fonctionnel Average , une nouvelle valeur est archive.
La moyenne des valeurs sera correcte uniquement aprs enregistrement dau moins
N chantillons (N tant le paramtre dentre).
Paramtres dentre

XIN REAL
RUN BOOL TRUE =marche / FALSE =rinitialisation

N DINT nombre dchantillons
Paramtres de sortie
XOUT REAL moyenne courante de lentre XIN
var_average(auto_mode & store_cm Ex. : d), sensor_valeur, 100);
ave_value := var_average.XOUT;

5.4.4.2 : Hystrsis sur la diffrence de 2 rels HYSTER

Sur dtection de dpassement du seuil +lcart , la sortie est active. Elle nest dsactive que si
la valeur repasse en dessous du seuil lcart .
Paramtres dentre
XIN1 REAL valeur comparer
valeur positive de lhystrsis (cart)
XIN2 REAL seuil
EPS REAL
Paramtres de sortie
Q BOOL TRUE (voir chronogramme)
XOUT REAL moyenne courante de lentre XIN1

Chronogramme :


S500-doc_09-AUTO - 45 -


Automatismes ST
5.4.4.3 LIM_ALRM : alarme de limite avec dhystrsis
Mme principe que le bloc HYSTER, mais lhystrsis est appliqu aux limites infrieure et
suprieure dune valeur analogique comparer.
Paramtres dentre
H REAL valeur de la limite haute
X REAL valeur comparer
L REAL valeur de la limite basse
EPS REAL valeur positive de lhystrsis (cart)
Paramtres de sortie

Q BOOL alarme : TRUE si X hors limites
QH BOOL alarme haute : TRUE si X au dessus de la limite haute H

QL BOOL alarme basse : TRUE si X en dessous de la limite basse L
Chronogramme :

S500-doc_09-AUTO - 46 -



Automatismes ST
5.4.4.4 INTEGRAL : intgration dune valeur en fonction du temps
(par exemple pour le calcul dun volume en fonction dun dbit moyen)
Paramtres dentre
RUN BOOL mode : TRUE =intgration / FALSE =maintien
R1 BOOL demande de reset : la dure de maintien du reset
doit tre gale la priode dchantillonnage (CYCLE)
XIN REAL valeur intgrer (Unit / Milliseconde)
X0 REAL valeur de sortie initiale (en Unit)
CYCLE TIME priode dchantillonnage
Paramtres de sortie

XOUT REAL valeur intgre (en Unit)
Q BOOL Not R1 ( la fin de la priode dchantillonnage : CYCLE)
Une priode dchantillonnage (valeur du paramtre CYCLE ) infrieure au temps
de cycle de lautomatisme est gale au temps de cycle de lautomatisme (200 ms).
Ex. : 0.0, t#1s);
Chronogr
var_integral(TRUE, RESET, flow,
volume := var_integral.XOUT;
amme :

ffectuer un premier appel de
cette fonction avec un RESET (paramtre R1 TRUE).
CYCLE CYCLE CYCLE CYCLE CYCLE
de la demande de reset

Lutilisation du bloc fonctionnel INTEGRAL ncessite de
de la demande de reset
Demande de reset
Prise en compte

Dpositionnement
S500-doc_09-AUTO - 47 -


S500-doc_09-AUTO - 48 -

Automatismes ST

5.4.4.5 DERIVATE : drive par rapport au temps
(par exemple pour le calcul dun dbit moyen en fonction dun volume)
Paramtres dentre
RUN BOOL mode: TRUE =calcul / FALSE =maintien
XIN REAL valeur driver (exprime en Unit)
CYCLE TIME priode dchantillonnage
Paramtres de sortie
XOUT REAL valeur drive (exprime en Unit / Milliseconde)
Ex. : var_derivate(TRUE, volume, t#1s);
debit := var_derivate.XOUT;
Une priode dchantillonnage (valeur du paramtre CYCLE ) infrieure au temps
de cycle de lautomatisme est gale au temps de cycle de lautomatisme (200 ms).

5.4.4.6 : gre une pile de valeurs entires STACKINT
Le bloc fonctionnel STACKINT inclut une dtection de front montant pour les entres PUSH et
POP (commandes empiler et dpiler ). La taille maximum la pile est de 128 lments.
Paramtres dentre
PUSH BOOL commande empiler (sur front montant)
eur empile (au sommet de la pile)
N DINT taille de la pile dfinie par lapplication

ajoute la valeur IN au sommet de la pile


POP BOOL commande dpiler (sur front montant)
supprime la dernire val
R1 BOOL vide la pile
IN DINT valeur empiler

Paramtres de sortie
EMPTY BOOL TRUE si la pile est vide
OFLO BOOL TRUE si la pile est pleine (overflow)
OUT DINT valeur au sommet de la pile
var_stackint(err_detect, acknoledge, manual_mode, err_code
appli_alarm := auto_mode AND NOT
err_alarm := var_stackint.OFLO;
Ex : , max_err);
(var_stackint.EMPTY);
La valeur de OFLO est gre seulement aprs au moins une remise 0
(si R1 a t mis TRUE et remis FALSE au moins une fois).


last_error := var_stackint.OUT;


Automatismes ST
5.4.5 Signaux
5.4.5.1 BLINK : gnre un signal clignotant
Paramtres dentre
RUN BOOL TRUE =clignotant / FALSE =remise FALSE de la sortie
CYCLE TIME priode du clignotement
Paramtres de sortie

Chronogramme :
Q BOOL sortie : signal clignotant

5.4.5.2 SIG_GEN : base de temps
Gnre plusieurs signaux : clignotant sur un boolen, comptage sur un entier, et signal sinusodal sur
un rel. Quand le comptage atteint sa valeur maximale, il redmarre zro.
Paramtres dentre
RUN BOOL mode: TRUE =marche / FALSE =remise 0
T valeur maximale de comptage
PERIOD TIME priode dun chantillon
MAXIMUM DIN
Paramtres de sortie
PULSE BOOL invers chaque chantillon
UP DINT compteur incrment chaque chantillon
END BOOL TRUE sur passage zro de UP (fin de comptage)
ge)
Chronogra
SINE REAL sinus (priode =temps de compta
mme :

END reste TRUE seulement pendant la priode dun chantillon (PERIOD).
S500-doc_09-AUTO - 49 -

Vous aimerez peut-être aussi