Skip to content
Snippets Groups Projects
Commit accc5d24 authored by PICHON's avatar PICHON
Browse files

README beta

parent 63b12431
Branches
Tags
No related merge requests found
README.md 100644 → 100755
[[_TOC_]]
# Description
Fournir de nouveaux attributs TANGO qui soient le résultat de calculs à partir d’attributs déjà existants
L'objectif du TangoParser est de fournir de nouveaux attributs TANGO qui soient le résultat de calculs à partir d’attributs déjà existants
Exemple :
Je calcule la position du faisceau au Point Z en fonction des mesures effectuées sur les xbpm 1 et xbpm2 (mesures déjà disponibles dans TANGO)
<img src="doc/img/exemple_usage.png" alt="Exemple d'usage" width="600px"/>
# Propriétés
# Liste des propriétés
* AttributesNames
* A completer
* Liste des attributs des devices sources avec leur nom local.
* InputNames
* A completer
* Définit les attributs "write-only" du device
* OuputNames
*einit les
*finit les attributs "read-only" du device
* IONames
* A completer
* Définit les attributs "read-write" du device
* AutoInputProperties
* Définit les propriétés d’écriture automatique des attributs IONames
* ScanMode:
......@@ -22,17 +25,157 @@ Je calcule la position du faisceau au Point Z en fonction des mesures effectuée
* DiagnosticFunctions
* TRUE : le parser ajoute le calcul des fonctions MIN, MAX, MEAN, STD sur les AttributesNames
* MovingState
* indique au ScanServer l’état auquel il doit s’attendre lorsque le device est en « moving »
* Indique au ScanServer l’état auquel il doit s’attendre lorsque le device est en « moving »
* PriorityList
* Liste des états selon leur priorité. Cela permet de composer les états des différents devices appelés et de remonter le plus important.
![Propriétés](doc/img/properties_full.png)
# State et status
![Exemple de state et status](doc/img/state_status.png)
# Commandes
# Détail des propriétés principales
## AttributesNames
Les attributs à lire dans le système Tango sont décrits par la propriété `AttributeNames`
Exemple :
* `p1,TDL-D13-1/DG/XBPM.1/verticalPosition1`
* `p2,TDL-D13-1/DG/XBPM.1/verticalPosition2`
* `p3,TDL-D13-1/DG/XBPM.2/verticalPosition1`
* `p4,TDL-D13-1/DG/XBPM.2/verticalPosition2`
Explication :
La « variable » `p1` va maintenant contenir le résultat de la lecture de l’attribut `TDL-D13-1/DG/XBPM.1/verticalPosition1` et sera utilisable dans les autres propriétés.
## InputNames
Les attributs dynamiques en écriture seule sont dans la propriété `InputNames`
### Exemple
* `DevDouble p5, p1=p5*3`
* `DevDouble p5, p2=p5/2`
### Explication
* Créer un nouveau attribut `p5`,
* A chaque fois qu’un client écrit dans l’attribut p5, le Parser écrit dans les attributs p1 et p2 les nouvelles valeurs calculées en fonction de p5 et selon les expressions définies dans InputNames.
* La partie read visible dans l'ATKPanel contient la dernière valeur saisie.
<img src="doc/img/input_names.png" alt="Exemple d'InputNames" width="600px"/>
## OuputNames
Les attributs en lecture seule sont décrits par la propriété `OutputNames`
### Exemple
* `DevDouble positionZ1,(p1+p3)/2`
* `DevDouble positionZ2,(p2+p4)/2`
* `DevDouble angleZ1,(p3-p1)/3.030`
* `DevDouble angleZ2,(p4-p2)/3.030`
### Explication
4 nouveaux attributs de type DevDouble sont maintenant disponibles dans TANGO
<img src="doc/img/output_names.png" alt="Exemple d'OutputNames" width="400px"/>
## IONames
Les nouveaux attributs en écriture et en lecture sont décrits par la propriété IONames
### Exemple
DevDouble IO;<span style="color: green">p1+p2</span>;<span style="color: orange">p1=IO+1</span>;<span style="color: orange">p2=IO+2</span>
> :warning: « ; » est le séparateur
### Explication
Un nouvel attribut `IO` est disponible. Sa partie read contiendra le résultat de « <span style="color: green">p1+p2</span> » et lorsque l’on écrira dessus, le Parser écrira sur les attributs p1 et p2.
On ne peut définir qu’une seule expression (la première) pour la lecture. Et autant que souhaitées pour l’écriture.
![Exemple d'IOputNames](doc/img/io_names.png)
## AutoInputProperties
# Fonctions et constantes disponibles
Trigonometric Functions
All functions accept arguments of the Double and Complex type, except atan2 which only accepts Double arguments.
| Description | Function Name |
|:------------|:--------------|
| Sine | sin(x) |
| Cosine | cos(x) |
| Tangent | tan(x) |
| Arc Sine2 | asin(x) |
| Arc Cosine2 | acos(x) |
| Arc Tangent | atan(x) |
| Arc Tan with 2 parameters | atan2(y, x) |
| Secant | sec(x) |
| Cosecant | cosec(x) |
| Co-tangent | cot(x) |
| Hyperbolic Sine | sinh(x) |
| Hyperbolic Cosine | cosh(x) |
| Hyperbolic Tangent | tanh(x) |
| Inverse Hyperbolic Sine | asinh(x) |
| Inverse Hyperbolic Cosine1 | acosh(x) |
| Inverse Hyperbolic Tangent1 | atanh(x) |
Log and Exponential Functions
All functions accept arguments of the Double and Complex types.
| Description | Function Name |
|:------------|:--------------|
| Natural Logarithm1 | ln(x)
| Logarithm base 101 | log(x)
| Logarithm base 21 | lg(x)
| Exponential (e^x) | exp(x)
| Power1 | pow(x)
Statistical Functions
All functions accept either a vector (e.g. min([1,2,3])) or a set of numbers (e.g. min(1,2,3)).
| Description | Function Name |
|:------------|:--------------|
| Average | avg(x1,x2,x3,...) |
| Minimum | min(x1,x2,x3,...) | MinMax(true)
| Maximum | max(x1,x2,x3,...) | MinMax(false)
| Vector Sum | vsum(x1,x2,x3,...) |
Rounding Functions
| Description | Function Name |
|:------------|:--------------|
| Round | round(x), round(x, p) |
| Round to integer | rint(x), rint(x, p) |
| Floor | floor(x) |
| Ceiling | ceil(x) |
Miscellaneous Functions
| Description | Function Name |
|:------------|:--------------|
| If | if(cond, trueval, falseval) |
| Str (convert number to string) | str(x) |
| Absolute Value / Magnitude | abs(x) |
| Random number
| (between 0 and 1) | rand() |
| Modulus | mod(x,y)
| = x % y |
| Square Root1 | sqrt(x) |
| Sum | sum(x,y,...) |
| Binomial coefficients | binom(n, i) |
| Signum (-1,0,1 depending on sign of argument) | signum(x) |
Complex Functions
| Description | Function Name |
|:------------|:--------------|
| Real Component | re(c) |
| Imaginary Component | im(c) |
| Complex Modulus (Absolute Value) | cmod(c) |
| Argument (Angle of complex value, in radians) | arg(c) |
| Complex conjugate | conj(c) |
| Complex, constructs a complex number from real and imaginary parts | complex(x, y) |
| Polar, constructs a complex number from modulus and argument | polar(r, theta) |
Notes
1 By default functions like sqrt(-1) will return a complex result. These functions have constructors with a flag to control their behaviour for out of range values, if the flag is true, then the function will return Double.NaN for out of range real values. If the flag is false they will return the appropriate complex result.
2 By default functions like acos(2) will return Double.NaN. A constructor is available which sets a flag to make the function return the appropriate complex result for such cases.
# Aide au diagnostic
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment