Skip to main content

Declaración AT

Uso de un editor de configuración claro para el mapeo de E/S

No recomendamos asignar direcciones de memoria como se describe aquí, ya que esto puede provocar una pérdida de claridad.

We recommend assigning memory addresses to variables in the configuration editor Editar imagen de E/S of the device.

The AT keyword in the variables declaration assigns to a project variable a specific input address, output address, or memory address of the controller which is configured in the device tree.

La declaración AT permite dar a la dirección un nombre significativo. Solo puede realizar los cambios necesarios en la señal entrante o saliente en un lugar, por ejemplo, en la declaración.

Sugerencia

Puede realizar los cambios necesarios en las señales de entrada o salida en una sola ubicación (por ejemplo, en la declaración).

Para obtener más información, consulte:

Syntax

<nombre de variable> AT %<dirección>:<tipo de datos>;

<nombre de variable>

Necesario

% <dirección>

Required

Address in the memory area

% <memory area prefix> <size prefix> <memory position>

<prefijo del área de memoria>

Required

  • I: Input memory area

    Área de memoria para señales de entrada y entradas

    Para entradas físicas mediante controladores de entrada y sensores

  • Q: Área de memoria de salida

    Área de memoria para señales y salidas de salida

    Para salidas físicas mediante accionadores y accionadores de salida

  • M: Marcar el área de memoria

<prefijo de tamaño>

Opcional

  • Sin prefijo de tamaño: bit

    Un solo bit

  • X: Bit

    Single bit

  • B: Byte

    8-bit data width

  • W: Word

    16-bit data width

  • D: Dword

    32-bit data width

<posición de memoria>

<position number> . <bit position number>

Ejemplo: %IB2.4 representa el quinto bit del tercer byte

<número de posición>

Required

The numbering depends on the target system and starts at 0.

. <número de posición del bit>

Opcional

0.7 para un byte

<tipo de datos>

Opcional

El tipo de datos debe coincidir con el prefijo de tamaño.

ejemplo 21. Ejemplos
VAR 
    wInput AT %IW0 : WORD; 
END_VAR

Declaración de variables con especificación de dirección de una palabra de entrada

VAR 
    xActuator AT %QW0 : BOOL; 
END_VAR

Declaración de variable booleana

Nota: Se asigna un byte internamente para las variables booleanas si no se especifica una dirección de un solo bit. Un cambio en el valor de xActuator por lo tanto afecta el área de QX0.0 hasta QX0.7.

VAR
    xSensor AT %IX7.5 : BOOL; 
END_VAR

Declaración de variable booleana con especificación explícita de una dirección de un solo bit

Al acceder sólo se lee el bit de entrada 7.5.

VAR 
    xSensor AT %IX* : BOOL; 
END_VAR

Al especificar la dirección, se utiliza el marcador de posición en lugar de la posición de almacenamiento * especificado. La especificación final de la dirección se realiza en la configuración de variables.

Nota: Esto es posible en bloques de funciones.



Consejos útiles

Importante

A menos que especifique explícitamente una dirección de un solo bit, las variables booleanas se asignan byte por byte.

Importante

Las direcciones de bits individuales que se asignan a variables booleanas tienen restricciones. No es posible utilizar estas variables VAR_IN_OUT, REFERENCE TO, o el ADR operador.

Cuando asignas una variable a una dirección, debes considerar lo siguiente:

  • No puede escribir en variables que están asignadas a una entrada. Esto conduce a un error del compilador.

  • Puedes hacer AT declaraciones solo para variables locales y globales, no para variables de entrada y salida de las POU.

  • No debes usar AT declaraciones en listas de variables persistentes.

  • Si usas AT declaraciones para miembros de estructura o variables de bloques de funciones, luego todas las instancias usan la misma memoria. Esto corresponde al uso de «variables estáticas» en los lenguajes de programación clásicos como «C».

  • El diseño de la memoria de las estructuras también depende del sistema de destino.

Ejemplo

PROGRAM PLC_PRG
VAR
    xVar AT %QW0 : BOOL;
END_VAR
xVar := TRUE;

Cuando la variable xVar está escrito, el rango de memoria de salida va desde QX0.0 para QX0.7 está afectado.