Eurotherm PC3000 - Fonctions Manuel du propriétaire

Ajouter à Mes manuels
116 Des pages
Eurotherm PC3000 - Fonctions Manuel du propriétaire | Fixfr
oosg
GOOa0c
cCcooac
oooocc
ocooac
CER
pou
AAN
HrsEiioh
ЗОО iam
E
EF
E:
QuE
RIINOREOOORE
REAONRGEOEEE
На ООООО
h
119191313
НЕЕ
ElEJE
SIEIEIEIE
HARE
OO AO NAAA AAA Г Г
ETEIEJEJE
Н
RENE
1
ECONO NOOO ЕННЫЕ
HA 174 518 - Indice 1
+
PREFACE
Ce manuel de référence définit les fonctions disponibles sur la station de
programmation PC3000, utilisables dans les instructions en Texte structuré pour
défimir un 'cáblage par soft entré les blocs fonctions et dans les définitions des étapes
et des transitions. Le lecteur doit être familiarisé avec la station de programmation
PC3000 et le langage Texte structuré. Le guide utilisateur du PC3000 présente le
langage et les concepts de programmation.
Les informations contenues dans ce document dannent des définitions et des
exemples pour toutes les fonctions du PC3000 et peuvent servir de référence pour le
développement d'applications PC3000.
Pour avoir plus d'informations sur les documents de référence FC3000 :
Manuel du matériel PC3900 : fournit des mformations détaillées sur l'ensemble des
modules matériels du PC3000, en particulier l'étalonnage, le câblage et les détails de
configuration physique. Référence HA174 383.
Manuel du système d'exploitation temps réel PC3000 : décrit le fonctionnement et
les fonctions du logiciel du système PC3000 qui gère le chargement, l'initialisation et
l'exécution d'un programme utilisateur. Référence HA174 519.
Manuel des blocs fonctions PC3006 : décrit les nombreux blocs fonctions
disponibles incorporables dans le programme de régulation pour la régulation PIC,
les rampes, les compteurs, les filtres, les timers, etc. Référence HA174 415.
Fonctions du PC3000 Préface
SOMMAIRE
PREFACE
COMPATIBILITE MICROLOGICIELLE
Chapitre 1 INTRODUCTION
Chapitre 2 FONCTIONS NUMERIQUES
Chapitre 3 FONCTIONS DE SELECTION
Chapitre4 FONCTIONS DE CHAINE
Chapitre5 FONCTIONS DE CONVERSION DE TYPE
Chapitre 6 FONCTIONS DE CONVERSION DE CHAINE
Chapitre 7 FONCTIONS ARITHMETIQUES DE TEMPS
Chapitre8 FONCTIONS COMPACTES
Chapitre 9 FONCTIONS SUPPLEMENTAIRES DE COMMUNICATION
Chapitre 10 FONCTIONS DE MANIPULATION DE BITS
ANNEXE À TEMPS D'EXECUTION DES FONCTIONS
ANNEXE B TEMPS D'EXECUTION OPERATEUR
ANNEXE C CODES D'ERREUR
ANNEXE D REGLES POUR LES TYPES DE DONNEES MIXTES
ANNEXE E EMBOITEMENT DES FONCTIONS ST PC3000
Fonctions du PC3000 Sommaire
&
Compatibilité micrologictelle
COMPATIBILITÉ MICROLOGICIELLE
Versions de microprogramme
Fonctions 2.09 2.27 3.0
ABS_REAL
EXP
SIN
TAN
AS
ACOS
SEL BOOL
SEL_DINT
LEFT
RIGHT
CONCAT
INSERT
DELETE
FIND
* | #19 | #14 |4 | ||" (||| a] 0s ||" & | + | | # |1 |8 |818 | 1 | #1 #1 | +
Ф | # | # | # |# | # | & |# | # | # | & #1 #1 # | #1 + | | #1 # | #1 #4 | #* | 41| # | + | & | + | # | # 14 |4 |4 | | #14 | #1 # | #4 | *
E # | # | # |4 | # | | # | # | 4 1 |4 || 8] + | #* | # | # | + | #1 * PEE) EEE EE DB
Fonctions du PC3000
&
Compatibilité micrologicielle
Versions de microprogramme
Fonctions 2.09 2.27 3.0
DINT_ TC REAL
TO
REAL_TO_TIME
# | # | * | * | * | # | + | * | + | +
TO_DT
STRING _TO DINT
HEX _STRING_TO
BIN_STRING_TO UDINT
OCT_STRING TO UDINT
STRING_TO_
_TO_DHMS_STRING
DATE
pe — —
— —_—
CHAR_TO_ASCH
| 91| 91| + | + | + | || E; || | | E E (| | #1 914 |8 | #1 | + | | |9 |8 | |9 | | | |8 | 4 || 8 (des
| + | MEE EE EEE PEA EE EE EEE E E EA
»
*
*
»
*
*
*
-
т
т
т
«
*
a
*
*
т
*
*
*
*
a
+
+
*
т
+
т
+
Fonctions du PC3000
Compatibilité micrologicielle
Fonctions
ADD TOD TIME
ADD TIME TO TIME
MUL_TIME_BY
—
REP _SINT_IN_STR
REP _USINT_IN STR
REP_UDINT STR
EXT TIME
REP _TIME_IN_STR
STR
REP IN_STR
IEEE STRING TO
SET_BIT_IN_DINT
INT .
XOR_DINT
—
2.09
№ | FEE EEE AENA
Versions de microprogramme
2.27 3.0
| 1)» || AE EEE EEE EE
* | | EEE EEE |4 ||| || | ЖЖ | 4 | #4 |4 | 4 | 9 | | | ж | #1 4 |1 #4 | #1 |
Fonctions du PC3000
&
Chapitre 1
INTRODUCTION
=
Le
=
T
=
с
La
| =
slip
=
Version 1
Sommaire
Prósentation .......—. e. e... .errveorreccrareraneranerenareacanare Ta Tener. 1-1
Forme générale ..........—...—e—..emmeeernaenncconereena reee reee crane 1-1
Restrictions et détection des erreurs ......... 1-2
Fonctions du PC3000 Sommaire 1-1
Introduction
Présentation
Les fonctions Texte structuré (ST) sont exécutées comme faisant partie du corps du
Texte structuré dans lequel elles sont appelées. Elles restituent toutes une valeur
unique qui est habituellement affectée à un paramètre de bloc fonction ou utilisée
dans une expression en ST. Il n'y a pas d'effets indirects, par exemple une modifica-
tion d'autres paramètres, et la valeur restituée n'est pas stockée, sauf si elle est
affectée explicitement à un paramètre donné.
Ii est possible d'imbriquer les fonctions ST : ainsi, il est possible d'utiliser les
fonctions de conversion de type pour apparier des types de données dans une
expression puis de reconvertir le résultat global dans le type de données qui convient.
Vo l'annexe E pour avoir des exemples.
=
©
pre
|
=}
[+
©
pre
=
Forme générale
Toutes les fonctions du PC3000 sont représentées dans ce texte sous la forme :
DINT DINT
Les fonctions ont une seule sortie qui est représentée à droite du schéma.
Les fonctions peuvent avor n'importe quel nombre d'entrées qui apparaissent a
gauche du schéma. Lorsque plusieurs entrées sont utilisées, chacune porte UII IOITE
différent, par exemple G, INO, IN1, etc. dans l'encadré de la fonction. Les cypes de
données d'entrée et de sortie, REAL, BOOL, STRING, etc. sont énumérés à côté de
l'entrée ou de la sortie à laquelle 1ls se rapportent. Le nom de la fonction est mdiqué
dans l'encadré de la manière représentée.
Remarque ; les fonctions d'entrée simple ont un paramètre d'entrée
IN auquel doit être affectée une valeur ou une expression lors de
l'appel dés fonctons en ST. Toutefois, pour répondre à la norme IEC
1131-3, le nom du paramètre d'entrée simple n'apparaît pas sur les
schémas fonctiormels. :
Dans les descriptions des paramètres de fonctions, les types de données répondant à
la norme IEC 1131-3 figurent entre parenthèses après la description du type de
données, par exemple à virgule flottante (REAL).
Fanctions du PC3000 1-1
Introduction
Restrictions et détection des erreurs
Pour un certain nombre de fonctions, dont une partie des fonctions numériques, il
existe des restrictions sur la valeur de la plage de paramètres utilisable. Dans un
certain nombre de cas, des valeurs interdites produisent une ou plusieurs erreurs
système.
Par exemple, la fonction racine carrée (SORT) d'un nombre négatif entraîne une
erreur système et produit un résultat "IEEE Not a Number” ou NAN. Cette erreur
peut se propager par 1me expression et provoquer un certain nombre d'erreurs
système par d'autres opérateurs ou fonctions. Dans certains cas, les fonctions
produisent un résultat "IEEE infimity" qui, utilisé dans d'autres expressions, peut a
son four provoquer des erreurs SYSIEME.
Toutes les erreurs système sont détaillées dans le "Manuel du système d'exploitation
temps réel PC3000", Les codes d'erreur applicables aux fonctions ST sont énumérés
dans l'annexe C. T1 faut prendre des précautions, lors du développement d'un pro-
gramme utilisateur, pour être sûr de n'utiliser que des valeurs de paramètres de
fonctions correctes.
Un certain nombre de fonctions ne produisent des valeurs de sortie correctes que
lorsque les paramètres d'entrée se situent dans une plage donnée, c'est-à-dire entre
des valeurs maximales et minimales dormées.
Dans les descriptions de fonctions ci-après, les restrictions des plages de paramètres
sont défimies ; dans le cas contraire, on peut prendre la plage normale de paramètres.
Attention
1. Un certam nombre de fonctions, en particulier les fonctions de
chaines de caractéres, possedent des paramétres entiers sans signe
(c'est-à-dire USINT= entiers courts sans signe et UDINT = entiers
doubles sans signe) pour les longueurs, les positions, etc. Il faut
veiller à ne pas affecter un paramètre entier, comme un entier double
UDINT, avec une valeur négative (<Ü) à des paramètres qui sont des
entiers sans signe. Il se peut que le paramètre entier sans signe
suppose qu'il y a une valeur positive trés grande.
2. Etant domné que les opérations sur les chaînes de caractères
peuvent utiliser une zone importante de l'espace d'empilage du
système PC3000, il faut veiller à ne pas imbriquer les fonctions de
chaînes de caractères sur plus de 2 niveaux de fonctions. $1 une
application nécessité une séquence complexe de fonctions de chaînes
de caractères, il est préférable d'utiliser des blocs fonctions Chaînes
de variables utilisateurs pour stocker les valeurs miermédiaires.
1-2
Fonctions du PCS0OÛ
Chapitre 2
FONCTIONS NUMERIQUES
Version 2
Sommaire
Prasentation .....ccccveei ver ivrr sess ssrssrssssssssserassrsrransrnns snes nn pense
A nece renaa res ra ETTUDTs
EXP ....
2-1
aavrrareneene 2-1
2-7
Fonctons du PC3000
Sommaire 2-1
tn
=
o
pr
D
5
a
e
D
=
=
быть
©
=
=
с
Fonctions numériques
Présentation
Les fonctions numériques comprennent toutes les fonctions mathématiques courantes
comme le logarithme, l'exposant, les fonctions trigonométriques sinus, cosinus, etc.
ABS REAL
Valeur absolue d'une valeur à virgule flottante (REAL), c'est-à-dire que les valeurs
négatives sont traitées comme étant positives.
REAL =
EA
cs
9 -
e.
=
es
=
N
Exemple ST:
reall.Val:= ABS REAL (IN:= -100.3};
reall Val est réglée à 100.3
ABS_DINT
Valeur absolue d'une valeur entière (DINT), c'est-à-dire que les valeurs négatives
sont traitées comme étant positives.
ABS DINT
DINT DINT
Exemple ST:
inti.Val:= BABS DINT (IN:= -100);
intl. Val est réglée à 100
Fonctions du PC3000 2-1
Fonctions numériques
SORT
Racine carrée d'une valeur à virgule flottante (REAL), seules les valeurs positives
sont valables.
cen, —
Exemple ST:
reall .Val:= SORT(IN:= 100.0};
reall. Val est réglée ä 10.0
LN
Logarithme népérien d'une valeur à virgule flottante, seules les valeurs supérieures à
0 sont valables.
am —
REAL
Exemple ST:
reall.Val:= LN{IN:= 2.45};
reall. Val est réglée a (0.89609
2-2 Fonctions du PC3000
Fonctions numériques
LOG
Logarithme en base 10 d'une valeur à virgule flottante (REAL) : seules les valeurs
supérieures a { sont valables,
REAL —
Y ©
a
Ses
В
SE
© 3
==
Exemple ST:
reali.Val:= LOG(IN:= 100,0);
reall.Yal est régiés 32.0
EXP
Exposant naturel d'une valeur a virgule flottante (REAL), c'est-a-drre e* ; 1] est
possible d'utiliser a la fois des valeurs positives el des valeurs négatives.
Exemple ST:
reall .Val:= EXP(IN:= 2.0);
reall.Val est réglée à 7.3890
Fonctions du PC3000 2-3
Fonctions numériques
MODULUS
Dans les versions antérieures à 2.27, cette fonction était appelée MOD.
Contrôle Modulo dune valeur (REAL) a virguie flotiante où la valeur du dividende
IN1 est divisée par le diviseur INZ et le reste est retourné. Le diviseur INZ ne doit pas
être 0.
REAL — |
REAL —{ _
Exemple ST:
reall.Val:= MODULUS{INl:= 13.5, INZ:= 11.0};
reall Val est réglée 32.5
Exemple ST:
reall.Val:= MODULUS(IN1:= 22.0, IN2:= 11.0};
real! .Val est régiée à Ü
Exemple ST:
reall.Val:= MODULUS(IN1:=
2.0, IN2:= 10.0};
reall.Vai est réglée à -3.0
Exemple ST:
reall .Val:= MODULOS (INl:= 11, INZ:= -2.0};
reall.Val est réglée a 1.0
2-4
Fonctions du PC3000
Fonctions numériques
EXPT
L'élévation a une puissance élève la valeur de la BASE à une PUISSANCE donnée,
c'est-à-dire BASEEÆCSANT çe qui équivaut à ePVESANCE"L(RASE)_ Ta valeur de la BASE
doit toujours être positive,
REAL — REAL у ra
cS
REAL —-I— 3
SE
No o
Ez
Exemple ST:
reall.Val:= EXPT(BASE:= 2.0, EXPOSANT: = 3.0);
reall Val est réglée a 8.0
SIN
Sinus d'une valeur à virgule flottante (REEL) exprimé en radians.
ве —
REAL
Exemple ST:
reali.Val:= SIN(IN:= 0.556);
reall Val est réglée à 0.527
Fonctions du PC3000 2-5
Fonctions numériques
COS
Cosmus d'une valeur à virgule flottante (REAL) exprimé en radians.
e
Exemple ST:
reall.Val:= COS(IN:= 0.555);
Teall Val est réglée à 0.849
TAN
Tangente d'une valeur à virgule flottante (REAL) exprimée en radians.
REAL
\.
Exemple $T:
reall.Vail:= TAN(IN:= 0.71};
reall.Val est réglée a 0.859
25 Fonctions du PC3000
Fonctions numériques
ASIN
Sinus de l'arc principal, la valeur d'entrée à virgule flottante (REAL) doit être
comprise entre -1,0 et +1,0. La sortie est comprise entre - 7/2 et T /2.
REAL
Dv
sg
=
Exemple ST: Y 3
reall.Val:= ASIN(IN:= 0.3};
reall.Yal est régiée a 0.3047
ACOS
Cosinus de l'arc principal, la valeur d'entrée à virgule flotante (REAL) doit étre
comprise entre -1,0 et +1,0. La sortie est comprise entre 0 et 7.
REAL
Exemple ST:
reall.Val:= ACOS(IN:= 0.3);
reall. Val est réglée a 1.266
Fonctions du PC3000 2-7
Fonctions numériques
ATAN
Tangente de l'arc principal d'une valeur d'entrée à virgule flottante (REAL) ; il n'y a
aucune limite pour l'entrée mais la sortie doit être comprise entre - 7/2 et 77/2.
REAL —] |
REAL
\
Exempie ST:
reall.Val:= ATAN(IN:= 20.5};
reall.Val est réglée à 1.522
2-8 Fonctions du PC3000
Chapitre 3
FONCTIONS DE SELECTION
Version 1
Sommaire
Presentation ...... eee eee eet eee seer cae aan
SEL_DINT ........ ee... e... everanrizocerecaarnee e eraN ENE anes
A N e... enana rena
SEL_DATE AND TIME ........... ee... enrenrracarrcarer een sae
EN
MIN_REAL Lune crrccciceesesssscee
3-1
‚3-1
3-3
3-4
3-5
„3-7
…3-8
3-3
ен 310
cana BO
Fonctions du PC3000
Sommaire 3-1
Fonctions de sélection
Présentation
Les fonctions de sélection permettent de sélectionner des valeurs en fonction de l'état
d'un paramètre ou d'une expression booléen(ne) ou d'autres critères comme le
maximum de deux valeurs. Les fonctions de sélection sont utilisables pour des types
de données différents, par exemple SEL_REAL sélectionne ume valeur à virgule
flottante (REAL) parmi deux selon qu'une expression booléenmne est vraie ou fausse.
SEL_BOOL
Sélectionne une entrée booléenne (BOOL) parmi deux INO et IN1 en fonction de la
valeur booléenme de G. Le résultat est INO si la valeur de G est 0 (c'est-à-dire
FAUSSE) ou INI si la valeur de G est t (c'est-à-dire VRAIE).
poor —
Boor — |
BOL
Exemple ST:
coolpump.Val:= SEL BOOL(G:= zonel.Process Val>100.5,
INO:= 1,
INl:= O) :
coolpump. Val est réglée à Ü (c'est-à-dire FAUSSE) si zonel Process, Val est
supérieure à 100.5.
Fonctions du PC3000 3-1
Fonctions de sélection
SEL DINT
Sélectionne une entrée entière (DINT') parmi deux INO et INT en fonction de la
valeur booléenne de G. Le résultat est ING si la valeur de G est Ô (c'est-à-dire
FAUSSE) ou [N1 si la valeur de G est 1 (c'est-à-dire VRAIE)
BOOL
DINT
Lion
DINT
Exemple ST:
labelID.Val:= SEL DINT(G:= batchNo.Val = 1999,
INO:= batchNo.Yal,
INl:= 0);
label ID. Val est régléz a O lorsque batchNo. Val est égal a 1999 00 3 batchNo. Y al dans
les autres cas.
3-2 Fonctions du PC3000
Fonctons de sélection
SEL_REAL
Sélectionne une entrée a virgule flottante (REAL) parmi deux INO et IN1 en fonction
de la valeur booléenne de 3. Le résultat est INO si la valeur de G est Ü (c'est-à-dire
FAUSSE) ou INI si la valeur de G est 1 (c'est-à-dire VRAIE)
НО, —{
ra —
Rent —
Exemple ST:
speed.Val:= SEL REAL(G:= sensor.Val,
INO := 10.23
IN1 := 23.11 };
speed. Vai est réglée à 23.11 si sensor.Val est égale à Ÿ (c'est-à-dire VRAIE) ou à
10.23 dans les autres cas.
Fonctions du PC3000 3-3
Fonctions de sélection
SEL_TIME
Sélectionne une entrée de durée (TIME) parmi deux INO et IN1 en fonction de la
valeur booléenne de G. Le résultat est INO st la valeur de G est 0 (c'est-a-dire
FAUSSE) ou IN1 st la valeur de G est 1 (c'est-a-dire VRAIE).
вос, | TINE
ve
rive — |
Exemple ST:
heatTime.Val:=SEL TIME (G:= procType.Val = 3,
INC:= time2.Val,
IN1:= T#10s_500ms);
heatTime.Val est réglée a T#10s_500ms si procType value est égale 23 ou dla
valeur de time2. Val dans les autres cas.
3-4 Fonctions du PC3000
Fonctions de sélection
SEL_DATE
Sélectionme une entrée de date (DATE) parmi deux INO et IN1 en fonction de la
valeur booléenne de GG. Le résultat est INO si la valeur de G est Ü (c'est-à-dire
FAUSSE) ou INI1 si la valeur de G est 1 (c'est-à-dire VRAIE).
DATE
BOOL —
var AZ
DATE —
Exemple ST:
endDate.Val:= SEL DATE (G:= oblype.Val = recipe.Val,
INO:= normDate.Val,
IN1:= spechDate. Yal);
|=
LS
o
к.
+
о?
endDate. Val est réglée à la valeur de specDate si jobType est égale à la valeur de la
recette où endDate. Val est réglée à la valeur de normDate, Val dans les autres cas.
Fonctions du PC3000 3-5
Fonctions de sélection
SEL_TIME_OF DAY
Sélectionne une entrée heure du jour (TIME_OF_DAY) parmi deux INO et IN1 en
fonction de la valeur booléeme de G, Le résultat est INO si la valeur de G est Ô (c'est-
à-cire FAUSSE) ou [NI si la valeur de G est 1 (c'est-à-dire VRAIÏE).
BOGL TIME CF DAY
TIME OF DAY
TIME GF DAY
Exempie ST:
startime.Val:=
SEL TIME CF DAY (G:= RT Clock.day = 1{(*MON*),
INO:= TOD#08:00:00,
INl:= TOD#06:00:00);
Si RT_Clock day est égale à 1 (c'est-à-dire lundi), startime. Val est réglée à 06:00:00) ;
elle est réglée à 08:00:00 dans les autres cas.
3-6 Fanctions du PC3000
r
Fonctions de sélection
SEL_DATE_AND_TIME
DATE AND TIME
DATE AND TIME
Sélectionne une valeur daté et heure (DATE AND TIME) parmi deux INO et IN1 en
fonction de la valeur booléenne de G. Le résultat est INO si la valeur de Gest O (c'est-
a-dire FAUSSE) ou IN1 si la valeur de G est 1 (c'est-à-dire VRAJE).
SEL, DATE AND TIM
BAL
DATE AND TIME
Exemple ST:
logDate.Val:=
SEL DATE AND TIME (G:=logFlag.Val,
INO:= mullDate. Val,
IN1:= RT Clock.DateAndTime) ¿+
Si logFlag. Val est VRAIE, logDate. Val est réslée a RT_Clock.DateAndTime ; elle
est réglée à nullDate. Val dans les autres cas.
Fonctions du PC3000 3-7
Fonctions de sélection
SEL_STRING
Sélectionne une entrée de chaîne de caractères (STRING) parmi deux INO et INT en
fonction de la valeur booléenne de G. Le résultat est INO si la valeur de G est O (c'est-
a-dire FAUSSE) ou IN] si la valeur de G est 1 (c'est-à-dire VRAIE).
SEL_STRING à
BOOL — |
STRING — |
STRING —
STRING
\
Exemple ST:
message.Val:= SEL STRING(G:= ALarm.VAl,
TNO:= 'Mo Alarm',
INl:= .ALARMI');
51 Alarm. Val est VRAIE, message. Val est réglée à'ALARMI ; elle est réglée à No
Alarm’ dans les autres cas,
3-8 Fonctions du PC3000
Fonctions de sélection
MAX DINT
Sélectionne la valeur maximale de deux entrées entières (DINT).
Exemple ST:
rate.Val:= MAX DINT (INl:= pulseCt.Val, IN2:= 30};
Tate. Val est réglée à pulseCt. Val lorsque pulseCt est supérieure à 30 ; dans les autres
cas, elle est réglée à 30,
MAX_REAL
Sélectionne la valeur maximale de deux entrées à virgule flottante (REAL).
REAL —
REAL —
\.
Exempie ST:
tempMax.Val:= MAX REAL(INl:= zonel.Process Val,
IN2:= MAX REAL(
INl:= zone2.Process Val,
IN2:= zone3.Process Val));
tempMax.Val est réglée à la valeur maximale des valeurs de process zonel, zone2 et
zone3.
Fonctions du PC3000 3-9
Fonctions de sélection
MIN_DINT
Sélectionne la valeur minimale de deux entrées entières (DINT).
pint — |
prnr —{ | пм
Ne
IM1
Exemple ST:
cntMin.Val:= MIN_DINT{IN1:= countl.Val,
IN2:= count2.Yal);
cntMin. Val est réglée au minimum de countl Val et count2. Val.
MIN_REAL
Sélectionne la valeur minimale de deux entrées à virgule flottante (REAL).
REAL w—i
rear — |:
REAL
Exemple ST:
loopSetpoint:= MAX REAL(INl:= low.Val,
IN2:= MIN REAL
(INl:= working.Val,
IN2:= high.val));
loop.Setpount est réglée à workmg. Val, limitée entre un mmumum fixé par low.Val et
un maximum fixé par high. Val.
3-10 Fonctions du PCS000
Chapitre 4
FONCTIONS CHAINES
Version 1
Sommaire
PresentatiON sr me rrunsernerees sans sans ananas enr 4-1
LEN errr eres rae res ve rear san eran erasers sens ae DO
MID .......eernenoonenvnonarvacuneer een neo caera reTOVECUNENETA reearratereceraarnen ayer 74
CONCAT ...….v-acereseenraaeras annee me ressens era 4-5
JUSTIFŸ_LDEET L.....uoeressernererssrraanressemeen sarennarrasa nes eansemaa re 4-10
JUSTIFY _RKGHT.........eeneeee nea rrcarncarra ren rene reecare enuneraa 4-11
JUSTIFY CENTRE ..............ee2esueriorionesnena cane entorn an eran aane 4-12
un
=
re ©
= =
O
ce
ds
Fonctions du PC3000 Sommaire 4-1
Fonctions chaînes
Présentation
Un ensemble très complet de fonctions de chaînes de caractères permet de construre
et de manipuler des chaînes de caractères. Il est par exemple possible de construire
un message a partir d'un certain nombre de valeurs de paramètres de blocs fonctions
possédant des données de types différents.
Normalement, ces fonctions sont nécessaires pour créer des messages de panneaux,
des messages aux imprimantes pour produire dés rapports, créer et décomposer les
messages de demande et de réponse des communications. Dans les fonctions de
chaînes ci-dessous, la position des caractères dans une chaîne est considérée comme
étant numérotée 1, 2,...L, L étant la longueur totale de la chaîne.
EQUAL
Vérifie l'égalité entre deux chaînes de caractères (STRINGs).
ВОС,
STRING —
STRING — |
on
Exemple ST: S
IF EQUAT, {(INl:= ans.Val, INZ:= 'YES') THEN =
response.Val:= 10; =
ELSE
response. val :=0;
END IF' y;
Si la chaîne contenue dans ans. Val est identique à "YES, response. Val estréglée a
10, Toutefois, pour les autres valeurs d'ans Val, comme ' YES", "Y Es' 0u "YES +,
response. Val est réglée à Zéro.
Fonctions du PC3000 4-1
Fonctions chaînes
LEN
Restitue la longueur d'une chaîne de caracteres (STRING) sous la forme dun entier
court sans signe (USINT).
STRING — |
USINT
Exemple ST:
A.Val:= LENC'A SIRING'};
A. Val estréglée a 8.
4-2 Fonctons du PC3000
Fonctions chaînes
LEFT
Extrait un nombre donné de caractères L, à partir de l'extrémité gauche d'une chaîne
de caractères (STRING) IN, c'est-à-dire à partir du début de la chaîne. Toutefois, si le
paramètre IN a une longueur inféneure à L caractères, une chamne de longueur nulle
sera restituée, c'est-à-dire ".
STRING — |
USINT — |
STRING
Exemple ST:
product.Val:= IEFT(IN:= 'A34F Product', L:= 4};
product Val est réglée 3 'A34F".
RIGHT
Extrait un nombre donné de caractères L, à partir de l'extrémité droite d'une chaîne
de caractères (STRING) IN, c'est-à-dire jusqu'à la fin de la chaîne. Toutefois, si le
paramètre IN a une longueur inférieure à L caractères, une chaîne de longueur nulle
sera restituée, c'est-à-drre .
an
Oo
=
SE
Ta G
STRING — |
USINT — |
STRING
Exemple ST:
recipe,Val:= RIGHT (IN:= ‘Recipe = Blue', L:= 4);
recipe.Val est réglée à Blue.
Fonctions du PC3000 4-3
Fonctions chaînes
MID
Extrait une chaine de caracteres (STRING) d'ime longueur donnée L à partir d'une
position donnée P, dans une chaîne IN. Toutefois, si le paramètre IN a une longueur
inférieure à (L+P)-1 caractères ou si P est égal à 0, une chaîne de longueur nulle sera
restituée, c'est-à-dire ",
STRING
—{_
using — |
——
STRING
O5INT
Exemple ST:
log.Val:= MID{IN:= "Valve 12 56 shut’,
log.Val est réglée 3'12_56'.
4-4 Fonctions du PC3000
Fonctions chaînes
CONCAT
Unit deux chaînes de caractères (STRING) IN1 et IN2, la chaîne INI1 étant située au
début de la chaîne restimiée,
STRING — |
STRING —
STRING
Exemple ST:
report.Val:= CONCAT(INi:= ‘Alarm Status ",
IN2:= alarm.Val};
Si, pour le paramètre pris comme exemple, alarm. Val est "OK, report Val de la
chaîne est réglée à ‘Alarm Status OK
LI
Fe.
- =
coma
5 =
ое
Fonctions du PC3000 4-5
Fonctóns chaines
INSERT
Insère une chaîne de caractères (STRING) IN2 dans une autre chaine IN1 en
commencant á une position donnée P dans la chaine IN1. Toutefois, si le paramétre
IN1 a me longueur inférieure a P caractéres, la fonction restitue une chaîne de
longueur nulle, cest-á-dire ". Le contenu précédent de la chaine TN1 est écrasé par la
chaine IN2 insérée.
Si P est égale à zéro, la chaîne IN2 est insérée devant la chaîne IN].
STRING
—_
STRING wf
—__
USINT
STRING
E
\
Exemple ST:
log.Val:= INSERT(IN:= 'log: :'
1№:= '03', P:= 3);
La chaîne log. Val est réglée à Tog:03:
4-6 Fonctions du PC3000
Fonctions chaînes
DELETE
Supprime une partie d'une chame de caractères (STRING) d'une longueur de L
caractères d'une chaîne IN en commençant à la position P. Toutefois, si le paramètre
IN a uné longueur inférieure à (L+P)-1 caractères ou si P est égal à 0, la fonction
restitue une chaîne de longueur nulle, c'est-à-dire ".
STRING —{ |
vsivr —|__
USINT —
STRING
Exemple ST:
new.Val:= DELETE (IN:= 'Batch AB Ready’
L:= 3, P:= 7);
new.Val est réglée à 'Bacch Ready".
D a
GO OD
55
=
a
1
Fonctions du PC3000 4-7
Fonctions chaînes
REPLACE
Remplace L caractères d'une chaîne de caractères (STRING) IN1 par une autre
chame [NZ en commençant par la position P dans la chaîne IN1. Toutefois, s: le
paramètre IN] a une longueur inférieure à (L+P)-1 caractères ou si P est égal à 0, la
fonction restitue tme chaîne de longueur nulle, c'est-à-dire ".
STRING
STRING —
STRING
OSINT
US INT
1010]
Exemple ST:
response.Val:= REPIACE{INl:= ‘Valve 12B Open’,
INZ:= "SC", L:= 3, P:= 7);
response. Val est réglée a "Valve 5C Open’
4-8 Fonctions du PC3000
Fonctions chaines
FIND
Restitue sous la forme dun entier sans signe (USINT) la position du debut de la
premiére occurrence d'une chaine IN? dans une autre chaine IN1. $1 aucune occur
rence n'est trouvée, reste 0. Si la chaine IN2 est nulle, c'est-à-dire *, restitue 1.
USINT
STRING — |
STRING — INZ
Exemple ST:
A.Val:= FIND(INl:= 'AECEC', IN2:= 'BC'}:
A.Val est réglée à 2.
iy)
=
©
[url
A)
pm
o
bl.
Fonctions du PC3000 ' 4-9
Fonctions chaînes
JUSTIFY LEFT
Cette fonction justifie à gauche, c'est-à-dire positionne une chaîne de caractères
(STRING) dans un champ spécifié à l'endroit le plus à gauche possible. La chaîne
restituée est complétée par des espaces pour occuper toute la largeur du champ.
Toutefois, si la longueur de la chaîne STR est supérieure à FIELD_WIDTH, la
fonction restitue une chaîne de longueur nulle, c'est-à-dire ".
STRING — | STR
USINI — | FIELD WIDTH
\
STRING
Exemple ST:
report .Val:= JUSTIFY LEFT (STR:= 'Report:"
FIELD WIDTH:= 12);
report. Val est réglée 4 'Report:.
4-10 Fonctions du PC3000
Fonctions chaînes
JUSTIFY_ RIGHT
Cette fonction justifie à droite, c'est-à-dire positionne une chaîne de caractères
(STRING) dans un champ spécifié à l'endroit le plus à droite posssble. La chaîne
restituée est précédée par des espaces pour occuper toute la largeur du champ. Si la
longueur de la chaine STR est supérieure a FIELD WIDTH, la fonction restitue une
chaine de longueur nulle, c'est-à-dire ".
JUSTIFY RIGHT
STRING — | STR
ver | | FIELD WIDTH
N
STRING
Exemple ST:
report .Val:= JUSTIFY RIGHT (STR:= 'Report:',
FIELD WIDTH:= 12};
report. Val est réglée à Keport.
ня
o ©
— =
ca
5 =
25
Fonctions du PC2000
Fonctions chaines
JUSTIFY_CENTRE
Cette fonction justifie au centre, c'est-à-dire positionne une chaîne de caractères
(STRING) dans un champ spécifié à l'endroit central avec des espaces égaux ajoutés
aux extrémités gauche et droite de la chaîne. La chaîne restituée est précédée et
suivie par des espaces pour occuper toute la largeur du champ. Toutefois, si la
longueur de la chame STR est supérieure à FIELD _WIDTH, la fonction restitue une
chaîne de longueur nulle, c'est-à-dire ”.
S'il n'est pas possible de centrer exactement la chaîne, elle estdécalée sur la gauche.
STRING — | STR
USINT —__ FIELD WIDTH
STRING
Exemple ST:
banner.Val:= JUSTIFY CENTRE (STR:= 'ZONEl',
FIELD WIDTH:= $9);
banner. Y al est réglés a* ZONE] *,
4-12 Fonctons du PC3000
Chapitre 5
FONCTIONS DE CONVERSION
DE TYPE
Version 2
Sommaire
Présentation .........co vee RETTET ARENA FREENET sre ears sersnsess 3 1
DINT_TO REAL -.........ee..eeeeeenemararrna nr nen en e rre sans DR
REAL TO DINT.............——. ee. in enana naaa a ranma DE
TRUNC cena nena canea anna an rana rra aran anna ane cena manana DE
TIME_TO REAL EN mm se mim en mnt 9-3
REAL _TO_TIME oa, 5-4
HME_ TO UDINT _.……uvssvrssarrsanmessnannence rene rensaresa ame ana rer name 5-4
UDINT_TO TIME ….....………rccsrrssarrssenresnnassansenasrena ne sera 2-5
DATE_AND TIME ТО TOD... eee emcee enn. DD
DATE AND TIME TO DT..............=en2srrnerrece ree ener eres: DB
CONCAT DATE TOD ..........eeemesorieieniermarrece recae riera 9-0
DT_TO UDINT een ene nene 7
UDINT_TO DT =F
de type
=
©
7
Lal
d
>
=
G
oO
Fonctions du PC3000 Sommaire 5-1
Fonctions de conversion de type
Présentation
Ces fonctions permettent de convertir un type de dormées en un autre type. Il existe
une large garmme de fonctions de conversion, par exemple TIME_TO_REAL peut
servir A convertir une durée (TIME) en valeur a virgule fiomante (REAL) sous forme
d'un nombre de secondes.
Avec la plupart des fonctions et opérations en Texte structuré, il est indispensable
d'utiliser des paramètres possédant le bon type de données. La station de
programmation PC3000 émet normalement un message d'erreur en cas de création
d'une instruction en Texte structuré comportant un type de données incorrect.
Toutefois, il ny a actuellement aucune vérification relative aux différents types de
dommées entières comme DINT et USINT, voir, les remarques de muse en garde de la
page 1-2.
Dans certains cas, 11 est illogique d'essayer d'utiliser un type de données erroné.
Exemple : a.Val :=b.Val * c.val n'aurait aucun sens si a.Val, b.Vai etc. Val
étaient tous des données de type "chaîne de caractères” (STRING). Toutefois, il
existe de nombreux cas où il est nécessaire de prendre um paramètre d'un type de
données et de l'utiliser dans une expression comportant d'autres types de données. Par
exemple, il est souvent nécessaire d'effectuer des calculs avec des paramètres à
virgule flottante (REAL) et des paramètres entiers.
Les fonctions de conversion suivantes sont utilisables lorsque la conversion d'un type
de données en un autre type a des raisons d'être. L'annexe D fournit des indications
supplémentaires.
c
2
T
E
т
>
=
Le
=
Fonctions du PC3000 5-1
Fonctons de conversion de type
DINT_TO REAL
Convertit un nombre entier avec signe {DINT) en un nombre à virgule flottante
(REAL).
DINT —
N
Exemple ST:
a.Val:= DINT TO REAL(IN:= 12)
Fixe a.Val 3 172.000.
REAL TO_DINT
Convertit un nombre i virgule flottante (REAL) en un nombre entier avec signe
(DINT). La valeur obtenue est arrondie à l'entier le plus proche.
DINT
N
Exemple ST:
a.Val:= REAL TO DINT (IN:=12,678);
Fixe a.Val à 13.
5-2 Fonctions du PC3000
Fonctions de conversion de type
TRUNC
Convertit la partie entière d'un nombre à virgule flottante (REAL) en un nombre
entier avec signe (DINT) en tronquant la partie décimale de la valeur.
rans —
DINT
Exemple ST:
a.Val:= TRUNC(IN:= 12.678)
Fixe a. Val à 12.
Exemple ST:
a.Val:= TRUNC(IN:= -6.753)
Fixe a. Val 4-6,
TIME_TO_ REAL
Convertit une durée (TIME) en un nombre de secondes avec virgule flottante
(REAL).
TIME_TO_REAL
TIME REAL
Exemple ST:
a.Val:= TIME TO REAL(IN:= T#10s 500ms);
Fixe a. Val a 10.5,
=
=
7
E
QP
>
=
Le
©
Fonctions du PC3000
5-3
Fonctions de conversion de type
REAL TO TIME
Convertit un nombre de secondes avec virgule flottante (REAL) en une durée
(TIME). L'entrée IN doit être un nombre positif inférieur à (27/1000), c'est-à-dire
mférieur à 4294967.295 pour que la conversion s'effectue en une durée valable.
REAL_TO_TIME
REAL — |
TIME
Exemple $T:
a.Val:= REAL TO TIME{IN := 10,500);
Fixe a. Val sur T#10s _500ms.
TIME _TO UDINT
Convertit une durée (TIME) en nombre entier de millisecondes (UDINT).
TIME TO UDINT %
Exemple ST:
a.Val;= TIME TO UDINT (IN:= T#10s 500ms);
Fixe a.Val sur 19506.
5-4 Fonctions du PC3000
Fonctions de conversion de type
UDINT_TO_TIME
Convertit un nombre entier (UDINT) de millisecondes en une durée (TIME). L'entrée
IN doit être un nombre positif pour donner une durée valable.
TIME
UDIN gee |
Exemple ST:
a.Val:= UDINT TO TIME {IN:= 10500)
Fixe a. Val sur T#10s_500ms.
DATE_AND_TIME_TO_TOD
Converut une date et heure (DATE_AND_TIME) en heure du jour
(TIME _OF DAY) en supprimant la composante date (DATE).
DATE _AND TIME TO _TOD
DATE AND TIME. | TIME OF DAY
Exemple ST:
a.Val:= DATE AND TIME TO TOD(
IN:= DT#02-Sep-1991-14:30:00);
de type
&
2
7
E
o
>
c
Le
©
Fixe a.Val sur TOD#14:30:00,
Fonctions du PCS000 5-5
Fonctions de conversion de type
DATE AND TIME TO DT
Convertit une date et heure (DATE_AND TIME) en date (DATE) en supprimant la
composante heure du jour (TIME_OF DAY).
DATE AND TIME TODT — Y
DATE AND TIME DATE
Exemple ST:
a.Val:= DATE AND TIME TC DT (
IN:=DTF02-Sep-1991-14:30:00) ;
Fixe a.Val sur D#02-Sep-1991.
CONCAT DATE_TOD
Combine une date (DATE) et une heure du jour (TIME_OF_DAY) pour produire
une date et heure (DATE AND_TIME).
DATE — |
TIME OF_DAY —
DATE AND TIME
\.
Exemple ST:
a.Val:= CONCAT DATE TOD (INl:= Df0?2-Sep-1931,
IN2:= TOD#14:30:00};
Fixe a Val sur DT#02-Sep-1991-14:30-00.
5-6 Fonctions du PC3000
Fonctons de conversion de type
DT _ TO UDINT (versions 2.27 ei ultérieures)
Convertit une date (DATE) en un nombre entier sans signe (UDINT).
UDINT
pars +]
Exemple ST:
a.Val:= DT TO UDINT (IN:=DT#02-Sep-1993)
UDINT_TO_DT (versions 2.27 et uliérieures)
Convertit un nombre entier sans signe (UDINT) en (DATE).
DATE
upinT— |
Exemple ST:
date.Val:= UDINT TO DT (IN:=10349)
=
©
7
Lo
Ф
=
=
о
O
Fonctions du PC3000 5-7
Chapitre 6
FONCTIONS DE CONVERSION
DE CHAINES
Version 1
Sommaire
Présentation .......c—— e meme eee reee are Ree O
STRING_TO_ DINT .........e=me..eeenarncces nacen meno moore concern E
HEX_STAING. TO UDINT ............-.—.— eme me.rmanmecena narra BZ
GIN_STRING_TO UDINT ,.......... e. —e. e eeeeemarcenrrieccar enero. 6-2
OCT_STRING_TO UDINT ere 03
STRING_TO REAL -........._.ee=mesrearaacranerenarracenacareena anne O
STRING_TO TIME -.........em.essiesnricar rama ennna nana mona yorone sree ‚6-5
HMS_STRING. TO TIME ......... ee. cen ennna enn vano 6-6
DHMS_ STRING_TO TIME... ...e=e==m=erernareraarraca recta O6
STRING_TO_ DATE ars Bf
EURO STRING TO DATE......... ee. reemeeeareanorecareaara:: 8
US _STRING_TO DATE ............. eee... e. everoonaiarnieer nenes 6-8
STRING_TO TIME_OF DAY Marrrcaraserisaneumeasranaensa anse 6-8
DINT_TO STRING ..........eeeeemeerernesrarnar rece rece remanenano ee 8-9
UDINT_TO HEX_STRING .......... emana mena aire B-9
UDINT_TO BIN STRING... неее. 6-10
UDINT_TO OCT _STRING …..….......…..vroccoorerrenerransraanuess 5-10
REAL TO STRING _….……cvransesensareraonsran 6-1 1
TIME_TO STRING ...........memmecenricaorióna renena nana nana noria DÍ
TIME_TO HMS STRING ..........eeemearnecancaninernnearcer recaen: O 12
TEME TO DAHMS STRING.......em=eneercarracncane caras 6-12
vu
=
=
q
in
I.
D
=
[==
o
Ch
Fonctions du PC3000 Sommaire 6-1
Sommaire (suite)
DATE_TO STRING
DATE_TO EURO STRING... ccrrrercereevecrrre
DATE TO US STRING .................
TIME_OF_DAY_TO_STRING.......... eme nas
ASCII TO CHAR weve eee ee LEE
CHAR TO AS Cl ars
arena nr enana noe oran nO nene 6-14
Sommaire 6-2
Fonctions du PC 3000
Fonctions de conversion de chaînes
Présentation
Ces fonctions permettent de convertir des données contenues dans des chaînes de
caractères en un type de données particulier ou de convertir une valeur d'un type de
données pariiculier en une chaîne. Elles sont normalement utilisées avec des applica-
tions comprenant des communications, comme lorsqu'une valeur a été reçue dans une
chaîne sous la forme de texte ASCII et nécessite une conversion en im type de
données IEC DIS 1131 ou lorsqu'il est nécessaire de transmettre la valeur d'um
paramètre a un terminal sous la forme de texte ASCIL Par exemple, il est possible
d'utiliser STRING_TO_REAL pour convertir une chaine de caractères (STRING)
contenant "1.23" en valeur a virgule flottante (REAL) ou d'utiliser
TIME_TO_STRING pour convertir une durée en chame de caractéres comme
‘18s100ms".
Âvec les fonctions de conversion des chaînes de caractères, une chaîne de longueur
nulle, c'est-à-dire ", est restituée si le début de la chaîne d'entrée ne contrent pas de
caractères valables.
Le type de caractères qui définit des chaînes valables varie selon les différentes
fonctions de conversion des chaînes de caractères et est spécifié dans la description
des fonctions, Les fonctions de conversion des chaînes ne tiennent pas compte des
espaces de tête et s'arrêtent au premier caractère qui n'est pas valable pour le type
d'entrée considéré,
STRING_TO_DINT
Convertit une chaîne de caractères (SRING) en un nombre entier (DINT) qui
contient les chiffres 0 à 9. Les signes "+" ou "-" placés devant les chiffres sont
mterprétés comme le signe de la sortie.
PT ie ee ae
ee "a Le Remo Rb bp by Mo KE Eb oR bb bl KL
STRING
Exemple ST:
a.Val:= STRING TO DINT(IN:= '234');
Fixe a. Y al sur 234,
®
Le
ow
A+ Mt
CS
=
Q
=
= o
D
O
Fonctions du PC3000 6-1
Fonctions de conversión de chaines
HEX STRING TÓ UDINT
Convertit une chaine de caractéres (STRING) contenant un codage hexadécimal
ASCII avec les caracteres 0-9, A, B, C, D, E, F en un nombre entier sans signe
(UDINT). L'entrée ne doit pas être supérieure à "7FFFFFFF. Les espaces de tête ne
sont pas pris en compte et la conversion s'arrête au premier chiffre qui n'est pas
hexadécimal.
HEX_STRING_TO_UDINT T
STRING HO INT
Exemple ST:
a.Val:= HEX STRING TO UDINT (IN:= ' ZA");
Fixe a. Val sur 42.
BIN_STRING TO UDINT
Convertit une chaîne de caractères(STKING) contenant ies chiffres "1" et "0" en un
nombre entier (UDINTS, l'entrée pouvant contenir jusquà 31 ‘1’ et 'Ü'. Les espaces de
tête ne sont pas pris en compte et la conversion s'arrête au premier caractère qui n'est
* bar * A
ni Tni Y,
BIN STRING TO UDINT
STRING VOINT
Exemple ST:
a.Vai:= BIN STRING TO UDINT(IN:= ' 10l00101'};
Fixe aval sur 163.
6-2 Fonctions du PC3000
Fonctions de conversion de chaines
OCT_STRING_TO UDINT
Convertit une chaine de caracteres (STRING), contenant les chiffres '0' et 1'a'7 et
qui représente une valeur octale, en un nombre entier (UDINT). L'entrée ne doit pas
représenter une valeur octale supérieure à "177777777777, Les espaces de tête dans la
chaîne d'entrée ne sont pas pris en compte. La conversion s'arrête au premier
caractère qui n'est pas compris entre D à 7.
STRING VUDINT
Exemple ST:
a.Val:= OCT STRING TO UDINT (IN:= * 070');
Fixe a. Val sur 56.
@
Ls
=
9
7
E
a
>
E
=
о
Fonctions du PC3000 | 6-3
Fonctions de conversion de chaînes
STRING TO REAL
Convertit une chaîne de caractères (STRING) en un nombre à virgule flottante
(REAL). La chaine d'entrée peui comporter des espaces de tête, un signe + ou - ou
des espaces entre le signe et le premier chiffre. Un zéro de tête avant la virgule
décimale est facultatif. Après le signe facultatif, l'entrée doit uniquement contenir les
chiffres 'Ü' à 9" et une seule virgule décimale. La conversion s'arrête au premier
caractère non valable. Le format exponentiel n'est pas pris en charge.
STRING BEAL
Exemple ST:
a.Val:= STRING TC REAL {IN:= " - .23");
Fixe a.Val sur 0,23.
Exemple ST:
a.Val:= STRING TO REAL{IN:= '123.82FGZ}:
Fixe a.Val sur 123,82.
6-4 Fonctons du PC3000
Fonctions de conversion de chaines
STRING_TO TIME
Convertit une chaîne de caractères (STRING) en une durée (TIME). La chaïne doit
avoir la structure TEC, per exemple 5d14h12m18s100ms. Les champs nuls peuvent
ne pas éire indiqués, par exemple 5d18s. Le champ le moins sigmficatif peut avoir
une composante décimale.
srrivs —__
TIME
Exemple ST:
a.Val:= STRING TO TIME (IN:= 'Sdl4h"};
Fixe a. Val sur T#33_ 14h.
Exemple ST:
a.Val:= STRING TC TIME (IN:= *10.5h');
Fixe a. Val sur T#10h_30m.
Exemple ST:
a.val:= STRING TO TIME (IN:= " 12m5>00ms');
Fixe a. Val sur TA12m0s500ms.
a
=
© ©
©
n
=m
SD =
= ©
0
ÇG
Fonttions du PC3000 6-5
Fonctions de conversion de chaînes
HMS_STRING TO TIME
Convertit une chaîne de caractères (STRING) en une durée (TIME). La chaîne doit
avoir la structure heures, minutes, secondes, c'est-à-dire HH:MM:55.
HMS STRING TO TIME %
злые =]
TIME
Exemple ST:
a.Val:= HMS STRING TO TIME (IN:= '10:20:10"};
Fixe a Val sur T#10h_20m_10s.
DHMS_STRING TO TIME
Convertit une chaîne de caractères (STRING) en ume durée (TIME). La chaîne doit
avoir la structure jour, heure, minute, seconde, c'est-à-dire DD:HH:MM:S5.
STRING = |
TIME
Exemple ST:
a.Val:= DHMS STRING TO TIME (IN:= "20:10 20:10')7;
Fixe a.Val sur T#20d._10h_20m_10s.
6-6 Fonctions du PC3000
Fonctions de conversion de chaînes
STRING TO DATE
Convertit une chaîne de caractères (STRING) en une date (DATE) La chaîne doit
avoir la structure IEC, c'est-à-dire année, mois, jour (YYYY-MM-DD).
STRING
Exempie ST:
a.Val:= STRING TO DATE (IN:='1931-02-02"');
Fixe a.Val sr D#02-Sep-1991.
EURO_STRING TO DATE
Convertit une chaîne de caractères avec la date de structure européenne (STRING) en
une date (DATE). La chaîne doit avoir la structure jour, mois, année, c'est-à-dire DD-
MM-YY.
EURO STRING TO DATE *
STRING DATE
Exemple ST:
a.val:= EURO STRING TO DATE (IN:= '02-05-31"):;
Fixe a.Val sur D#02-Sep-1991.
a
TU
=
ce
PL
[an
=
ГЕ
o
(de |
Fonctions du PC3000 6-7
Fonctions de conversion de chaines
US STRING_TO DATE
Convertit une CHAINE en présentation américaine en une DATE. La chaine doit
avoir la structure mois, jour, année, cest-a-dire MM-DD-Y Y.
STRING
Exemple ST:
a.Val:= US STRING TO DATE (IN:= '09-02-91!);
Fixe a. Val sur D402-Sep-1991,
STRING_TO_TIME_OF_DAY
Convertit une chaine de caractères (STRING) en une heure du jour
{TIME_OF DAY). La chaine doit avoir Ia structure IEC heure, minute, seconde,
cest-4-dire HH:MM:55,
STRING
Exemple ST:
a.Val:= STRING TO TIME OF DAY (IN:= '12:30:10'};
Fixe a, Y al sur TODA12:30:10.
6-8 Fonctions du PC3000
Fonctions de conversion de chaines
DINT_TO_ STRING
Convertit un entier double (DINT) en une chaine de caractéres décimaux avec signe
(STRING).
STRING
DINT |
Exemple ST:
a.Val:= DINT TO STRING(IN:= -33);
Fixe aval sur '-33”.
UDINT_TO_HEX_STRING
Convertit un nombre entier double sans signe (UDINT) en chaine de caractéres
hexadécimaux (STRING). La valeur d'entrée ne doit pas être négative,
UD INT
Exemple ST:
a.Val:= UDINT TO HEX STRING(IN:= 42};
Fixe a Val sur ZA.
OD
Le
=
2
tn
L
d
pr
=
Le)
+
Fonctions du PG3000 6-9
Fonctions de conversion de chaînes
UDINT_ TO BIN_STRING
Convertit un enter double sans signe (UDINT) en chaïne de caractères Innaires
(STRING). Seul le nombre de chiffres nécessaire pour représenter la valeur est créé ;
aucun zéro de tête n'est ajouté. La valeur d'entrée ne doit pas être négative.
Exemple ST:
a.Val:= UDINT TO BIN STRING(IN:= 42};
Fixe a. Val sur 101010
UDINT_TO_OCT_STRING
Convertit un entier double sans signe (UDINT) en chaine de caractères octaux
(STRING). Seul le nombre de chiffres nécessaire pour représenter la valeur est CrÉé ;
aucun zéro de tête n'est ajouté. La valeur d'entrée ne doit pas être négative.
UDINT_FO OCT STRING
UDINT
Exemple ST:
a.Val:= UDINT TO OCT STRING(IN:= 42};
Fixe a.Val sur 52.
6-10 Fonctions du PCG3000
Fonctions de conversion de chaines
REAL TO STRING
Convertit un nombre a virgule flottante (REAL) en une chaîne de caractères égale à
(STRING). Le paramètre DPS définit le nombre de décimales. $i DPS est égal à 0, il
n'y à aucune décimale mais le dernier caractère est ume virgule décimale. Si DPS est
égal à -t, tl n'y a aucune décimale et aucune virgule décimale.
REAL TO STRING = §
REAL | | zw
vsis?t Dl | ors
\
STRING
Exempie ST:
a.Val:= REAL TO STRING(IN:= 42.343, DPS := 2);
Fixe a.Yal a 42.34,
TIME_TO_STRING
Convertit une durée (TIME) en une chaîne de caracteres (STRING), La chaîne a la
structure IEC, par exemple 5d14h12m18s100ms.
TIME TO STRING = XT
TIME
Exemple ST:
a.Val:= TIME TO SRING(IN:= T#12h 30m 20s};
Fixe 2. Val sur '12h30m208',
e
<
= Ww
vg:
DE
a
Er
£0
©
o
Fonctions du PC3000 5-11
Fonctions de conversion de chaînes
TIME_TO_HMS_STRING
Convertit une durée (TIME) en une chame de caractères (STRING), La chaîne doit
avoir la stracture heure, minute, seconde, c'est-à-dire HH:-MM:55.
TIME
Exemple ST:
a.Val:= TIME TO HMS STRING{IN:= T#12h 30m 20s);
Fixe a. Val sur 12-30-20"
TIME_TO_DHMS STRING
Convertit une durée (TIME) en une chaîne de caractéres (STRING). La chaine doit
avoir la structure jour, heure, minute, seconde, c'est-à-dire DO:-HH:MM:58.
TIME — |
STRING
Exemple ST:
a.Val:= TIME TO DHMS STRING (IN:= T#2d 12h 30m 20s};
Fixe a. Val sur '02:12:30:20",
6-12 ronctions du PC3000
Fonctions de conversion de chaînes
DATE TO STRING
Convertit une date (DATE) en une chaine de caractères (STRING). La chaîne a la
structure IEC année, mois, jour, c'est-à-dire ŸY Y Y-MM-DD.
ATE TO STRING Y
Чан —
DATE
Exemple ST:
a.Val:= DATE TO STRING(IN:= D#02-Sep-1991)
Fixe a. Val sur 1991-09-02.
DATE TO EURO STRING
Convertit une date (DATE) en ume chaîne de caractères de structure européenne
(STRING). La chaîne a la structure jour, mots, année, c'est-à-dire DD-MM-YY.
DATE TO EURO STRING
DATE
Exemple ST:
a.Val:= DATE TO EURO STRING(IN:= Df0Z2-Sep— 1991);
Fixe aval sur 02-09-91".
La
Le
«
50
DE
De
ce
3
O
Fonctions du PC3009 6-13
Fonctions de conversion de chaînes
DATE_TO_US STRING
Convertit une date (DATE) en une chaîne de caractères de structure américaine
(STRING). La chaîne a la structure mois, jour, armée, c'est-à-dire MM-DD-YY.
DATE _TO_US TRIN
—
DATE
Exemple ST:
a.Val:= DATE TO US STRING(IN:= D#0Z-Sep-1991}
Fixe a.Val sur 09-02-91"
TIME_OF_DAY_TO_STRING
Convertit une henre du jour (TTIME_OF_DAY) en une chaîne de caractères
(STRING). La chaîne a la structure IEC heure, minute, seconde, c'est-à-dire
HH:MM:55.
Exemple ST:
a.Val:= TIME OF DAY TO STRING(IN:= TOD#12:30:10};
Fixa a. Val sur "12:30:10,
5-14 Fonctions du PC3000
Fonctions de conversion de chaines
ASCII_TO_CHAR
Convertit un nombre entier (USINT) compres entre 0 et 255 en une chaine de
caractères ASCIL Si l'entier est en dehors de cette plage, la valeur restituée est O.
USINT —
STRING
Exempie ST:
a.Val:= ASCII TO CHAR(IN:= 66);
Fixe a Val sur B'.
CHAR TO ASCII
Convertit un caractère ASCII (STRING) en un entier (USINT) compris entre 0 et
255,
Une chaîne vide donne la valeur 0.
ASCII
STRING
Exemple ST:
a.Val:= CHAR TO ASCIT(IN:= 'B');
Fixe a.val sur 66.
a
=
LE
Rel]
No
a
=
ar
o
Le
Fonctions du PC3000 6-15
Chapitre 7
FONCTIONS DE CALCULS
ARITHMETIQUES
SUR LE TEMPS
Version 2
Sommaire
Présentatton ..............
ADD_DATE AND_TIME T.......... 2. ieneeone nn
SUB_DATE_AND_TIME T -.........—ee weee eres
SUB_DATE AND TIME .................—.——eeneeennen reos
ADD TOD TIME............——.—..—.—.e een annie
SUB TOD TIME esse EEE EEE
SUB_TOD TOD ................ieeeie nenes
ADD_TIME_TO_ TIME -.............—.——..——.eamiereca mn reee ene
SUB_TIME_FROM_ TIME ................—————————reeeememenornor ana
MUL_TIME_BY REAL -.............———.—..-emmcinne ne
.. 7-1
7-1
7-2
7-2
7-3
7-3
‚7-4
7-5
7-6
Fonctions du PC3000
Sommaire 7-1
a
3
+
pr
©
=
=
=
[=
<I
La
El
=
Me
er]
a
da
=
i
Fonctons de calculs arithmétiques surie temps
Présentation
La manipulation des calculs de dates et d'heures est facilitée par tout un ensemble de
fonctions temporelles. Les fonctions offertes comprennent la plupart des opérations
valables d'addition et de soustraction entre les différents types de données dates et
heures. Par exemple, ADD _ DATE_AND TIME_T permet d'ajouter une période
exprimée sous la forme d'une durée (TIME) à une date et heure
(DATE AND TIME) pour créer une date et heure fumre (DATE_AND TIME).
[+h]
32
TE
Tr
En
= $
fa
[E
a ET
ADD _ DATE AND TIME T
Ajoute une durée (TIME) (IN2) à une date et heure (DATE_AND TIME) (IN1} pour
donner une date et heure (DATE AND TIME).
DATE AND TIME DATE AND TIME
TIME
Exemple ST:
a.Val:= ADD DATE AND TIME T(
INl: DI#02-Sep-1991-12:30:10,
INZ: T#0ld 01h Olm 0ls);
Règle a Val à DTF03-Sep-1991-13:31:11.
Fonctions du PC3000
Fonctions de calcuis anthmetiques sur le temps
SUB_DATE AND TIME T
Soustrait une durée (TIME) (IN2) d'une date et heure (DATE_AND TIME) (IN1)
pour donner une date et heure (DATE AND TIME).
EE A A HH
SUB DATE AND TIMET %
O] DATE ANO TIME
Exemple ST:
a.Val:= SUB DATE AND TIME T(
IN1:=DT#02-Sep-1991-12:30:10,
IN2:=T#01d 01h 01m 01s);
Regle a.Val 2 DT#01-Sep-1991-11:29:09.
SUB_DATE_AND TIME
Soustrait une date et heure (BATE_AND_TIME) (IN2) d'une autre date et heure
(DATE_AND_TIME) (IN1) pour donner une durée (TIME).
SUB _ DATE_ AND TIME NX
DATE AND TIME — | IN]
DATE AND_TIME —L.. | пе
N
TIME
Exemple ST:
a.Val:= SUB DATE AND TIME T(
INl:= DT#02-Sep—19%1-12:30:10,
IN2:= DT#0]1-Sep—-19%1-11:29:09);
Règle a. Val à TfO1d_Olh_Olm_01s.
7-2 Fonctions du PC3000
Fonctions de calculs anthmétiques sur le temps
ADD_TOD_TIME
Ajoute une durée (TIME) (IN2) à une heure du jour (TIME _0F_ DAY) (IN1) pour
donner une heure cha jour (TIME_OF_DAY).
a
un
E
q
ji
2
[
=
a
ne, к Rh tl E DO AAA pa, = Г to ="
%
TOD_TIME
D
3
с
—
©
=
Æ
=
=
«I
TIME_OF_DAY TIME OF DAY
TIME
Exemple ST:
a.val:= ADD TOD TIME {INI:= TOD#12 30:10,
IN2:= T#20m 10s);
Règle a, Val à TOD#12:50:20.
SUB_TOD_TIME
Soustrait une durée (TIME) (IN2) d'une heure du jour (TIME _OF_DAY) (IN1) pour
donner une heure du jour (TIME _OF_DAY).
TIME OF DAY TIME OF DAY
TIME
Exemple ST:
a.Val:= SUB TOD TIME (INl:= TOD#12:30:10,
INZ:= T#20m 105);
Règle a. Val à TOD#12:10:00.
Fonctions du PC3000 7-3
Fonctions de calouls aritrmétiques sur le temps
SUB_TOD_TOD
Soustrait une heure du jour (TIME_OF_DAY) (IN2) d'une autre heure du jour
(TIME_OF_DAY) (IN1) pour donner une durée (TIME). H faut noter que, si IN2 est
postérieure 3 IN1 dans la journée, la durée (TIME) sera restituée sous la forme T#0s..
TIME OF DAY TIME
TIME CF DAY
Exemple ST:
a.Val:= SUB TOD TOD (INl:= TOD#12:30:10,
IN2:= TCDF10:20:08);
Regie time. Val a TH2h_10m_2s.
7-4 Fonctions du PC:3000
Fonctions de calculs arithmétiques sur le temps
ADD _TIME TO TIME (versions 2.27 et postérieures)
@ on
Ajoute une durée (TIME) à une seconde durée (TIME). Le résultat est aussi une BE
durée (TIME). e
Eo
vu
— -
<A e
TIME — |
TIME |
Exemple ST:
time.Val:= ADD TIME TO TIME (IN1:=T#12m 14s,
IN2:=T#4h 18m 595};
Regle time. Y al a TH4h 31m 13s
SUB_TIME FROM_TIME (versions 2.27 et postérieures)
Soustrait une durée (TIME) (IN2) d'une deuxième durée (TIMEXINI).
Le résultat est aussi une durée (TIME). Si IN2 est supérieure a IN], la fonction
restitue une valeur de T#OrmS.
rive — | INL
rive —{
Exemple ST:
time.Val:= SUB TIME FROM TIME (IN1:=T#3d 5h 43m 12s,
IN2:=T#4h 16m 48};
Règle time.Val à TF3d_1h_27m_8s
time.Val:= SUB TIME FROM TIME (IN1:=T#lh 59m Es,
IN2:=T#1d 3h-4m 365};
Règle time. Val à T#0mS$
Fonctions du PC3000
Fonctions de calculs aritimétques sur le temps
MUL_TIME BY _REAL (versions 2.27 et postérieures)
Multiplie une durée (TIME) par une valeur numérique (REAL) Le résultat est une
durée (TIME).
TIME
TIME —
REAL — |
Exemple ST:
time.Val:= MUL TIME BY REAL (IN1:=T+1d 3h 36m 12s,
IN2:=2.0};
Regle ime. Val a T#2d_7h_12m_24s.
Fonctions du PC3000
Chapitre 8
FONCTIONS COMPACTES
Version 1
Sommaire
PresentatiO er EEE RER EEE ER EEE came canne maman anna auras ae
Inversion d'octets
EXT_BOOL_FROM_STR..........—.——.—.. emmm cae
REP_BOOL_IN_STR ..........—.....e— mereces
EXT_SINT_FROM_STR ..............—eeceneeene reee
REP _SINT_IN_ STR -..ee...—..eaeeeee namas
EXT_INT FROM ST Besserer rer rer EL
REP_INT_IN_STR -..eennie.ineo nene enanas
EXT_DINT_FROM_STR .........e.=eemeeeeennnar nro enanas
REP _DINT_IN_STR.............—.. ener nens
EXT_USINT_FROM_STÉ........... menes
REP _USINT IN_STR -............—.——ree.reecicea ccoo ecnenne ne
EXT_UINT_FROM_STR ................mmeecineenneones
A EI enana ias
EXT_UDINT_FROM_STR........... mece EEE
REP _UDINT IN _STR rer
EXT_REAL_FROM_STR ……………………ucrorsreeneennencennencess
A
EXT_TIME_FROM_STR -...........—..meeeein nenes
N
EXT_DT_FROM_STR................m.eeconeeeen es
REP DT IN STR N
EXT INT. FROM _STR_X ......enin.eeene ene
8-7
Fonctions du PC3000
Sommaire 8-1
©
D)
a
Q
«a
a
=
o
a
Sommaire (suite)
REP _INT_IN STR Xoo are 8-14
EXT _DINT_FROM_STHF_X ....……cvrsovercanrrancenserneneressenauees ‚8-14
REP DINT IN STR X 2er eeeeeeeneen ener enn EEE 8-15
EXT_UINT FROM STR Xen... enema na 9-15
REP_UINT_IN_STR_X _..........…veasvarsovecrannsenercsrasirran ce 8-16
EXT_UDINT_FRM_STR_X-...........— ee. enemananerancona reee E 18
REP _UDINT_IN STR X...eccrerrerrrssenten nena E
Sommaire 8-2 Fonctions du PC 3000
Fonctions compactes
Présentation
Une série de fonctions compactes permet de compacter ou de décompacter un
ensemble de valeurs d'un type de données particulier dans une chaine. Ces fonctions
peuvent servir à un certain nombre d'applications comme le compactage d'une série
de valeurs en une chaîne de caractères pour la transmission par les communications
ou l'inclusion d'un ensemble de valeurs dans un système de recettes. Par exemple,
REP_SINT_IN_STR remplace un entier court dans une chaîne à un emplacement
fixé.
Les fonctions compactes permettent de traiter ies chaînes de caractéres comme les
variables utilisateur Long_string ou les variables déportées Remote_Str comme des
ensembles de valeurs de types de données spécifiés. Il existe une paire de fonctions
pour chaque type de données élémentaire : une fonction remplace une valeur dans la
chaîne (REP_*** IN_STR) et yne fonction extrait une valeur d'une chaîne
(EXT_*** FROM STR) où *** est le nom du type de données.
La fonction ‘remplace’ sert aussi à insérer une valeur initiale dans la chaîne de
caractères. En règle générale, l'accès aux chaînes devrait uniquement se faire à l'aide
de ces fonctions. I] faut normalement siocker un seul type de données dans une
chaîne. Le paramètre INDEX sert à sélectionner l'élément de l'ensemble’ à lire ou
écrire. Le premier élément a un INDEX égal à zéro. Les éléments sont stockés de la
gauche vers la droite dans la chaîne et condensés en octets adjacents ; les valeurs ne
sont séparées par aucun octet vide.
Si l'on essaie de lire un élément situé après la fin de la chaîne, la valeur par défaut de
ce type de données (0 normaïement) est restituée. Si l'on essaie d'écrire un élément
situé après la fin de la chaîne, la chaîne sera prolongée de mamière à inclure cet
élément, Lors du prolongement des chaînes, les nouveaux éléments sont configurés
pour la valeur par défaut de ce type de données. Par exemple, lors de la création
d'une variable utilisateur Long_String, elle devient par défaut une chaîne de longueur
nulle, c'est-à-dire ". Si une valeur est ajoutée à la chaîne à l'aide d'INDEX3, la chaîne
sera prolongée pour contenir 4 éléments (0, 1, 2 et 3) : les valeurs des éléments Ü, 1 et
2 seront initialisées pour prendre des valeurs nulles, c'est-à-dire Ü pour les éléments
q
en
a
what
Q
(3!
|= В
=
Q
|
numériques.
Exemple ST:
strl.Val:= ''; (* Initialize String*)
strl.Val:= REP INT IN STR(STR:= strl.Val,
INDEX:= 3,
VAL:= 3000);
int0.Val:= EXT INT FROM STR(STR:= strl.Val,
INDEX:= C};
Fonctions du PC3000 8-1
Fonctions compactes
intl.Val:= EXT INT FROM STR(STR:= strl.Val,
INDEX:= 1};
int3.Val := EXT INT FROM STR(STR:= strl.Val,
INDEX:= 3);
Regle int0.Val à 0, intl.Val à 0 et nt3.Val a 3600.
N.B. : les chaines manipulées a l'aide des fonctions
COMPACTES ne doivent pas être ensuite manipulées à l'aide
des fonctions STRING (chaïne) car des valeurs internes
risqueraient d'être perdues en raison d'un mauvais alignement dans la
zone de stockage de la chaîne.
Si la chaîne de destination d'un REP_***_IN_STR ne peut pas être prolongée pour
contenir le résultat parce qu'elle dépasse la longueur maximale de la chaîne,
l'ensemble de la chaîne sera positionné sur une chaîne nulle, c'est-à-dire ".
Ces fonctions sont normalement utilisées avec des chaînes qui ont une longueur
maximale de 255 octets comme la variable utilisateur Long_String mais peuvent être
utilisées avec des chaînes plus courtes. Dans ce cas, le nombre de valeurs qui peuvent
être condensées sera réduit et il faut faire attention à ne pas extraire ou remplacer des
valeurs après la fin de la chaîne.
Se reporter aux fonctions REP BOOL_IN STR et EXT_BOOL_FROM_STR pour
avoir des exemples de ST. Toutes les fonctions suivent le même modèle, bien qu'elles
extraient ou remplacent des types de données différents et que le nombre de valeurs
condensable en une chaïne varie.
Inversion d'octets
Si la transmission de chaînes compactes à d'autres équipements ou la réception de
chaînes compactes provenant d'autres équipements 5 impose, par exemple par
l'intermédiaire de communications série, il peut être nécessaire d'utiliser la variante
Inversion d'octets de ces fonctions. Elles ont la forme
REP _*** IN STR_X et EXT_***_FROM_STR_X.
L'inversion d'octets peut être nécessaire pour les types de données en cas de transfert
des chaînes compactes entre des systèmes qui utilisent une unplantation mémoire
différente du PC3000.
Par exemple, si le PC3000 reçoit des chaînes contenant des blocs d'entiers 32 bits
(entier double DINT) qui ont été créés sur certains automates programmables, la
fonction EXT_DINT_FROM_STR_X peut être nécessaire.
KEP_DINT_IN_STR_X peut être nécessaire pour créer une chaîne contenant un bloc
d'entiers à transmettre à certains automates programmables.
8-2
Fonctions du PC3000
Fonctions compactes
EXT _BOOL_FROM_STR
Extrait une valeur booléenne (BOOL) d'une chaîne de caractères. Huit valeurs
booléennes sont stockées dans chaque caractère, ce qui permet d'en stocker un
maximum de 2040 dans une chaîne de 255 caractères (STRING). INDEX est compris
entre O et 2039. |
EXT BOOL FROM STR — À
BOCH
STRING — |
USING — |
©
<
=
Le)
T
a
E
=
o
Exemple ST:
bool.Val:= EXT BCOL FROM STR(STR := striVal,
INDEX:= 300);
bool. Val est réglée a Tétat du 301eme bit condensé dans la chaine stri. Val.
Fonctions du PC3000 8-3
Fonctions compactes
REP_BOOL_IN_STR
Remplace une valeur booléenne dans une chaîne. Huit valeurs booléermes (BOOL)
sont stockées dans chaque caractère, ce qui permet d'en stocker un maximum de 2040
dans une chaîne de 255 caractères (STRING), INDEX est compris entre Ü et 2039.
STRING wd STR
REP BOOL IN STR
UE INT —{ INDEX
ВОО, — | VAL
\
STRING
Exemple ST:
strl.Val:= REP BOOL IN STR (STR := srl.Val,
INDEX := 300,
VAL := 1 (* TRUE *} };
Le 301ème bit condensé dans la chaine str]. Val est réglé à 1, c'est-à-dire VRAI.
EXT SINT FROM STR
Extrait un entier court avec signe (SINT) d'une chaine de caractères (STRING).
Chaque valeur est stockée sous la forme d'un seul caractère de la chaîne, ce qui
permet de stocker un maximum de 255 entiers courts dans une chame de 255
caractères. INDEX est compris entre Ô et 254.
Restitue une valeur comprise entre -128 et 127,
STRING — STR
USINT — INDEX
EXT SINT FROM STR BS
SINT
8-4 Fonctions du PC3000
Fonctons compactes
REP_SINT_IN_STR
Remplace un entier court avec signe (SINT) dans une chaine de caractères
(STRING). Chaque valeur est stockée sous la forme d'un seul caractere de la chaine,
ce qui permet de stocker un maximum de 255 entiers courts dans une chaîne de 255
caractères. INDEX est compris entre 0 et 234.
VAL est comprise entre -128 et 127.
strive —| | STR a a 1 En STRING
USINT —] | INDEX
SINT — | VAL
\..
И
Le
с
Loi
©
к
e
=
o
=
EXT INT FROM STR
Exrait ur entier avec signe (INT) d'une chaîne de caractères (STRING). Chaque
valeur est stockée sous la forme de deux caractères de la chaîne (STRING), ce qui
permet de stocker un maximum de 127 entiers avec signe dans une chaîne de 255
caractères. INDEX est compris entre 0 et 126.
Restitue uné valeur comprise entre -32768 et 32767.
STRING
USINT
Fonctions du PC3600 8-5
Fonctions compactes
REP _INT_IN_STR
Remplace un entier avec signe (INT) dans une chaîne de caractères (STRING).
Chaque valeur est stockée sous la forme de deux caractères de la chaîne, ce qui
permet d'en stocker un maximum de 127 dans une chaîne de 255 caractères. INDEX
est compris entre Ô et 126,
VAL est comprise entre -32768 et 32767.
STRING ==
usINT |
my |
STRING
EXT_DINT_FROM_STR
Extrait un entier double avec signe (DINT) d'une chaine de caractéres (STRING). |
Chaque valeur est stockée sous la forme de quatre caractères de la chaine, ce qui
permet d'en stocker un maximum de 63 dans mme chaîne de 255 caractères. INDEX
est compris entre et 62.
Restitue une valeur comprise entre -2147483648 er 2147483647.
A i ay
EXT_DINT FROM_STR
=
USINT = INDEX
DINT
8-5 Fonctions du PC3000
Fonctions compactes
REP _DINT IN STR
Remplace un entier double avec signe (DINT) dans une chaîne de caractères
(STRING). Chaque valeur est stockée sous la forme de quatre caractères de la chaîne,
ce qui permet d'en stocker un maximum de 63 dans une chaîne de 255 caractères.
INDEX est compris entre ( et 62.
VAL est comprise entre -2147483648 et 2147483647,
STRING —
USINT — |
огмт =]
STRING
©
a
o]
[er
oc
a,
=
=
|
GC
EXT USINT FROM_STR
Extrait un entier court sans signe (USINT') d'une chaîne de caractères (STRING)
Chaque valeur est stockée sous la forme d'un seul caractère de la chaîne, ce qui
permet d'en stocker un maximum de 255 dans une chaîne de 255 caractères. INDEX
est compris entre ( et 254,
Restitue une valeur comprise entre 0 et 255.
SINT
Fonctions du PC3000 8-7
Fonctions compactes
REP_USINT_IN STR
Remplace un entier court sans signe (USINT) dans une chaïne de caractères
(STRING). Chaque valeur est stockée sous la forme d'un seul caractère de la chaine,
ce qui permet d'en stocker un maximum de 255 dans une chaîne de 255 caractères.
INDEX est compris entre 0 et 254,
VAL est comprise entre ( et 255.
EE EE
A ee E07
a be be fe ja WH WHE lb el lll bl mb lb lo la loo a lob a le hehe hehe
REP_USINT IN_ST
STRING
VSINT — INDEX
STRING
USINT VAL
EXT_UINT FROM _STR
Extrait un entier sans signe (UINT) d'une chaîne de caractères. Chaque valeur est
stockée sous la forme de deux caracières de la chaîne, ce qui permet d'en stocker un
maximum de 127 dans une chaîne de 253 caractères. INDEX est compris entre 0 et
126.
Restitue une valeur comprise entre 0 ei 63535.
STRING — |
USINT — |
8-8 Fonctions du PCÇC300D
Fonctions compactes
REP_UINT_IN_STR
Remplace um entier sans signe (UINT) dans une chaîne de caractères (STRING).
Chaque valeur est stockée sous la forme de deux caractères de la chaîne, ce qui
permet d'en stocker un maximum de 127 dans une chaîne de 255 caractères.
a a ES
REP UINT IN STR
STRING — | STR
USINT — INDEX
UINT — | VAL
\_
STRING
dd
Len
La]
=
Li
(ye)
Ll
E
Le
O
EXT _UDINT_FROM STR
Extrait un entier double sans signe (UDINT) d'une chaine de caractères (STRING).
Chaque valeur est stockée sous la forme de quatre caractères de la chaîne, ce qui
permet d'en stocker un maximum de 63 dans une chaîne de 255 caractères. INDEX
est compris entre Ô et 62.
Restitue une valeur comprise entre 0 et 4294967295.
STRING — |
USINT md |
Fonctions du PC3000 . 8-9
Fonctions compactes
REP_UDINT_IN_STR
Remplace un entier double sans signe (UDINT) dans une chaîne de caractères
(STRING) Chaque valeur est stockée sous la forme de quatre caractères de la chaîne,
ce qui permet d'en stocker un maximum de 63 dans une chaîne de 255 caractères.
INDEX est compris entre Ú et 62.
VAL est comprise entre Ü et 429496 7294,
REP_UDINT_IN_STR
STRING md
ur À
UDINT — |
STRING
EXT _REAL_FROM STR
Extrait une valeur à virgule flottante (REAL) d'une chaîne de caractères (STRING).
Chaque valeur est stockée sous la forme de quatre caractères de la chaîne, ce qui
permet d'en stocker un maximum de 63 dans ume chaîne de 255 caractéres. La valeur
est stockée avec la structure IEEE Single Precision Binary Real. INDEX est compris
entre 0 et 62.
EXT _REAL FROM STR
STRING — | sm
USINT [О INDEX
REAL
8-10 Fonctions du PC3000
Fonctions compactes
REP REAL IN STR
Remplace une valeur à virgule flotiante (REAL) dans une chame de caractères
(STRING) Chaque valeur est stockée sous la forme de quatre caractères de la chaîne,
ce qui permet d'en stocker un maximum de 63 dans une chaîne de 255 caractères. La
valeur est stockée avec la structure IEEE Single Precision Binary Reai. INDEX est
compris entre Ú el 62.
REP REAL IN STR
STRING — | STR
ETA — | INDEX
REAL — | VAL
STRING
<
Le
uu
jal
|5
0
Lo
Е
|+
O
EXT_TIME_FROM_STR
Extrait une durée (TIME) d'une chaine de caracteres (STRING). Chaque valeur est
stockée sous la forme de quatre caractères de la chaîne, ce qui permet d'en stocker un
maximum de 63 dans une chaîne de 255 caractères. La valeur est stockée sous la
forme d'un nombre entier de millisecondes. INDEX est compris entre ( et 62,
Restitue une valeur comprise entre ms et 49d17h2m47s295ms.
EXT_TIME FROM _SFR
STRING TIME
USINT
Fonctions du PC3000 8-11
Fonctions compactes
REP_TIME_IN_STR
Remplace une durée (TIME) dans une chaîne de caractères (STRING). Chaque
valeur est stockée sous la forme de quatre caracières de la chaîne, ce qui permet d'en
stocker un maximum de 63 dans une chaîne de 255 caractères. INDEX est compris
entre Ÿ et 62.
VAL est comprise entre Oms et 49d17h2m47s295ms.
STRING STRING
—_
USINT en
—{_
TIME
EXT DT FROM STR
Extrait une date et heure d'une chaine de caractères. Chaque valeur est stockée sous
la forme de quatre caractéres de la chaine, ce qui permet den stocker un maximum de
63 dans une chaîne de 255 caractères,
La valeur est stockée sous la forme d'un nombre entier de secondes depuis 1970-01 -
01-00:00:00. INDEX est compris entre 0 et 62.
EXT DT FR OM _STR eee
DATE AND TIME
STRING — | STR
USINT — INDEX
8-12 Fonctions du PC3000
Fonctions compactes
REP _DT IN STR
Remplace une date et heure (DATE_AND TIME) dans une chaîne de caractères
(STRING). Chaque valeur est stockée sous la forme de quatre caractères de Ia chaîne,
ce qui permet d'en stocker un maximum de 63 dans ume chaîne de 255 caractères.
La valeur est stockée sous la forme d'un nombre entier de secondes depuis 1970-01-
{1-00:00:00. INDEX est compris entre 0 et 62.
STRING | | sm o
USINT -f INDEX
DATE_AND_TIME — | va
STRING
@
<
a
o
К
o
=
Le
©
EXT INT_FROM_STR_X
Extrait un entier avec signe (INT), dans l'ordre inverse des octets, d'une chaîne de
caractères (STRING). Chaque valeur est stockée sous la forme de deux caractères de
la chaîne, cé qui permet d'en stocker un maximum de 127 dans une chaîne de 255
caractères. INDEX est compris entre Ü et 126.
Restitue une valeur comprise entre -32768 et 32767.
‚
CL
EXT INT FROM STR X
STRING —
USINT — |
INT
Fonctons du PC3000 8-13
Fonctions compactes
REP_INT_IN_STR_X
Remplace un entier avec signe (INT), dans l'ordre inverse des octets, dans une chaîne
de caractères (STRING). Chaque valeur est stockée sous la forme de deux caractères
de la chaîne, ce qui permet d'en stocker un maximum de 127 dans une chaîne de 255
caractères. INDEX est compris entre 0 et 126.
VAL est comprise entre -32768 et 32767,
REP INT IN STR X
STRING —
USINT — |
INT
STRING
|
EXT_DINT_FROM STR_X
Extrait un entier double avec signe (DINT), dans l'ordre inverse des octets, d'une
chaîne de caractères (STRING). Chaque valeur est stockée sous la forme de quatre
caractères de la chaîne, çe qui permet d'en stocker un maximum de 63 dans une
chaîne de 255 caractères. INDEX est compris entre 0 et 62.
Restitue une valeur comprise entre -2147483648 et 2147483647.
Be EL Tat RT A
EXT DINT FROM STR X
STRING —d |
USINT | |
DINT
8-14 Fonctons du PC3000
Fonctions compactes
REP DINT IN STR _X
Remplace un entier double avec signe (DINT), dans 'ordre inverse des octets, dans
une chaîne de caractères (STRING). Chaque valeur est stockée sous la forme de
quatre caractères de la chaîne, ce qui permet d'en stocker um maximurtt de 63 dans
une chaîne de 255 caractères. INDEX est compris entre Ü et 62.
VAL est comprise entre -2147483648 et 2147453647.
CEE EEE LE ES A SE CEE a re}
REP. DINT_IN_ STR X N oy
STRING — STRING g
cz В
SINT w=] | =
Q
pnt — |
EXT _UINT FROM STR _X
Extrait un entier sans signe (DINT), dans l'ordre inverse des octets, d'une chaine de
caractères (STRING). Chaque valeur est stockée sous la forme de deux caractères de
la chaîne, ce qui permet d'en stocker un maximum de 127 dans une chaîne de 255
caracteres, INDEX est compris entre D et 126.
Restitue une valeur comprise entre Q et 65535,
EXT_UINT_FROM_STR_X a
STRING —_
USINT —
UINT
Fonctions du PC3000 8-15
Fonctions compactes
REP UINT IN STR_X
Remplace un entier sans signe (UINT), dans l'ordre inverse des octets, dans une
charne de caractères (STKING). Chaque valeur est stockée sous Ia forme de deux
caractères de la chaîne, ce qui permet d'en stocker un maximum de 127 dans une
chaîne de 255 caractères. INDEX est compris entre ( et 126.
VAL est comprise entre () et 65535,
STRING — ‘| sm REF DINLINSTR A STRING
vsiN | | mex
ont —f | va
=
EXT_UDINT_FROM_STR_X
Extrait un entier double sans signe (UDINT), dans l'ordre inverse des octets, d'une
chaîne de caractères (STRING). Chaque valeur est stockée sous la forme de quatre
caractères de la chaîne, ce qui permet d'en stocker un maximum de 63 dans une
chaîne de 255 caractères. INDEX est compris entre { et 62.
Restitue une valeur comprise enire 0 et 4294967294,
EXT UDINT FROM
STRING — |
usINT |
STR
EDINI
INDEX
8-16 Fonctons du PC3000
Fonctons compactes
REP_UDINT_IN_STR
Remplace un entier double sans signe (USINT), dans l'ordre inverse des octets, dans
une chaîne de caractères (STRING). Chaque valeur est stockée sous la forme de
quatre caractères de la chaîne, ce qui permet d'en stocker ur maximum de 63 dans
une chaîne de 255 caractères. INDEX est compris entre Ô et 62.
Restitue une valeur comprise entre ( et 4294967294,
REP UDINT IN STR X Ÿ
STRING STRING
US INT
UDINT
e
=
[14]
sj"
||
хо
pw
=
Le,
[e]
Fonctions de PC3000 8-17
Chapitre 9
FONCTIONS
SUPPLEMENTAIRES DE
COMMUNICATION
Version 1
Sommaire
Présentation N
IEEE STRING TO REAL rrr eee 9-1
REAL TO IEEE STRING ..............me.ereeccemeccariarrniererrene——e. IL
o
255
—
a
= OO
=
rá
bet
c EF
oe 5
iL >
Fonctions du PC3000 Sommaire 9-1
Fonctions supplémentaires de communication
Présentation
Deux fonctions permettent de comprimer et de décomprimer des nombres IEEE
stockés dans des chaînes à l'aide de la structure de codage IEEE El Bisyne. Ces
fonctions assurent le codage ou le décodage des valeurs de paramètres à transmettre
avec le protocoie ElBisync.
Elles sont uniquement nécessaires pour les applications spécialisées dans lesquelles 1l
faut constnure ou décoder des messages composés. Dans la majeure partie des
applications, le codage et le décodage des valeurs de paramètres sont traités
automatiquement par le bloc fonction du module EI Bisync.
IEE_STRING_TO_REAL
Convertit une variable à virgule fiottante IEEE (REAL), condensée en une chaîne de
caractères (STRING) avec la struceure de codage El Bisync, en une variable à virgule
flottante (REAL) Consulter le document Présentation des communications PC3000
et le chapitre consacré aux communications "Esclave El Bisync” dans le "Manuel des
blocs fonctions” PC 3000 pour avoir des détails sur le codage des valeurs IEEE.
communication
"BL
aT
#2
E
=
+
о
==
Oo ©
Lo
Exempie ST:
reall.Val:= IEEE STRING TO REAL (IN := @ор'};
Regle reall. Val & 0,5.
Fonctions du PC3000 9-1
Fonctions supplémentzires de communication
REAL TO (EEE STRING
Convertit une variable à virgule flottante (REAL) en variable chaîne de caractères
(STRING) à l'aide du codage EI Bisync IEEE.
REAL TO IEEE STRING %
REAL | IN
Exemple $T:
strl.Val:= IEEE REAL TO STRING(IN:= -0.5);
Régle str] Val a '@op'.
9-2 Fonctions du PC3000
Chapitre 10
Fonctions de manipulation de
bits
Version 1
Sommaire
PréSentatiON ..…………cirecrrieccrecsrrencensarenaneraaeerassesssena season 10-1
Doubles nombres entiers (DINTS) .....……v…essressreesennseenerens 10-3
SET_BIT IN_DINT ......... meme 10-3
GET_BIT_FROM _DINT ...................—e ee ea nana nena enero 104
AND DINT ............e.rmeceracarercenanarerarrecnereca rre erce reee 0-4
de bits
=
L
Lo
a
=
=
=
<
=
Fonctions du PC3000 Sommaire 10-1
Fonctions de manipulation de bits
Présentation
Les nombres entiers sont souvent interprétés comme des configurations binaires.
C'est notamment le cas lorsque le traitement des communications série doit se faire à
un niveau élémentaire ou lorsque les états d'alarme sont assemblés en codes d'erreur.
Pour simplifier l'utilisation des nombres entiers, les fonctions BIT_MANIPUL
permettent de régler les bits des nombres entiers, d'extraire des bits individuel des
nombres entiers et de combiner et comparer des configurations binaires de nombres
entiers par des opérations AND, OR, XOR et NOT au niveau du bit.
Par exemple, au cours d'un traitement séquentiel, nous voulons surveiller toutes les
machines pour détecter un éventuel défaut dans un lot donné et remettre cet
enregistrement à l'état initial à la fin du lot. Si l'état des différentes machines arrive
au PC3000 sous forme dentrées numériques et si l'état des machines de l'usine est
représenté par un seul nombre entier surveillé par un ordinateur de contrôle, le
programme séquentiel contiendra peut-être сё qui suit :
Programme séquentiel :
…ÔÀAu démarrage des étapes du lot
Failure
oh
=
0
vu
Le
=
2
Le
2
=
©
=
=
=
…jusqu'à l'achèvement des étapes du lot
Liste ST :
{* CONTINUQUS *}
STEP failure :
(* update failure record if any machine has failed *)
(* machine 4 *}
IF me4 fail.Process Val = 1(*Cn*) THEN
failures.Val := SET BIT IN DINT( VALUE := failures.Val
, BIT NO := 4 , BIT := 1) ;
Fonctions du PC3000 10-1
Fonctions de manipulation de bits
END IF;
(* machine 5 *)
IF me5 fail.Process Val = 1(*Cn*) THEN
failures.Val := SET BIT IN DINT( VALUE := failures.Val
, BIT NO := 5, BIT := 1) ;
END IF;
END STEP
TRANSITION
FROM failure
TO reset
:= batchend.Process Val = 1{*end*} ;
END TRANSITION
(* SINGLE SHOT *)
STEP reset :
[* reset reason code at end of batch *)
failures.Val := 0 ;
END STEP
À noter que ce programme donne un effet différent a Tunlisation du bloc fonction
Boo!ToDint Avec Im, les défauts sont “verrouillés” a la variable dint “failures”,
tandis que le bloc fonction Boo!ToDint ne produirait que la mise à jour continue de la
simration de défaut.
De manière semblable, la valeur d'un bit d'un nombre entier peut être saisie à ur
point donné du cycle de traitement. Ce nombre entier peut provenir d'un flux continu
de nombres entiers produit par un simple appareil communicant. Au moment du
cycle où la valeur doit être saisie, une étape contenant la ligne suivante de ST est
exécutée :
me_state. Vai := GET_BIT_FROM DINT € VALUE := commsval.Val,
BIT_NO:=4 );
Des opérations plus complexes peuvent être exécutées en utilisant les fonctions de
manipulation de bit AND, OR, XOR et NOT.
10-2
Fonctions du PC3000
Fonctions de manipulation de bits
NOMBRES ENTIERS DOUBLES (DINTS)
Contrairement à nombre d'automates programmables (PLC), les mathématiques du
LCM utilisent des nombres entiers à 32 bits à signe en mode complément de deux.
Les numéros de bit vont de zéro (le mois significasif) à 31 (le plus significatif). Les
bits entre zéro et 30 ont un poids binamre égal à leur numéro et sont positifs. Ainsi, le
nombre décimal 123 représente les numéros de bit Ô, 1, 3, 4, 5 et 6 réglés tandis que
le nombre décimal 1,073,741,82A représente le numéro de bit 30 réglé. Pourtant, le
bit trente et un porte un signe négatif ainsi que le poids binaire de trente et un. Ainsi,
si seul le bit trente et un est réglé, le nombre entier a une valeur décimale de -
2,147,483,648, Si tous sont réglés, le nombre entier a une valeur décimale de -1.
Il est important que les personnes habituées à travailler avec des nombres entiers de
seize bits sans signe comprennent cette différence, noumment lorsqu'elles font des
comparaisons sur la base de la valeur décimale de configurations binaires.
SET BIT IN _DINT (version 3.0 et supérieure)
Régler un bit dans un double nombre entier avec signe (DINT). Le DINT sur lequel
l'opération doit être effectuée, le bit à régler et l'état auquel doit être mis ce bit sont
donnés comme des arguments à la fonction. Cette fonction peut servir à modifier un
dint ou à transférer ume valeur modifiée sur un dint différent.
SET_BIT IN DINT
VALUE
DINT DINT
USINT
un
=
не
D
D
BOGL
an
©
wd
К.
=
=
с
[Зы
=
Exemple de modification d'un dint:
dint.Val := SET BIT IN DINT ( VALUE := dint.Val,
BIT NO := 3, BIT := 1 }
+
A
le trotsiéme bit de “dint” est mis sur “activé” 1.
Exemple de passage d'une valeur modifiée sur un autre dint :
other.Val := SET BIT IN DINT { VALUE := thisone.Val,
BIT NO := 5, BIT := 1} ;
la valeur de “thisone” est mise A “other” avec le cinquiéme bit réglé, quel que soit
son état dans “thisone”.
Fonctions du PC3000 10-3
Fonctions de manipulation de bits
GET BIT_ FROM DINT (version 3.0 et sup rieure)
Extrait un bit d'un double nombre entier avec signe (DINT). Le DINT sur lequel
l'opération doit être effectuée et le numéro du bit à extraire sont donnés comme des
arguments à la fonction. Le résultat est une valeur booléenne (BOOL).
BOOL
DINT — VAL
USINT —
Exemple ST:
bool.Val := GET BIT FROM DINT ( VALUE := dint.Vai,
BIT NO :=3):
si le troisième bit du dint est mis à 1 (la valeur 8 fait partie de la composition omarre
du dint), la bool.Val est vraie (1).
AND_DINT {version 3.0 et sup rieure)
Permet de faire une intersection logique entre deux doubles nombres entiers
(DINTs), bit par bit. Chaque bit qui est vrai dans les deux nombres entiers sera réglé
dans la résultante de cette fonction et chaque bit qui n'est vrai que dans l'un ou l'autre
des nombres entiers d'entrée n'est pas réglé dans la résultante.
pINT —
DINT
Exempie ST:
dintres.Val := AND DINT( INl := dintl.Val ,
INZ = dint2.Val );
si dint1 est 100 (hits 2, 5etbmisaun)etdint 2est90<{bus 1,3, 4et 6 mis a 1), les
dintres sont 64 (bit 6 mis 2 1, binaire 1000000).
10-4
Fonctions du PC3000
Fonctions de manipulation de hits
OR_DINT
Permet de faire une réumion logique, non exclusive, entre deux doubles nombres
entiers (DINTs), bit par bit. Chaque bit vrai dans l'un ou dans les deux nombres
entiers est réglé dans la résultante de cetie fonction et tout bit qui n'est pas réglé dans
l'un ou l'autre des nombres entiers entrés n'est pas réglé dans la résultante.
OR_DINT
DINT
pivr —À
ртмт ==] | IN?
x
Exemple ST:
dintres.Val := OR DINT{ INl := dintl.Val ,
IN2 := dintZ2.Val y;
si dint] est 100 (bits 2, 5 et 6 réglés) et dint2 est 90 (bits 1, 3, 4 et 6 réglés), alors les
dintres sont 126 (bits 1 a 6 réglés, bmaire 1111110).
XOR_DINT
Permet de faire une réunion logique, exclusive, entre deux doubles nombres entiers
(DINTSs), bit par bit. Chaque bit vrai dans lun ou Tautre mais pas dans les deux
nombres entiers entrés est réglé dans la résultante de cette fonction et tout bit qui
n'est pas réglé dars l'un ou l'autre des nombres entiers entrés nest pas réglé dans la
résultante.
DINT |
DINT
=
o
2
ha
=
[+5
=
a
=
Exemple ST:
dintres.Val := XOR DINI( IN] := dintl.Val ,
IN2 := dint2.Val );
si dintl est 100 (bits 2, 5 et 6 réglés) et dint? est 90 (bits 1, 3, 4 et 6 réglés), le
dintres est 62 (bits 1 à 5 réglés, binaire 111110).
Fonctions du PC3000 | 10-5
Fonctions de manipulation de bits
NOT_DINT
Permet d'attribuer une fonction logique "NOT” à un nombre seul entier double
(DINT). Tout bit qui est vrai dans le nombre entier entré n'est pas réglé dans la
résultanie de cette fonction et tout bit qui n'est pas réglé dans le nombre entier entré
est réglé dans la résultante.
EE EE EE D EE EE
NOT _DINT
DINT —|
NN
Exemple ST:
dintres.Val := NOT DINT( IN := dint.Val ) -
si int est 100 (bits 2, 5 et 6 réglés), les dintres sont -101 (bits D, 1, 3, 4et 7 à 31
réglés, binaire 11111111111111111111111110011011),
10-5 Fonctions du PC3000
Annexe A
ANNEXE À VITESSES D'EXECUTION DES FONCTIONS
La vitesse d'exécution des fonctions varie en fonction des opérandes des fonctions, de
la longueur des chaînes, etc. Ces valeurs doivent être considérées comme étant
approximatives, Prises avec les dormées de l'annexe B, elles peuvent servir à estimer
la vitesse d'exécution d'un bloc donné de Texte structuré.
FONCTION ET FONCTION ET
VITESSE D'EXECUTION (uS) VITESSE D'EXECUTION {1.S)
NUMERIQUE AX_REAL 38
ABS_REAL 34 | MIN DINT 5,1
ABS_DINT 3,7 | MIN REAL 38
SQRT 84 STRING
LN 115 | EQUAL 100
LOG 119 | LEN 3,4
EXP 100 | LEFT 61
MOD 46 | RIGHT 67
EXPT 136 | MID 57
SIN 96 | CONCAT 103
cos 97 | INSERT 18
TAN 99 | DELETE 21
ASIN 93 | REPLACE 115
ACOS 93 | FIND 236
ATAN 95 | JUSTIFY LEFT 126
SELECTION JUSTIFY RIGHT 123
SEL_BOOL 56 | JUSTIFY CENTRE 179
SEL_DINT 4,6 CONVERSION DE TYPE
SEL_REAL 59 | DINT_TO REAL 46
SEL_TIME 4,7 | REAL TO DINT 313
SEL_DATE 4,7 | TRUNC 59
SEL DATE OF DAY 4,7 | TIME TO REAL 111
SEL DATE AND TIME 4,7 | REAL TO TIME 121
SEL_STRING 200' | TIME. TO_UDINT 2,4
MAX_DINT 51 | UDINT_TO_TIME 2,6
DATE AND TIME TO TOD 79 | ARITHMETIQUE SUR LE TEMPS
DATE AND TIME TO DT 102 | ADD DATE AND TIME T 82
CONCAT_ TO_DINT 38 | SUB DATE AND TIME T 82
Fonctions du PC3000 Annexe A-1
Annexe A
FONCTION ET FONCTION ET
VITESSE D'EXECUTION {uS) VITESSE D’EXECUTION (uS)
CONVERSION DE CHAINE SUB_DATE_AND TIME _ 35
STRING_TO_DINT 294 | ADD TOD TIME 112
HEX STRING TO UDINT 155 | SUB TOD TIME 188
BIN STRING TO UDINT 159 | SUB TOD TOD 46
OCT STRING TO UDINT 149 COMPACT
STRING TO REAL 1376 | EXT _BOOL FROM STR 216
STRING_TO TIME 936 | REP _BOOL IN STR 132
HMS_STRING TO TIME 251 | EXT SINT_FROM_STR 87
DHMS STRING TO TIME 323 | REP_SINT_IN_STR 115
STRING_TO DATE 447 | EXT_INT FROM_STR 93
EURO STRING TO DATE 322 | REP INT IN_STR 129
US STRING TO DATE 1 322 | EXT DINT_ FROM STR 99
STR TO TIME OF DAY 230 | REP DINT IN STR 152
DINT_TO_STRING 379 | EXT USINT FROM STR 84
UDINT_TO HEX_STRING 143 | REP USINT_IN_STR 115
UDINT TO BIN_STRING 184 | EXT UINT FROM STR 91
UDINT TO OCT STRING 161 | REP UINT IN STR 129
REAL. TO_STRING 1600 | EXT_UDINT_FROM_STR 99
TIME_TO_STRING 1401 | REP UDINT IN_STR 152
TIME TO HMS STRING 481 | EXT REAL FROM STR 118
TIME TO_DHMS_ STRING 670 | REP REAL IN_STR 179
DATE TO STRING 680 | EXT TIME FROM STR 99
DATE TO EURO STRING 602 | REP TIME IN_STR 152
DATE TO US STRING 602 | EXT PT FROM STR 110
TIME_OF DAY TO STR 443 | REP DT IN STR 152
ASCII TO CHAR 14 | EXT INT FROM STR 93
CHAR TO ASCII 63 | REP INT INSTR X 129
EXT DINT FROM STR X 99 | SUPPLEMENT COMMUNICATIONS
REP DINT IN STR X 152 | IEEE STRING TO REAL 124
EXT UINT FROM STR X 91 | REAL TO IEEE STRING 90
REP UINT IN STR X 129
EXT _UDINT FROM _STR_X 100
REP UDINT IN_STR_X 152
Remarque 1 : valeur type, dépend de la longueur de la chaîne de caractères.
Annexe A-2
Fonctions du PC3000
Annexe B
ANNEXE B VITESSES D'EXECUTION DES OPERATEURS
Le tableau 1 ci-dessous montre la vitesse d'exécution des opérateurs :
Tableau 1 Vitesses d'exécution
Opérateur Opérande Opérande Opérande
réeluS entier us booléen us
66 2,6 5/0
X 66 23 5/0
- 66 2,5 5/0
f 72 43 8/0
> 31 6,5 5/0
< 31 5,7 5/0
= 31 5.8 5/0
<> 31 6,8 5/0
>= 31 6,8 S/O
<= 31 58 S/O
- (unaire) 8 3,7 5/0
mod SiO 46 8/0
et 9/0 SO 6
ou 5/0 S/O 6
ou exclusif S/O S/O 5
non 5/0 5/0 5
Remarque : évaluation d'une expression du genre :
reall.Val := reallZ.Val + reall3.Val ;
Des temps système supplémentaires sont associés à la conversion des opérandes réels
de la structure "précision simple" à la structure "précision double" avant l'évaluation.
La valeur "précision double” résultante, reall. Val, est ensuite reconvertie en structure
a virgule flottante "précision simple”.
Cette conversion est effectuée parce que, en interne, toutes les instructions en ST sont
converties en "C” avant d'être compilées. Le compilateur utilisé dans la station de
programmation re traite pas la structure précision simple”. Tous les calculs sont
effectués à l'aide de la structure "précision double”.
Les temps système supplèmentaires sont les suivants :
Opération : ajout
structure simple en structure double 17us
structure double en structure simple 30us
Fonctions du PC3000 Annexe E-1
Annexe B
Dans l'exemple indiqué, la durée totale est la suivante :
reall.Yal := reallZ.Val + real13.Vai ;
3015 17us 6615 1745
{double en simple) (simple en double) (+) (simple en double)
Total : 30 +174+66+17 = 130us
H faut noter que toutes les conversions s'effectuent automatiquement. Ces informa-
Hons sont fourmies pour permettre au développeur de programmes de calculer la
vitesse d'exécution dans une partie donnée de texte structuré,
Tableau 2 Ordre de priorité des opérateurs
No. Opération Symbole Priorité
1 Mise entre parenthèses | (expression) MAXIMALE
Fonction identificateur
(liste d'arguments)
Evaluation par exemple LN(A),
MAX(X, Y) etc,
2 Elévation à **Remarque :
une puissance A**B—EXP(B*LN(A Y
3 Négation -
Complément NON
4 Multiplication *
Division /
Modulo MOD
5 Addition +
Soustraction -
Comparaison <, >, <=, >=
6 Egalite =
mégalité <>
7 ET booléen &, ET
8 OÙ exclusif booléen XOU
9 OU booléen OU MINIMALE
Annexe B-2 Fonctons du PC3000
Annexe C
ANNEXE C CODES D'ERREUR
Le PC3000 offre une consignation des erreurs système pour suivre les événements en
temps réel comme les panmes de courant, le redémarrage du système, les défauts de
communications et d'autres informations de diagnostic. Tous les codes d'erreur
portent l'heure à laquelle ils se sont produits.
Les codes d'erreur associés aux opérateurs mathématiques sont également produits et
sont saisis dans le journal de consignation en temps réel. Les erreurs mathématiques
peuvent être la division par zéro ou le dépassement de capacité. Ce type d'erreur peut
se produire dans l'exécution des blocs fonctions, le cäblage par soft ou le programme
séquentiel du programme utilisateur.
Dans tous les cas, l'entrée dans le journal de consigriation est représentée sous la
forme
<Ixx> <code d'opération mathématique> <informations de diagnostic>
Les codes d'opérations mathématiques sont regroupés séparément dans un tableau et
mdiquent le type d'opération à l'orgue de l'erreur.
Les informations de diagnostic sont destinées à ume utilisation en interne par
Eurotherm Automation.
En cas d'erreurs, il faut chercher dans le programme utilisateur les conditions qui
dorment des valeurs mterdites ou des opérations impossibles comme la division par
ZéTO.
Tableau 1 Description des codes d'erreur
Code d'erreur | Description de l'erreur Champ1 |Champ 2
S00 Erreur Une opération Cf
mathématique comportant une tableau 2
valeur à virgule flottante
(REAL) a donne un résultat
infini.
Cause Une opération
mathématique comme la
division par zéro a été
effectuée et a donné un
résultat infini. Une fois que l'or
a obtenu une infinité, elle peut
se propager à de nombreuses
opérations mathématiques et
provoquer ainsi des erreurs
multiples.
Fonctions du FC3000 Annexe C-1
Annexe G
Code d'erreur) Description de l'erreur Champi | Champ 2
501 Erreur Une opération Ci. tableau 2 | informations
mathématique REELLE a été de diagnostic
affectuée avec un opérande
interdit.
Cause Une opération
mathématique a été effectuée
sur une valeur interdite comme
ASIN (IN :=2). Cette opération
entraîne la production d'une
valeur interdite comme IEEE
“ceci n'est pas un nombre” ou
NAN (identique à une infinité).
Cette erreur peut se propager
par de nombreuses opérations
mathématiques et provoquer la
signalisation de nombreuses
erreurs.
so? Erreur Une opération Cf. tableau 2 | Informations
mathématique sur un REEL a de diagnostic
provoqué un dépassement de
capacité.
Cause Une opération
mathématique qui donne une
valeur trop importante pour être
représentée à été effectuée.
Cette opération donner& uné
infinité IEEE et risque de se
propager par de nombreuses
opérations mathématiques et de
provoquer la signalisation de
nombreuses erreurs.
550 Erreur Division d'un ENTIER 0 Informations
par zéro. de diagnostic
Cause |l y a eu une tentative de
division d'un entier par zéro.
Annexe C-2 Fonctions du PC3000
Annexe ©
Tableau 2 Codes d'opérations mathématiques
Code de l'opération Description de l'opération
1 conversion double-entier
2 conversion précision double-précision simple
3 conversion simple-entier
11 addition simple précision-entier
12 soustraction simple précision
13 multiplication simple précision
14 division simpie précision
21 addition double précision
22 soustraction double précision
23 multiplication double précision
24 division double précision
25 carré double précision
26 1n double précision
27 log double précision
28 exp ‘ double précision
29 sin double précision
30 cos double précision
31 tan double précision
32 asin double précision
33 acos double précision
34 atan double précision
35 mod double précision
36 exp “double précision
Remarque 1. Exposant naturel
Remarque 2. Elévation à une puissance
Remargue 3. Dans le tableau 2, précision “simple” et précision “double” désignent
les mots 32 et 64 bits servant à mémoriser les vaieurs à virgule
flottante IEEE. Le PC3000 utilise ces deux types de format IEEE des
nombres dans différentes parties du programme utilisateur.
Fonctions du PC3000
Annexe C-3
Annexe D
ANNEXE D REGLES APPLICABLES AUX DONNEES DE TYPES
DIFFERENTS
Le PC3000 prend en charge un sous-ensemble des types de données définis par IEC
DIS 1131 dans le cadre de la définition du langage Texte structuré (ST). Ces types de
données s'appliquent aux paramètres des blocs fonctions et aux variables créées par
l'utilisateur à l'aide de la classe de bloc fonction USER YAR.
Le mot-clé est le terme utilisé pour décrire un groupe de caractères qui ont une
signification spéciale en Texte structuré. Les types de données acceptés sont les
suivants :
Mot-clé Type de données | Bits [Plage
KO ADDRESS | Adresse de canal | 32 1:01à 12:14 (remarque 2)
BOOL Booléen 1 Oout
REAL Nombre réei 32 +10 #38
SINT Entier court 8 -128 à 127
USINT Entier court 8 0 a 255
sans signe
INT Entier 16 -32768 a 32767
UINT Entier sans signe ¡16 [03 65535
DINT Entier double 32 2147483648 & 2147483647
UDINT Entier double 32 0 à 429449967295
sans signe
TIME Durée 32 |Jusqu'à 49 jours
TIME OF DAY Heure du jour 32 00:00:00 à 23:59:59
DATE Date 01-Jan-1970 au 09-Jan-2136
DATE AND Date ET heure 32 01-Jan-1979-00:00:00 au 01-
TIME du jour Jan-2136-23:59:59
STRING Chaîne de carac- (Remarque 3)
tères de longueur
variable
ENUM Elément énuméré ¡32 0 a 2* (remarque 4)
Remarque 1. Bien que les données de type SINT, USINT, INT et
UINT soient toutes répertoriées, elles sont traitées comme étant 32
bits dans le PC3000, ce qui garantit la compatibilité avec les autres
produits.
Remarque 2. IO_ ADDRESS est un type de données spécial servant à
identifier l'adresse d'une canal matériel d'entrée ou de sortie. I] prend
la forme :
<RACK> : <EMPLACEMENT>: <CANAL>
(1-81 (1-12% {1 au nombre maximal de canaux):
Fonctions du FC3000 Annexe D-i
Annexe D
MODULE Les blocs fonctions possèdent une IO_ADDRESS représentée sous la
forme d'un type de données Chaîne de caractères (Stnng).
Remarque 3: Longueurs de chaînes : me variable utilisateur USER VAR Srimg
(chaine de caractères) est limitée à 80 caractères. Une variable
utilisateur USER_VAR "Long String’ (chaîne de caractères longue)
peut comporter un maximum de 255 caractères. Ces deux variables
sont caractérisées sous le type de données STRING {chaîne de
Caractères).
Remarque 4 : les types de données énumérées apparaissent sur les listes où l'on peut
sélectionner un nombre fixe d'options. On peut aussi choisu' de
signaler un certain nombre d'états à l'aide de ce type de données, avec
la forme :
Nom 1 (0)
Nom 2 (1)
Etc.
L'aeddition, la soustraction, etc. des paramètres énumérés sont
interdites.
Expressions
Une expression est un élément qui, lorsqu'il est évalué, produit une valeur
correspondant à un des types de données répértoriés.
Les expressions comportent des opérateurs (+, -, *", elc.) et des opérandes qui
peuvent être des constantes texte (2,5, 3, T#2s, etc.), des variables (intl. Val,
realll.val, etc.) ou un paramètre Bloc fonction, une fonction ou une autre expression.
Dans la norme IEC 1131, tous les types de données font l'objet d'un contrôle strict du
type dans toutes les expressions. Cela signifie que toute expression doit contenir des
types de données "appariés” ou qu'il faut convertir les types de données à l'aide des
fonctions de conversion de type.
Le PC3000 déroge à ces règles de la manière suivante :
À. reall.Val := real2.Yal cpérateur Int.1,Val;
Lorsque l'opérateur est *, +, - ou / produit une
valeur à virgule flottante (REAL)
B. Inti.Val:=realA.Val opérateur Intl.Val;
Lorsque l'opérateur est *, +, - ou / produit une
valeur entière tronquée.
Il est toutefois bon de s'assurer que toutes les données d'une expression ont un type
générique identique.
Annexe D-2 Fonctions du PC3000
Annexe D
Cela signifie que l'exemple À donnerait :
С. reall.Val:= real2.Val opérateur DINT TC REAL
(IN:= Intl.Val};
produit 1me valeur à virgule flottante (REAL).
Expressions comportant des données de type temporel
L'utilisation des opérations arithmétiques normales du genre ci-après n'est pas prise
en charge :
timel.Val := timel.Val + timeZ.Val X
Il faut utiliser les fonctions de conversion du temps dans les expressions pour
lesquelles des opérations mathématiques s'imposent entre les types temporels.
Exemple :
timei.Val := UDINT TO TIME(IN:=
TIME TO ODINT(IN:= timel.Val) +
TIME TO UDINT (IN:= time2.Val);
Expressions
Les règles sont identiques à celles illustrées pour l'addition et la soustraction. Il faut
converur le temps dans une structure entière avant l'évaluation dans ume expression
comportant plusieurs paramètres temporels.
Fonctions du PC3000 : Annexe D-3
Annexe E
ANNEXE E IMBRICATION DES FONCTIONS ST DU PC3000
Îl est possible d'imbriquer les fonctions pour créer des stratégies de régulation
complexes comme le basculement automatique d'un fhermocouple "de secours” pour
assurer une protection contre uné panne de détecteur.
En outre, il est possible d'utiliser des fonctions de conversion de type de manière
répétée pour apparier les types de données dans une expression.
Il est possible d'imbriquer les fonctions associées à la manipulation des chaines de
caractères pour créer des chaînes de message concaténées destinées à une utilisation
avec un panneau par exemple. Il est toutefois conseillé de imiter l'imbrication des
fonctions de chaînes à deux niveaux car les fonctions de chaînes utilisent des parties
importantes de l'espace d'empilage du PC3000. II est possible d'obtemir une
profondeur dimbrication supérieure en utilisant le bloc fonction chaine USER_VY AR
pour stocker les valeurs mtermédiaires.
Les exemples ci-après dlustrent l'imbrication :
Exemple 1.
Basculement automafique de thermocouple
loopl.Process Val :=SEL REAL
(G-=levell Status=1 (*GO*),
INO:=SEL REAL
(Gr=level2.Status = 1 (*50%),
INO:=loopl.Process Val,
IN1:=level2.Process Val},
INl:=leveli.Process Val);
L'entrée du bloc fonction PID, loopl, provient dune entrée analogique parmi deux
(celle qui a l'état GO), Si les deux capteurs sont sur NOGO, l'entrée PID est forcée
pour conserver sa valeur antérieure.
Exemple 2.
Conversion de type
timel.Val:= UDINT TC TIME (IN:=
TIME TO UDINT(IN:= timel.Val) +
TIME TO UDINT (IN:= timeZ.Val}:;
Les fonctions de conversion de type servent à convertir les durées (TIME) en entiers
(UDINT' avant l'addition. Le résultat est ensuite converti en uné durée (TIME).
Fonétions du PC2000 : Annexe E-1
Annexe E
Exemple 3.
Fonctions chaine
Display.Val:= CONCAT (INl:='Temperature of sample 1 is’,
IN2:=REAL TO STRING
(IN! :=INPUTI1 .Process Value) };
Display.Val est une variable chaine servant à conterur la chaîne concaténée. On peut
l'utiliser pour créer un affichage de tableau opérateur.
Annexe E-2 Fonctions du PC3000
EUROTHERM AUTOMATION SERVICE REGIONAL
SIEGE SOCIAL
ET USINE
& chemin des Jones
BP 55
69572 Dardilly Cedex
Tél. : 0478 66 45 00
Fax :04 78357490
AGENCES
Aix-en-Provence
Tél: 04 42 39 70 31
Colmar
Tel.: 03 89 23 52 20
Lille
Tél.: 03 20 96 96 39
Lyon
Tél.: 04 78 66 45 10
04 78 66 45 12
Nantes
Tél: 02 40 50 31 33
Paris
Tél.: 61 69 18 50 60
Toulouse
Tél.: 05 61 71 99 33
BUREAUX
Bordeaux
Clermont-Ferrand
Dijon
Grenoble
Matz
Normandie
Orléans
L'évolution de nos produits peut amener le présent document à être modifié sans préavis.
© Copyright Eurotherm Automation
Tous droits réservés. Toute reproduction ou retransmission sous quelque forme ou quelque
procédé que ce soit, sans autorisation écrite d'Eurotherm Automation est strictement Interdite.
Imprimé en France 09/96
Manuel PC3000 Fonctions - HA 174 518 - Indice 1

Manuels associés