# Alterar valor

A operação Alterar valor altera o valor e a propriedade da Variável, Objeto e Terminal.

##### Bloco

##### Texto

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

1: Operação

2: Destino

3: When over

Defina a operação quando o valor exceder a faixa.

Configuração em [When over]:

- [Loop]: A parte que excede a faixa loops para o valor mínimo ou máximo. Por exemplo, se a faixa de valor for de 0 a 10, adicionar 7 a um valor atual de 5 resultará em 1. A única exceção é quando a operação é [Set]. Nesse caso, quando você grava um valor que excede a faixa de valores, o valor atual permanece inalterado.
- [Stop]: O valor é definido para o valor mínimo ou máximo.

Observação: [Loop] não suporta variáveis de tipo de dados Reais, o que faz com que o loop pare quando o valor máximo é alcançado.

4: Fonte

### Operação

[Set] | ##### Bloco [Set] ##### Texto '$Enums.AssignmentOperator.Set' Ou '=' | Grava a variável, constante ou expressão especificada no bloco da origem para o bloco de destino.
[AddTo] | ##### Bloco [AddTo] ##### Texto '$Enums.AssignmentOperator.AddTo' Or'+=' | Adiciona a variável, constante ou expressão especificada no bloco da origem para o bloco de destino.
[SubTo] | ##### Bloco [SubTo] ##### Texto '$Enums.AssignmentOperator.SubTo' Ou '-=' | Subtrai a variável, constante ou expressão especificada no bloco de origem para o bloco de destino.
[MulTo] | ##### Bloco [MulTo] ##### Texto '$Enums.AssignmentOperator.MulTo' Ou'*=' | Multiplica o valor do bloco de destino pela variável, constante ou expressão especificada no bloco de origem e copia o resultado para o bloco de destino.
[DivTo] | ##### Bloco [DivTo] ##### Texto '$Enums.AssignmentOperator.DivTo' Ou'/=' | Divide o valor do bloco de destino pela variável, constante ou expressão especificada no bloco de origem e copia o resultado para o bloco de destino.
[AndTo] | ##### Bloco [AndTo] ##### Texto '$Enums.AssignmentOperator.AndTo' Ou'&=' | Executa a operação AND (produto lógico) entre o integer ou a variável especificado no bloco de origem e o bloco de destino e copia o resultado para o bloco de destino.
[OrTo] | ##### Bloco [OrTo] ##### Texto '$Enums.AssignmentOperator.OrTo' Ou'|=' | Executa a operação OR (soma lógica) entre o integer ou a variável especificado no bloco de origem e o bloco de destino e copia o resultado para o bloco de destino.
[XorTo] | ##### Bloco [XorTo] ##### Texto '$Enums.AssignmentOperator.XorTo' Ou'^=' | Executa a operação XOR (soma lógica exclusiva) entre o integer ou a variável especificado no bloco de origem e o bloco de destino e copia o resultado para o bloco de destino.
[NandTo] | ##### Bloco [NandTo] ##### Texto '$Enums.AssignmentOperator.NandTo' | Executa a operação NAND (produto lógico seguido de NOT) entre o integer ou variável especificado no bloco de origem e o bloco de destino, em seguida, copia o resultado para o bloco de destino.
[NorTo] | ##### Bloco [NorTo] ##### Texto '$Enums.AssignmentOperator.NorTo' | Executa a operação NOR (soma lógica seguida por Inversor) entre o integer ou a variável especificado no bloco de origem e o bloco de destino e copia o resultado para o bloco de destino.

Observação:

- Não é possível utilizar um valor negativo em uma operação bloco de Math e Alterar valor com operadores matemáticos dividir (/) ou modular (%).

- Quando você utiliza 16 ou mais dígitos decimais em uma operação Alterar valor (AddTo, SubTo, DivTo, MulTo) então use LINT ou ULINT como a variável do destino.

A operação [Alterar valor] permite definir uma variável ou propriedade de origem como destino.

Ocultar Mostrar

1. Alteração do valor da variável - INTEIRO
2. Alteração do valor da variável - DATA E HORA
3. Alteração do valor da variável - BOOL
4. Alteração do valor da variável - STRING
5. Alteração do valor da propriedade de origem do objeto
6. Alteração do valor da propriedade de origem da variável
7. Alteração do valor da propriedade de origem do terminal

## Alteração do valor da variável - INTEIRO

Definir o valor do bloco de origem para a variável no bloco de destino.

(Exemplo): Set

Operação | Bloco de destino | Bloco de origem
[Set] | Defina a variável INT1 para o bloco da variável. | Selecione [Int] e defina 5 para o bloco Constante.
##### Bloco ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, INT1, 5);

→ INT1 está definido como 5 quando o script é executado.

(Exemplo): AddTo

Operação | Bloco de destino | Bloco de origem
[AddTo] | Defina a variável INT1 para o bloco da variável. | Selecione [Int] e defina 7 para o bloco Constante.
##### Bloco ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.AddTo, INT1, 7);

→ Se INT1 for 3 quando o script for executado, 7 do bloco de origem será adicionado e INT1 se tornará 10.

(Exemplo): SubTo

Operação | Bloco de destino | Bloco de origem
[SubTo] | Defina a variável INT1 para o bloco da variável. | Selecione [Int] e defina 3 para o bloco Constante.
##### Bloco ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.SubTo, INT1, 3);

→ Se INT1 for 5 quando o script for executado, o valor 3 no bloco de origem será subtraído e INT1 se tornará 2.

(Exemplo): DivTo

Operação | Bloco de destino | Bloco de origem
[DivTo] | Defina a variável INT1 para o bloco da variável. | Selecione [Int] e defina 2 para o bloco Constante.
##### Bloco ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.DivTo, INT1, 2);

→ Se INT1 for 5 quando o script for executado, seu valor será dividido pelo valor do bloco de origem de 2 e INT1 se tornará 2. Se o valor for do tipo integer, o valor do ponto decimal será truncado.

(Exemplo): MulTo

Operação | Bloco de destino | Bloco de origem
[MulTo] | Defina a variável INT1 para o bloco da variável. | Selecione [Int] e defina 5 para o bloco Constante.
##### Bloco ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.MulTo, INT1, 5);

→ Se INT1 for 3 quando o script for executado, seu valor será multiplicado pelo valor do bloco de origem de 5 e INT1 se tornará 15.

(Exemplo): AndTo

Operação | Bloco de destino | Bloco de origem
[AndTo] | Defina a variável SINT1 para o bloco da variável. | Defina a variável SINT2 para o bloco da variável.
##### Bloco ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.AndTo, SINT1, SINT2);

→ Se SINT1 for 3 (binário: 00000011) e SINT2 for 5 (binário: 00000101), SINT1 será 1 (binário: 00000001) quando o disparo ocorre.

A expressão lógica converte o valor do bloco de destino e o bloco de origem em números binários e calcula o produto lógico em cada dígito. Defina o resultado de volta à raiz original e defina-o para o bloco de destino.

(Exemplo): OrTo

Operação | Bloco de destino | Bloco de origem
[OrTo] | Defina a variável SINT1 para o bloco da variável. | Defina a variável SINT2 para o bloco da variável.
##### Bloco ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.OrTo, SINT1, SINT2);

→ Se SINT1 for 3 (binário: 00000011) e SINT2 for 5 (binário: 00000101), SINT1 será 7 (binário: 00000111) quando o disparo ocorre.

A expressão lógica converte o valor do bloco de destino e o bloco de origem em números binários e calcula a soma lógica em cada dígito. Defina o resultado de volta à raiz original e defina-o para o bloco de destino.

(Exemplo): XorTo

Operação | Bloco de destino | Bloco de origem
[XorTo] | Defina a variável SINT1 para o bloco da variável. | Defina a variável SINT2 para o bloco da variável.
##### Bloco ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.XorTo, SINT1, SINT2);

→ Se SINT1 for 3 (binário: 00000011) e SINT2 for 5 (binário: 00000101), SINT1 será 6 (binário: 00000110) quando o disparo ocorre.

A expressão lógica converte o valor do bloco de destino e o bloco de origem em números binários e calcula uma soma lógica exclusiva em cada dígito. Defina o resultado de volta à raiz original e defina-o para o bloco de destino.

(Exemplo): NandTo

Operação | Bloco de destino | Bloco de origem
[NandTo] | Defina a variável SINT1 para o bloco da variável. | Defina a variável SINT2 para o bloco da variável.
##### Bloco ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.NandTo, SINT1, SINT2);

→ Se SINT1 for 3 (binário: 00000011) e SINT2 for 5 (binário: 00000101), SINT1 será -2 (binário: 11111110) quando o disparo ocorre.

A expressão lógica converte o valor do bloco de destino e o bloco de origem em números binários e calcula o produto lógico negativo em cada dígito. Defina o resultado de volta à raiz original e defina-o para o bloco de destino.

(Exemplo): NorTo

Operação | Bloco de destino | Bloco de origem
[NorTo] | Defina a variável SINT1 para o bloco da variável. | Defina a variável SINT2 para o bloco da variável.
##### Bloco ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.NorTo, SINT1, SINT2);

→ Se SINT1 for 3 (binário: 00000011) e SINT2 for 5 (binário: 00000101), SINT1 será -8 (binário: 11111000) quando o disparo ocorre.

A expressão lógica converte o valor do bloco de destino e o bloco de origem em números binários e calcula uma soma lógica seguida por Inversor em cada dígito. Defina o resultado de volta à raiz original e defina-o para o bloco de destino.

## Alteração do valor da variável - DATA E HORA

Defina o valor de data e hora da variável de origem para a variável de destino.

As variáveis DATE, TIME_OF_DAY e DATE_AND_TIME suportam o operador [Set] e [AddTo].

O seguinte ilustra o comportamento da operação quando o Bloco de origem e o Bloco de destino são variáveis DATE, TIME_OF_DAY ou DATE_AND_TIME :

Operação | Bloco de origem | Bloco de destino | Comportamento
[Set] | DATE | DATE | Definir data.
TIME_OF_DAY | Nenhum valor é definido.
DATE_AND_TIME | Defina apenas a data.
TIME_OF_DAY | DATE | Nenhum valor é definido.
TIME_OF_DAY | Definir hora.
DATE_AND_TIME | Defina apenas a hora.
DATE_AND_TIME | DATE | Defina apenas a data.
TIME_OF_DAY | Defina apenas a hora.
DATE_AND_TIME | Definir data e hora.
[AddTo] | DATE | DATE | Adicionar data.
TIME_OF_DAY | Nenhum valor é definido.
DATE_AND_TIME | Adicionar somente data.
TIME_OF_DAY | DATE | Nenhum valor é definido.
TIME_OF_DAY | Adicionar hora.
DATE_AND_TIME | Adicionar somente hora.
DATE_AND_TIME | DATE | Adicionar somente data.
TIME_OF_DAY | Adicionar somente hora.
DATE_AND_TIME | Adicionar data e hora.

(Exemplo): Set

Operação | Bloco de destino | Bloco de origem
[Set] | Defina a variável TIME_OF_DAY1 para o bloco da variável. | Selecione [TIME_OF_DAY] e defina 00:15:00 para o bloco Constante.
##### Bloco ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, TIME_OF_DAY1, timeOfDay(00, 15, 00));

→ Quando o disparo ocorre, a hora em TIME_OF_DAY1 é definida como 00:15:00.

Observação: Se um bloco de origem for definido com uma data ou hora [constante], qualquer valor de data ou hora não incluído na constante será zero. Por exemplo, se você gravar uma hora constante na variável DATE_AND_TIME, o valor da data será 0 (1970/01/01).

(Exemplo): AddTo

Operação | Bloco de destino | Bloco de origem
[AddTo] | Defina a variável DATE_AND_TIME1 para o bloco da variável. | Selecione [TIME_OF_DAY] e defina 00:15:00 para o bloco Constante.
##### Bloco ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.AddTo, DATE_AND_TIME1, timeOfDay(00, 15, 00));

→ Se DATE_AND_TIME1 for 2024/10/01 12:34:56, quando o disparo ocorre, 00:15:00 no bloco de origem será adicionado e DATE_AND_TIME1 se tornará 2024/10/01 12:49:56.

## Alteração do valor da variável - BOOL

Um único bit de dados é definido para a variável de destino.

(Exemplo): Set

Operação | Bloco de destino | Bloco de origem
[Set] | Defina a variável BOOL1 para o bloco da variável. | Selecione [Int] e defina 1 para o bloco Constante.
##### Bloco ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, BOOL1, 1);

→ BOOL1 está definido como ON quando o disparo ocorre.

## Alteração do valor da variável - STRING

Uma string é definida para a variável de destino.

(Exemplo): Set

Operação | Bloco de destino | Bloco de origem
[Set] | Defina a variável STRING1 para o bloco da variável. | Selecione [STRING] e defina "DEF" para o bloco Constante.
##### Bloco ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, STRING1, "DEF");

→ STRING1 está definido como DEF quando o disparo ocorre.

(Exemplo): AddTo

Operação | Bloco de destino | Bloco de origem
[AddTo] | Defina a variável STRING1 para o bloco da variável. | Selecione [STRING] e defina "DEF" para o bloco Constante.
##### Bloco ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.AddTo, STRING1, "DEF");

→ Se STRING1 for "AB", quando o disparo ocorre, "DEF" será adicionado ao bloco de origem e STRING1 se tornará "ABDEF".

## Alteração do valor da propriedade de origem do objeto

Definir o valor do bloco de origem para a propriedade de origem no bloco de destino.

(Exemplo 1)

Operação | Bloco de destino | Bloco de origem
[Set] | Definir a propriedade de origem do objeto Rectangle1.Thickness para o bloco do objeto. | Selecione [Int] e defina 10 para o bloco Constante.
##### Bloco ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $GraphicObject.Rectangle1.Thickness, 10);

→ A espessura da borda do Rectangle1 altera para 10 quando o disparo ocorre.

(Exemplo 2)

Operação | Bloco de destino | Bloco de origem
[Set] | Definir a propriedade de origem do objeto Lamp1.Interlock para o bloco do objeto. | Selecione [Int] e defina 0 para o bloco Constante.
##### Bloco ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $GraphicObject.Lamp1.Interlock, 0);

→ Lamp1 estado de bloqueio está definido como OFF quando o disparo ocorre.

## Alteração do valor da propriedade de origem da variável

Definir o valor do bloco de origem para a propriedade de origem no bloco de destino.

(Exemplo)

Operação | Bloco de destino | Bloco de origem
[Set] | Definir a propriedade de origem da variável INT1.Value para o bloco da variável. | Selecione [Int] e defina 1 para o bloco Constante.
##### Bloco ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, INT1.Value, 1);

→ INT1.Value está definido como 1 quando o disparo ocorre.

## Alteração do valor da propriedade de origem do terminal

Definir o valor do bloco de origem para a propriedade de origem no bloco de destino.

(Exemplo 1)

Definir uma data para o terminal.

Operação | Bloco de destino | Bloco de origem
[Set] | Definir a propriedade de origem do terminal Target01.DateAndTime.Data para o bloco do terminal. | Selecione [Date] e defina 10/17/2017 para o bloco Constante.
##### Bloco ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $Target.Target01.DateAndTime.Date, date(2017, 10, 17));

→ Unidade de display está definido como 17/10/2017 quando o disparo ocorre.

(Exemplo 2)

Definir a data e a hora da unidade de display para a mesma data e hora do dispositivo externo.

(Exemplo 2- 1)

Definir a data e a hora (ano, mês, dia, horas, minutos, segundos) do dispositivo externo para as variáveis inteiras INT1 a INT6, respectivamente.

Operação | Bloco de destino | Bloco de origem
[Set] | Definir a propriedade de origem do terminal para o bloco do terminal. Target01.DateAndTime.Year Target01.DateAndTime.Month Target01.DateAndTime.Day Target01.DateAndTime.Hour Target01.DateAndTime.Minute Target01.DateAndTime.Second | Definir a variável INT1 para INT6 para o bloco da variável.
##### Bloco ##### Texto 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); });

→ A data e a hora na unidade de display são definidas para a data e a hora do dispositivo externo às 23:00 todos os dias.

(Exemplo 2- 2)

Definir a data e a hora do dispositivo externo em uma variável Var1 DATE_AND_TIME como o número de segundos (inteiro de 32 bits) a partir de 1970/01/01 00:00:00 UTC. Para a relação entre o valor de Var1 e a data e a hora, consulte o seguinte.

HORA, DATA, HORA_DO_DIA, DATA_E_HORA

Operação | Bloco de destino | Bloco de origem
[Set] | Definir a propriedade de origem do terminal Target01.DateAndTime.DateTime para o bloco do terminal. | Defina a variável Var1 para o bloco da variável.
##### Bloco ##### Texto onScheduledDay(23, 0, () => { changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $Target.Target01.DateAndTime.DateTime, Var1.Value); });

→ A data e a hora na unidade de display são definidas para a data e a hora do dispositivo externo às 23:00 todos os dias.

(Exemplo 3)

Desligue a luz de fundo da unidade de display.

Operação | Bloco de destino | Bloco de origem
[Set] | Definir a propriedade de origem do terminal Target01.Preferences.BacklightOff para o bloco do terminal. | Definir a variável BOOL1 com valor 1 para o bloco da variável.
##### Bloco ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $Target.Target01.Preferences.BacklightOff, BOOL1.Value);

→ A luz de fundo da unidade de display desliga quando o disparo ocorre.