▼
Scroll to page 2
of
116
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