SoMachineBasic EIO000000147712/2016
12/2016
7 0 . 7 7 4 1 0 0 0 0 0 0 O I E
www.schneider-electric.com
La información que se ofrece en esta documentación contiene descripciones de carácter general y/o características técnicas sobre el rendimiento de los productos incluidos en ella. La presente pr esente documentación no tiene como objeto sustituir dichos productos para aplicaciones de usuario específicas, ni debe emplearse para determinar su idoneidad o fiabilidad. Los usuarios o integradores tienen la responsabilidad de llevar a cabo un análisis de riesgos adecuado y completo, así como la evaluación y las pruebas de los productos en relación con la aplicación o el uso de dichos productos en cuestión. Ni Schneider Electric ni ninguna de sus filiales o asociados asumirán responsabilidad alguna por el uso inapropiado de la información contenida en este documento. Si tiene sugerencias de mejoras o modificaciones o ha hallado errores en esta publicación, le rogamos que nos lo notifique. no tifique. No se podrá reproducir este documento de ninguna forma, ni en su totalidad ni en parte, ya sea por medios electrónicos o mecánicos, incluida la fotocopia, sin el permiso expreso y por escrito de Schneider Electric. Al instalar y utilizar este producto es necesario tener en cuenta todas las regulaciones sobre seguridad correspondientes, ya sean regionales, locales o estatales. Por razones de seguridad y para garantizar que se siguen los consejos de la documentación del sistema, las reparaciones solo podrá realizarlas el fabricante. Cuando se utilicen dispositivos para aplicaciones con requisitos técnicos de seguridad, siga las instrucciones pertinentes. Si con nuestros productos de hardware no se utiliza el software de Schneider Electric u otro software aprobado, pueden producirse lesiones, daños o un funcionamiento incorrecto del equipo. Si no se tiene en cuenta esta información, se pueden causar daños personales o en el equipo. © 2016 Schneider Electric. Reservados todos los derechos.
2
EIO0000001477 12/2016
Cómo utilizar los ejemplos de código código fuente . . . . . . . . . . . . . . . . . . . . Bloques de operación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bloques de comparación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objetos de bit de memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objetos de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objetos de palabra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objetos de coma flotante y de palabra doble doble . . . . . . . . . . . . . . . . . . . Objetos estructurados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objetos indexados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objetos de bloques de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1 Procesamient Procesamiento o booleano. booleano. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instrucciones booleanas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operadores de carga ( LD, LDN, LDR, LDF ). . . . . . . . . . . . . . . . . . Operadores de asignación (ST, STN, R, S ) . . . . . . . . . . . . . . . . . . Operadores AND lógicos (AND, ANDN, ANDR, ANDF ) . . . . . . . . . . Operadores OR lógicos ( OR, ORN, ORR, ORF) . . . . . . . . . . . . . . . . Operadores OR exclusivos ( XOR, XORN, XORR, XORF ) . . . . . . . . . Operador NOT (N) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instrucciones de comparación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Procesamient Procesamiento o numérico numérico.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introducción a operaciones numéricas . . . . . . . . . . . . . . . . . . . . . . . . Instrucciones de asignación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Asignación de cadenas de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Asignación de palabras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operadores aritméticos en enteros . . . . . . . . . . . . . . . . . . . . . . . . . . . Instrucciones lógicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instrucciones de desplazamiento desplazamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instrucciones de conversión de BCD/binario. . . . . . . . . . . . . . . . . . . . Instrucciones de conversión de palabras simples y dobles. . . . . . . . . EIO0000001477 12/2016
3
3.3 Program Programa a. . . . . .. . . . .. . . . . .. . . . . .. . . . .. . . . . .. . . . . .. . . . . .. Instrucciones END . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instrucciones NOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instrucciones de salto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instrucciones de subrutina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 Coma flotante. flotante. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instrucciones aritméticas en objetos de coma flotante . . . . . . . . . . . . Instrucciones trigonométricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instrucciones de conversión de ángulos . . . . . . . . . . . . . . . . . . . . . . . Instrucciones de conversión de entero/coma flotante . . . . . . . . . . . . . 3.5 ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instrucciones ROUND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instrucciones de conversión de ASCII a entero . . . . . . . . . . . . . . . . . . Instrucciones de conversión de entero a ASCII. . . . . . . . . . . . . . . . . . Instrucciones de conversión de ASCII a flotante . . . . . . . . . . . . . . . . . Instrucciones de conversión de flotante a ASCII . . . . . . . . . . . . . . . . . 3.6 Operadores Operadores de pila. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instrucciones de pila (MPS, MRD, MPP) . . . . . . . . . . . . . . . . . . . . . . . 3.7 Instrucci Instrucciones ones sobre sobre tablas tablas de de objetos objetos . . . . . . . . . . . . . . . . . . . . . . . . . Asignación de tablas de palabras, palabras, palabras dobles o coma flotante . . Funciones de suma en tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funciones de comparación de tablas . . . . . . . . . . . . . . . . . . . . . . . . . Funciones de búsqueda en tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . Funciones de búsqueda de valores máximo máximo y mínimo en tablas . . . . Número de apariciones de un valor en una tabla . . . . . . . . . . . . . . . . Funciones de desplazamiento circular circular de tablas . . . . . . . . . . . . . . . . . Funciones de clasificación en tablas . . . . . . . . . . . . . . . . . . . . . . . . . . Funciones de interpolación en la tabla tabla de coma flotante (LKUP) . . . . Funciones de MEDIA de los valores de una tabla de coma flotante . . 3.8 Instruccion Instrucciones es sobre sobre los objeto objetoss de E/S . . . . . . . . . . . . . . . . . . . . . . . . Entrada incrustada digital de lectura instantánea (READ_IMM_IN). . . Salida incrustada digital de escritura instantánea (WRITE_IMM_OUT) Parámetro de bloque de funciones de lectura inmediata (READ_IMM) Parámetro de bloque de funciones de escritura inmediata (WRITE_IMM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 Contado Contadorr rápido rápido (%FC) (%FC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Contador rápido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
EIO0000001477 12/2016
4.2 Contador Contador de alta alta velocida velocidad d (%HSC) . . . . . . . . . . . . . . . . . . . . . . . . . . Contador de alta velocidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Pulso Pulso (%PLS (%PLS)) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pulso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 Modulación Modulación de ancho ancho de pulsos pulsos (%PWM). (%PWM). . . . . . . . . . . . . . . . . . . . . . Modulación de ancho de pulsos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objetos de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1 Uso de de bloque bloquess de func funcion iones es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Principios de programación del bloque de funciones funciones . . . . . . . . . . . . . Añadido de un bloque de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . Configuración de un bloque de funciones . . . . . . . . . . . . . . . . . . . . . . 6.2 Temporizador Temporizador (%TM). (%TM). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TON: temporizador de retardo de conexión . . . . . . . . . . . . . . . . . . . . TOF: temporizador de retardo de desconexión. . . . . . . . . . . . . . . . . . TP: temporizador de pulso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3 Contador Contador (%C). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4 Mensaj Mensaje e (%MSG) (%MSG) e interc intercamb ambio io (EXCH) (EXCH) . . . . . . . . . . . . . . . . . . . . . . Descripción general. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplos de ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Peticiones y ejemplos estándar estándar Modbus . . . . . . . . . . . . . . . . . . . . . . . 6.5 Regist Registro ro LIFO/ LIFO/FIF FIFO O (%R) (%R) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funcionamiento del registro LIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funcionamiento del registro FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
EIO0000001477 12/2016
5
6.6 Drums (%DR). (%DR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuración. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.7 Regist Registro ro de bits bits de de despla desplazam zamien iento to (%SBR). (%SBR). . . . . . . . . . . . . . . . . . . . Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuración. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.8 Contado Contadorr de pasos pasos (%SC) (%SC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuración. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.9 Fechado Fechadores res (%SCH) (%SCH) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Programación y configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.10 Reloj de tiempo tiempo real real (%RTC) (%RTC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuración. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.11 6.11 PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Función PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.12 6.12 Pasos Pasos de Grafce Grafcett . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pasos de Grafcet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1 Motion Motion Task Table Table (%MT) (%MT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motion Task Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2 Salida de tren de pulsos pulsos (%PTO). (%PTO). . . . . . . . . . . . . . . . . . . . . . . . . . . . . Salida de tren de pulsos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objetos de accionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.1 Leer datos desde un disposit dispositivo ivo remoto remoto (%READ_VAR). (%READ_VAR). . . . . . . . . . . Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuración de la función . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2 Escrit Escritura ura de dato datoss en un dispo disposit sitivo ivo Modb Modbus us (%WRIT (%WRITE_V E_VAR) AR) . . . . . . Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuración de la función . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
EIO0000001477 12/2016
9.3 Leer y escribir datos en un dispositivo Modbus (%WRITE_READ_VAR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuración de la función . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.4 Comunicación en una conexión ASCII (%SEND_RECV_MSG) . . . . . Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuración de la función . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.5 Enviar Recibir SMS (%SEND_RECV_SMS) . . . . . . . . . . . . . . . . . . . . Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuración de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funciones de reloj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Marcas de fecha y hora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ajuste de fecha y hora. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
EIO0000001477 12/2016
7
8
EIO0000001477 12/2016
Lea atentamente estas instrucciones y observe el equipo para familiarizarse con el dispositivo antes de instalarlo, utilizarlo, revisarlo o realizar su mantenimiento. Los mensajes especiales que se ofrecen a continuación pueden aparecer a lo largo de la documentación o en el equipo para advertir de peligros potenciales, o para ofrecer información que aclara o simplifica los distintos procedimientos.
EIO0000001477 12/2016
9
La instalación, el manejo, las revisiones y el mantenimiento de equipos eléctricos deberán ser realizados sólo por personal cualificado. Schneider Electric no se hace responsable de ninguna de las consecuencias del uso de este material. Una persona cualificada es aquella que cuenta con capacidad y conocimientos relativos a la construcción, el funcionamiento y la instalación de equipos eléctricos, y que ha sido formada en materia de seguridad para reconocer y evitar los riesgos que conllevan tales equipos.
10
EIO0000001477 12/2016
En esta guía se describe cómo utilizar bloques de funciones e instrucciones en los programas que cree con el software SoMachine Basic. Las descripciones se aplican a todos los controladores lógicos compatibles con SoMachine Basic.
La información de este manual es aplicable
para SoMachine Basic productos compatibles.
Este documento se ha actualizado para la publicación de SoMachine Basic V1.5. Las características técnicas de los dispositivos que se describen en este documento también se encuentran online. Para acceder a esta información online: 1 2
Vaya a la página de inicio de Schneider Electric www.schneider-electric.com . En el cuadro , escriba la referencia del producto o el nombre del rango de productos. No incluya espacios en blanco en la referencia ni en el rango de productos. Para obtener información sobre cómo agrupar módulos similares, utilice los asteriscos ( * ).
3
Si ha introducido una referencia, vaya a los resultados de búsqueda de y haga clic en la referencia deseada. Si ha introducido el nombre de un rango de productos, vaya a los resultados de búsqueda de y haga clic en la gama deseada.
4
Si aparece más de una referencia en los resultados de búsqueda referencia deseada.
5
En función del tamaño de la pantalla, es posible que deba desplazar la página hacia abajo para consultar la hoja de datos.
6
Para guardar o imprimir una hoja de datos como archivo .pdf, haga clic en .
, haga clic en la
Las características que se indican en este manual deben coincidir con las que figuran online. De acuerdo con nuestra política de mejoras continuas, es posible que a lo largo del tiempo revisemos el contenido con el fin de elaborar documentos más claros y precisos. En caso de que detecte alguna diferencia entre el manual y la información online, utilice esta última para su referencia.
EIO0000001477 12/2016
11
SoMachine Basic - Guía de funcionamiento
EIO0000001354 (ENG) EIO0000001355 (FRA) EIO0000001356 (GER) EIO0000001357 (SPA) EIO0000001358 (ITA) EIO0000001359 (CHS) EIO0000001366 (POR) EIO0000001367 (TUR)
Modicon M221 Logic Controller Guía de la biblioteca de funciones avanzadas
EIO0000002007 (ENG) EIO0000002008 (FRE) EIO0000002009 (GER) EIO0000002010 (SPA) EIO0000002011 (ITA) EIO0000002012 (CHS) EIO0000002013 (POR) EIO0000002014 (TUR)
Puede descargar estas publicaciones técnicas y otra información técnica de nuestro sitio webhttp://www.schneider-electric.com/ww/en/download
12
EIO0000001477 12/2016
El diseñador del esquema de control debe tener en cuenta las posibles modalidades de fallo de rutas de control y, para ciertas funciones de control críticas, proporcionar los medios para lograr un estado seguro durante y después de un fallo de ruta. Funciones de control críticas son, por ejemplo, una parada de emergencia y una parada de sobrerrecorrido, un corte de alimentación y un reinicio. Para las funciones de control críticas deben proporcionarse rutas de control separadas o redundantes. Las rutas de control del sistema pueden incluir enlaces de comunicación. Deben tenerse en cuenta las implicaciones de retardos de transmisión imprevistos o fallos del enlace. Tenga en cuenta todas las reglamentaciones para la prevención de accidentes y las directrices de seguridad locales. 1 Cada instalación de este equipo debe probarse de forma individual y exhaustiva antes de entrar en servicio.
1 Para obtener información adicional, consulte NEMA ICS 1.1 (última edición), "Safety Guidelines
for the Application, Installation, and Maintenance of Solid State Control" ( Directrices de seguridad para la aplicación, la instalación y el mantenimiento del control de estado estático) y NEMA ICS 7.1 (última edición), "Safety Standards for Construction and Guide for Selection, Installation and Operation of Adjustable-Speed Drive Systems" (Estándares de seguridad para la construcción y guía para la selección, instalación y utilización de sistemas de unidades de velocidad ajustable) o su equivalente aplicable a la ubicación específica.
Utilice solo software aprobado por Schneider Electric para este equipo. Actualice el programa de aplicación siempre que cambie la configuración de hardware física.
EIO0000001477 12/2016
13
Los términos técnicos, símbolos y las descripciones correspondientes del presente manual o que aparecen en la parte interior o exterior de los propios productos se derivan, por lo general, de los términos y las definiciones de estándares internacionales. En el área de los sistemas de seguridad funcional, unidades y automatización general se incluyen, pero sin limitarse a ellos, términos como seguridad , función de seguridad , estado de seguridad , fallo , reinicio tras fallo , avería , funcionamiento incorrecto , error , mensaje de error , peligroso , etc. Estos estándares incluyen, entre otros:
14
EN 61131-2:2007
Controladores programables, parte 2: Requisitos y ensayos de los equipos.
ISO 13849-1:2008
Seguridad de la maquinaria: partes de seguridad de los sistemas de control. Principios generales del diseño.
EN 61496-1:2013
Seguridad de la maquinaria: equipo de protección electrosensible. Parte 1: Requisitos y ensayos generales.
ISO 12100:2010
Seguridad de las máquinas. Principios generales para el diseño. Evaluación del riesgo y reducción del riesgo
EN 60204-1:2006
Seguridad de las máquinas. Equipo eléctrico de las máquinas. Parte 1: Requisitos generales
EN 1088:2008 ISO 14119:2013
Seguridad de la maquinaria. Dispositivos de bloqueo asociados con protecciones: principios de diseño y selección
ISO 13850:2006
Seguridad de la maquinaria. Parada de emergencia: principios de diseño
EN/IEC 62061:2005
Seguridad de la maquinaria. Seguridad funcional de los sistemas de control programable de seguridad eléctrica y electrónica
IEC 61508-1:2010
Seguridad funcional de sistemas de seguridad programable eléctricos y electrónicos: requisitos generales.
IEC 61508-2:2010
Seguridad funcional de los sistemas de seguridad electrónicos programables eléctricos y electrónicos: requisitos de los sistemas de seguridad electrónicos programables eléctricos y electrónicos.
IEC 61508-3:2010
Seguridad funcional de los sistemas de seguridad electrónicos programables eléctricos y electrónicos: requisitos de software.
IEC 61784-3:2008
Comunicación digital de datos para la medición y control: buses de campo de seguridad funcional.
2006/42/EC
Directiva de maquinaria
2014/30/EU
Directiva de compatibilidad electromagnética
2014/35/EU
Directiva de baja tensión
EIO0000001477 12/2016
Además, los términos utilizados en este documento se pueden usar de manera tangencial porque se obtienen de otros estándares como: Serie IEC 60034
Máquinas eléctricas giratorias
Serie IEC 61800
Accionamientos eléctricos de potencia de velocidad variable
Serie IEC 61158
Comunicación digital de datos para la medición y control - Bus de campo para su uso en Sistemas de control
Por último, el término zona de funcionamiento se puede utilizar junto con la descripción de peligros específicos, y se define como tal para una zona de peligro o zona peligrosa en la Directiva de maquinaria (2006/42/EC ) y ISO 12100:2010 . Los estándares mencionados anteriormente podrían o no aplicarse a los productos específicos citados en la presente documentación. Para obtener más información en relación con los diferentes estándares aplicables a los productos descritos en este documento, consulte las tablas de características de las referencias de dichos productos.
EIO0000001477 12/2016
15
16
EIO0000001477 12/2016
SoMachine Basic Introducción EIO0000001477 12/2016
Introducción
En este capítulo se proporciona información sobre cómo utilizar los ejemplos de código fuente y los bloques que se requieren para ejecutar muchos de los ejemplos de operaciones e instrucciones de asignación que se indican en este documento.
Este capítulo contiene los siguientes apartados: Cómo utilizar los ejemplos de código fuente
18
Bloques de operación
21
Bloques de comparación
24
EIO0000001477 12/2016
17
Introducción
Excepto donde se mencione explícitamente, los ejemplos de código fuente contenidos en este manual son válidos para los lenguajes de programación Diagrama de contactos y Lista de instrucciones. Puede ser necesario más de un escalón para un ejemplo completo.
Para obtener el código fuente de Diagrama de contactos equivalente: 1
Seleccione y copie ( este manual.
) el código fuente del primer escalón del programa de muestra de
2 En SoMachine Basic, cree un nuevo escalón haciendo clic en herramientas.
en la barra de
3
En este escalón, haga clic en el botón instrucciones.
para visualizar el código fuente de Lista de
4
Seleccione el número de línea , haga clic con el botón derecho del ratón y elija para pegar el código fuente en el escalón:
Recuerde eliminar la instrucción de la última línea del escalón si ha pegado las instrucciones insertando las líneas antes del operador LD predeterminado.
18
5
Haga clic en el botón
para visualizar el código fuente de Lista de instrucciones.
6
Repita los pasos previos para cualquiera de los escalones adicionales del programa de ejemplo.
EIO0000001477 12/2016
Introducción
Programa Lista de instrucciones: 0
BLK %R0 LD %M1 I LD %I0.3 ANDN %R2.E O END_BLK
1
LD %I0.3 [%MW20:=%R2.O]
2
LD %I0.2 ANDN %R2.F [%R2.I:=%MW34] ST %M1
EIO0000001477 12/2016
19
Introducción
Diagrama de contactos correspondiente:
20
EIO0000001477 12/2016
Introducción
Puede utilizar el símbolo gráfico del para insertar operaciones de listas de instrucciones e instrucciones de asignación en escalones de diagrama de contactos:
El
puede contener varios operandos y niveles de cálculo. Por ejemplo:
%MF10 := SIN(%MF12 + 60.0) + COS(%MF13) + %MF10 + 1.2
Para insertar un bloque de operación en un escalón: 1 Haga clic en el botón
en la barra de herramientas.
2
Haga clic en el área de acción (las últimas 2 columnas) del escalón para insertar el .
3
Haga doble clic en la línea de
.
El botón Codificación inteligente ( v éase página 21 ) aparece al final de la línea. Haga clic en este botón para obtener ayuda sobr e la selección de una función y la sintaxis de la instrucción. 4
Escriba una operación de lista de instrucciones válida o una instrucción de asignación y pulse INTRO.
Para facilitar la selección de funciones, SoMachine Basic muestra información sobre herramientas cuando se escriben nombres de función en los bloques de operación. Hay dos tipos de información sobre herramientas: Una lista de nombres de función, que se actualiza de forma dinámica con los nombres de función que empiezan por los caracteres escritos. Por ejemplo, al escribir "AS" se muestra ASCII_TO_FLOAT , ASCII_TO_INT y ASIN. Ayuda sobre la sintaxis de una función, que se muestra al escribir un paréntesis de apertura. Por ejemplo, al escribir "ABS(" se muestra:
EIO0000001477 12/2016
21
Introducción
El asistente de Edición inteligente de código aparece al hacer clic en el botón Edición inteligente de código
que se encuentra en la línea de expresión de la operación:
Siga estas instrucciones:
22
1
Opcionalmente, filtre la lista por categoría de función: Todos los tipos ASCII Coma flotante Objetos de E/S Coma flotante Procesamiento numérico Tabla PID
2
Seleccione una función para añadirla a la expresión.
3
Haga clic en
.
EIO0000001477 12/2016
Introducción
Si la sintaxis de la operación de lista de instrucciones o de la instrucción de asignación es incorrecta, el borde del cuadro de la se vuelve de color rojo. Si necesita ayuda, haga lo siguiente: ;o bien Mueva el ratón sobre la línea de . Seleccione
EIO0000001477 12/2016
23
Introducción
Puede utilizar el símbolo gráfico del para insertar expresiones de comparación de listas de instrucciones en escalones de diagrama de contactos:
Siga estas instrucciones: 1 Haga clic en el botón
en la barra de herramientas.
2
Haga clic en algún lugar del escalón para insertar el
.
3
Haga doble clic en la línea
4
Escriba una operación de comparación de listas de instrucciones válida y pulse INTRO.
.
Si la operación de comparación de listas de instrucciones es incorrecta, el borde del cuadro se vuelve de color rojo. Si necesita ayuda, haga lo siguiente: oo Mueva el ratón sobre la línea . Seleccione
24
EIO0000001477 12/2016
SoMachine Basic Objetos delenguaje EIO0000001477 12/2016
Objetos delenguaje
Este capítulo contiene los siguientes apartados: Objetos
26
Objetos de bit de memoria
27
Objetos de E/S
29
Objetos de palabra
32
Objetos de coma flotante y de palabra doble
37
Objetos estructurados
42
Objetos indexados
45
Objetos de bloques de funciones
47
EIO0000001477 12/2016
25
Objetos de lenguaje
En SoMachine Basic, el término objeto se utiliza para representar un área de la memoria del controlador lógico reservada para que la utilice una aplicación. Los objetos pueden ser: Variables de software simples, como bits de memoria y palabras. Direcciones de las entradas y salidas digitales o analógicas. Variables internas del controlador, como palabras y bits del sistema. Funciones predefinidas del sistema o de los bloques de funciones, como temporizadores y contadores. La memoria del controlador está preasignada para determinados t ipos de objetos, o bien se asigna automáticamente cuando una aplicación se descarga en el controlador lógico. Los objetos solo pueden ser direccionados por un programa una vez que se ha asignado memoria. Los objetos se direccionan mediante el prefijo %. Por ejemplo, %MW12 es la dirección de una palabra de memoria, %Q0.3 es la dirección de una salida digital incrustada y %TM0 es la dirección de un bloque de funciones Timer.
26
EIO0000001477 12/2016
Objetos de lenguaje
Los objetos de bit de memoria son variables de software de tipo bit que pueden utilizarse como operandos y verificarse mediante instrucciones booleanas. Ejemplos de objetos de bit: Bits de memoria Bits de sistema Bits de pasos Bits extraídos de palabras El rango de objetos válidos va de 0 a la referencia máxima utilizada en su aplicación (consulte la guía de programación de su controlador lógico).
Utilice este formato para dirigir objetos de bits de pasos, de memoria y de sistema:
En esta tabla se describen los elementos en el formato de direccionamiento: Símbolo
%
El símbolo de porcentaje siempre precede a una variable de software.
Tipo de objeto
M
Los bits de memoria almacenan valores intermedios mientras se ejecuta un programa.
S
Los bits de sistema proporcionan información de control y de estado del controlador.
X
Los bits de pasos proporcionan el estado de las actividades del paso Grafcet.
i
El identificador del objeto que representa su instancia secuencial en la memoria. La cantidad máxima de objetos depende de la cantidad de objetos configurada para los límites de la memoria disponible. Para verificar la cantidad máxima de memoria disponible, consulte la guía de programación del Logic Controller.
Identificador de instancia de objeto
Para obtener información sobre cómo dirigir los bits de E/S, consulte Objetos de E/S ( v éase página 29 ) . Para obtener información sobre cómo dirigir un bit extraído de una palabra, consulte Extracción ) . de un bit de un objeto de palabra ( v éase página 36
EIO0000001477 12/2016
27
Objetos de lenguaje
En esta tabla se enumeran y se describen los objetos de bits de pasos, de memoria y de sistema que se utilizan como operandos en las instrucciones booleanas:
Valores inmediatos
0 ó 1 (Falso o Verdadero)
0ó1
–
Memoria
Los bits de memoria son áreas de memoria interna utilizadas para almacenar valores binarios. los objetos de E/S no utilizados no pueden emplearse como bits de memoria.
%Mi
Sí
Sistema
Los bits de sistema %S0 a %S127 permiten monitorizar la %Si operación correcta del controlador y la ejecución corr ecta del programa de aplicación, además de controlar determinadas funciones a nivel de sistema.
Depende de i
Pasos Grafcet
Los bits %X1 a %Xi se asocian a pasos Grafcet. El bit de paso Xi se establece en 1 cuando el paso correspondiente está activo, y en 0 cuando el paso está desactivado.
Sí
%Xi
Escrito mediante el programa o utilizando una tabla de animación.
En esta página se muestran algunos ejemplos de direccionamiento de objetos de bit:
28
%M25
Bit de memoria número 25
%S20
Bit de sistema número 20
%X4
Paso Grafcet número 4
EIO0000001477 12/2016
Objetos de lenguaje
Los objetos de E/S incluyen tanto bits como palabras. Todas las entradas y salidas físicas están asignadas a estos objetos en la memoria interna. Los objetos de bit de E/S pueden utilizarse como operandos y se pueden comprobar con instrucciones booleanas. Los objetos de palabra de E/S pueden utilizarse en la mayoría de las instrucciones no booleanas como funciones e instrucciones que contienen operaciones aritméticas. Ejemplos de objetos de E/S: Entradas digitales Salidas digitales Entradas analógicas Salidas analógicas Entradas y salidas de comunicación El rango de objetos válidos oscila entre 0 y el máximo configurado y soportado por su controlador (consulte la Guía de hardware y la Guía de programación del Logic Controller).
En esta imagen se muestra el formato de la dirección de entrada/salida:
En esta tabla se describen los componentes del formato del direccionamiento: Símbolo
%
–
El símbolo de porcentaje siempre precede a una dirección interna.
Tipo de objeto
I
–
Entrada digital (objeto de bit)
Q
–
Salida digital (objeto de bit)
IW
–
Valor de la entrada analógica (objeto de palabra)
QW
–
Valor de la salida analógica (objeto de palabra)
IWS
–
Estado de canal de entrada analógica (objeto de palabra)
QWS
–
Estado de canal de salida analógica (objeto de palabra)
m es el número de módulos locales configurados (máximo 7). n es el número de módulos remotos configurados (máximo n+7). El número de posición máximo es 14. p es el número del cartucho del controlador. q es el número de canal del cartucho.
EIO0000001477 12/2016
29
Objetos de lenguaje
Número de módulo
y
Número de canal
z
0
Canal de E/S incrustadas en el logic controller o en un cartucho insertado en el logic controller.
1...m (1)
Canal de E/S en un módulo de ampliación conectado directamente con el controlador.
m +1...n (2)
Canal de E/S en un módulo de ampliación conectado utilizando los módulos transmisor/receptor de TM3.
De 0 a 31
Número de canal de E/S del controlador lógico o el módulo de ampliación. El número de canales disponibles depende del modelo del controlador lógico o del tipo del módulo de ampliación.
p 0q (3)
Canal de E/S en un cartucho insertado en el logic controller. El número de canales disponibles depende del tipo de cartucho.
m es el número de módulos locales configurados (máximo 7). n es el número de módulos remotos configurados (máximo n+7). El número de posición máximo es 14. p es el número del cartucho del controlador. q es el número de canal del cartucho.
En esta tabla se enumeran y describen todos los objetos de E/S que se utilizan como operandos en instrucciones:
Bits de entrada %Iy.z(2)
No(3)
Bits de salida %Qy.z(2)
Sí
Palabra de entrada
%IWy.z(2)
No
Palabra de salida
%QWy.z(2)
Sí
Estado de la palabra de entrada
%IWSy.z(2)
No
Estado de la palabra de salida
%QWSy.z(2)
No
Estos bits son las imágenes lógicas de los estados eléctricos de la E/S digital física. Se almacenan en la memoria de datos y se actualizan entre cada exploración de la lógica del programa. Estos objetos de palabra contienen el valor analógico del canal correspondiente.
Estos objetos de palabra contienen el estado del canal analógico correspondiente.
Escrito mediante el programa o utilizando una tabla de animación. y es el número de módulo y z es el número de canal. Consulte Direccionamiento de sintaxis de E/S ( v éase página 29 ) para obtener descripciones de y y z. Aunque no pueda escribir en los bits de entrada, estos se pueden forzar.
30
EIO0000001477 12/2016
Objetos de lenguaje
En la tabla se presentan varios ejemplos de direccionamiento de E/S:
%I0.5
Número de canal 5 de la entrada digital del controlador (las E/S incrustadas son el número de módulo 0).
%Q3.4
Número de canal 4 de la salida digital del módulo de ampliación en la dirección 3 (E/S del módulo de ampliación).
%IW0.1
Entrada analógica 1 en el controlador (E/S incrustadas).
%QW2.1
Salida analógica 1 en el módulo de ampliación en la dirección 2 (E/S del módulo de ampliación).
%IWS0.101
Estado de canal de entrada analógica del canal de entrada 1 en el primer cartucho del logic controller.
%QWS1.1
Estado de canal de salida analógica del canal de salida 1 del módulo de ampliación en la dirección 1 (E/S del módulo de ampliación).
EIO0000001477 12/2016
31
Objetos de lenguaje
Objetos de palabra direccionados en forma de palabras de 16 bits, almacenados en la memoria de datos y que pueden contener un valor entero desde -32.768 h asta 32.767 (excepto para el bloque de funciones del , que está entre 0 y 65.535). Ejemplos de objetos de palabra: Valores inmediatos Palabras de memoria ( %MWi) Palabras constantes ( %KWi ) Palabras de intercambio de E/S ( %IWi, %QWi , %IWSi , %QWSi) Palabras de sistema ( %SWi ) Bloques de funciones (datos de tiempo de ejecución o configuración) El rango de objetos válidos va desde 0 hasta la máxima referencia utilizada en su aplicación (consulte la guía de programación del controlador lógico). Por ejemplo, si la referencia máxima en su aplicación para palabras de memoria es %MW9, el espacio asignado será desde %MW0 hasta %MW9. En este ejemplo, el valor de %MW10 no es válido y no se puede acceder a él ni interna ni externamente.
Utilice este formato para dirigir palabras de sistema, de memoria y constantes:
En esta tabla se describen los elementos en el formato de direccionamiento: Símbolo
%
El símbolo de porcentaje siempre precede a una dirección interna.
Tipo de objeto
M
Las palabras de memoria almacenan valores mientras se ejecuta un programa.
K
Las palabras constantes almacenan valores constantes o mensajes alfanuméricos. Su contenido solo se puede escribir o modificar utilizando SoMachine Basic.
S
Las palabras de sistema proporcionan información de control y estado para el controlador lógico.
W
Palabra de 16 bits.
Formato
32
EIO0000001477 12/2016
Objetos de lenguaje
Identificador de instancia de objeto
i
El identificador del objeto que representa su instancia secuencial en la memoria. La cantidad máxima de objetos depende de la cantidad de objetos configurada para los límites de la memoria disponible. Para verificar la cantidad máxima de memoria disponible, consulte la guía de programación del Logic Controller.
El contenido de las palabras o los valores se almacena en la memoria de usuario en código binario de 16 bits (complemento a dos) mediante la convención que aparece a continuación:
En la notación binaria con signo, el bit 15 se asigna por convención al signo del valor codificado: Bit 15 establecido en 0: el contenido de la palabra es un valor positivo. Bit 15 establecido en 1: el contenido de la palabra es un valor negativo (los valores negativos están expresados en lógica de complemento a dos). Las palabras y los valores inmediatos (consulte la lista de excepciones ( v éase página 34 ) para conocer los enteros sin signo) pueden introducirse o recuperarse en el formato siguiente: Decimal Mín.: -32.768, Máx.: 32.767 (1.579, por ejemplo) Hexadecimal Mín.: 16#0000, Máx.: 16#FFFF (por ejemplo, 16#A536) Sintaxis alternativa: #A536 Las reglas de formato ASCII son las siguientes: La función siempre lee primero el byte más significativo. Todo carácter ASCII que se encuentre fuera del intervalo ['0' - '9'] ([16#30 - 16#39]) se considera un carácter de fin, excepto en el caso de un signo menos '-' (16#2D) cuando se coloca como primer carácter. En caso de desbordamiento (>32.767 o <-32.768), el bit del sistema %S18 (desborde aritmético o error detectado) se establece en 1 y se devuelve el valor 32.767 o -32.768. Si el primer carácter de un operando es un carácter de "fin", se devuelve el valor 0 y el bit %S18 se establece en 1. Por ejemplo, "HELLO": %MW0:="HE" %MW1:="LL" %MW2:="O"
EIO0000001477 12/2016
33
Objetos de lenguaje
En esta tabla se enumera el rango de valores de los objetos que son enteros sin signo:
%SW
De 0 a 65.535
%FC.V y %FC.P
De 0 a 65.535
%FC.VD y %FC.PD
De 0 a 4.294.967.295
%HSC.V, %HSC.P, %HSC.S0, %HSC.S1, y %HSC.C
De 0 a 65.535
%HSC.DV, %HSC.PD, %HSC.S0D, %HSC.S1D, y %HSC.CD
De 0 a 4.294.967.295
%HSC.T
De 100 a 1.000
%PWM.P
De 0 a 32.767
%PWM.R
De 0 a 100
%PLS.P
De 0 a 32.767
%PLS.N
De 0 a 32.767
%PLS.ND
De 0 a 2.147.483.647
Aparte de los objetos de la lista de excepciones, el resto de los datos tiene los rangos de valores siguientes: Palabras: de -32.768 a 32.767 Palabras dobles: de -2.147.483.648 a 2.147.483.647
En esta tabla se describen los objetos de palabra:
Valores inmediatos
Memoria
Se trata de valores enteros expresados en el mismo formato que las palabras de 16 bits, lo que permite que los valores se puedan asignar a estas palabras.
-
Base 10 (decimal)
De -32.768 a 32.767
Base 16 (hexadecimal)
De 16#0000 a 16#FFFF
%MWi Palabras "temporales" empleadas para almacenar valores durante la operación en la memoria de datos.
Sin
Sí
Escrito mediante el programa o utilizando una tabla de animación.
34
EIO0000001477 12/2016
Objetos de lenguaje
Constantes
Almacenan constantes o mensajes alfanuméricos. Su contenido se puede escribir o modificar con SoMachine Basic durante la configuración y en la modalidad online (véase SoMachine Basic, Guía de funcionamiento) .
%KWi
Sí, durante la configuración y en la modalidad online mediante Propiedades de la palabra constante (véase SoMachine Basic, Guía de funcionamiento)
Sistema
Estas palabras de 16 bits ofrecen diversas %SWi funciones: Proporcionan acceso a los datos que proceden directamente del controlador mediante la lectura de las palabras %SWi. Realizan operaciones en la aplicación (por ejemplo, el ajuste de fechadores).
Depende de i
Bloques de funciones
Estas palabras corresponden a los valores %TM2.P, %Ci.P, o parámetros actuales de los bloques de etc. funciones.
Sí
Escrito mediante el programa o utilizando una tabla de animación.
El número máximo de objetos disponibles está determinado por el controlador lógico. Consulte la guía de programación de su controlador lógico para conocer el número máximo de objetos.
En esta tabla se presentan diversos ejemplos de direccionamiento de objetos de palabras:
%MW15
Palabra de memoria número 15
%KW26
Palabra constante número 26
%SW30
Palabra de sistema número 30
EIO0000001477 12/2016
35
Objetos de lenguaje
En esta tabla se describe cómo extraer 1 de los 16 bits de los siguientes objetos de palabra:
Memoria
%MWi:Xk
Sí
Sistema
%SWi:Xk
Depende de i
%KWi:Xk
No
%IWy.z:Xk(2)
No
%QWy.z:Xk(2)
Sí
%IWSy.z:Xk(2)
No
%QWSy.z:Xk(2)
Sí
Constante Valor de entrada Valor de salida Estado de entrada Estado de salida
Escrito mediante el programa o utilizando una tabla de animación. Para obtener información sobre objetos de palabra de E/S, consulte Direccionamiento de objetos de E/S ( v éase página 29 ) . Indica el número del bit que debe extraerse del objeto de palabra. Por ejemplo, %MW0.X3; se extraerá el bit almacenado en la tercera posición secuencial de la palabra de memoria %MW0.
36
EIO0000001477 12/2016
Objetos de lenguaje
Un objeto de coma flotante es un número real; es decir, un número con una parte fraccionaria (por ejemplo: 3,4E+38, 2,3 o 1,0). Una palabra doble consta de 4 bytes almacenados en la memoria de datos y que contienen un valor complementario a dos comprendido entre -2147483648 y +2147483647. Las operaciones con coma flotante y palabras dobles no se pueden realizar en todos los controladores lógicos. Para obtener información sobre compatibilidad, consulte la guía de programación de su controlador lógico.
El formato de coma flotante utilizado es el de la norma IEEE STD 734-1985 (equivalente a IEC 559). La longitud de las palabras es de 32 bits, lo que corresponde a números de coma flotante de decimal simple. En esta tabla se representa el formato de un valor de coma flotante: Bit 31
Bits {30...23}
Bits {22...0}
Signo del exponente
Exponente
Significando
La precisión de la representación es de 2 a 24. Para visualizar los números de coma flotante no es necesario mostrar más de 6 dígitos tras la coma decimal. El valor 1285 se interpreta como un valor entero; para tenerse en cuenta como valor de coma flotante, debe escribirse: 1285,0.
En esta tabla se describe el rango límite de las funciones aritméticas en los objetos de coma flotante:
Raíz cuadrada de un operando
SQRT(x)
x<0
x> SQRT(3.402824E+38)
es el número máximo que se puede obtener Potencia de un entero por EXPT(y, x) un real (donde: EXPT(%MF,%MW)
EIO0000001477 12/2016
x < 0 e y = número fraccionario
X ^ Y > 3,402824E+38
x^y = %MW^%MF)
37
Objetos de lenguaje
Logaritmo de Base 10 LOG(x)
x<0
Cálculo posible hasta que se obtiene el valor máximo de x (3,402824E+38)
Logaritmo natural
LN(x)
x<0
Sin valor máximo de x. LN(3.402824E+38) es el número máximo que se puede obtener
EXP(x)
Sin límite en el rango real x > 88,72283 Si x < –103,973, el resultado es 0
Exponencial natural
Cuando el resultado no se encuentra dentro del rango válido, el bit de sistema %S18 se establece en 1. La palabra de estado %SW17 indica la causa de un error detectado en una operación de coma flotante. Diferentes bits de la palabra %SW17: %SW17:X0
Operación no válida, el resultado no es un número (NaN)
%SW17:X1
Reservado
%SW17:X2
División entre 0, el resultado no es válido (–Infinito o +Infinito)
%SW17:X3
Resultado superior a +3,402824E+38 en valor absoluto, el resultado no es válido (–Infinito o +Infinito)
%SW17:X4 to X15
Reservado
El sistema restablece esta palabra a 0 tras un arranque en frío; también la puede restablecer el programa para volver a utilizarla.
Utilice este formato para dirigir objetos de coma flotante constantes y de memoria:
Utilice este formato para dirigir objetos de palabra doble constantes y de memoria:
38
EIO0000001477 12/2016
Objetos de lenguaje
En esta tabla se describen los elementos en el formato de direccionamiento: Símbolo
%
El símbolo de porcentaje siempre precede a una dirección interna.
Tipo de objeto
M
Los objetos de memoria se utilizan para almacenar valores intermedios mientras se ejecuta un programa.
K
Las constantes se utilizan para almacenar valores constantes o mensajes alfanuméricos (únicamente para palabras dobles).
F
Objeto de coma flotante de 32 bits.
D
Objeto de palabra doble de 32 bits.
i
Identificador que representa una instancia (posición secuencial) de un objeto en la memoria. Consulte la guía de programación de su controlador lógico para conocer el número máximo de objetos.
Formato Identificador de instancia de objeto
En esta tabla se describen los objetos de coma flotante y de palabra doble: Valores inmediatos
Números enteros (palabra doble) o decimales (coma flotante) de formato idéntico al de los objetos de 32 bits.
-
Sin
Coma flotante de memoria
Objetos empleados para almacenar valores durante la operación en la memoria de datos.
%MFi
Sí
%MDi
Sí
Se utiliza para almacenar constantes.
%KFi
Sí, durante la configuración y en la modalidad online mediante Propiedades de la palabra constante
Palabra doble de memoria Valor de constante flotante
(véase SoMachine Basic, Guía de funcionamiento)
Constante doble
%KDi
Sí, durante la configuración y en la modalidad online mediante Propiedades de la palabra constante (véase SoMachine Basic, Guía de funcionamiento)
El número máximo de objetos está determinado por el controlador lógico; consulte la guía de programación de la plataforma de hardware para obtener más información.
EIO0000001477 12/2016
39
Objetos de lenguaje
En esta tabla se presentan algunos ejemplos del direccionamiento de objetos de palabra doble y coma flotante:
%MF15
Objeto de coma flotante de memoria número 15
%KF26
Objeto de coma flotante constante número 26
%MD15
Palabra doble de memoria número 15
%KD26
Palabra doble constante número 26
Las palabras simples, de doble longitud y flotantes se guardan en el espacio de datos en una misma zona de memoria. Así, la palabra flotante %MFi y la palabra doble %MDi se corresponden con las palabras de longitud simple %MWi y %MWi+1; la palabra %MWi contiene los bits menos significativos y la palabra %MWi+1 los bits más significativos de la palabra %MFi. En esta tabla se muestra cómo se superponen las palabras de memoria dobles y las flotantes:
%MF0 / %MD0
%MW0 %MF1 / %MD1
%MW1
%MF2 / %MD2
%MW2 %MF3 / %MD3
%MW3
%MF4 / %MD4
%MW4
... ...
40
%MW5
... %MFi / %MDi
%MFi+1 / %MDi+1
%MWi %MWi+1
EIO0000001477 12/2016
Objetos de lenguaje
En esta tabla se muestra el solapamiento de constantes flotantes y dobles:
%KF0 / %KD0
%KW0 %KF1 / %KD1
%KW1
%KF2 / %KD2
%KW2 %KF3 / %KD3
%KW3
%KF4 / %KD4
%KW4
... ...
%KW5
... %KFi / %KDi
%KFi+1 / %KDi+1
%KWi %KWi+1
%MF0 corresponde a %MW0 y %MW1. %KF43 corresponde a %KW43 y %KW44.
EIO0000001477 12/2016
41
Objetos de lenguaje
Los objetos estructurados son combinaciones de objetos adyacentes. SoMachine Basic admite los siguientes tipos de objetos estructurados: Cadenas de bits Tablas de palabras Tablas de palabras dobles Tablas de palabras flotantes
Las cadenas de bits son series de bits de objetos adyacentes del mismo tipo y con una longitud definida (L). Se hace referencia a las cadenas de bits a partir de los límites de bytes. Cadena de bits %M8:6
%M8:6 es válida (8 es múltiple de 8) mientras que %M10:16 no es válida (10 no es múltiple
de 8). Las cadenas de bits pueden utilizarse con la instrucción de asignación ( v éase página 56 ) .
Tipos de bits disponibles para cadenas de bits: Bits de entrada digital
Bits de salida digital Bits de sistema
%I0.0:L o %I1.0:L(1)
No
%Q0.0:L o %Q1.0:L (1)
Sí
%Si:L
En función de i
con i múltiplo de 8 Bits de pasos Grafcet
%Xi:L
Sí (mediante el programa)
con i múltiplo de 8 Bits de memoria
%Mi:L
Sí
con i múltiplo de 8 Sólo se pueden leer los bits de E/S de 0 a 16 de una cadena de bits. Para controladores lógicos con 24 o 32 canales de E/S, los bits superiores a 16 no se pueden leer en una cadena de bits. Representa la longitud de los objetos estructurados (cadenas de bits, tabla de palabras, tabla de palabras dobles y tabla de palabras flotantes).
El número de bits está determinado por el controlador lógico, consulte la guía de programación de la plataforma de hardware para obtener más información. 42
EIO0000001477 12/2016
Objetos de lenguaje
Una tabla de palabras es una serie de palabras adyacentes del mismo tipo y de una longitud definida (L; el valor máximo es 255). Tabla de palabras %KW10:7
) . Las tablas de palabras pueden utilizarse con la instrucción de asignación ( v éase página 56
Tipos de palabras disponibles para tablas de palabras: Palabras de memoria
%MWi:L
Sí
Palabras constantes
%KWi:L
No
Palabras de sistema
%SWi:L
En función de i
El número de palabras está determinado por el controlador lógico, consulte la guía de programación de la plataforma de hardware para obtener más información.
Una tabla de palabras dobles es una serie de palabras adyacentes del mismo tipo y de una longitud definida (L; el valor máximo es 255). Tabla de palabras dobles %KD10:7
Las tablas de palabras dobles pueden utilizarse con la instrucción de asignación ( v éase página 56 ) . EIO0000001477 12/2016
43
Objetos de lenguaje
Tipos de palabras disponibles para tablas de palabras dobles: Palabras de memoria
%MDi:L
Sí
Palabras constantes
%KDi:L
No
Una tabla de palabras flotantes es una serie de palabras adyacentes del mismo tipo y de una longitud definida (L; el valor máximo es 255). Tabla de coma flotante %KF10:7
) . Las tablas de coma flotante pueden utilizarse con la instrucción de asignación ( v éase página 56
Tipos de palabras disponibles para tablas de palabras flotantes:
44
Palabras de memoria
%MFi:L
Sí
Palabras constantes
%KFi:L
No
EIO0000001477 12/2016
Objetos de lenguaje
Un objeto indexado es una palabra simple o doble o un objeto de coma flotante con una dirección de objeto indexado. Existen dos tipos de direccionamiento de objetos: Direccionamiento directo Direccionamiento indexado
La dirección directa de un objeto se establece y se define cuando se escribe un programa. %M26 es un bit de memoria con la dirección directa 26.
Una dirección indexada de un objeto permite modificar la dirección del objeto mediante el añadido de un índice a la dirección directa de éste. El contenido del índice se añade a la dirección directa del objeto. El índice lo define una palabra de memoria %MWi. %MW108[%MW2] es una palabra con una dirección compuesta por la dirección directa 108 más el contenido de la palabra %MW2.
Si la palabra %MW2 tiene un valor de 12, escribir en %MW108[%MW2] es igual que escribir en %MW120 (108 más 12).
En esta tabla se describen los tipos de objetos disponibles para las direcciones indexadas: Palabras de memoria
%MWi[MWj]
Sí
Palabras constantes
%KWi[%MWj]
No
Palabras dobles de memoria
%MDi[MWj]
Sí
Palabras dobles constantes
%KDi[%MWj]
No
Comas flotantes de memoria
%MFi[MWj]
Sí
Comas flotantes constantes
%KFi[%MWj]
No
Identificador de instancia de objeto que representa una instancia (posición secuencial) de un objeto en la memoria. Consulte la guía de programación de su controlador lógico para conocer el número máximo de objetos. Identificador de instancia de objeto del objeto de índice cuyo contenido debe añadirse a la dirección directa de otro objeto.
Los objetos indexados pueden utilizarse con la instrucción de asignación ( v éase página 69 ) y en ) . instrucciones de comparación ( v éase página 65 EIO0000001477 12/2016
45
Objetos de lenguaje
Este tipo de direccionamiento permite explorar series de objetos del mismo tipo (como palabras de memoria y constantes) de manera sucesiva, modificando el contenido del objeto d el índice en el programa. %S20
El desborde de índice se produce cuando la dirección de un objeto indexado excede los límites de la zona de memoria que contiene el mismo tipo de objeto. En resumen: La dirección del objeto más el contenido del índice es menor que 0. La dirección del objeto más el contenido del índice es mayor que la palabra de mayor tamaño a la que se hace referencia directamente en la aplicación. En caso de desborde de índice, el sistema establece en 1 el bit de sistema %S20 y se asigna al objeto un valor de índice de 0. El usuario es el responsable de monitorizar cualquier desborde. El programa debe leer %S20 para un posible procesamiento. A continuación deberá confirmar que se restablece a 0. %S20 (estado inicial = 0): En caso de desborde del índice: establecido en 1 por el controlador. Reconocimiento de desborde: establecido manualmente en 0 en el programa después de modificar el índice.
46
Escriba instrucciones de programación para comprobar la validez de los operandos que se van a utilizar en operaciones matemáticas. No utilice operandos de diferentes tipos de datos en operaciones matemáticas. Monitorice siempre los bits del sistema asignados para indicar resultados matemáticos no válidos.
EIO0000001477 12/2016
Objetos de lenguaje
Un bloque de funciones es un objeto reutilizable que acepta uno o varios valores de entrada y devuelve uno o varios valores de salida. A un bloque de funciones siempre se le llama a través de una instancia (una copia de un bloque de funciones con su propio nombre y variables dedicados). Todas las instancias de bloque de funciones tienen un estado persistente (salidas y variables internas) desde una llamada a la otra. Los bloques de funciones (%FC, %HSC, %PLS y %PWM) y la alarma de estado dirigen sus entradas y salidas ( %I0.x y %Q0.x, afectadas en la configuración) directamente sin relación con el ciclo del controlador. El controlador no actualiza los bits de imágenes ( %I0.x y %Q0.x). Por lo tanto, estos bits de entrada y salida no se pueden utilizar directamente en el programa del usuario, y en una tabla de animación que utilice estas entradas/salidas no se pueden mostrar los estados actuales de estas.
En esta ilustración se muestra un bloque de funciones StepCounter:
EIO0000001477 12/2016
47
Objetos de lenguaje
Los objetos de bit corresponden a las salidas del bloque de funciones. A estos bits se puede acceder mediante las instrucciones de verificación booleanas a través de uno de los métodos siguientes: Directamente (por ejemplo, LD E) si están cableados al bloque en programación ( v éase página 155 ) reversible. Especificando el tipo de bloque (por ejemplo, LD %Ci.E). Puede accederse a las entradas en forma de instrucciones.
Los objetos de palabra corresponden a parámetros especificados y a valores, tal como se indica a continuación: Parámetros de configuración de bloque: se puede acceder a algunos parámetros a través del programa (por ejemplo, parámetros de preselección), pero a otros no (por ejemplo, base de tiempo). Valores actuales: por ejemplo, %Ci.V , el valor actual de conteo.
Los objetos de palabra doble aumentan la capacidad computacional del controlador lógico mientras se ejecutan las funciones del sistema, tales como contadores rápidos ( %FC), contadores de alta velocidad ( %HSC) y generadores de pulsos ( %PLS, %PWM). Para direccionar los objetos de palabra doble de 32 bits usados con bloques de funciones, solo tiene que agregar el carácter D a la sintaxis original de los objetos de palabra estándar. En este ejemplo se muestra cómo direccionar el valor actual de un contador rápido en formato estándar y en formato de palabra doble: %FCi.V es el valor actual del contador rápido en formato estándar. %FCi.VD es el valor actual del contador rápido en formato de palabra doble.
48
EIO0000001477 12/2016
SoMachine Basic Instrucciones EIO0000001477 12/2016
Instrucciones
Este capítulo contiene las siguientes secciones: 3.1
Procesamiento booleano
50
3.2
Procesamiento numérico
67
3.3
Programa
85
3.4
Coma flotante
93
3.5
ASCII
102
3.6
Operadores de pila
113
3.7
Instrucciones sobre tablas de objetos
115
3.8
Instrucciones sobre los objetos de E/S
137
EIO0000001477 12/2016
49
Instrucciones Procesamientobooleano
En esta sección se ofrece una introducción a las instrucciones de procesamiento booleano.
Esta sección contiene los siguientes apartados:
50
Instrucciones booleanas
51
Operadores de carga (LD, LDN, LDR, LDF)
54
Operadores de asignación (ST, STN, R, S)
56
Operadores AND lógicos ( AND, ANDN, ANDR, ANDF)
58
Operadores OR lógicos ( OR, ORN, ORR, ORF)
60
Operadores OR exclusivos ( XOR, XORN, XORR, XORF)
62
Operador NOT (N)
64
Instrucciones de comparación
65
EIO0000001477 12/2016
Instrucciones
Las instrucciones booleanas pueden compararse con los elementos del lenguaje del diagrama de contactos. Estas instrucciones se resumen en la tabla siguiente:
Elementos de prueba
La instrucción de carga ( LD) es LD equivalente al primer contacto abierto conectado a un segmento de alimentación de un diagrama de contactos. Las instrucciones lógicas AND y OR son equivalentes a los contactos abiertos tras el primer contacto conectado al segmento de alimentación de un diagrama de contactos.
%I0.0
El contacto se cierra cuando el bit %I0.0 tiene el estado 1.
Elementos de acción
La instrucción de almacenamiento ( ST) equivale a una bobina.
%Q0.0
El objeto de bit asociado toma un valor lógico del acumulador de bits (resultado de lógica anterior).
ST
El resultado booleano de los elementos de prueba se aplica a los elementos de acción como muestran las siguientes instrucciones: 0
LD AND ST
%I0.0 %I0.1 %Q0.0
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
Pueden utilizarse instrucciones de prueba booleanas para detectar flancos ascendentes o descendentes en las entradas del controlador. Se detecta un flanco cuando el estado de una entrada cambia de "explorar n-1" a "explorar n". Dicho flanco permanece detectado durante la exploración actual.
EIO0000001477 12/2016
51
Instrucciones
En esta tabla se resumen las instrucciones de detección de flancos y su temporización:
Flanco ascendente
LDR %M0
LDF %M0 Flanco descendente
Los objetos sólo se actualizan al inicio del siguiente ciclo MAESTRO tras la detección del flanco. Si se produce un cambio de estado en un bit de memoria (p. ej., %M0), este se indica con un retardo en la exploración.
Los flancos ascendentes y descendentes sólo se pueden aplicar con objetos de bit de entrada (%I) y de bit de memoria (%M).
La instrucción de cargar flanco ascendente ( LDR) equivale a un contacto de detección de flanco ascendente. El flanco ascendente detecta el cambio del valor de entrada de 0 a 1. Como se muestra en este ejemplo, se utiliza un contacto de detección de transición positiva para detectar un flanco ascendente: 0
LDR
%I0.0
) para obtener el diagrama de Consulte el procedimiento de reversibilidad ( v éase página 18 contactos equivalente.
52
EIO0000001477 12/2016
Instrucciones
La instrucción de cargar flanco descendente ( LDF) equivale a un contacto de detección de flanco descendente. El flanco descendente detecta el cambio de la entrada de control de 1 a 0. Como se muestra en este ejemplo, se utiliza un contacto de detección de transición negativa para detectar un flanco descendente: 0
LDF
%I0.0
) para obtener el diagrama de Consulte el procedimiento de reversibilidad ( v éase página 18 contactos equivalente.
EIO0000001477 12/2016
53
Instrucciones
LD, LDN, LDR, LDF
Los operadores de carga LD, LDN, LDR y LDF corresponden respectivamente a los contactos abierto, cerrado, de flanco ascendente y de flanco descendente. LDR y LDF sólo se utilizan con entradas del logic controller y palabras de memoria.
En esta tabla se enumeran los tipos de operadores de carga con los equivalentes del diagrama de contactos y los operandos permitidos:
LD
0/1
LDN
%I, %Q, %M, %S, %X, %BLK.x %IW:Xk, %QW:Xk, %IWS:Xk, %QWS:Xk, %MW:Xk, %SW:Xk, %KW:Xk
LDR
%I, %M
LDF
Ejemplos de instrucciones de carga: 0
LD ST
%I0.1 %Q0.3
1
LDN ST
%M0 %Q0.2
2
LDR ST
%I0.1 %Q0.4
3
LDF ST
%I0.3 %Q0.5
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
54
EIO0000001477 12/2016
Instrucciones
En el siguiente diagrama se muestran la temporización (y el efecto en la salida) del código de los ejemplos de codificación:
La detección de flancos del bit de memoria ( %M) se lleva a cabo entre exploraciones de tareas maestras.
EIO0000001477 12/2016
55
Instrucciones
ST, STN, R, S
Los operadores de asignación ST, STN, S y R corresponden respectivamente a las bobinas directa, inversa, Set y Reset.
En esta tabla se enumeran los tipos de operadores de asignación con los equivalentes del diagrama de contactos y los operandos permitidos:
ST
%Q, %M, %BLK.x %QW:Xk, %MW:Xk, %S(1), %SW:Xk(1)
STN
S
%Q, %M, %S, %X, %BLK.x %QW:Xk, %MW:Xk, %SW:Xk(1)
R
%S o %SW:Xk se encuentran en objetos de sistema que no son de sólo lectura.
Ejemplos de instrucciones de asignación: 0
LD ST STN S
%I0.1 %Q0.3 %Q0.2 %Q0.4
1
LD R
%I0.2 %Q0.4
) para obtener el diagrama de Consulte el procedimiento de reversibilidad ( v éase página 18 contactos equivalente.
56
EIO0000001477 12/2016
Instrucciones
En el siguiente diagrama se muestran la temporización (y el efecto en la salida) del código de los ejemplos de codificación:
EIO0000001477 12/2016
57
Instrucciones
AND, ANDN, ANDR, ANDF
Los operadores AND realizan una operación lógica AND entre el operando (o su inverso, flanco ascendente o flanco descendente) y el resultado booleano de la instrucción anterior.
En esta tabla se enumeran los tipos de operadores AND con los equivalentes del diagrama de contactos y los operandos permitidos:
AND
0/1
ANDN
%I, %Q, %M, %S, %X, %BLK.x %IW:Xk, %QW:Xk, %IWS:Xk, %QWS:Xk, %MW:Xk, %SW:Xk, %KW:Xk
ANDR
%I, %M
ANDF
Ejemplos de instrucciones AND lógicas:
58
0
LD AND ST
%I0.1 %M1 %Q0.3
1
LD ANDN ST
%M0 %I0.0 %Q0.2
2
LD ANDR S
%I0.3 %I0.4 %Q0.4
3
LD ANDF S
%M3 %I0.5 %Q0.5
EIO0000001477 12/2016
Instrucciones
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
En el siguiente diagrama se muestran la temporización (y el efecto en la salida) del código de los ejemplos de codificación:
EIO0000001477 12/2016
59
Instrucciones
OR, ORN, ORR, ORF
Los operadores OR realizan una operación lógica OR entre el operando (o su inverso, flanco ascendente o flanco descendente) y el resultado booleano de la instrucción anterior.
En esta tabla se enumeran los tipos de operadores OR con los equivalentes del diagrama de contactos y los operandos permitidos:
0/1
OR
%I, %Q, %M, %S, %X, %BLK.x %IW:Xk, %QW:Xk, %IWS:Xk, %QWS:Xk, %MW:Xk, %SW:Xk, %KW:Xk ORN
ORR
%I, %M
ORF
Ejemplos de instrucciones OR lógicas:
60
0
LD OR ST
%I0.1 %M1 %Q0.0
1
LD ORN ST
%I0.2 %M2 %Q0.1
EIO0000001477 12/2016
Instrucciones
2
LD ORR S
%M0 %I0.3 %Q0.5
3
LDF ORF S
%I0.5 %I0.6 %Q0.0
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
En el siguiente diagrama se muestran la temporización (y el efecto en la salida) del código de los ejemplos de codificación:
EIO0000001477 12/2016
61
Instrucciones
XOR, XORN, XORR, XORF
El operador XOR lleva a cabo una operación de OR exclusivo entre el operando y el resultado booleano de la instrucción anterior. El operador XORN lleva a cabo una operación de OR exclusivo entre el inverso del operando y el resultado booleano de la instrucción anterior. El operador XORR lleva a cabo una operación de OR exclusivo entre el flanco ascendente del operando y el resultado booleano de la instrucción anterior. El operador XORF lleva a cabo una operación de OR exclusivo entre el flanco descendente del operando y el resultado booleano de la instrucción anterior.
En la tabla siguiente se enumeran los tipos de operadores XOR y los operandos permitidos:
XOR
%I, %Q, %M, %S, %X, %BLK.x %IW:Xk, %QW:Xk, %IWS:Xk, %QWS:Xk, %MW:Xk, %SW:Xk, %KW:Xk
XORN
XORR
%I, %M
XORF
En caso de utilizar la instrucción XOR:
0
62
LD XOR ST
%I0.1 %M1 %Q0.3
EIO0000001477 12/2016
Instrucciones
Instrucciones lógicas equivalentes del operador XOR:
0
LD ANDN OR( ANDN ) ST
%I0.1 %M1 %M1 %I0.1 %Q0.3
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
En el siguiente diagrama se muestran la temporización (y el efecto en la salida) del código de los ejemplos de codificación:
No inserte: Contactos XOR en la primera posición de un escalón. Contactos XOR de forma paralela con otros elementos del diagrama de contactos (consulte el ejemplo siguiente). Tal como se muestra en el siguiente ejemplo, la inserción de un elemento de forma paralela con el contacto XOR generará un error detectado de validación:
EIO0000001477 12/2016
63
Instrucciones
N
El operador NOT (N) tiene un operando implícito: el resultado almacenado en el acumulador booleano. NOT niega el valor del acumulador.
En esta tabla se muestra el operador N:
No aplicable.
N
Ejemplo de una instrucción NOT:
0
LD N ST
%I0.1 %Q0.0
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
En el siguiente diagrama se muestran la temporización (y el efecto en la salida) del código de los ejemplos de codificación:
64
EIO0000001477 12/2016
Instrucciones
Los operadores de comparación se utilizan para comparar 2 operandos. En esta tabla se enumeran los tipos de operadores de comparación: >
Comprueba si Op1 es mayor que Op2
>=
Comprueba si Op1 es mayor o igual que Op2
<
Comprueba si Op1 es menor que Op2
<=
Comprueba si Op1 es menor o igual que Op2
=
Comprueba si Op1 es igual que Op2
<>
Comprueba si Op1 es distinto de Op2
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar expresiones de comparación de la lista de instrucciones ( v éase página 24 ) en los escalones del diagrama de contactos utilizando un elemento gráfico de . Sintaxis de las instrucciones de comparación: >, >=, <, <=, =, <>
LD [Op1 operador Op2] AND [Op1 operador Op2] OR [Op1 operador Op2]
En esta tabla se muestra la información de los operandos: Palabras
Palabras dobles
%MWi, %KWi, %IW, %QWi, %SWi, %BLK.x
Valor inmediato, %MWi, %KWi, %IW,
%MDi, %KDi
Valor inmediato, %MDi, %KDi,
%QW, %IWSi, %QWSi, %SWi, %BLK.x, %MWi[%MWi], %KWi[%MWi] %MDi[%MWi], %KD[%MWi]
Palabras de coma flotante
%MFi, %KFi
Valor de coma flotante inmediato, %MFi, %KFi, %MFi[%MWi], %KFi[%MWi]
Las instrucciones de comparación pueden utilizarse entre paréntesis.
EIO0000001477 12/2016
65
Instrucciones
La comparación se ejecuta entre corchetes siguiendo las instrucciones LDAND y OR. El resultado es 1 cuando la comparación solicitada es verdadera. Ejemplos de instrucciones de comparación: 0
LD AND ST
%I0.2 [%MW10>100] %Q0.3
1
LD AND ST
%M0 [%MW20<%KW35] %Q0.4
2
LD OR ST
%I0.2 [%MF30>=%MF40] %Q0.5
Ejemplo de utilización de una instrucción de comparación entre paréntesis: 0
LD AND( OR ) ST
%M0 [%MF20>10.0] %I0.0 %Q0.1
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
66
EIO0000001477 12/2016
Instrucciones Procesamientonumérico
En esta sección se ofrece una introducción al procesamiento numérico.
Esta sección contiene los siguientes apartados: Introducción a operaciones numéricas
68
Instrucciones de asignación
69
Asignación de cadenas de bits
70
Asignación de palabras
72
Operadores aritméticos en enteros
74
Instrucciones lógicas
78
Instrucciones de desplazamiento
80
Instrucciones de conversión de BCD/binario
82
Instrucciones de conversión de palabras simples y dobles
84
EIO0000001477 12/2016
67
Instrucciones
Normalmente, las instrucciones numéricas se aplican a palabras de 16 bits y a palabras dobles de 32 bits. Se escriben entre corchetes. Si el resultado de la operación lógica anterior era verdadero (acumulador booleano = 1), se ejecuta la instrucción numérica. Si el resultado de la operación lógica anterior era falso (acumulador booleano = 0), la instrucción numérica no se ejecuta y el operando permanece intacto.
68
EIO0000001477 12/2016
Instrucciones
Las instrucciones de asignación se utilizan para cargar el Op2 (operando 2) en el Op1 (operando 1).
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de ) en los escalones del lista de instrucciones e instrucciones de asignación ( v éase página 21 diagrama de contactos utilizando un elemento gráfico de . Sintaxis de las instrucciones de asignación: :=
[Op1 := Op2] Op1 toma el valor de Op2
Pueden realizarse operaciones de asignación en: Cadenas de bits Palabras Palabras dobles Palabras flotantes Tablas de palabras Tablas de palabras dobles Tablas de palabras flotantes Objetos de salida de tren de pulsos
EIO0000001477 12/2016
69
Instrucciones
Las operaciones se pueden realizar en las siguientes cadenas de bits: Cadena de bits a cadena de bits (Ejemplo 1) Cadena de bits a palabra (Ejemplo 2) o palabra doble (indexada) Palabra o palabra doble (indexada) a cadena de bits (Ejemplo 3) Valor inmediato a cadena de bits
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación ( v éase página 21 ) en los escalones del diagrama de contactos utilizando un elemento gráfico de . Sintaxis de las asignaciones de cadenas de bits: :=
[Op1 := Op2] Op1 toma el valor de Op2
En la tabla siguiente se ofrece información detallada de los operandos: Palabra, palabra doble
%MWi,%QWi, %SWi %MWi[%MWi], %MDi, %MDi[%MWi] %Mi:L, %Qi:L, %Si:L, %Xi:L %TMi.P, %Ci.P, %Ri.I, %Ri.O, %FCi.P, %PLSi.P, %PWMi.P %Ci.PD, %FCi.PD
Valor inmediato, %MWi, %KWi, %IW, %QWi, %IWSi, %QWSi, %SWi,%BLK.x, %MWi[%MWi], %KWi[%MWi], %MDi[%MWi], %KDi[%MWi], %Mi:L,%Qi:L, %Si:L, %Xi:L, %Ii:L %TMi.P, %Ci.P, %Ri.I, %Ri.O, %FCi.P, %PLSi.P, %PWMi.P %Ci.PD, %FCi.PD
La abreviatura %BLK.x (por ejemplo, %C0.P) se utiliza para describir cualquier palabra de bloque de funciones.
70
EIO0000001477 12/2016
Instrucciones
Ejemplos de asignaciones de cadenas de bits: 0
LD 1 [%Q0.0:8:=%M64:8]
1
LD %I0.2 [%MW100:=%M0:16]
2
LDR %I0.3 [%MW104:16:=%KW0]
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente. Normas de uso: Para asignación de cadena de bits a palabra: los bits de la cadena se transfieren a la palabra comenzando por la derecha (primer bit de la cadena al bit 0 de la palabra) y los bits de palabra no implicados en la transferencia (longitud ≤16) se establecen en 0. Para asignación de palabra a cadena de bits: los bits de palabra se transfieren desde la derecha (bit de palabra 0 al primer bit de la cadena).
EIO0000001477 12/2016
71
Instrucciones
Las operaciones de asignación se pueden ejecutar en las palabras y en las palabras dobles siguientes: Palabra (indexada) a palabra (2, por ejemplo) (indexada o no) Palabra doble (indexada) a palabra doble (indexada o no) Valor entero inmediato a palabra (Ejemplo 3) o palabra doble (indexada o no) Cadena de bits a palabra o palabra doble Coma flotante (indexada o no) a coma flotante (indexada o no) Palabra o palabra doble a cadena de bits Valor de coma flotante inmediato a coma flotante (indexado o no)
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación ( v éase página 21 ) en los escalones del diagrama de contactos utilizando un elemento gráfico de . Sintaxis de asignaciones de palabras: :=
[Op1 := Op2] Op1 toma el valor de Op2
En esta tabla se muestra la información de los operandos: %BLK.x, %MWi, %QWi, %SWi Palabra, palabra doble, cadena de bits %MWi[MWi], %MDi,
Coma flotante
Valor inmediato,
%MDi[%MWj], %Mi:L, %Qi:L, %Si:L, %Xi:L
%MWi, %KWi, %IW, %QWi, %IWSi, QWSi, %SWi, %MWi[MWi], %KWi[MWi], %MDi, %MDi[%MWj], %KDi, %KDi[MWj], %Mi:L, %Qi:L, %Si:L, %Xi:L, %Ii:L
%MFi, %MFi[%MWj]
Valor de coma flotante inmediato, %MFi, %MFi[%MWj], %KFi, %KFi[%MWj]
La abreviatura %BLK.x (por ejemplo, R3.I) se utiliza para describir cualquier palabra del bloque de funciones. Para las cadenas de bits %Mi:L, %Si:L y %Xi:L, la dirección de base del primer bit de la cadena debe ser un múltiplo de 8 (0, 8, 16, ..., 96, ...).
72
EIO0000001477 12/2016
Instrucciones
Ejemplos de asignaciones de palabras: 0
LD 1 [%SW112:=%MW100]
1
LD %I0.2 [%MW0[%MW10]:=%KW0[%MW20]]
2
LD %I0.3 [%MW10:=100]
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
EIO0000001477 12/2016
73
Instrucciones
Los operadores aritméticos se utilizan para realizar operaciones aritméticas entre 2 operandos enteros o en 1 operando entero. En esta tabla se enumeran los tipos de operadores aritméticos:
+
Sumar dos operandos
-
Restar dos operandos
*
Multiplicar dos operandos
/
Dividir dos operandos
REM
Resto de la división de los dos operandos
SQRT
Raíz cuadrada de un operando
INC
Aumentar un operando
DEC
Disminuir un operando
ABS
Valor absoluto de un operando
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de ) en los escalones del lista de instrucciones e instrucciones de asignación ( v éase página 21 diagrama de contactos utilizando un elemento gráfico de . Sintaxis de las instrucciones aritméticas:
74
+,-,*,/,REM
[Op1: = Op2 operador Op3]
INC, DEC
[operador Op1]
SQRT (1)
[Op1: = SQRT(Op2)]
ABS (1)
[Op1: = ABS(Op2)]
EIO0000001477 12/2016
Instrucciones
En esta tabla se muestra la información de los operandos:
Palabras Palabras dobles
%MWi, %QWi, %SWi, %BLK.x(2)
Valor inmediato, %MWi, %KWi, %IWi,
%MDi, %BLK.x
Immediate value, %MDi, %KDi, %BLK.x (Valor inmediato, %MDi, %KDi,
%QWi, %IWSi, %QWSi, %SWi, %BLK.x(2)
%BLK.x) (2) Con este operador, Op2 no puede ser un valor inmediato. La función ABS sólo se puede emplear con palabras dobles (%MD y %KD) y comas flotantes ( %MF y %KF). Por lo tanto, OP1 y OP2 deben ser palabras dobles o comas flotantes. %BLK.x representa todos objetos de bloques.
Ejemplos de instrucciones aritméticas: 0
LD %M0 [%MW0:=%MW10+10]
1
LD %I0.2 [%MW0:=SQRT(%MW10)]
2
LDR %I0.3 [%MW10:=32767]
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
Desborde durante la operación con palabras Si el resultado supera la capacidad de la palabra de resultados, el bit %S18 (desborde) se establece en 1 y el resultado no es significativo (consulte el escalón 1 del ejemplo de aplicación ( v éase página 77 ) ). El programa de usuario gestiona el bit %S18. Para las palabras dobles, los límites son -2.147.483.648 y 2.147.483.647.
Desborde durante la operación Si el resultado supera la capacidad de la palabra resultado, el bit %S18 (desborde) se establece en 1 y el resultado no es significativo.
EIO0000001477 12/2016
75
Instrucciones
División entre 0 Si el divisor es 0, la división es imposible y el bit del sistema %S18 se establece en 1. El resultado es incorrecto. Desborde durante la operación Si el cociente de la división supera la capacidad de la palabra resultado, el bit %S18 se establece en 1. Desborde durante la operación La extracción de la raíz cuadrada sólo se realiza en valores positivos. De este modo, el resultado siempre es positivo. Si el operando de la raíz cuadrada es negativo, el bit de sistema %S18 se establece en 1 y el resultado es incorrecto.
Algunos de los errores matemáticos detectados podrían tener un efecto importante en la ejecución de su aplicación. Es responsabilidad del usuario monitorizar e stos posibles errores y programar instrucciones para controlar adecuadamente la ejecución de su aplicación en caso de que se produzcan uno o más de estos errores. Las consecuencias de cualquiera de estos errores detectados dependen de la configuración, el equipo utilizado y las instrucciones del programa que se hayan ejecutado antes y después de la detección de los posibles errores.
Escriba instrucciones de programación para comprobar la validez de los operandos que se van a utilizar en operaciones matemáticas. No utilice operandos de diferentes tipos de datos en operaciones matemáticas. Monitorice siempre los bits del sistema asignados para indicar resultados matemáticos no válidos.
El programa de aplicación es responsable de la gestión de los bits de sistema %S17 y %S18. El controlador los establece en 1 y el programa debe restablecerlos para que puedan volver a utilizarse (para ver un ejemplo, consulte la página anterior).
76
EIO0000001477 12/2016
Instrucciones
Desborde durante la suma: 0
LD %M0 [%MW0:=%MW1+%MW2]
1
LDN %S18 [%MW10:=%MW0]
2
LD %S18 [%MW10 :=32767]
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente. Si %MW1 = 23.241 y %MW2 = 21.853, el resultado sería (45.094), que no puede expresarse e n una palabra de 16 bits con signo. Por lo tanto, el bit %S18 se establece en 1 y el valor de %MW0 (-20.442) es incorrecto. En este ejemplo, cuando el resultado es superior a 32.767, su valor se fija en 32.767.
EIO0000001477 12/2016
77
Instrucciones
Los operadores lógicos pueden utilizarse para realizar operaciones lógicas entre 2 operandos de palabra o, en el caso del NOT lógico, en 1 operando de palabra. En esta tabla se enumeran los diferentes tipos de instrucciones lógicas:
AND
AND (ámbito de bit) entre dos operandos
OR
OR lógico (ámbito de bit) entre dos operandos
XOR
OR exclusivo (ámbito de bit) entre dos operandos
NOT
Complemento lógico (ámbito de bit) de un operando
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de ) en los escalones del lista de instrucciones e instrucciones de asignación ( v éase página 21 diagrama de contactos utilizando un elemento gráfico de . Sintaxis de las instrucciones lógicas:
AND, OR, XOR NOT
[Op1: = Op2 operador Op3] [Op1:=NOT(Op2)]
%MWi, %QWi, %SWi, %BLK.x
Valor inmediato (1), %MWi, %KWi, %IWi, %QWi, %IWSi, %QWSi, %SWi, %BLK.x
Con NOT, Op2 no puede ser un valor inmediato.
Ejemplos de instrucciones lógicas: 0
LD %M0 [%MW0:=%MW10 AND 16#00FF]
1
LD 1 [%MW0:=%KW5 OR %MW10]
2
LD %I0.3 [%MW102:=NOT(%MW100)]
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
78
EIO0000001477 12/2016
Instrucciones
Instrucción AND lógica: [%MW15:=%MW32 AND %MW12]
Cuando %MW32 = 0001 1011 (binario) (27, decimal) y %MW12 = 0011 0110 (binario) (54, decimal), el resultado será %MW15 = 0001 0010 (binario) (18, decimal).
EIO0000001477 12/2016
79
Instrucciones
Las instrucciones de desplazamiento mueven los bits de un opera ndo un determinado número de posiciones hacia la izquierda o hacia la derecha. En esta tabla se enumeran los tipos de instrucciones de desplazamiento: Desplazamiento lógico SHL(op2,n)
Desplazamiento lógico de n posiciones hacia la izquierda.
SHR(op2,n)
Desplazamiento lógico de n posiciones hacia la derecha.
Desplazamiento circular ROL(op2,n)
Desplazamiento circular de n posiciones hacia la izquierda.
ROR(op2,n)
Desplazamiento circular de n posiciones hacia la derecha.
Valor inmediato entero para: palabra: 1-16, ambos incluidos palabra doble: 1-32, ambos incluidos
El bit de sistema %S17 indica el valor del último bit expulsado.
80
EIO0000001477 12/2016
Instrucciones
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación ( v éase página 21 ) en los escalones del diagrama de contactos utilizando un elemento gráfico de . Sintaxis de las instrucciones de desplazamiento: SHL, SHR
[Op1: = operador (Op2,n)]
ROL, ROR
Valor inmediato entero para: palabra: 1-16, ambos incluidos palabra doble: 1-32, ambos incluidos
En esta tabla se muestra la información de los operandos: Palabras
%MWi, %QWi, %SWi %BLK.x
Palabras dobles %MDi %BLK.x
%MWi, %KWi, %IWi, %QWi, %IWSi, %QWSi, %SWi, %BLK.x %MDi, %KDi %BLK.x
Ejemplos de instrucciones de desplazamiento: 0
LDR %I0.1 [%MW0:=SHL(%MW10,5)]
1
LDR %I0.2 [%MW10:=ROR(%KW9,8)]
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
EIO0000001477 12/2016
81
Instrucciones
Las instrucciones de conversión realizan conversiones entre distintas representaciones de números. En esta tabla se enumeran los tipos de instrucciones de conversión de BCD/binario:
BTI
Conversión de BCD a binario
ITB
Conversión de binario a BCD
El decimal codificado en binario (BCD) representa un dígito decimal (entre 0 y 9) codificado con cuatro bits binarios. Un objeto de palabra de 16 bits puede con tener un número de cuatro dígitos (entre 0000 y 9999) y, por consiguiente, un objeto de palabra doble de 32 bits podrá contener uno de ocho cifras. Durante una conversión, el bit de sistema %S18 se establece en 1 si el valor no es BCD. Este bit se debe verificar y restablecer a 0 mediante el programa. Representación BCD de números decimales: Decimal 0
1
2
3
4
5
6
7
8
9
BCD
0001
0010
0011
0100
0101
0110
0111
1000
1001
0000
Ejemplos: La palabra %MW5 expresa el valor BCD 2450 que corresponde al valor binario: 0010 0100 0101 0000. La palabra%MW12 expresa el valor decimal 2450 que corresponde al valor binario: 0000 1001 1001 0010. La palabra %MW5 se convierte en la palabra %MW12 mediante la instrucción BTI. La palabra %MW12 se convierte en la palabra %MW5 mediante la instrucción ITB.
82
EIO0000001477 12/2016
Instrucciones
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación ( v éase página 21 ) en los escalones del diagrama de contactos utilizando un elemento gráfico de . Sintaxis de las instrucciones de conversión BCD/binario: BTI, ITB
[Op1 := operador (Op2)]
En esta tabla se muestra la información de los operandos: Palabras Palabra doble
%MWi, %QWi, %SWi %BLK.x
%MWi, %KWi, %IWi, %QWi, %IWSi, %QWSi, %SWi, %BLK.x
%MDi %BLK.x
%MDi, %KDi %BLK.x
Ejemplos de instrucciones de conversión BCD/binario: 0
LD %M0 [%MW0:=BTI(%MW10)]
1
LD %I0.2 [%MW10:=ITB(%KW9)]
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
La instrucción BTI se utiliza para procesar un valor de consigna en las entradas del controlador a través de las ruedas codificadoras en BCD. La instrucción ITB se utiliza para mostrar los valores numéricos (por ejemplo, el resultado de un cálculo, el valor actual de un bloque de funciones) en monitores de operación con codificación BCD.
EIO0000001477 12/2016
83
Instrucciones
En esta tabla se describen las instrucciones utilizadas para realizar conversiones entre palabras simples y dobles:
LW
Extrae el byte menos significativo de una palabra doble a una palabra.
HW
Extrae el byte más significativo de una palabra doble a una palabra.
CONCATW
Concatena dos palabras para formar una palabra doble.
DWORD
Convierte una palabra de 16 bits en una palabra doble de 32 bits.
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación ( v éase página 21 ) en los escalones del diagrama de contactos utilizando un elemento gráfico de . Sintaxis de las instrucciones de conversión de palabras simples y dobles:
LW, HW
Op1 = operador (Op2)
%MWi
%MDi, %KDi, %BLK.x
[-]
CONCATW
Op1 = operador (Op2, Op3))
%MDi, %KDi, %BLK.x
%MWi, %KWi,
%MWi, %KWi,
valor inmediato
valor inmediato
%MDi, %KDi, %BLK.x
%MWi, %KWi
[-]
DWORD
Op1 = operador (Op2)
Ejemplos de instrucciones de conversión de palabras simples y dobles: 0
LD %M0 [%MW0:=HW(%MD10)]
1
LD %I0.2 [%MD10:=DWORD(%KW9)]
2
LD %I0.3 [%MD11:=CONCATW(%MW10,%MW5)]
) para obtener el diagrama de Consulte el procedimiento de reversibilidad ( v éase página 18 contactos equivalente.
84
EIO0000001477 12/2016
Instrucciones Programa
En esta sección se ofrece una introducción a las instrucciones del programa.
Esta sección contiene los siguientes apartados: Instrucciones END
86
Instrucciones NOP
88
Instrucciones de salto
89
Instrucciones de subrutina
91
EIO0000001477 12/2016
85
Instrucciones
Las instrucciones END definen el final de la ejecución de una exploración del programa.
Hay disponibles 4 instrucciones END diferentes: END: fin incondicional del programa ENDC: fin de programa si el resultado booleano de la instrucción de prueba precedente es 1 ENDCN: fin de programa si el resultado booleano de la instrucción de prueba precedente es 0 ENDT: final del escalón de transición en un programa Grafcet (SFC) (sólo válido en un escalón de transición) De forma predeterminada (modalidad normal), cuando se activa el fin de un programa, las salidas se actualizan y se inicia la siguiente exploración. Si la exploración es periódica, cuando se alcanza el final del periodo se actualizan las salidas y se inicia la exploración siguiente.
Ejemplo de una instrucción END incondicional:
0
LD %M1 ST %Q0.1
1
LD %M2 ST %Q0.2
2
END
Ejemplo de una instrucción END condicional:
86
0
LD %I0.0 ST %Q0.0
1
LD %I0.1 ST %Q0.1
2
LD %I0.2 ENDC
3
LD %I0.3 ST %Q0.2
4
END
EIO0000001477 12/2016
Instrucciones
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
EIO0000001477 12/2016
87
Instrucciones
Las instrucciones NOP no realizan ninguna operación. Utilícelas para "reservar" líneas en un programa para que pueda insertar instrucciones más adelante sin modificar los números de línea.
88
EIO0000001477 12/2016
Instrucciones
Las instrucciones de salto provocan que la ejecución de un programa se interrumpa inmediatamente y que continúe a partir de la línea después de la línea del programa que contiene la etiqueta %Li (i = número máximo de módulos).
Existen tres instrucciones de salto diferentes disponibles: JMP : salto de programa incondicional. JMPC: salto de programa si el resultado booleano de la lógica anterior es 1. JMPCN: salto de programa si el resultado booleano de la lógica anterior es 0.
Ejemplos de instrucciones de salto: 0
LD JMPC
%M15 %L8
1
LD ST JMPC
[%MW24<%MW12] %Q0.3 %L12
%L8: LD AND ST JMPC
%M12 %M13 %M12 %L12
LD S
%M11 %Q0.0
2
3 4
%L12: LD %I0.0 ST %Q0.4
) para obtener el diagrama de Consulte el procedimiento de reversibilidad ( v éase página 18 contactos equivalente.
EIO0000001477 12/2016
89
Instrucciones
90
Las instrucciones de salto no están permitidas entre paréntesis y no deben situarse entre las instrucciones AND, OR y una instrucción de cierre de paréntesis ")". La etiqueta solo puede situarse antes de una instrucción LD, LDN, LDR, LDF o BLK. El número de etiqueta de la etiqueta %Li debe definirse solo una vez en un programa. El salto de programa se realiza hacia una línea de programación ubicada en sentido ascendente o descendente. Cuando el salto está ubicado en sentido ascendente, debe prestarse especial atención al tiempo de exploración del programa. Un tiempo de exploración prolongado puede provocar la activación del temporizador de watchdog.
EIO0000001477 12/2016
Instrucciones
Las instrucciones de subrutina hacen que un programa lleve a cabo una subrutina y luego vuelva al programa principal en el punto desde el que se llamó a la subrutina.
Se crea una subrutina en una POU disponible. Consulte POU disponibles (véase SoMachine Basic, Guía de funcionamiento) para obtener información sobre cómo crear una POU disponible y una subrutina, y cómo definir el número de subrutina. Consulte también Gestión de POU para obtener más información sobre cómo gestionar POU con tareas y escalones. Llamada de una subrutina en tres pasos: La instrucción SRn llama a la subrutina a la que hace referencia un SRn de POU disponible si el resultado de la instrucción booleana anterior es 1. Se hace referencia a la subrutina mediante una POU disponible SRn, donde n es el número de subrutinas. La instrucción de subrutina debe escribirse independientemente de la POU disponible del programa principal. Para obtener más información sobre las subrutinas, consulte Creación de una tarea periódica (véase SoMachine Basic, Guía de funcionamiento) .
Ejemplo de instrucciones que contienen una subrutina: 0
LD AND ST
%M15 %M5 %Q0.0
1
LD SR1
[%MW24>%MW12]
2
LD AND ST END
%I0.4 %M13 %Q0.1
Ejemplo de instrucción de subrutina ( SR1):
0 (SR1)
EIO0000001477 12/2016
LD ST
%I0.0 %Q0.0
91
Instrucciones
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
92
Una subrutina no debe llamar a otra subrutina. Si se intenta llamar a una subrutina de una POU disponible, se detectará un error del compilador. Las instrucciones de subrutina no están permitidas entre paréntesis y no deben situarse entre las instrucciones AND, OR y una instrucción de cierre de paréntesis ")". Cuando una instrucción de asignación va seguida directamente de una llamada a una subrutina en IL, se debe tener cuidado. Esto se debe a que es posible que la subrutina modifique el contenido del acumulador booleano. Por lo tanto, es posible que tenga un valor de retorno diferente al que tenía antes de la llamada.
EIO0000001477 12/2016
Instrucciones Coma flotante
En esta sección se describen las instrucciones avanzadas de coma flotante.
Esta sección contiene los siguientes apartados: Instrucciones aritméticas en objetos de coma flotante
94
Instrucciones trigonométricas
97
Instrucciones de conversión de ángulos
99
Instrucciones de conversión de entero/coma flotante
EIO0000001477 12/2016
100
93
Instrucciones
Estas instrucciones permiten efectuar una operación aritmética entre 2 operandos de coma flotante o en 1 operando de coma flotante:
+
Suma de dos operandos
-
Resta de dos operandos
*
Multiplicación de dos operandos
/
División de dos operandos
LOG
Logaritmo de Base 10
LN
Logaritmo natural
SQRT
Raíz cuadrada de un operando
ABS
Valor absoluto de un operando
TRUNC
Parte entera de un valor de coma flotante
EXP
Exponencial natural
EXPT
Potencia de un entero por un real
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de v éase e pá pági gina na 21 ) en lista de instrucciones e instrucciones de asignación ( véas en los escalones del diagrama de contactos utilizando un elemento gráfico gr áfico de . Operadores y sintaxis de las instrucciones aritméticas en coma flotante:
+, - *, /
Op1:=Op2 operador Op3
SQRT, ABS, TRUNC, LOG, EXP, LN
Op1:=operador (Op2)
EXPT
Op1:=operador (Op2,Op3)
Operandos de las instrucciones aritméticas en coma flotante:
+, - *, / SQRT, ABS, LOG, EXP, LN
%MFi %MFi
%MFi, %KFi, valor
%MFi, %KFi, valor
inmediato
inmediato
%MFi, %KFi
[-]
SoMachine Basic impide el uso de la función con un %MWi como Op1.
94
EIO0000001477 12/2016
Instrucciones
TRUNC
%MFi, %MDi
%MFi, %KFi
[-]
EXPT
%MFi
%MFi, %KFi
%MWi, %KWi, valor
inmediato SoMachine Basic impide el uso de la función con un %MWi como Op1.
Ejemplo de una instrucción aritmética: 0
LD %M0 [%MF0:=%MF10+129.7]
1
LD %I0.2 [%MF1:=SQRT(%MF10)]
2
LDR %I0.3 [%MF2:=ABS(%MF20)]
3
LDR %I0.4 [%MF3:=TRUNC(%MF2)]
4
LD %M1 [%MF4:=LOG(%MF10)]
5
LD %I0.5 [%MF5:=LN(%MF20)]
6
LD %I0.0 [%MF6:=EXP(%MF30)]
7
LD %I0.1 [%MF7:=EXPT(%MF40,%MW52)]
Consulte el procedimiento de reversibilidad ( véas para obtener el diagrama de v éase e pá pági gina na 18 ) para contactos equivalente.
Las operaciones con valores de coma flotante y enteros no se pueden mezclar directamente. Las operaciones de conversión ( véas llevan a cabo la conversión a uno de los v éase e pá pági gina na 99 ) llevan formatos. El bit de sistema %S18 se gestiona del mismo modo que las operaciones con enteros ( véas v éase e pá pági gina na 99 ) ; la palabra %SW17 indica la causa del error detectado. Cuando el operando de la función es un número no válido (por ejemplo, logaritmo de un número negativo), produce un resultado indeterminado o infinito y cambia el bit de %S18 a 1. La palabra %SW17 señala la causa del error detectado. En la instrucción TRUNC, el bit de sistema %S17 no se ve afectado.
EIO0000001477 12/2016
95
Instrucciones
En la siguiente tabla se muestran ejemplos de la instrucción TRUNC cuando se utiliza %MDi para almacenar el resultado:
TRUNC(3.5)
3
TRUNC(324.18765)
324
TRUNC(927.8904)
927
TRUNC(-7.7)
-7
TRUNC(45.678E+20)
2 147 483 647 (palabra (palabra doble con signo signo máximo) máximo) (1) (1) %S18 se establece en 1
TRUNC(-94.56E+13)
- 2 147 483 648 (palabra (palabra doble doble con con signo signo mínimo mínimo)) (1) %S18 se establece en 1
Este ejemplo se aplica a la instrucción TRUNC cuando se utiliza con %MDi. (Cuando se utiliza con %MFi, la instrucción TRUNC no tiene desborde y, por lo tanto, carece de límites máximo/mínimo).
96
EIO0000001477 12/2016
Instrucciones
Estas instrucciones permiten realizar operaciones trigonométricas: SIN
seno de un ángulo expresado en radianes ASIN arco seno (resultado entre
y
COS
coseno de un ángulo expresado en radianes ACOS
arco coseno (resultado entre 0 y
TAN
tangente de un ángulo expresado en radianes
arco tangente (resultado entre
) )
ATAN
y
)
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación ( véas en los escalones del v éase e pá pági gina na 21 ) en diagrama de contactos utilizando un elemento gráfico de . Operadores, operandos y sintaxis de las instrucciones de operaciones trigonométricas
SIN, COS, TAN, ASIN, ACOS, ATAN
Op1:=operador(Op2)
%MFi
%MFi, %KFi
Ejemplo de instrucciones Trigonometric: 0
LD %M0 [%MF0:=SIN(%MF10)]
1
LD %I0.0 [%MF1:=TAN(%MF20)]
2
LD %I0.3 [%MF2:=ATAN(%MF30)]
Consulte el procedimiento de reversibilidad ( véas para obtener el diagrama de v éase e pá pági gina na 18 ) para contactos equivalente.
EIO0000001477 12/2016
97
Instrucciones
98
Cuando el operando de la función es un número no válido (por ejemplo, el arco coseno de un número superior a 1), produce un resultado r esultado indeterminado o infinito y pone el bit %S18 a 1. La palabra %SW17 indica la causa del error detectado. Las funciones SIN/COS/TAN admiten como parámetro un ángulo entre y , pero la precisión decrece progresivamente cuando se trata de án gulos que se encuentran fuera del periodo comprendido entre y , debido a que el módulo provoca una imprecisión en el parámetro antes de realizar cualquier operación.
EIO0000001477 12/2016
Instrucciones
Estas instrucciones permiten llevar a cabo operaciones o peraciones de conversión: DEG_TO_RAD
Conversión de grados a radianes, el resultado es el valor del ángulo comprendido entre 0 y
RAD_TO_DEG
Conversión de un ángulo expresado en radianes, el resultado es el valor del ángulo comprendido entre 0 y 360 grados
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación ( véas en los escalones del v éase e pá pági gina na 21 ) en diagrama de contactos utilizando un elemento gráfico de . Operadores, operandos y sintaxis de las instrucciones de conversión
DEG_TO_RAD RAD_TO_DEG
Op1:=operador(Op2)
%MFi
%MFi, %KFi
Ejemplo de instrucciones de conversión: 0
LD %M0 [%MF0:=DEG_TO_RAD(%MF10)]
1
LD %M2 [%MF2:=RAD_TO_DEG(%MF20)]
v éase e pá pági gina na 18 ) para Consulte el procedimiento de reversibilidad ( véas para obtener el diagrama de contactos equivalente.
El ángulo que se va a convertir debe estar comprendido entre -737.280,0 y +737.280,0 (para conversiones DEG_TO_RAD ) o entre
y
(para conversiones RAD_TO_DEG ).
Para los valores no comprendidos entre estos límites, el resultado mostrado será +1.#QNAN, los bits %S18 y %SW17:X0 se establecen en 1.
EIO0000001477 12/2016
99
Instrucciones
Existen cuatro instrucciones de conversión: INT_TO_REAL
Conversión de una palabra entera a flotante
DINT_TO_REAL
Conversión de una palabra doble (entera) a flotante
REAL_TO_INT
Conversión de una palabra flotante a entera (el resultado es e l valor algebraico más cercano)
REAL_TO_DINT
Conversión de una palabra flotante a entera doble (el resultado es el valor algebraico más cercano)
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación ( v éase página 21 ) en los escalones del diagrama de contactos utilizando un elemento gráfico de . Operadores y sintaxis (conversión de una palabra entera a flotante):
INT_TO_REAL
Op1=INT_TO_REAL(Op2)
Operandos (conversión de una palabra entera a flotante):
%MFi
%MWi,%KWi
Conversión de una palabra entera a flotante: 147 a 1,47e+02 Operadores y sintaxis (conversión de una palabra doble entera a flotante):
DINT_TO_REAL
Op1=DINT_TO_REAL(Op2)
Operandos (conversión de una palabra doble entera a flotante):
%MFi
%MDi,%KDi
Conversión de una palabra doble entera a flotante: 68.905.000 a 6,8905e+07
100
EIO0000001477 12/2016
Instrucciones
Operadores y sintaxis (conversión de flotante a palabra entera o palabra doble entera): Op1=operador (Op2)
REAL_TO_INT REAL_TO_DINT
Operadores (conversión de flotante a palabra entera o palabra doble entera): Palabras
%MWi
%MFi, %KFi
Palabras dobles
%MDi
%MFi, %KFi
Ejemplo: Conversión de flotante a palabra entera: 5.978,6 a 5.979 Conversión de flotante a palabra doble entera: -1.235.978,6 a -1.235.979 Si durante una conversión de real a entero (o de real a palabra doble entera), el valor flotante está fuera de los límites de la palabra (o palabra doble), el bit %S18 se establece en 1.
Ejemplo de instrucción de conversión de entero/flotante: 0
LD 1 [%MF0:=INT_TO_REAL(%MW10)]
1
LD %I0.8 [%MD2:=REAL_TO_DINT(%MF9)]
) para obtener el diagrama de Consulte el procedimiento de reversibilidad ( v éase página 18 contactos equivalente.
La norma IEEE 754 define cuatro modalidades de redondeo para las operaciones con flotantes. La modalidad utilizada en las siguientes instrucciones es la modalidad "redondear al valor más cercano": "Si los valores más cercanos que se pueden representar están a la misma distancia del resultado teórico, el valor suministrado será aquel cuyo bit menos significativo sea igual a 0". Es decir, el valor se redondeará hacia el número par, ya sea superior o inferior. Por ejemplo: Redondeo del valor 10,5 a 10. Redondeo del valor 11,5 a 12. EIO0000001477 12/2016
101
Instrucciones ASCII
En esta sección se describen las instrucciones avanzadas de ASCII.
Esta sección contiene los siguientes apartados:
102
Instrucciones ROUND
103
Instrucciones de conversión de ASCII a entero
105
Instrucciones de conversión de entero a ASCII
107
Instrucciones de conversión de ASCII a flotante
109
Instrucciones de conversión de flotante a ASCII
111
EIO0000001477 12/2016
Instrucciones
La instrucción ROUND redondea una representación de coma flotante almacenada en una cadena ASCII.
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación ( véas en los escalones del v éase e pá pági gina na 21 ) en diagrama de contactos utilizando un elemento gráfico de . Para la instrucción ROUND, utilice la sintaxis: Op1 := ROUND( Op2,Op3 ) . Por ejemplo: [%MW0:7:=ROUND(%MW8,4)]
En esta tabla se describen los parámetros de la función ROUND: Op1
%MW en el que se almacena el resultado.
Op2
%MW que contiene la coma flotante que se va a redondear.
Op3
Número de dígitos significativos necesarios en el redondeo. Entero de 1 a 8
Las reglas de la instrucción ROUND son las siguientes: El operando se redondea siempre hacia abajo. El carácter de fin de la cadena del operando se utiliza como carácter de fin de la cadena de resultado. El carácter de fin puede ser cualquier carácter ASCII que no se encuentre en el intervalo [0 - 9] ([16#30 - 16#39]), excepto: punto '.' (16#2E), menos '-' (16#2D), más '+' (16#2B), EXP 'e' o 'E' (16#65 o 16#45).
El resultado y el operando no deben tener un tamaño superior a 13 bytes: el tamaño máximo de una cadena ASCII es de 13 bytes. No se admite la notación científica.
EIO0000001477 12/2016
103
Instrucciones
El software comprueba la sintaxis. Los ejemplos siguientes producirían prod ucirían errores de sintaxis:
%MW10:= ROUND(%MW1,4)
%MW10:7 := ROUND(%MW1,4)
falta ":7" en el resultado %MW10:13:= ROUND(%MW1,4)
%MW10:7 := ROUND(%MW1,4)
%MW10:n, %MW10:n, donde donde n ≠ 7 es incorrecto incorrecto
En esta tabla se muestran ejemplos de la instrucción ROUND:
104
ROUND("987654321", 5)
"987650000"
ROUND("-11.1", 8)
"-11.1"
ROUND("NAN")
"NAN"
EIO0000001477 12/2016
Instrucciones
Las instrucciones de conversión de ASCII a entero convierten una cadena ASCII en un valor entero.
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de v éase e pá pági gina na 21 ) en lista de instrucciones e instrucciones de asignación ( véas en los escalones del diagrama de contactos utilizando un elemento gráfico de . Para las instrucciones de conversión ASCII a entero, use la sintaxis siguiente: Op1 := ASCII_TO_INT( Op2 )
Por ejemplo: [%MW0:=ASCII_TO_INT(%MW8)]
En esta tabla se describen los parámetros de la función de conversión de ASCII a entero: Op1
%MW en el que se almacena el resultado
Op2
%MW o %KW
Las reglas de las instrucciones de conversión de ASCII a entero son las siguientes: Op2 debe estar entre -32.768 y 32.767. La función siempre lee primero el byte más significativo. Todo carácter ASCII que se encuentre fuera del rango [0 - 9] ([16#30 - 16#39]) se considera un carácter de fin, excepto en el caso de un signo menos '-' (16#2D) cuando se coloca como primer carácter. En caso de desbordamiento (>32.767 o <-32.768), el bit de sistema %S18 (desborde aritmético o error detectado) se establece en 1 y se devuelve el valor 32.767 o -32.768. Si el primer carácter del operando es un carácter "separador", se devuelve el valor 0 y el bit %S18 se establece en 1. No se admite la notación científica.
EIO0000001477 12/2016
105
Instrucciones
Tenga en cuenta que los siguientes datos ASCII se han almacenado entre %MW10 y %MW13:
%MW10
1 6# 39 32
9, 2
%MW11
1 6# 31 33
1, 3
%MW12
1 6# 20 38
‘ ‘, 8
%MW13
1 6# 38 2 0
8, ‘ ‘
En esta tabla se muestran ejemplos de la conversión de ASCII a entero:
%MW20 := ASCII_TO_INT(%MW10)
%MW20 = 29318
%MW20 := ASCII_TO_INT(%MW12)
%MW20 = 8
%MW20 := ASCII_TO_INT(%MW13)
106
%MW20 = 0 y %S18 se establece en 1
EIO0000001477 12/2016
Instrucciones
Las instrucciones de conversión de entero a ASCII convierten un entero en un valor de cadena ASCII.
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de v éase e pá pági gina na 21 ) en lista de instrucciones e instrucciones de asignación ( véas en los escalones del diagrama de contactos utilizando un elemento gráfico de . Para las instrucciones de conversión de entero a ASCII, use la sintaxis siguiente: Op1 := INT_TO_ASCII( Op2 )
Por ejemplo: [%MW0:4:=INT_TO_ASCII(%MW8)]
En esta tabla se describen los parámetros de la función de conversión de entero a ASCII: Op1
%MW en el que se almacena el resultado.
Op2
%MW, %KW, %SW, %IW, %QW o cualquier PALABRA.
(No se aceptan valores inmediatos)
Las reglas de conversión de entero a ASCII son las siguientes: Op2 debe estar entre -32.768 y 32.767. La función siempre escribe primero el byte más significativo. El carácter de fin es "Enter" (ASCII 13). La función determina automáticamente cuántos %MWs se deben llenar con valores ASCII (de 1 a 4).
El software comprueba la sintaxis. Los ejemplos siguientes producirían errores de sintaxis: Sintaxis incorrecta
Sintaxis correcta
%MW10 := INT_TO_ASCII(%MW1)
%MW10:4 := INT_TO_ASCII(%MW1)
falta ":4" en el resultado %MW10:n := INT_TO_ASCII(%MW1) donde e n ≠ 4 es incorr incorrect ecto o %MW10:n, dond
EIO0000001477 12/2016
%MW10:4 := INT_TO_ASCII(%MW1)
107
Instrucciones
Para la instrucción MW10:4 := INT_TO_ASCII(%MW1) :
%MW1 = 123
%MW1 = 45 %MW1 = 7
%MW1 = -12369
108
%MW10 = 16#3231
2, 1
%MW11 = 16#0D33
3
%MW10 = 16#3534
5, 4
%MW11 = 16#000D
'enter'
%MW10 = 16#0D37
'enter', 7
%MW10 = 16#3145
1, '-'
%MW11 = 16#3332
3, 2
%MW10 = 16#3936
9, 6
%MW11 = 16#000D
'enter'
EIO0000001477 12/2016
Instrucciones
Las instrucciones de conversión de ASCII a flotante convierten una cadena ASCII en un valor de coma flotante.
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de ) en los escalones del lista de instrucciones e instrucciones de asignación ( v éase página 21 diagrama de contactos utilizando un elemento gráfico de . Para las instrucciones de conversión de ASCII a flotante, utilice la sintaxis siguiente: Op1 := ASCII_TO_FLOAT( Op2 ) . Por ejemplo: [%MF0:=ASCII_TO_FLOAT(%MW8)]
En esta tabla se describen los parámetros de la función de conversión de ASCII a flotante: Op1
%MF
Op2
%MW or %KW
Las reglas de conversión de ASCII a flotante son las siguientes: La función siempre lee primero el byte más significativo. Todo carácter ASCII que no se encuentre en el intervalo [0 - 9] ([16#30 - 16#39]) se considera un carácter de "fin", excepto: punto '.' (16#2E), menos '-' (16#2D), más '+' (16#2B), EXP 'e' o 'E' (16#65 o 16#45).
El formato de la cadena ASCII puede estar en notación científica (es decir, -2,34567e+13) o decimal (es decir, 9.826,3457). En caso de desborde (el resultado del cálculo es >3,402824E+38 o <-3,402824E+38): El bit de sistema %S18 (desborde aritmético o error detectado) se establece en 1. %SW17:X3 se establece en 1. Se devuelve el valor +/- 1.#INF (+ o – valor infinito).
EIO0000001477 12/2016
109
Instrucciones
Si el resultado del cálculo se encuentra entre -1,175494E-38 y 1,175494E-38, se redondea a 0,0. Si el operando no es un número: Valor 1.Se devuelve #QNAN. El bit %SW17:X0 se establece en 1.
Tenga en cuenta que los siguientes datos ASCII se han almacenado entre %MW10 y %MW14:
%MW10
16#382D
8, '-'
%MW11
16#322E
2, '.'
%MW12
16#3536
5, 6
%MW13
16#2B65
'+', 'e'
%MW14
16#2032
' ',2
En esta tabla se muestran ejemplos de la conversión de ASCII a flotante:
%MF20 := ASCII_TO_FLOAT(%MW10)
110
%MF20 = -826,5
%MF20 := ASCII_TO_FLOAT(%MW11)
%MF20 = 1.#QNAN
%MF20 := ASCII_TO_FLOAT(%MW12)
%MF20 = 6500.0
%MF20 := ASCII_TO_FLOAT(%MW13)
%MF20 = 1.#QNAN
%MF20 := ASCII_TO_FLOAT(%MW14)
%MF20 = 2.0
EIO0000001477 12/2016
Instrucciones
Las instrucciones de conversión de flotante a ASCII convierten un valor de coma flotante en un valor de cadena ASCII.
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de ) en los escalones del lista de instrucciones e instrucciones de asignación ( v éase página 21 diagrama de contactos utilizando un elemento gráfico de . Para las instrucciones de conversión de flotante a ASCII, use la sintaxis siguiente: Op1 := FLOAT_TO_ASCII(Op2) . Por ejemplo: [%MW0:7:=FLOAT_TO_ASCII(%MF8)]
En esta tabla se describen los parámetros de la función de conversión de flotante a ASCII: Op1
%MW
Op2
%MF or %KF
Las reglas de conversión de flotante a ASCII son las siguientes: La función siempre escribe primero el byte más significativo. La representación se realiza mediante notación científica convencional. Los resultados "Infinito" o "No es un número" devuelven la cadena "NAN". El carácter de fin es "Enter" (ASCII 13). La función determina automáticamente cuántos %MW se deben llenar con valores ASCII. La precisión de conversión es de 6 cifras. No se admite la notación científica.
EIO0000001477 12/2016
111
Instrucciones
El software comprueba la sintaxis. Los ejemplos siguientes producirían errores de sintaxis:
%MW10 := FLOAT_TO_ASCII(%MF1)
%MW10:7 := FLOAT_TO_ASCII(%MF1)
falta ":7" en el resultado %MW10:n := FLOAT_TO_ASCII(%MF1) %MW10:n donde n ≠ 7 es incorrecto
%MW10:7 := FLOAT_TO_ASCII(%MF1)
Para la instrucción %MW10:7 := FLOAT_TO_ASCII(%MF1) :
112
123.4567.800
1,23456e+09
0,000000921
9,21e-07
9,87654321
9,87654
1.234
1,234e+03
EIO0000001477 12/2016
Instrucciones Operadores depila
Las instrucciones de pila procesan el acceso a las bobinas. Las instrucciones MPS, MRD y MPP utilizan un área de almacenamiento temporal denominada "pila" que puede almacenar hasta 32 expresiones booleanas. Estas instrucciones no se pueden utilizar en una expresión entre paréntesis.
En esta tabla se describen las tres instrucciones de pila:
MPS
Introducir memoria en pila
Almacena el resultado de la última instrucción lógica (contenidos del acumulador) en la parte superior de la pila (introducir) y desplaza el resto de los valores a la parte inferior de la pila.
MRD
Leer memoria desde pila
Lee la parte superior de la pila en el acumulador.
MPP
Sacar memoria de pila
Copia el valor de la parte superior de la pila en el acumulador (sacar) y desplaza el resto de los valores hacia la parte superior de la pila.
Para cada instrucción MPS (introducir) debe mostrarse una instrucción MPP (extraer) coincidente en el mismo escalón.
EIO0000001477 12/2016
113
Instrucciones
En este diagrama se muestra cómo funcionan las instrucciones de pila:
Ejemplo de uso de instrucciones de pila: 0
LD AND MPS AND ST MRD AND ST MRD AND ST MPP AND ST
%I0.0 %M1 %I0.1 %Q0.0 %I0.2 %Q0.1 %I0.3 %Q0.2 %I0.4 %Q0.3
) para obtener el diagrama de Consulte el procedimiento de reversibilidad ( v éase página 18 contactos equivalente.
114
EIO0000001477 12/2016
Instrucciones Instruccionessobre tablas deobjetos
En esta sección se describen las instrucciones para gestionar las tablas de objetos de: Palabras dobles Objetos de coma flotante
Esta sección contiene los siguientes apartados: Asignación de tablas de palabras, palabras dobles o coma flotante
116
Funciones de suma en tablas
118
Funciones de comparación de tablas
120
Funciones de búsqueda en tablas
122
Funciones de búsqueda de valores máximo y mínimo en tablas
124
Número de apariciones de un valor en una tabla
126
Funciones de desplazamiento circular de tablas
127
Funciones de clasificación en tablas
129
Funciones de interpolación en la tabla de coma flotante (LKUP)
131
Funciones de MEDIA de los valores de una tabla de coma flotante
136
EIO0000001477 12/2016
115
Instrucciones
Las operaciones de asignación se pueden ejecutar en las siguientes tablas de objetos: Valor entero inmediato a la tabla de palabras (vea el escalón 0 de la estructura de ejemplo ( v éase página 117 ) ) o a la tabla de palabras dobles v éase página 117 ) ) Palabra a tabla de palabras (vea el escalón 1 de la estructura de ejemplo ( Tabla de palabras a tabla de palabras (vea el escalón 2 de la estructura de ejemplo ( v éase página 117 ) ) La longitud de la tabla (L) debe ser igual para ambas tablas. Palabra doble a tabla de palabras dobles Tabla de palabras dobles a tabla de palabras dobles La longitud de la tabla (L) debe ser igual para ambas tablas. Valor de coma flotante inmediato a tabla de coma flotante Coma flotante a tabla de coma flotante Tabla de coma flotante a tabla de coma flotante La longitud de la tabla (L) debe ser igual para ambas tablas.
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación ( v éase página 21 ) en los escalones del diagrama de contactos utilizando un elemento gráfico de . Sintaxis de las asignaciones de tablas de palabras, palabras dobles y coma flotante: :=
[Op1 := Op2] Op1 toma el valor de Op2
En esta tabla se muestra la información de los operandos: Tabla de palabras
%MWi:L, %SWi:L
%MWi:L, %SWi:L, valor entero inmediato, %MWi, %KWi, %IW, %QW, %SWi, %BLK.x
Tablas de palabras dobles
%MDi:L
Valor entero inmediato,
Tablas de palabras flotantes
%MFi:L
%MDi, %KDi,%MDi:L, %KDi:L
Valor de coma flotante inmediato, %MFi, %KFi, %MFi:L, %KFi:L
Longitud de la tabla (máximo 255).
La abreviatura %BLK.x (por ejemplo, R3.I) se utiliza para describir cualquier palabra del bloque de funciones. 116
EIO0000001477 12/2016
Instrucciones
Ejemplos de asignaciones de tablas de palabras: 0
LD 1 [%MW0:10:=100]
1
LD %I0.0 [%MW0:10:=%MW11]
2
LDR %I0.3 [%MW10:20:=%KW20:20]
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
EIO0000001477 12/2016
117
Instrucciones
La función SUM_ARR realiza la suma de todos los elementos de una tabla de objetos: Si la tabla se compone de palabras dobles, el resultado se presenta en forma de palabra doble. Si la tabla se compone de palabras flotantes, el resultado se presenta en forma de palabra flotante.
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de ) en los escalones del lista de instrucciones e instrucciones de asignación ( v éase página 21 diagrama de contactos utilizando un elemento gráfico de . Sintaxis de la instrucción de suma en tabla: Res:=SUM_ARR(Tab)
Parámetros de la instrucción de suma en tabla: Tablas de palabras dobles
%MDi
%MDi:L,%KDi:L
Tablas de palabras flotantes
%MFi
%MFi:L,%KFi:L
Longitud de la tabla (máximo 255).
Cuando el resultado no se encuentra dentro del rango válido de formato de palabra doble según el operando de la tabla, el bit de sistema %S18 se establece en 1.
Ejemplo de función de suma: 0
LD %I0.2 [%MD5:=SUM_ARR(%MD3:1)]
1
LD 1 [%MD5:=SUM_ARR(%KD5:2)]
2
LD 1 [%MF2:=SUM_ARR(%MF8:5)]
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
118
EIO0000001477 12/2016
Instrucciones
%MD4:=SUM_ARR(%MD30:4)
Donde %MD30= 10, %MD32= 20, %MD34= 30, %MD36= 40 Por tanto, %MD4:= 10 + 20 + 30 + 40
EIO0000001477 12/2016
119
Instrucciones
La función EQUAL_ARR realiza la comparación de dos tablas, elemento por elemento. Si aparece una diferencia, el rango de los primeros elementos diferentes se muestra en forma de palabra, de lo contrario, el valor mostrado es igual a -1. La comparación se realiza en la totalidad de la tabla.
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de ) en los escalones del lista de instrucciones e instrucciones de asignación ( v éase página 21 diagrama de contactos utilizando un elemento gráfico de . Sintaxis de la instrucción de comparación de tablas: Res:=EQUAL_ARR(Tab1,Tab2)
Parámetros de las instrucciones de comparación de tablas: Tablas de palabras dobles
%MWi
%MDi:L,%KDi:L
Tablas de palabras flotantes
%MWi
%MFi:L,%KFi:L
Longitud de la tabla (máximo 255).
Las tablas deben tener la misma longitud y ser del mismo tipo.
Ejemplo de función de comparación de tablas: 0
LD %I0.2 [%MW5:=EQUAL_ARR(%MD20:7,%KD0:7)]
1
LD 1 [%MW0:=EQUAL_ARR(%MD20:7,%KD0:7)]
2
LD 1 [%MF2:=SUM_ARR(%MF8:5)]
) para obtener el diagrama de Consulte el procedimiento de reversibilidad ( v éase página 18 contactos equivalente.
120
EIO0000001477 12/2016
Instrucciones
%MW5:=EQUAL_ARR(%MD30:4,%KD0:4)
Comparación de las 2 tablas: 0
%MD30=10
%KD0=10
=
1
%MD32=20
%KD2=20
=
2
%MD34=30
%KD4=60
Diferente
3
%MD36=40
%KD6=40
=
El valor de la palabra %MW5 es 2 (primer rango diferente)
EIO0000001477 12/2016
121
Instrucciones
Se proponen tres funciones de búsqueda: FIND_EQR : búsqueda de la posición en una tabla de palabras dobles o de flotantes del primer elemento igual a un valor determinado. FIND_GTR : búsqueda de la posición en una tabla de palabras dobles o de flotantes del primer elemento mayor que un valor determinado. FIND_LTR : búsqueda de la posición en una tabla de palabras dobles o de flotantes del primer elemento menor que un valor determinado. El resultado de estas instrucciones es igual al rango del primer elemento encontrado o a -1 si la búsqueda es infructuosa.
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de ) en los escalones del lista de instrucciones e instrucciones de asignación ( v éase página 21 diagrama de contactos utilizando un elemento gráfico de . Sintaxis de las instrucciones de búsqueda en tablas: Res:=Función(Tab,Val)
FIND_EQR FIND_GTR FIND_LTR
Parámetros de las instrucciones de búsqueda en tablas de palabras flotantes y palabras dobles: Tablas de palabras flotantes
%MWi
%MFi:L,%KFi:L
%MFi,%KFi
Tablas de palabras dobles
%MWi
%MDi:L,%KDi:L
%MDi,%KDi
Longitud de la tabla (máximo 255).
122
EIO0000001477 12/2016
Instrucciones
Ejemplo de función de búsqueda en tablas: 0
LD %I0.2 [%MW5:=FIND_EQR(%MD20:7,%KD0)]
1
LD %I0.3 [%MW6:=FIND_GTR(%MD20:7,%KD0)]
2
LD 1 [%MW7:=FIND_LTR(%MF40:5,%KF4)]
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
%MW5:=FIND_EQR(%MD30:4,%KD0)
Búsqueda de la posición de la primera palabra doble = %KD0=30 en la tabla:
0
%MD30=10
-
1
%MD32=20
-
2
%MD34=30
Valor (val), rango
3
%MD36=40
-
EIO0000001477 12/2016
123
Instrucciones
Se proponen dos funciones de búsqueda: MAX_ARR: búsqueda del valor máximo en una tabla de palabras dobles y de flotantes. MIN_ARR: búsqueda del valor mínimo en una tabla de palabras dobles y de flotantes. El resultado de estas instrucciones es igual al valor máximo (o mínimo) encontrado en la tabla.
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación ( v éase página 21 ) en los escalones del diagrama de contactos utilizando un elemento gráfico de . Sintaxis de las instrucciones de búsqueda de valores máximos y mínimos en tablas: Result:=Function(Tab)
MAX_ARR MIN_ARR
Parámetros de las instrucciones de búsqueda de valores máximos y mínimos en tablas: Tablas de palabras dobles
%MDi
%MDn:L,%KDn:L
Tablas de palabras flotantes
%MFi
%MFn:L,%KFn:L
Indicador de instancia de objeto para la variable de memoria. Índice de memoria de la tabla que indica la dirección de base para la búsqueda. Número de posiciones que deben considerarse en una búsqueda, incluido el índice de la dirección de base (el valor máximo de L es 255).
En L se incluyen sólo las direcciones que no se superponen durante la búsqueda. Para ) . obtener más información, consulte Posibilidad de solapamiento entre objetos ( v éase página 40
Ejemplo de función de búsqueda en tablas:
124
0
LD %I0.2 [%MD0:=MIN_ARR(%MD20:7)]
1
LD 1 [%MF8:=MIN_ARR(%MF40:5)]
EIO0000001477 12/2016
Instrucciones
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
EIO0000001477 12/2016
125
Instrucciones
Esta función OCCUR_ARR realiza una búsqueda en una tabla de palabras dobles o de flotantes del número de elementos iguales a un valor determinado.
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación ( v éase página 21 ) en los escalones del diagrama de contactos utilizando un elemento gráfico de . Sintaxis de las instrucciones de búsqueda de valores máximos y mínimos en tablas: Res:=Función(Tab,Val)
OCCUR_ARR
Parámetros de las instrucciones de búsqueda de valores máximos y mínimos en tablas: Tablas de palabras dobles
%MWi
%MDi:L,%KDi:L
%MDi,%KDi
Tablas de palabras flotantes
%MFi
%MFi:L,%KFi:L
%MFi,%KFi
Longitud de la tabla (máximo 255).
Ejemplo de número de apariciones: 0
LD %I0.3 [%MW5:=OCCUR_ARR(%MF20:7,%KF0)]
1
LD %I0.2 [%MW5:=OCCUR_ARR(%MD20:7,%MD1)]
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
126
EIO0000001477 12/2016
Instrucciones
Se proponen dos funciones de desplazamiento: ROL_ARR : realiza el desplazamiento circular de n posiciones desde arriba hacia abajo de los elementos de la tabla de palabras flotantes. Ilustración de las funciones de ROL_ARR
ROR_ARR: realiza el desplazamiento circular de n posiciones desde abajo hacia arriba de los
elementos de la tabla de palabras flotantes. Ilustración de las funciones de ROR_ARR
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de ) en los escalones del lista de instrucciones e instrucciones de asignación ( v éase página 21 diagrama de contactos utilizando un elemento gráfico de . Sintaxis de las instrucciones de desplazamiento circular en tablas de palabras dobles o de flotantes ROL_ARR y ROR_ARR
ROL_ARR
Función(n,Tab)
ROR_ARR
EIO0000001477 12/2016
127
Instrucciones
Parámetros de las instrucciones de desplazamiento circular en t ablas de palabras flotantes: y : Tablas de palabras flotantes
%MWi, immediate value
%MFi:L
Tablas de palabras dobles
%MWi, immediate value
%MDi:L
Longitud de la tabla (máximo 255).
Si el valor de n es negativo o nulo, no se efectuará ningún desplazamiento.
Ejemplo de función de desplazamiento circular en tablas: 0
LD %I0.2 [ROL_ARR(%KW0,%MD20:7)]
1
LD %I0.3 [ROR_ARR(2,%MD20:7)]
2
LD %I0.4 [ROR_ARR(2,%MF40:5)]
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
128
EIO0000001477 12/2016
Instrucciones
La función de clasificación SORT_ARR realiza las clasificaciones en orden ascendente o descendente de los elementos de una tabla de palabras dobles o de flotantes y almacena el resultado en la misma tabla.
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de ) en los escalones del lista de instrucciones e instrucciones de asignación ( v éase página 21 diagrama de contactos utilizando un elemento gráfico de . Sintaxis de las funciones de clasificación en tablas: Función(dirección,Tab)
SORT_ARR
El parámetro "dirección" proporciona el orden de la clasificación: Dirección > 0: la clasificación se efectúa en orden ascendente. Dirección < 0: la clasificación se efectúa en orden descendente. Dirección = 0: no se realiza ninguna clasificación. El resultado (tabla ordenada) se devuelve en el parámetro Tab ( tabla para clasificar). Parámetros de las funciones de clasificación en tablas: Tablas de palabras dobles
%MWi, immediate value
%MDi:L
Tablas de palabras flotantes
%MWi, immediate value
%MFi:L
Longitud de la tabla (máximo 255).
Ejemplo de función de clasificación en tablas: 0
LD %I0.1 [SORT_ARR(%MW20,%MF0:6)]
1
LD %I0.2 [SORT_ARR(%MW20,%MF0:6)]
2
LD %I0.3 [SORT_ARR(0,%MF40:8)]
EIO0000001477 12/2016
129
Instrucciones
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
130
EIO0000001477 12/2016
Instrucciones
La función LKUP se usa para interpolar un conjunto de datos de coma flotante de X con respecto a Y para un valor dado de X.
La función LKUP utiliza la regla de interpolación lineal, como se define en esta ecuación: (Ecuación 1)
para
, donde
;
sabiendo que los valores de
están dispuestos en orden ascendente: .
Si dos valores consecutivos Xi cualesquiera son iguales (X i=Xi+1=X), la ecuación (1) resulta en una excepción no válida. En este caso, para solucionar esta excepción se usa el algoritmo siguiente en lugar de la ecuación (1): (Ecuación 2)
para
EIO0000001477 12/2016
, donde
.
131
Instrucciones
Este gráfico muestra la regla de interpolación lineal descrita anteriormente:
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación ( v éase página 21 ) en los escalones del diagrama de contactos utilizando un elemento gráfico de . La función LKUP usa tres operandos, dos de los cuales son atributos de función, tal como se describe en esta tabla:
[Op1: = LKUP(Op2,Op3)]
132
%MWi
%MF0
Valor entero, %MWi,or %KWi
EIO0000001477 12/2016
Instrucciones
Op1 es la palabra de memoria que contiene la variable de salida de la función de interpolación. En función del valor de Op1, puede saber si la interpolación se ha realizado correctamente o no, y qué es lo que puede haber causado un fallo, como se explica en esta tabla: %MWi)
0
Interpolación correcta
1
Se ha detectado un error de interpolación: matriz incorrecta, X m < Xm-1
2
Se ha detectado un error de interpolación: Op2 fuera de rango, X < X 1
4
Se ha detectado un error de interpolación: Op2 fuera de rango, X > X m
8
Tamaño no válido de la matriz de datos: Op3 se define como número impar o bien Op3 < 6.
Op1 no contiene el valor (Y) de interpolación calculado. Para un valor dado (X), el resultado ) . de la interpolación (Y) está contenido en %MF2 de la matriz Op3 ( v éase página 133
Op2 es la variable de coma flotante ( %MF0 de la matriz de coma flotante de Op3) que contiene el valor (X) definido por el usuario para el que se va a calcular el valor (Y) interpolado. Rango válido para Op2:
.
Op3 establece el tamaño (Op3 / 2) de la matriz de coma flotante en la que se almacenan los pares de datos (Xi,Yi). Los datos Xi e Yi se almacenan en objetos de coma flotante con índices pares, empezando por %MF4 (observe que los objetos de coma flotante %MF0 y %MF2 se reservan para la consigna del usuario X y el valor Y interpolado, respectivamente). Dada una matriz de (m) pares de datos (Xi,Yi), el índice superior (u) de la matriz de coma flotante (%MFu) se establece mediante las relaciones siguientes:
EIO0000001477 12/2016
(Ecuación 3) (Ecuación 4)
133
Instrucciones
La matriz de coma flotante Op3 ( %MFi) presenta una estructura similar a la de este ejemplo (donde Op3=8):
%MF0
(X1)
(X2)
(X3)
%MF4
%MF8
%MF12
%MF2
%MF6
%MF10
%MF14
(Y1)
(Y2)
(Y3) (Op3=8)
Como resultado de la estructura de la matriz de coma flotante anterior, Op3 debe cumplir los dos requisitos siguientes; de lo contrario, se activará un error en la función LKUP: Op3 es un número par y Op3 ≥ 6 (ya que debe haber, al menos, dos puntos de datos para que pueda haber interpolación lineal).
Las operaciones de interpolación se realizan de la forma siguiente: 0
LD %I0.2 [%MW20:=LKUP(%MF0,%KW1)]
1
LD %I0.3 [%MW22:=LKUP(%MF0,10)]
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
Uso de una función de interpolación LKUP: [%MW20:=LKUP(%MF0,10)]
En este ejemplo: %MW20 es Op1 (la variable de salida). %MF0 es el valor (X) definido por el usuario cuyo valor (Y) correspondiente se debe calcular mediante interpolación lineal. %MF2 almacena el valor (Y) calculado resultante de la interpolación lineal. explicada anteriormente). Establece el tamaño de 10 es Op3 (calculado mediante la ecuación 3 la matriz de coma flotante. El elemento más alto de la serie %MFu, donde u=18 se calcula mediante la ecuación 4 descrita anteriormente.
134
EIO0000001477 12/2016
Instrucciones
Existen cuatro pares de puntos de datos almacenados en la matriz Op3 [ %MF4,...%MF18 ]: %MF4 contiene X 1,%MF6 contiene Y 1. %MF8 contiene X 2,%MF10 contiene Y2. %MF12 contiene X3,%MF14 contiene Y3. %MF16 contiene X4,%MF18 contiene Y4.
EIO0000001477 12/2016
135
Instrucciones
La función MEAN permite calcular la media de un número determinado de valores de una tabla de coma flotante.
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación ( v éase página 21 ) en los escalones del diagrama de contactos utilizando un elemento gráfico de . Sintaxis de la función de cálculo de la media de una tabla de coma flotante: Resultado=Función(Op1)
MEAN
Parámetros de la función de cálculo para un número L determinado (máximo 255) de valores de una tabla de comas flotantes:
%MFi:L, %KFi:L
%MFi
Ejemplo de función de media: 0
LD %I3.2 [%MF0:=MEAN(%MF10:5)]
) para obtener el diagrama de Consulte el procedimiento de reversibilidad ( v éase página 18 contactos equivalente.
136
EIO0000001477 12/2016
Instrucciones Instruccionessobre los objetosde E/S
En esta sección se describen las instrucciones sobre los objetos de E/S.
Esta sección contiene los siguientes apartados: Entrada incrustada digital de lectura instantánea (READ_IMM_IN)
138
Salida incrustada digital de escritura instantánea (WRITE_IMM_OUT)
140
Parámetro de bloque de funciones de lectura inmediata (READ_IMM)
142
Parámetro de bloque de funciones de escritura inmediata (WRITE_IMM)
143
EIO0000001477 12/2016
137
Instrucciones
La instrucción READ_IMM_IN lee una entrada incrustada digital durante la ejecución de una tarea y actualiza la imagen de entrada inmediatamente. Así se evita tener que esperar el siguiente tiempo de ciclo de tarea para actualizar la imagen de entrada. Esta instrucción sólo es válida para las entradas incrustadas digitales (salidas integradas en el Logic Controller).
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación ( v éase página 21 ) en los escalones del diagrama de contactos utilizando un elemento gráfico de . Para la instrucción READ_IMM_IN , utilice la sintaxis siguiente: Op1 := READ_IMM_IN(Op2)
Donde: Op1 Op2
%MWi
Almacena el código de retorno de la función (consulte la siguiente tabla).
Valor inmediato (entero)
Define el índice de entrada ( %I0.x).
%MWi %KWi
Indicador de instancia de objeto para la variable de memoria.
En esta tabla se describe el código de retorno de la función: 0
No se ha detectado ningún error.
1
La entrada declarada es mayor que la entrada máxima permitida.
2
La entrada declarada está forzada.
%MW0 := READ_IMM_IN(2)
En la ejecución de este bloque de operación, el valor actual de la entrada %I0.2 se lee y la imagen de entrada se actualiza inmediatamente. El código de retorno de la función se guarda en la palabra de memoria %MW0.
138
EIO0000001477 12/2016
Instrucciones
Ejemplo de la instrucción READ_IMM_IN :
0
LD %M0 [%MW0:=READ_IMM_IN(%MW5)]
) para obtener el diagrama de Consulte el procedimiento de reversibilidad ( v éase página 18 contactos equivalente.
EIO0000001477 12/2016
139
Instrucciones
La instrucción WRITE_IMM_OUT escribe físicamente en una salida digital incrustada inmediatamente, y el valor se lee desde la imagen de salida. Así se evita tener que esperar el siguiente tiempo de ciclo de tarea para escribir a la salida incrustada. Esta función sólo es válida para las salidas digitales incrustadas (salidas integradas en el Logic Controller).
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación ( v éase página 21 ) en los escalones del diagrama de contactos utilizando un elemento gráfico de . Para la instrucción WRITE_IMM_OUT , utilice la sintaxis siguiente: Op1 := WRITE_IMM_OUT(Op2)
Donde: Op1 Op2
%MWi
Almacena el código de retorno de la función (consulte la siguiente tabla).
Valor inmediato (entero)
Define el índice de salida ( %Q0.x).
%MWi %KWi
Indicador de instancia de objeto para la variable de memoria.
En esta tabla se describe el código de retorno de la función:
140
0
No se ha detectado ningún error.
3
La salida declarada es mayor que la salida máxima permitida.
4
La salida declarada está forzada.
5
La salida declarada se utiliza como una salida de hardware dedicada.
6
La salida declarada se utiliza como una salida de alarma.
EIO0000001477 12/2016
Instrucciones
%MW0 := WRITE_IMM_OUT(%MW5) (con %MW5 = 2)
En la ejecución de este bloque de operación, la imagen de salida %Q0.2 se escribe físicamente en la salida digital incrustada. El código de retorno de la función se guarda en la palabra de memoria %MW0.
Ejemplo de la instrucción WRITE_IMM_OUT :
0
LD %M0 [%MW0:= WRITE_IMM_OUT(%MW4)]
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
EIO0000001477 12/2016
141
Instrucciones
La instrucción READ_IMM lee un parámetro de bloque de funciones durante la ejecución de una tarea y actualiza la imagen de entrada durante el mismo ciclo. Esta función sólo está disponible para determinados parámetros de bloques de funciones. La instrucción READ_IMM lee directamente desde los registros HSC.V y HSC.P en bloques de funciones de Contador de alta velocidad ( %HSC). Para obtener más información, consulte Contador de alta velocidad (%HSC).
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación ( v éase página 21 ) en los escalones del diagrama de contactos utilizando un elemento gráfico de . Para la instrucción READ_IMM , utilice la sintaxis siguiente: READ_IMM(Op1)
Donde: Op1
%HSCx.P, %HSCx.PD, %HSCx.V, %HSCx.VD
Esta instrucción lee un parámetro de bloque de funciones dado en Op1 y actualiza el valor en la imagen de E/S y en el registro correspondiente.
Identificador de instancia de objeto del bloque de funciones.
A continuación se muestra un ejemplo de uso de la instrucción READ_IMM :
0
LD %M0 [READ_IMM(%HSC0.P)]
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente. La aplicación debe estar configurada con un nivel funcional (véase SoMachine Basic, Guía de funcionamiento) como mínimo del para utilizar la instrucción READ_IMM.
142
EIO0000001477 12/2016
Instrucciones
La instrucción WRITE_IMM escribe un parámetro de bloque de funciones durante la ejecución de una tarea y actualiza la imagen de salida durante el mismo ciclo. Esta función sólo está disponible para determinados parámetros de bloques de funciones. La instrucción WRITE_IMM escribe directamente desde los registros HSC.V y HSC.P en bloques de funciones de Contador de alta velocidad ( %HSC). Para obtener más información, consulte Contador de alta velocidad (%HSC).
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación ( v éase página 21 ) en los escalones del diagrama de contactos utilizando un elemento gráfico de . Para la instrucción WRITE_IMM , utilice la sintaxis siguiente: WRITE_IMM(Op1)
Donde: Op1
%HSCx.P, %HSCx.PD, %HSCx.V, %HSCx.VD
Esta instrucción escribe un parámetro de bloque de funciones dado en Op1 y actualiza el valor en la imagen de E/S.
Identificador de instancia de objeto del bloque de funciones.
A continuación se muestra un ejemplo de uso de la instrucción WRITE_IMM :
0
LD %M1 [WRITE_IMM(%HSC0.V)]
) para obtener el diagrama de Consulte el procedimiento de reversibilidad ( v éase página 18 contactos equivalente. La aplicación debe estar configurada con un nivel funcional como mínimo del para utilizar la instrucción WRITE_IMM.
EIO0000001477 12/2016
143
Instrucciones
144
EIO0000001477 12/2016
SoMachine Basic Objetos deE/S EIO0000001477 12/2016
Objetos deE/S
Este capítulo contiene las siguientes secciones: 4.1
Contador rápido (%FC)
146
4.2
Contador de alta velocidad (%HSC)
147
4.3
Pulso (%PLS)
148
4.4
Modulación de ancho de pulsos (%PWM)
149
EIO0000001477 12/2016
145
Objetos de E/S Contador rápido (%FC)
Consulte la Guía de la biblioteca de funciones avanzadas de su controlador.
146
EIO0000001477 12/2016
Objetos de E/S Contador dealta velocidad(%HSC)
Consulte la Guía de la biblioteca de funciones avanzadas de su controlador.
EIO0000001477 12/2016
147
Objetos de E/S Pulso(%PLS)
Consulte la Guía de la biblioteca de funciones avanzadas de su controlador.
148
EIO0000001477 12/2016
Objetos de E/S Modulaciónde ancho depulsos (%PWM)
Consulte la Guía de la biblioteca de funciones avanzadas de su controlador.
EIO0000001477 12/2016
149
Objetos de E/S
150
EIO0000001477 12/2016
SoMachine Basic Objetos dered EIO0000001477 12/2016
Objetos dered
Los objetos de red se utilizan para la comunicación a través de EtherNet/IP, Modbus TCP o IOScanner serie Modbus. Hay dos tipos de objeto de red para la comunicación EtherNet/IP: %QWE: Input Assembly %IWE: Output Assembly Hay dos tipos de objeto de red para la comunicación Modbus TCP: %QWM: registros de entrada %IWM: registros de salida Para IOScanner serie Modbus, se utilizan los siguientes tipos de objetos de red: %IN : entradas digitales (IOScanner) %QN : salidas digitales (IOScanner) %IWN: registros de entrada (IOScanner) %QWN: registros de salida (IOScanner) %IWNS: códigos de diagnóstico de red de IOScanner Las referencias a entradas y salidas se realizan desde el punto de vista del maestro EtherNet/IP o cliente Modbus TCP. Para obtener más información sobre cómo configurar objetos de red, consulte la guía de programación del logic controller.
EIO0000001477 12/2016
151
Objetos de red
152
EIO0000001477 12/2016
SoMachine Basic Objetos desoftware EIO0000001477 12/2016
Objetos desoftware
Este capítulo contiene las siguientes secciones: 6.1
Uso de bloques de funciones
154
6.2
Temporizador (%TM)
160
6.3
Contador (%C)
172
6.4
Mensaje (%MSG) e intercambio (EXCH)
180
6.5
Registro LIFO/FIFO (%R)
205
6.6
Drums (%DR)
214
6.7
Registro de bits de desplazamiento (%SBR)
222
6.8
Contador de pasos (%SC)
227
6.9
Fechadores (%SCH)
232
6.10
Reloj de tiempo real (%RTC)
237
6.11
PID
242
6.12
Pasos de Grafcet
243
EIO0000001477 12/2016
153
Objetos de software Usode bloques de funciones
Esta sección contiene los siguientes apartados:
154
Principios de programación del bloque de funciones
155
Añadido de un bloque de funciones
157
Configuración de un bloque de funciones
159
EIO0000001477 12/2016
Objetos de software
Un bloque de funciones es un objeto reutilizable que acepta uno o varios valores de entrada y devuelve uno o varios valores de salida. Los parámetros de los bloques de funciones no están disponibles si: su controlador no admite el bloque de funciones; el bloque de funciones no está configurado.
Para utilizar un bloque de funciones en un programa de diagrama de contactos: Inserte ( v éase página 157 ) el bloque de funciones en un escalón. Conecte las entradas y salidas según sea necesario. ) el bloque de funciones especificando los valores de sus Configure ( v éase página 159 parámetros.
Para añadir un bloque de funciones a un programa de lista de instrucciones, puede utilizar uno de los siguientes métodos: Instrucciones del bloque de funciones (por ejemplo, BLK %TM2): este método reversible de programación permite que las operaciones que se van a realizar en el bloque se lleven a cabo en un único lugar del programa. Instrucciones específicas (por ejemplo, CU %Ci). Este método no reversible permite que las operaciones que se van a realizar en las entradas del bloque de funciones se lleven a cabo en diversos lugares del programa. Por ejemplo:
1.000
CU %C1
1.074
CD %C1
1.209
R %C1
Utilice las instrucciones BLK, OUT_BLK y END_BLK para la programación reversible de los bloques de funciones: BLK: indica el principio del bloque. OUT_BLK: se emplea para conectar las salidas del bloque directamente. END_BLK: indica el final del bloque.
Se pueden colocar instrucciones de entrada y de prueba en el bloque relevante únicamente entre las instrucciones BLK y OUT_BLK (o entre BLK y END_BLK cuando no se programa OUT_BLK ). EIO0000001477 12/2016
155
Objetos de software
En este ejemplo se muestra un bloque de funciones Counter en un programa con salidas cableadas: 0
BLK %C8 LDF %I0.1 R LD %I0.1 AND %M0 CU OUT_BLK LD D AND %M1 ST %Q0.0 END_BLK
) para obtener el diagrama de Consulte el procedimiento de reversibilidad ( v éase página 18 contactos equivalente.
En este ejemplo se muestra la programación reversible de un bloque de funciones Counter sin salidas cableadas: 0
BLK %C8 LDF %I0.1 R LD %I0.2 AND %M0 CU END_BLK
1
LD AND ST
%C8.D %M1 %Q0.4
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
156
EIO0000001477 12/2016
Objetos de software
Siga el procedimiento siguiente: 1
Cree un nuevo escalón del diagrama de contactos en el área de trabajo de programación de SoMachine Basic. Consulte la Guía de funcionamiento de SoMachine Basic para obtener más detalles.
2
Haga clic en el botón de la barra de herramientas gráfica situada en la parte superior del área de trabajo de programación. : Se muestra una lista de todos los objetos de bloques de funciones disponibles (consulte la tabla siguiente).
3
Seleccione el bloque de funciones.
4
Mueva el bloque de funciones a la posición deseada en el escalón y, a continuación, haga clic para insertarlo.
En esta tabla se muestran los objetos de bloques de funciones disponibles:
Timer
LIFO/FIFO Register
Shift Bit Register
Step Counter
Counter
Fast Counter
High Speed Counter
EIO0000001477 12/2016
157
Objetos de software
Drum
Pulse
Pulse Width Modulation
Message Pulse Train Output
Para ver una lista completa de objetos PTO consulte la M221 Funciones avanzadas - Guía de la biblioteca, Bloques de funciones PTO. Bloques de funciones de comunicación Para obtener una lista de los bloques de funciones de comunicación, consulte Objetos de comunicación ( v éase página 251 ) .
158
EIO0000001477 12/2016
Objetos de software
Siga el procedimiento siguiente: 1
Haga clic en la etiqueta dentro del bloque de funciones. Aparece una dirección predeterminada en el cuadro de texto; por ejemplo, "%TM0" para un bloque de funciones Timer. Para modificar la dirección predeterminada, elimine el último dígito de la dirección (el identificador de la instancia). Aparece una lista de todas las direcciones disponibles. Seleccione la dirección que se utilizará para identificar esta instancia del bloque de funciones. Las propiedades del bloque de funciones aparecen en el centro del objeto de bloque de funciones y en la tabla , en la mitad inferior del área de trabajo de programación. Cuando lo desee, puede hacer doble clic en cualquier parte dentro del bloque de funciones para visualizar las propiedades.
2
De manera opcional, haga clic en la etiqueta dentro del bloque de funciones y escriba una breve descripción del bloque de funciones. Por ejemplo, .
3
De manera opcional, haga clic en la etiqueta dentro del bloque de funciones y comience a escribir el nombre del símbolo para asociarlo con este bloque de funciones. Aparece una lista de todos los símbolos existentes con nombres que comienzan con el carácter o caracteres que ha escrito; haga clic en el símbolo para usarlo. A fin de crear un nuevo símbolo para este bloque de funciones, escriba el nombre del símbolo para crearlo y seleccione el objeto para asociarlo con el símbolo. Consulte la Guía de funcionamiento de SoMachine Basic para o btener más información sobre el uso de símbolos.
4
Configure los parámetros disponibles de cada bloque de funciones, como se explica en el tema "Parámetros" de las descripciones de cada bloque de funciones.
Además, puede visualizar la tabla funciones en un escalón.
EIO0000001477 12/2016
haciendo doble clic en el bloque de
159
Objetos de software Temporizador (%TM)
En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones Timer.
Esta sección contiene los siguientes apartados:
160
Descripción
161
Configuración
162
TON: temporizador de retardo de conexión
164
TOF: temporizador de retardo de desconexión
167
TP: temporizador de pulso
169
Ejemplo de programación
170
EIO0000001477 12/2016
Objetos de software
El bloque de funciones Timer se utiliza para especificar un periodo de tiempo antes de hacer algo; por ejemplo, activar un evento.
En esta ilustración se muestra el bloque de funciones Timer.
El bloque de funciones Timer contiene la siguiente entrada:
Dirección (o Inicia el Timer cuando se detecta un flanco ascendente (tipos TON instrucción) de entrada o TP) o un flanco descendente (tipo TOF).
El bloque de funciones Timer contiene la siguiente salida:
Dirección de salida (%TMi.Q)
EIO0000001477 12/2016
El bit asociado %TMi.Q se establece en 1 (en función del tipo de Timer) cuando el Timer se agota.
161
Objetos de software
Para configurar los parámetros, siga el procedimiento de configuración de un bloque de funciones ( v éase página 159 ) y lea la descripción de las modalidades de asignación de memoria en la Guía de funcionamiento de SoMachine Basic. El bloque de funciones Timer contiene los parámetros siguientes:
Dirección utilizada
Si está seleccionada, esta dirección se está utilizando No actualmente en un programa.
Dirección del objeto de Timer (%TMi)
Un programa puede contener sólo un número limitado No de objetos Timer. Consulte la guía de programación de la plataforma correspondiente para saber cuál es el número máximo de temporizadores.
Símbolo
El símbolo asociado con este objeto. Para obtener más No información, consulte Definición y uso de los símbolos en la Guía de funcionamiento de SoMachine Basic.
Tipo Timer
Uno de los siguientes: Sí1 ) : Temporizador de retardo TON ( v éase página 164 de conexión (predeterminado) ) : Temporizador de retardo TOF ( v éase página 167 de desconexión ) : Temporizador de pulso TP ( v éase página 169 (monoestable)
True/False
Si no se ha seleccionado la casilla (valor Sí1 predeterminado), el valor se restablece cuando se detecta un flanco descendente del parámetro . El conteo se reinicia desde 0. Si se ha seleccionado la casilla , el temporizador retiene el valor cuando se detecta un flanco descendente del parámetro antes de que se alcance el valor . El conteo se reinicia a partir de este valor. La aplicación debe estar configurada con un nivel funcional como mínimo del para poder usar el parámetro .
162
EIO0000001477 12/2016
Objetos de software
Base de tiempo
La unidad de referencia de tiempo del temporizador. Cuanto más pequeña sea la unidad de referencia del temporizador, mayor será la precisión del temporizador: (solo para las primeras seis instancias)
Sí1
(predeterminado)
Valor preestablecido
0 - 9999. El valor predeterminado es 9.999. Sí1 Periodo del temporizador = Preajuste x Base de tiempo Retardo del temporizador = Preajuste x Base de tiempo Este valor preestablecido configurado puede leerse, probarse y modificarse con el objeto asociado %TMi.P.
Comentario
Se puede asociar un comentario con este objeto.
No
El temporizador se restablece de forma inmediata en 0 después de cualquier cambio en el valor del parámetro en modalidad online.
El bloque de funciones Timer contiene los objetos siguientes:
%TMi.P
Valor preestablecido
Consulte la descripción en la tabla Parámetros anterior.
%TMi.V
Valor actual
Palabra que aumenta de 0 al valor preestablecido %TMi.P cuando el temporizador está en funcionamiento. El programa puede leer y comprobar el valor, pero no escribir en él. Su valor puede modificarse en una tabla de animación.
%TMi.Q
Salida Timer
Consulte la descripción en la tabla Salidas anterior.
EIO0000001477 12/2016
163
Objetos de software
Utilice el temporizador de tipo TON (On-Delay Timer) para controlar las acciones de retardo de conexión. Este retardo se puede programar mediante el software.
La tabla siguiente incluye una lista de casos especiales para programar el bloque de funciones de temporizador: Efecto de un reinicio en frío (%S0%=1) Fuerza el valor a 0. Establece el %TMi.Q de salida en 0. El valor preestablecido se restablece al valor definido durante la configuración. Efecto de un reinicio en caliente (%S1=1)
No tiene ningún efecto en el valor del temporizador ni en su valor preestablecido. El valor del temporizador no cambia durante un corte de alimentación.
Efecto de una detención del controlador La detención del controlador no inmoviliza el valor. Efecto de un salto del programa
Un salto sobre el bloque del temporizador no inmoviliza el temporizador. El temporizador continúa aumentando hasta que alcanza el valor preestablecido (%TMi.P). En este punto, el bit de Done (%TMi.Q) asignado a la salida Q del bloque del temporizador cambia de estado. Sin embargo, la salida asociada conectada directamente a la salida del bloque no se activa y el autómata no la explora.
Comprobación por bit %TMi.Q (bit Done)
Permite probar el bit %TMi.Q una sola vez en el programa.
Efecto de modificar el preajuste %TMi.P La modificación del valor preestablecido mediante una instrucción o un ajuste del valor con SoMachine Basic sólo tiene efecto cuando se vuelve a activar el temporizador.
164
EIO0000001477 12/2016
Objetos de software
En este diagrama se muestra el funcionamiento del tipo TON Timer.
El Timer se inicia en el flanco ascendente de la entrada IN El valor %TMi.V aumenta de 0 a %TMi.P en incrementos de una unidad por cada pulso del par ámetro de la base de tiempo TB. El bit de salida %TMi.Q se define en 1 cuando el valor ha alcanzado el valor preestablecido %TMi.P. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1. Si se detecta un flanco descendente en la entrada IN, el temporizador ( Timer) se detiene aunque el temporizador (Timer) no haya alcanzado el valor %TMi.P. %TMi.V se establece en 0
En este diagrama se muestra el funcionamiento del temporizador ( Timer) de tipo TON si se ha seleccionado la casilla .
El Timer se inicia en el flanco ascendente de la entrada IN El valor %TMi.V aumenta de 0 a %TMi.P en incrementos de una unidad por cada pulso del par ámetro de la base de tiempo TB. En el flanco descendente de la entrada IN, el temporizador ( Timer) se detiene y permanece sin cambios a la espera del siguiente flanco ascendente de la entrada IN.
EIO0000001477 12/2016
165
Objetos de software En el flanco ascendente de la entrada IN, se inicia de nuevo el temporizador ( Timer) desde el valor en el que se detuvo. El bit de salida %TMi.Q se establece en 1 cuando el valor alcanza el valor preestablecido %TMi.P. Cuando se detecta un flanco descendente en la entrada IN, si el temporizador ( Timer) ha alcanzado el valor preestablecido %TMi.P, el valor %TMi.V se establece en 0.
166
EIO0000001477 12/2016
Objetos de software
Utilice el tipo de temporizador TOF ( Off-Delay Timer ) de Timer para controlar las acciones de retraso. Este retardo se puede programar mediante el software.
En este diagrama se muestra el funcionamiento del tipo TOF Timer.
En un flanco ascendente de la entrada IN, %TMi.Q se establece en 1. El Timer se inicia en el flanco descendente de la entrada IN. El valor %TMi.V aumenta hasta el valor preestablecido %TMi.P en incrementos de una unidad por cada pulso del parámetro de la base de tiempo TB. El bit de salida %TMi.Q se restablece a 0 cuando el valor alcanza el valor preestablecido %TMi.P. En un flanco ascendente de la entrada IN, %TMi.V se establece en 0. En un flanco ascendente de la entrada IN, %TMi.V se establece en 0 aunque no se alcance el valor preestablecido.
EIO0000001477 12/2016
167
Objetos de software
En este diagrama se muestra el funcionamiento del temporizador ( Timer) de tipo TOF si se ha seleccionado la casilla .
En un flanco ascendente de la entrada IN, %TMi.Q se establece en 1. El Timer se inicia en el flanco descendente de la entrada IN. El valor %TMi.V aumenta hasta el valor preestablecido %TMi.P en incrementos de una unidad por cada pulso del parámetro de la base de tiempo TB. En el flanco ascendente de la entrada IN, el temporizador se detiene y permanece sin c ambios a la espera del siguiente flanco descendente de la entrada IN. El bit de salida %TMi.Q se restablece a 0 cuando el valor alcanza el valor preestablecido %TMi.P. En un flanco ascendente de la entrada IN, %TMi.V se establece en 0 y %TMi.Q se establece en 1.
168
EIO0000001477 12/2016
Objetos de software
El Timer de tipo TP (temporizador de pulso) se emplea para generar pulsos de una duración determinada. Este retardo se puede programar mediante el software.
En este diagrama se muestra el funcionamiento del Timer de tipo TP.
El Timer se inicia en el flanco ascendente de la entrada IN. El valor actual %TMi.V se establece en 0 si el Timer aún no se ha iniciado y %TMi.Q se establece en 1 cuando se inicia el Timer. El valor actual %TMi.V del Timer aumenta de 0 al valor preestablecido %TMi.P en incrementos de 1 unidad por pulso del parámetro de la referencia de tiempo TB. El bit de salida %TMi.Q se establece en 0 cuando el valor actual ha alcanzado el valor preestablecido %TMi.P. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a %TMi.P y la entrada IN vuelve a 0. Este Timer no se puede restablecer. Cuando %TMi.V es igual a %TMi.P y la entrada IN se establece en 0, %TMi.Q se establece en 0.
EIO0000001477 12/2016
169
Objetos de software
Los bloques de funciones Timer tienen las siguientes modalidades de funcionamiento: v éase página 164 ) (temporizador de retardo de conexión): utilizado TON (Timer On-Delay) ( para especificar un periodo de tiempo entre la activación de una entrada específica y el encendido de un sensor de salida. v éase página 167 ) (temporizador de retardo de desconexión): utilizado TOF (Timer Off-Delay) ( para especificar un periodo de tiempo entre la no detección de una salida asociada con un sensor y el apagado de la salida correspondiente. TP (Timer - Pulse) ( v éase página 169 ) (temporizador de pulso): utilizado para generar un pulso de duración determinada. Los retardos o periodos de pulsos de Timers se pueden programar y configurar desde el software.
Este ejemplo es un bloque de funciones Timer con instrucciones reversibles:
0
BLK %TM0 LD %M0 IN OUT_BLK LD Q ST %Q0.0 END_BLK
1
LD ST
[%TM0.V<400] %Q0.1
2
LD ST
[%TM0.V>=400] %Q0.2
En este ejemplo se muestra el mismo bloque de funciones Timer con instrucciones no reversibles:
170
0
LD IN
%M0 %TM0
1
LD ST
%TM0.Q %Q0.0
EIO0000001477 12/2016
Objetos de software
2
LD ST
[%TM0.V<400] %Q0.1
3
LD ST
[%TM0.V>=400] %Q0.2
) para obtener el diagrama de Consulte el procedimiento de reversibilidad ( v éase página 18 contactos equivalente.
EIO0000001477 12/2016
171
Objetos de software Contador (%C)
En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones Counter.
Esta sección contiene los siguientes apartados:
172
Descripción
173
Configuración
175
Ejemplo de programación
178
EIO0000001477 12/2016
Objetos de software
El bloque de funciones Counter cuenta los eventos de forma progresiva y regresiva. Estas 2 operaciones se pueden realizar de manera simultánea.
En esta ilustración se presenta el bloque de funciones Counter.
El bloque de funciones Counter contiene las siguientes entradas:
EIO0000001477 12/2016
Restablecer entrada (o instrucción)
Establece el contador ( %Ci.V) en 0 cuando la entrada de reseteado ( ) se ha establecido en 1.
Establecer entrada (o instrucción)
Establece el contador ( %Ci.V) en el valor preestablecido ( %Ci.P) cuando la entrada establecida ( ) se ha establecido en 1.
Conteo progresivo
Aumenta el valor del contador ( %Ci.V) en 1 en un flanco ascendente en la entrada Conteo progresivo ( ).
Conteo regresivo
Disminuye el valor del contador ( %Ci.V) en 1 en un flanco ascendente en la entrada Conteo regresivo ( ).
173
Objetos de software
El bloque de funciones
174
contiene las siguientes salidas:
Desborde de conteo regresivo
El bit asociado %Ci.E (contador vacío) se ha establecido en 1 cuando el contador alcanza el valor 0. En caso de disminución posterior, el valor del contador pasa a 9.999.
Salida predeterminada alcanzada
El bit asociado %Ci.D (conteo realizado) se ha establecido en 1 cuando %Ci.V = %Ci.P.
Desborde de conteo progresivo
El bit asociado %Ci.F=1 (contador completo), cuando %Ci.V cambia de 9999 a 0 (establecido en 1 cuando %Ci.V alcanza 0 y se resetea a 0 si el Counter continúa con el conteo progresivo).
EIO0000001477 12/2016
Objetos de software
Para configurar los parámetros, siga el procedimiento de configuración de un bloque de funciones ( v éase página 159 ) y lea la descripción de las modalidades de asignación de memoria en la Guía de funcionamiento de SoMachine Basic. El bloque de funciones Counter contiene los parámetros siguientes:
Dirección utilizada
Si está seleccionada, esta dirección se está utilizando actualmente en un programa.
Dirección de objeto
Un programa sólo puede contener un número No limitado de objetos de contador. Consulte la guía de programación de su controlador para averiguar el número de contadores.
Counter
No
Símbolo
El símbolo asociado con este objeto. Para obtener No más información, consulte Definición y uso de los símbolos en la Guía de funcionamiento de SoMachine Basic.
Valor preestablecido
Valores aceptados por el valor preestablecido [0 − Sí 9.999]. El valor predeterminado es 9.999. Este valor configurado se puede leer, probar y modificar utilizando el objeto asociado %Ci.P.
Comentario
Se puede asociar un comentario con este objeto.
No
El bloque de funciones Counter contiene los objetos siguientes:
%Ci.V
Valor actual de Counter
Esta palabra aumenta o disminuye según las entradas (o instrucciones) y (consulte la tabla de entradas ( v éase página 173 ) ). Solo se pueden leer. Puede modificarse en una tabla de animación.
%Ci.P
Valor preestablecido
Consulte la tabla de parámetros ( v éase página 175 ) . Puede modificarse en una tabla de animación.
%Ci.E
Vacío
Consulte la tabla de salidas ( v éase página 174 ) . Puede modificarse en una tabla de animación.
EIO0000001477 12/2016
175
Objetos de software
%Ci.D
Terminado
Consulte la tabla de salidas ( v éase página 174 ) . Puede modificarse en una tabla de animación.
%Ci.F
Completo
Consulte la tabla de salidas ( v éase página 174 ) . Puede modificarse en una tabla de animación.
En esta tabla se describen las principales fases de las operaciones del bloque de funciones Counter:
Restablecer
La entrada R se establece en el estado El valor actual %Ci.V se fuerza a 0. Las 1 (o se activa la instrucción R). salidas %Ci.E, %Ci.D y %Ci.F están a 0. La entrada de restablecimiento tiene prioridad.
Establecer
Si la entrada S se establece en 1 (o si El valor actual %Ci.V toma el valor %Ci.P y se activa la instrucción S) y la entrada la salida %Ci.D se establece en 1. restablecida está en el estado 0 (o la instrucción R está inactiva).
Conteo
Aparece un flanco ascendente en la El valor actual %Ci.V aumenta en una entrada de conteo progresivo CU (o se unidad. activa la instrucción CU). El valor actual %Ci.V es igual al valor El bit de salida "preajuste alcanzado" %Ci.D preestablecido %Ci.P. cambia a 1. El valor actual %Ci.V cambia de 9999 El bit de salida %Ci.F (desborde de conteo a 0. progresivo) cambia a 1.
Conteo regresivo
176
Si el Counter continúa con el conteo progresivo.
El bit de salida %Ci.F (desborde de conteo progresivo) se restablece a 0.
Aparece un flanco ascendente en la entrada de conteo regresivo CD (o se activa la instrucción CD).
El valor actual %Ci.V disminuye en una unidad.
El valor actual %Ci.V cambia de 0 a 9999.
El bit de salida %Ci.E (desborde de conteo regresivo) cambia a 1.
Si el Counter continúa con el conteo regresivo.
El bit de salida %Ci.F (desborde de conteo regresivo) se restablece a 0.
EIO0000001477 12/2016
Objetos de software
En esta tabla se muestra una lista de casos de configuración/funcionamiento especiales para el bloque de funciones Counter:
Efecto de un reinicio en frío ( %S0=1) o
El valor actual %Ci.V se establece en 0. Los bits de salida %Ci.E, %Ci.D, y %Ci.F se establecen en 0. El valor preestablecido se inicializa con el valor definido durante la configuración.
Efecto de un reinicio en caliente ( %S1=1) de una detención del controlador
No tiene ningún efecto en el valor actual de Counter (%Ci.V).
Efecto de modificar el preajuste %Ci.P
La modificación del valor preestablecido mediante una instrucción o ajustándolo entra en vigor cuando la aplicación procesa el bloque (activación de una de las entradas).
El efecto de
EIO0000001477 12/2016
es el mismo que %S0=1.
177
Objetos de software
El ejemplo siguiente muestra un contador que permite contar hasta un máximo de 5.000 elementos. Cada pulso de entrada %I0.2 (cuando el bit de memoria %M0 está establecido en 1) aumenta el bloque de funciones Counter %C8 hasta su valor preestablecido final (bit %C8.D=1). El contador se restablece mediante la entrada %I0.1.
Este ejemplo es un bloque de funciones Counter con instrucciones reversibles:
0
BLK %C8 LD %I0.1 R LD %I0.2 AND %M0 CU END_BLK
1
LD ST
%C8.D %Q0.0
En este ejemplo se muestra el mismo bloque de funciones Counter con instrucciones no reversibles: 0
LD R
1
LD %I0.2 AND %M0 CU %C8
2
LD ST
%I0.1 %C8
%C8.D %Q0.0
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
Durante la configuración, deben introducirse los pará metros: En este ejemplo, el valor
178
(%Ci.P): se establece en 5.000.
EIO0000001477 12/2016
Objetos de software
Esta ilustración es un ejemplo de un bloque de funciones Counter.
En este ejemplo, %M0 es la orden de aumento (%M0 = Falso) y de disminución (%M0 = Verdadero). El contador realiza un conteo del flanco frontal de %I0.0. Si %M0 está establecido en False, en cada flanco frontal de %I0.0, %C1.V aumenta hasta el valor preestablecido %C1.P y el indicador Finalizado %C1.D cambia a TRUE. La salida %C1.D establece %M0 y cambia la instrucción en orden de disminución. En cada flanco frontal de %I0.0, %C1.V disminuirá hasta llegar a 0. El indicador Vacío (%C1.E) se enciende y restablece %M0 (orden de incremento).
EIO0000001477 12/2016
179
Objetos de software Mensaje(%MSG) e intercambio(EXCH)
En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones Message.
Esta sección contiene los siguientes apartados:
180
Descripción general
181
Descripción
183
Configuración
187
Ejemplo de programación
192
Ejemplos de ASCII
194
Peticiones y ejemplos estándar Modbus
196
EIO0000001477 12/2016
Objetos de software
Un controlador lógico puede configurarse para comunicarse en el protocolo Modbus o puede enviar o recibir mensajes en modalidad de caracteres (ASCII). SoMachine Basic ofrece las siguientes funciones para este tipo de comunicaciones: (EXCH) para transmitir/recibir mensajes. Instrucción de Bloque de funciones Message (%MSG ) para controlar los intercambios de datos. Cuando se procesa una instrucción de el controlador lógico utiliza el protocolo configurado para el puerto especificado. A cada puerto de comunicación se le puede asignar un protocolo distinto. Es posible acceder a los puertos de comunicación agregando el número de puerto a la instrucción de (EXCH1, EXCH2) o el bloque de funciones Message (%MSG1, %MSG2). Los controladores lógicos implementan mensajes Modbus TCP en la red Ethernet utilizando la instrucción EXCH3 y el bloque de funciones %MSG3. En esta tabla se muestra la instrucción de y el bloque de funciones Message que permiten acceder a los puertos de comunicación del controlador: 2 líneas serie 1 línea serie y 1 Ethernet
EXCH1
%MSG1
EXCH2
%MSG2
EXCH1
%MSG1
EXCH3
%MSG3
La instrucción de permite a un controlador lógico enviar o recibir información dirigida a dispositivos ASCII o Modbus o procedente de ellos. El usuario define una tabla de palabras (%MWi:L) que contiene la información de control y los datos que se enviarán o recibirán. Consulte Configuración de la tabla de transmisión ( v éase página 188 ) . El intercambio de mensajes se realiza mediante la instrucción de .
A continuación, se muestra el formato de la instrucción de
:
[EXCHx %MWi:L]
Donde: x = número de puerto; L = número total de palabras de la tabla de palabras. El controlador lógico debe finalizar el intercambio desde la primera instrucción de antes de que se pueda iniciar una segunda instrucción de . Se debe utilizar el bloque de funciones Message cuando se envíen varios mensajes. EIO0000001477 12/2016
181
Objetos de software
El protocolo ASCII proporciona al Logic Controller un protocolo de modalidad de caracteres simple que permite transmitir o recibir datos mediante un dispositivo simple. Este protocolo se admite mediante la instrucción de y se controla mediante el bloque de funciones Message . Pueden utilizarse los tres tipos de comunicaciones siguientes con el protocolo ASCII: Solo transmisión Transmisión/recepción Solo recepción
Si se trata de una conexión serie, el protocolo Modbus es un protocolo maestro/esclavo que permite a un único maestro solicitar respuestas de los esclavos o realizar acciones dependiendo de las peticiones. En Ethernet, diversos maestros (clientes) pueden intercambiar con un esclavo (servidor). Cada esclavo debe tener una dirección exclusiva. El maestro puede dirigirse a los esclavos individuales o iniciar un mensaje de difusión para todos los esclavos. Los esclavos devuelven un mensaje (respuesta) a las peticiones que se les envían individualmente. No se devuelven respuestas a las peticiones de difusión del maestro. La modalidad maestro Modbus permite al controlador enviar una petición Modbus a un esclavo y esperar una respuesta. La modalidad maestro Modbus sólo se admite a través de la instrucción de . La modalidad maestro Modbus admite Modbus ASCII y Modbus RTU. La modalidad esclavo Modbus permite al controlador responder a las peticiones Modbus estándar procedentes de un maestro Modbus. Para obtener información detallada sobre el protocolo Modbus, consulte el documento Protocolo de aplicación Modbus que está disponible en http://www.modbus.org .
El protocolo Modbus admite dos capas de conexión de datos de los formatos del modelo OSI: ASCII y RTU. Cada uno está definido mediante la implementación de la capa física: ASCII utiliza 7 bits de datos y RTU utiliza 8 bits de datos. Cuando se utiliza la modalidad Modbus ASCII, cada byte del mensaje se envía como dos caracteres ASCII. La trama Modbus ASCII comienza con un carácter inicial (':') y finaliza con dos caracteres finales (CR y LF). El carácter de final de trama está predeterminado en 0x0A (LF). El valor de comprobación de la trama Modbus ASCII es un complemento a dos simple de la trama, excluyendo los caracteres inicial y final. La modalidad Modbus RTU no vuelve a formatear el mensaje antes de enviarlo; sin embargo, utiliza una modalidad de cálculo de suma de comprobación diferente, especificado como CRC. La capa de conexión de datos de Modbus tiene las limitaciones siguientes: Dirección 1-247 Bits: 128 bits previa petición Palabras: 125 palabras de 16 bits previa petición 182
EIO0000001477 12/2016
Objetos de software
El Message bloque de funciones gestiona el intercambio de datos. Tiene tres funciones: Comprobación de errores de comunicación: La comprobación de errores verifica el tamaño de cada tabla de y la validez del intercambio en relación con la configuración. Coordinación de varios mensajes: Para garantizar la coordinación cuando se envían varios mensajes, el bloque de funciones Message proporciona la información necesaria para determinar el momento en el que ha finalizado el mensaje anterior. Transmisión de mensajes prioritarios: El Message bloque de funciones permite que la transmisión del mensaje en curso se detenga para permitir el envío inmediato de un mensaje urgente. La programación del bloque de funciones Message es opcional. Cuando se detectan errores, los códigos se escriben en las palabras de sistema %SW63, %SW64, y %SW65 para los bloques de intercambio EXCH1, EXCH2 y EXCH3, respectivamente. Para obtener más información, consulte la Guía de programación del controlador.
En esta ilustración se presenta el bloque de funciones Message:
EIO0000001477 12/2016
183
Objetos de software
El bloque de funciones Message contiene la siguiente entrada:
Restablecer entrada Establecido en 1: reinicializa la comunicación: (%MSGx.R) La salida de Comunicación finalizada (%MSGx.D) se establece en 1
La salida de Error de comunicación detectado (%MSG.E) se establece en 0
Se establece un error en cualquier bloque de funciones activo (%READ_VAR, %WRITE_VAR, etc.).
En un puerto de comunicación sólo puede estar activo un bloque de funciones Message, una instrucción EXCH o un bloque de funciones de comunicación a la vez durante un ciclo de tarea maestra. Si intenta utilizar varios bloques de funciones de comunicación, MSG o instrucciones EXCH a la vez en el mismo puerto de comunicación, los bloques de funciones devuelven un código de error. Por consiguiente, verifique que no hay ningún intercambio activo (%MSGx.D es TRUE) en curso en un puerto de comunicación antes de iniciar un bloque de funciones de comunicación, bloque de funciones Message o instrucción EXCH. Verifique también que el IOScanner no esté activo en el puerto de comunicación. El IOScanner no actualiza las salidas del bloque de funciones . Por consiguiente, el bit %MSG.D es inadecuado para la función del %MSG IOScanner.
El bloque de funciones Message contiene las siguientes salidas:
Comunicación finalizada (%MSGx.D)
Estado 1: Final de la transmisión (si hay transmisión) Final de la recepción (carácter final recibido) Error Restablecimiento del bloque Estado 0: petición en curso
Error de comunicación detectado (%MSGx.E)
Estado 1: Comando sin definir Tabla mal configurada Carácter incorrecto recibido (velocidad, paridad, etc.) Tabla de recepción llena (no actualizada) Estado 0: longitud del mensaje correcta, conexión establecida En la tabla siguiente se indican los códigos de error que se escriben en las palabras de sistema cuando se detecta un error de comunicación.
184
EIO0000001477 12/2016
Objetos de software
En esta tabla se describen los códigos de error que se escriben en las palabras de sistema cuando se detecta un error de comunicación:
%SW63
Código de error del bloque EXCH1
Código de error EXCH1: 0: operación correcta 1: el número de bytes que se va a transmitir excede el límite (> 255) 2: tabla de envío insuficiente 3: tabla de palabras insuficiente 4: tabla de recepción desbordada 5: tiempo de inactividad transcurrido 6: envío 7: comando incorrecto en la tabla 8: puerto seleccionado no configurado/disponible 9: error de recepción: Este código de error refleja una trama de recepción incorrecta o dañada. Puede utilizarse debido a una configuración incorrecta en los parámetros físicos (por ejemplo, paridad, bits de datos, velocidad en baudios, etc.) o a una conexión física inestable que causa un empeoramiento de la señal. 10: no se puede utilizar %KW si se está recibiendo 11: offset de envío mayor que la tabla de envío 12: offset de recepción mayor que la tabla de recepción 13: procesamiento EXCH detenido por el controlador
%SW64
Código de error del bloque EXCH2
Código de error EXCH2: consulte %SW63.
EIO0000001477 12/2016
185
Objetos de software
%SW65
186
Código de error del bloque EXCH3
1-4, 6-13: consulte %SW63. (Tenga en cuenta que el código de error 5 no es válido y se sustituye por los códigos de error 109 y 122 específicos de Ethernet que se describen a continuación). A continuación, se indican los códigos de error específicos de Ethernet: 101: dirección IP incorrecta 102: sin conexión TCP 103: no hay sockets disponibles (todos los canales de conexión están ocupados). 104: no hay red. 105: no se puede alcanzar la red. 106: la red perdió la conexión durante el restablecimiento. 107: conexión cancelada por el dispositivo del mismo nivel. 108: conexión restablecida por el dispositivo del mismo nivel. 109: temporización de conexión transcurrida. 110: intento de conexión rechazado. 111: el host no funciona. 120: índice incorrecto (el dispositivo remoto no está indexado en la tabla de configuración) 121: error del sistema (MAC, chip, IP duplicada) 122: ha finalizado el tiempo de conexión del proceso de recepción tras el envío de los datos 123 - Inicio de Ethernet en curso.
EIO0000001477 12/2016
Objetos de software
Si se ha detectado un error al utilizar una instrucción de , los bits %MSGx.D y %MSGx.E se establecen en 1, la palabra del sistema %SW63 contiene el código de error para el puerto 1, y %SW64 contiene el código de error para el puerto 2. Consulte el capítulo Palabras de sistema de la Guía de programación del logic controller.
En esta tabla se describen las principales fases de las operaciones del bloque de funciones Message:
Restablecer
La entrada R se establece en el estado 1 (o se activa la instrucción R).
Se detiene la transmisión de todos los mensajes que se están transmitiendo. La salida del error de comunicación se restablece a 0. El bit de finalización se establece en 1.
Se puede enviar un mensaje nuevo. Comunicación finalizada
La salida D se establece en el estado 1.
El Logic Controller está preparado para enviar otro mensaje. Uso del bit %MSGx.D para evitar la pérdida de mensajes cuando se envían varios mensajes.
Error de comunicación detectado
La salida del error de comunicación se establece en 1: Debido a un error de programación de comunicaciones o a un error de transmisión de mensajes. Si el número de bytes definido en el bloque de datos asociado a la instrucción de (palabra 1, byte menos significativo) es mayor que 128 (+80 en formato hexadecimal por FA). Si existe algún problema al enviar un mensaje Modbus a un dispositivo Modbus. En este caso, debe comprobar el cableado y que el dispositivo de destino sea compatible con la comunicación Modbus.
Esta tabla contiene una lista de casos especiales para el funcionamiento de Message :
Efecto de un reinicio en frío ( %S0=1) o
Fuerza la reinicialización de la comunicación.
Efecto de un reinicio en caliente ( %S1=1)
No tiene ningún efecto.
Efecto de una detención del controlador
Si se está transmitiendo un mensaje, el controlador detiene la transferencia y reinicializa las salidas %MSGx.D y %MSGx.E.
EIO0000001477 12/2016
187
Objetos de software
El efecto de
es el mismo que %S0=1.
Tenga en cuenta las siguientes limitaciones: La disponibilidad (para protocolo ASCII) y el tipo del puerto 2 (consulte %SW7) solo se comprueban en el encendido o reseteado. La presencia (para protocolo Modbus) y configuración (RS-485) del puerto 2 se comprueban durante el encendido o restablecimiento. cuando SoMachine Basic está conectado. anulan los procesamientos del esclavo Modbus activo. Las instrucciones de no se repite en caso de error detectado. El procesamiento de las instrucciones de La entrada de restablecimiento (R) puede utilizarse para anular el procesamiento de recepción de la instrucción de . se configuran con un timeout en caso de protocolo Modbus. Las instrucciones de Los mensajes múltiples se controlan a través de %MSGx.D
El tamaño máximo de las tramas enviadas o recibidas es de: 250 bytes para protocolo Modbus. 256 bytes para protocolo ASCII. La tabla de palabras asociada a la instrucción de transmisión y recepción:
Tabla de control
Comando Offset de recepción
Tabla de transmisión
Byte 1 transmitido ...
consta de las tablas de control,
Longitud (transmisión/recepción) Reservado (0)
Offset de transmisión
Reservado (0)
Byte 2 transmitido ... Byte n transmitido
Byte n+1 transmitido Tabla de recepción
Byte 1 recibido ...
Byte 2 recibido ... Byte p recibido
Byte p+1 recibido
188
EIO0000001477 12/2016
Objetos de software
Además de las peticiones a los esclavos individuales, el controlador maestro Modbus puede iniciar una petición de difusión destinada a todos los esclavos. En caso de petición de difusión, el byte debe establecerse en 00, mientras que la dirección de esclavo debe establecerse en 0.
El byte contiene la longitud de la tabla de transmisión en bytes (250 máx.), sobrescrita por el número de caracteres recibidos al final de la recepción, en caso de que ésta se solicite. El byte debe contener uno de los siguientes elementos: 0: Solo transmisión 1: Envío/recepción 2: Solo recepción
El byte contiene la longitud de la tabla de transmisión en bytes (250 máx.), sobrescrita por el número de caracteres recibidos al final de la recepción, en caso de que ésta se solicite. Este parámetro es la longitud en bytes de la tabla de transmisión. Si el parámetro es igual a 0, este parámetro será igual a la longitud de la trama de transmisión. Si el parámetro no es igual a 0, no se transmitirá un byte de la tabla de transmisión (indicado por el valor de offset) y este parámetro será igual a la longitud de la propia trama más 1. El byte de , en caso de que se produzca una petición RTU de Modbus (excepto para difusión), siempre debe ser igual a 1 ( y ). Para difusión, debe ser 0. El byte contiene el rango (1 para el primer byte, 2 para el segundo byte, etc.) dentro de la tabla de transmisión del byte que se ignorará cuando se transmitan los bytes. Se utiliza para gestionar envíos asociados a valores de byte/palabra en el protocolo Modbus. Por ejemplo, si este byte contiene 3, el tercer byte se ignorará, haciendo que el cuarto byte de la tabla sea el tercero en transmitirse. El byte contiene el rango (1 para el primer byte, 2 para el segundo byte, etc.) dentro de la tabla de recepción que se agregará cuando se transmita el paquete. Se utiliza para gestionar envíos asociados a valores de byte/palabra en el protocolo Modbus. Por ejemplo, si este byte contiene 3, el tercer byte de la tabla se rellenaría con un 0 , y el tercer byte que ha recibido se introduciría en la cuarta ubicación de la tabla.
EIO0000001477 12/2016
189
Objetos de software
En modalidad de sólo transmisión, las tablas de control y transmisión de tipo %MW se rellenan antes de ejecutar la instrucción de (EXCH). En la modalidad de sólo transmisión no se requiere espacio para la recepción de caracteres. Una vez que se han enviado todos los bytes, (EXCH). %MSGx.D se establece en 1 y se puede ejecutar una nueva instrucción de En la modalidad de transmisión/recepción, las tablas de control y de transmisión se completan antes de ejecutar la instrucción de (EXCH), y deben ser de tipo %MW. Se requiere espacio para un máximo de 256 bytes de recepción al final de la tabla de transmisión. Cuando se han transmitido todos los bytes, el controlador lógico cambia a la modalidad de recepción y está preparado para recibir bytes. En la modalidad de sólo recepción, la tabla de control se rellena antes de ejecutar la instrucción de y debe ser del tipo %MW. Se requiere espacio para un máximo de 256 bytes de recepción al final de la tabla de control. El controlador lógico pasa inmediatamente a la modalidad de recepción y está preparado para recibir bytes. La recepción finaliza cuando se recibe el último byte utilizado para la trama o se llena la tabla de recepción. En este caso, aparece un código de error detectado (tabla de recepción desbordada) en las palabras de sistema %SW63 y %SW64. Si se configura un timeout diferente de cero, la recepción finaliza cuando termina el timeout. Si se selecciona un timeout de valor cero, no habrá ningún timeout de recepción. Por consiguiente, para detener la recepción, la entrada %MSGx.R deberá estar activada.
Al utilizar cualquiera de las dos modalidades (Modbus ASCII o Modbus RTU), la tabla de transmisión se completa con la petición antes de ejecutar la instrucción de (EXCH). En el momento de la ejecución, el controlador lógico determina cuál es la capa de conexión de datos y realiza todas las conversiones necesarias para procesar la transmisión y la respuesta. Los caracteres de inicio, fin y comprobación no se almacenan en las tablas de transmisión/recepción. Cuando se han transmitido todos los bytes, el controlador lógico cambia a la modalidad de recepción y está preparado para recibir bytes. La recepción finaliza de una de las formas siguientes: Se detecta un timeout en un carácter o en una trama. Los caracteres de fin de trama se reciben en modalidad ASCII. La tabla de recepción está llena. Las entradas x del contienen los datos del protocolo Modbus (codificación RTU) que se van a transmitir. Si el puerto de comunicación está configurado para Modbus ASCII, los caracteres de trama correctos se agregan a la transmisión. El primer byte contiene la dirección del dispositivo (específica o de difusión), el segundo byte contiene el código de función y el resto contiene información asociada a ese código de función. Se trata de una aplicación típica, pero que no define todas las posibilidades. No se realizará ninguna validación de los datos que se estén transmitiendo.
190
EIO0000001477 12/2016
Objetos de software
Las entradas x de los contienen los datos del protocolo Modbus (codificación RTU) que se van a recibir. Si el puerto de comunicación está configurado para Modbus ASCII, los caracteres de trama correctos se eliminan de la respuesta. El primer byte contiene la dirección del dispositivo, el segundo byte contiene el código de función (o código de respuesta) y el resto contiene información asociada a ese código de función. Se trata de una aplicación típica, pero que no define todas las posibilidades. No se realizará ninguna validación de los datos que se estén re cibiendo, salvo para la verificación de la suma de comprobación.
EIO0000001477 12/2016
191
Objetos de software
A continuación se muestran ejemplos de programación de un bloque de funciones Message.
La ejecución de la instrucción activa un bloque de funciones Message en el programa de aplicación. El mensaje se transmite si el bloque de funciones Message todavía no está activo (%MSGx.D = 1). Si se envían varios mensajes en el mismo ciclo, sólo el primer mensaje se transmite utilizando el mismo puerto. Ejemplo de transmisión de dos mensajes sucesivos en el puerto 1: 0
LD %M142 [%MW2:=16#0106] [%MW3:=0] [%MW4:=16#0106] [%MW5:=4] [%MW6:=7]
Escribe en un esclavo, en la dirección 1: valor 7 en el registro 4. [%MW2:=16#0106]: Código de comando: 01 hex, longitud de la transmisión: 06 hex [%MW3:=0]: Sin recepción ni offset de transmisión [%MW4:=16#0106]: Dirección esclavo: 01 hex, código de función: 06 hex (Escritura de registro único) [%MW5:=4]: Dirección de registro [%MW6:=7]: Valor que va a escribirse
1
LD AND [EXCH1 R
%MSG1.D %M0 %MW2:8] %M0
%MSG2.D: detecta si el puerto está ocupado o
LDR AND [EXCH1 S
%I0.0 %MSG1.D %MW2:8] %M0
–
2
no y gestiona la coordinación de múltiples mensajes en consecuencia.
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
192
EIO0000001477 12/2016
Objetos de software
Un intercambio se cancela activando la entrada (o instrucción) R. Esta entrada inicializa la comunicación y restablece la salida %MSGx.E a 0 y la salida %MSGx.D a 1. Permite reinicializar un intercambio si se detecta un error. Ejemplo de reinicialización de un intercambio: 0
BLK %MSG1 LD %M0 R END_BLK
–
) para obtener el diagrama de Consulte el procedimiento de reversibilidad ( v éase página 18 contactos equivalente.
EIO0000001477 12/2016
193
Objetos de software
Ejemplo de aplicación ASCII: 0
LD 1 [%MW10:=16#0104] [%MW11:=16#0000] [%MW12:=16#4F4B]
1
LD 1 AND %MSG2.D [EXCH2 %MW10:8]
2
LD ST END
[%MW10:=16#0104]: Código de comando: 01 hex, longitud
de la transmisión: 04 hex [%MW11:=16#0000]: 0000: nulo [%MW12:=16#4F4B]: correcto La tabla tiene 8 elementos.
%MSG2.E %Q0.0
) para obtener el diagrama de Consulte el procedimiento de reversibilidad ( v éase página 18 contactos equivalente. Use SoMachine Basic para crear un programa con tres escalones: En primer lugar, inicialice las tablas de control y de transmisión que va a utilizar para la instrucción de . En este ejemplo se configura un comando para enviar y recibir datos. La cantidad de datos a enviar se establece en 4 bytes, como se define en la aplicación, seguido por el carácter de fin de trama definido en la configuración. Los caracteres de inicio y fin no se visualizan en una tabla de animación, pues solo se muestran caracteres de datos. En cualquier caso, cuando se utilizan, estos caracteres se transmiten automáticamente o se verifican en la recepción (con %SW63 y %SW64). Los caracteres de fin definidos en la configuración se envían automáticamente al final de la trama. Por ejemplo, si ha configurado el primer carácter de fin en 10 y el segundo carácter de fin en 13, 16#0A0D (códigos ASCII, 0A = LF y 0D = CR) se envía al final de la trama.
194
A continuación, compruebe el bit de estado asociado a %MSG2 y envíe la instrucción EXCH2, solo si el puerto está preparado. Se especifica un valor de ocho palabras para la instrucción EXCH2. Existen dos palabras de control ( %MW10 y %MW11), dos palabras que se usarán para transmitir información ( %MW12 y %MW13) y cuatro palabras para recibir datos (de %MW14 a %MW17). Finalmente, el estado del error detectado del %MSG2 se detecta y almacena en el primer bit de salida de la E/S del controlador base local. Para conseguir más precisión, podría añadirse un tratamiento adicional del error utilizando %SW64.
EIO0000001477 12/2016
Objetos de software
Ejemplo de inicialización de una tabla de animación en la modalidad online:
%MW10
0104
Hexadecimal
%MW11
0000
Hexadecimal
%MW12
4F4B
Hexadecimal
%MW13
0A0D
Hexadecimal
%MW14
AL
ASCII
%MW15
OH
ASCII
%MW16
A
ASCII
Para visualizar los posibles formatos, haga clic con el botón derecho en la casilla de la tabla de animación. El último paso consiste en descargar la aplicación al controlador y ejecutarla. Inicialice una tabla de animación para animar y visualizar las palabras de %MW10 a %MW16. Esta información se intercambia con el controlador lógico y se visualiza en una tabla de animación.
EIO0000001477 12/2016
195
Objetos de software
En esta tabla se representan las peticiones 01 y 02 (01 para el bit de memoria o salida; 02 para el bit de entrada):
0
01 (transmisión/recepción)
06 (longitud de transmisión) (1)
1
03 (offset de recepción)
00 (offset de transmisión)
2
Esclavo en (de 1 a 247)
01 ó 02 (código de petición)
3
Dirección del primer bit que se leerá en el esclavo
4
N1 = Número de bits que se van a leer
5
Esclavo en (de 1 a 247)
01 ó 02 (código de respuesta)
6
00 (byte añadido por la acción offset de recepción)
N2 = Número de bytes de datos que se van a leer = [1+(N1-1)/8], donde el resultado es la parte entera de la división.
7
Valor del primer bit (valor Valor del segundo bit (si N 2>1) 00 o 01) expandido a un expandido a un byte byte
8
Valor del tercer bit (si N1>1) expandido a un byte
–
...
...
...
(N2/2)+6 (si N2 es par) (N2/2+1)+6 (si N2 es impar)
Valor del bit N 2º (si N1>1) – expandido a un byte
Este byte también recibe la longitud de la cadena transmitida tras la respuesta..
196
EIO0000001477 12/2016
Objetos de software
En esta tabla se representan las peticiones 03 y 04 (03 para la palabra de memoria o salida; 04 para la palabra de entrada):
0
01 (transmisión/recepción)
06 (longitud de transmisión) (1)
1
03 (offset de recepción)
00 (offset de transmisión)
2
Esclavo en (de 1 a 247)
03 ó 04 (código de petición)
3
Dirección de la primera palabra que se va a leer
4
N = Número de palabras que se van a leer
5
Esclavo en (de 1 a 247)
03 ó 04 (código de respuesta)
6
00 (byte añadido por la acción offset de recepción)
2*N (número de bytes leídos)
7
Primera palabra leída
8
Segunda palabra leída (si N>1)
...
...
N+6
Palabra N leída (si N>2)
Este byte también recibe la longitud de la cadena transmitida tras la respuesta..
El offset de recepción de 3 agrega un byte (valor = 0) en la tercera posición de la tabla de recepción. Esto permite un buen posicionamiento en esta tabla del número de bytes leídos y de los valores de las palabras leídas.
En esta tabla se representa la petición 05 (escriba un solo bit: salida o memoria):
0
01 (transmisión/recepción)
06 (longitud de transmisión) (1)
1
00 (offset de recepción)
00 (offset de transmisión)
Este byte también recibe la longitud de la cadena transmitida tras la respuesta.. Para asignar el valor 1 a un bit, la palabra asociada en la tabla de transmisión debe contener el valor FF00h, y 0 para asignar el valor 0 a un bit.
EIO0000001477 12/2016
197
Objetos de software
2
Esclavo en (de 1 a 247) o 0 en 05 (código de petición) caso de difusión
3
Valor que se va a escribir para el MSB de la palabra indexada 4; 0xFF o 0x00 (2).
4
Valor de bit que se va a escribir en el esclavo ( 16#0000 = Falso y 16#FF00 = Verdadero)
5
Esclavo en (de 1 a 247)
6
Dirección del bit escrito
7
Valor escrito
05 (código de respuesta)
Este byte también recibe la longitud de la cadena transmitida tras la respuesta.. Para asignar el valor 1 a un bit, la palabra asociada en la tabla de transmisión debe contener el valor FF00h, y 0 para asignar el valor 0 a un bit.
Esta petición no necesita utilizar un offset. La trama de respuesta es la misma que la de esta petición (en un caso normal).
En esta tabla se representa la petición 06 (escriba un solo bit: salida o memoria):
0
01 (transmisión/recepción)
06 (longitud de transmisión) (1)
1
00 (offset de recepción)
00 (offset de transmisión)
2
Esclavo en (de 1 a 247) o 0 en caso de difusión
06 (código de petición)
3
Dirección de la palabra que se va a escribir
4
Valor de la palabra que se va a escribir
5
Esclavo en (de 1 a 247)
6
Dirección de la palabra escrita
7
Valor escrito
06 (código de respuesta)
Este byte también recibe la longitud de la cadena transmitida tras la respuesta..
198
Esta petición no necesita utilizar un offset. La trama de respuesta es la misma que la de esta petición (en un caso normal).
EIO0000001477 12/2016
Objetos de software
En esta tabla se representa la petición 15 (escriba N bits: salida o memoria):
0
01 (transmisión/recepción)
8 + número de bytes (transmisión)
1
00 (offset de recepción)
07 (offset de transmisión)
2
Esclavo en (de 1 a 247) o 15 (código de petición) 0 en caso de difusión
3
Dirección del primer bit que se va a escribir
4
N1 = Número de bits que se van a escribir
5
00 (byte no enviado, efecto de offset)
N2 = Número de bytes de datos que se van a escribir = [1+(N1-1)/8], donde el resultado es la parte entera de la división.
6
Valor del primer byte
Valor del segundo byte
7
Valor del tercer byte
Valor del cuarto byte
...
...
...
(N2/2)+5 (si N 2 es par) (N2/2+1)+5 (si N 2 es impar)
Valor del byte N 2o
–
Esclavo en (de 1 a 247)
–
Dirección del primer bit escrito
–
Números de los bits escritos (= N 1)
15 (código de respuesta)
El offset de transmisión = 7 suprime el séptimo byte de la trama enviada. Permite también una correspondencia correcta entre los valores de las palabras en la tabla de transmisión.
EIO0000001477 12/2016
199
Objetos de software
En esta tabla se representa la petición 16:
0
01 (transmisión/recepción)
8 + (2*N) (longitud de transmisión)
1
00 (offset de recepción)
07 (offset de transmisión)
2
Esclavo en (de 1 a 247) o 0 en 16 (código de petición) caso de difusión
3
Dirección de la primera palabra que se va a escribir
4
N = Número de palabras que se van a escribir
5
00 (byte no enviado, efecto de offset)
6
Primer valor de la palabra que se va a escribir
7
Segundo valor que se va a escribir
...
...
N+5
Valores N que se van a escribir
N+6
Esclavo en (de 1 a 247)
N+7
Dirección de la primera palabra escrita
N+8
Número de palabras escritas (= N)
2*N = Número de bytes que se van a escribir
16 (código de respuesta)
El offset de transmisión = 7 suprime el séptimo byte de la trama enviada. Permite también una correspondencia correcta entre los valores de las palabras en la tabla de transmisión.
En esta tabla se representa la petición 43 (identificación del dispositivo de lectura): 0
200
LD 1 [%MW800:=16#0106] [%MW801:=16#0000] [%MW802:=16#032B] [%MW803:=16#0E01] [%MW804:=16#0000]
[%MW800:=16#0106]: encabezado Modbus estándar [%MW801:=16#0000]: ningún offset de envío y recepción [%MW802:=16#032B]: dirección de esclavo, código funcional [%MW803:=16#0E01]: tipo MEI, código de identificación de
lectura de dispositivo [%MW804:=16#0000]: ID de objeto, sin uso
EIO0000001477 12/2016
Objetos de software
En esta tabla se representa la petición 8 (diagnóstico): 0
LD 1 [%MW1000:=16#0106] [%MW1001:=16#0000] [%MW1002:=16#0308] [%MW1003:=16#0000] [%MW1004:=16#1234]
[%MW1000:=16#0106]: encabezado Modbus estándar [%MW1001:=16#0000]: ningún offset de envío y recepción [%MW1002:=16#0308]: dirección de esclavo, código funcional [%MW1003:=16#0000]: código de subfunción [%MW1004:=16#1234]: cualquier dato
La respuesta de esclavo será una copia de la petición. Esta modalidad se denomina modalidad eco o espejo.
Programa maestro: 0
LD 1 [%MW0:=16#0106] [%MW1:=16#0300] [%MW2:=16#0203] [%MW3:=16#0000] [%MW4:=16#0004]
[%MW0:=16#0106]: longitud de transmisión = 6 [%MW1:=16#0300]: offset de recepción = 3, offset de envío = 0 %MW2 a %MW4: transmisión [%MW2:=16#0203]: esclavo 2, función 3 (lectura de varias
palabras) [%MW3:=16#0000]: dirección de la primera palabra que se va a
leer en el esclavo: a dirección 0 [%MW4:=16#0004]: número de palabras que se van a leer: 4 palabras (%MW0 a %MW3) 1
LD 1 AND %MSG2.D [EXCH2 %MW0:11]
–
2
LD ST END
–
%MSG2.E %Q0.0
Programa del esclavo: 0
LD 1 [%MW0:=16#6566] [%MW1:=16#6768] [%MW2:=16#6970] [%MW3:=16#7172] END
–
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente. EIO0000001477 12/2016
201
Objetos de software
Con ayuda de SoMachine Basic, cree un programa de aplicación para el maestro y el esclavo. Para el esclavo, escriba algunas palabras de memoria para un conjunto de valores conocidos. En el maestro, se inicializa la tabla de palabras de la instrucción de para leer cuatro palabras del esclavo en la dirección Modbus 2 que comienza en la ubicación %MW0. Observe el uso del offset de recepción establecido en %MW1 del maestro Modbus. El offset de 3 añadirá un byte (valor = 0) en la tercera posición del área de recepción de la tabla. De este modo, las palabras se alinean en el maestro, de forma que se mantengan correctamente dentro de los límites de palabras. Sin este offset, cada palabra de datos se dividiría en dos palabras en el bloque de . Este offset se utiliza por comodidad. Antes de ejecutar la instrucción , la aplicación comprueba el bit de comunicación asociado a %MSG2. Por último, el estado de error de %MSG2 se detecta y almacena en el primer bit de salida de la E/S del controlador de base local. Igualmente, se podría añadir una comprobación adicional de errores mediante %SW64 para una mayor precisión. Inicialización de la tabla de animación en la modalidad online correspondiente a la parte de la tabla de recepción:
%MW5
0203
Hexadecimal
%MW6
0008
Hexadecimal
%MW7
6566
Hexadecimal
%MW8
6768
Hexadecimal
%MW9
6970
Hexadecimal
%MW10
7172
Hexadecimal
Después de descargar y configurar los controladores lógicos para que se ejecuten, abra una tabla de animación en el maestro. Examine la sección de respuesta de la tabla para comprobar que el código de respuesta sea 3 y asegurarse de que se haya leído el número de bytes correcto. En este ejemplo, las palabras leídas del esclavo (comenzando por %MW7) están correctamente alineadas con los límites de palabras del maestro.
202
EIO0000001477 12/2016
Objetos de software
Programa maestro: 0
LD 1 [%MW0:=16#010C] [%MW1:=16#0007] [%MW2:=16#0210] [%MW3:=16#0010] [%MW4:=16#0002] [%MW5:=16#0004] [%MW6:=16#6566] [%MW7:=16#6768]
transmisión: 0C hex = 12 [%MW0:=16#010C]: longitud de la tabla de transmisión: dec, de %MW2 a %MW7 [%MW1:=16#0007] [%MW2:=16#0210]: dirección del esclavo 2, escritura de palabras con el código funcional 10h [%MW3:=16#0010]: de la dirección 16 en el esclavo [%MW4:=16#0002]: escritura de 2 palabras [%MW5:=16#0004]: número de bytes que se van a escribir [%MW6:=16#6566]: valor de la primera palabra [%MW7:=16#6768]: valor de la segunda palabra
1
LD 1 AND %MSG2 %MSG2.D .D [EXCH2 %MW0:12]
–
2
LD ST END
–
%MSG MSG2.E %Q0.0
Programa del esclavo: 0
LD 1 – [%MW18:=16#FFFF] END
v éase e pá pági gina na 18 ) para Consulte el procedimiento de reversibilidad ( véas para obtener el diagrama de contactos equivalente. Con ayuda de SoMachine Basic, cree un programa de aplicación para el maestro y el esclavo. Para el esclavo, escriba una única palabra de memoria %MW18. De este modo, se asignará espacio en el esclavo para las direcciones de memoria de %MW0 a %MW18. Sin asignar el espacio, la petición Modbus intentaría escribir en ubicaciones que no existen en el esclavo.
En el maestro, se inicializa la tabla de palabras de la instrucción EXCH2 para leer cuatro bytes en el esclavo en la dirección Modbus 2 en la dirección % MW16 (10 hexadecimal). Observe el uso del offset de transmisión establecido en %MW1 de la aplicación del maestro Modbus. El offset de 7 suprimirá el byte alto en la sexta palabra (el valor 00 hexadecimal en %MW5). De esta forma, se alinean los valores de datos en la tabla de transmisión de la tabla de palabras, de modo que se mantengan correctamente dentro de los límites de palabras.
EIO0000001477 12/2016
203
Objetos de software
Antes de ejecutar la instrucción EXCH2, la aplicación comprueba el bit de comunicación asociado a %MSG2. Por último, el estado de error de %MSG2 se detecta y almacena en el primer bit de salida de la E/S del controlador de base local. Igualmente, se podría añadir una comprobación adicional de errores detectados mediante %SW64 para una mayor precisión. Inicialización de la tabla de animación en el maestro:
%MW0
0 10 C
Hexadecimal
%MW1
0 00 7
Hexadecimal
%MW2
0 21 0
Hexadecimal
%MW3
0 01 0
Hexadecimal
%MW4
0 00 2
Hexadecimal
%MW5
0 00 4
Hexadecimal
%MW6
6 56 6
Hexadecimal
%MW7
6 76 8
Hexadecimal
%MW8
0 21 0
Hexadecimal
%MW9
0 01 0
Hexadecimal
%MW10
0 00 4
Hexadecimal
Inicialización de la tabla de animación en el esclavo:
%MW16
6 56 6
Hexadecimal
%MW17
6 76 8
Hexadecimal
Después de descargar y configurar todos los controladores lógicos para que se ejecuten, abra una tabla de animación en el controlador esclavo. Los dos valores de %MW16 y %MW17 se escriben en el esclavo. En el maestro, se puede utilizar una tabla de animación para examinar la parte de la tabla de recepción de los datos de intercambio. Estos datos indican la dirección del esclavo, el código de respuesta, la primera palabra escrita y el número de palabras escritas comenzando por %MW8 en el ejemplo anterior.
204
EIO0000001477 12/2016
Objetos de software RegistroLIFO/FIFO (%R)
En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones LIFO/FIFO Register.
Esta sección contiene los siguientes apartados: Descripción
206
Configuración
208
Funcionamiento del registro LIFO
210
Funcionamiento del registro FIFO
211
Ejemplo de programación
212
EIO0000001477 12/2016
205
Objetos de software
Un bloque de funciones LIFO/FIFO Register es un bloque de memoria que puede almacenar hasta 16 palabras de 16 bits cada una de dos modos distintos: distintos: Cola (First In, First Out), conocida como FIFO. Pila (Last In, First Out), conocida como LIFO.
En esta ilustración se muestra el bloque de funciones LIFO/FIFO Register .
El bloque de funciones LIFO/FIFO Register contiene las siguientes entradas:
206
Restablecer entrada (o instrucción)
En el estado 1, inicializa el LIFO/FIFO Register.
Entrada (o instrucción) de almacenamiento
Con cada flanco ascendente almacena el contenido de la palabra asociada %Ri.I en el LIFO/FIFO Register.
Entrada (o instrucción) de recuperación
Con cada flanco ascendente, carga una palabra de datos del LIFO/FIFO Register en la palabra asociada %Ri.O.
EIO0000001477 12/2016
Objetos de software
El bloque de funciones LIFO/FIFO Register contiene las siguientes salidas:
EIO0000001477 12/2016
Salida vacía (%Ri.E)
El bit asociado %Ri.E indica que el LIFO/FIFO Register está vacío. El valor de %Ri.E puede probarse, por ejemplo, en una tabla de animación o con una instrucción.
Salida llena (%Ri.F)
El bit asociado %Ri.F indica que el LIFO/FIFO Register está lleno. El valor de %Ri.F puede probarse, por ejemplo, en una tabla de animación o con una instrucción.
207
Objetos de software
Para configurar los parámetros, siga el procedimiento de configuración de un bloque de funciones y lea la descripción de las modalidades de asignación de memoria en la Guía ( véas v éase e pá pági gina na 15 159 9 ) y de funcionamiento de SoMachine Basic. El bloque de funciones LIFO/FIFO Register contiene los parámetros siguientes:
Dire Direcc cció ión n uti utililiza zada da
Si está está sele selecc ccio iona nada da,, est esta a dir direc ecci ción ón se está está util utiliz izan ando do actualmente en un programa.
Dirección de objeto
Un programa puede contener sólo un número limitado de No objetos LIFO/FIFO Register. Consulte la guía de programación de la plataforma de hardware para saber cuál es el número máximo de registros.
LIFO/FIFO Register
Símbolo
El símbolo asociado con este objeto. Para obtener más información, consulte Definición y uso de los símbolos en la Guía de funcionamiento de SoMachine Basic.
Tipo LIFO/FIFO
(cola) o
(p (pila).
No
No
Sí
Register
Comentario
Se puede asociar un comentario con este objeto.
No
El bloque de funciones LIFO/FIFO Register contiene los objetos siguientes:
%Ri.I
LIFO/FIFO Register
palabra de entrada palabra de salida
Se puede leer, verificar y escribir. Puede modificarse en una tabla de animación.
%Ri.E
Salida vacía
Consulte la tabla anterior Salidas.
%Ri.F
Salida llena
Consulte la tabla anterior Salidas.
%Ri.O
208
Se puede leer, verificar y escribir. Puede modificarse en una tabla de animación.
LIFO/FIFO Register
EIO0000001477 12/2016
Objetos de software
En esta tabla hay una lista de casos especiales para programar el bloque de funciones LIFO/FIFO Register :
Efecto de un reinicio en frío ( %S0=1) o
Inicializa el contenido de LIFO/FIFO Register. El bit de salida %Ri.E asociado a la salida E se establece en 1.
Efecto de un reinicio en caliente ( %S1=1) o una No tiene ningún efecto en el valor actual de LIFO/FIFO detención del controlador Register ni en el estado de sus bits de salida.
El efecto de
EIO0000001477 12/2016
es el mismo que %S0=1.
209
Objetos de software
En la operación LIFO (Last In, First Out), el último elemento de datos introducido es el primero que se recupera.
En esta tabla se describe el funcionamiento de LIFO:
210
1
: Cuando se recibe una petición de almacenamiento (flanco ascendente en la entrada I o activación de la instrucción I), el contenido de la palabra de entrada %Ri.I se almacena en la parte superior de la pila (fig. a). Cuando la pila está llena (salida F=1), no es posible continuar el almacenamiento.
2
: Cuando se recibe una petición de recuperación (flanco ascendente en la entrada O o activación de la instrucción O), la palabra de datos superior (la última palabra introducida) se carga en la palabra %Ri.O (fig. b). Cuando el LIFO/FIFO Register está vacío (salida E=1), no es posible continuar la recuperación. La palabra de salida %Ri.O no se modifica y conserva su valor.
3
: – La pila se puede restablecer en cualquier momento (estado 1 en la entrada R o activación de la instrucción R). La pila está vacía después de un reseteado ( %Ri.E =1).
EIO0000001477 12/2016
Objetos de software
En la operación FIFO (First In, First Out), el primer elemento de datos introducido es el primero que se recupera.
En esta tabla se describe el funcionamiento de FIFO: 1
: Cuando se recibe una petición de almacenamiento (flanco ascendente en la entrada I o activación de la instrucción I), el contenido de la palabra de entrada %Ri.I se almacena en la parte superior de la pila (fig. a). Cuando la cola está llena (salida F=1), no es posible continuar el almacenamiento.
2
: Cuando se recibe una petición de recuperación (flanco ascendente en la entrada O o activación de la instrucción O), la palabra de datos inferior en la cola se carga en la palabra %Ri.O y los contenidos del LIFO/FIFO Register se desplazan una posición hacia abajo en la cola (fig. b). Cuando el LIFO/FIFO Register está vacío (salida E=1), no es posible continuar la recuperación. La palabra de salida %Ri.O no se modifica y conserva su valor.
3
: – La cola se puede restablecer en cualquier momento (estado 1 en la entrada R o activación de la instrucción R). La cola está vacía después de un reseteado (%Ri.E=1).
EIO0000001477 12/2016
211
Objetos de software
El siguiente ejemplo de programación muestra el contenido de una palabra de memoria (%MW34) que se carga en un LIFO/FIFO Register (%R2.I) al recibir una petición de almacenamiento (%I0.2) si LIFO/FIFO Register %R2 no está completo (%R2.F = 0). La petición de almacena miento en el LIFO/FIFO Register se realiza mediante %M1. La petición de recuperación se confirma mediante la entrada %I0.3, y %R2.O se carga en %MW20 si el registro no está vacío (%R2.E = 0).
Este ejemplo es un bloque de funciones LIFO/FIFO Register con instrucciones reversibles:
0
BLK %R2 LD %M1 I LD %I0.3 ANDN %R2.E O END_BLK
1
LD %I0.3 [%MW20:=%R2.O]
2
LD %I0.2 ANDN %R2.F [%R2.I:=%MW34] ST %M1
En este ejemplo se muestra el mismo bloque de funciones LIFO/FIFO Register con instrucciones no reversibles:
212
0
LD I
1
LD %I0.3 ANDN %R2.E O %R2
2
LD %I0.3 [%MW20:=%R2.O]
3
LD %I0.2 ANDN %R2.F [%R2.I:=%MW34] ST %M1
%M1 %R2
EIO0000001477 12/2016
Objetos de software
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
EIO0000001477 12/2016
213
Objetos de software Drums(%DR)
En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones Drum.
Esta sección contiene los siguientes apartados:
214
Descripción
215
Configuración
216
Ejemplo de programación
219
EIO0000001477 12/2016
Objetos de software
El bloque de funciones Drum funciona según un principio similar a un secuenciador Drum electromecánico, que cambia el paso según los eventos externos. En cada paso, el punto superior de una leva proporciona un comando, que es ejecutado por el controlador. En el caso de un bloque de funciones Drum, estos puntos superiores se simbolizan mediante el estado 1 para cada paso y se asignan a bits de salida %Qi.j o a bits de memoria %Mi.
En esta figura se muestra el bloque de funciones Drum en modalidad offline.
Muestra el número total de pasos configurados en el . Aparece en la modalidad offline cuando se crea un bloque. En la modalidad online, muestra el número de paso actual.
El bloque de funciones Drum contiene las siguientes entradas:
Para volver al paso 0 (o instrucción) En el estado 1, ajusta el Entrada (o instrucción) de avance
al paso 0.
En un flanco ascendente, hace que el paso y actualiza los bits de control.
avance un
El bloque de funciones Drum contiene la siguiente salida:
Salida (%DRi.F)
EIO0000001477 12/2016
Indica que el paso actual equivale al último paso definido. Se puede probar el bit asociado %DRi.F.
215
Objetos de software
Para configurar los parámetros, siga el procedimiento de configuración de un bloque de funciones ( v éase página 159 ) y lea la descripción de las modalidades de asignación de memoria en la Guía de funcionamiento de SoMachine Basic. El bloque de funciones Drum contiene los parámetros siguientes:
Dirección utilizada
Si está seleccionada, esta dirección se está utilizando actualmente en un programa.
Dirección de objeto
Un programa puede contener sólo un número No limitado de objetos Drum. Consulte la Guía de programación de su controlador para determinar el número máximo de objetos Drum.
Drum
No
Símbolo
El símbolo asociado con este objeto. Para obtener más información, consulte Definición y uso de los símbolos en la Guía de funcionamiento de SoMachine Basic.
No
Asistente Drum
Haga clic para mostrar el Asistente Drum ( v éase página 217 ) .
Sí (todos los parámetros de la ventana Asistente Drum)
Comentario
Se puede asociar un comentario con este objeto.
No
El bloque de funciones Drum contiene el siguiente objeto:
216
%DRi.S
Número del paso actual 0<=%DRi.S<=7. Palabra que se puede leer y escribir. El valor escrito debe ser un valor inmediato decimal. Cuando se escribe, el efecto se produce en la siguiente ejecución del bloque de funciones. Se puede modificar en una tabla de animación o en la modalidad online.
%DRi.F
Completo
Consulte la tabla de salidas ( v éase página 215 ) .
EIO0000001477 12/2016
Objetos de software
El bloque de funciones Drum consta de: Una matriz de datos constantes (las levas) organizada en 8 pasos (de 0 a 7) y 16 bits (estado del paso) organizada en columnas numeradas de 0 a 15. Una lista de bits de control está asociada con una salida configurada ( %Qi.j) o una palabra de memoria (%Mi). En el transcurso del paso actual, los bits de control adquieren los estados binarios definidos para este paso.
Utilice el para configurar el bloque de funciones Drum. Configure el campo con un valor entre 1 y 8, así como las salidas o los bits de memoria asociados a cada paso: del y, a continuación, haga clic en .
La configuración también se puede llevar a cabo mediante bits de memoria (%Mi).
EIO0000001477 12/2016
217
Objetos de software
Esta tabla contiene una lista de casos especiales para el funcionamiento de Drum:
218
Efectos de un reinicio en frío (%S0=1)
Restablece el Drum en el paso 0 (actualización de los bits de control).
Efecto de un reinicio en caliente (%S1=1)
Actualiza los bits de control después del paso actual.
Efecto de un salto del programa
El hecho de que el Drum ya no se explore significa que los bits de control conservan su estado más reciente.
Actualización de los bits de control
Solo ocurre cuando se produce un cambio de paso o un reinicio en frío o en caliente.
EIO0000001477 12/2016
Objetos de software
A continuación se muestra un ejemplo de programación de un Drum que está configurado de modo que ninguno de los controles está establecido en el paso 0 y los controles están establecidos para los pasos 1 a 6 de las salidas %Q0.0 a %Q0.5 respectivamente (consulte la Configuración ( v éase página 221 ) ). Las primeras 6 salidas de %Q0.0 a %Q0.5 se activan sucesivamente cada vez que la entrada %I0.1 se establece en 1. Cuando el valor de la entrada %I0.0 es alto, los siguientes valores se restablecen a 0: (%DRi.F = 0) Salida de Drum Número del paso actual ( %DRi.S = 0)
Este ejemplo es un bloque de funciones Programa del bloque de funciones de Drum:
0
BLK %DR1 LD %I0.0 R LD %I0.1 U OUT_BLK LD F ST %Q0.7 END_BLK
) para obtener el diagrama de Consulte el procedimiento de reversibilidad ( v éase página 18 contactos equivalente.
EIO0000001477 12/2016
219
Objetos de software
En este diagrama se muestra el funcionamiento de Drum:
En un flanco ascendente en la entrada U, se aumenta el paso actual. Cuando se actualiza el paso actual, se actualizan las salidas. Cuando se alcanza el último paso, la salida F se establece en 1. Cuando el último paso está activo, un flanco ascendente en la entrada U restablece el paso actual a 0.
220
EIO0000001477 12/2016
Objetos de software El valor actual (flanco ascendente) %DR0.R = 1 se establece en 0. El usuario escribe el valor del número de paso: %DR0.S = 4 El valor escrito por el usuario se actualiza en el siguiente tiempo de ejecución.
Durante la configuración se define la siguiente información: Número de pasos: 6 Estados de salida (bits de control) para cada paso de Drum:
Paso 0:
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Paso 1:
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Paso 2:
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
Paso 3:
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
Paso 4:
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
Paso 5:
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
Asignación de los bits de control:
En esta tabla se muestran las salidas asociadas de los bits de control: 0
Salida no asociada
1
%Q0.1
2
%Q0.2
3
%Q0.3
4
%Q0.4
5
%Q0.5
EIO0000001477 12/2016
221
Objetos de software Registrode bits dedesplazamiento(%SBR)
En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones Shift Bit Register .
Esta sección contiene los siguientes apartados:
222
Descripción
223
Configuración
224
Ejemplo de programación
226
EIO0000001477 12/2016
Objetos de software
El bloque de funciones Shift Bit Register proporciona un desplazamiento de bits de datos binarios hacia la izquierda o la derecha (0 o 1).
En esta ilustración se muestra el bloque de funciones Shift Bit Register:
El valor actual del Shift Bit Register se muestra en el centro del bloque de funciones: Valor decimal, por ejemplo 7 Valor binario, por ejemplo 111 Valor hexadecimal, por ejemplo 16#7
El bloque de funciones Shift Bit Register contiene las siguientes entradas:
EIO0000001477 12/2016
Restablecer entrada (o instrucción)
Cuando el parámetro de función R es 1, los bits de registro de 0 a 15 %SBRi.j se establecen en 0.
Desplazar hacia la entrada (o instrucción) izquierda
En un flanco ascendente, desplaza un bit de registro hacia la izquierda.
Desplazar hacia la entrada (o instrucción) derecha
En un flanco ascendente, desplaza un bit de registro hacia la derecha.
223
Objetos de software
Para configurar los parámetros, siga el procedimiento de configuración de un bloque de funciones ( v éase página 159 ) y lea la descripción de las modalidades de asignación de memoria en la Guía de funcionamiento de SoMachine Basic. El bloque de funciones Shift Bit Register contiene los siguientes parámetros:
Dirección utilizada
Si está seleccionada, esta dirección se está utilizando actualmente en un programa.
Dirección de objeto de
Un programa solo puede contener un número limitado de objetos de Shift Bit Register. Consulte la guía de programación de la plataforma de hardware para saber cuál es el número máximo de registros.
Símbolo
El símbolo asociado con este objeto. Para obtener más información, consulte Definición y uso de los símbolos en la Guía de funcionamiento de SoMachine Basic.
Comentario
Se puede asociar un comentario con este objeto.
El bloque de funciones Shift Bit Register contiene los siguientes objetos:
224
%SBRi
Número de registro
De 0 a 7 Puede modificarse en una tabla de animación.
%SBRi.j
Bit de registro
Los bits 0 a 15 (j = 0 a 15) del registro de desplazamiento pueden probarse mediante una instrucción de prueba y escribirse usando una instrucción de asignación.
EIO0000001477 12/2016
Objetos de software
En la siguiente ilustración se muestra un modelo de bit antes y después de una operación de desplazamiento:
Esto también es aplicable para una petición de desplazamiento de un bit a la derecha (bit 15 a bit 0) mediante la instrucción CD. El bit 0 se pierde. Si un registro de 16 bits no es adecuado, se puede utilizar el programa para mostrar en cascada diversos registros.
En esta tabla hay una lista de casos especiales para programar el bloque de funciones Shift Bit Register:
Efecto de un reinicio en frío ( %S0=1)
Establece todos los bits de la palabra de registro en 0.
Efecto de un reinicio en caliente ( %S1=1)
No tiene efecto sobre los bits de la palabra de registro.
EIO0000001477 12/2016
225
Objetos de software
El bloque de funciones Shift Bit Register proporciona un desplazamiento a la izquierda o a la derecha de bits de datos binarios (0 o 1).
En este ejemplo, un bit se desplaza hacia la izquierda cada seg undo mientras que el bit 0 asume el estado al bit 15. En instrucciones reversibles: 0
BLK %SBR0 LD %S6 CU END_BLK
1
LD ST
%SBR0.15 %SBR0.0
En instrucciones no reversibles: 0
LD CU
1
LD ST
%S6 %SBR0 %SBR0.15 %SBR0.0
) para obtener el diagrama de Consulte el procedimiento de reversibilidad ( v éase página 18 contactos equivalente.
226
EIO0000001477 12/2016
Objetos de software Contador depasos (%SC)
En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones Step Counter.
Esta sección contiene los siguientes apartados: Descripción
228
Configuración
229
Ejemplo de programación
230
EIO0000001477 12/2016
227
Objetos de software
Un bloque de funciones Step Counter permite realizar una serie de pasos a los que se pueden asignar acciones. El desplazamiento de un paso a otro depende de eventos internos o externos. Cada vez que un paso esté activo, el bit asociado (el bit de Step Counter %SCi.j) se establece en 1. Solo se puede activar un paso de un Step Counter cada vez.
Esta ilustración corresponde a un bloque de funciones Step Counter:
El bloque de funciones Step Counter contiene las siguientes entradas:
228
Restablecer entrada (o instrucción)
Cuando el parámetro de la función R es 1, se restablece el Step Counter.
Aumentar entrada (o instrucción)
En un flanco ascendente, aumenta un paso el Step Counter.
Disminuir entrada (o instrucción)
En un flanco ascendente, disminuye un paso el Step Counter.
EIO0000001477 12/2016
Objetos de software
Para configurar los parámetros, siga el procedimiento de configuración de un bloque de funciones ( v éase página 159 ) y lea la descripción de las modalidades de asignación de memoria en la Guía de funcionamiento de SoMachine Basic. El bloque de funciones Step Counter contiene los parámetros siguientes:
Dirección utilizada
Si está seleccionada, esta dirección se está utilizando actualmente en un programa.
Dirección de objetos
Un programa puede contener solamente un número limitado de objetos Step Counter. Consulte la guía de programación de la plataforma de hardware para saber cuál es el número máximo de Step Counter.
Step Counter
Símbolo
El símbolo asociado con este objeto. Para obtener más información, consulte Definición y uso de los símbolos en la Guía de funcionamiento de SoMachine Basic.
Comentario
Se puede asociar un comentario con este objeto.
El bloque de funciones Step Counter contiene el siguiente objeto:
%SCi.j
Bit de Step Counter
Los bits de Step Counter 0 a 255 (j = de 0 a 255) se pueden verificar mediante una operación lógica de carga y se pueden escribir mediante una instrucción de asignación. Puede modificarse en una tabla de animación.
Esta tabla contiene una lista de casos especiales de funcionamiento del bloque de funciones Step Counter:
Efecto de un reinicio en frío ( %S0=1)
Inicializa el Step Counter.
Efecto de un reinicio en caliente ( %S1=1)
No tiene ningún efecto sobre el Step Counter.
EIO0000001477 12/2016
229
Objetos de software
En este ejemplo se muestra un bloque de funciones Step Counter. El Step Counter 0 se reduce mediante la entrada %I0.1. El Step Counter 0 se aumenta mediante la entrada %I0.2 . El Step Counter 0 se restablece a 0 mediante la entrada %I0.3 o cuando llega al paso 3. El paso 0 controla la salida %Q0.1 , el paso 1 controla la salida %Q0.2 y el paso 2 controla la salida %Q0.3.
Este ejemplo es un bloque de funciones Step Counter con instrucciones reversibles:
0
BLK %SC0 LD %SC0.3 OR %I0.3 R LD %I0.2 CU LD %I0.1 CD END_BLK
1
LD ST
%SC0.0 %Q0.1
2
LD ST
%SC0.1 %Q0.2
3
LD ST
%SC0.2 %Q0.3
En este ejemplo se muestra un bloque de funciones Step Counter con instrucciones no reversibles:
230
0
LD OR R
%SC0.3 %I0.3 %SC0
1
LD CU
%I0.2 %SC0
2
LD CD
%I0.1 %SC0
EIO0000001477 12/2016
Objetos de software
3
LD ST
%SC0.0 %Q0.1
4
LD ST
%SC0.1 %Q0.2
5
LD ST
%SC0.2 %Q0.3
) para obtener el diagrama de Consulte el procedimiento de reversibilidad ( v éase página 18 contactos equivalente.
En este diagrama se muestra el funcionamiento del bloque de funciones Step Counter:
El paso 0 está activo, de modo que %SC0.0 se establece en 1. En el flanco ascendente de la entrada CU, el paso se incrementa y se actualizan las salidas. El paso se incrementa y se actualizan las salidas. El paso 3 está activo, de modo que la entrada se encuentra activa tras un ciclo de CPU. Cuando está activo, el paso actual se establece en 0 y la entrada de restablecimiento se establece en 0 tras un ciclo de CPU. El paso actual se incrementa en el flanco ascendente de la entrada CU. En el flanco ascendente de la entrada CD, el paso se reduce y se actualizan las salidas.
EIO0000001477 12/2016
231
Objetos de software Fechadores (%SCH)
Esta sección proporciona descripciones y directrices de programación para utilizar bloques de funciones de Schedule blocks .
Esta sección contiene los siguientes apartados:
232
Descripción
233
Programación y configuración
235
EIO0000001477 12/2016
Objetos de software
Los Schedule blocks se utilizan para controlar las acciones en un mes, día u hora predefinidos. Los Schedule blocks sólo se configuran en SoMachine Basic; no se introducen en el escalón de un programa del mismo modo que otros bloques de función. Compruebe el bit del sistema %S51 y la palabra del sistema %SW118 para confirmar que la opción Reloj de tiempo real (RTC) está instalada. La opción RTC también es necesaria para utilizar Schedule blocks.
Para configurar los parámetros, siga el procedimiento Configuración de un bloque de funciones ( v éase página 159 ) y consulte la descripción de Modalidades de asignación de memoria (véase SoMachine Basic, Guía de funcionamiento) . Los Schedule blocks presentan las siguientes funciones:
Dirección utilizada
Si está seleccionada, esta dirección se está utilizando actualmente en un programa.
Dirección de objeto Schedule
Un programa puede contener sólo un número limitado de objetos Schedule blocks. Consulte la guía de la plataforma de hardware para saber cuál es el número máximo de Schedule blocks.
blocks
Indica si el número de Schedule Si se selecciona la casilla de verificación, está blocks seleccionado está configurado configurado para ser utilizado. De lo contrario, no se utiliza. para ser utilizado. Bit de salida
Los Schedule blocks activan la asignación de salida: %Mi o %Qj.k. Esta salida se establece en 1 cuando la fecha y la hora actuales están entre el ajuste del inicio del periodo activo y el ajuste del final del periodo activo.
Día del mes para iniciar los Schedule blocks. El mes para iniciar los Schedule blocks.
Schedule blocks.
Día del mes para finalizar los Schedule blocks.
EIO0000001477 12/2016
233
Objetos de software
El mes para finalizar los Schedule blocks. El momento del día, las horas y los minutos para iniciar los Schedule blocks.
Hora: Minuto:
El momento del día, las horas y los minutos para finalizar los Schedule blocks.
Hora: Minuto:
Casillas de verificación que identifican el día de la semana para activar los Schedule blocks.
Si se selecciona la casilla de verificación, está configurado para ser utilizado. De lo contrario, no se utiliza.
Comentario
Se puede asociar un comentario con este objeto.
Los bits de la palabra de sistema %SW114 habilitan (bit establecido en 1) o deshabilitan (bit establecido en 0) el funcionamiento de cada uno de los 16 Schedule blocks. Asignación de Schedule blocks en %SW114 :
De forma predeterminada (o después de un reinicio en frío), todos los bits de esta palabra de sistema se establecen en 1. La utilización de estos bits por parte del programa es opcional.
Si se asigna la misma salida ( %Mi o %Qj.k) a varios bloques, se asignará finalmente el OR de los resultados de cada uno de los bloques a este objeto (es posible tener varios Schedule blocks para la misma salida). Por ejemplo, los fechadores %SCH0 y %SCH1 están ambos asignados a la salida %Q0.0. %SCH0 establece la salida desde las 12:00 h hasta las 13:00 h el lunes y %SCH1 establece la salida desde las 12:00 h hasta las 13:00 h el martes. Como resultado, la salida está establecida desde las 12:00 h hasta las 13:00 en lunes y martes.
234
EIO0000001477 12/2016
Objetos de software
Los Schedule blocks se utilizan para controlar las acciones en un mes, día u hora predefinidos.
En esta tabla se muestran los parámetros de ejemplo de un programa de vaporización para un mes veraniego:
Schedule blocks número 6
No
Casilla seleccionada para configurar los Schedule blocks número 6.
No
Activar salida %Q0.2
Sí
Inicia la actividad el día 21 de junio
Sí
Inicia la actividad en junio
Sí
Inicia la actividad a las 21:00
Sí
Detiene la actividad el día 21 de septiembre
Sí
Detiene la actividad en septiembre
Sí
Detiene la actividad a las 22:00
Sí
Casilla seleccionada
Realiza la actividad el lunes
Sí
Casilla no seleccionada
Sin actividad
Sí
Casilla seleccionada
Realiza la actividad el miércoles
Sí
Casilla no seleccionada
Sin actividad
Sí
Casilla seleccionada
Realiza la actividad el viernes
Sí
Casilla no seleccionada
Sin actividad
Sí
Casilla no seleccionada
Sin actividad
Sí
Casilla seleccionada
Con este programa, los Schedule blocks pueden deshabilitarse mediante un conmutador o un detector de humedad cableado en la entrada %I0.1:
0
EIO0000001477 12/2016
LD ST
%I0.1 %SW114:X6
En este ejemplo, se valida %SCH6.
235
Objetos de software
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
Este diagrama de tiempos muestra la activación de la salida %Q0.2:
236
EIO0000001477 12/2016
Objetos de software Relojde tiempo real(%RTC)
En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones RTC. La aplicación debe estar configurada con un nivel funcional como mínimo del utilizar los bloques de funciones de RTC.
para
Esta sección contiene los siguientes apartados: Descripción
238
Configuración
241
EIO0000001477 12/2016
237
Objetos de software
El bloque de funciones de RTC M221 Logic Controller.
permite leer y escribir en el Reloj de tiempo real (RTC) de
En esta ilustración se muestra el bloque de funciones de RTC.
El bloque de funciones RTC contiene las siguientes entradas:
-
238
Habilita el bloque de funciones cuando se detecta un flanco ascendente de esta entrada. En el estado 1, los valores de entrada y se leen de forma continuada para determinar la acción que se debe llevar a cabo. En el estado 0, el bloque de funciones se deshabilita y se restablecen las salidas.
EIO0000001477 12/2016
Objetos de software
RD
-
WR
-
Day
%RTCi.DAY
Día Valor predeterminado: 12 De -32767 a 32768
Month
%RTCi.MONTH
Mes Valor predeterminado: 6 De -32767 a 32768
Year
%RTCi.YEAR
Año Valor predeterminado: 2017 De -32767 a 32768
Hours
%RTCi.HOURS
Horas Valor predeterminado: 0 De -32767 a 32768
Minutes
%RTCi.MINUTES
Minutos Valor predeterminado: 0 De -32767 a 32768
Seconds
%RTCi.SECONDS
Segundos Valor predeterminado: 0 De -32767 a 32768
EIO0000001477 12/2016
Una combinación de los valores de las dos entradas determina la acción se que se va a llevar a cabo: RD = 0 y WR = 0. Ninguna acción. Las salidas Done y Error se establecen en 0. RD = 1 y WR = 0. Se lee el valor de RTC. Si se realiza correctamente, la salida Done se establece en 1 y la salida Error se establece en 0. Los objetos de entrada se actualizan de forma continuada con los valores leídos del RTC. Utilice una tabla de animación (véase SoMachine Basic, Guía de funcionamiento) para visualizar los valores de los objetos. RD = 0 y WR = 1. Cuando se detecta el flanco ascendente de WR, se actualiza el RTC utilizando los valores de objeto especificados en los parámetros de RTC asociados con este bloque de funciones (véase a continuación). Si la actualización se realiza correctamente, la salida de Done se establece en 1 y la salida de Error se establece en 0. El RTC se actualiza. Si no se realiza correctamente, la salida de Done se establece en 0 y la salida de Error se establece en 1. RD = 1 y WR = 1. No admitido. La salida de Done se establece en 0, la salida de Error se establece en 1 y la salida de ErrorId ( v éase página 240 ) se establece en 256 (lectura y escritura simultáneas).
239
Objetos de software
El bloque de funciones
contiene las siguientes salidas:
Done
%RTCi.Done
Se establece en 1 cuando las operaciones de lectura y escritura del RTC se realizan correctamente. Se establece en 0 cuando la operación de lectura o escritura no se realiza correctamente.
Error
%RTCi.Error
Se establece en 1 si se produce un error durante la ejecución. La ejecución del bloque de funciones ha finalizado. El objeto de salida ErrorId indica la causa del error.
DayOfWeek
%RTCi.DayOfWeek
Devuelve el día de la semana, calculado a partir del valor de la semana actual. Rango: de 0 a 7 0: el bloque de funciones no se ha ejecutado todavía. De 1 a 7: día de la semana.
ErrorId
%RTCi.ErrorId
Identificador del código de error. Consulte Códigos de error ( v éase página 240 ) a continuación.
A continuación se indican los códigos de error que se pueden devolver en el objeto %RTCi.ErrorId cuando la salida se establece en 1.
240
0
Sin errores
1
Error de año
2
Error de mes
3
Error de día
4
Error de semana
5
Error de hora
6
Error de minuto
7
Error de segundo
8
Error de combinación
9
Error interno de RTC
256
Lectura y escritura simultáneas
257
Actualización de RTC en curso (bit del sistema %S50 = 1)
EIO0000001477 12/2016
Objetos de software
Configure las propiedades del bloque de funciones RTC con los valores que se van a utilizar para actualizar el RTC en el logic controller. Para mostrar la página , siga uno de estos pasos: Haga doble clic en un bloque de funciones de RTC. , seleccione . En la ficha
Para configurar los parámetros, siga el procedimiento de configuración de un bloque de funciones ( v éase página 159 ) y lea la descripción de las modalidades de asignación de memoria en la Guía de funcionamiento de SoMachine Basic. La página muestra las propiedades siguientes:
EIO0000001477 12/2016
La dirección del objeto está en uso.
Si está seleccionada, esta dirección se está utilizando actualmente en un programa.
No
Dirección de objeto
%RTCi, donde i es el número de objeto.
No
RTC
Un programa puede contener sólo un número limitado de objetos RTC. Consulte la Guía de programación de su controlador para determinar el número máximo de objetos RTC.
Símbolo
El símbolo asociado con este objeto. Para obtener más información, consulte Definición y uso de los símbolos en la Guía de funcionamiento de SoMachine Basic.
Sí
Día del mes
De 1 a 31
Sí
Mes del año
De 1 a 12
Sí
Año
Igual o superior a 2000
Sí
Hora del día
De 0 a 23
Sí
Minutos de la hora
De 0 a 59
Sí
Segundos del minuto
De 0 a 59
Sí
Comentario
Se puede asociar un comentario con este objeto.
Sí
241
Objetos de software PID
La función PID se utiliza para controlar un proceso dinámico de manera continua. El propósito del control PID es mantener un proceso en ejecución tan cerca como sea posible del valor de consigna deseado. Consulte la Guía de la biblioteca de funciones avanzadas para obtener información detallada sobre el comportamiento y funcionalidades del PID y la implementación de la función PID: Modalidades de funcionamiento del PID Configuración de ajuste automático del PID Configuración estándar del PID Asistente de PID Programación del PID Parámetros del PID Papel principal e influencia de los parámetros del PID Método de ajuste de los parámetros del PID
242
EIO0000001477 12/2016
Objetos de software Pasos deGrafcet
Los objetos de paso de Grafcet (%X i ) se utilizan para identificar el estado del paso Grafcet correspondiente i de un programa.
La ventana Propiedades de paso de Grafcet muestra las siguientes propiedades: Dirección utilizada
Si se selecciona, esta dirección está en uso en un programa.
Dirección de objetos de Un programa puede contener hasta 96 objetos de paso de paso de Grafcet Grafcet.
EIO0000001477 12/2016
Símbolo
El símbolo asociado con este objeto. Para obtener más información, consulte Definición y uso de los símbolos (véase SoMachine Basic, Guía de funcionamiento) en la Guía de funcionamiento de SoMachine Basic.
Comentario
Comentario asociado con este objeto.
243
Objetos de software
244
EIO0000001477 12/2016
SoMachine Basic Objetos PTO EIO0000001477 12/2016
Objetos PTO
Este capítulo contiene las siguientes secciones: 7.1
Motion Task Table (%MT)
246
7.2
Salida de tren de pulsos (%PTO)
247
EIO0000001477 12/2016
245
Objetos PTO MotionTask Table(%MT)
Consulte la Guía de la biblioteca de funciones avanzadas de su controlador.
246
EIO0000001477 12/2016
Objetos PTO Salida detren de pulsos (%PTO)
Consulte la Guía de la biblioteca de funciones avanzadas de su controlador.
EIO0000001477 12/2016
247
Objetos PTO
248
EIO0000001477 12/2016
SoMachine Basic Objetos deaccionamiento EIO0000001477 12/2016
Objetos deaccionamiento
Los objetos de accionamiento controlan las unidades ATV y otros dispositivos configurados en el IOScanner serie Modbus. Consulte la Guía de la biblioteca de funciones avanzadas de su logic controller.
EIO0000001477 12/2016
249
Objetos de accionamiento
250
EIO0000001477 12/2016
SoMachine Basic Objetos decomunicación EIO0000001477 12/2016
Objetos decomunicación
Los bloques de funciones de comunicación se utilizan para la comunicación con dispositivos Modbus y enviar/recibir mensajes en la modalidad de caracteres (ASCII). En un puerto de comunicación sólo puede estar activo un bloque de funciones de comunicación cada vez durante un ciclo de tarea maestra. Si intenta utilizar varios bloques de funciones de comunicación o instrucciones EXCH de manera simultánea en el mismo puerto de comunicación, los bloques de funciones devuelven un código de error. Por lo tanto, antes de iniciar un bloque de funciones de comunicación o una instrucción EXCH, compruebe que no esté en proceso ningún intercambio activo (%MSGx.D es TRUE) en un puerto de comunicación.
Este capítulo contiene las siguientes secciones: 9.1
Leer datos desde un dispositivo remoto (%READ_VAR)
252
9.2
Escritura de datos en un dispositivo Modbus (%WRITE_VAR)
262
9.3
Leer y escribir datos en un dispositivo Modbus (%WRITE_READ_VAR)
270
9.4
Comunicación en una conexión ASCII (%SEND_RECV_MSG)
278
9.5
Enviar Recibir SMS (%SEND_RECV_SMS)
286
EIO0000001477 12/2016
251
Objetos de comunicación Leer datos desde un dispositivo remoto (%READ_VAR)
En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones %READ_VAR .
Esta sección contiene los siguientes apartados:
252
Descripción
253
Configuración de la función
257
Ejemplo de programación
261
EIO0000001477 12/2016
Objetos de comunicación
El bloque de funciones %READ_VAR se utiliza para leer datos desde un dispositivo remoto en Modbus SL o Modbus TCP.
En esta ilustración se muestra el bloque de funciones %READ_VAR :
El bloque de funciones %READ_VAR contiene las siguientes entradas:
EIO0000001477 12/2016
BOOL
Arranca la ejecución de bloques de funciones cuando se detecte un flanco ascendente. Si se detecta un segundo flanco ascendente durante la ejecución del bloque de funciones, se ignora y el comando en curso no se ve afectado.
BOOL
Detiene la ejecución de bloques de funciones cuando se detecte un flanco ascendente. La salida se establece en 1 y el objeto %READ_VARi.CommError contiene el código 02 hex (el intercambio se detiene cuando lo solicita un usuario).
253
Objetos de comunicación
Configurar la salida o para TRUE en el primer ciclo de tarea en ejecución no se detecta como un flanco ascendente. El bloque de funciones debe ver primero la entrada como FALSE para detectar un flanco ascendente posterior.
El bloque de funciones %READ_VAR contiene las siguientes salidas:
BOOL
Si TRUE, indica que la ejecución del bloque de funciones se completa correctamente sin errores detectados.
BOOL
Si TRUE, indica que la ejecución del bloque de funciones está en curso.
BOOL
Si TRUE, indica que la ejecución del bloque de funciones se ha cancelado con la entrada .
BOOL
Si TRUE, indica que se ha detectado un error. Detenida la ejecución de bloques de funciones. Para obtener más información sobre CommError y OperError, consulte las tablas códigos de error de comunicación ( v éase página 254 ) y códigos de error de funcionamiento ( v éase página 255 ) .
En esta tabla se describen los objetos de salida del bloque de funciones:
BYTE
Para obtener información sobre %READ_VARi.CommError, consulte la tabla Códigos de error de comunicación ( v éase página 254 ) .
DWORD
Para obtener información sobre %READ_VARi.OperError, consulte la tabla Códigos de error de funcionamiento ( v éase página 255 ) .
En esta tabla se describen los códigos de error escritos en el objeto de palabra %READ_VARi.CommError :
254
CommunicationOK
00 (0 hex.)
Intercambio correcto.
TimedOut
1 (01 hex)
Intercambio detenido porque se ha agotado el timeout.
Abort
2 (02 hex)
Parada del intercambio cuando lo solicite el usuario (entrada ).
BadAddress
03 (3 hex)
El formato de dirección es incorrecto.
BadRemoteAddr
04 (4 hex)
La dirección remota es incorrecta.
EIO0000001477 12/2016
Objetos de comunicación
BadMgtTable
05 (5 hex) hex)
El form ormato ato de de la la tab tabla la de gest gestiión es incor ncorre rect cto. o.
BadParameters
6 (06 (06 hex) hex)
Los Los par parám ámet etro ross esp espec ecíf ífic icos os son son inc incor orre rect ctos os..
ProblemSendingRq
7 (07 (07 hex) hex)
Emis Emisió ión n inco incorr rrec ecta ta de la peti petici ción ón al dest destin inat atar ario io..
RecvBufferNotAlloc
9 (09 (09 hex) hex)
El tamañ amaño o de de búf búfer er de rece recepc pció ión n es es ins insuf ufic icie ient nte. e.
SendBufferNotAlloc
10 (0A (0A hex) hex)
El tama tamaño ño de búfe búferr de de trans transmi misi sión ón es insuf insufic icie ient nte. e.
SystemResourceMissing
11 (0B (0B hex hex))
Recu Recurs rso o del del sist sistem ema a no no dis dispo poni nibl ble. e.
BadLength
14 (0 (0E hex)
La lo longit gitud es es in incorre rrecta.
ProtocolSpecificError
254 254 (FE hex) hex)
Indi Indica ca un erro errorr de prot protoco ocolo lo Mod Modbu bus. s. Para Para obt obten ener er más más información, consulte los códigos de error de funcionamiento. ( véas v éase e pá pági gina na 25 255 5 )
Refused
255 255 (FF hex) hex)
Se rech rechaz aza a el mens mensaj aje. e. Par Para a obten obtener er más más info inform rmaci ación ón,, consulte los códigos de error de funcionamiento. ( véase v éase pá pági gina na 25 255 5 ) .
Este código de retorno es significativo cuando el código de error de comunicación (objeto CommError ) tiene el valor: (correcto) 0 (00 hex) (correcto) excepción Modbus) 254 (FE hex) (código de excepción (rechazado) ado) 255 (FF hex) (rechaz En esta tabla se describen los códigos de error escritos en el objeto de palabra doble %READ_VARi.OperError :
0 (00 hex) hex) (correcto)
OperationOK
0 (0 (00000000 hex)
Intercambio co correcto.
NotProcessed
1 (00000001 hex)
La petición no se ha procesado.
BadResponse
2 (00000002 hex)
La respuesta recibida es incorrecta.
EIO0000001477 12/2016
255
Objetos de comunicación
254 (FE hex) hex) (código de excepción Modbus)
255 (FF hex) hex) (rechazado)
256
IllegalFunction
1 (00000001 hex)
El código de función recibido en la petición no es una acción autorizada para el esclavo. El estado del esclavo puede ser erróneo para procesar una petición específica.
IllegalDataAddress
2 (00000002 hex)
La di dirección de datos recibida por el esclavo no es una dirección autorizada para el esclavo.
IllegalDataValue
3 ( 00 000 00 3 he x )
El valor en el campo de datos de petición no es un valor autorizado para el esclavo.
SlaveDeviceFailure
4 (0 (00000004 hex)
El es esclavo no no lo logra re realizar un una ac acción solicitada debido a un error grave.
Acknowledge
5 (0 (00000005 hex)
El es esclavo ha ha co confirmado la la pe petición, pero las comunicaciones han superado el timeout antes de que el esclavo haya finalizado.
SlaveDeviceBusy
6 (00000006 hex)
El esclavo está ocupado procesando otro comando.
MemoryParityError
8 ( 00 000 00 8 he x )
El esclavo de detecta un un er error de de pa paridad en la memoria al intentar leer la memoria ampliada.
GatewayPathUnavailable
10 (00 (0000000A hex)
La pasarel rela está sobrec recargada o no está configurada correctamente.
GatewayTargetDeviceFailedToRespond
11 (0 (0000000B hex)
El escla clavo no no es está pr presente en en la la re red.
TargetResourceMissing
1 (00000001 hex)
El recurso del sistema de destino no está disponible.
BadLength
5 (00000005 hex)
La longitud es incorrecta.
CommChannelErr
6 (0 (00000006 hex)
Se ha detectado un error en el canal de comunicación.
BadAddr
7 (0 (00000007 hex)
La di dirección es es in incorrecta.
SystemResourceMissing
11 (0000000B hex)
Rec Recurso rso del sistema no dispo sponible.
TargetCommInactive
12 (0 (0000000C hex)
Hay un una fu función de de co comunicación de de destino inactiva.
TargetMissing
13 (0000000D hex)
No se puede establecer la comunicación con el destino.
ChannelNotConfigured
15 (0 (0000000F hex)
Vía no co configurada.
EIO0000001477 12/2016
Objetos de comunicación
Haga doble clic en el bloque de funciones para abrir la tabla de propiedades de la función (véase (véase Compact Compact Modbus Modbus SL Logic Control Controller ler M221 M221 Book, System System User User Guide) Guide) . Las propiedades de este bloque de funciones no se pueden modificar en la modalidad online. El bloque de funciones %READ_VAR tiene las propiedades siguientes:
Casilla de verificación activada/desactivada
Indica si se está utilizando la dirección.
%READ_VARi, donde i va desde 0 hasta
i es el identificador de instancia. Para conocer el
el número de objetos disponibles en este número máximo de instancias, consulte Número Logic Controller. máximo de objetos (véase Modicon Modicon M221, Logic Logic Controller, Guía de programación) . Texto de definido por el el usuario
: Serie 1 : Serie 2 : Ethernet
Este parámetro depende de la configuración de la conexión: De 1 a 247 para la dirección de esclavo de líneas serie De 1 a 16 para el índice Ethernet
EIO0000001477 12/2016
El símbolo identifica este ob objeto de de forma inequívoca. Para obtener más información, consulte la sección sobre definición y uso de símbolos de la SoMachine Basic Guía de funcionamiento (véase SoMachine SoMachine Basic, Basic, Guía de funcionamiento) . Selección de puerto. y los puertos de comunicación incorporados sólo están disponibles en algunas referencias de los controladores. Identificador del dispositivo. Para obtener más información sobre el índice Ethernet, consulte la Adición de servidores remotos (véase Modicon Modicon M221, Logic Controller, Controller, Guía de programación) .
257
Objetos de comunicación
Especificad Especificado o en unidades de 100 ms, con un valor predeterminado de 100 (10 segundo segundos). s). Un valor de 0 significa que no se ha aplicado timeout.
El timeout establece el tiempo máximo de espera de recepción de una respuesta. Si el timeout finaliza, el intercambio finaliza en error con un código de error (CommError = 01 hex). Si el sistema sistema recibe una respuesta después de la caducidad del timeout, esta respuesta se ignora. El timeout establecido en el bloque de funciones anula el valor configurado en las pantallas de configuración SoMachine Basic (Configuración de Modbus TCP (véase (véase Modico Modicon n M221, Logic Controller, Guía de programación) y y Configuración de línea serie (véase (véase Modico Modicon n M221, Logic Controller, Guía de programación) ). ).
El tipo de objetos para leer: : palabras de memoria (predeterminado) : bits de entrada : bits de salida : palabras de entrada
Los tipos de códigos de función de lectura Modbus son: : equivale al código de función 03 de Modbus : equivale al código de función 02 de Modbus : equivale al código de función 01 de Modbus : equivale al código de función 04 de Modbus
De 0 a 65.535
Dirección del primer objeto del dispositivo remoto desde donde se leen los valores.
258
De 1 a 125 para De 1 a 2000 para De 1 a 2000 para De 1 a 125 para
Número de objetos que se van a leer desde el dispositivo remoto. o
De 0 a 7999
Dirección de la tabla de palabras local ( %MW) en la que se guardan los valores leídos. Durante la lectura de bits ( %I o %Q), los bits recuperados se escriben en la tabla de palabras comenzando por la primera dirección especificada. Por ejemplo, al leer 16 bits con = 10 y = 16, el resultado se almacena en %MW10:X0 hasta %MW10:X15.
Texto definido por el usuario
Un comentario para asociar a este objeto.
EIO0000001477 12/2016
Objetos de comunicación
El bloque de funciones %READ_VAR contiene los objetos siguientes:
%READ_VARi.LINK
Selección de puerto
%READ_VARi.ID
Identifica Identificador dor del disposi dispositivo tivo remoto remoto Consulte Consulte Propiedades Propiedades ( véase v éase pág págin ina a 25 257 7 ) . Se puede leer y escribir. Se puede modificar en una tabla de animación.
%READ_VARi.TIMEOUT
Time Timeou outt del blo bloqu que e de func funcio ione ness
Cons Consul ulte te Prop Propie ieda dade dess ( véase v éase pág págin ina a 25 257 7 ) . Se puede leer y escribir. Se puede modificar en una tabla de animación.
%READ_VARi.OBJTYPE
Tipo Tipo de objeto objetoss que que se van a leer leer
Consul Consulte te Prop Propied iedade adess ( véase v éase pág págin ina a 25 257 7 ) . Se puede leer y escribir. Se puede modificar en una tabla de animación.
%READ_VARi.FIRSTOBJ
Dirección del primer objeto del Consulte Propiedades dispositivo remoto desde donde se ( véase v éase pág págin ina a 25 257 7 ) . Se puede leer y leen los valores. escribir. Se puede modificar en una tabla de animación.
%READ_VARi.QUANTITY
Número de objetos que se van a leer desde el dispositivo remoto.
Consulte Propiedades ( véase v éase pág págin ina a 25 257 7 ) . Se puede leer y escribir. Se puede modificar en una tabla de animación.
%READ_VARi.INDEXDATA
Dirección de la tabla de palabras local (%MW) en la que se guardan los valores leídos.
Consulte Propiedades ( véase v éase pág págin ina a 25 257 7 ) . Se puede leer en una tabla de animación.
%READ_VARi.COMMERROR
Códigos Códigos de error error de comuni comunicación cación Consulte Consulte los códigos códigos de error error de comunicación ( véas v éase e pá pági gina na 25 254 4 ) . Sólo lectura. Se puede leer en una tabla de animación.
%READ_VARi.OPERERROR
Códigos de error de funcionamiento
Consulte los códigos de error de funcionamiento ( véas v éase e pá pági gina na 25 255 5 ) . Sólo lectura. Se puede leer en una tabla de animación.
%READ_VARi.DONE
Ejecución completada correctamente
Consulte Salidas ( véase v éase pá pági gina na 25 254 4 ) . Sólo lectura. Se puede leer en una tabla de animación.
EIO0000001477 12/2016
Consulte Propiedades ( véase v éase pág págin ina a 25 257 7 ) . Se puede leer y escribir. Se puede modificar en una tabla de animación.
259
Objetos de comunicación
260
%READ_VARi.BUSY
La ej ejecució ción es está en en pr proce oceso
Consulte Sa Salidas ( véas v éase e pá pági gina na 25 254 4 ) . Sólo lectura. Se puede leer en una tabla de animación.
%READ_VARi.ABORTED
La ejec ejecuc ució ión n se ha canc cancel elad ado o
Cons Consul ulte te Sali Salida dass ( véas v éase e pá pági gina na 25 254 4 ) . Sólo lectura. Se puede leer en una tabla de animación.
%READ_VARi.ERROR
Se ha detectado un error
Consulte Salidas ( véas v éase e pá pági gina na 25 254 4 ) . Sólo lectura. Se puede leer en una tabla de animación.
EIO0000001477 12/2016
Objetos de comunicación
El bloque de funciones %READ_VAR se puede configurar como se muestra en este ejemplo de programación.
Este ejemplo es un bloque de funciones Bloque de funciones %READ_VAR :
0
BLK %READ_VAR0 LD %I0.0 EXECUTE LD %I0.1 ABORT OUT_BLK LD DONE ST %Q0.0 LD BUSY ST %Q0.1 LD ABORTED ST %M1 LD ERROR ST %Q0.2 END_BLK
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
EIO0000001477 12/2016
261
Objetos de comunicación Escritura de datos en undispositivo Modbus (%WRITE_VAR)
En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones %WRITE_VAR .
Esta sección contiene los siguientes apartados:
262
Descripción
263
Configuración de la función
265
Ejemplo de programación
269
EIO0000001477 12/2016
Objetos de comunicación
El bloque de funciones %WRITE_VAR se utiliza para escribir datos en un dispositivo externo utilizando el protocolo Modbus SL o Modbus TCP.
En esta ilustración se muestra el bloque de funciones %WRITE_VAR :
El bloque de funciones %WRITE_VAR contiene las siguientes entradas:
BOOL
Arranca la ejecución de bloques de funciones cuando se detecte un flanco ascendente. Si se detecta un segundo flanco ascendente durante la ejecución del bloque de funciones, se ignora y el comando en curso no se ve afectado.
BOOL
Detiene la ejecución de bloques de funciones cuando se detecte un flanco ascendente. La salida se establece en 1 y el objeto %WRITE_VARi.CommError contiene el código 02 hex (el intercambio se detiene cuando lo solicita un usuario).
Configurar la salida o para TRUE en el primer ciclo de tarea en ejecución no se detecta como un flanco ascendente. El bloque de funciones debe ver primero la entrada como FALSE para detectar un flanco ascendente posterior. EIO0000001477 12/2016
263
Objetos de comunicación
El bloque de funciones %WRITE_VAR contiene las siguientes salidas:
BOOL
Si TRUE, indica que la ejecución del bloque de funciones se completa correctamente sin errores detectados.
BOOL
Si TRUE, indica que la ejecución del bloque de funciones está en curso.
BOOL
Si TRUE, indica que la ejecución del bloque de funciones se ha cancelado con la entrada .
BOOL
Si TRUE, indica que se ha detectado un error. Detenida la ejecución de bloques de funciones. Para obtener más información sobre CommError y OperError, consulte las tablas códigos de error de comunicación ( v éase página 254 ) y códigos de error de funcionamiento ( v éase página 255 ) .
En esta tabla se describen los objetos de salida del bloque de funciones:
BYTE
Para obtener información sobre %READ_VARi.CommError, consulte la tabla Códigos de error de comunicación ( v éase página 254 ) .
DWORD
Para obtener información sobre %READ_VARi.OperError, consulte la tabla Códigos de error de funcionamiento ( v éase página 255 ) .
Consulte los códigos de error de comunicación ( v éase página 254 ) .
Consulte los códigos de error de funcionamiento ( v éase página 255 ) .
264
EIO0000001477 12/2016
Objetos de comunicación
Haga doble clic en el bloque de funciones para abrir la tabla de propiedades de la función. Las propiedades de este bloque de funciones no se pueden modificar en la modalidad online. El bloque de funciones %WRITE_VAR tiene las propiedades siguientes:
Casilla de verificación activada / desactivada
Indica si se está utilizando la dirección.
%WRITE_VARi, donde i va desde 0 hasta el número de
i es el identificador de instancia. Para
objetos disponibles en este Logic Controller.
conocer la cantidad máxima de instancias, consulte la tabla Número máximo de objetos (véase Modicon M221, Logic Controller, Guía de programación) .
Texto definido por el usuario
El símbolo identifica este objeto de forma inequívoca. Para obtener más información, consulte la sección sobre definición y uso de símbolos de la SoMachine Basic Guía de funcionamiento (véase SoMachine Basic, Guía de funcionamiento) .
: Serie 1 : Serie 2 : Ethernet
Este parámetro depende de la configuración de la conexión: 0 para difusión De 1 a 247 para la dirección de esclavo de líneas serie De 1 a 16 para el índice Ethernet
EIO0000001477 12/2016
Selección de puerto. y los puertos de comunicación incorporados sólo están disponibles en algunas referencias de los controladores. Identificador del dispositivo. Para el valor 0, el controlador maestro Modbus inicia una petición de difusión destinada a todos los esclavos conectados. En este caso, el ID de esclavo debe establecerse en 0. En el modo de petición de difusión, los esclavos no envían tramas de petición al maestro. Para obtener más información sobre el índice Ethernet, consulte la Adición de servidores remotos (véase Modicon M221, Logic Controller, Guía de programación) .
265
Objetos de comunicación
Especificado en unidades de 100 ms, con un valor predeterminado de 100 (10 segundos). Un valor de 0 significa que no se ha aplicado timeout.
El timeout establece el tiempo máximo de espera de recepción de una respuesta. Si el timeout finaliza, el intercambio finaliza en error con un código de error (CommError = 01 hex). Si el sistema recibe una respuesta después de la caducidad del timeout, esta respuesta se ignora. El timeout establecido en el bloque de funciones anula el valor configurado en las pantallas de configuración SoMachine Basic (Configuración de Modbus TCP (véase Modicon M221, Logic Controller, Guía de programación) y Configuración de línea serie (véase Modicon M221, Logic Controller, Guía de programación) ).
Se admiten los siguientes códigos de función Modbus: El tipo de objetos que se escribirá: : bits de memoria (%M) o bits de salida (%Q). Equivale al código de función Modbus 6 : palabra de memoria (%MW). Equivale al código de función Modbus 6 : bits de memoria (%M) o bits de salida (%Q). Equivale al código de función Modbus 15 : palabras de memoria (%MW). Equivale al código de función Modbus 16 Para utilizar los códigos de función Modbus Single Coil (Mbs 5) o Single Register (Mbs 6), la aplicación debe configurarse con un nivel funcional mínimo de 5.0. De 0 a 65.535
266
De 1 a 123 (registro interno) para De 1 a 1968 (bit interno) para o
Dirección del primer objeto del dispositivo remoto en el que se escriben los valores. Número de objetos que se van a escribir en el dispositivo remoto. Se ignora para objetos de tipo Single Coil y Single Register.
EIO0000001477 12/2016
Objetos de comunicación
De 0 a 7999
Dirección de la tabla de palabras local (%MW) que contiene los valores que se van a escribir en el dispositivo remoto. Durante la escritura de bits ( %M o %Q), los valores que se vayan a escribir se recuperan de la tabla de palabras comenzando por la primera dirección especificada. Por ejemplo, al escribir 16 bits con = 10 y = 16, los valores se recuperan de %MW10:X0 hasta %MW10:X15.
Texto definido por el usuario
Un comentario para asociar a este objeto.
El bloque de funciones %WRITE_VAR contiene los objetos siguientes:
%WRITE_VARi.LINK
Selección de puerto
%WRITE_VARi.ID
Identificador del dispositivo remoto Consulte Propiedades ( v éase página 265 ) . Se puede leer y escribir. Se puede modificar en una tabla de animación.
%WRITE_VARi.TIMEOUT
Timeout del bloque de funciones
Consulte Propiedades ( v éase página 265 ) . Se puede leer y escribir. Se puede modificar en una tabla de animación.
%WRITE_VARi.OBJTYPE
Tipo de objetos que se van a escribir
Consulte Propiedades ( v éase página 265 ) . Se puede leer y escribir. Se puede modificar en una tabla de animación.
%WRITE_VARi.FIRSTOBJ
Dirección del primer objeto del dispositivo remoto en el que se escriben los valores.
Consulte Propiedades ( v éase página 265 ) . Se puede leer y escribir. Se puede modificar en una tabla de animación.
%WRITE_VARi.QUANTITY
Número de objetos que se van a escribir en el dispositivo remoto.
Consulte Propiedades ( v éase página 265 ) . Se puede leer y escribir. Se puede modificar en una tabla de animación.
EIO0000001477 12/2016
Consulte Propiedades ( v éase página 265 ) . Se puede leer y escribir. Se puede modificar en una tabla de animación.
267
Objetos de comunicación
%WRITE_VARi.INDEXDATA
Dirección de la tabla de palabras local (%MW) que contiene los valores que se van a escribir en el dispositivo remoto.
Consulte Propiedades ( v éase página 265 ) . Se puede leer y escribir. Se puede modificar en una tabla de animación.
%WRITE_VARi.COMMERROR
Códigos de error de comunicación Consulte los códigos de error de comunicación ( v éase página 264 ) . Sólo lectura. Se puede leer en una tabla de animación.
%WRITE_VARi.OPERERROR
Códigos de error de funcionamiento
Consulte los códigos de error de funcionamiento ( v éase página 264 ) . Sólo lectura. Se puede leer en una tabla de animación.
%WRITE_VARi.DONE
Ejecución completada correctamente
Consulte Salidas ( v éase página 264 ) . Sólo lectura.
Se puede leer en una tabla de animación. %WRITE_VARi.BUSY
La ejecución está en proceso
Consulte Salidas ( v éase página 264 ) . Sólo lectura.
Se puede leer en una tabla de animación. %WRITE_VARi.ABORTED
La ejecución se ha cancelado
Consulte Salidas ( v éase página 264 ) . Sólo lectura.
Se puede leer en una tabla de animación. %WRITE_VARi.ERROR
Se ha detectado un error
Consulte Salidas ( v éase página 264 ) . Sólo lectura.
Se puede leer en una tabla de animación.
268
EIO0000001477 12/2016
Objetos de comunicación
El bloque de funciones %WRITE_VAR se puede configurar como se muestra en este ejemplo de programación.
Este ejemplo es un bloque de funciones Bloque de funciones %WRITE_VAR :
0
BLK %WRITE_VAR0 LD %I0.0 EXECUTE LD %I0.1 ABORT OUT_BLK LD DONE ST %Q0.0 LD BUSY ST %Q0.1 LD ABORTED ST %M1 LD ERROR ST %Q0.2 END_BLK
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
EIO0000001477 12/2016
269
Objetos de comunicación Leer y escribir datos enun dispositivoModbus (%WRITE_READ_VAR)
En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones %WRITE_READ_VAR .
Esta sección contiene los siguientes apartados:
270
Descripción
271
Configuración de la función
273
Ejemplo de programación
277
EIO0000001477 12/2016
Objetos de comunicación
El bloque de funciones %WRITE_READ_VAR se utiliza para leer y escribir datos guardados en la memoria de las palabras internas a un dispositivo externo utilizando el protocolo Modbus SL o Modbus TCP. Este bloque de funciones ejecuta una única petición de escritura seguida de una única petición de lectura en la misma transacción.
En esta ilustración se muestra el bloque de funciones %WRITE_READ_VAR :
El bloque de funciones %WRITE_READ_VAR contiene las siguientes entradas:
EIO0000001477 12/2016
BOOL
Arranca la ejecución de bloques de funciones cuando se detecte un flanco ascendente. Si se detecta un segundo flanco ascendente durante la ejecución del bloque de funciones, se ignora y el comando en curso no se ve afectado.
BOOL
Detiene la ejecución de bloques de funciones cuando se detecte un flanco ascendente. La salida se establece en 1 y el objeto %WRITE_READ_VARi.CommError contiene el código 02 hex (el intercambio se detiene cuando lo solicita un usuario). 271
Objetos de comunicación
Configurar la salida o para TRUE en el primer ciclo de tarea en ejecución no se detecta como un flanco ascendente. El bloque de funciones debe ver primero la entrada como FALSE para detectar un flanco ascendente posterior.
El bloque de funciones %WRITE_READ_VAR contiene las siguientes salidas:
BOOL
Si TRUE, indica que la ejecución del bloque de funciones se completa correctamente sin errores detectados.
BOOL
Si TRUE, indica que la ejecución del bloque de funciones está en curso.
BOOL
Si TRUE, indica que la ejecución del bloque de funciones se ha cancelado con la entrada .
BOOL
Si TRUE, indica que se ha detectado un error. Detenida la ejecución de bloques de funciones. Para obtener más información sobre CommError y OperError, consulte las tablas códigos de error de comunicación ( v éase página 254 ) y códigos de error de funcionamiento ( v éase página 255 ) .
En esta tabla se describen los objetos de salida del bloque de funciones:
BYTE
Para obtener información sobre %READ_VARi.CommError, consulte la tabla Códigos de error de comunicación ( v éase página 254 ) .
DWORD
Para obtener información sobre %READ_VARi.OperError, consulte la tabla Códigos de error de funcionamiento ( v éase página 255 ) .
) . Consulte los códigos de error de comunicación ( v éase página 254
Consulte los códigos de error de funcionamiento ( v éase página 255 ) .
272
EIO0000001477 12/2016
Objetos de comunicación
Haga doble clic en el bloque de funciones para abrir la tabla de propiedades de la función. Las propiedades de este bloque de funciones no se pueden modificar en la modalidad online. El bloque de funciones %WRITE_READ_VAR tiene las propiedades siguientes:
Casilla de verificación activada / desactivada
Indica si se está utilizando la dirección.
%WRITE_READ_VARi, donde i va
i es el identificador de instancia. Para
desde 0 hasta el número de objetos conocer la cantidad máxima de instancias, disponibles en este Logic Controller. consulte la tabla Número máximo de objetos (véase Modicon M221, Logic Controller, Guía de programación) .
Texto definido por el usuario
: Serie 1 : Serie 2 : Ethernet
Este parámetro depende de la configuración de la conexión: De 1 a 247 para la dirección de esclavo de líneas serie De 1 a 16 para el índice Ethernet
EIO0000001477 12/2016
El símbolo identifica este objeto de forma inequívoca. Para obtener más información, consulte la sección sobre definición y uso de símbolos de la SoMachine Basic Guía de funcionamiento (véase SoMachine Basic, Guía de funcionamiento) . Selección de puerto y los puertos de comunicación incorporados sólo están disponibles en algunas referencias de los controladores. Identificador del dispositivo Para obtener más información sobre el índice Ethernet, consulte la Adición de servidores remotos (véase Modicon M221, Logic Controller, Guía de programación) .
273
Objetos de comunicación
Especificado en unidades de 100 ms, con un valor predeterminado de 100 (10 segundos). Un valor de 0 significa que no se ha aplicado timeout.
El timeout establece el tiempo máximo de espera de recepción de una respuesta. Si el timeout finaliza, el intercambio finaliza en error con un código de error (CommError = 01 hex). Si el sistema recibe una respuesta después de la caducidad del timeout, esta respuesta se ignora. El timeout establecido en el bloque de funciones anula el valor configurado en las pantallas de configuración SoMachine Basic (Configuración de Modbus TCP (véase Modicon M221, Logic Controller, Guía de programación) y Configuración de línea serie (véase Modicon M221, Logic Controller, Guía de programación) ).
: palabras de memoria
274
El tipo de código de función de lectura/escritura Modbus es , que equivale al código 23 de función de Modbus.
De 0 a 65.535
Dirección del primer objeto del dispositivo remoto en el que se escriben los valores.
De 1 a 121
Número de objetos que se van a escribir en el dispositivo remoto.
De 0 a 7999
Dirección de la tabla de palabras local ( %MW) que contiene los valores que se van a escribir en el dispositivo remoto.
De 0 a 65.535
Dirección del primer objeto del dispositivo remoto desde donde se leen los valores.
De 1 a 125
Número de objetos que se van a leer desde el dispositivo remoto.
De 0 a 7999
Dirección de la tabla de palabras local ( %MW) en la que se guardan los valores leídos.
Texto definido por el usuario
Un comentario para asociar a este objeto.
EIO0000001477 12/2016
Objetos de comunicación
El bloque de funciones %WRITE_READ_VAR contiene los objetos siguientes:
%WRITE_READ_VARi.LINK
Selección de puerto
Consulte Propiedades ( v éase página 273 ) . Se puede leer y escribir. Se puede modificar en una tabla de animación.
%WRITE_READ_VARi.ID
Identificador del dispositivo remoto
Consulte Propiedades ( v éase página 273 ) . Se puede leer y escribir. Se puede modificar en una tabla de animación.
%WRITE_READ_VARi.TIMEOUT
Timeout del bloque de funciones
Consulte Propiedades ( v éase página 273 ) . Se puede leer y escribir. Se puede modificar en una tabla de animación.
%WRITE_READ_VARi.OBJTYPE
Tipo de objetos que se van a leer
Consulte Propiedades ( v éase página 273 ) . Se puede leer y escribir. Se puede modificar en una tabla de animación.
%WRITE_READ_VARi.FIRSTWRITEOBJ
Dirección del primer objeto del Consulte Propiedades dispositivo remoto en el que ( v éase página 273 ) . Se puede se escriben los valores. leer y escribir. Se puede modificar en una tabla de animación.
%WRITE_READ_VARi.WRITEQUANTITY
Número de objetos que se van Consulte Propiedades a escribir en el dispositivo ( v éase página 273 ) . Se puede remoto. leer y escribir. Se puede modificar en una tabla de animación.
%WRITE_READ_VARi.INDEXDATAOUT
Dirección de la tabla de palabras local ( %MW) que contiene los valores que se van a escribir en el dispositivo remoto.
%WRITE_READ_VARi.FIRSTREADOBJ
Dirección del primer objeto del Consulte Propiedades dispositivo remoto desde ( v éase página 273 ) . Se puede donde se leen los valores. leer y escribir. Se puede modificar en una tabla de animación.
EIO0000001477 12/2016
Consulte Propiedades ( v éase página 273 ) . Se puede leer y escribir. Se puede modificar en una tabla de animación.
275
Objetos de comunicación
%WRITE_READ_VARi.READQUANTITY
Número de objetos que se van Consulte Propiedades a leer desde el dispositivo ( v éase página 273 ) . Se puede remoto. leer y escribir. Se puede modificar en una tabla de animación.
%WRITE_READ_VARi.INDEXDATAIN
Dirección de la tabla de Consulte Propiedades palabras local ( %MW) en la que ( v éase página 273 ) . Se puede se guardan los valores leídos. leer y escribir. Se puede modificar en una tabla de animación.
%WRITE_READ_VARi.COMMERROR
Códigos de error de comunicación
Consulte los códigos de error de comunicación ( v éase página 272 ) . Sólo lectura. Se puede leer en una tabla de animación.
%WRITE_READ_VARi.OPERERROR
Códigos de error de funcionamiento
Consulte los códigos de error de funcionamiento ( v éase página 272 ) . Sólo lectura. Se puede leer en una tabla de animación.
%WRITE_READ_VARi.DONE
Ejecución completada correctamente
Consulte Salidas ( v éase página 272 ) . Sólo
lectura. Se puede leer en una tabla de animación. %WRITE_READ_VARi.BUSY
La ejecución está en proceso Consulte Salidas ( v éase página 272 ) . Sólo
lectura. Se puede leer en una tabla de animación. %WRITE_READ_VARi.ABORTED
La ejecución se ha cancelado Consulte Salidas ( v éase página 272 ) . Sólo
lectura. Se puede leer en una tabla de animación. %WRITE_READ_VARi.ERROR
Se ha detectado un error
Consulte Salidas ( v éase página 272 ) . Sólo
lectura. Se puede leer en una tabla de animación.
276
EIO0000001477 12/2016
Objetos de comunicación
El bloque de funciones %WRITE_READ_VAR se puede configurar como se muestra en este ejemplo de programación.
Este ejemplo es un bloque de funciones Bloque de funciones %WRITE_READ_VAR :
0
BLK %WRITE_READ_VAR0 LD %I0.0 EXECUTE LD %I0.1 ABORT OUT_BLK LD DONE ST %Q0.0 LD BUSY ST %Q0.1 LD ABORTED ST %M1 LD ERROR ST %Q0.2 END_BLK
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
EIO0000001477 12/2016
277
Objetos de comunicación Comunicaciónen unaconexión ASCII( %SEND_RECV_MSG)
En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones %SEND_RECV_MSG .
Esta sección contiene los siguientes apartados:
278
Descripción
279
Configuración de la función
282
Ejemplo de programación
285
EIO0000001477 12/2016
Objetos de comunicación
El bloque de funciones %SEND_RECV_MSG se utiliza para enviar o recibir datos en una línea serie configurada para el protocolo ASCII.
En esta ilustración se muestra el bloque de funciones %SEND_RECV_MSG :
El bloque de funciones %SEND_RECV_MSG contiene las siguientes entradas:
EIO0000001477 12/2016
BOOL
Arranca la ejecución de bloques de funciones cuando se detecte un flanco ascendente. Si se detecta un segundo flanco ascendente durante la ejecución del bloque de funciones, se ignora y el comando en curso no se ve afectado.
BOOL
Detiene la ejecución de bloques de funciones cuando se detecte un flanco ascendente. La salida se establece en 1 y el objeto %SEND_RECV_MSGi.CommError contiene el código 02 hex (el intercambio se detiene cuando lo solicita un usuario).
279
Objetos de comunicación
Configurar la salida o para TRUE en el primer ciclo de tarea en ejecución no se detecta como un flanco ascendente. El bloque de funciones debe ver primero la entrada como FALSE para detectar un flanco ascendente posterior.
El bloque de funciones %SEND_RECV_MSG contiene las siguientes salidas:
BOOL
Si TRUE, indica que la ejecución del bloque de funciones se completa correctamente sin errores detectados.
BOOL
Si TRUE, indica que la ejecución del bloque de funciones está en curso.
BOOL
Si TRUE, indica que la ejecución del bloque de funciones se ha cancelado con la entrada .
BOOL
Si TRUE, indica que se ha detectado un error. Detenida la ejecución de bloques de funciones. Para obtener más información sobre CommError y OperError, consulte las tablas códigos de error de comunicación ( v éase página 254 ) y códigos de error de funcionamiento ( v éase página 255 ) .
Consulte los códigos de error de comunicación ( v éase página 254 ) .
) . Consulte los códigos de error de funcionamiento ( v éase página 255
Para una operación de sólo envío, la salida se establece en TRUE cuando se han enviado todos los datos (incluido cualquier carácter de arranque/parada). Para una operación de sólo recepción, el sistema recibe caracteres hasta que se cumple la condición de finalización. Cuando se alcanza la condición de finalización, la salida se establece en TRUE. A continuación, los caracteres recibidos se copian en hasta los caracteres . no es una condición de finalización.
280
EIO0000001477 12/2016
Objetos de comunicación
La condición de finalización debe estar establecida en la pantalla Configuración de la línea serie (véase Modicon M221, Logic Controller, Guía de programación) :
La condición de finalización se puede establecer en: Un número de bytes recibidos: Una finalización de silencio de trama: Una estructura de trama: Para una operación de sólo recepción, primero se envían los caracteres a la línea y entonces se reciben hasta que se cumple la condición de finalización (el mismo proceso que en sólo recepción).
EIO0000001477 12/2016
281
Objetos de comunicación
Haga doble clic en el bloque de funciones para abrir la tabla de propiedades de la función. Las propiedades de este bloque de funciones no se pueden modificar en la modalidad online. El bloque de funciones %SEND_RECV_MSG tiene las propiedades siguientes:
Casilla de verificación activada/desactivada
Indica si se está utilizando la dirección.
%SEND_RECV_MSGi, donde i va desde 0
i es el identificador de instancia.
hasta el número de objetos disponibles en este Para conocer la cantidad máxima de Logic Controller. instancias, consulte la guía de programación para el controlador lógico. Texto definido por el usuario
: Serie 1 : Serie 2
Especificado en unidades de 100 ms, con un valor predeterminado de 100 (10 segundos). Un valor de 0 significa que no se ha aplicado timeout.
El símbolo identifica este objeto de forma inequívoca. Para obtener más información, consulte la sección sobre definición y uso de símbolos de la SoMachine Basic Guía de funcionamiento (véase SoMachine Basic, Guía de funcionamiento) . Selección de puerto El puerto de comunicación incorporado sólo está disponible en algunas referencias de controladores. El timeout establece el tiempo máximo de espera de recepción de una respuesta. Si el timeout finaliza, el intercambio finaliza en error con un código de error (CommError = 01 hex). Si el sistema recibe una respuesta después de la caducidad del timeout, esta respuesta se ignora. El timeout establecido en el bloque de funciones anula el valor establecido en las pantallas de configuración de SoMachine Basic (Configuración de Modbus TCP y Configuración de línea serie ; consulte la guía de programación del controlador lógico).
282
EIO0000001477 12/2016
Objetos de comunicación
De 0 a 254 Un valor de 0 significa que el bloque de funciones sólo recibe datos.
Número de bytes para enviar
De 0 a 7999
Dirección del primer objeto para enviar
De 0 a 254 Un valor de 0 significa que el bloque de funciones sólo envía datos.
Tamaño disponible en bytes del búfer de recepción.
De 0 a 7999
La primera dirección de la tabla de palabras en la que se guardan los valores de lectura ( %MW).
De 0 a 254
Cantidad de datos recibidos en bytes
Texto definido por el usuario
Un comentario para asociar a este objeto.
El bloque de funciones %SEND_RECV_MSG contiene los objetos siguientes:
%SEND_RECV_MSGi.LINK
Selección de puerto
Consulte Propiedades ( v éase página 282 ) . Se puede leer y escribir. Se puede modificar en una tabla de animación.
%SEND_RECV_MSGi.TIMEOUT
Timeout del bloque de funciones
Consulte Propiedades ( v éase página 282 ) . Se puede leer y escribir. Se puede modificar en una tabla de animación.
%SEND_RECV_MSGi.QUANTITYTOSEND
Número de bytes para enviar
Consulte Propiedades ( v éase página 282 ) . Se puede leer y escribir. Se puede modificar en una tabla de animación.
%SEND_RECV_MSGi.BUFFERTOSEND
Dirección del primer objeto para enviar
Consulte Propiedades ( v éase página 282 ) . Se puede leer y escribir. Se puede modificar en una tabla de animación.
EIO0000001477 12/2016
283
Objetos de comunicación
%SEND_RECV_MSGi.SIZERECVBUFFER
Tamaño disponible en bytes del búfer de recepción
Consulte Propiedades ( v éase página 282 ) . Se puede leer y escribir. Se puede modificar en una tabla de animación.
%SEND_RECV_MSGi.BUFFERTORECV
Primera dirección de la tabla de Consulte Propiedades palabras en la que se guardan ( v éase página 282 ) . Se puede los valores de lectura leer y escribir. Se puede modificar en una tabla de animación.
%SEND_RECV_MSGi.QUANTITYRECV
Cantidad de datos recibidos en Consulte Propiedades bytes ( v éase página 282 ) . Sólo se pueden leer. Se puede modificar en una tabla de animación.
%SEND_RECV_MSGi.COMMERROR
Códigos de error de comunicación
Consulte los códigos de error de comunicación ( v éase página 280 ) . Sólo lectura. Se puede leer en una tabla de animación.
%SEND_RECV_MSGi.OPERERROR
Códigos de error de funcionamiento
Consulte los códigos de error de funcionamiento ( v éase página 280 ) . Sólo lectura. Se puede leer en una tabla de animación.
%SEND_RECV_MSGi.DONE
Ejecución completada correctamente
Consulte Salidas ( v éase página 280 ) . Sólo
lectura. Se puede leer en una tabla de animación. %SEND_RECV_MSGi.BUSY
La ejecución está en proceso
Consulte Salidas ( v éase página 280 ) . Sólo
lectura. Se puede leer en una tabla de animación. %SEND_RECV_MSGi.ABORTED
La ejecución se ha cancelado
Consulte Salidas ( v éase página 280 ) . Sólo
lectura. Se puede leer en una tabla de animación. %SEND_RECV_MSGi.ERROR
Se ha detectado un error
Consulte Salidas ( v éase página 280 ) . Sólo
lectura. Se puede leer en una tabla de animación.
284
EIO0000001477 12/2016
Objetos de comunicación
El bloque de funciones %SEND_RECV_MSG se puede configurar como se muestra en este ejemplo de programación.
Este ejemplo es un bloque de funciones Bloque de funciones %SEND_RECV_MSG :
0
BLK %SEND_RECV_MSG0 LD %I0.0 EXECUTE LD %I0.1 ABORT OUT_BLK LD DONE ST %Q0.0 LD BUSY ST %Q0.1 LD ABORTED ST %M1 LD ERROR ST %Q0.2 END_BLK
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente.
EIO0000001477 12/2016
285
Objetos de comunicación Enviar Recibir SMS(%SEND_RECV_SMS)
En esta sección se proporcionan descripciones y directrices de programación para utilizar el bloque de funciones %SEND_RECV_SMS .
Esta sección contiene los siguientes apartados:
286
Descripción
287
Configuración de funciones
295
EIO0000001477 12/2016
Objetos de comunicación
El bloque de funciones %SEND_RECV_SMS sirve para enviar y recibir mensajes SMS (servicio de mensajes cortos) mediante un módem conectado a una línea serie. Por ejemplo, el controlador puede enviar un SMS para transmitir una alarma a un teléfono móvil especificado, o recibir un SMS para finalizar una función de la máquina. La aplicación debe estar configurada con un nivel funcional como mínimo del para utilizar la función de SMS. El bloque de funciones %SEND_RECV_SMS se utiliza para una de estas opciones: Enviar un SMS a un solo destinatario, o Recibir un SMS filtrado por una tabla de números de teléfono aprobados En un programa sólo se puede utilizar 1 bloque de funciones %SEND_RECV_SMS . Se debe tener cuidado y adoptar las medidas adecuadas para utilizar la función de SMS como dispositivo de control remoto, con el fin de evitar consecuencias no deseadas en el funcionamiento solicitado de máquinas, cambios de estado del controlador, o a lteración de la memoria de datos o de los parámetros de funcionamiento de la máquina.
Asegúrese de que un observador local, competente y cualificado, esté presente al utilizarlo desde una ubicación remota. Configure e instale la entrada Run/Stop en la aplicación con el objetivo de poder mantener el control local sobre el inicio y la detención del controlador, independientemente de los comandos remotos enviados al controlador.
La función de SMS depende de una red de telecomunicaciones externa y sus parámetros. Puede que los comandos y mensajes SMS transmitidos a la máquina se retrasen, no se envíen o no se reciban. No utilice la función de SMS para funciones críticas para la seguridad u otras funciones críticas.
EIO0000001477 12/2016
287
Objetos de comunicación
No permita funciones críticas para la seguridad en comandos por SMS. No utilice comandos o mensajes SMS para ninguna función que sea crítica.
Verifique las funciones de SMS y la red de telecomunicaciones asociada durante la puesta en funcionamiento, y pruébela periódicamente para verificar la cobertura de la red.
En esta ilustración se muestra el bloque de funciones %SEND_RECV_SMS :
288
EIO0000001477 12/2016
Objetos de comunicación
En esta tabla se describen las entradas del bloque de funciones: BOOL
Inicia la ejecución del bloque de funciones cuando se detecta un flanco ascendente. Si se detecta un segundo flanco ascendente durante la ejecución del bloque de funciones, se ignora y el comando en curso no se ve afectado.
BOOL
Detiene la ejecución del bloque de funciones cuando se detecta un flanco ascendente. La salida se establece en 1 y el objeto %SEND_RECV_SMSi.CommError contiene el código 02 hex (intercambio detenido en un flanco ascendente en la entrada ).
BOOL
Si es 1, el bloque de funciones está configurado para enviar un SMS. Si es 0, el bloque de funciones está configurado para recibir un SMS.
Configurar la salida o para 1 en el primer ciclo de tarea en ejecución no se detecta como un flanco ascendente. El bloque de funciones debe ver primero la entrada como 0 para detectar un flanco ascendente posterior. En esta tabla se describen los objetos de entrada del bloque de funciones:
EIO0000001477 12/2016
BYTE
1 - SL1 2 - SL2
Indica la línea serie utilizada para la comunicación a través del módem.
WORD
De 0 a 255
Establece el tiempo máximo de espera de recepción de una respuesta del módem. Especificado en unidades de 100 ms, con un valor predeterminado de 100 (10 segundos). El valor 0 significa que no se ha establecido timeout.
WORD
De 0 a 15
Se utiliza el valor del índice: En el envío, para seleccionar el texto que se va a enviar desde la tabla . 0 corresponde a la primera cadena de la tabla. En la recepción, para seleccionar una cadena de la tabla que coincida con el texto recibido. Se establece en FFFF hex si no se encuentra ninguna cadena coincidente.
289
Objetos de comunicación
DINT
De – 2147483648 a 2147483647
DINT
De – 2147483648 a 2147483647
WORD
De 0 a 15
Durante el envío, el valor de %SEND_RECV_SMSi.VAD sustituye al marcador de posición $VAD en el texto del SMS. Durante la recepción, el valor de %SEND_RECV_SMSi.VAD contiene el valor en el que se inserta el marcador de posición $VAD en el SMS almacenado en la tabla . Durante el envío, el valor de %SEND_RECV_SMSi.VBD sustituye al marcador de posición $VBD en el texto del SMS. Durante la recepción, el valor de %SEND_RECV_SMSi.VBD contiene el valor en el que se inserta el marcador de posición $VBD en el SMS almacenado en la tabla . Durante el envío, la máscara se utiliza para seleccionar el destinatario del SMS de la tabla . Durante la recepción, la máscara se aplica a la tabla para crear una lista de números válidos.
En esta tabla se describen las salidas del bloque de funciones: BOOL
Si es TRUE, indica que la ejecución del bloque de funciones ha finalizado correctamente y no se han detectado errores.
BOOL
Si TRUE, indica que la ejecución del bloque de funciones está en curso.
BOOL
Si es TRUE, indica que la ejecución del bloque de funciones se ha cancelado con la entrada %SEND_RECV_SMSi.Abort.
Cuando la salida se establece en TRUE, la ejecución continúa hasta que una de las salidas , o se establece en TRUE. Mientras la salida está establecida en TRUE, los cambios en la entrada no afectan a la ejecución del bloque de funciones en curso. Sin embargo, si se llama a otro bloque de funciones %SEND_RECV_SMS, se rechaza este SMS ( CommError = 255 (FF hex) y OperError = 11 (0000000B hex)).
290
EIO0000001477 12/2016
Objetos de comunicación
BOOL
Si es TRUE, indica que se ha detectado un error. Se ha detenido la ejecución del bloque de funciones. Para obtener información sobre %SEND_RECV_SMSi.CommError y %SEND_RECV_SMSi.OperError, consulte las tablas Códigos de error de comunicación ( v éase página 291 ) y Códigos de error de funcionamiento ( v éase página 292 ) .
Cuando la salida se establece en TRUE, la ejecución continúa hasta que una de las salidas , o se establece en TRUE. Mientras la salida está establecida en TRUE, los cambios en la entrada no afectan a la ejecución del bloque de funciones en curso. Sin embargo, si se llama a otro bloque de funciones %SEND_RECV_SMS, se rechaza este SMS ( CommError = 255 (FF hex) y OperError = 11 (0000000B hex)).
En esta tabla se describen los objetos de salida del bloque de funciones:
BYTE
Para obtener información sobre %SEND_RECV_SMSi.CommError, consulte la tabla Códigos de error de comunicación ( v éase página 291 ) .
DWORD
Para obtener información sobre %SEND_RECV_SMSi.OperError, consulte la tabla Códigos de error de funcionamiento ( v éase página 292 ) .
En esta tabla se describen los códigos de error escritos en el objeto de salida %SEND_RECV_SMSi.CommError :
0 (00 hex)
CommunicationOK
Intercambio correcto. En este caso, el objeto de salida %SEND_RECV_SMSi.OperError contiene el nivel de señal del módem en vez de un código de error.
1 (01 hex)
TimedOut
Intercambio detenido porque se ha agotado el timeout.
2 (02 hex)
Abort
Intercambio detenido en un flanco ascendente en la entrada %SEND_RECV_SMSi.Abort.
3 (03 hex)
BadLink
Enlace incorrecto.
4 (04 hex)
BadCommand
Comando incorrecto.
EIO0000001477 12/2016
291
Objetos de comunicación
5 (05 hex)
BadMgtTable
El formato de la tabla de gestión es incorrecto.
6 (06 hex)
BadParameters
Los parámetros específicos son incorrectos.
7 (07 hex)
ProblemSendingSms
Error de comando de envío de SMS.
9 (09 hex)
RecvCmdError
Comando no válido.
10 (0A hex)
SendValueError
Valor no válido.
11 (0B hex)
SystemResourceMissing
Recurso del sistema no disponible.
14 (0E hex)
BadLength
La longitud es incorrecta.
254 (FE hex)
ProtocolSpecificError
Indica que se ha detectado un error de protocolo. En este caso, el objeto de salida %SEND_RECV_SMSi.OperError contiene más información. Consulte los códigos de error de funcionamiento ( v éase página 292 ) .
255 (FF hex)
SMS rechazado.
Refused
En este caso, el objeto de salida %SEND_RECV_SMSi.OperError contiene más información. Consulte los códigos de error de funcionamiento ( v éase página 292 ) .
Este código de retorno es significativo cuando el código de error de comunicación (objeto de salida %SEND_RECV_SMSi.CommError ) tiene el valor: 0 (00 hex) (protocolo correcto) 254 (FE hex) (protocolo incorrecto) 255 (FF hex) (SMS rechazado) Cuando %SEND_RECV_SMSi.CommError es 0 (00 hex) (protocolo correcto), el objeto de salida %SEND_RECV_SMSi.OperError especifica la RSSI (del inglés Received Signal Strength Indication, indicación de fuerza de la señal recibida): %SEND_RECV_SMSi.OperError
292
Inferior a 9
Valor marginal (la atenuación sobrepasa el límite necesario para que la red inalámbrica funcione)
De 10 a 14
OK
De 15 a 19
Bueno
Superior a 20
Excelente
EIO0000001477 12/2016
Objetos de comunicación
Cuando %SEND_RECV_SMSi.CommError es 254 (FE hex) (protocolo incorrecto), el objeto de salida %SEND_RECV_SMSi.OperError devuelve más información:
%SEND_RECV_SMSi.OperError 256 (00000100 hex)
ModemConfSLAsciiFailed
La configuración ASCII de la línea serie es incorrecta.
512 (00000200 hex)
ModemReconfSLFailed
La configuración de la línea de serie en la configuración de usuario es incorrecta.
768 (00000300 hex)
ModemBusy
El módem responde BUSY para el comando de marcación.
1024 (00000400 hex)
ModemNoDialtone
El módem responde NODIALTONE para el comando de marcación.
1280 (00000500 hex)
ModemNoCarrier
La señal de portadora del módem se ha perdido o desconectado. El módem responde NO CARRIER para el comando de marcación.
1536 (00000600 hex)
ModemBadAnswer
La respuesta del módem es incorrecta.
Errores específicos de uso de la tarjeta SIM 4096 (00001000 hex)
SimConfigurationFailed
La configuración de la tarjeta SIM es incorrecta. Por ejemplo, se solicita un código PUK.
8192 (00002000 hex)
SimPinCodeInvalid
El código PIN es incorrecto.
16384 (00004000 hex)
SimSmsCenterInvalid
El número de teléfono del centro de SMS es incorrecto.
Cuando %SEND_RECV_SMSi.CommError es 255 (FF hex) (SMS rechazado), el objeto de salida %SEND_RECV_SMSi.OperError devuelve más información:
%SEND_RECV_SMSi.OperError 1 (00000001 hex)
TargetResourceMissing
El recurso del sistema de destino no está disponible.
5 (00000005 hex)
BadLength
La longitud es incorrecta.
6 (00000006 hex)
CommChannelErr
Se ha detectado un error en el canal de comunicación.
11 (0000000B hex)
SystemResourceMissing
Recurso del sistema no disponible.
12 (0000000C hex)
TargetCommInactive
La función de comunicación de destino no está activa.
EIO0000001477 12/2016
293
Objetos de comunicación
%SEND_RECV_SMSi.OperError 13 (0000000D hex)
TargetMissing
El destino no está disponible.
15 (0000000F hex)
ChannelNotConfigured
El canal de comunicación no está configurado.
16 (00000010 hex)
PhoneNumberNotMatching
El número de teléfono del mensaje recibido no coincide con la lista de números aprobados (lista blanca).
17 (00000011 hex)
MessageNotMatching
El mensaje recibido no coincide con ningún mensaje de la lista de comandos. Sólo se emite si el número de teléfono del emisor coincide con una entrada de la lista de números aprobados (lista banca).
294
EIO0000001477 12/2016
Objetos de comunicación
El siguiente procedimiento describe los pasos principales para configurar el bloque de funciones %SEND_RECV_SMS tras conectar un módem a la línea serie:
1
En la ficha de SoMachine Basic, configure la línea serie con el módem, el y el protocolo ASCII. Para obtener más información, consulte la guía de programación correspondiente a su controlador lógico.
2
Verifique que el módem esté conectado a la línea serie del controlador y que: La tarjeta SIM está desbloqueada, es decir, no protegida mediante un código PIN El número de teléfono del centro de SMS está configurado correctamente en la tarjeta SIM
3
En la ficha : Añada el bloque de funciones %SEND_RECV_SMS y haga doble clic en el bloque de funciones para ver la tabla de propiedades de la función para abrir la ventana Haga clic en el botón , y Edite las tablas Para obtener más información, consulte el . para cerrar el Haga clic en Si la dirección del bloque de funciones (por ejemplo %SEND_RECV_SMS0) no es válida y hacer doble clic está deshabilitado, compruebe que el nivel funcional de la aplicación (ficha > > ) esté como mínimo en el ).
4
En la ficha , edite los campos de la tabla de propiedades de la función. Para obtener información sobre estos campos, consulte Propiedades ( v éase página 298 ) .
Antes de utilizar el bloque de funciones, verifique que los índices para los mensajes, comandos y números de teléfono utilizados en el bloque de funciones sean los adecuados.
Para obtener más información acerca de la instalación y la configuración de los modems SR2MOD03, consulte Modems inalámbricos SR2MOD02 y SR2MOD03 - Guía del usuario (EIO00000001575).
EIO0000001477 12/2016
295
Objetos de comunicación
Para utilizar el bloque de funciones %SEND_RECV_SMS , configure las tablas de comandos, mensajes y números de teléfono. Haga clic en el botón en el área de propiedades de para abrir la ventana . La ventana tiene tres fichas con tablas para configurar:
Especifique las cadenas que se utilizan cuando el controlador envía un SMS. Utilice marcadores de posición para incluir variables, fecha y hora. Tenga en cuenta los límites de número de caracteres y el formato.
Especifique las cadenas que se utilizan cuando el controlador recibe un SMS. Utilice marcadores de posición para incluir variables. Tenga en cuenta los límites de número de caracteres y el formato.
Al programar el bloque de funciones para el envío de mensajes SMS, seleccione el destinatario en esta tabla. Al programar el bloque de funciones para la recepción de mensajes SMS, seleccione los números de teléfono de origen autorizados en esta lista. La lista de números de teléfono autorizados seleccionados añade seguridad a la aplicación. Cuando una llamada y el SMS correspondiente se transmiten a la aplicación a través del módem, el número de teléfono de origen se valida antes de considerar el SMS entrante. Para obtener más información, consulte la línea en Propiedades ( v éase página 298 ) . Consulte la documentación del módem para ver el formato de los códigos de marcación internacionales. Cada tabla contiene un máximo de 16 entradas con un índice en cada línea de 0 a 15. Las cadenas incluidas en las tablas del asistente se pueden interpretar con los siguientes formatos y límite de tamaño de mensaje: GSM 7-bit
Máximo 105 caracteres
UNICODE
Máximo 45 caracteres
El formato de caracteres viene determinado automáticamente por los caracteres del campo de texto.
296
EIO0000001477 12/2016
Objetos de comunicación
Se pueden añadir los siguientes marcadores de posición en el texto de para que se interpreten como variables:
o
$DATE(1)
YY/MM/DD (fecha actual)
8+1
16 + 2
$TIME(1)
HH:MM:SS (hora actual)
8+1
16 + 2
$VAD
El valor DWORD del parámetro %SEND_RECV_SMSi.VAD convertido a texto.
12 máximo
24 máximo
$VBD
El valor DWORD del parámetro %SEND_RECV_SMSi.VBD convertido a texto.
12 máximo
24 máximo
$$
El símbolo $
1
2
Cuando el texto introducido es válido (límite de caracteres no excedido, marcadores de posición válidos), el botón está activo. Ignorado para
Este ejemplo muestra el uso de marcadores de posición en los mensajes: Mensaje configurado
$DATE : $TIME - Valor A = $VAD y Valor B = $VBD
Valores de los marcadores de posición
VAD = 10; VBD = 2000
SMS final enviado
15/04/27 : 11:15:43 - Valor A = 10 y Valor B = 2000
Este ejemplo muestra el uso de marcadores de posición en los comandos: Comando configurado
Valor A = $VAD y Valor B = $VBD
SMS recibido
Valor A = 300 y Valor B = 2
Valores capturados
VAD = 300; VBD = 2
EIO0000001477 12/2016
297
Objetos de comunicación
Haga doble clic en el bloque de funciones para abrir la tabla de propiedades de la función. Las propiedades de este bloque de funciones no se pueden modificar en la modalidad online. El bloque de funciones %SEND_RECV_SMS tiene las propiedades siguientes:
Casilla de verificación activada/desactivada.
Indica si se está utilizando la dirección.
%SEND_RECV_SMSi, donde i
i es el identificador de instancia. Para saber el número máximo de
va desde 0 hasta el número de instancias, consulte la guía de programación de su controlador objetos disponibles en este lógico. Logic Controller.. Texto definido por el usuario.
El símbolo identifica este objeto de forma inequívoca. Para obtener más información, consulte Definición y uso de los símbolos (véase SoMachine Basic, Guía de funcionamiento) . Línea serie en la que se ha configurado el módem (ficha ).
De 0 a 255 Especificado en unidades de 100 ms, con un valor predeterminado de 100 (10 segundos). Un valor de 0 significa que no se ha aplicado timeout.
El timeout establece el tiempo máximo de espera de recepción de una respuesta del módem. Si se supera el timeout, el intercambio finaliza con un código de error (%SEND_RECV_SMSi.CommError = 01 hex). Si el sistema recibe una respuesta después de la caducidad del timeout, esta respuesta se ignora.
De 0 a 15
0 corresponde a la primera cadena de la lista.
De –214748364 a 2147483647
El timeout establecido en el bloque de funciones anula el valor configurado en la pantalla de configuración SoMachine Basic. Para obtener más información, consulte la guía de programación correspondiente a su controlador lógico.
De –214748364 a 2147483647
298
En el envío, el valor del índice se utiliza para seleccionar un texto para enviar en la tabla . En la recepción, el valor corresponde al índice de la tabla que coincide con el texto recibido. Durante el envío, el valor de %SEND_RECV_SMSi.VAD sustituye al marcador de posición $VAD en el texto del SMS. Durante la recepción, el valor de %SEND_RECV_SMSi.VAD contiene el valor en el que se inserta el marcador de posición $VAD en el SMS almacenado en la tabla . Durante el envío, el valor de %SEND_RECV_SMSi.VBD sustituye al marcador de posición $VBD en el texto del SMS. Durante la recepción, el valor de %SEND_RECV_SMSi.VBD contiene el valor en el que se inserta el marcador de posición $VBD en el SMS almacenado en la tabla .
EIO0000001477 12/2016
Objetos de comunicación
De 0000000000000000 bin El valor inicial de la máscara. a 1000000000000000 bin Durante el envío, esta máscara se utiliza para seleccionar el destinatario del SMS de la tabla . Ejemplo: 0000000000000010 bin = el SMS se envía al segundo número de teléfono (índice 1) que aparece en la tabla . Durante la recepción, la máscara se aplica a la tabla para crear una lista de números de teléfono de origen válidos. Un bit de la máscara indica el número de teléfono utilizado para enviar el SMS al controlador lógico. Ejemplo: 0000000000000100 bin significa que el tercer número de teléfono de la lista (índice 2) ha enviado el SMS. Texto definido por el usuario
Un comentario para asociar a este objeto.
El bloque de funciones %SEND_RECV_SMS contiene los objetos siguientes:
%SEND_RECV_SMSi.LINK
Selección de puerto
Consulte Propiedades ( v éase página 298 ) . Se puede leer y escribir. Se puede modificar en una tabla de animación.
%SEND_RECV_SMSi.TIMEOUT
Timeout del bloque de funciones
Consulte Propiedades ( v éase página 298 ) . Se puede leer y escribir. Se puede modificar en una tabla de animación.
%SEND_RECV_SMSi.INDEX
Índice en la tabla de Mensajes o Comandos
Consulte Propiedades ( v éase página 298 ) . Se puede leer y escribir. Se puede modificar en una tabla de animación.
%SEND_RECV_SMSi.VAD
VAD - marcador de posición A
Consulte Propiedades ( v éase página 298 ) . Se puede leer y escribir. Se puede modificar en una tabla de animación.
%SEND_RECV_SMSi.VBD
VBD - marcador de posición B
Consulte Propiedades ( v éase página 298 ) . Se puede leer y escribir. Se puede modificar en una tabla de animación.
%SEND_RECV_SMSi.MASKPHONE
Máscara para seleccionar Consulte Propiedades entradas en la tabla de números de ( v éase página 298 ) . Se puede leer teléfono y escribir. Se puede modificar en una tabla de animación.
EIO0000001477 12/2016
299
Objetos de comunicación
%SEND_RECV_SMSi.COMMERROR
Códigos de error de comunicación Consulte los códigos de error de comunicación ( v éase página 291 ) . Sólo se pueden leer. Se puede modificar en una tabla de animación.
%SEND_RECV_SMSi.OPERERROR
Códigos de error de funcionamiento
Consulte los códigos de error de funcionamiento ( v éase página 292 ) . Sólo se pueden leer. Se puede modificar en una tabla de animación.
%SEND_RECV_SMSi.DONE
Ejecución completada correctamente
Consulte Salidas ( v éase página 290 ) . Sólo se
pueden leer. Se puede modificar en una tabla de animación. %SEND_RECV_SMSi.BUSY
La ejecución está en proceso
Consulte Salidas ( v éase página 290 ) . Sólo se
pueden leer. Se puede modificar en una tabla de animación. %SEND_RECV_SMSi.ABORTED
La ejecución se ha cancelado
Consulte Salidas ( v éase página 290 ) . Sólo se
pueden leer. Se puede modificar en una tabla de animación. %SEND_RECV_SMSi.ERROR
Se ha detectado un error
Consulte Salidas ( v éase página 290 ) . Sólo se
pueden leer. Se puede modificar en una tabla de animación.
300
EIO0000001477 12/2016
SoMachine Basic EIO0000001477 12/2016
Funciones dereloj
En este capítulo se describen las funciones de gestión de tiempo para los controladores.
Este capítulo contiene los siguientes apartados: Funciones de reloj
302
Marcas de fecha y hora
303
Ajuste de fecha y hora
305
EIO0000001477 12/2016
301
En controladores lógicos equipados con una función de r eloj en tiempo real (RTC), puede utilizar las siguientes funciones del reloj de fecha/hora cuando SoMachine Basic esté conectado al controlador lógico: ( v éase página 237 ) se utilizan para leer la hora y la fecha del Los bloques de funciones RTC, o para actualizar el RTC en el logic controller con una fecha y hora definidas por el usuario. Los bloques de funciones del ( v éase página 233 ) se utilizan para controlar acciones a horas predefinidas o calculadas. ( v éase página 303 ) se utiliza para asignar fechas y horas a eventos y para medir la duración de los eventos. ) . La batería del El reloj de fecha/hora puede ajustarse mediante un programa ( v éase página 303 controlador facilita que la configuración del reloj siga funcionando durante un año como máximo aunque el controlador esté apagado. El controlador no tiene una batería recargable. La vida útil promedio de la batería es de 4 años y debe reemplazarse antes del final de su vida útil. Con el objetivo de no perder los datos durante la sustitución de la batería, cámbiela durante los 120 segundos posteriores a la extracción de la batería del controlador. El reloj de fecha y hora tiene formato de 24 horas y tiene en cuenta los años bisiestos.
302
EIO0000001477 12/2016
Las palabras de sistema %SW49 a %SW53 contienen la fecha y la hora actuales en formato BCD que resulta útil para realizar visualizaciones o transmisiones a un dispositivo periférico. Estas palabras de sistema se pueden utilizar para almacenar la fecha y la hora de un evento. Las instrucciones BTI se utilizan para convertir fechas y horas de formato BCD a formato binario. Para obtener más información, consulte las Instrucciones de conversión BCD/binaria ( v éase página 82 ) .
Para asociar una fecha a un evento, basta con utilizar operaciones de asignación para transferir el contenido de palabras de sistema a palabras de memoria y luego procesar estas palabras de memoria (por ejemplo, transmisión a una pantalla mediante la instrucción EXCH).
En este ejemplo se muestra cómo fechar un flanco ascendente en una entrada %I0.1:
0
LDR %I0.1 [%MW11:5:=%SW49:5]
Consulte el procedimiento de reversibilidad ( v éase página 18 ) para obtener el diagrama de contactos equivalente. Una vez detectado un evento, la tabla de palabras tendrá el siguiente contenido:
%MW11
-
Día de la semana (1)
%MW12
00
Segundo
%MW13
Hora
Minuto
%MW14
Mes
Día
%MW15
Siglo
Año
1 = Lunes, 2 = Martes, 3 = Miércoles, 4 = Jueves, 5 = Viernes, 6 = Sábado, 7 = Domingo
EIO0000001477 12/2016
303
Datos de ejemplo para el lunes 3 de junio de 2013 a las 13:40:30:
%MW11
0001
lunes
%MW12
0030
30 segundos
%MW13
1340
13 horas, 40 minutos
%MW14
0603
06 = junio, el día 03
%MW15
2013
2013
Las palabras de sistema %SW54 a %SW57 contienen la fecha y la hora de la última parada, y la palabra %SW58 contiene el código que muestra la causa de la última parada, en formato BCD.
304
EIO0000001477 12/2016
Los ajustes de fecha y hora en el logic controller pueden actualizarse mediante uno de estos métodos: de la ficha de SoMachine Basic. Este Utilice la ficha método sólo está disponible en modalidad online (véase SoMachine Basic, Guía de funcionamiento) . Puede elegir entre dos métodos: Manual: este método muestra un selector de hora/fecha y le permite seleccionar manualmente la hora del logic controller. Automático: este método utiliza la hora del PC en el que se ejecuta SoMachine Basic.
Para obtener más información, consulte Gestión de RTC (véase SoMachine Basic, Guía de funcionamiento) . En un programa, mediante los bloques de funciones RTC ( v éase página 237 ) . En modalidad online, actualice las palabras del sistema, ya sea de forma directa o por programación mediante bloques de funciones, de %SW49 a %SW53 o la palabra del sistema %SW59.
La fecha y la hora sólo pueden definirse cuando la característica RTC está disponible en su logic controller (consulte la guía de programación del logic controller).
Para establecer la fecha y la hora utilizando las palabras de sistema de %SW49 a %SW53, el bit %S50 debe establecerse en 1. Si %S50 está establecido en 1, el logic controller no actualiza las palabras del sistema de %SW49 a %SW53. En un flanco descendente de %S50 (%S50 establecido en 0), el RTC interno del controlador se actualiza con los valores de %SW49 a %SW53. El controlador reanuda a continuación la actualización de %SW49 a %SW53 mediante el RTC. En esta tabla se indican las palabras del sistema que contienen los valores de fecha y hora actuales (en BCD) para las funciones de reloj en tiempo real (RTC) :
%SW49
xN día de la semana (N=1 para el lunes)
%SW50
00SS: segundos
%SW51
HHMM: hora y minutos
%SW52
MMDD: mes y día
%SW53
CCYY: siglo y año
Consulte la guía de programación de su controlador para obtener una lista completa de palabras y bits de sistema.
EIO0000001477 12/2016
305
Ejemplo de programación: 0
LD %S50 R %S50
–
1
LD %I0.1 [%SW50:=%MW11] [%SW51:=%MW12] [%SW52:=%MW13] [%SW53:=%MW14] S %S50
Consulte las Instrucciones de conversión de BCD/binario ( v éase página 82 ) .
) para obtener el diagrama de Consulte el procedimiento de reversibilidad ( v éase página 18 contactos equivalente.
Las palabras de %MW11 a %MW14 contienen la nueva fecha y hora (consulte Revisión del código BCD ( v éase página 82 ) ) y corresponden a la codificación de las palabras de %SW50 a %SW53. Se calcula automáticamente %SW49 (día de la semana) en función de la fecha proporcionada. La tabla de palabras debe contener la nueva fecha y hora:
%MW11
–
Segundo
%MW12
Hora
Minuto
%MW13
Mes
Día
%MW14
Siglo
Año
Ejemplo de datos para el 3 de junio de 2013:
%MW11
0030
30 segundos
%MW12
1340
13 horas, 40 minutos
%MW13
0603
06 = junio, el día 03
%MW14
2013
2013
Otro método para actualizar la fecha y la hora es utilizar el bit de sistema %S59 y la palabra de sistema de ajuste de fecha %SW59. El establecimiento del bit %S59 en 1 permite configurar la fecha y la hora actuales mediante la palabra %SW59. %SW59 aumenta o disminuye cada uno de los componentes de fecha y hora en un flanco ascendente. 306
EIO0000001477 12/2016
En esta tabla se describe cada bit de la palabra de sistema %SW59 para ajustar los parámetros de fecha y hora: Bit 0
Bit 8
Día de la semana (1)
Bit 1
Bit 9
Segundos
Bit 2
Bit 10
Minutos
Bit 3
Bit 11
Horas
Bit 4
Bit 12
Días
Bit 5
Bit 13
Mes
Bit 6
Bit 14
Años
Bit 7
Bit 15
Siglos(1)
El usuario no puede modificar (ni aumentar ni disminuir) el día de la semana ni los siglos.
Consulte la guía de programación de su controlador para obtener una lista completa de palabras y bits de sistema.
Este panel frontal se ha creado para modificar la hora, los minutos y los segundos del reloj interno.
Descripción de los comandos: El conmutador de horas/minutos/segundos selecciona la visualización de la hora para cambiarla mediante las entradas %I0.2, %I0.3 y %I0.4 respectivamente. El botón pulsador "+" aumenta la visualización del tiempo seleccionado mediante la entrada %I0.0. El botón pulsador "-" reduce la visualización del tiempo seleccionado mediante la entrada %I0.1.
EIO0000001477 12/2016
307
Este programa lee las entradas del panel y ajusta el reloj interno: 0
LD %M0 ST %S59
–
1
LD %I0.2 ANDR %I0.0 ST %SW59:X3
Hora
2
LD %I0.2 ANDR %I0.1 ST %SW59:X11
–
3
LD %I0.3 ANDR %I0.0 ST %SW59:X2
Minuto
4
LD %I0.3 ANDR %I0.1 ST %SW59:X10
–
5
LD %I0.4 ANDR %I0.0 ST %SW59:X1
Segundo
6
LD %I0.4 ANDR %I0.1 ST %SW59:X9
–
) para obtener el diagrama de Consulte el procedimiento de reversibilidad ( v éase página 18 contactos equivalente.
308
EIO0000001477 12/2016
SoMachine Basic Glosario EIO0000001477 12/2016
Según el estándar IEC, % es un prefijo que identifica direcciones de memoria interna en el controlador lógico que se utilizan para almacenar el valor de las variables del programa, constantes, E/S, etc. Según el estándar IEC, %Q representa un bit de salida (por ejemplo, un objeto de lenguaje de tipo OUT digital).
Un programa que incluye datos de configuración, símbolos y documentación. (Código estándar estadounidense para el intercambio de información ) Un protocolo que representa caracteres alfanuméricos (letras, números y algunos caracteres gr áficos y de control).
Una unidad de programación que dispone de una o varias entradas y devuelve una o varias salidas. Los FBs se llaman mediante una instancia (copia del bloque de funciones con nombre y variables dedicados), y todas las instancias tienen un estado persistente (salidas y variables internas) de una llamada a otra. Ejemplos: temporizadores, contadores Un bus de comunicación electrónico entre los módulos de E/S de ampliación y un controlador.
Organización e interconexión de los componentes de hardware en un sistema y los parámetros del hardware y software que determina las características operativas del sistema. Automatiza procesos industriales (también conocido como controlador lógico programable o controlador programable). EIO0000001477 12/2016
309
Glosario
(entrada/salida ) Convierte los niveles de tensión o corriente recibidos en valores numéricos. Puede almacenar y procesar estos valores en el controlador lógico.
Una representación gráfica de instrucciones de un programa de controlador con símbolos para contactos, bobinas y bloques en una serie de escalones ejecutados de forma secuencial por un controlador (consulte IEC 61131-3). Un programa escrito en el lenguaje de la lista de instrucciones que se compone de una serie de instrucciones basadas en texto y ejecutadas secuencialmente por el controlador. Cada instrucción incluye un número de línea, un código de instrucción y un operando (consulte IEC 61131-3).
El componente de una aplicación consistente en código fuente compilado capaz de poder ser instalado en la memoria de un controlador lógico.
(reloj de tiempo real ) Un reloj calendario de fecha/hora con respaldo de batería que funciona de forma continua aunque el controlador no reciba alimentación, mientras dure la batería.
Convierte los valores numéricos del controlador lógico y envía niveles de tensión o corriente proporcionales.
310
EIO0000001477 12/2016
SoMachineBasic Índice EIO000000147712/2016
%C, 173 %DR, 215 %I, 29 %IW, 29 %IWS, 29 %KD, 37 %KF, 37 %KW, 32 %M, 27 %MD, 37 %MF, 37 %MSG, 183 %MW, 32 %Q, 29 %QW, 29 %QWS, 29 %R, 206 %READ_VAR, 253 configuración, 257 descripción, 253 ejemplo de programación, 261 %S, 27 %SBR, 223 %SC, 228 %SCH, 233 %SEND_RECV_MSG, 279 configuración, 282 descripción, 279 ejemplo de programación, 285 %SEND_RECV_SMS, 287 configuración, 295 descripción, 287 %SW, 32 %TM, 161 %WRITE_READ_VAR, 271 configuración, 273 descripción, 271 ejemplo de programación, 277
EIO0000001477 12/2016
%WRITE_VAR, 263 configuración, 265 descripción, 263 ejemplo de programación, 269 %X, 27 %Xi (paso de Grafcet), propiedades , 243
ABS, 94 ACOS, 97 AND, 58 ANDF, 58 ANDN, 58 ANDR, 58 ASCII ejemplos, 194 ASIN, 97 Asistente Drum, 217 ATAN, 97 aumentar, 74
bits de sistema %S18, 38 bloque de funciones %SEND_RECV_SMS, 287 bloques de comparación insertar expresiones IL en, 24
311
Índice
bloques de funciones %READ_VAR, 253 %SEND_RECV_MSG, 279 %WRITE_READ_VAR, 271 %WRITE_VAR, 263 counter, 173 descripción general, 47 Drum, 215 fechadores, 233 LIFO/FIFO register, 206 message, 183 principios de programación, 155 Reloj de tiempo real (RTC), 238 shift bit register, 223 step counter, 228 timer, 161 bloques de operación insertar instrucciones de asignación en,
Drum configuración, 216 ejemplo de programación, 219 Drum descripción, 215
ejemplos, código fuente, 18 EQUAL_ARR, 120 EXCH, 181 EXP, 94 expresión de comparación insertar en los escalones del diagrama de contactos, 24 EXPT, 94
21
cadenas de bits, 42 cálculo, 74 código fuente, uso de ejemplos, 18 COS, 97 counter configuración, 175 descripción, 173 ejemplo de programación, 178
DEG_TO_RAD, 99 desborde índice, 46 desborde de índice, 46 DINT_TO_REAL, 100 direccionamiento formato, 29 objetos de E/S, 29 disminuir, 74 dividir, 74
fechadores programación y configuración, 235 FIND_, 122 flanco ascendente detección, 52 flanco descendente detección, 53 formato de dirección de entrada/salida, 29 funciones de reloj ajuste de fecha y hora, 305 descripción general, 302 marcas de fecha y hora, 303
Grafcet, propiedades de paso, 243
herramientas Objetos de accionamiento, 249 objetos de red, 151
instrucción NOP, 88 312
EIO0000001477 12/2016
Índice
instrucciones aritméticas, 74 ASCII, 102 booleano, 50 comparación, 65 conversión de ángulos, 99 conversión de ASCII a entero, 105 conversión de ASCII a flotante, 109 conversión de entero a ASCII, 107 conversión de entero/coma flotante, 100 conversión de flotante a ASCII, 111 END, 86 intercambio, 181 NOP, 88 objetos de entrada/salida, 145 pila, 113 ROUND, 103 salto, 89 SR, 91 subrutina, 91 tabla de objetos, 115 tablas de objetos, 118 trigonométricas, 97 instrucciones aritméticas, 74 instrucciones booleanas, 51 instrucciones de asignación cadenas de bits, 70 insertar en escalones del diagrama de contactos, 21 numérico, 69 palabras, 72 tablas de objetos, 116 instrucciones de comparación, 65 instrucciones de conversión BCD/binario, 82 palabras simples y dobles, 84 instrucciones de desplazamiento, 80 instrucciones de intercambio EXCH1, 181 EXCH2, 181 EXCH3, 181 instrucciones de pila MPP, 113 MPS, 113 MRD, 113 EIO0000001477 12/2016
instrucciones de SR (subrutina), 91 instrucciones END, 86 instrucciones lógicas, 78 instrucciones numéricas desplazamiento, 80 INT_TO_REAL, 100
LD, 54 LDF, 53 , 54 LDN, 54 LDR, 52 , 54 LIFO/FIFO register configuración, 208 descripción, 206 ejemplo de programación, 212 FIFO, 211 LIFO, 210 LKUP, 131 LN, 94 LOG, 94
MAX_ARR, 124 MEDIA, 136 message configuración, 187 descripción, 183 ejemplo de programación, 192 MIN_ARR, 124 modbus peticiones y ejemplos estándar, 196 multiplicar, 74
N, 64
313
Índice
objetos definición de, 26 dirección directa, 45 dirección indexada, 45 estructurados, 42 indexados, 45 red, 151 software, 153 tablas, 42 Objetos de accionamiento, 249 objetos de bit bloque de funciones, 48 objetos de bit de memoria descripción, 27 objetos de coma flotante descripción, 37 objetos de palabra bloque de funciones, 48 descripción, 32 objetos de palabra doble bloque de funciones, 48 descripción, 37 objetos de red, 151 , 151 OCCUR_ARR, 126 operaciones insertar en escalones del diagrama de contactos, 21 operador NOT, 64 operadores AND, 58 asignación, 56 carga, 54 NOT, 64 OR, 60 XOR, 62 operadores AND, 58 operadores de asignación, 56 operadores de carga, 54 operadores OR, 60 operadores OR exclusivos, 62 OR, 60 ORF, 60 ORN, 60 ORR, 60 314
palabras de sistema %SW17, 38 PID, 242 procesamiento numérico asignación, 69 descripción general, 68
R, 56 RAD_TO_DEG, 99 raíz cuadrada, 74 READ_IMM_IN, 138 REAL_TO_DINT, 100 REAL_TO_INT, 100 restar, 74 resto, 74 ROL_ARR, 127 ROR_ARR, 127 RTC configuración, 241
S, 56 schedule blocks descripción, 233 shift bit register configuración, 224 descripción, 223 ejemplo de programación, 226 SIN, 97 SORT_ARR, 129 SQRT, 94 ST, 56 step counter configuración, 229 descripción, 228 ejemplo de programación, 230 STN, 56 SUM_ARR, 118 sumar, 74
EIO0000001477 12/2016
Índice
tablas instrucciones, 115 TAN, 97 timer configuración, 162 descripción, 161 ejemplo de programación, 170 tipo TOF, 167 tipo TON, 164 tipo TP, 169 TRUNC, 94
uso de ejemplos de código fuente, 18
valor absoluto, 74
WRITE_IMM_OUT, 140
XOR, 62 XORF, 62 XORN, 62 XORR, 62
EIO0000001477 12/2016
315