ATTENZIONE: le presenti informazioni fanno riferimento ad una precedente versione del formato del file (versione 1.2).
La tabella elementi del circuito (ITEMS) è composta da un numero di definizioni di circuito (ITEM) contigue, ognuna delle quali contiene tutte le informazioni su uno specifico elemento.
La posizione (relativa al file) e la dimensione della tabella sono specificate rispettivamente nei seguenti campi, a seconda di dove utilizzata:
•dai campi RUNG.ITEMSOFF e RUNG.ITEMSSIZE, se utilizzato in circuito del blocco (RUNG).
•dai campi LIVECMD.ITEMSOFF e LIVECMD.ITEMSSIZE, se utilizzato in comandi modifiche live (LIVECMD).
Definizione elemento del circuito
Gli elementi del circuito (ITEM) hanno una parte iniziale comune, quindi un'area dati specifica per ogni tipo di elemento. La parte comune è la seguente:
Nome |
Offset |
Tipo |
Descrizione |
---|---|---|---|
CODE |
+0 |
U16 |
Codice tipo elemento. |
SIZE |
+2 |
U16 |
Dimensione completa dell'elemento (tutti i campi). |
DATA |
+4 |
... |
Dati specifici (opzionali). |
Gli elementi previsti sono i seguenti:
Simbolico |
ID |
Tipo |
Dati |
Descrizione |
---|---|---|---|---|
BB |
0x0001 |
|
|
Inizio ramo. |
NL |
0x0002 |
|
|
Prossimo livello ramo . Note: deve sempre essere compreso tra un BB e un EB. |
EB |
0x0003 |
|
|
Fine ramo . Note: deve sempre corrispondere ad un BB. |
OC |
0x0004 |
|
U32=Destinazione (#2): solo tipi BOOL |
Contatto aperto. |
CC |
0x0005 |
|
U32=Destinazione (#2): solo tipi BOOL |
Contatto chiuso. |
RE |
0x0006 |
|
U32=Destinazione (#2): solo tipi EDGE |
Fronte di salita. |
FE |
0x0007 |
|
U32=Destinazione (#2): solo tipi EDGE |
Fronte di discesa. |
AF |
0x0008 |
|
|
Sempre falso. |
OUT |
0x0009 |
F |
U32=Destinazione (#2): solo tipi BOOL |
Output. |
OL |
0x000A |
F |
U32=Destinazione (#2): solo tipi BOOL |
Output latch (set). |
OUL |
0x000B |
F |
U32=Destinazione (#2): solo tipi BOOL |
Output unlatch (reset). |
NOUT |
0x000C |
F |
U32=Destinazione (#2): solo tipi BOOL |
Output negato |
CLR |
0x000D |
F |
Azzeramento (clear). |
|
TP |
0x000E |
F |
U32=Destinazione (#2): solo tipi TIMER U32=Valore di preset 1 (#4) U32=Valore di preset 2 (#4) |
Abilita timer pulse. |
TON |
0x000F |
F |
U32=Destinazione (#2): solo tipi TIMER U32=Valore di preset 1 (#4) U32=Valore di preset 2 (#4) |
Abilita timer on delay. |
TOFF |
0x0010 |
F |
U32=Destinazione (#2): solo tipi TIMER U32=Valore di preset 1 (#4) U32=Valore di preset 2 (#4) |
Abilita timer off delay. |
TSQ |
0x0011 |
F |
U32=Destinazione (#2): solo tipi TIMER U32=Valore di preset 1 (#4) U32=Valore di preset 2 (#4) |
Abilita timer onda quadra. |
TINT |
0x0012 |
F |
U32=Destinazione (#2): solo tipi TIMER U32=Valore di preset 1 (#4) U32=Valore di preset 2 (#4) |
Abilita timer integrale. |
CU |
0x0013 |
F |
U32=Destinazione (#2): solo tipi COUNTER U32=Valore di preset (#4) |
Conteggio up. |
CD |
0x0014 |
F |
U32=Destinazione (#2): solo tipi COUNTER U32=Valore di preset (#4) |
Conteggio down. |
CUR |
0x0015 |
F |
U32=Destinazione (#2): solo tipi COUNTER U32=Valore di preset (#4) |
Conteggio up rotativo. |
CDR |
0x0016 |
F |
U32=Destinazione (#2): solo tipi COUNTER U32=Valore di preset (#4) |
Conteggio down rotativo. |
LD |
0x0017 |
F |
U32=Destinazione (#2): solo tipi COUNTER |
Preset su contatore. |
MATH |
0x0018 |
F |
U32=Espressione (#5) U32=Destinazione (#2) |
Blocco matematico. |
EQ |
0x0019 |
|
U32=Sorgente A (#2) U32=Sorgente B (#2) |
Blocco confronto uguaglianza (A == B). |
NE |
0x001A |
|
U32=Sorgente A (#2) U32=Sorgente B (#2) |
Blocco confronto diverso (A != B). |
GT |
0x001B |
|
U32=Sorgente A (#2) U32=Sorgente B (#2) |
Blocco confronto maggiore (A > B). |
GE |
0x001C |
|
U32=Sorgente A (#2) U32=Sorgente B (#2) |
Blocco confronto maggiore/uguale (A >= B). |
LT |
0x001D |
|
U32=Sorgente A (#2) U32=Sorgente B (#2) |
Blocco confronto minore (A < B). |
LE |
0x001E |
|
U32=Sorgente A (#2) U32=Sorgente B (#2) |
Blocco confronto minore/uguale (A <= B). |
COPY |
0x001F |
F |
U32=Sorgente (#2) U32=Destinazione (#2) U32=N. Elementi (#2) |
Copia dati da sorgente a destinazione, per il n. di elementi specificato. |
CALL |
0x0020 |
F |
U32 ID blocco da chiamare |
Chiamata di un blocco (sub-routine). |
RET |
0x0021 |
F |
|
Ritorno da un blocco all'interno. |
ADD |
0x0022 |
F |
U32=Sorgente A (#2) U32=Sorgente B (#2) U32=Destinazione (#2) |
Somma (A + B). |
SUB |
0x0023 |
F |
U32=Sorgente A (#2) U32=Sorgente B (#2) U32=Destinazione (#2) |
Sottrazione (A - B). |
MUL |
0x0024 |
F |
U32=Sorgente A (#2) U32=Sorgente B (#2) U32=Destinazione (#2) |
Moltiplicazione (A * B). |
DIV |
0x0025 |
F |
U32=Sorgente A (#2) U32=Sorgente B (#2) U32=Destinazione (#2) |
Divisione (A / B). |
AND |
0x0026 |
F |
U32=Sorgente A (#2) U32=Sorgente B (#2) U32=Destinazione (#2) |
AND binario (A & B). |
OR |
0x0027 |
F |
U32=Sorgente A (#2) U32=Sorgente B (#2) U32=Destinazione (#2) |
OR binario (A | B). |
NOT |
0x0028 |
F |
U32=Sorgente A (#2) U32=Destinazione (#2) |
NOT binario (~A). |
XOR |
0x0029 |
F |
U32=Sorgente A (#2) U32=Sorgente B (#2) U32=Destinazione (#2) |
XOR binario (A ^ B). |
SQRT |
0x002A |
F |
U32=Sorgente A (#2) U32=Destinazione (#2) |
Radice quadrata di A. |
MOD |
0x002B |
F |
U32=Sorgente A (#2) U32=Sorgente B (#2) U32=Destinazione (#2) |
Modulo (A mod B). |
POW |
0x002C |
F |
U32=Sorgente A (#2) U32=Sorgente B (#2) U32=Destinazione (#2) |
Elevamento a potenza (A pow B). |
SIN |
0x002D |
F |
U32=Sorgente A (#2) U32=Destinazione (#2) |
Seno di A. |
COS |
0x002E |
F |
U32=Sorgente A (#2) U32=Destinazione (#2) |
Coseno di A. |
TAN |
0x002F |
F |
U32=Sorgente A (#2) U32=Destinazione (#2) |
Tangente di A. |
ASIN |
0x0030 |
F |
U32=Sorgente A (#2) U32=Destinazione (#2) |
Arcoseno di A. |
ACOS |
0x0031 |
F |
U32=Sorgente A (#2) U32=Destinazione (#2) |
Arcocoseno di A. |
ATAN |
0x0032 |
F |
U32=Sorgente A (#2) U32=Destinazione (#2) |
Arcotangente di A. |
ATAN2 |
0x0033 |
F |
U32=Sorgente A (#2) U32=Sorgente B (#2) U32=Destinazione (#2) |
Arcotangente di A, B. |
LOG |
0x0034 |
F |
U32=Sorgente A (#2) U32=Destinazione (#2) |
Logaritmo base 10 di A. |
LN |
0x0035 |
F |
U32=Sorgente A (#2) U32=Destinazione (#2) |
Logaritmo base E di A. |
ABS |
0x0036 |
F |
U32=Sorgente A (#2) U32=Destinazione (#2) |
Valore assoluto di A |
SIGN |
0x0037 |
F |
U32=Sorgente A (#2) U32=Destinazione (#2) |
Segno di A. |
ROUND |
0x0038 |
F |
U32=Sorgente A (#2) U32=Destinazione (#2) |
Arrotondamento all'intero più vicino ad A. |
MIN |
0x0039 |
F |
U32=Sorgente A (#2) U32=Sorgente B (#2) U32=Destinazione (#2) |
Minimo tra A e B. |
MAX |
0x003A |
F |
U32=Sorgente A (#2) U32=Sorgente B (#2) U32=Destinazione (#2) |
Massimo tra A e B. |
RANGE |
0x003B |
F |
U32=Sorgente A (#2) U32=Sorgente B (#2) U32=Sorgente C (#2) U32=Destinazione (#2): solo tipi BOOL |
Verifica se A contenuto nel range B-C. |
LIMIT |
0x003C |
F |
U32=Sorgente A (#2) U32=Sorgente B (#2) U32=Sorgente C (#2) U32=Destinazione (#2) |
Limita A al range B-C. |
ROR |
0x003D |
F |
U32=Sorgente A (#2) U32=Sorgente B (#2) U32=Destinazione (#2) |
Rotazione bit a destra (A >> B). |
ROL |
0x003E |
F |
U32=Sorgente A (#2) U32=Sorgente B (#2) U32=Destinazione (#2) |
Rotazione bit a sinistra (A << B). |
SHR |
0x003F |
F |
U32=Sorgente A (#2) U32=Sorgente B (#2) U32=Destinazione (#2) |
Shift bit a destra (A >> B). |
SHL |
0x0040 |
F |
U32=Sorgente A (#2) U32=Sorgente B (#2) U32=Destinazione (#2) |
Shift bit a sinistra (A << B). |
MOV |
0x0041 |
F |
U32=Sorgente A (#2) U32=Destinazione (#2) |
Assegna A. |
TODEG |
0x0042 |
F |
U32=Sorgente A (#2) U32=Destinazione (#2) |
Conversione di A da RAD a DEG. |
TORAD |
0x0043 |
F |
U32=Sorgente A (#2) U32=Destinazione (#2) |
Conversione di A da DEG a RAD. |
NEG |
0x0044 |
|
|
Negazione stato logico. |
NOP |
0x0045 |
F |
|
Nessuna operazione. |
EVAL |
0x0046 |
|
U32=Espressione (#5) |
Valutazione espressione (booleana) |
(#1) Variabile a bit locale (tipo I32 o U32) con indirizzamento diretto (eventuali indici e numero di bit costanti).
(#2) Per sorgente/destinazione si intende nome di una variabile oppure la rappresentazione ascii di un valore numerico (solo sorgente), ovvero un offset alla tabella stringhe .
(#4) Per valore (o valore di preset) si intende un valore numerico in formato stringa: stringa vuota (o offset 0) si intende nessun valore assegnato.
(#5) Espressione intesa come stringa con offset alla tabella stringhe .
Dati espressione matematica
I dati dell'espressione matematica (elemento MATH) sono una serie di operazioni contigue (ordinati in polacca inversa) con la seguente intestazione comune:
Nome |
Offset |
Tipo |
Descrizione |
---|---|---|---|
CODE |
+0 |
U8 |
Codice operazione. |
DATA |
+1 |
... |
Dati specifici (opzionali). |
Le operazioni previste sono le seguenti:
Simbolico |
ID |
Dati |
In (stack) |
Out (stack) |
Descrizione |
---|---|---|---|---|---|
PUSH |
0x01 |
DBL=valore |
-- |
DBL |
Push valore in stack. |
PUSHV |
0x02 |
U32=Sorgente (#1) |
-- |
DBL |
Push valore variabile in stack. |
ADD |
0x03 |
|
DBL0,DBL1 |
DBL |
Somma. |
SUB |
0x04 |
|
DBL0,DBL1 |
DBL |
Sottrazione (#2). |
MUL |
0x05 |
|
DBL0,DBL1 |
DBL |
Moltiplicazione (#2). |
DIV |
0x06 |
|
DBL0,DBL1 |
DBL |
Divisione (#2). |
MOD |
0x07 |
|
DBL |
DBL |
Modulo (#3). |
ABS |
0x08 |
|
DBL |
DBL |
Valore assoluto (#3). |
SIN |
0x09 |
|
DBL |
DBL |
Seno. |
COS |
0X0A |
|
DBL |
DBL |
Coseno. |
TAN |
0x0B |
|
DBL |
DBL |
Tangente. |
ASIN |
0x0C |
|
DBL |
DBL |
Arcoseno. |
ACOS |
0x0D |
|
DBL |
DBL |
Arcocoseno. |
ATAN |
0x0E |
|
DBL |
DBL |
Arcotangente. |
POW |
0x0F |
|
DBL |
DBL |
Esponente. |
LOG10 |
0x10 |
|
DBL |
DBL |
Logaritmo base 10. |
LOG |
0x11 |
|
DBL |
DBL |
Logaritmo naturale. |
R_AND |
0x12 |
|
U32 |
U32 |
AND binario. |
R_OR |
0x13 |
|
U32 |
U32 |
OR binario. |
R_NOT |
0x14 |
|
U32 |
U32 |
NOT binario. |
R_XOR |
0x15 |
|
U32 |
U32 |
XOR binario. |
POPV |
0x16 |
U32=Destinazione (#1) |
DBL |
-- |
Pop valore da stack a variabile. |
R_ROR |
0x17 |
|
U32 |
U32 |
Rotazione bit a destra. |
R_ROL |
0x18 |
|
U32 |
U32 |
Rotazione bit a sinistra. |
R_SHR |
0x19 |
|
U32 |
U32 |
Shift bit a destra. |
R_SHL |
0x1A |
|
U32 |
U32 |
Shift bit a sinistra. |
TOBIN |
0x1B |
|
U32 |
U32 |
Conversione da BCD a binario. |
TOBCD |
0x1C |
|
U32 |
U32 |
Conversione da binario a BCD. |
TODEG |
0x1D |
|
DBL |
DBL |
Conversione da radianti a gradi. |
TORAD |
0x1E |
|
DBL |
DBL |
Conversione da gradi a radianti. |
ATAN2 |
0x1F |
|
DBL0,DBL1 |
DBL |
Arcotangente con due parametri. |
PUSHVB |
0x20 |
U32=Sorgente (#1) |
DBL |
-- |
Push valore variabile a bit in stack. |
POPVB |
0x21 |
U32=Destinazione (#1) |
DBL |
-- |
Pop valore da stack a variabile bit. |
POPL |
0x22 |
|
BOOL |
-- |
Pop valore logico (0=falso, altrimenti vero). |
|
0x23 |
|
|
|
(riservato) |
EQ |
0x24 |
|
DBL0,DBL1 |
BOOL |
Confronto: uguale. |
NE |
0x25 |
|
DBL0,DBL1 |
BOOL |
Confronto: differente. |
LT |
0x26 |
|
DBL0,DBL1 |
BOOL |
Confronto: minore. |
LE |
0x27 |
|
DBL0,DBL1 |
BOOL |
Confronto: minore o uguale. |
GT |
0x28 |
|
DBL0,DBL1 |
BOOL |
Confronto: maggiore. |
GE |
0x29 |
|
DBL0,DBL1 |
BOOL |
Confronto: maggiore o uguale. |
AND |
0x2A |
|
BOOL,BOOL |
BOOL |
AND logico. |
OR |
0x2B |
|
BOOL,BOOL |
BOOL |
OR logico. |
NOT |
0x2C |
|
BOOL |
BOOL |
NOT logico. |
XOR |
0x2D |
|
BOOL,BOOL |
BOOL |
XOR logico. |
CHS |
0x2E |
|
DBL |
DBL |
Cambio segno. |
SHR |
0x2F |
|
U32 |
U32 |
Shift logico a destra. |
SHL |
0x30 |
|
U32 |
U32 |
Shift logico a sinistra |
(#1) Per sorgente/destinazione si intende nome di una variabile, ovvero un offset alla tabella stringhe .