# Cambio de valor

La operación de Cambio de valor cambia el valor y la propiedad de Variable, Objeto y Destino.

##### Bloque

##### Texto

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

1: Operación

2: Destino

3: When over

Defina la operación cuando el valor excede el rango.

Configuración en [When over]:

- [Loop]: La parte que excede el rango hace un bucle hasta el valor mínimo o máximo. Por ejemplo, si el intervalo de valores es de 0 a 10, sumar 7 a un valor actual de 5 dará como resultado 1. La única excepción es cuando la operación es [Set]. En ese caso, cuando se escribe un valor que excede el intervalo de valores, el valor actual no se modifica.
- [Stop]: El valor se ajusta al valor mínimo o al valor máximo.

Nota: [Loop] no admite variables de tipo Real, que hacen que el bucle se detenga cuando se alcanza el valor máximo.

4: Origen

### Operación

[Set] | ##### Bloque [Set] ##### Texto '$Enums.AssignmentOperator.Set' O '=' | Escribe la variable, constante o expresión especificada en el bloque de origen al bloque de destino.
[AddTo] | ##### Bloque [AddTo] ##### Texto '$Enums.AssignmentOperator.AddTo' Or'+=' | Agrega la variable, constante o expresión especificada en el bloque de origen al bloque de destino.
[SubTo] | ##### Bloque [SubTo] ##### Texto '$Enums.AssignmentOperator.SubTo' O '-=' | Resta la variable, constante o expresión especificada en el bloque de origen del bloque de destino.
[MulTo] | ##### Bloque [MulTo] ##### Texto '$Enums.AssignmentOperator.MulTo' O'*=' | Multiplica el valor del bloque de destino por la variable, constante o expresión especificada en el bloque de origen y copia el resultado en el bloque de destino.
[DivTo] | ##### Bloque [DivTo] ##### Texto '$Enums.AssignmentOperator.DivTo' O'/=' | Divide el valor del bloque de destino por la variable, constante o expresión especificada en el bloque de origen y copia el resultado en el bloque de destino.
[AndTo] | ##### Bloque [AndTo] ##### Texto '$Enums.AssignmentOperator.AndTo' O'&=' | Ejecuta la operación AND (producto lógico) entre el entero o variable especificado en el bloque de origen y el bloque de destino, y copia el resultado en el bloque de destino.
[OrTo] | ##### Bloque [OrTo] ##### Texto '$Enums.AssignmentOperator.OrTo' O'|=' | Ejecuta la operación OR (suma lógica) entre el entero o variable especificado en el bloque de origen y el bloque de destino, y copia el resultado en el bloque de destino.
[XorTo] | ##### Bloque [XorTo] ##### Texto '$Enums.AssignmentOperator.XorTo' O'^=' | Ejecuta la operación XOR (suma lógica exclusiva) entre el entero o variable especificado en el bloque de origen y el bloque de destino, y copia el resultado en el bloque de destino.
[NandTo] | ##### Bloque [NandTo] ##### Texto '$Enums.AssignmentOperator.NandTo' | Ejecuta la operación Runs the NAND (producto lógico seguido de NOT) entre el entero o la variable especificada en el bloque de origen y el bloque de destino, y copia el resultado en el bloque de destino.
[NorTo] | ##### Bloque [NorTo] ##### Texto '$Enums.AssignmentOperator.NorTo' | Ejecuta la operación NOR (suma lógica seguida de un inversor) entre el entero o variable especificado en el bloque de origen y el bloque de destino, y copia el resultado en el bloque de destino.

Nota:

- No se puede utilizar un valor negativo en un bloque matemático y una operación de cambio de valor con los operadores matemáticos dividir (/) o módulo (%).

- Cuando utiliza 16 dígitos decimales o más en una operación de Cambio de valor (AddTo, SubTo, DivTo, MulTo), utilice LINT o ULINT como la variable de destino.

La operación [Cambio de valor] permite establecer una variable o propiedad de origen como destino.

Ocultar Show

1. Cambio de Valor de Variable - ENTERO
2. Cambio de valor de la variable - FECHA Y HORA
3. Cambio de valor de la variable - BOOL
4. Cambio de valor de la variable - STRING
5. Cambio de valor de la propiedad de origen del objeto
6. Cambio de valor de la propiedad de origen de la variable
7. Cambio de valor de la propiedad de origen del destino

## Cambio de Valor de Variable - ENTERO

Establezca el valor del bloque de origen en la variable del bloque de destino.

(Ejemplo): Set

Operación | Bloque de destino | Bloque de origen
[Set] | Establezca la variable INT1 en el bloque de variables. | Seleccione [Int] y defina 5 en el bloque Constante.
##### Bloque ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, INT1, 5);

→ INT1 se establece en 5 cuando se ejecuta el script.

(Ejemplo): AddTo

Operación | Bloque de destino | Bloque de origen
[AddTo] | Establezca la variable INT1 en el bloque de variables. | Seleccione [Int] y defina 7 en el bloque Constante.
##### Bloque ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.AddTo, INT1, 7);

→ Si INT1 es 3 cuando se ejecuta el script, se suma 7 del bloque de origen y INT1 se convierte en 10.

(Ejemplo): SubTo

Operación | Bloque de destino | Bloque de origen
[SubTo] | Establezca la variable INT1 en el bloque de variables. | Seleccione [Int] y defina 3 en el bloque Constante.
##### Bloque ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.SubTo, INT1, 3);

→ Si INT1 es 5 cuando se ejecuta el script, se resta el valor 3 del bloque de origen y INT1 se convierte en 2.

(Ejemplo): DivTo

Operación | Bloque de destino | Bloque de origen
[DivTo] | Establezca la variable INT1 en el bloque de variables. | Seleccione [Int] y defina 2 en el bloque Constante.
##### Bloque ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.DivTo, INT1, 2);

→ Si INT1 es 5 cuando se ejecuta el script, su valor se divide por el valor 2 del bloque de origen y INT1 se convierte en 2. Si el valor es de tipo entero, se trunca el valor decimal.

(Ejemplo): MulTo

Operación | Bloque de destino | Bloque de origen
[MulTo] | Establezca la variable INT1 en el bloque de variables. | Seleccione [Int] y defina 5 en el bloque Constante.
##### Bloque ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.MulTo, INT1, 5);

→ Si INT1 es 3 cuando se ejecuta el script, su valor se multiplica por el valor 5 del bloque de origen y INT1 se convierte en 15.

(Ejemplo): AndTo

Operación | Bloque de destino | Bloque de origen
[AndTo] | Establezca la variable SINT1 en el bloque de variables. | Establezca la variable SINT2 en el bloque de variables.
##### Bloque ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.AndTo, SINT1, SINT2);

→ Si SINT1 es 3 (binario: 00000011) y SINT2 es 5 (binario: 00000101), SINT1 será 1 (binario: 00000001) cuando se produzca el disparo.

La expresión lógica convierte el valor del bloque de destino y del bloque de origen en números binarios y calcula el producto lógico en cada dígito. Establezca el resultado de nuevo en la base original y lo asigna al bloque de destino.

(Ejemplo): OrTo

Operación | Bloque de destino | Bloque de origen
[OrTo] | Establezca la variable SINT1 en el bloque de variables. | Establezca la variable SINT2 en el bloque de variables.
##### Bloque ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.OrTo, SINT1, SINT2);

→ Si SINT1 es 3 (binario: 00000011) y SINT2 es 5 (binario: 00000101), SINT1 será 7 (binario: 00000111) cuando se produzca el disparo.

La expresión lógica convierte el valor del bloque de destino y el bloque de origen en números binarios y calcula la suma lógica en cada dígito. Establezca el resultado de nuevo en la base original y lo asigna al bloque de destino.

(Ejemplo): XorTo

Operación | Bloque de destino | Bloque de origen
[XorTo] | Establezca la variable SINT1 en el bloque de variables. | Establezca la variable SINT2 en el bloque de variables.
##### Bloque ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.XorTo, SINT1, SINT2);

→ Si SINT1 es 3 (binario: 00000011) y SINT2 es 5 (binario: 00000101), SINT1 será 6 (binario: 00000110) cuando se produzca el disparo.

La expresión lógica convierte el valor del bloque de destino y del bloque de origen en números binarios y calcula la suma lógica en cada dígito. Establezca el resultado de nuevo en la base original y lo asigna al bloque de destino.

(Ejemplo): NandTo

Operación | Bloque de destino | Bloque de origen
[NandTo] | Establezca la variable SINT1 en el bloque de variables. | Establezca la variable SINT2 en el bloque de variables.
##### Bloque ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.NandTo, SINT1, SINT2);

→ Si SINT1 es 3 (binario: 00000011) y SINT2 es 5 (binario: 00000101), SINT1 será -2 (binario: 11111110) cuando se produzca el disparo.

La expresión lógica convierte el valor del bloque de destino y del bloque de origen en números binarios y calcula una suma lógica exclusiva en cada dígito. Establezca el resultado de nuevo en la base original y lo asigna al bloque de destino.

(Ejemplo): NorTo

Operación | Bloque de destino | Bloque de origen
[NorTo] | Establezca la variable SINT1 en el bloque de variables. | Establezca la variable SINT2 en el bloque de variables.
##### Bloque ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.NorTo, SINT1, SINT2);

→ Si SINT1 es 3 (binario: 00000011) y SINT2 es 5 (binario: 00000101), SINT1 será -8 (binario: 11111000) cuando se produzca el disparo.

La expresión lógica convierte el valor del bloque de destino y el bloque de origen en números binarios y calcula una suma lógica seguida de un inversor en cada dígito. Establezca el resultado de nuevo en la base original y lo asigna al bloque de destino.

## Cambio de valor de la variable - FECHA Y HORA

Establezca el valor de fecha y hora de la variable de origen a la variable de destino.

Las variables DATE, TIME_OF_DAY, y DATE_AND_TIME admiten los operadores [Set] y [AddTo].

A continuación se ilustra el comportamiento de la operación cuando el Bloque de origen y el Bloque de destino son variables de DATE, TIME_OF_DAY, o DATE_AND_TIME:

Operación | Bloque de origen | Bloque de destino | Comportamiento
[Set] | DATE | DATE | Defina la fecha.
TIME_OF_DAY | No se ha definido ningún valor.
DATE_AND_TIME | Defina solamente la fecha.
TIME_OF_DAY | DATE | No se ha definido ningún valor.
TIME_OF_DAY | Defina la hora.
DATE_AND_TIME | Defina solamente la hora.
DATE_AND_TIME | DATE | Defina solamente la fecha.
TIME_OF_DAY | Defina solamente la hora.
DATE_AND_TIME | Defina la fecha y la hora.
[AddTo] | DATE | DATE | Agregar fecha.
TIME_OF_DAY | No se ha definido ningún valor.
DATE_AND_TIME | Agregar solo la fecha.
TIME_OF_DAY | DATE | No se ha definido ningún valor.
TIME_OF_DAY | Agregar hora.
DATE_AND_TIME | Agregar solo la hora
DATE_AND_TIME | DATE | Agregar solo la fecha.
TIME_OF_DAY | Agregar solo la hora
DATE_AND_TIME | Agregar fecha y hora.

(Ejemplo): Set

Operación | Bloque de destino | Bloque de origen
[Set] | Establezca la variable TIME_OF_DAY1 en el bloque de variables. | Seleccione [TIME_OF_DAY] y defina 00:15:00 en el bloque Constante.
##### Bloque ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, TIME_OF_DAY1, timeOfDay(00, 15, 00));

→ Cuando se produce el disparo, la hora en TIME_OF_DAY1 se establece en 00:15:00.

Nota: Si un bloque de origen se establece en una fecha o una hora [constante], cualquier valor de fecha u hora no incluido en la constante será cero. Por ejemplo, si escribe una hora constante en la variable DATE_AND_TIME, el valor de la fecha será 0 (1970/01/01).

(Ejemplo): AddTo

Operación | Bloque de destino | Bloque de origen
[AddTo] | Establezca la variable DATE_AND_TIME1 en el bloque de variables. | Seleccione [TIME_OF_DAY] y defina 00:15:00 en el bloque Constante.
##### Bloque ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.AddTo, DATE_AND_TIME1, timeOfDay(00, 15, 00));

→ Si DATE_AND_TIME1 es 2024/10/01 12:34:56, cuando se activa el disparador, se suma 00:15:00 al bloque de origen y DATE_AND_TIME1 se convierte en 2024/10/01 12:49:56.

## Cambio de valor de la variable - BOOL

Un solo bit de datos se establece en la variable de destino.

(Ejemplo): Set

Operación | Bloque de destino | Bloque de origen
[Set] | Establezca la variable BOOL1 en el bloque de variables. | Seleccione [Int] y defina 1 en el bloque Constante.
##### Bloque ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, BOOL1, 1);

→ BOOL1 se establece en ON cuando se activa el disparador.

## Cambio de valor de la variable - STRING

Se establece una cadena en la variable de destino.

(Ejemplo): Set

Operación | Bloque de destino | Bloque de origen
[Set] | Establezca la variable STRING1 en el bloque de variables. | Seleccione [STRING] y defina "DEF" en el bloque Constante.
##### Bloque ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, STRING1, "DEF");

→ STRING1 se establece en DEF cuando se activa el disparador.

(Ejemplo): AddTo

Operación | Bloque de destino | Bloque de origen
[AddTo] | Establezca la variable STRING1 en el bloque de variables. | Seleccione [STRING] y defina "DEF" en el bloque Constante.
##### Bloque ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.AddTo, STRING1, "DEF");

→ Si STRING1 es "AB", cuando se produce el disparo, se agrega "DEF" al bloque de origen y STRING1 se convierte en "ABDEF".

## Cambio de valor de la propiedad de origen del objeto

Establezca el valor del bloque de origen en la propiedad de origen del bloque de destino.

(Ejemplo 1)

Operación | Bloque de destino | Bloque de origen
[Set] | Establezca la propiedad de origen del objeto Rectangle1.Thickness en el bloque de objeto. | Seleccione [Int] y defina 10 en el bloque Constante.
##### Bloque ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $GraphicObject.Rectangle1.Thickness, 10);

→ El espesor del borde del Rectangle1 cambia a 10 cuando se produce el disparo.

(Ejemplo 2)

Operación | Bloque de destino | Bloque de origen
[Set] | Establezca la propiedad de origen del objeto Lamp1.Interlock en el bloque de objeto. | Seleccione [Int] y defina 0 en el bloque Constante.
##### Bloque ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $GraphicObject.Lamp1.Interlock, 0);

→ El estado de enclavamiento de Lamp1 se establece en OFF cuando se produce el disparo.

## Cambio de valor de la propiedad de origen de la variable

Establezca el valor del bloque de origen en la propiedad de origen del bloque de destino.

(Ejemplo)

Operación | Bloque de destino | Bloque de origen
[Set] | Establezca la propiedad de origen de la variable INT1.Value en el bloque de variable. | Seleccione [Int] y defina 1 en el bloque Constante.
##### Bloque ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, INT1.Value, 1);

→ INT1.Value se establece en 1 cuando se produce el disparo.

## Cambio de valor de la propiedad de origen del destino

Establezca el valor del bloque de origen en la propiedad de origen del bloque de destino.

(Ejemplo 1)

Fije una fecha para el destino.

Operación | Bloque de destino | Bloque de origen
[Set] | Establezca la propiedad de origen de destino Target01.DateAndTime.Date en el bloque de destino. | Seleccione [Date] y defina 10/17/2017 en el bloque Constante.
##### Bloque ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $Target.Target01.DateAndTime.Date, date(2017, 10, 17));

→ La unidad de visualización se establece en 17/10/2017 cuando se activa el disparador.

(Ejemplo 2)

Establezca la fecha y la hora de la unidad de visualización a la misma fecha y hora que el dispositivo externo.

(Ejemplo 2- 1)

Establezca la fecha y hora (año, mes, día, horas, minutos, segundos) del dispositivo externo en las variables enteras INT1 a INT6, respectivamente.

Operación | Bloque de destino | Bloque de origen
[Set] | Establezca la propiedad de origen del destino en el bloque de destino. Target01.DateAndTime.Year Target01.DateAndTime.Month Target01.DateAndTime.Day Target01.DateAndTime.Hour Target01.DateAndTime.Minute Target01.DateAndTime.Second | Establezca la variable INT1 a INT6 en el bloque de variables.
##### Bloque ##### 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); });

→ La fecha y hora de la unidad de visualización se establecen a la fecha y hora del dispositivo externo a las 23:00 todos los días.

(Ejemplo 2- 2)

Establezca la fecha y hora del dispositivo externo en una variable DATE_AND_TIME Var1 como el número de segundos (entero de 32 bits) desde 1970/01/01 00:00:00 UTC. Para conocer la relación entre el valor de Var1 y la fecha y hora, consulte lo siguiente.

TIME, DATE, TIME_OF_DAY, DATE_AND_TIME

Operación | Bloque de destino | Bloque de origen
[Set] | Establezca la propiedad de origen del objetivo Target01.DateAndTime.DateTime en el bloque de destino. | Establezca la variable Var1 en el bloque de variables.
##### Bloque ##### Texto onScheduledDay(23, 0, () => { changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $Target.Target01.DateAndTime.DateTime, Var1.Value); });

→ La fecha y hora de la unidad de visualización se establecen a la fecha y hora del dispositivo externo a las 23:00 todos los días.

(Ejemplo 3)

Apague la retroiluminación de la unidad de visualización.

Operación | Bloque de destino | Bloque de origen
[Set] | Establezca la propiedad de origen del objetivo Target01.Preferences.BacklightOff en el bloque de destino. | Establezca la variable BOOL1 con valor 1 en el bloque de Variable.
##### Bloque ##### Texto changeValue($Enums.WhenOver.Loop, $Enums.AssignmentOperator.Set, $Target.Target01.Preferences.BacklightOff, BOOL1.Value);

→ La retroiluminación de la unidad de visualización se apaga cuando se activa el disparador.