Introduction
Après avoir inséré un
, double-cliquez sur les points d'interrogation affichés ( ) pour accéder à l'expression d'affectation ST.Appuyez sur
pour commencer une analyse et afficher les problèmes détectés dans une info-bulle.Vous pouvez afficher l'animation des mots mémoire utilisés dans l'expression d'affectation ST dans la fenêtre des Fenêtre d'affichage des variables.
. Voir la sectionAdresses mémoire
Une adresse mémoire entrée dans l'expression d'affectation ST doit commencer par l'un des symboles ci-dessous, qui permet de spécifier le type d'adresse :
%M (bit mémoire)
%I (entrée TOR)
%IW (mot d'entrée)
%MW (mot mémoire)
Le type d'adresse doit être suivi d'un numéro d'adresse (pas de zéro de début nécessaires).
Création automatique des variables
Une fois que vous avez appuyé sur
pour confirmer l'expression d'affectation ST, une variable, utilisable dans le réseau d'équation, est créée automatiquement pour chaque adresse entrée.Exemples
Adresse |
Variable |
---|---|
%M1 |
|
%I1 |
|
%IW1 |
|
%MW1 |
|
Le type de variable est déterminé par son suffixe d'adresse.
Suffixe |
Type de variable |
|
---|---|---|
Pas de suffixe |
%Mx, %Ix |
EBOOL |
%IWx, %MWx |
UINT |
|
I |
INT |
|
DI |
DINT |
|
UD |
UDINT |
|
L |
REAL |
|
W |
WORD |
La variable est mappée à la mémoire localisée interne associée.
Par exemple : %IW1DI devient la variable _300001_DI:DINT@%IW1
.
Constantes
Les constantes dans les réseaux d'équation possèdent la même syntaxe que dans les autres éditeurs IEC (sans caractère # au début).
Opérateurs
Opérateurs et priorité
Exploitation |
Symbole |
Priorité |
---|---|---|
Parenthèses |
(expression) |
La plus élevée |
Evaluation de fonction |
Identificateur (liste d'arguments) |
- |
Négation |
- |
- |
Complément |
~ |
- |
Elévation de puissance |
** |
- |
Multiplication |
* |
- |
Division |
/ |
- |
Addition |
+ |
- |
Soustraction |
- |
- |
Comparaison |
< , > , <= , >= |
- |
Egalité |
= |
- |
Inégalité |
<> |
- |
Booléen ET |
& |
- |
Booléen OU exclusif |
^ |
- |
Booléen OU |
| |
- |
Affectation |
:= |
La plus basse |
Les opérateurs **, *, /, +, -, <<, >>, <, >, <=, >=, =, <>, &, ^ et | sont pris en charge et sont mis en œuvre dans la syntaxe ST de Control Expert. Les combinaisons de type de données pour les types d'opérande et le type de résultat ne sont pas toutes prises en charge.
Conditionnel ternaire
Le conditionnel ternaire (C?t:f ), contrairement au langage LL984 propriétaire, n'est pas disponible dans la syntaxe ST de Control Expert.
Le bloc fonction SEL
existant fournit cette fonctionnalité et doit être
utilisé à la place.
Exemple :
Syntaxe propriétaire :
400010 := 300010 < 300020 ? 300004 : 300005
Syntaxe dans Control Expert :
%MW10 := SEL(%IW10 < %IW20, %IW4, %IW50);
Avec le code ci-dessous, créé automatiquement par l'éditeur :
_400010 := SEL(_300010 < _300020,
_300004, _300005);
Décalage de bits
Le décalage de bits (<<, >>), contrairement au langage LL984 propriétaire, n'est pas disponible dans la syntaxe ST de Control Expert.
Les blocs fonction SHL
et SHR
existants fournissent cette
fonctionnalité et doivent être utilisés à la place.
Exemple :
Syntaxe propriétaire :
400010 = 300010U << 3
Syntaxe dans Control Expert :
%MW100W :=
SHL(%IW10W, 3);
Avec le code ci-dessous, créé automatiquement par l'éditeur :
_400100_W := SHL(_300010_W,
3);
Blocs fonction
En général, vous pouvez utiliser les blocs fonction mis à disposition pour le langage ST.
En particulier, les blocs fonction Control Expert ci-dessous remplacent les blocs fonction propriétaires mentionnés ci-dessous.
Nom de la fonction propriétaire |
Nom de la fonction de Control Expert |
Type d'argument* |
Type de retour* |
Signification |
---|---|---|---|---|
ABS |
ABS |
S,U,L,UL,F |
S,U,L,UL,F |
Valeur absolue |
ARCCOS |
ACOS |
F |
F |
Arc cosinus |
ARCSIN |
ASIN |
F |
F |
Arc sinus |
ARCTAN |
ATAN |
F |
F |
Arc tangente |
COS |
COS |
F |
F |
Cosinus |
COSD |
COSD |
F |
F |
Cosinus des degrés |
EXP |
EXP |
F |
F |
Fonction exponentielle (puissance e) (pas forcément un nombre entier) |
FIX |
REAL_TO |
F |
L |
Conversion d'une valeur à virgule flottante en entier (nécessite un argument FP) |
FLOAT |
INT_TO |
S, U, L, UL |
F |
Conversion d'un entier en valeur à virgule flottante (nécessite un argument d'entier) |
LN |
LN |
F |
F |
Logarithme népérien (base e) |
LOG |
LOG |
F |
F |
Logarithme (base 10) |
SIN |
SIN |
F |
F |
Sinus des radians |
SIND |
SIND |
F |
F |
Sinus des degrés |
SQRT |
SQRT |
F |
F |
Racine carrée |
TAN |
TAN |
F |
F |
Tangente des radians |
TAND |
TAND |
F |
F |
Tangente des degrés |
* : S=INT, U=UINT, L=DINT, UL=UDINT, F=REAL |
Exemple d'expression LL984
Syntaxe propriétaire :
40701 = 40702U
+ COS(40703UL) * #8.00135F + SIN(40704);
Syntaxe dans Control Expert :
%MW701
:= REAL_TO_UINT(WORD_TO_REAL(%MW702W) + COS(WORD_AS_REAL(%MW703W,
%MW704W)) * 8.00135 + SIN(WORD_TO_REAL(%MW704W)));
Avec le code ci-dessous, créé automatiquement par l'éditeur :
_400701 := REAL_TO_UINT(WORD_TO_REAL(_400702_W) +
COS(WORD_AS_REAL(_400703_W, _400704_W)) * 8.00135 + SIN(WORD_TO_REAL(_400704_W)));