• No se han encontrado resultados

al acumulador para señalar a la siguiente dirección de palabra.

9 Programación autómatas Siemens.

Suma 2 al acumulador para señalar a la siguiente dirección de palabra.

MOVW *AC1, AC0

Transfiere a AC0 el valor de palabra al que se señala el puntero AC1 (VW200)

formato de  memoria  CPU 221  CPU 222  CPU 224  CPU 226  IB  0 ‐ 15  0 ‐ 15  0 ‐ 15  0 ‐ 15  QB  0 ‐ 15  0 ‐ 15  0 ‐ 15  0 ‐ 15  MB  0 ‐ 31  0 ‐ 31  0 ‐ 31  0 ‐ 31  SMB  0 ‐ 179  0 ‐ 299  0 ‐ 549  0 ‐ 549  SB  0 ‐ 31  0 ‐ 31  0 ‐ 31  0 ‐ 31  LB  0 ‐ 59  0 ‐ 59  0 ‐ 59  0 ‐ 59  AC  0 ‐ 3  0 ‐ 3  0 ‐ 3  0 ‐ 3  Palabra  VW  0 ‐ 2046  0 ‐ 2046  0 ‐ 5118 V 1.22  0 ‐ 8190 V 2.00  0 ‐ 10238 XP  0 ‐ 5118 V 1.23  0 ‐ 10238 V 2.00  IW  0 ‐ 14  0 ‐ 14  0 ‐ 14  0 ‐ 14  QW  0 ‐ 14  0 ‐ 14  0 ‐ 14  0 ‐ 14  MW  0 ‐ 30  0 ‐ 30  0 ‐ 30  0 ‐ 30  SMW  0 ‐ 178  0 ‐ 298  0 ‐ 548  0 ‐ 548  SW  0 ‐ 30  0 ‐ 30  0 ‐ 30  0 ‐ 30  T  0 ‐ 255  0 ‐ 255  0 ‐ 255  0 ‐ 255  C  0 ‐ 255  0 ‐ 255  0 ‐ 255  0 ‐ 255  LW  0 ‐ 58  0 ‐ 58  0 ‐ 58  0 ‐ 58  AC  0 ‐ 3  0 ‐ 3  0 ‐ 3  0 ‐ 3  AIW  0 ‐ 30  0 ‐ 30  0 ‐ 62  0 ‐ 62  AQW  0 ‐ 30  0 ‐ 30  0 ‐ 62  0 ‐ 62  Palabra  doble  VD  0 ‐ 2044  0 ‐ 2044  0 ‐ 5116 V 1.22  0 ‐ 8188 V 2.00  0 ‐ 10236 XP  0 ‐ 5116 V 1.23  0 ‐ 10236 V 2.00  ID  0 ‐ 12  0 ‐ 12  0 ‐ 12  0 ‐ 12  QD  0 ‐ 12  0 ‐ 12  0 ‐ 12  0 ‐ 12  MD  0 ‐ 28  0 ‐ 28  0 ‐ 28  0 ‐ 28  SMD  0 ‐ 176  0 ‐ 296  0 ‐ 546  0 ‐ 546  SD  0 ‐ 28  0 ‐ 28  0 ‐ 28  0 ‐ 28  LD  0 ‐ 56  0 ‐ 56  0 ‐ 56  0 ‐ 56  AC  0 ‐ 3  0 ‐ 3  0 ‐ 3  0 ‐ 3  HC  0 ‐ 5  0 ‐ 5  0 ‐ 5  0 ‐ 5  9.20.- Variables locales.

La tabla de variables locales del editor de programas se puede utilizar para asignar variables que existan únicamente en una subrutina o en una rutina de interrupción individual

Las variables locales se pueden usar como parámetros que se transfieren a una subrutina, lo que permite incrementar la portabilidad y la reutilización de la subrutina.

Cada unidad de organización del programa tiene su propia tabla de variables locales con 64 bytes de la memoria L. Las tablas de variables locales permiten definir variables con ámbito limitado: una variable local sólo es válida en la unidad de organización del programa donde se haya creado.

En cambio, los símbolos globales, válidos en todas las unidades de organización del programa, sólo se pueden definir en la tabla de símbolos/tabla de variables globales. En los casos en que se pueda utilizar un mismo nombre simbólico tanto para un símbolo global como para una variable local, la definición local tiene prioridad en la unidad de organización del programa donde se haya definido la variable local, en tanto que la definición global se usa en las demás unidades de organización del programa.

En la tabla de variables locales se deben asignar un tipo de declaración (TEMP, IN, IN_OUT u OUT) y un tipo de datos. El editor de programas asigna automáticamente direcciones de la memoria L a todas las variables locales.

La asignación de direcciones simbólicas de una tabla de variables locales asocia un nombre simbólico a una dirección de la memoria L donde se guarda el valor de datos en cuestión.

La CPU no pone a "0" los valores de datos de las variables locales. Las variables locales utilizadas se deben inicializar en el programa.

9.20.1.- Tipos de declaración de las variables locales.

El tipo de variable local asignada depende de la unidad de organización del programa donde se efectúe la asignación.

El programa principal (OB1), las rutinas de interrupción y las subrutinas pueden utilizar variables temporales (TEMP). Las variables temporales sólo estarán disponibles mientras se está ejecutando el bloque, pudiéndose sobrescribir cuando se haya completado el mismo. Las subrutinas también pueden utilizar parámetros de llamada (IN, IN_OUT, OUT). Tipos de declaraciones:

• IN. Parámetro de entrada suministrado por la unidad de organización del programa invocante.

• OUT. Parámetro de salida devuelto a la unidad de organización del programa invocante.

• IN_OUT. Parámetro cuyo valor es suministrado por la unidad de organización del programa invocante, modificado por la subrutina invocada y devuelto luego a la unidad de organización del programa invocante.

• TEMP. Variable que se almacena temporalmente en la pila de datos locales. Cuando la unidad de organización del programa se haya ejecutado por completo, el valor de la variable temporal ya no se encuentra disponible. Las variables temporales no conservan su valor entre las ejecuciones de las unidades de organización del programa.

9.20.2.- Mostrar y ocultar la tabla de variables locales.

Si arrastramos la barra horizontal divisoria hacia el extremo superior de la ventana del editor de programas, la tabla de variables locales ya no se verá, aunque se encuentra todavía allí. Arrastraremos la barra divisoria hacia abajo para visualizar nuevamente la tabla de variables locales.

Resulta más eficiente efectuar asignaciones en la tabla de variables locales antes de utilizar las variables locales en el programa.

El límite máximo de parámetros de entrada/salida en cada llamada a subrutina es de 16. Si intentamos cargar un programa que exceda este límite, se devolverá un error.

9.20.3.- Introducir la primera asignación de una variable local.

Para efectuar una asignación en una tabla de variables locales, seguiremos los siguientes pasos:

1. Verificamos que en el editor de programas se visualice la unidad de organización del programa correcta. En caso necesario, haremos clic en la ficha correspondiente a la unidad deseada. (Puesto que cada unidad de organización del programa tiene su propia tabla de variables locales) 2. Si la tabla de variables locales está oculta, arrastraremos hacia abajo la

3. Seleccionamos una fila que tenga el tipo de declaración correcto para el tipo de variable que deseamos definir, y en la columna "Nombre", tecleamos el nombre de la variable. Si hacemos una asignación en el OB1 o en una rutina de interrupción, la tabla de variables locales contendrá únicamente variables TEMP. Si hacemos una asignación en una subrutina, la tabla de variables locales contendrá variables IN, IN_OUT, OUT y TEMP. No es necesario que introduzcamos un signo de número (#) antes del nombre en la tabla de variables locales. Las variables locales sólo deben ir precedidas de un signo de número en el código del programa.

Los nombres de las variables locales pueden contener máximo 23 caracteres alfanuméricos y de subrayado, incluyendo también el juego ampliado de caracteres (ASCII 128 a 255). El primer carácter debe ser una letra. No se permite utilizar palabras clave en calidad de nombres simbólicos.

Los nombres contenidos en la tabla de variables locales se cargan y se guardan en la memoria de la CPU. La utilización de nombres de variables largos podría reducir la capacidad de memoria disponible para almacenar el programa.

4. Situamos el puntero del ratón en el campo "Tipo de datos" y hacemos clic con objeto de seleccionar del cuadro de lista el tipo de datos apropiado para la variable local.

9.20.4.- Efectuar asignaciones adicionales en una tabla de variables locales. En las tablas de variables locales del OB1 y de las rutinas de interrupción se visualizan filas predefinidas con variables TEMP. Éste es el único tipo de declaración que se puede utilizar en el OB1 y en las rutinas de interrupción. Para agregar más filas a la tabla, haga clic en una celda de la última fila y pulse la tecla INTRO para desplazarse por esa fila y luego hacia abajo, donde se insertará automáticamente una nueva fila.

En las tablas de variables locales de las subrutinas se visualiza una serie de filas predefinidas con tipos de declaración en el siguiente orden: IN, IN_OUT, OUT y TEMP. Este orden no se puede modificar. Las variables locales deben tener en la tabla el mismo orden que utilizarán los correspondientes operandos cuando éstos se asignen a la operación de llamada a la subrutina. Si desea agregar variables locales adicionales, haga clic con el botón derecho del ratón en una fila existente y utilice el menú contextual para insertar otra variable local del mismo tipo que el de la fila donde ha hecho clic. Elija el comando de menú Insertar>Fila para insertar la nueva fila arriba de la fila seleccionada, o bien Insertar>Fila abajo para insertarla debajo.

9.20.5.- Tipos de datos.

Si se hacen asignaciones en una tabla de variables locales, se debe definir un tipo de datos para cada una de las variables locales.

Si se asigna explícitamente un tipo de datos a un valor, STEP 7-Micro/WIN recibe instrucciones precisas de cuánta memoria se debe poner a la disposición de ese valor (por ejemplo, el valor 100 se podría almacenar en calidad de BYTE, WORD (palabra) o DWORD (palabra doble)) y de cómo representar el valor (¿El valor 0 se debe tratar como valor BOOL (booleano) o como valor numérico?).

Tipos de datos  simples 

Tamaño del 

tipo de datos  Descripción  Área 

BOOL  1 bit  Valor booleano   0 a 1 

BYTE  8 bits  Byte sin signo  0 a 255 

BYTE  8 bits  Byte con signo   ‐128 a +127 

WORD  16 bits  Entero sin signo  0 a 65.535  INT  16 bits  Entero con signo  ‐32768 a +32767  DWORD  32 bits  Entero doble sin signo  0 a 4294967295 

DINT  32 bits  Entero doble con signo  ‐2147483648 a +2147483647  REAL  32 bits  Valor de 32 bits en coma 

flotante (IEEE) 

+1,175495E‐38 a +3,402823E+38  ‐1,175495E‐38 a ‐3,402823E+38 

STRING  2 a 255 bytes 

Literal  de  constante  ASCII  almacenado  en  la  memoria  de  la  CPU  como  byte  de  longitud  de  1  cadena  seguido  de bytes de datos ASCII 

Caracteres ASCII 128 a 255 

Tipos de datos 

complejos  Descripción  Área 

TON  Temporizador con retardo al conectar  1ms  T32, T96  10ms  T33 a T36, T97 a T100  100ms  T37 a T63, T101 a T255  TOF  Temporizador con retardo al desconectar  1ms  T32, T96  10ms  T33 a T36, T97 a T100  100ms  T37 ‐ T63, T101 ‐ 255  TP  Temporizador por impulsos  1ms  T32, T96  10ms  T33 a T36, T97 a T100  100ms  T37 ‐ T63, T101 ‐ 255 

CTU  Contador ascendente  0 a 255   

CTD  Contador descendente  0 a 255   

Marcas especiales.

SM0.0 Siempre ON.

SM0.1 Primer ciclo.

SM0.2 Datos remanentes perdidos. SM0.3 Alimentación .

SM0.4 30 s OFF / 30 s ON . SM0.5 0,5 s OFF / 0,5 s ON. SM0.6 OFF 1 ciclo / ON 1 ciclo. SM0.7 Selector en posición RUN . SM1.0 Resultado de la operación = 0. SM1.1 Desbordamiento o valor no válido. SM1.2 Resultado negativo.

SM1.3 División por 0. SM1.4 Tabla llena. SM1.5 Tabla vacía.

SM1.6 Error de conversión de BCD a binario. SM1.7 Error de conversión ASCII a hexadecimal.

10.- Instrucciones autómatas

Documento similar