Cambio valore

L'operazione Cambio valore cambia il valore e le proprietà di Variabile, Oggetto e Target.

Blocco

Testo

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, TARGET, EXPRESSION);
                             3                               1     2         4

1: Operazione

2: Destinazione

3: When over

Impostare l'operazione quando il valore supera l'intervallo.

Impostazione in [When over]:

Nota: [Loop] non supporta le variabili di tipo dati Reale che provocano l’arresto dell’anello quando si raggiunge il valore massimo.

4: Sorgente

Operazione

[Set]
Blocco
[Set]
Testo
'$Enums.AssignmentOperator.Set'

O '='

Scrive le variabili, le costanti o le espressioni specificate nel blocco sorgente sul blocco destinazione.

[AddTo]

Blocco

[AddTo]

Testo
'$Enums.AssignmentOperator.AddTo'

Or'+='

Aggiunge le variabili, le costanti o le espressioni specificate nel blocco sorgente sul blocco destinazione.

[SubTo]

Blocco

[SubTo]

Testo
'$Enums.AssignmentOperator.SubTo'

O '-='

Sottrae le variabili, le costanti o le espressioni specificate nel blocco sorgente sul blocco destinazione.

[MulTo]

Blocco

[MulTo]

Testo
'$Enums.AssignmentOperator.MulTo'

O'*='

Moltiplica il valore del blocco di destinazione per la variabile, la costante o l'espressione specificata nel blocco sorgente e copia il risultato nel blocco di destinazione.

[DivTo]

Blocco

[DivTo]

Testo
'$Enums.AssignmentOperator.DivTo' O'/='
Divide il valore del blocco di destinazione per la variabile, la costante o l'espressione specificata nel blocco sorgente e copia il risultato nel blocco di destinazione.

[AndTo]

Blocco

[AndTo]

Testo
'$Enums.AssignmentOperator.AndTo' O'&='
Esegue l'operazione AND (prodotto logico) tra il numero intero o la variabile specificata nel blocco sorgente e nel blocco destinazione e copia il risultato sul blocco destinazione.

[OrTo]

Blocco

[OrTo]

Testo
'$Enums.AssignmentOperator.OrTo' O'|='
Esegue l'operazione OR (somma logico) tra il numero intero o la variabile specificata nel blocco sorgente e nel blocco destinazione e copia il risultato sul blocco destinazione.
[XorTo]
Blocco
[XorTo]
Testo
'$Enums.AssignmentOperator.XorTo' O'^='
Esegue l'operazione XOR (somma logica esclusiva) tra il numero intero o la variabile specificata nel blocco sorgente e nel blocco destinazione e copia il risultato sul blocco destinazione.

[NandTo]

Blocco

[NandTo]

Testo
'$Enums.AssignmentOperator.NandTo'
Esegue l'operazione NAND (prodotto logico seguito da NOT) tra il numero intero o la variabile specificata nel blocco sorgente e nel blocco destinazione e copia il risultato sul blocco destinazione.

[NorTo]

Blocco

[NorTo]

Testo
'$Enums.AssignmentOperator.NorTo'
Esegue l'operazione NOR (somma logica seguita da invertitore) tra il numero intero o la variabile specificata nel blocco sorgente e nel blocco destinazione e copia il risultato sul blocco destinazione.

 

Nota:

  • In un blocco Math non si possono utilizzare valori negativi e le operazioni di modifica valore con gli operatori matematici divisione (/) o modulo (%).

  • Se nell’operazione di modifica valore (AddTo, SubTo, DivTo, MulTo) si usano 16 o più cifre decimali, usare LINT o ULINT come variabile destinazione.

 

L'operazione [Cambio valore] consente di impostare come destinazione una variabile o una proprietà sorgente.

 

Cambio valore della variabile - INTERA

Impostare il valore del blocco sorgente sulla variabile del blocco di destinazione.

(Esempio): Set

Operazione Blocco destinazione Blocco sorgente
[Set] Impostare la variabile INT1 sul blocco variabili. Selezionare [Int] e impostare 5 nel blocco Costanti.
Blocco
Testo

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, INT1, 5);

INT1 è impostato su 5 quando viene eseguito lo script.

(Esempio): AddTo

Operazione Blocco destinazione Blocco sorgente
[AddTo] Impostare la variabile INT1 sul blocco variabili. Selezionare [Int] e impostare 7 nel blocco Costanti.
Blocco
Testo

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.AddTo, INT1, 7);

→ Se INT1 è 3 quando viene eseguito lo script, si aggiunge il 7 del blocco sorgente e INT1 diventa 10.

(Esempio): SubTo

Operazione Blocco destinazione Blocco sorgente
[SubTo] Impostare la variabile INT1 sul blocco variabili. Selezionare [Int] e impostare 3 nel blocco Costanti.
Blocco
Testo

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.SubTo, INT1, 3);

→ Se INT1 è 5 quando viene eseguito lo script, il valore 3 nel blocco sorgente viene sottratto e INT1 diventa 2.

(Esempio): DivTo

Operazione Blocco destinazione Blocco sorgente
[DivTo] Impostare la variabile INT1 sul blocco variabili. Selezionare [Int] e impostare 2 nel blocco Costanti.
Blocco
Testo

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.DivTo, INT1, 2);

→ Se INT1 è 5 quando viene eseguito lo script, il suo valore viene diviso per il valore di 2 del blocco sorgente e INT1 diventa 2. Se il valore è di tipo intero, il valore decimale viene troncato.

(Esempio): MulTo

Operazione Blocco destinazione Blocco sorgente
[MulTo] Impostare la variabile INT1 sul blocco variabili. Selezionare [Int] e impostare 5 nel blocco Costanti.
Blocco
Testo

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.MulTo, INT1, 5);

→ Se INT1 è 3 quando viene eseguito lo script, il suo valore viene moltiplicato per il valore del blocco sorgente di 5 e INT1 diventa 15.

(Esempio): AndTo

Operazione Blocco destinazione Blocco sorgente
[AndTo] Impostare la variabile SINT1 sul blocco variabili. Impostare la variabile SINT2 sul blocco variabili.
Blocco
Testo

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.AndTo, SINT1, SINT2);

→ Se SINT1 è 3 (binario: 00000011) e SINT2 è 5 (binario: 00000101), SINT1 sarà 1 (binario: 00000001) quando si verifica l'attivazione.

L'espressione logica converte il valore del blocco di destinazione e del blocco sorgente in numeri binari e calcola il prodotto logico per ogni cifra. Riportare il risultato al radicale iniziale e impostarlo sul blocco di destinazione.

(Esempio): OrTo

Operazione Blocco destinazione Blocco sorgente
[OrTo] Impostare la variabile SINT1 sul blocco variabili. Impostare la variabile SINT2 sul blocco variabili.
Blocco
Testo

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.OrTo, SINT1, SINT2);

→ Se SINT1 è 3 (binario: 00000011) e SINT2 è 5 (binario: 00000101), SINT1 sarà 7 (binario: 00000111) quando si verifica l'attivazione.

L'espressione logica converte il valore del blocco di destinazione e del blocco sorgente in numeri binari e calcola la somma logica per ogni cifra. Riportare il risultato al radicale iniziale e impostarlo sul blocco di destinazione.

(Esempio): XorTo

Operazione Blocco destinazione Blocco sorgente
[XorTo] Impostare la variabile SINT1 sul blocco variabili. Impostare la variabile SINT2 sul blocco variabili.
Blocco
Testo

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.XorTo, SINT1, SINT2);

→ Se SINT1 è 3 (binario: 00000011) e SINT2 è 5 (binario: 00000101), SINT1 sarà 6 (binario: 00000110) quando si verifica l'attivazione.

L'espressione logica converte il valore del blocco di destinazione e del blocco sorgente in numeri binari e calcola la somma logica esclusiva per ogni cifra. Riportare il risultato al radicale iniziale e impostarlo sul blocco di destinazione.

(Esempio): NandTo

Operazione Blocco destinazione Blocco sorgente
[NandTo] Impostare la variabile SINT1 sul blocco variabili. Impostare la variabile SINT2 sul blocco variabili.
Blocco
Testo

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.NandTo, SINT1, SINT2);

→ Se SINT1 è 3 (binario: 00000011) e SINT2 è 5 (binario: 00000101), SINT1 sarà -2 (binario: 11111110) quando si verifica l'attivazione.

L'espressione logica converte il valore del blocco di destinazione e del blocco sorgente in numeri binari e calcola il prodotto logico negativo per ogni cifra. Riportare il risultato al radicale iniziale e impostarlo sul blocco di destinazione.

(Esempio): NorTo

Operazione Blocco destinazione Blocco sorgente
[NorTo] Impostare la variabile SINT1 sul blocco variabili. Impostare la variabile SINT2 sul blocco variabili.
Blocco
Testo

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.NorTo, SINT1, SINT2);

→ Se SINT1 è 3 (binario: 00000011) e SINT2 è 5 (binario: 00000101), SINT1 sarà -8 (binario: 11111000) quando si verifica l'attivazione.

L'espressione logica converte il valore del blocco di destinazione e del blocco sorgente in numeri binari e calcola la somma logica seguita da un invertitore per ogni cifra. Riportare il risultato al radicale iniziale e impostarlo sul blocco di destinazione.

Cambio valore della variabile - GIORNO E ORA

Impostare il valore di giorno e ora dalla variabile sorgente nella variabile di destinazione.

Le variabili DATE, TIME_OF_DAY e DATE_AND_TIME supportano gli operatori [Set] e [AddTo].

Di seguito viene illustrato il comportamento dell’operazione quando il Blocco sorgente e il Blocco destinazione sono le variabili DATE, TIME_OF_DAY, o DATE_AND_TIME:

Operazione Blocco sorgente Blocco destinazione Comportamento
[Set] DATE DATE Impostazione giorno.
TIME_OF_DAY Nessun valore impostato.
DATE_AND_TIME Impostare solo il giorno.
TIME_OF_DAY DATE Nessun valore impostato.
TIME_OF_DAY Impostare l’ora.
DATE_AND_TIME Impostare solo l’ora.
DATE_AND_TIME DATE Impostare solo il giorno.
TIME_OF_DAY Impostare solo l’ora.
DATE_AND_TIME Impostare giorno e ora.
[AddTo] DATE DATE Aggiungere il giorno.
TIME_OF_DAY Nessun valore impostato.
DATE_AND_TIME Aggiungere solo il giorno.
TIME_OF_DAY DATE Nessun valore impostato.
TIME_OF_DAY Aggiungere l'ora.
DATE_AND_TIME Aggiungere solo l'ora.
DATE_AND_TIME DATE Aggiungere solo il giorno.
TIME_OF_DAY Aggiungere solo l'ora.
DATE_AND_TIME Aggiungere data e ora.

(Esempio): Set

Operazione Blocco destinazione Blocco sorgente
[Set] Impostare la variabile TIME_OF_DAY1 sul blocco variabili. Selezionare [TIME_OF_DAY] e impostare 00:15:00 nel blocco Costanti.
Blocco
Testo

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, TIME_OF_DAY1, timeOfDay(00, 15, 00));

→ Quando si verifica l'attivazione, l'ora in TIME_OF_DAY1 è impostata su 00:15:00.

Nota: se il blocco sorgente è impostato su un giorno o un'ora [costante], qualsiasi valore di giorno o di ora non incluso nella costante sarà pari a zero. Ad esempio, se nella variabile DATE_AND_TIME si scrive un'ora costante, il valore del giorno sarà 0 (1970/01/01).

(Esempio): AddTo

Operazione Blocco destinazione Blocco sorgente
[AddTo] Impostare la variabile DATE_AND_TIME1 sul blocco variabili. Selezionare [TIME_OF_DAY] e impostare 00:15:00 nel blocco Costanti.
Blocco
Testo

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.AddTo, DATE_AND_TIME1, timeOfDay(00, 15, 00));

→ Se DATE_AND_TIME1 è 2024/10/01 12:34:56, quando scatta il trigger nel blocco sorgente vengono aggiunti 00:15:00 e DATE_AND_TIME1 diventa 2024/10/01 12:49:56.

Cambio valore della variabile - BOOLEANO

Nella variabile di destinazione viene impostato un solo bit di dati.

(Esempio): Set

Operazione Blocco destinazione Blocco sorgente
[Set] Impostare la variabile BOOL1 sul blocco variabili. Selezionare [Int] e impostare 1 nel blocco Costanti.
Blocco
Testo

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, BOOL1, 1);

BOOL1 è impostata su ON quando si attiva il trigger.

Cambio valore della variabile - STRINGA

Nella variabile di destinazione viene impostata una stringa.

(Esempio): Set

Operazione Blocco destinazione Blocco sorgente
[Set] Impostare la variabile STRING1 sul blocco variabili. Selezionare [STRING] e impostare "DEF" nel blocco Costanti.
Blocco
Testo

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, STRING1, "DEF");

STRING1 è impostata su DEF quando si attiva il trigger.

(Esempio): AddTo

Operazione Blocco destinazione Blocco sorgente
[AddTo] Impostare la variabile STRING1 sul blocco variabili. Selezionare [STRING] e impostare "DEF" nel blocco Costanti.
Blocco
Testo

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.AddTo, STRING1, "DEF");

→ Se STRING1 è "AB", quando scatta il trigger, al blocco sorgente viene aggiunto "DEF" e STRING1 diventa "ABDEF".

Cambio valore proprietà della sorgente Oggetto

Impostare il valore nel blocco sorgente sulla proprietà della sorgente nel blocco di destinazione.

(Esempio 1)

Operazione Blocco destinazione Blocco sorgente
[Set] Impostare la proprietà della sorgente oggetto Rectangle1.Thickness sul blocco Oggetto. Selezionare [Int] e impostare 10 nel blocco Costanti.
Blocco
Testo

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $GraphicObject.Rectangle1.Thickness, 10);

→ Lo spessore bordo del Rectangle1 diventa 10 quando scatta il trigger.

(Esempio 2)

Operazione Blocco destinazione Blocco sorgente
[Set] Impostare la proprietà della sorgente oggetto Lamp1.Interlock sul blocco Oggetto. Selezionare [Int] e impostare 0 nel blocco Costanti.
Blocco
Testo

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $GraphicObject.Lamp1.Interlock, 0);

→ Lo stato di interblocco Lamp1 è impostato su OFF quando si attiva il trigger.

Cambio valore proprietà della sorgente variabile

Impostare il valore nel blocco sorgente sulla proprietà della sorgente nel blocco di destinazione.

(Esempio)

Operazione

Blocco destinazione

Blocco sorgente
[Set] Impostare la proprietà della sorgente variabile INT1.Value sul blocco Variabile. Selezionare [Int] e impostare 1 nel blocco Costanti.  
Blocco
Testo

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, INT1.Value, 1);

INT1.Value è impostata su 1 quando si attiva il trigger.

Cambio valore proprietà della sorgente target

Impostare il valore nel blocco sorgente sulla proprietà della sorgente nel blocco di destinazione.

(Esempio 1)

Stabilire la data per il target.

Operazione Blocco destinazione Blocco sorgente
[Set] Impostare la proprietà sorgente Target01.DateAndTime.Date al blocco Target. Selezionare [Date] e impostare 17/10/2017 nel blocco Costanti.
Blocco
Testo

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $Target.Target01.DateAndTime.Date, date(2017, 10, 17));

→ Quando scatta il trigger, il visualizzatore è impostato su 17/10/2017.

(Esempio 2)

Impostare giorno e ora del visualizzatore sullo stesso giorno e ora del dispositivo esterno.

(Esempio 2- 1)

Impostare giorno e ora (anno, mese, giorno, ore, minuti, secondi) del dispositivo esterno rispettivamente sulle variabili intere da INT1 a INT6.

Operazione Blocco destinazione Blocco sorgente
[Set]

Impostare la proprietà sorgente target sul blocco Target.

Target01.DateAndTime.Year

Target01.DateAndTime.Month

Target01.DateAndTime.Day

Target01.DateAndTime.Hour

Target01.DateAndTime.Minute

Target01.DateAndTime.Second

Impostare la variabile da INT1 a INT6 sul blocco Variabile.
Blocco
Testo

onScheduledDay(23, 0, () => {

    changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $Target.Target01.DateAndTime.Year, INT1.Value);

    changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $Target.Target01.DateAndTime.Month, INT2.Value);

    changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $Target.Target01.DateAndTime.Day, INT3.Value);

    changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $Target.Target01.DateAndTime.Hour, INT4.Value);

    changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $Target.Target01.DateAndTime.Minute, INT5.Value);

    changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $Target.Target01.DateAndTime.Second, INT6.Value);

});

→ Giorno e ora del visualizzatore sono impostati su giorno e ora del dispositivo esterno alle 23:00 di ogni giorno.

(Esempio 2- 2)

Impostare giorno e ora del dispositivo esterno sulla variabile DATE_AND_TIME Var1 come numero di secondi (intero a 32 bit), a partire da 1970/01/01 00:00:00 UTC. Per la relazione tra il valore di Var1 e giorno e ora, fare riferimento a quanto segue.

TIME, DATE, TIME_OF_DAY, DATE_AND_TIME

Operazione Blocco destinazione Blocco sorgente
[Set] Impostare la proprietà sorgente target Target01.DateAndTime.DateTime sul blocco Target. Impostare la variabile Var1 sul blocco variabili.
Blocco
Testo

onScheduledDay(23, 0, () => {

    changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $Target.Target01.DateAndTime.DateTime, Var1.Value);

});

→ Giorno e ora del visualizzatore sono impostati su giorno e ora del dispositivo esterno alle 23:00 di ogni giorno.

(Esempio 3)

Spegnere la retroilluminazione del visualizzatore.

Operazione Blocco destinazione Blocco sorgente
[Set] Impostare la proprietà sorgente target Target01.Preferences.BacklightOff sul blocco Target. Impostare la variabile BOOL1 con il valore 1 sul blocco Variabile.
Blocco
Testo

changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $Target.Target01.Preferences.BacklightOff, BOOL1.Value);

→ Quando scatta il trigger, la retroilluminazione del visualizzatore si spegne.