Abilitare JavaScript per vedere questo sito.

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 (#3): solo  tipi BOOL

Contatto aperto.

CC

0x0005

 

U32=Destinazione (#3): solo tipi BOOL

Contatto chiuso.

RE

0x0006

 

U32=Destinazione (#3): solo tipi EDGE

Fronte di salita.

FE

0x0007

 

U32=Destinazione (#3): solo tipi EDGE

Fronte di discesa.

AF

0x0008

 

 

Sempre falso.

OUT

0x0009

F

U32=Destinazione (#3): solo tipi BOOL

Output.

OL

0x000A

F

U32=Destinazione (#3): solo tipi BOOL

Output latch (set).

OUL

0x000B

F

U32=Destinazione (#3): solo tipi BOOL

Output unlatch (reset).

NOUT

0x000C

F

U32=Destinazione (#3): solo tipi BOOL

Output negato

CLR

0x000D

F

U32=Destinazione (#3): solo tipi TIMER e COUNTER

Azzeramento (clear).

TP

0x000E

F

U32=Destinazione (#3): solo tipi TIMER

U32=Valore di preset 1 (#4)

U32=Valore di preset 2 (#4)

Abilita timer pulse.

TON

0x000F

F

U32=Destinazione (#3): solo tipi TIMER

U32=Valore di preset 1 (#4)

U32=Valore di preset 2 (#4)

Abilita timer on delay.

TOFF

0x0010

F

U32=Destinazione (#3): solo tipi TIMER

U32=Valore di preset 1 (#4)

U32=Valore di preset 2 (#4)

Abilita timer off delay.

TSQ

0x0011

F

U32=Destinazione (#3): solo tipi TIMER

U32=Valore di preset 1 (#4)

U32=Valore di preset 2 (#4)

Abilita timer onda quadra.

TINT

0x0012

F

U32=Destinazione (#3): solo tipi TIMER

U32=Valore di preset 1 (#4)

U32=Valore di preset 2 (#4)

Abilita timer integrale.

CU

0x0013

F

U32=Destinazione (#3): solo tipi COUNTER

U32=Valore di preset (#4)

Conteggio up.

CD

0x0014

F

U32=Destinazione (#3): solo tipi COUNTER

U32=Valore di preset (#4)

Conteggio down.

CUR

0x0015

F

U32=Destinazione (#3): solo tipi COUNTER

U32=Valore di preset (#4)

Conteggio up rotativo.

CDR

0x0016

F

U32=Destinazione (#3): solo tipi COUNTER

U32=Valore di preset (#4)

Conteggio down rotativo.

LD

0x0017

F

U32=Destinazione (#3): solo tipi COUNTER

Preset su contatore.

MATH

0x0018

F

U32=Espressione (#5)

U32=Destinazione (#3)

U8[]=Dati espressione matematica

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 (#3)

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 (#3)

Somma (A + B).

SUB

0x0023

F

U32=Sorgente A (#2)

U32=Sorgente B (#2)

U32=Destinazione (#3)

Sottrazione (A - B).

MUL

0x0024

F

U32=Sorgente A (#2)

U32=Sorgente B (#2)

U32=Destinazione (#3)

Moltiplicazione (A * B).

DIV

0x0025

F

U32=Sorgente A (#2)

U32=Sorgente B (#2)

U32=Destinazione (#3)

Divisione (A / B).

AND

0x0026

F

U32=Sorgente A (#2)

U32=Sorgente B (#2)

U32=Destinazione (#3)

AND binario (A & B).

OR

0x0027

F

U32=Sorgente A (#2)

U32=Sorgente B (#2)

U32=Destinazione (#3)

OR binario (A | B).

NOT

0x0028

F

U32=Sorgente A (#2)

U32=Destinazione (#3)

NOT binario (~A).

XOR

0x0029

F

U32=Sorgente A (#2)

U32=Sorgente B (#2)

U32=Destinazione (#3)

XOR binario (A ^ B).

SQRT

0x002A

F

U32=Sorgente A (#2)

U32=Destinazione (#3)

Radice quadrata di A.

MOD

0x002B

F

U32=Sorgente A (#2)

U32=Sorgente B (#2)

U32=Destinazione (#3)

Modulo (A mod B).

POW

0x002C

F

U32=Sorgente A (#2)

U32=Sorgente B (#2)

U32=Destinazione (#3)

Elevamento a potenza (A pow B).

SIN

0x002D

F

U32=Sorgente A (#2)

U32=Destinazione (#3)

Seno di A.

COS

0x002E

F

U32=Sorgente A (#2)

U32=Destinazione (#3)

Coseno di A.

TAN

0x002F

F

U32=Sorgente A (#2)

U32=Destinazione (#3)

Tangente di A.

ASIN

0x0030

F

U32=Sorgente A (#2)

U32=Destinazione (#3)

Arcoseno di A.

ACOS

0x0031

F

U32=Sorgente A (#2)

U32=Destinazione (#3)

Arcocoseno di A.

ATAN

0x0032

F

U32=Sorgente A (#2)

U32=Destinazione (#3)

Arcotangente di A.

ATAN2

0x0033

F

U32=Sorgente A (#2)

U32=Sorgente B (#2)

U32=Destinazione (#3)

Arcotangente di A, B.

LOG

0x0034

F

U32=Sorgente A (#2)

U32=Destinazione (#3)

Logaritmo base 10 di A.

LN

0x0035

F

U32=Sorgente A (#2)

U32=Destinazione (#3)

Logaritmo base E di A.

ABS

0x0036

F

U32=Sorgente A (#2)

U32=Destinazione (#3)

Valore assoluto di A

SIGN

0x0037

F

U32=Sorgente A (#2)

U32=Destinazione (#3)

Segno di A.

ROUND

0x0038

F

U32=Sorgente A (#2)

U32=Destinazione (#3)

Arrotondamento all'intero più vicino ad A.

MIN

0x0039

F

U32=Sorgente A (#2)

U32=Sorgente B (#2)

U32=Destinazione (#3)

Minimo tra A e B.

MAX

0x003A

F

U32=Sorgente A (#2)

U32=Sorgente B (#2)

U32=Destinazione (#3)

Massimo tra A e B.

RANGE

0x003B

F

U32=Sorgente A (#2)

U32=Sorgente B (#2)

U32=Sorgente C (#2)

U32=Destinazione (#3): 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 (#3)

Limita A al range B-C.

ROR

0x003D

F

U32=Sorgente A (#2)

U32=Sorgente B (#2)

U32=Destinazione (#3)

Rotazione bit a destra (A >> B).

ROL

0x003E

F

U32=Sorgente A (#2)

U32=Sorgente B (#2)

U32=Destinazione (#3)

Rotazione bit a sinistra (A << B).

SHR

0x003F

F

U32=Sorgente A (#2)

U32=Sorgente B (#2)

U32=Destinazione (#3)

Shift bit a destra (A >> B).

SHL

0x0040

F

U32=Sorgente A (#2)

U32=Sorgente B (#2)

U32=Destinazione (#3)

Shift bit a sinistra (A << B).

MOV

0x0041

F

U32=Sorgente A (#2)

U32=Destinazione (#3)

Assegna A.

TODEG

0x0042

F

U32=Sorgente A (#2)

U32=Destinazione (#3)

Conversione di A da RAD a DEG.

TORAD

0x0043

F

U32=Sorgente A (#2)

U32=Destinazione (#3)

Conversione di A da DEG a RAD.

NEG

0x0044

 

 

Negazione stato logico.

NOP

0x0045

F

 

Nessuna operazione.

EVAL

0x0046

 

U32=Espressione (#5)

U8[]=Dati espressione matematica

Valutazione espressione (booleana).

OBCALL

0x0047

F

U32=Nome instanza (#6)

U32=Nome completo metodo (#9)

U32=Elenco nomi parametro (#7)

U32=Elenco valori parametro (#7)

U32=Risultato (#3)

U8[]=Dati espressione matematica (#8)

Chiamata a metodo di una instanza OB.

FT

0x0048

 

 

Esecuzione iniziale

ARE

0x0049

 

 

Fronte di salita (anonimo)

AFE

0x004A

 

 

Fronte di discesa (anonimo)

(#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 .

(#3) Per destinazione si intende nome  di una variabile con 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.

(#6) Per nome instanza si intende nome di una variabile con offset alla tabella stringhe, il cui TYPEID sia riferito ad una struttura utente con flag FISOBC.

(#7) Per elenco si intende una stringa (con offset alla tabella stringhe), composta da un certo numero di sotto-stringhe separate con carattere ascii 0xFF: i due elenchi (nomi/valori) DEVONO avere sempre lo stesso n. di elementi o essere entrambe vuote (=0).

(#8) La chiamata ad un metodo di una instanza OB viene effettivamente tradotto come una espressione matematica, in cui vengono preparati in stack gli eventuali parametri (valori in ordine naturale), viene effettuata la chiamata al metodo e quindi ritrovato l'eventuale risultato da stack.

(#9) Nome completo del metodo (univoco), inteso come stringa con offset alla tabella stringhe.

Dati espressione matematica

I dati dell'espressione matematica (usati dagli elementi MATH, COND e OBCALL), 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

OBCALL

0x31

U32=Metodo (#2)

?

?

Chiamata diretta a metodo per instanza OB

POP

0x32

 

*

--

Pop valore (skip)

PUSHP

0x33

U32=Sorgente (#1)

U32

U32

Push puntatore a variabile

(#1) Per sorgente/destinazione si intende nome di una variabile, ovvero un offset alla tabella stringhe .

(#2) Per metodo si intende stringa, ovvero un offset alla tabella stringhe, con formato "<nome_istanza>.#<hexid_metodo>" oppure "<nome_istanza>[<indice>].#<hexid_metodo>" (hexid = numero 32bit esadecimale ascii, senza prefisso 0x. Esempio metodo n. 0xFA9 dell'instanza OB 'myob' : "myob#00000FA9".

 

  

Keyboard Navigation

F7 for caret browsing
Hold ALT and press letter

This Info: ALT+q
Page Header: ALT+h
Topic Header: ALT+t
Topic Body: ALT+b
Contents: ALT+c
Search: ALT+s
Exit Menu/Up: ESC