SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

March 29, 2018 | Author: Ricky Mclaughlin | Category: Bit, Computer Memory, Programming Language, Table (Database), Computer Program


Comments



Description

SoMachine BasicEIO0000001477 11/2014 SoMachine Basic Guía de la biblioteca de funciones genéricas EIO0000001477.03 11/2014 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 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 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. © 2014 Schneider Electric. Reservados todos los derechos. 2 EIO0000001477 11/2014 Tabla de materias Información de seguridad . . . . . . . . . . . . . . . . . . . . . . . Acerca de este libro . . . . . . . . . . . . . . . . . . . . . . . . . . . . Capítulo 1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cómo utilizar ejemplos de código fuente. . . . . . . . . . . . . . . . . . . . . . . Bloques de operación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bloques de comparación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Capítulo 2 Objetos de lenguaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objetos de bit de memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objetos de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objetos de palabra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objetos de coma flotante y de palabra doble . . . . . . . . . . . . . . . . . . . Objetos estructurados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objetos indexados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objetos de bloques de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . Capítulo 3 Instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1 Procesamiento 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 Procesamiento 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instrucciones de conversión de BCD/binario. . . . . . . . . . . . . . . . . . . . Instrucciones de conversión de palabras simples y dobles. . . . . . . . . EIO0000001477 11/2014 7 9 13 14 17 18 19 20 21 23 26 30 34 37 39 41 42 43 46 48 50 52 54 56 57 59 60 61 62 64 66 70 72 74 76 3 3.3 Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instrucciones END . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instrucciones NOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instrucciones de salto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instrucciones de subrutina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 Coma 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 de pila. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instrucciones de pila (MPS, MRD, MPP) . . . . . . . . . . . . . . . . . . . . . . . 3.7 Instrucciones sobre las tablas de objetos . . . . . . . . . . . . . . . . . . . . . . Asignación de tablas de 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 y mínimo en tablas . . . . Número de apariciones de un valor en una tabla . . . . . . . . . . . . . . . . Funciones de desplazamiento circular de tablas . . . . . . . . . . . . . . . . . Funciones de clasificación en tablas . . . . . . . . . . . . . . . . . . . . . . . . . . Funciones de interpolación en la tabla de coma flotante (LKUP) . . . . Funciones de MEDIA de los valores de una tabla de coma flotante . . 3.8 Instrucciones sobre los objetos de E/S . . . . . . . . . . . . . . . . . . . . . . . . Entrada incrustada digital de lectura instantánea (READ_IMM_IN) . . Salida incrustada digital de escritura instantánea (WRITE_IMM_OUT) Capítulo 4 Objetos de software . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 Uso de bloques de funciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Principios de programación del bloque de funciones. . . . . . . . . . . . . . Añadido de un bloque de funciones. . . . . . . . . . . . . . . . . . . . . . . . . . . Configuración de un bloque de funciones . . . . . . . . . . . . . . . . . . . . . . 4 77 78 79 80 82 84 85 88 90 91 93 94 96 98 100 102 104 104 106 107 109 111 113 115 117 118 120 122 127 128 129 131 133 134 135 137 139 EIO0000001477 11/2014 4.2 Temporizador (%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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Registro LIFO/FIFO (%R) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funcionamiento del registro LIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funcionamiento del registro FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 Registro de bits de desplazamiento (%SBR) . . . . . . . . . . . . . . . . . . . Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5 Contador de pasos (%SC). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6 Contador (%C). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.7 Contador rápido (%FC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Contador rápido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.8 Contador de alta velocidad (%HSC) . . . . . . . . . . . . . . . . . . . . . . . . . . Contador de alta velocidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.9 Registro Drum (%DR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.10 Pulso (%PLS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pulso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.11 Modulación de ancho de pulsos (%PWM). . . . . . . . . . . . . . . . . . . . . . Modulación de ancho de pulsos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . EIO0000001477 11/2014 140 141 142 144 145 146 147 149 150 152 154 155 156 158 159 160 162 163 164 165 166 168 169 171 174 176 176 177 177 178 179 180 183 186 186 187 187 5 . . . . . . . . . . . . . . Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Descripción . . . . . . . . . . . . . . . . . Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Descripción general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Peticiones y ejemplos estándar Modbus . . . . . . . . . . . . . . . . . . . . . . . . . . . Descripción . . . . . . . . Salida de tren de pulsos. . . . . . . . . . Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ajuste de fecha y hora . . . . . . . . Configuración de la función . . . . . . . . . . . . . . . . . . . Función PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Glosario . . . . . . . . . . . . . . . . . . . . . . . . . Capítulo 5 Objetos de comunicación . . .12 Mensaje (%MSG) e intercambio (EXCH). . . . . . . . Configuración de la función . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplos de ASCII . . . . Capítulo 6 Fechadores (%SCH) . . . . . . . . . . . . . . . . . . .1 Leer datos desde un dispositivo remoto (%READ_VAR) . . . . . . . . . . . Configuración . . . Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo de programación . . . . . . Programación y configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5. . . . . . . . Capítulo 8 Funciones de reloj . .2 Escritura de datos en un dispositivo Modbus (%WRITE_VAR) . . . . . Funciones de reloj . . . . . . . Índice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 Leer y escribir datos en un dispositivo Modbus (%WRITE_READ_VAR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuración de la función . . . . . . . . . . . . . . . . . . . . Configuración de la función . Capítulo 7 Función PID . . . . . . . . . . . . . . . . . . . . . . . Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Marcas de fecha y hora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 188 189 191 194 198 200 202 211 211 213 214 215 219 221 222 223 225 227 228 229 231 233 234 235 238 240 241 242 244 247 247 249 250 251 253 257 259 EIO0000001477 11/2014 . . . . . . . . . .13 Salida de tren de pulsos (%PTO). . . . . . . . . . . . . . . . . . . . 5. . . . . . . . . . . . . . . . . . . . . 5.4 Comunicación en una conexión ASCII (%SEND_RECV_MSG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4. . . . . . . . . . . . . . . . . . . . . . . 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . EIO0000001477 11/2014 7 . utilizarlo o realizar su mantenimiento.Información de seguridad Información importante AVISO Lea atentamente estas instrucciones y observe el equipo para familiarizarse con el dispositivo antes de instalarlo. 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. puesta en servicio y mantenimiento de equipos eléctricos deberán ser realizados sólo por personal cualificado. 8 EIO0000001477 11/2014 . 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.TENGA EN CUENTA La instalación. Schneider Electric no se hace responsable de ninguna de las consecuencias del uso de este material. manejo. Una persona cualificada es aquella que cuenta con capacidad y conocimientos relativos a la construcción. pdf. Las características que se indican en este manual deben coincidir con las que figuran online. es posible que deba desplazar la página hacia abajo para consultar la hoja de datos.  Para obtener información sobre cómo agrupar módulos similares. 6 Para guardar o imprimir una hoja de datos como archivo . vaya a los resultados de búsqueda de Product datasheets y haga clic en la referencia deseada. 4 Si aparece más de una referencia en los resultados de búsqueda Products. Campo de aplicación La información de este manual es aplicable sólo para SoMachine Basic productos compatibles. Las características técnicas de los dispositivos que se describen en este documento también se encuentran online. vaya a los resultados de búsqueda de Product Ranges y haga clic en la gama deseada. De acuerdo con nuestra política de mejoras continuas. haga clic en la referencia deseada. 2 En el cuadro Search.  No incluya espacios en blanco en el número de modelo ni el rango de productos. utilice esta última para su referencia. es posible que a lo largo del tiempo revisemos el contenido con el fin de elaborar documentos más claros y precisos. 5 En función del tamaño de la pantalla. Las descripciones se aplican a todos los controladores lógicos compatibles con SoMachine Basic. En caso de que detecte alguna diferencia entre el manual y la información online. utilice los asteriscos (*). escriba la referencia del producto o el nombre de el rango de productos. EIO0000001477 11/2014 9 . Si ha introducido el nombre de un rango de productos.Acerca de este libro Presentación Objeto En esta guía se describe cómo utilizar bloques de funciones e instrucciones en los programas que cree con el software SoMachine Basic. Para acceder a esta información online: Paso Acción 1 Vaya a la página de inicio de Schneider Electric www.com. haga clic en Download XXX product datasheet.3. 3 Si ha introducido una referencia.schneider-electric. Este documento se ha actualizado con la publicación de SoMachine Basic V1. com. 10 EIO0000001477 11/2014 .schneider-electric.Documentos relacionados Título de la documentación Número de referencia Guía de funcionamiento de SoMachine Basic EIO0000001354 (ING) EIO0000001355 (FRA) EIO0000001356 (ALE) EIO0000001357 (ESP) EIO0000001358 (ITA) EIO0000001359 (CHI) EIO0000001366 (POR) EIO0000001367 (TUR) Modicon M221 Logic Controller Advanced Functions Library Guide EIO0000002007 (ING) EIO0000002008 (FRA) EIO0000002009 (ALE) EIO0000002010 (ESP) EIO0000002011 (ITA) EIO0000002012 (CHI) EIO0000002013 (POR) EIO0000002014 (TUR) Puede descargar estas publicaciones técnicas y otra información técnica de nuestro sitio web www. 1 Para obtener información adicional. Para las funciones de control críticas deben proporcionarse rutas de control separadas o redundantes. El incumplimiento de estas instrucciones puede causar la muerte. "Safety Guidelines for the Application.1 (última edición). Deben tenerse en cuenta las implicaciones de los retrasos de transmisión no esperados o los fallos en el enlace. instalación y utilización de sistemas de unidades de velocidad ajustable) o su equivalente aplicable a la ubicación específica. Installation.Información relativa al producto ADVERTENCIA PÉRDIDA DE CONTROL      El diseñador del esquema de control debe tener en cuenta las posibles modalidades de fallo de rutas de control y. consulte NEMA ICS 1. "Safety Standards for Construction and Guide for Selection. proporcionar los medios para lograr un estado seguro durante y después de un fallo de ruta. and Maintenance of Solid State Control" (Directrices de seguridad para la aplicación. por ejemplo. Tenga en cuenta todas las reglamentaciones para la prevención de accidentes y las directrices de seguridad locales. Installation and Operation of Adjustable-Speed Drive Systems" (Estándares de seguridad para la construcción y guía para la selección. la instalación y el mantenimiento del control de estado estático) y NEMA ICS 7. para ciertas funciones de control críticas.1 Cada implementación de este equipo debe probarse de forma individual y exhaustiva antes de entrar en servicio. ADVERTENCIA FUNCIONAMIENTO IMPREVISTO DEL EQUIPO   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. El incumplimiento de estas instrucciones puede causar la muerte. un corte de alimentación y un reinicio. una parada de emergencia y una parada de sobrerrecorrido. lesiones serias o daño al equipo. Funciones de control críticas son. Las rutas de control del sistema pueden incluir enlaces de comunicación.1 (última edición). EIO0000001477 11/2014 11 . lesiones serias o daño al equipo. 12 EIO0000001477 11/2014 . SoMachine Basic Introducción EIO0000001477 11/2014 Capítulo 1 Introducción Introducción Descripción general 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. Contenido de este capítulo Este capítulo contiene los siguiente apartados: Apartado Página Cómo utilizar ejemplos de código fuente 14 Bloques de operación 17 Bloques de comparación 18 EIO0000001477 11/2014 13 . 6 Repita los pasos previos para cualquiera de los escalones adicionales del programa de ejemplo. cree un nuevo escalón haciendo clic en herramientas. EIO0000001477 11/2014 . 14 5 Haga clic en el botón IL > LD para visualizar el código fuente de Lista de instrucciones. haga clic con el botón derecho del ratón y elija Pegar instrucciones para pegar el código fuente en el escalón: NOTA: Recuerde eliminar la instrucción LD de la última línea del escalón si ha pegado las instrucciones insertando las líneas antes del operador LD predeterminado. Puede ser necesario más de un escalón para un ejemplo completo.Introducción Cómo utilizar ejemplos de código fuente Descripción general Excepto donde se mencione explícitamente. 4 Seleccione el número de línea 0000. en la barra de 3 En este escalón. 2 En SoMachine Basic. 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. Procedimiento de reversibilidad Para obtener el código fuente de Diagrama de contactos equivalente: Paso 1 Acción Seleccione y copie (Ctrl+C) el código fuente del primer escalón del programa de muestra de este manual. haga clic en el botón LD > IL para visualizar el código fuente de Lista de instrucciones. I:=%MW34] ST %M1 EIO0000001477 11/2014 15 .E O END_BLK 1 LD %I0.F [%R2.2 ANDN %R2.O] 2 LD %I0.3 [%MW20:=%R2.Introducción Ejemplo Programa Lista de instrucciones: Escalón Código fuente 0 BLK %R0 LD %M1 I LD %I0.3 ANDN %R2. Introducción Diagrama de contactos correspondiente: 16 EIO0000001477 11/2014 . o bien  Seleccione Herramientas →Mensajes de programa.Introducción Bloques de operación Inserción de operaciones IL e instrucciones de asignación en diagramas de contactos Puede utilizar el símbolo gráfico del Bloque de operación para insertar operaciones de listas de instrucciones e instrucciones de asignación en escalones de diagrama de contactos: Para insertar un bloque de operación en un escalón: Paso Acción 1 Haga clic en el botón Bloque de operación 2 en la barra de herramientas. el borde del cuadro de la expresión de operación se vuelve de color rojo. Haga clic en el área de acción (las últimas 2 columnas) del escalón para insertar el Bloque de operación. haga lo siguiente:  Mueva el ratón sobre la línea de expresión de operación. Si necesita ayuda. 4 Escriba una operación de lista de instrucciones válida o una instrucción de asignación y pulse INTRO. EIO0000001477 11/2014 17 . 3 Haga doble clic en la línea de expresión de operación. Obtener ayuda con la sintaxis 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 Expresión de comparación se vuelve de color rojo. 18 EIO0000001477 11/2014 . 2 Haga clic en algún lugar del escalón para insertar el Bloque de comparación. Obtener ayuda con la sintaxis Si la operación de comparación de listas de instrucciones es incorrecta.Introducción Bloques de comparación Inserción de expresiones de comparación de IL en diagramas de contactos Puede utilizar el símbolo gráfico del Bloque de comparación para insertar expresiones de comparación de listas de instrucciones en escalones de diagrama de contactos: Siga estas instrucciones: Paso Acción 1 Haga clic en el botón Bloque de comparación en la barra de herramientas. 4 Escriba una operación de comparación de listas de instrucciones válida y pulse INTRO. Si necesita ayuda. haga lo siguiente:  Mueva el ratón sobre la línea Expresión de comparación oo  Seleccione Herramientas →Mensajes de programa. 3 Haga doble clic en la línea Expresión de comparación. SoMachine Basic Objetos de lenguaje EIO0000001477 11/2014 Capítulo 2 Objetos de lenguaje Objetos de lenguaje Contenido de este capítulo Este capítulo contiene los siguiente apartados: Apartado Página Objetos 20 Objetos de bit de memoria 21 Objetos de E/S 23 Objetos de palabra 26 Objetos de coma flotante y de palabra doble 30 Objetos estructurados 34 Objetos indexados 37 Objetos de bloques de funciones 39 EIO0000001477 11/2014 19 . como bits de memoria y palabras.3 es la dirección de una salida digital incrustada y %TM0 es la dirección de un bloque de funciones Timer. como temporizadores y contadores.  Variables internas del controlador. La memoria del controlador está preasignada para determinados tipos de objetos.Objetos de lenguaje Objetos Descripción general En SoMachine Basic. Los objetos solo pueden ser direccionados por un programa una vez que se ha asignado memoria. o bien se asigna automáticamente cuando una aplicación se descarga en el controlador lógico. 20 EIO0000001477 11/2014 . Los objetos pueden ser:  Variables de software simples. %Q0. como palabras y bits del sistema. Los objetos se direccionan mediante el prefijo %. 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. Por ejemplo.  Direcciones de las entradas y salidas digitales o analógicas. %MW12 es la dirección de una palabra de memoria.  Funciones predefinidas del sistema o de los bloques de funciones. consulte Objetos de E/S (véase página 23). La cantidad máxima de objetos depende de la cantidad de objetos configurada para los límites de la memoria disponible.Objetos de lenguaje Objetos de bit de memoria Introducción Los objetos de bit de memoria son variables de software de tipo bit que pueden utilizarse como operandos y verificarse mediante instrucciones booleanas. consulte Extracción de un bit de un objeto de palabra (véase página 29). consulte la guía de programación del Logic Controller. Para obtener información sobre cómo dirigir un bit extraído de una palabra. Para verificar la cantidad máxima de memoria disponible. Sintaxis Utilice este formato para dirigir objetos de bits de pasos. 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). X Los bits de pasos proporcionan el estado de las actividades del paso Grafcet. EIO0000001477 11/2014 21 . Tipo de objeto M Los bits de memoria almacenan valores intermedios mientras se ejecuta un programa. Identificador de instancia de objeto Para obtener información sobre cómo dirigir los bits de E/S. de memoria y de sistema: En esta tabla se describen los elementos en el formato de direccionamiento: Grupo Elemento Descripción Símbolo % El símbolo de porcentaje siempre precede a una variable de software. i El identificador del objeto que representa su instancia secuencial en la memoria. S Los bits de sistema proporcionan información de control y de estado del controlador. Objetos de lenguaje Descripción En esta tabla se enumeran y se describen los objetos de bits de pasos. además de controlar determinadas funciones a nivel de sistema. %Xi Sí (1) Escrito mediante el programa o utilizando una tabla de animación. %Si Depende de i Pasos Grafcet Los bits %X1 a %Xi se asocian a pasos Grafcet. Nota: los objetos de E/S no utilizados no pueden emplearse como bits de memoria. de memoria y de sistema que se utilizan como operandos en las instrucciones booleanas: Tipo Descripción Dirección o valor Acceso de escritura(1) Valores inmediatos 0 ó 1 (Falso o Verdadero) 0ó1 – Memoria Los bits de memoria son áreas de memoria interna utilizadas para almacenar valores binarios. Ejemplo En esta página se muestran algunos ejemplos de direccionamiento de objetos de bit: 22 Objeto de bit Descripción %M25 Bit de memoria número 25 %S20 Bit de sistema número 20 %X4 Paso Grafcet número 4 EIO0000001477 11/2014 . y en 0 cuando el paso está desactivado. El bit de paso Xi se establece en 1 cuando el paso correspondiente está activo. %Mi Sí Sistema Los bits de sistema %S0 a %S127 permiten monitorizar la operación correcta del controlador y la ejecución correcta del programa de aplicación. Todas las entradas y salidas físicas están asignadas a estos objetos en la memoria interna. (2) n es el número de módulos remotos configurados (máximo n+7).Objetos de lenguaje Objetos de E/S Introducción Los objetos de E/S incluyen tanto bits como palabras. 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).n(2) Canal de E/S en un módulo de ampliación conectado utilizando los módulos transmisor/receptor de TM3. EIO0000001477 11/2014 23 . El número de posición máximo es 14. Número de módulo (1) m es el número de módulos locales configurados (máximo 7).. 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. Los objetos de bit de E/S pueden utilizarse como operandos y se pueden comprobar con instrucciones booleanas.m(1) Canal de E/S en un módulo de ampliación conectado directamente con el controlador.. 1.. m+1. Sintaxis 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: Componente Elemento Valor Descripción 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 la entrada analógica (objeto de palabra) QWS – Estado de la salida analógica (objeto de palabra) y 0 Canal de E/S incrustada en el controlador lógico. El número de canales disponibles depende del modelo del controlador lógico o del tipo del módulo de ampliación. %IW0.z(2) No Descripción escritura(1) Estos bits son las imágenes lógicas de los estados eléctricos de la E/S digital física.Objetos de lenguaje Componente Elemento Valor Descripción Número de canal z De 0 a 31 Número de canal de E/S del controlador lógico o el módulo de ampliación. Estos objetos de palabra contienen el estado del canal analógico correspondiente.z(2) Sí Palabra de entrada %IWy.z(2) No(3) Bits de salida %Qy.z(2) No Estado de la palabra de salida %QWSy.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). estos se pueden forzar. EIO0000001477 11/2014 . Descripción En esta tabla se enumeran y describen todos los objetos de E/S que se utilizan como operandos en instrucciones: Tipo Dirección o valor Acceso de Bits de entrada %Iy. El número de posición máximo es 14. Estos objetos de palabra contienen el valor analógico del canal correspondiente. (2) n es el número de módulos remotos configurados (máximo n+7).z(2) No Palabra de salida %QWy.z(2) Sí Estado de la palabra de entrada %IWSy.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. (1) Escrito mediante el programa o utilizando una tabla de animación. (2) y es el número de módulo y z es el número de canal.1 Entrada analógica 1 en el controlador (E/S incrustada). (3) Aunque no pueda escribir en los bits de entrada. Se almacenan en la memoria de datos y se actualizan entre cada exploración de la lógica del programa. Ejemplos En la tabla se presentan varios ejemplos de direccionamiento de E/S: 24 Objeto de E/S Descripción %I0. Consulte Direccionamiento de sintaxis de E/S (véase página 23) para obtener descripciones de y y z. (1) m es el número de módulos locales configurados (máximo 7). Objetos de lenguaje Objeto de E/S Descripción %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). %QWS1.1 Estado de la salida analógica 1 del módulo de ampliación en la dirección 1 (E/S del módulo de ampliación). %IWS0.1 Estado de la entrada analógica 1 del controlador (E/S incrustadas). EIO0000001477 11/2014 25 . 768 hasta 32. Tipo de objeto M Las palabras de memoria almacenan valores mientras se ejecuta un programa. Identificador de instancia de objeto i El identificador del objeto que representa su instancia secuencial en la memoria. %IWSi. EIO0000001477 11/2014 . el valor de %MW10 no es válido y no se puede acceder a él ni interna ni externamente. consulte la guía de programación del Logic Controller. Ejemplos de objetos de palabra: Valores inmediatos  Palabras de memoria (%MWi)  Palabras constantes (%KWi)  Palabras de intercambio de E/S (%IWi. si la referencia máxima en su aplicación para palabras de memoria es %MW9.535). Su contenido solo se puede escribir o modificar utilizando SoMachine Basic.Objetos de lenguaje Objetos de palabra Introducción Objetos de palabra direccionados en forma de palabras de 16 bits. entonces el espacio asignado será desde %MW0 hasta %MW9. En este ejemplo. Formato W Palabra de 16 bits. que está entre 0 y 65. Por ejemplo. %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). K Las palabras constantes almacenan valores constantes o mensajes alfanuméricos. Para verificar la cantidad máxima de memoria disponible. almacenados en la memoria de datos y que pueden contener un valor entero desde -32. de memoria y constantes: En esta tabla se describen los elementos en el formato de direccionamiento: 26 Grupo Elemento Descripción Símbolo % El símbolo de porcentaje siempre precede a una dirección interna. S Las palabras de sistema proporcionan información de control y estado para el controlador lógico. La cantidad máxima de objetos depende de la cantidad de objetos configurada para los límites de la memoria disponible.767 (excepto para el bloque de funciones del Contador Rápido. Sintaxis Utilice este formato para dirigir palabras de sistema. %QWi. 768.PD De 0 a 4.V y %FC.295 EIO0000001477 11/2014 27 .P De 0 a 65.16#39]) se considera un carácter de fin.S1D y %HSC.V.579.  Si el primer carácter del operando es un carácter de "fin".’9’] ([16#30 .294. Por ejemplo.294. %HSC.S0.768. "HELLO"  %MW0:="HE"  %MW1:="LL"  %MW2:="O" Lista de excepciones En esta tabla se enumera el rango de valores de los objetos que son enteros sin signo: Objeto Valor %SW De 0 a 65. 16#A536) Sintaxis alternativa: #A536  Las reglas de formato ASCII son las siguientes:  La función siempre lee primero el byte más significativo.  En caso de desbordamiento (>32. %HSC.535 %FC.PD.  Todo carácter ASCII que se encuentre fuera del intervalo [’0’ .  Las palabras y los valores inmediatos (consulte la lista de excepciones (véase página 27) para conocer los enteros sin signo) pueden introducirse o recuperarse en el formato siguiente:  Decimal Mín.  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).535 %FC. %HSC.967.967.: 16#FFFF (por ejemplo.295 %HSC.DV.: 16#0000. excepto en el caso de un signo menos ’-’ (16#2D) cuando se coloca como primer carácter. se devuelve el valor 0 y el bit %S18 se establece en 1.767 (1.: 32. %HSC.767 o <-32.CD De 0 a 4. %HSC. %HSC.535 %HSC. Máx.P. por ejemplo)  Hexadecimal Mín.C De 0 a 65.VD y %FC.S0D. el bit de sistema %S18 (desborde aritmético o error detectado) se establece en 1 y se devuelve el valor 32.767 o -32.Objetos de lenguaje Formato 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.: -32.768).S1 y %HSC. 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. Máx. P De 0 a 32.648 a 2. etc. El número máximo de objetos disponibles está determinado por el controlador lógico.T De 100 a 1. No Base 10 (decimal) De -32. %Ci. Consulte la guía de programación de su controlador lógico para conocer el número máximo de objetos.R De 0 a 100 %PLS.P De 0 a 32. el resto de los datos tiene los rangos de valores siguientes:  Palabras: de -32.Objetos de lenguaje Objeto Valor %HSC.483. 28 EIO0000001477 11/2014 .N De 0 a 32. Bloques de funciones Estas palabras corresponden a los valores o parámetros actuales de los bloques de funciones.767 %PLS.000 %PWM.647 Descripción En esta tabla se describen los objetos de palabra: Palabras Descripción Dirección o valor Acceso de escritura(1) Valores inmediatos Se trata de valores enteros expresados en el mismo formato que las palabras de 16 bits. %MWi Sí Constantes Almacenan constantes o mensajes alfanuméricos. el ajuste de fechadores).P. %KWi No Estas palabras de 16 bits ofrecen diversas funciones: %SWi Depende de i %TM2.767 Base 16 (hexadecimal) De 16#0000 a 16#FFFF Memoria Palabras "temporales" empleadas para almacenar valores durante la operación en la memoria de datos.768 a 32.147.767 %PLS.768 a 32. Su contenido sólo se puede escribir o modificar mediante software durante la configuración.483. Sí Sistema  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.ND De 0 a 2.147.647 Aparte de los objetos de la lista de excepciones.147. lo que permite que los valores se puedan asignar a estas palabras.767 %PWM.P. (1) Escrito mediante el programa o utilizando una tabla de animación.767  Palabras dobles: de -2.483. z:Xk(2) Sí Valor de entrada (1) Escrito mediante el programa o utilizando una tabla de animación. consulte Direccionamiento de objetos de E/S (véase página 23). se extraerá el bit almacenado en la tercera posición secuencial de la palabra de memoria %MW0. %MW0. EIO0000001477 11/2014 29 . Por ejemplo.X3.z:Xk(2) No Estado de salida %QWSy. (2) Para obtener información sobre objetos de palabra de E/S.z:Xk (2) Sí Estado de entrada %IWSy.z:Xk (2) No Valor de salida %QWy. Xk Indica el número del bit que debe extraerse del objeto de palabra.Objetos de lenguaje Ejemplo En esta tabla se presentan diversos ejemplos de direccionamiento de objetos de palabras: Objeto de palabra Descripción %MW15 Palabra de memoria número 15 %KW26 Palabra constante número 26 %SW30 Palabra de sistema número 30 Extracción de un bit de un objeto de palabra En esta tabla se describe cómo extraer 1 de los 16 bits de los siguientes objetos de palabra: Objeto de palabra Dirección o valor Acceso de escritura(1) Memoria %MWi:Xk Sí Sistema %SWi:Xk Depende de i Constante %KWi:Xk No %IWy. NOTA: El valor 1285 se interpreta como un valor entero. Formato y valor de la coma flotante El formato de coma flotante utilizado es el de la norma IEEE STD 734-1985 (equivalente a IEC 559).. 2.23} Bits {22.3 o 1. En esta tabla se representa el formato de un valor de coma flotante: Bit 31 Bits {30.%MW) x<0 y.. 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.Objetos de lenguaje Objetos de coma flotante y de palabra doble Introducción Un objeto de coma flotante es un número real. para tenerse en cuenta como valor de coma flotante.0 EIO0000001477 11/2014 .7E38 Potencia de un entero por EXPT(y. consulte la guía de programación de su controlador lógico. Rango límite de funciones aritméticas en objetos de coma flotante En esta tabla se describe el rango límite de las funciones aritméticas en los objetos de coma flotante: Función aritmética 30 Rango límite y operaciones no válidas Tipo Sintaxis #QNAN (no válido) #INF (infinito) Raíz cuadrada de un operando SQRT(x) x<0 x > 1.ln(x) > 88 Logaritmo de Base 10 LOG(x) x <= 0 x > 2.0). x) (donde: un real x^y = %MW^%MF) EXPT(%MF. La longitud de las palabras es de 32 bits. un número con una parte fraccionaria (por ejemplo: 3. Las operaciones con coma flotante y palabras dobles no se pueden realizar en todos los controladores lógicos..0. lo que corresponde a números de coma flotante de decimal simple.65E38 Exponencial natural EXP(x) x<0 x > 88. Para obtener información sobre compatibilidad.4E+38. es decir.0} Signo del exponente Exponente Significando La precisión de la representación es de 2 a 24.4E38 Logaritmo natural LN(x) x <= 0 x > 1. Para visualizar los números de coma flotante no es necesario mostrar más de 6 dígitos tras la coma decimal. debe escribirse: 1285.. el resultado no es un número (1.#NAN) %SW17:X1 Reservado %SW17:X2 División entre 0.#INF) %SW17:X3 Resultado superior en valor absoluto a +3.#NAN o -1. el resultado es infinito (-1.#INF o 1. Formato Identificador de instancia de objeto EIO0000001477 11/2014 31 . también la puede restablecer el programa para volver a utilizarla. D Objeto de palabra doble de 32 bits. Consulte la guía de programación de su controlador lógico para conocer el número máximo de objetos. Tipo de objeto M Los objetos de memoria se utilizan para almacenar valores intermedios mientras se ejecuta un programa.#INF o 1.Objetos de lenguaje Comprobación de validez El bit de sistema %S18 se establece en 1 cuando el resultado no se encuentra dentro del rango válido.#INF) %SW17:X4 to X15 Reservado El sistema restablece esta palabra a 0 tras un arranque en frío. el resultado es infinito (-1. Sintaxis 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: En esta tabla se describen los elementos en el formato de direccionamiento: Grupo Elemento Descripción Símbolo % El símbolo de porcentaje siempre precede a una dirección interna. Diferentes bits de la palabra %SW17: %SW17:X0 Operación no válida. F Objeto de coma flotante de 32 bits. K Las constantes se utilizan para almacenar valores constantes o mensajes alfanuméricos (únicamente para palabras dobles). La palabra de estado %SW17 indica la causa de un error detectado en una operación flotante. i Identificador que representa una instancia (posición secuencial) de un objeto en la memoria.402824E+38. %MFi Sí %MDi Sí %KFi Sí (no según el programa) %KDi Sí (no según el programa) Palabra doble de memoria Valor de constante flotante Se utiliza para almacenar constantes. consulte la guía de programación de la plataforma de hardware para obtener más información. Ejemplo En esta tabla se presentan algunos ejemplos del direccionamiento de objetos de palabra doble y coma flotante: 32 Objeto Descripción %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 EIO0000001477 11/2014 . Constante doble NOTA: El número máximo de objetos está determinado por el controlador lógico.Objetos de lenguaje Descripción de objetos de coma flotante y de palabra doble En esta tabla se describen los objetos de coma flotante y de palabra doble: Tipo de objeto Descripción Dirección Acceso de escritura Valores inmediatos Números enteros (palabra doble) o decimales (coma flotante) de formato idéntico al de los objetos de 32 bits. - No Coma flotante de memoria Objetos empleados para almacenar valores durante la operación en la memoria de datos. la palabra %MWi contiene los bits menos significativos y la palabra %MWi+1 los bits más significativos de la palabra %MFi. Así.. En esta tabla se muestra cómo se superponen las palabras de memoria dobles y las flotantes: Flotante y doble Dirección impar Palabras de memoria %MF1 / %MD1 %MW1 %MF3 / %MD3 %MW3 %MF0 / %MD0 %MW0 %MF2 / %MD2 %MW2 %MF4 / %MD4 %MW4 .... %KFi / %KDi %KFi+1 / %KDi+1 Palabras de memoria %KW0 %KWi %KWi+1 Ejemplo: %MF0 corresponde a %MW0 y %MW1.. . %MFi+1 / %MDi+1 %MWi+1 En esta tabla se muestra el solapamiento de constantes flotantes y dobles: Flotante y doble Dirección impar %KF0 / %KD0 %KF1 / %KD1 %KF2 / %KD2 %KW1 %KW2 %KF3 / %KD3 %KF4 / %KD4 %KW3 %KW4 . %MW5 %MFi / %MDi %MWi .. la palabra flotante %MFi y la palabra doble %MDi se corresponden con las palabras de longitud simple %MWi y %MWi+1. de doble longitud y flotantes se guardan en el espacio de datos en una misma zona de memoria...... EIO0000001477 11/2014 33 . . %KF543 corresponde a %KW543 y %KW544.. %KW5 .Objetos de lenguaje Posibilidad de solapamiento entre objetos Las palabras simples. 0:L No Bits de salida digital %Q0. Las cadenas de bits pueden utilizarse con la instrucción de asignación (véase página 48). tabla de palabras dobles y tabla de palabras flotantes). Para controladores lógicos con 24 o 32 canales de E/S. SoMachine Basic admite los siguientes tipos de objetos estructurados:  Cadenas de bits  Tablas de palabras  Tablas de palabras dobles  Tablas de palabras flotantes Cadenas de bits Las cadenas de bits son series de bits de objetos adyacentes del mismo tipo y con una longitud definida (L). tabla de palabras. consulte la guía de programación de la plataforma de hardware para obtener más información. Se hace referencia a las cadenas de bits a partir de los límites de bytes.0:L o %Q1.Objetos de lenguaje Objetos estructurados Introducción Los objetos estructurados son combinaciones de objetos adyacentes.0:L (1) Sí Bits de sistema %Si:L con i múltiplo de 8 En función de i Bits de pasos Grafcet %Xi:L con i múltiplo de 8 Sí (mediante el programa) Bits de memoria %Mi:L con i múltiplo de 8 Sí (1) (1) Sólo se pueden leer los bits de E/S de 0 a 16 de una cadena de bits. 34 EIO0000001477 11/2014 . El número de bits está determinado por el controlador lógico. Tipos de bits disponibles Tipos de bits disponibles para cadenas de bits: Tipo Dirección Acceso de escritura Bits de entrada digital %I0.0:L o %I1. los bits superiores a 16 no se pueden leer en una cadena de bits. L Representa la longitud de los objetos estructurados (cadenas de bits. Ejemplo: Cadena de bits %M8:6 NOTA: %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). el valor máximo es 255). EIO0000001477 11/2014 35 . Ejemplo: Tabla de palabras %KW10:7 Las tablas de palabras pueden utilizarse con la instrucción de asignación (véase página 48). Tablas de palabras dobles 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).Objetos de lenguaje Tablas de palabras Una tabla de palabras es una serie de palabras adyacentes del mismo tipo y de una longitud definida (L. Ejemplo: Tabla de palabras dobles %KD10:7 Las tablas de palabras dobles pueden utilizarse con la instrucción de asignación (véase página 48). consulte la guía de programación de la plataforma de hardware para obtener más información. Tipos de palabras disponibles Tipos de palabras disponibles para tablas de palabras: Tipo Dirección Acceso de escritura 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. Ejemplo: Tabla de coma flotante %KF10:7 Las tablas de coma flotante pueden utilizarse con la instrucción de asignación (véase página 48). Tipos de palabras flotantes disponibles Tipos de palabras disponibles para tablas de palabras flotantes: 36 Tipo Dirección Acceso de escritura Palabras de memoria %MFi:L Sí Palabras constantes %KFi:L No EIO0000001477 11/2014 . el valor máximo es 255).Objetos de lenguaje Tipos de palabras dobles disponibles Tipos de palabras disponibles para tablas de palabras dobles: Tipo Dirección Acceso de escritura Palabras de memoria %MDi:L Sí Palabras constantes %KDi:L No Tablas de palabras flotantes Una tabla de palabras flotantes es una serie de palabras adyacentes del mismo tipo y de una longitud definida (L. Los objetos indexados pueden utilizarse con la instrucción de asignación (véase página 61) y en instrucciones de comparación (véase página 57). Identificador de instancia de objeto del objeto de índice cuyo contenido debe añadirse a la dirección directa de otro objeto. Direccionamiento indexado 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. escribir en %MW108[%MW2] es igual que escribir en %MW120 (108 más 12). Ejemplo: %MW108[%MW2] es una palabra con una dirección compuesta por la dirección directa 108 más el contenido de la palabra %MW2. El contenido del índice se añade a la dirección directa del objeto. Consulte la guía de programación de su controlador lógico para conocer el número máximo de objetos. Si la palabra %MW2 tiene un valor de 12. EIO0000001477 11/2014 37 . El índice lo define una palabra de memoria %MWi. Existen dos tipos de direccionamiento de objetos:  Direccionamiento directo  Direccionamiento indexado Direccionamiento directo La dirección directa de un objeto se establece y se define cuando se escribe un programa. Ejemplo: %M26 es un bit de memoria con la dirección directa 26. Objetos disponibles para el direccionamiento indexado En esta tabla se describen los tipos de objetos disponibles para las direcciones indexadas: Tipo Dirección Acceso de escritura 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 i j Identificador de instancia de objeto que representa una instancia (posición secuencial) de un objeto en la memoria.Objetos de lenguaje Objetos indexados Introducción Un objeto indexado es una palabra simple o doble o un objeto de coma flotante con una dirección de objeto indexado. No utilice operandos de diferentes tipos de datos en operaciones matemáticas. modificando el contenido del objeto del índice en el programa. %S20 (estado inicial = 0):  En caso de desborde del índice: establecido en 1 por el controlador.  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. el sistema establece en 1 el bit de sistema %S20 y se asigna al objeto un valor de índice de 0. lesiones serias o daño al equipo. Bit de sistema de desborde de índice %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. El incumplimiento de estas instrucciones puede causar la muerte. NOTA: El usuario es el responsable de monitorizar cualquier desborde. El programa debe leer %S20 para un posible procesamiento. ADVERTENCIA FUNCIONAMIENTO IMPREVISTO DEL EQUIPO    Escriba instrucciones de programación para comprobar la validez de los operandos que se van a utilizar en operaciones matemáticas. En resumen:  La dirección del objeto más el contenido del índice es menor que 0. Monitorice siempre los bits del sistema asignados para indicar resultados matemáticos no válidos. En caso de desborde de índice. 38 EIO0000001477 11/2014 .Objetos de lenguaje Este tipo de direccionamiento permite explorar series de objetos del mismo tipo (como palabras de memoria y constantes) de manera sucesiva.  Reconocimiento de desborde: establecido manualmente en 0 en el programa después de modificar el índice. A continuación deberá confirmar que se restablece a 0.  Especificando el tipo de bloque (por ejemplo. LD E) si están cableados al bloque en programación (véase página 135) reversible. EIO0000001477 11/2014 39 . y en una tabla de animación que utilice estas entradas/salidas no se pueden mostrar los estados actuales de estas. 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. %HSC. Ejemplo En esta ilustración se muestra un bloque de funciones StepCounter: Objetos de bit Los objetos de bit corresponden a las salidas del bloque de funciones.x y %Q0. estos bits de entrada y salida no se pueden utilizar directamente en el programa del usuario. 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).x).x. Por lo tanto.E). Todas las instancias de bloque de funciones tienen un estado persistente (salidas y variables internas) desde una llamada a la otra.x y %Q0. El controlador no actualiza los bits de imágenes (%I0. LD %Ci. Puede accederse a las entradas en forma de instrucciones.Objetos de lenguaje Objetos de bloques de funciones Introducción Un bloque de funciones es un objeto reutilizable que acepta uno o varios valores de entrada y devuelve uno o varios valores de salida. NOTA: Los bloques de funciones (%FC. %PLS y %PWM) y la alarma de estado dirigen sus entradas y salidas (%I0. afectadas en la configuración) directamente sin relación con el ciclo del controlador. tales como contadores rápidos (%FC).Objetos de lenguaje Objetos de palabra Los objetos de palabra corresponden a parámetros especificados y a valores. 40 EIO0000001477 11/2014 . contadores de alta velocidad (%HSC) y generadores de pulsos (%PLS.  Valores actuales: por ejemplo.  %FCi. %Ci. 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.V es el valor actual del contador rápido en formato estándar. pero a otros no (por ejemplo.V. 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. solo tiene que agregar el carácter D a la sintaxis original de los objetos de palabra estándar. el valor actual de conteo. %PWM). Para direccionar los objetos de palabra doble de 32 bits usados con bloques de funciones. parámetros de preselección).VD es el valor actual del contador rápido en formato de palabra doble. base de tiempo). Objetos de palabra doble Los objetos de palabra doble aumentan la capacidad computacional del controlador lógico mientras se ejecutan las funciones del sistema. 4 Coma flotante 84 3.3 Programa 77 3.1 Procesamiento booleano 42 3.5 ASCII 3.7 Instrucciones sobre las tablas de objetos 106 3.6 Operadores de pila 104 3.2 Procesamiento numérico 59 3.8 Instrucciones sobre los objetos de E/S 128 EIO0000001477 11/2014 93 41 .SoMachine Basic Instrucciones EIO0000001477 11/2014 Capítulo 3 Instrucciones Instrucciones Contenido de este capítulo Este capítulo contiene las siguientes secciones: Sección Apartado Página 3. 1 Procesamiento booleano Procesamiento booleano Objeto de esta sección En esta sección se ofrece una introducción a las instrucciones de procesamiento booleano. LDN. S) 48 Operadores AND lógicos (AND. STN. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado 42 Página Instrucciones booleanas 43 Operadores de carga (LD. ANDN. XORR. LDF) 46 Operadores de asignación (ST. ANDR.Instrucciones Sección 3. ANDF) 50 Operadores OR lógicos (OR. LDR. XORF) 54 Operador NOT (N) 56 Instrucciones de comparación 57 EIO0000001477 11/2014 . XORN. ORN. R. ORF) 52 Operadores OR exclusivos (XOR. ORR. %I0. ST Descripción El resultado booleano de los elementos de prueba se aplica a los elementos de acción como muestran las siguientes instrucciones: Escalón Instrucción 0 LD AND ST %I0.1 %Q0. 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. Elementos de acción La instrucción de almacenamiento (ST) equivale a una bobina.0 El contacto se cierra cuando el bit %I0.0 El objeto de bit asociado toma un valor lógico del acumulador de bits (resultado de lógica anterior).Instrucciones Instrucciones booleanas Introducción Las instrucciones booleanas pueden compararse con los elementos del lenguaje del diagrama de contactos. %Q0. Comprobación de las entradas del controlador Pueden utilizarse instrucciones de prueba booleanas para detectar flancos ascendentes o descendentes en las entradas del controlador.0 NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. Se detecta un flanco cuando el estado de una entrada cambia de "explorar n-1" a "explorar n".0 %I0. EIO0000001477 11/2014 43 .0 se encuentra en estado 1. Dicho flanco permanece detectado durante la exploración actual. Estas instrucciones se resumen en la tabla siguiente: Elemento Operador Ejemplo de instrucción 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. 0 descendente NOTA: El flanco ascendente y descendente solo se pueden aplicar con %I y %M.0 NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente.Instrucciones Detección de un flanco En esta tabla se resumen las instrucciones de detección de flancos y su temporización: Flanco Instrucción IL Flanco ascendente LDR %I0.0 Diagrama de contactos Diagrama de tiempos Flanco LDF %I0. Como se muestra en este ejemplo. Detección de flanco ascendente La instrucción Cargar flanco ascendente (LDR) equivale a un contacto de detección de flanco ascendente. 44 EIO0000001477 11/2014 . se utiliza un contacto de detección de transición positiva para detectar un flanco ascendente: Escalón Instrucción 0 LDR %I0. El flanco ascendente detecta el cambio del valor de entrada de 0 a 1. se utiliza un contacto de detección de transición negativa para detectar un flanco descendente: Escalón Instrucción 0 LDF %I0.Instrucciones Detección de flanco descendente La instrucción Cargar flanco descendente (LDF) equivale a un contacto de detección de flanco descendente.0 NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. EIO0000001477 11/2014 45 . El flanco descendente detecta el cambio de la entrada de control de 1 a 0. Como se muestra en este ejemplo. %Q. LDF) Introducción Los operadores de carga LD.5 NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente.x %IW:Xk. %M. %BLK. LDR y LDF corresponden respectivamente a los contactos abierto. %X. %SW:Xk.3 1 LDN ST %M0 %Q0. %IWS:Xk. %KW:Xk LDR %I. 46 EIO0000001477 11/2014 .3 %Q0. de flanco ascendente y de flanco descendente. LDR.1 %Q0.2 2 LDR ST %I0. %MW:Xk. %QWS:Xk. Sintaxis En esta tabla se enumeran los tipos de operadores de carga con los equivalentes del diagrama de contactos y los operandos permitidos: Operadores Equivalente del diagrama de contactos Operandos permitidos LDN 0/1 %I. cerrado. %S. LDN. LDR y LDF sólo se utilizan con entradas del controlador lógico y palabras de memoria.Instrucciones Operadores de carga (LD.1 %Q0. %QW:Xk. %M LD LDF Ejemplos de codificación Ejemplos de instrucciones de carga: Escalón Instrucción 0 LD ST %I0.4 3 LDF ST %I0. LDN. Instrucciones Diagrama de tiempos 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 11/2014 47 . STN. S) Introducción Los operadores de asignación ST. R.x %QW:Xk.Instrucciones Operadores de asignación (ST. STN.1 %Q0. S y R corresponden respectivamente a las bobinas directa. Sintaxis En esta tabla se enumeran los tipos de operadores de asignación con los equivalentes del diagrama de contactos y los operandos permitidos: Operadores Equivalente del diagrama de contactos ST Operandos permitidos %Q. 48 EIO0000001477 11/2014 . inversa. %X.2 %Q0. %SW:Xk(1) STN S R (1) %SW:Xk se encuentra en palabras de sistema que no son de sólo lectura. %S.2 %Q0.4 NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. %M. %MW:Xk.3 %Q0. %BLK. Ejemplos de codificación Ejemplos de instrucciones de asignación: Escalón Instrucción 0 LD ST STN S %I0. Set y Reset.4 1 LD R %I0. Instrucciones Diagrama de tiempos 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 11/2014 49 . %QWS:Xk.4 3 LD ANDF S %M3 %I0.4 %Q0.Instrucciones Operadores AND lógicos (AND.5 NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. Sintaxis En esta tabla se enumeran los tipos de operadores AND con los equivalentes del diagrama de contactos y los operandos permitidos: Operadores Equivalente del diagrama de contactos Operandos permitidos ANDN 0/1 %I. %BLK. %KW:Xk ANDR %I. flanco ascendente o flanco descendente) y el resultado booleano de la instrucción anterior. %M. 50 EIO0000001477 11/2014 . %S.2 2 LD ANDR S %I0. ANDR. %QW:Xk. %MW:Xk. %X.x %IW:Xk. %Q.3 1 LD ANDN ST %M0 %I0.0 %Q0.5 %Q0. %SW:Xk. %M AND ANDF Ejemplos de codificación Ejemplos de instrucciones AND lógicas: Escalón Instrucción 0 LD AND ST %I0. ANDF) Introducción Los operadores AND realizan una operación lógica AND entre el operando (o su inverso. %IWS:Xk.1 %M1 %Q0. ANDN.3 %I0. Instrucciones Diagrama de tiempos 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 11/2014 51 . Instrucciones Operadores OR lógicos (OR, ORN, ORR, ORF) Introducción 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. Sintaxis En esta tabla se enumeran los tipos de operadores OR con los equivalentes del diagrama de contactos y los operandos permitidos: Operadores OR Equivalente del diagrama de contactos Operandos permitidos 0/1 %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 52 EIO0000001477 11/2014 Instrucciones Ejemplos de codificación Ejemplos de instrucciones OR lógicas: Escalón Instrucción 0 LD OR ST %I0.1 %M1 %Q0.0 1 LD ORN ST %I0.2 %M2 %Q0.1 2 LD ORR S %M0 %I0.3 %Q0.5 3 LDF ORF S %I0.5 %I0.6 %Q0.0 NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. Diagrama de tiempos 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 11/2014 53 Instrucciones Operadores OR exclusivos (XOR, XORN, XORR, XORF) Introducción 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. Sintaxis En la tabla siguiente se enumeran los tipos de operadores XOR y los operandos permitidos: Operadores Equivalente del diagrama de contactos XOR Operandos permitidos %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 Ejemplos de codificación En caso de utilizar la instrucción XOR: 54 Escalón Instrucción 0 LD XOR ST %I0.1 %M1 %Q0.3 EIO0000001477 11/2014 Instrucciones Instrucciones lógicas equivalentes del operador XOR: Escalón Instrucción 0 LD ANDN OR( ANDN ) ST %I0.1 %M1 %M1 %I0.1 %Q0.3 NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. Diagrama de tiempos En el siguiente diagrama se muestran la temporización (y el efecto en la salida) del código de los ejemplos de codificación: Casos especiales 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 11/2014 55 Instrucciones Operador NOT (N) Introducción El operador NOT (N) tiene un operando implícito: el resultado almacenado en el acumulador booleano. NOT niega el valor del acumulador. Sintaxis En esta tabla se muestra el operador N: Operador Equivalente del diagrama de contactos Operandos permitidos No aplicable. N Ejemplos de codificación Ejemplo de una instrucción NOT: Escalón Instrucción 0 LD N ST %I0.1 %Q0.0 NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. Diagrama de tiempos En el siguiente diagrama se muestran la temporización (y el efecto en la salida) del código de los ejemplos de codificación: 56 EIO0000001477 11/2014 %KFi. %SWi. %QW. %KDi Valor inmediato. <. Puede insertar expresiones de comparación de la lista de instrucciones (véase página 18) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de comparación. =. %SWi.Instrucciones Instrucciones de comparación Introducción Los operadores de comparación se utilizan para comparar 2 operandos. %MWi. >=. %KWi. %QWi. %KD[%MWi] Palabras de coma flotante %MFi. En esta tabla se enumeran los tipos de operadores de comparación: Operador Funció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 Sintaxis A continuación. %KFi[%MWi] NOTA: Las instrucciones de comparación pueden utilizarse entre paréntesis. <> LD [Op1 operador Op2] AND [Op1 operador Op2] OR [Op1 operador Op2] En esta tabla se muestra la información de los operandos: Tipo Op1 Op2 Palabras %MWi. %MDi[%MWi]. %MFi. %IWSi. %KDi. %MDi. %MFi[%MWi]. %BLK. EIO0000001477 11/2014 57 .x. %IW. %QWSi. %IW. <=. se describe la sintaxis de la lista de instrucciones. Sintaxis de las instrucciones de comparación: Operador Sintaxis >. %BLK. %KWi[%MWi] Palabras dobles %MDi.x Valor inmediato. %MWi[%MWi]. %KWi. %KFi Valor de coma flotante inmediato. Ejemplos de instrucciones de comparación: Escalón Instrucción 0 LD AND ST %I0. El resultado es 1 cuando la comparación solicitada es verdadera.2 [%MF30>=%MF40] %Q0.Instrucciones Ejemplos de codificación La comparación se ejecuta entre corchetes siguiendo las instrucciones LD.3 1 LD AND ST %M0 [%MW20<%KW35] %Q0. AND y OR. 58 EIO0000001477 11/2014 .5 Ejemplo de utilización de una instrucción de comparación entre paréntesis: Escalón Instrucción 0 LD AND( OR ) ST %M0 [%MF20>10.1 NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente.0] %I0.0 %Q0.2 [%MW10>100] %Q0.4 2 LD OR ST %I0. Instrucciones Sección 3.2 Procesamiento numérico Procesamiento numérico Objeto de esta sección En esta sección se ofrece una introducción al procesamiento numérico. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado Página Introducción a operaciones numéricas 60 Instrucciones de asignación 61 Asignación de cadenas de bits 62 Asignación de palabras 64 Operadores aritméticos en enteros 66 Instrucciones lógicas 70 Instrucciones de desplazamiento 72 Instrucciones de conversión de BCD/binario 74 Instrucciones de conversión de palabras simples y dobles 76 EIO0000001477 11/2014 59 . Si el resultado de la operación lógica anterior era falso (acumulador booleano = 0). Si el resultado de la operación lógica anterior era verdadero (acumulador booleano = 1). Se escriben entre corchetes. se ejecuta la instrucción numérica.Instrucciones Introducción a operaciones numéricas Presentación Normalmente. la instrucción numérica no se ejecuta y el operando permanece intacto. las instrucciones numéricas se aplican a palabras de 16 bits y a palabras dobles de 32 bits. 60 EIO0000001477 11/2014 . se describe la sintaxis de la lista de instrucciones. Sintaxis de las instrucciones de asignación: Operador Sintaxis := [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  EIO0000001477 11/2014 61 . Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. Sintaxis A continuación.Instrucciones Instrucciones de asignación Introducción Las instrucciones de asignación se utilizan para cargar el Op2 (operando 2) en el Op1 (operando 1). %Xi:L %TMi.O.%QWi. %IW. %QWi. %PWMi. %FCi.P) se utiliza para describir cualquier palabra de bloque de funciones. %C0.x.PD NOTA: La abreviatura %BLK. %FCi.P. %Si:L.P. %IWSi.P. %Qi:L. %MDi[%MWi] %Mi:L.P. %Ci. %KWi[%MWi]. %MDi[%MWi].%Qi:L. %MWi. %Ci.Instrucciones Asignación de cadenas de bits Introducción 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  Sintaxis A continuación.PD. se describe la sintaxis de la lista de instrucciones. %MWi[%MWi].O.P.P. %PLSi.I.%BLK. %Xi:L.P %Ci. %Ri.P %Ci.P. %PLSi. %Ii:L %TMi. %QWSi. %PWMi. %Si:L. %KDi[%MWi].P. %Mi:L. %Ri. %Ri. %SWi %MWi[%MWi]. %FCi.x (por ejemplo.PD. %MDi. palabra doble %MWi. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. %KWi.PD Valor inmediato. %SWi. %Ri. Sintaxis de las asignaciones de cadenas de bits: Operador Sintaxis := [Op1 := Op2] Op1 toma el valor de Op2 En la tabla siguiente se ofrece información detallada de los operandos: Tipo Op1 Op2 Palabra. %FCi.I. 62 EIO0000001477 11/2014 . 2 [%MW100:=%M0:16] 2 LDR %I0. 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).3 [%MW104:16:=%KW0] NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente.0:8:=%M64:8] 1 LD %I0.  EIO0000001477 11/2014 63 .Instrucciones Estructura Ejemplos de asignaciones de cadenas de bits: Escalón Instrucción 0 LD 1 [%Q0. x (por ejemplo. palabra %BLK. %MFi[%MWj] NOTA: La abreviatura %BLK. %Ii:L Coma flotante Valor de coma flotante inmediato. %Qi:L. 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) Sintaxis A continuación. %MWi.. %MWi. %Mi:L. Sintaxis de asignaciones de palabras: Operador Sintaxis := [Op1 := Op2] Op1 toma el valor de Op2 En esta tabla se muestra la información de los operandos: Tipo Op1 Op2 Palabra.. %KDi. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. %QWi. %Mi:L. %KFi. . %Xi:L Valor inmediato. %MDi. %MDi[%MWj]. %KWi. 8. %KDi[MWj]. %IW. %MFi. 96. .).Instrucciones Asignación de palabras Introducción Las operaciones de asignación se pueden ejecutar en las palabras y en las palabras dobles siguientes:  Palabra (indexada) a palabra (2. %KFi[%MWj] %MFi. R3... 64 EIO0000001477 11/2014 . %SWi. se describe la sintaxis de la lista de instrucciones. %Si:L y %Xi:L. %Si:L. cadena de bits %MWi[MWi]. %MDi. Para las cadenas de bits %Mi:L. la dirección de base del primer bit de la cadena debe ser un múltiplo de 8 (0. %QWi. %IWSi. %Qi:L. %Si:L. %MWi[MWi]. QWSi.I) se utiliza para describir cualquier palabra del bloque de funciones. %KWi[MWi]. %Xi:L. %SWi doble. %MDi[%MWj]. 16. %MFi[%MWj]..x. 3 [%MW10:=100] NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. EIO0000001477 11/2014 65 .Instrucciones Estructura Ejemplos de asignaciones de palabras: Escalón Instrucción 0 LD 1 [%SW112:=%MW100] 1 LD %I0.2 [%MW0[%MW10]:=%KW0[%MW20]] 2 LD %I0. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación./. se describe la sintaxis de la lista de instrucciones. Sintaxis de las instrucciones aritméticas: 66 Operador Sintaxis +.*. En esta tabla se enumeran los tipos de operadores aritméticos: Operador Función + 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 Sintaxis A continuación.-.REM [Op1: = Op2 operador Op3] INC. DEC [operador Op1] SQRT (1) [Op1: = SQRT(Op2)] ABS (1) [Op1: = ABS(Op2)] EIO0000001477 11/2014 .Instrucciones Operadores aritméticos en enteros Introducción Los operadores aritméticos se utilizan para realizar operaciones aritméticas entre 2 operandos enteros o en 1 operando entero. %MWi.648 y 2.3 [%MW10:=32767] NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. %MDi. %KWi. %KDi. NOTA: Para las palabras dobles.Instrucciones En esta tabla se muestra la información de los operandos: Tipo Op1 Op2 y Op3(1) Palabras %MWi.x) (2) (1) Con este operador. El programa de usuario gestiona el bit %S18.483. %BLK.147. La función ABS sólo se puede emplear con palabras dobles (%MD y %KD) y comas flotantes (%MF y %KF).147. Por lo tanto. OP1 y OP2 deben ser palabras dobles o comas flotantes. %MDi.x representa todos objetos de bloques.  EIO0000001477 11/2014 67 . %MDi. Palabras dobles %QWi.x(2) %BLK.x(2) Valor inmediato. %BLK.483. Estructura Ejemplos de instrucciones aritméticas: Escalón Instrucción 0 LD %M0 [%MW0:=%MW10+10] 1 LD %I0. (2) %BLK.x Immediate value.647. 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 69)). %QWSi. %SWi. %SWi. Op2 no puede ser un valor inmediato.2 [%MW0:=SQRT(%MW10)] 2 LDR %I0. %BLK. el bit %S18 (desborde) se establece en 1 y el resultado no es significativo. %IWi. %IWSi. %BLK. Casos especiales Suma  Desborde durante la operación con palabras Si el resultado supera la capacidad de la palabra de resultados.x (Valor inmediato. los límites son -2. %QWi. Multiplicación Desborde durante la operación Si el resultado supera la capacidad de la palabra resultado. %KDi.  Desborde durante la operación Si el cociente de la división supera la capacidad de la palabra resultado. El resultado es incorrecto. el resultado siempre es positivo. Si el operando de la raíz cuadrada es negativo. De este modo. la división es imposible y el bit del sistema %S18 se establece en 1. Las consecuencias de cualquiera de estos errores detectados dependen de la configuración. el bit %S18 se establece en 1. Es responsabilidad del usuario monitorizar estos 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.Instrucciones División/resto  División entre 0 Si el divisor es 0. Monitorice siempre los bits del sistema asignados para indicar resultados matemáticos no válidos. Extracción de la raíz cuadrada  Desborde durante la operación La extracción de la raíz cuadrada sólo se realiza en valores positivos. el equipo utilizado y las instrucciones del programa que se hayan ejecutado antes y después de la detección de los posibles errores. Algunos de los errores matemáticos detectados podrían tener un efecto importante en la ejecución de su aplicación. El controlador los establece en 1 y el programa debe restablecerlos para que puedan volver a utilizarse (para ver un ejemplo. No utilice operandos de diferentes tipos de datos en operaciones matemáticas. 68 EIO0000001477 11/2014 . NOTA: El programa de aplicación es responsable de la gestión de los bits de sistema %S17 y %S18. lesiones serias o daño al equipo. el bit de sistema %S18 se establece en 1 y el resultado es incorrecto. El incumplimiento de estas instrucciones puede causar la muerte. consulte la página anterior). ADVERTENCIA FUNCIONAMIENTO IMPREVISTO DEL EQUIPO    Escriba instrucciones de programación para comprobar la validez de los operandos que se van a utilizar en operaciones matemáticas. su valor se fija en 32.853.241 y %MW2 = 21.Instrucciones Ejemplo de aplicación Desborde durante la suma: Escalón Instrucción 0 LD %M0 [%MW0:=%MW1+%MW2] 1 LDN %S18 [%MW10:=%MW0] 2 LD %S18 [%MW10 :=32767] NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. el bit %S18 se establece en 1 y el valor de %MW0 (-20.094). Si %MW1 = 23. Por lo tanto.767. cuando el resultado es superior a 32.442) es incorrecto. el resultado sería (45. En este ejemplo. que no puede expresarse en una palabra de 16 bits con signo.767. EIO0000001477 11/2014 69 . en el caso del NOT lógico. Op2 no puede ser un valor inmediato. XOR [Op1: = Op2 operador Op3] NOT [Op1:=NOT(Op2)] %MWi.3 [%MW102:=NOT(%MW100)] NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente.x Valor inmediato (1). Estructura Ejemplos de instrucciones lógicas: Escalón Instrucción 0 LD %M0 [%MW0:=%MW10 AND 16#00FF] 1 LD 1 [%MW0:=%KW5 OR %MW10] 2 LD %I0. %IWSi. %QWi. %KWi. Sintaxis de las instrucciones lógicas: Operador Sintaxis Op1 Op2 y Op3 AND. %BLK. %SWi. 70 EIO0000001477 11/2014 . OR. En esta tabla se enumeran los diferentes tipos de instrucciones lógicas: Instrucción Función 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 Sintaxis A continuación. %SWi. 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 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación.x (1) Con NOT. %QWi. %IWi. en 1 operando de palabra. %BLK. %QWSi. %MWi.Instrucciones Instrucciones lógicas Introducción Los operadores lógicos pueden utilizarse para realizar operaciones lógicas entre 2 operandos de palabra o. el resultado será %MW15 = 0001 0010 (binario) (18.Instrucciones Ejemplo de aplicación Instrucción AND lógica: [%MW15:=%MW32 AND %MW12] Cuando %MW32 = 0001 1011 (binario) (27. decimal). decimal). decimal) y %MW12 = 0011 0110 (binario) (54. EIO0000001477 11/2014 71 . ambos incluidos NOTA: El bit de sistema %S17 indica el valor del último bit expulsado.n) Desplazamiento lógico de n posiciones hacia la derecha. 72 EIO0000001477 11/2014 .n) Desplazamiento lógico de n posiciones hacia la izquierda.n) Desplazamiento circular de n posiciones hacia la izquierda.n) Desplazamiento circular de n posiciones hacia la derecha.Instrucciones Instrucciones de desplazamiento Introducción Las instrucciones de desplazamiento mueven los bits de un operando un determinado número de posiciones hacia la izquierda o hacia la derecha. SHR(op2. Desplazamiento circular ROL(op2. En esta tabla se enumeran los tipos de instrucciones de desplazamiento: Instrucción Función Desplazamiento lógico SHL(op2. ROR(op2. ambos incluidos  palabra doble: 1-32. n Valor inmediato entero para:  palabra: 1-16. x %MWi.5)] 1 LDR %I0. %SWi. %BLK. ROR n Valor inmediato entero para:  palabra: 1-16. %QWi. se describe la sintaxis de la lista de instrucciones. EIO0000001477 11/2014 73 .8)] NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. ambos incluidos En esta tabla se muestra la información de los operandos: Tipos Op1 Op2 Palabras %MWi.1 [%MW0:=SHL(%MW10.x %MDi.Instrucciones Sintaxis A continuación. SHR [Op1: = operador (Op2. Sintaxis de las instrucciones de desplazamiento: Operador Sintaxis SHL. %KDi %BLK.x Estructura Ejemplos de instrucciones de desplazamiento: Escalón Instrucción 0 LDR %I0. %IWSi.x Palabras dobles %MDi %BLK. ambos incluidos  palabra doble: 1-32. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación.2 [%MW10:=ROR(%KW9. %IWi. %QWSi. %SWi %BLK. %KWi.n)] ROL. %QWi. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. un objeto de palabra doble de 32 bits podrá contener uno de ocho cifras.  La palabra %MW5 se convierte en la palabra %MW12 mediante la instrucción BTI. Sintaxis A continuación.Instrucciones Instrucciones de conversión de BCD/binario Introducción Las instrucciones de conversión realizan conversiones entre distintas representaciones de números. Un objeto de palabra de 16 bits puede contener un número de cuatro dígitos (entre 0000 y 9999) y. por consiguiente.  La palabra%MW12 expresa el valor decimal 2450 que corresponde al valor binario: 0000 1001 1001 0010. se describe la sintaxis de la lista de instrucciones. En esta tabla se enumeran los tipos de instrucciones de conversión de BCD/binario: Instrucción Función BTI Conversión de BCD a binario ITB Conversión de binario a BCD Revisión del código BCD El decimal codificado en binario (BCD) representa un dígito decimal (entre 0 y 9) codificado con cuatro bits binarios. La palabra %MW12 se convierte en la palabra %MW5 mediante la instrucción ITB. Este bit se debe verificar y restablecer a 0 mediante el programa. Sintaxis de las instrucciones de conversión BCD/binario: 74 Operador Sintaxis BTI. el bit de sistema %S18 se establece en 1 si el valor no es BCD. Durante una conversión. 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. ITB [Op1 := operador (Op2)] EIO0000001477 11/2014 . x %MDi. el resultado de un cálculo.x %MWi. La instrucción ITB se utiliza para mostrar los valores numéricos (por ejemplo. EIO0000001477 11/2014 75 .2 [%MW10:=ITB(%KW9)] NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. %KDi %BLK. %SWi. %IWSi. %QWSi. %BLK. %QWi.x Estructura Ejemplos de instrucciones de conversión BCD/binario: Escalón Instrucción 0 LD %M0 [%MW0:=BTI(%MW10)] 1 LD %I0. Ejemplo de aplicación 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. %QWi.Instrucciones En esta tabla se muestra la información de los operandos: Tipos Op1 Op2 Palabras %MWi. %SWi %BLK. %IWi. %KWi.x Palabra doble %MDi %BLK. el valor actual de un bloque de funciones) en monitores de operación con codificación BCD. x %MWi. %BLK. Sintaxis de las instrucciones de conversión de palabras simples y dobles: Operador Sintaxis Op1 Op2 Op3 LW. Op3)) %MDi. %KDi. %KWi.Instrucciones Instrucciones de conversión de palabras simples y dobles Introducción En esta tabla se describen las instrucciones utilizadas para realizar conversiones entre palabras simples y dobles: Instrucción Función LW Extrae el byte menos significativo de una palabra doble a una palabra. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación.x %MWi.3 [%MD11:=CONCATW(%MW10. Sintaxis A continuación. CONCATW Concatena dos palabras para formar una palabra doble. %KWi [-] Estructura Ejemplos de instrucciones de conversión de palabras simples y dobles: Escalón Instrucción 0 LD %M0 [%MW0:=HW(%MD10)] 1 LD %I0. 76 EIO0000001477 11/2014 .2 [%MD10:=DWORD(%KW9)] 2 LD %I0. %KDi.%MW5)] NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. HW Op1 = operador (Op2) %MWi %MDi. valor inmediato %MWi. %KDi. se describe la sintaxis de la lista de instrucciones. %BLK. HW Extrae el byte más significativo de una palabra doble a una palabra. valor inmediato DWORD Op1 = operador (Op2) %MDi. DWORD Convierte una palabra de 16 bits en una palabra doble de 32 bits. %BLK.x [-] CONCATW Op1 = operador (Op2. %KWi. Instrucciones Sección 3.3 Programa Programa Objeto de esta sección En esta sección se ofrece una introducción a las instrucciones del programa. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado Página Instrucciones END 78 Instrucciones NOP 79 Instrucciones de salto 80 Instrucciones de subrutina 82 EIO0000001477 11/2014 77 . Instrucciones Instrucciones END Introducción Las instrucciones END definen el final de la ejecución de una exploración del programa. END. cuando se activa el fin de un programa. Ejemplos Ejemplo de una instrucción END incondicional: Escalón Instrucción 0 LD %M1 ST %Q0.2 2 END Ejemplo de una instrucción END condicional: Escalón Instrucción 0 LD %I0. ENDC y ENDCN Están disponibles tres instrucciones END diferentes: END: fin incondicional del programa.2 4 END NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente.1 ST %Q0.0 1 LD %I0.2 ENDC 3 LD %I0. 78 EIO0000001477 11/2014 .1 1 LD %M2 ST %Q0.  ENDC: fin del programa si el resultado booleano de la instrucción de prueba anterior es 1. las salidas se actualizan y se inicia la siguiente exploración. cuando se alcanza el final del periodo se actualizan las salidas y se inicia la exploración siguiente.  De forma predeterminada (modalidad normal). Si la exploración es periódica.1 2 LD %I0.3 ST %Q0.  ENDCN: fin del programa si el resultado booleano de la instrucción de prueba anterior es 0.0 ST %Q0. EIO0000001477 11/2014 79 .Instrucciones Instrucciones NOP Introducción 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. 0 4 %L12: LD %I0.Instrucciones Instrucciones de salto Introducción 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).  Ejemplos Ejemplos de instrucciones de salto: Escalón Instrucción 0 LD JMPC %M15 %L8 1 LD ST JMPC [%MW24<%MW12] %Q0. JMP.  JMPCN: salto de programa si el resultado booleano de la lógica anterior es 0.  JMPC: salto de programa si el resultado booleano de la lógica anterior es 1. 80 EIO0000001477 11/2014 . JMPC y JMPCN Existen tres instrucciones de salto diferentes disponibles: JMP: salto de programa incondicional.4 NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente.3 %L12 2 %L8: LD AND ST JMPC %M12 %M13 %M12 %L12 3 LD S %M11 %Q0.0 ST %Q0. debe prestarse especial atención al tiempo de exploración del programa. EIO0000001477 11/2014 81 .Instrucciones Directrices     Las instrucciones de salto no están permitidas entre paréntesis y no deben situarse entre las instrucciones AND. El salto de programa se realiza hacia una línea de programación ubicada en sentido ascendente o descendente. Un tiempo de exploración prolongado puede provocar la activación del temporizador de watchdog. LDR. OR y una instrucción de cierre de paréntesis ")". LDF o BLK. El número de etiqueta de la etiqueta %Li debe definirse solo una vez en un programa. LDN. Cuando el salto está ubicado en sentido ascendente. La etiqueta solo puede situarse antes de una instrucción LD. Guía de funcionamiento) para obtener información sobre cómo crear una POU disponible y una subrutina. Ejemplos Ejemplo de instrucciones que contienen una subrutina: 82 Escalón Instrucción 0 LD AND ST %M15 %M5 %Q0. Para obtener más información sobre las subrutinas. Llamada de una subrutina en tres pasos: 1 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. 2 Se hace referencia a la subrutina mediante un POU disponible SRn.4 %M13 %Q0. donde n es el número de subrutinas. y cómo definir el número de subrutina.0 1 LD SR1 [%MW24>%MW12] 2 LD AND ST END %I0. Consulte también Gestión de POU (véase SoMachine Basic.1 EIO0000001477 11/2014 . consulte Creación de una tarea periódica (véase SoMachine Basic. 3 La instrucción de subrutina debe escribirse independientemente de la POU disponible del programa principal. Guía de funcionamiento) para obtener más información sobre cómo gestionar POU con tareas y escalones. Consulte POU disponibles (véase SoMachine Basic.Instrucciones Instrucciones de subrutina Introducción 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. Guía de funcionamiento). Procedimiento Se crea una subrutina en una POU disponible. OR ni una instrucción de cierre de paréntesis ")". Las instrucciones de subrutina no pueden aparecer entre paréntesis y no deben situarse entre las instrucciones AND. EIO0000001477 11/2014 83 . Cuando una instrucción de asignación va seguida directamente de una llamada a una subrutina en IL. Si se intenta llamar a una subrutina de una POU disponible.0 NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. Esto se debe a que es posible que la subrutina modifique el contenido del acumulador booleano. es posible que tenga un valor de retorno diferente al que tenía antes de la llamada.Instrucciones Ejemplo de instrucción de subrutina (SR1): Escalón Instrucción 0 (SR1) LD ST %I0. Directrices    Una subrutina no debe llamar a otra subrutina. Por lo tanto. se detectará un error del compilador. se debe tener cuidado.0 %Q0. Instrucciones Sección 3. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado 84 Página Instrucciones aritméticas en objetos de coma flotante 85 Instrucciones trigonométricas 88 Instrucciones de conversión de ángulos 90 Instrucciones de conversión de entero/coma flotante 91 EIO0000001477 11/2014 .4 Coma flotante Coma flotante Objeto de esta sección En esta sección se describen las instrucciones avanzadas de coma flotante. Instrucciones Instrucciones aritméticas en objetos de coma flotante Introducción Estas instrucciones permiten efectuar una operación aritmética entre 2 operandos de coma flotante o en 1 operando de coma flotante: Instrucción Objetivo + 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 Sintaxis 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 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. Operadores y sintaxis de las instrucciones aritméticas en coma flotante: Operadores Sintaxis +, - *, / Op1:=Op2 operador Op3 SQRT, ABS, TRUNC, LOG, EXP, LN Op1:=operador (Op2) EXPT Op1:=operador (Op2,Op3) EIO0000001477 11/2014 85 Instrucciones Operandos de las instrucciones aritméticas en coma flotante: Operadores Op1 Op2 Op3 +, - *, / %MFi %MFi, %KFi, valor inmediato %MFi, %KFi, valor inmediato SQRT, ABS, LOG, EXP, LN %MFi %MFi, %KFi [-] TRUNC %MFi, %MD i %MFi, %KFi [-] EXPT %MFi %MFi, %KFi %MWi, %KWi, valor inmediato Nota: SoMachine Basic impide el uso de la función con un %MWi como Op1. Estructura Ejemplo de una instrucción aritmética: Escalón Instrucción 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)] NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. 86 EIO0000001477 11/2014 Instrucciones Reglas de utilización    Las operaciones con valores de coma flotante y enteros no se pueden mezclar directamente. Las operaciones de conversión (véase página 90) llevan a cabo la conversión a uno de los formatos. El bit de sistema %S18 se gestiona del mismo modo que las operaciones con enteros (véase página 90); 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. NOTA: En la instrucción TRUNC, el bit de sistema %S17 no se ve afectado. Ejemplos de aplicación de la instrucción TRUNC con %MDi En la siguiente tabla se muestran ejemplos de la instrucción TRUNC cuando se utiliza %MDi para almacenar el resultado: Ejemplo 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 doble con signo máximo) (1) %S18 se establece en 1 TRUNC(-94.56E+13) - 2 147 483 648 (palabra doble con signo mínimo) (1) %S18 se establece en 1 (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). EIO0000001477 11/2014 87 Instrucciones Instrucciones trigonométricas Introducción Estas instrucciones permiten realizar operaciones trigonométricas: SIN seno de un ángulo expresado en radianes ASIN arco seno (resultado entre COS coseno de un ángulo expresado en radianes ACOS TAN tangente de un ángulo expresado en radianes y arco coseno (resultado entre 0 y ) ) ATAN arco tangente (resultado entre y ) Sintaxis 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 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. Operadores, operandos y sintaxis de las instrucciones de operaciones trigonométricas Operadores Sintaxis Op1 Op2 SIN, COS, TAN, ASIN, ACOS, ATAN Op1:=operador(Op2) %MFi %MFi, %KFi Estructura Ejemplo de instrucciones Trigonometric: Escalón Instrucción 0 LD %M0 [%MF0:=SIN(%MF10)] 1 LD %I0.0 [%MF1:=TAN(%MF20)] 2 LD %I0.3 [%MF2:=ATAN(%MF30)] NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. 88 EIO0000001477 11/2014 Instrucciones Reglas de utilización  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 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 ángulos que se encuentran fuera del periodo comprendido entre y , debido a que el módulo imprecisión en el parámetro antes de realizar cualquier operación. EIO0000001477 11/2014 provoca una 89 Instrucciones Instrucciones de conversión de ángulos Introducción Estas instrucciones permiten llevar a cabo operaciones de conversión: Conversión de grados a radianes. Reglas de utilización El ángulo que se va a convertir debe estar comprendido entre -737. el resultado es el valor del ángulo comprendido entre 0 y 360 grados RAD_TO_DEG Sintaxis A continuación. los bits %S18 y %SW17:X0 se establecen en 1. 90 EIO0000001477 11/2014 . Operadores.280. Para los valores no comprendidos entre estos límites. se describe la sintaxis de la lista de instrucciones.0 y +737. %KFi Estructura Ejemplo de instrucciones de conversión: Escalón Instrucción 0 LD %M0 [%MF0:=DEG_TO_RAD(%MF10)] 1 LD %M2 [%MF2:=RAD_TO_DEG(%MF20)] NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. el resultado mostrado será +1. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. operandos y sintaxis de las instrucciones de conversión Operadores Sintaxis Op1 Op2 DEG_TO_RAD RAD_TO_DEG Op1:=operador(Op2) %MFi %MFi.#QNAN.280. el resultado es el valor del ángulo comprendido DEG_TO_RAD entre 0 y Conversión de un ángulo expresado en radianes.0 (para conversiones DEG_TO_RAD) o entre y (para conversiones RAD_TO_DEG). 905.%KDi Ejemplo: Conversión de una palabra doble entera a flotante: 68. Operadores y sintaxis (conversión de una palabra entera a flotante): Operadores Sintaxis INT_TO_REAL Op1=INT_TO_REAL(Op2) Operandos (conversión de una palabra entera a flotante): Op1 Op2 %MFi %MWi.000 a 6.8905e+07 EIO0000001477 11/2014 91 .%KWi Ejemplo: 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): Operadores Sintaxis DINT_TO_REAL Op1=DINT_TO_REAL(Op2) Operandos (conversión de una palabra doble entera a flotante): Op1 Op2 %MFi %MDi. 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 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación.Instrucciones Instrucciones de conversión de entero/coma flotante Introducción 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 el 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) Sintaxis A continuación. Instrucciones Operadores y sintaxis (conversión de flotante a palabra entera o palabra doble entera): Operadores Sintaxis REAL_TO_INT Op1=operador(Op2) REAL_TO_DINT Operadores (conversión de flotante a palabra entera o palabra doble entera): Tipo Op1 Op2 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 NOTA: 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. Estructura Ejemplo de instrucción de conversión de entero/flotante: Escalón Instrucción 0 LD 1 [%MF0:=INT_TO_REAL(%MW10)] 1 LD I0.8 [%MD2:=REAL_TO_DINT(%MF9)] NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. Precisión de redondeo 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. 92 EIO0000001477 11/2014 Instrucciones Sección 3.5 ASCII ASCII Objeto de esta sección En esta sección se describen las instrucciones avanzadas de ASCII. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado Página Instrucciones ROUND 94 Instrucciones de conversión de ASCII a entero 96 Instrucciones de conversión de entero a ASCII 98 Instrucciones de conversión de ASCII a flotante 100 Instrucciones de conversión de flotante a ASCII 102 EIO0000001477 11/2014 93 Instrucciones Instrucciones ROUND Introducción La instrucción ROUND redondea una representación de coma flotante almacenada en una cadena ASCII. Sintaxis 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 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. Para la instrucción ROUND, utilice la sintaxis: Op1 := ROUND( Op2,Op3 ). Por ejemplo: [%MW0:7:=ROUND(%MW8,4)] Parámetros En esta tabla se describen los parámetros de la función ROUND: Parámetros Descripción 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 Reglas de utilización 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).    94 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 11/2014 Instrucciones Casos especiales El software comprueba la sintaxis. Los ejemplos siguientes producirían errores de sintaxis: Sintaxis incorrecta Sintaxis correcta %MW10:= ROUND(%MW1,4) falta ":7" en el resultado %MW10:7 := ROUND(%MW1,4) %MW10:13:= ROUND(%MW1,4) %MW10:n, donde n ≠ 7 es incorrecto %MW10:7 := ROUND(%MW1,4) Ejemplo de aplicación En esta tabla se muestran ejemplos de la instrucción ROUND: Ejemplo Resultado ROUND("987654321", 5) "987650000" ROUND("-11.1", 8) "-11.1" ROUND("NAN") "NAN" EIO0000001477 11/2014 95 Instrucciones Instrucciones de conversión de ASCII a entero Introducción Las instrucciones de conversión de ASCII a entero convierten una cadena ASCII en un valor entero. Sintaxis 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 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. Para las instrucciones de conversión de ASCII a entero, use la sintaxis siguiente: Op1 := ASCII_TO_INT( Op2 ) Por ejemplo: [%MW0:=ASCII_TO_INT(%MW8)] Parámetros En esta tabla se describen los parámetros de la función de conversión de ASCII a entero: Parámetros Descripción Op1 %MW en el que se almacena el resultado. Op2 %MW o %KW. Reglas de utilización 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.  96 EIO0000001477 11/2014 3 %MW12 6#2038 ‘ ‘. 2 %MW11 16#3133 1. 8 %MW13 16#3820 8. ‘ ‘ En esta tabla se muestran ejemplos de la conversión de ASCII a entero: Ejemplo Resultado %MW20 := ASCII_TO_INT(%MW10) %MW20 = 29318 %MW20 := ASCII_TO_INT(%MW12) %MW20 = 8 %MW20 := ASCII_TO_INT(%MW13) %MW20 = 0 y %S18 se establece en 1 EIO0000001477 11/2014 97 .Instrucciones Ejemplo de aplicación Tenga en cuenta que los siguientes datos ASCII se han almacenado entre %MW10 y %MW13: Parámetro Valor hexadecimal Valor ASCII %MW10 16#3932 9. Op2 %MW.768 y 32.  Errores de sintaxis El software comprueba la sintaxis. Los ejemplos siguientes producirían errores de sintaxis: 98 Sintaxis incorrecta Sintaxis correcta %MW10 := INT_TO_ASCII(%MW1) falta ":4" en el resultado %MW10:4 := INT_TO_ASCII(%MW1) %MW10:n := INT_TO_ASCII(%MW1) %MW10:n. use la sintaxis siguiente: Op1 := INT_TO_ASCII( Op2 ) Por ejemplo: [%MW0:4:=INT_TO_ASCII(%MW8)] Parámetros En esta tabla se describen los parámetros de la función de conversión de entero a ASCII: Parámetros Descripción Op1 %MW en el que se almacena el resultado. %QW o cualquier PALABRA. donde n ≠ 4 es incorrecto %MW10:4 := INT_TO_ASCII(%MW1) EIO0000001477 11/2014 . (No se aceptan valores inmediatos) Reglas de utilización Las reglas de conversión de entero a ASCII son las siguientes: Op2 debe estar entre -32.767. Sintaxis A continuación.  La función determina automáticamente cuántos %MWs se deben llenar con valores ASCII (de 1 a 4).  El carácter de fin es "Enter" (ASCII 13). %IW.Instrucciones Instrucciones de conversión de entero a ASCII Introducción Las instrucciones de conversión de entero a ASCII convierten un entero en un valor de cadena ASCII. %SW. %KW. se describe la sintaxis de la lista de instrucciones. Para las instrucciones de conversión de entero a ASCII. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación.  La función siempre escribe primero el byte más significativo. . 2 %MW10 = 16#3936 9. 6 %MW11 = 16#000D ’enter’ 99 ..Instrucciones Ejemplo de aplicación Para la instrucción MW10:4 := INT_TO_ASCII(%MW1): Si. Valor entero %MW1 = 123 %MW1 = 45 %MW1 = 7 %MW1 = -12369 EIO0000001477 11/2014 Entonces. 7 %MW10 = 16#3145 1. 1 %MW11 = 16#0D33 3 %MW10 = 16#3534 5. ’-’ %MW11 = 16#3332 3... Valor hexadecimal Valor ASCII %MW10 = 16#3231 2. 4 %MW11 = 16#000D ’enter’ %MW10 = 16#0D37 ’enter’. excepto:  punto ’.  Todo carácter ASCII que no se encuentre en el intervalo [0 .34567e+13) o decimal (es decir. 9.  Se devuelve el valor +/.402824E+38):  El bit de sistema %S18 (desborde aritmético o error detectado) se establece en 1. Si el resultado del cálculo se encuentra entre -1.     100 El formato de la cadena ASCII puede estar en notación científica (es decir.16#39]) se considera un carácter de "fin".3457). se redondea a 0.  menos ’-’ (16#2D). Por ejemplo: [%MF0:=ASCII_TO_FLOAT(%MW8)] Parámetros En esta tabla se describen los parámetros de la función de conversión de ASCII a flotante: Parámetros Descripción Op1 %MF Op2 %MW or %KW Reglas de utilización Las reglas de conversión de ASCII a flotante son las siguientes: La función siempre lee primero el byte más significativo.  EXP ’e’ o ’E’ (16#65 o 16#45).826. utilice la sintaxis siguiente: Op1 := ASCII_TO_FLOAT( Op2 ).’ (16#2E).1.  más ’+’ (16#2B). Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación.Instrucciones Instrucciones de conversión de ASCII a flotante Introducción Las instrucciones de conversión de ASCII a flotante convierten una cadena ASCII en un valor de coma flotante.0. se describe la sintaxis de la lista de instrucciones. Para las instrucciones de conversión de ASCII a flotante. -2.175494E-38 y 1.175494E-38. Sintaxis A continuación.  %SW17:X3 se establece en 1.9] ([16#30 .#INF (+ o – valor infinito).402824E+38 o <-3. En caso de desborde (el resultado del cálculo es >3. EIO0000001477 11/2014 . 0 %MF20 := ASCII_TO_FLOAT(%MW13) %MF20 = 1.5 %MF20 := ASCII_TO_FLOAT(%MW11) %MF20 = 1. 6 %MW13 16#2B65 ’+’.’ %MW12 16#3536 5.#QNAN %MF20 := ASCII_TO_FLOAT(%MW14) %MF20 = 2.0 EIO0000001477 11/2014 101 .2 En esta tabla se muestran ejemplos de la conversión de ASCII a flotante: Ejemplo Resultado %MF20 := ASCII_TO_FLOAT(%MW10) %MF20 = -826.#QNAN %MF20 := ASCII_TO_FLOAT(%MW12) %MF20 = 6500. Ejemplo de aplicación Tenga en cuenta que los siguientes datos ASCII se han almacenado entre %MW10 y %MW14: Parámetro Valor hexadecimal Valor ASCII %MW10 16#382D 8.  El bit %SW17:X0 se establece en 1. ’.Instrucciones  Si el operando no es un número:  Valor 1. ’e’ %MW14 16#2032 ’ ’.Se devuelve #QNAN. ’-’ %MW11 16#322E 2. Por ejemplo: [%MW0:7:=FLOAT_TO_ASCII(%MF8)] Parámetros En esta tabla se describen los parámetros de la función de conversión de flotante a ASCII: Parámetro Descripción Op1 %MW Op2 %MF or %KF Reglas de utilización 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. Sintaxis A continuación.  Los resultados "Infinito" o "No es un número" devuelven la cadena "NAN".Instrucciones Instrucciones de conversión de flotante a ASCII Introducción Las instrucciones de conversión de flotante a ASCII convierten un valor de coma flotante en un valor de cadena ASCII. Para las instrucciones de conversión de flotante a ASCII.  Errores de sintaxis El software comprueba la sintaxis.  La precisión de conversión es de 6 cifras. Los ejemplos siguientes producirían errores de sintaxis: 102 Sintaxis incorrecta Sintaxis correcta %MW10 := FLOAT_TO_ASCII(%MF1) falta ":7" en el resultado %MW10:7 := FLOAT_TO_ASCII(%MF1) %MW10:n := FLOAT_TO_ASCII(%MF1) %MW10:n donde n ≠ 7 es incorrecto %MW10:7 := FLOAT_TO_ASCII(%MF1) EIO0000001477 11/2014 . Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación.  La función determina automáticamente cuántos %MW se deben llenar con valores ASCII.  No se admite la notación científica.  El carácter de fin es "Enter" (ASCII 13). use la sintaxis siguiente: Op1 := FLOAT_TO_ASCII(Op2). se describe la sintaxis de la lista de instrucciones. 21e-07 9.800 1.4567.23456e+09 0.87654321 9.234 1.87654 1.000000921 9.234e+03 EIO0000001477 11/2014 103 .Instrucciones Ejemplo de aplicación Para la instrucción %MW10:7 := FLOAT_TO_ASCII(%MF1): Número para convertir Resultado 123. MRD y MPP utilizan un área de almacenamiento temporal denominada "pila" que puede almacenar hasta 32 expresiones booleanas. Las instrucciones MPS.Instrucciones Sección 3. MRD. NOTA: Estas instrucciones no se pueden utilizar en una expresión entre paréntesis. EIO0000001477 11/2014 . MPP Sacar memoria de pila Copia el valor de la parte superior de la pila en el acumulador (sacar) y desplaza el resto de valores hacia la parte superior de la pila. Sintaxis En esta tabla se describen las tres instrucciones de pila: 104 Instrucción Descripción Función 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 valores a la parte inferior de la pila.6 Operadores de pila Operadores de pila Instrucciones de pila (MPS. MPP) Introducción Las instrucciones de pila procesan el acceso a las bobinas. MRD Leer memoria desde pila Lee la parte superior de la pila en el acumulador. 0 %M1 %I0.2 %I0.4 %Q0.3 NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente.1 %Q0.0 %I0. EIO0000001477 11/2014 105 .3 %Q0.1 %I0.Instrucciones Funcionamiento En este diagrama se muestra cómo funcionan las instrucciones de pila: Ejemplo de aplicación Ejemplo de uso de instrucciones de pila: Escalón Instrucción 0 LD AND MPS AND ST MRD AND ST MRD AND ST MPP AND ST %I0.2 %Q0. Instrucciones Sección 3.  De objetos de coma flotante.  Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado 106 Página Asignación de tablas de palabras. palabras dobles o coma flotante 107 Funciones de suma en tablas 109 Funciones de comparación de tablas 111 Funciones de búsqueda en tablas 113 Funciones de búsqueda de valores máximo y mínimo en tablas 115 Número de apariciones de un valor en una tabla 117 Funciones de desplazamiento circular de tablas 118 Funciones de clasificación en tablas 120 Funciones de interpolación en la tabla de coma flotante (LKUP) 122 Funciones de MEDIA de los valores de una tabla de coma flotante 127 EIO0000001477 11/2014 .7 Instrucciones sobre las tablas de objetos Instrucciones sobre las tablas de objetos Objeto de esta sección En esta sección se describen las instrucciones de las tablas de objetos: De palabras dobles. %MWi. palabras dobles y coma flotante: Operador Sintaxis := [Op1 := Op2] Op1 toma el valor de Op2 En esta tabla se muestra la información de los operandos: Tipo Op1 Op2 Tabla de palabras %MWi:L. EIO0000001477 11/2014 107 . %KWi. %MFi. %KDi:L Tablas de palabras flotantes %MFi:L Valor de coma flotante inmediato. %BLK.x (por ejemplo. palabras dobles o coma flotante Introducción 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 108)) o a la tabla de palabras dobles  Palabra a tabla de palabras (vea el escalón 1 de la estructura de ejemplo (véase página 108))  Tabla de palabras a tabla de palabras (vea el escalón 2 de la estructura de ejemplo (véase página 108)) La longitud de la tabla (L) debe ser igual para ambas tablas. valor entero inmediato. %QW. %KFi:L L Longitud de la tabla (máximo 255). %IW. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. R3. %SWi:L. %MDi. Sintaxis de las asignaciones de tablas de palabras.  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. %MFi:L.  Sintaxis A continuación. %KDi. se describe la sintaxis de la lista de instrucciones. NOTA: La abreviatura %BLK.I) se utiliza para describir cualquier palabra del bloque de funciones.%MDi:L. %KFi. %SWi.Instrucciones Asignación de tablas de palabras.  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.x Tablas de palabras dobles %MDi:L Valor entero inmediato. %SWi:L %MWi:L. 3 [%MW10:20:=%KW20:30] NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente.Instrucciones Estructura Ejemplos de asignaciones de tablas de palabras: Escalón Instrucción 0 LD 1 [%MW0:10:=100] 1 LD %I0. 108 EIO0000001477 11/2014 .0 [%MW0:10:=%MW11] 2 LDR %I0. el bit de sistema %S18 se establece en 1. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. el resultado se presenta en forma de palabra flotante. NOTA: Cuando el resultado no se encuentra dentro del rango válido de formato de palabra doble según el operando de la tabla.  Si la tabla se compone de palabras flotantes.2 [%MD5:=SUM_ARR(%MD3:1)] 1 LD 1 [%MD5:=SUM_ARR(%KD5:2)] 2 LD 1 [%MF2:=SUM_ARR(%MF8:5)] NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. Estructura Ejemplo de función de suma: Escalón Instrucción 0 LD %I0.%KDi:L Tablas de palabras flotantes %MFi %MFi:L. el resultado se presenta en forma de palabra doble.%KFi:L L Longitud de la tabla (máximo 255).  Sintaxis A continuación. se describe la sintaxis de la lista de instrucciones.Instrucciones Funciones de suma en tablas Introducción 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. EIO0000001477 11/2014 109 . Sintaxis de la instrucción de suma en tabla: Res:=SUM_ARR(Tab) Parámetros de la instrucción de suma en tabla: Tipo Resultado (Res) Tabla (Tab) Tablas de palabras dobles %MDi %MDi:L. %MD36=40 Por tanto.Instrucciones Ejemplo de aplicación %MD4:=SUM(%MD30:4) Donde %MD30=10. %MD4:=10+20+30+40 110 EIO0000001477 11/2014 . %MD34=30. %MD32=20. el rango de los primeros elementos diferentes se muestra en forma de palabra. Si aparece una diferencia. Sintaxis de la instrucción de comparación de tablas: Res:=EQUAL_ARR(Tab1. Estructura Ejemplo de función de comparación de tablas: Escalón Instrucción 0 LD %I0.Tab2) Parámetros de las instrucciones de comparación de tablas: Tipo Resultado (Res) Tablas (Tab1 y Tab2) Tablas de palabras dobles %MWi %MDi:L. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. elemento por elemento.Instrucciones Funciones de comparación de tablas Introducción La función EQUAL_ARR realiza la comparación de dos tablas. el valor mostrado es igual a -1. se describe la sintaxis de la lista de instrucciones.%KD0:7)] 2 LD 1 [%MF2:=SUM_ARR(%MF8:5)] NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente.2 [%MW5:=EQUAL_ARR(%MD20:7. EIO0000001477 11/2014 111 . de lo contrario. Sintaxis A continuación.%KD0:7)] 1 LD 1 [%MW0:=EQUAL_ARR(%MD20:7. La comparación se realiza en la totalidad de la tabla. NOTA: Las tablas deben tener la misma longitud y ser del mismo tipo.%KFi:L L Longitud de la tabla (máximo 255).%KDi:L Tablas de palabras flotantes %MWi %MFi:L. %KD0:4) Comparación de las 2 tablas: Rango Tabla de palabras Tablas de palabras constantes Diferencia 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) 112 EIO0000001477 11/2014 .Instrucciones Ejemplo de aplicación %MW5:=EQUAL_ARR(%MD30:4. %KFi Tablas de palabras dobles %MWi %MDi:L. se describe la sintaxis de la lista de instrucciones. Sintaxis A continuación.  El resultado de estas instrucciones es igual al rango del primer elemento encontrado o a -1 si la búsqueda es infructuosa.Instrucciones Funciones de búsqueda en tablas Introducción 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.%KDi L Longitud de la tabla (máximo 255).Val) FIND_GTR FIND_LTR Parámetros de las instrucciones de búsqueda en tablas de palabras flotantes y palabras dobles: Tipo Resultado (Res) Tabla (Tab) Valor (Val) Tablas de palabras flotantes %MWi %MFi:L.%KFi:L %MFi.  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.%KDi:L %MDi.  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. EIO0000001477 11/2014 113 . Sintaxis de las instrucciones de búsqueda en tablas: Función Sintaxis FIND_EQR Res:=Función(Tab. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. Ejemplo de aplicación %MW5:=FIND_EQR(%MD30:4.3 [%MW6:=FIND_GTR(%MD20:7.%KF4)] NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente.Instrucciones Estructura Ejemplo de función de búsqueda en tablas: Escalón Instrucción 0 LD %I0.2 [%MW5:=FIND_EQR(%MD20:7.%KD0) Búsqueda de la posición de la primera palabra doble = %KD0=30 en la tabla: 114 Rango Tabla de palabras Resultado 0 %MD30=10 - 1 %MD32=20 - 2 %MD34=30 Valor (val).%KD0)] 2 LD 1 [%MW7:=FIND_LTR(%MF40:5. rango 3 %MD36=40 - EIO0000001477 11/2014 .%KD0)] 1 LD %I0. Instrucciones Funciones de búsqueda de valores máximo y mínimo en tablas Introducción Se proponen dos funciones de búsqueda: MAX_ARR: búsqueda del valor máximo en una tabla de palabras dobles y de flotantes. Sintaxis A continuación. EIO0000001477 11/2014 115 . incluido el índice de la dirección de base (el valor máximo de L es 255).%KDn:L Tablas de palabras flotantes %MFi %MFn:L.%KFn:L i Indicador de instancia de objeto para la variable de memoria. NOTA: En L se incluyen sólo las direcciones que no se superponen durante la búsqueda. se describe la sintaxis de la lista de instrucciones. consulte Posibilidad de solapamiento entre objetos (véase página 33). Sintaxis de las instrucciones de búsqueda de valores máximos y mínimos en tablas: Función Sintaxis MAX_ARR Result:=Function(Tab) MIN_ARR Parámetros de las instrucciones de búsqueda de valores máximos y mínimos en tablas: Tipo Resultado (Res) Tabla (Tab) Tablas de palabras dobles %MDi %MDn:L. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. n Índice de memoria de la tabla que indica la dirección de base para la búsqueda. Para obtener más información.  El resultado de estas instrucciones es igual al valor máximo (o mínimo) encontrado en la tabla.  MIN_ARR: búsqueda del valor mínimo en una tabla de palabras dobles y de flotantes. L Número de posiciones que deben considerarse en una búsqueda. 2 [%MD0:=MIN_ARR(%MD20:7)] 1 LD 1 [%MF8:=MIN_ARR(%MF40:5)] NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. 116 EIO0000001477 11/2014 .Instrucciones Estructura Ejemplo de función de búsqueda en tablas: Escalón Instrucción 0 LD %I0. %MD1)] NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. EIO0000001477 11/2014 117 .Val) Parámetros de las instrucciones de búsqueda de valores máximos y mínimos en tablas: Tipo Resultado (Res) Tabla (Tab) Valor (Val) Tablas de palabras dobles %MWi %MDi:L.Instrucciones Número de apariciones de un valor en una tabla Introducción 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.3 [%MW5:=OCCUR_ARR(%MF20:7.%KDi:L %MDi. se describe la sintaxis de la lista de instrucciones.2 [%MW5:=OCCUR_ARR(%MD20:7.%KF0)] 1 LD %I0.%KDi Tablas de palabras flotantes %MFi %MFi:L. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. Sintaxis de las instrucciones de búsqueda de valores máximos y mínimos en tablas: Función Sintaxis OCCUR_ARR Res:=Función(Tab. Estructura Ejemplo de número de apariciones: Escalón Instrucción 0 LD %I0.%KFi:L %MFi. Sintaxis A continuación.%KFi L Longitud de la tabla (máximo 255). se describe la sintaxis de la lista de instrucciones. Sintaxis de las instrucciones de desplazamiento circular en tablas de palabras dobles o de flotantes ROL_ARR y ROR_ARR Función Sintaxis ROL_ARR Función(n. Ilustración de las funciones de ROR_ARR Sintaxis A continuación. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación.Instrucciones Funciones de desplazamiento circular de tablas Introducción 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.Tab) ROR_ARR 118 EIO0000001477 11/2014 . %MD20:7)] 1 LD %I0. EIO0000001477 11/2014 119 .4 [ROR_ARR(2.Instrucciones Parámetros de las instrucciones de desplazamiento circular en tablas de palabras flotantes: ROL_ARR y ROR_ARR: Tipo Número de posiciones (n) Tabla (Tab) Tablas de palabras flotantes %MWi.3 [ROR_ARR(2.%MD20:7)] 2 LD %I0. immediate value %MDi:L L Longitud de la tabla (máximo 255).2 [ROL_ARR(%KW0. Estructura Ejemplo de función de desplazamiento circular en tablas: Escalón Instrucción 0 LD %I0. immediate value %MFi:L Tablas de palabras dobles %MWi. no se efectuará ningún desplazamiento. NOTA: Si el valor de n es negativo o nulo.%MF40:5)] NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. immediate value %MDi:L Tablas de palabras flotantes %MWi. Sintaxis A continuación. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación.  Dirección < 0: la clasificación se efectúa en orden descendente.Tab) El parámetro "dirección" proporciona el orden de la clasificación:  Dirección > 0: la clasificación se efectúa en orden ascendente. EIO0000001477 11/2014 .Instrucciones Funciones de clasificación en tablas Introducción 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. Parámetros de las funciones de clasificación en tablas: Tipo Dirección de la clasificación Tabla (Tab) Tablas de palabras dobles %MWi. El resultado (tabla ordenada) se devuelve en el parámetro Tab (tabla para clasificar). se describe la sintaxis de la lista de instrucciones. Sintaxis de las funciones de clasificación en tablas: Función Sintaxis SORT_ARR Función(dirección. immediate value %MFi:L L 120 Longitud de la tabla (máximo 255).  Dirección = 0: no se realiza ninguna clasificación. Instrucciones Estructura Ejemplo de función de clasificación en tablas: Escalón Instrucción 0 LD %I0.%MF0:6)] 2 LD %I0.3 [SORT_ARR(0. EIO0000001477 11/2014 121 .%MF0:6)] 1 LD %I0.1 [SORT_ARR(%MW20.%MF40:8)] NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente.2 [SORT_ARR(%MW20. EIO0000001477 11/2014 . NOTA: Si dos valores consecutivos Xi cualesquiera son iguales (Xi=Xi+1=X). como se define en esta ecuación: (Ecuación 1) para . donde . Revisión de la interpolación lineal La función LKUP utiliza la regla de interpolación lineal. donde . sabiendo que los valores de están dispuestos en orden ascendente: . la ecuación (1) resulta en una excepción no válida.Instrucciones Funciones de interpolación en la tabla de coma flotante (LKUP) Introducción 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. para solucionar esta excepción se usa el algoritmo siguiente en lugar de la ecuación (1): (Ecuación 2) para 122 . En este caso. tal como se describe en esta tabla: Sintaxis Op1 Op2 Op3 Variable de salida Valor (X) definido por el Matriz de variables (Xi. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. La función LKUP usa tres operandos. dos de los cuales son atributos de función. %MWi.Op3)] %MWi EIO0000001477 11/2014 %MF0 Valor entero.Yi) usuario definida por el usuario [Op1: = LKUP(Op2. se describe la sintaxis de la lista de instrucciones.Instrucciones Representación gráfica Este gráfico muestra la regla de interpolación lineal descrita anteriormente: Sintaxis A continuación.or %KWi 123 . el índice superior (u) de la matriz de coma flotante (%MFu) se establece mediante las relaciones siguientes:   124 (Ecuación 3) (Ecuación 4) EIO0000001477 11/2014 . NOTA: Op1 no contiene el valor (Y) de interpolación calculado. X > Xm 8 Tamaño no válido de la matriz de datos:  Op3 se define como número impar o bien  Op3 < 6. Para un valor dado (X). En función del valor de Op1. X < X1 4 Se ha detectado un error de interpolación: Op2 fuera de rango.Yi).Yi). Xm < Xm-1 2 Se ha detectado un error de interpolación: Op2 fuera de rango. Definición de Op3 Op3 establece el tamaño (Op3 / 2) de la matriz de coma flotante en la que se almacenan los pares de datos (Xi. el resultado de la interpolación (Y) está contenido en %MF2 de la matriz Op3 (véase página 124). Definición de Op2 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. Dada una matriz de (m) pares de datos (Xi. y qué es lo que puede haber causado un fallo. respectivamente). como se explica en esta tabla: Op1 (%MWi)) Descripción 0 Interpolación correcta 1 Se ha detectado un error de interpolación: matriz incorrecta. puede saber si la interpolación se ha realizado correctamente o no. 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. Los datos Xi e Yi se almacenan en objetos de coma flotante con índices pares. Rango válido para Op2: .Instrucciones Definición de Op1 Op1 es la palabra de memoria que contiene la variable de salida de la función de interpolación. 3 [%MW22:=LKUP(%MF0.2 [%MW20:=LKUP(%MF0.10)] En este ejemplo: %MW20 es Op1 (la variable de salida).  10 es Op3 (calculado mediante la ecuación 3 explicada anteriormente). dos puntos de datos para que pueda haber interpolación lineal). Op3 debe cumplir los dos requisitos siguientes.  EIO0000001477 11/2014 125 .10)] NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. se activará un error en la función LKUP:  Op3 es un número par y  Op3 ≥ 6 (ya que debe haber. Establece el tamaño de la matriz de coma flotante.Instrucciones La matriz de coma flotante Op3 (%MFi) presenta una estructura similar a la de este ejemplo (donde Op3=8): (X) (X1) (X2) (X3) %MF0 %MF4 %MF8 %MF12 %MF2 %MF6 %MF10 %MF14 (Y) (Y1) (Y2) (Y3) (Op3=8) NOTA: Como resultado de la estructura de la matriz de coma flotante anterior.%KW1)] 1 LD %I0. al menos.  %MF2 almacena el valor (Y) calculado resultante de la interpolación lineal. donde u=18 se calcula mediante la ecuación 4 descrita anteriormente. de lo contrario.  %MF0 es el valor (X) definido por el usuario cuyo valor (Y) correspondiente se debe calcular mediante interpolación lineal. El elemento más alto de la serie %MFu. Ejemplo de aplicación Uso de una función de interpolación LKUP: [%MW20:=LKUP(%MF0. Estructura Las operaciones de interpolación se realizan de la forma siguiente: Escalón Instrucción 0 LD %I0. %MF6 contiene Y1..Instrucciones Existen cuatro pares de puntos de datos almacenados en la matriz Op3 [%MF4.%MF10 contiene Y2.%MF18]:  %MF4 contiene X1. 126 EIO0000001477 11/2014 .%MF14 contiene Y3.  %MF12 contiene X3.  %MF16 contiene X4.  %MF8 contiene X2.%MF18 contiene Y4... %KFi:L %MFi Estructura Ejemplo de función de media: Escalón Instrucción 0 LD %I3. EIO0000001477 11/2014 127 . Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. se describe la sintaxis de la lista de instrucciones. Sintaxis A continuación. Sintaxis de la función de cálculo de la media de una tabla de coma flotante: Función Sintaxis MEAN Resultado=Función(Op1) 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: Op1 Resultado (Res) %MFi:L.Instrucciones Funciones de MEDIA de los valores de una tabla de coma flotante Introducción La función MEAN permite calcular la media de un número determinado de valores de una tabla de coma flotante.2 [%MF0:=MEAN(%MF10:5)] NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. Instrucciones Sección 3.8 Instrucciones sobre los objetos de E/S Instrucciones sobre los objetos de E/S Objeto de esta sección En esta sección se describen las instrucciones sobre los objetos de E/S. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado 128 Página Entrada incrustada digital de lectura instantánea (READ_IMM_IN) 129 Salida incrustada digital de escritura instantánea (WRITE_IMM_OUT) 131 EIO0000001477 11/2014 . Para la instrucción READ_IMM_IN. 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 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. utilice la sintaxis siguiente: Op1 := READ_IMM_IN(Op2) Donde: Operando Tipo Descripción Op1 %MWi Almacena el código de retorno de la función (consulte la siguiente tabla). el valor actual de la entrada %I0. Sintaxis A continuación. El código de retorno de la función se guarda en la palabra de memoria %MW0. Op2 Valor inmediato (entero) %MWi %KWi Define el índice de entrada (%I0. Código de retorno de la función En esta tabla se describe el código de retorno de la función: Código Descripción 0 No se ha detectado ningún error. 1 La entrada declarada es mayor que la entrada máxima permitida. EIO0000001477 11/2014 129 . Ejemplo %MW0 := READ_IMM_IN(2) En la ejecución de este bloque de operación. 2 La entrada declarada está forzada. Así se evita tener que esperar el siguiente tiempo de ciclo de tarea para actualizar la imagen de entrada.x).2 se lee y la imagen de entrada se actualiza inmediatamente. i Indicador de instancia de objeto para la variable de memoria. NOTA: Esta instrucción sólo es válida para las entradas incrustadas digitales (salidas integradas en el Logic Controller).Instrucciones Entrada incrustada digital de lectura instantánea (READ_IMM_IN) Introducción 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. Instrucciones Estructura Ejemplo de la instrucción READ_IMM_IN: Escalón Instrucción 0 LD %M0 [%MW0:=READ_IMM_IN(%MW5)] NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. 130 EIO0000001477 11/2014 . Op2 Valor inmediato (entero) %MWi %KWi Define el índice de salida (%Q0.Instrucciones Salida incrustada digital de escritura instantánea (WRITE_IMM_OUT) Introducción La instrucción WRITE_IMM_OUT escribe físicamente en una salida digital incrustada inmediatamente. NOTA: Esta función sólo es válida para las salidas digitales incrustadas (salidas integradas en el Logic Controller). se describe la sintaxis de la lista de instrucciones. 4 La salida declarada está forzada. 6 La salida declarada se utiliza como una salida de alarma. Así se evita tener que esperar el siguiente tiempo de ciclo de tarea para escribir a la salida incrustada. Para la instrucción WRITE_IMM_OUT.x). 3 La salida declarada es mayor que la salida máxima permitida. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 17) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. Código de retorno de la función En esta tabla se describe el código de retorno de la función: Código Descripción 0 No se ha detectado ningún error. i Indicador de instancia de objeto para la variable de memoria. 5 La salida declarada se utiliza como una salida de hardware dedicada. utilice la sintaxis siguiente: Op1 := WRITE_IMM_OUT(Op2) Donde: Operando Tipo Descripción Op1 %MWi Almacena el código de retorno de la función (consulte la siguiente tabla). EIO0000001477 11/2014 131 . Sintaxis A continuación. y el valor se lee desde la imagen de salida. 132 EIO0000001477 11/2014 . El código de retorno de la función se guarda en la palabra de memoria %MW0. la imagen de salida %Q0. Estructura Ejemplo de la instrucción WRITE_IMM_OUT: Escalón Instrucción 0 LD %M0 [%MW0:=WRITE_IMM_IN(%MW4)] NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente.Instrucciones Ejemplo %MW0 := WRITE_IMM_OUT(%MW5) (con %MW5 = 2) En la ejecución de este bloque de operación.2 se escribe físicamente en la salida digital incrustada. SoMachine Basic Objetos de software EIO0000001477 11/2014 Capítulo 4 Objetos de software Objetos de software Contenido de este capítulo Este capítulo contiene las siguientes secciones: Sección Apartado Página 4.4 Registro de bits de desplazamiento (%SBR) 158 4.5 Contador de pasos (%SC) 163 4.13 Salida de tren de pulsos (%PTO) 211 EIO0000001477 11/2014 133 .2 Temporizador (%TM) 140 4.6 Contador (%C) 168 4.8 Contador de alta velocidad (%HSC) 177 4.3 Registro LIFO/FIFO (%R) 149 4.10 Pulso (%PLS) 186 4.7 Contador rápido (%FC) 176 4.11 Modulación de ancho de pulsos (%PWM) 187 4.9 Registro Drum (%DR) 178 4.1 Uso de bloques de funciones 134 4.12 Mensaje (%MSG) e intercambio (EXCH) 188 4. 1 Uso de bloques de funciones Uso de bloques de funciones Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado 134 Página Principios de programación del bloque de funciones 135 Añadido de un bloque de funciones 137 Configuración de un bloque de funciones 139 EIO0000001477 11/2014 .Objetos de software Sección 4. 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.209 R %C1 Utilice las instrucciones BLK. END_BLK: indica el final del bloque.  Programas de diagrama de contactos Para utilizar un bloque de funciones en un programa de diagrama de contactos: 1. Conecte las entradas y salidas según sea necesario. puede utilizar uno de los siguientes métodos:   Instrucciones del bloque de funciones (por ejemplo. NOTA: 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). CU %Ci).000 CU %C1 1.Objetos de software Principios de programación del bloque de funciones Descripción general Un bloque de funciones es un objeto reutilizable que acepta uno o varios valores de entrada y devuelve uno o varios valores de salida. OUT_BLK y END_BLK para la programación reversible de los bloques de funciones:    BLK: indica el principio del bloque. Los parámetros de los bloques de funciones no están disponibles si: su controlador no admite el bloque de funciones. Configure (véase página 139) el bloque de funciones especificando los valores de sus parámetros. 3.  el bloque de funciones no está configurado. 2.074 CD %C1 1. Instrucciones específicas (por ejemplo. Programas de la lista de instrucciones Para añadir un bloque de funciones a un programa de lista de instrucciones. Inserte (véase página 137) el bloque de funciones en un escalón. OUT_BLK: se emplea para conectar las salidas del bloque directamente. Por ejemplo: Línea Instrucción 1. 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. EIO0000001477 11/2014 135 . 1 R LD %I0.Objetos de software Ejemplo con salidas cableadas En este ejemplo se muestra un bloque de funciones Counter en un programa con salidas cableadas: Escalón Instrucción 0 BLK %C8 LDF %I0. 136 EIO0000001477 11/2014 .1 AND %M0 CU OUT_BLK LD D AND %M1 ST %Q0. Ejemplo sin salidas cableadas En este ejemplo se muestra la programación reversible de un bloque de funciones Counter sin salidas cableadas: Escalón Instrucción 0 BLK %C8 LDF %I0.2 AND %M0 CU END_BLK 1 LD AND ST %C8.4 NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente.0 END_BLK NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente.1 R LD %I0.D %M1 %Q0. a continuación. Resultado: Se muestra una lista de todos los objetos de bloques de funciones disponibles (consulte la tabla siguiente). 3 Seleccione el bloque de funciones. Objetos de bloques de funciones disponibles En esta tabla se muestran los objetos de bloques de funciones disponibles: Objeto de bloque de funciones Descripción Timer LIFO/FIFO Register Shift Bit Register Step Counter Counter Fast Counter High Speed Counter EIO0000001477 11/2014 137 . haga clic para insertarlo. Consulte la Guía de funcionamiento de SoMachine Basic para obtener más detalles. 2 Haga clic en el botón Función de la barra de herramientas gráfica situada en la parte superior del área de trabajo de programación. 4 Mueva el bloque de funciones a la posición deseada en el escalón y.Objetos de software Añadido de un bloque de funciones Para insertar un bloque de funciones en un programa de diagrama de contactos Siga el procedimiento siguiente: Paso Acción 1 Cree un nuevo escalón del diagrama de contactos en el área de trabajo de programación de SoMachine Basic. consulte Objetos de comunicación (véase página 213).Guía de la biblioteca. Bloques de funciones de comunicación NOTA: Para obtener una lista de los bloques de funciones de comunicación. Bloques de funciones PTO. 138 EIO0000001477 11/2014 .Objetos de software Objeto de bloque de funciones Descripción Drum Register Pulse Pulse Width Modulation Message Pulse Train Output NOTA: Para ver una lista completa de objetos PTO consulte la M221 Funciones avanzadas . Por ejemplo.Objetos de software Configuración de un bloque de funciones Para configurar un bloque de funciones en un programa de diagrama de contactos Siga el procedimiento siguiente: Paso Acción 1 Haga clic en la etiqueta [Dirección] dentro del bloque de funciones. por ejemplo. "%TM0" para un bloque de funciones Timer. Cuando lo desee. elimine el último dígito de la dirección (el identificador de la instancia). escriba el nombre del símbolo para crearlo y seleccione el objeto para asociarlo con el símbolo. A fin de crear un nuevo símbolo para este bloque de funciones. Consulte la Guía de funcionamiento de SoMachine Basic para obtener más información sobre el uso de símbolos. haga clic en la etiqueta [Introducir comentario] dentro del bloque de funciones y escriba una breve descripción del bloque de funciones. como se explica en el tema "Parámetros" de las descripciones de cada bloque de funciones. Aparece una lista de todas las direcciones disponibles. puede hacer doble clic en cualquier parte dentro del bloque de funciones para visualizar las propiedades. 3 De manera opcional. 2 De manera opcional. Las propiedades del bloque de funciones aparecen en el centro del objeto de bloque de funciones y en la tabla Propiedades. Aparece una dirección predeterminada en el cuadro de texto. Seleccione la dirección que se utilizará para identificar esta instancia del bloque de funciones. en la mitad inferior del área de trabajo de programación. haga clic en la etiqueta [Símbolo] dentro del bloque de funciones y comience a escribir el nombre del símbolo para asociarlo con este bloque de funciones. haga clic en el símbolo para usarlo. Temporizador de pulso. NOTA: Además. EIO0000001477 11/2014 139 . Para modificar la dirección predeterminada. Aparece una lista de todos los símbolos existentes con nombres que comienzan con el carácter o caracteres que ha escrito. puede visualizar la tabla Propiedades haciendo doble clic en el bloque de funciones en un escalón. 4 Configure los parámetros disponibles de cada bloque de funciones. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado 140 Página Descripción 141 Configuración 142 TON: temporizador de retardo de conexión 144 TOF: temporizador de retardo de desconexión 145 TP: temporizador de pulso 146 Ejemplo de programación 147 EIO0000001477 11/2014 .Objetos de software Sección 4.2 Temporizador (%TM) Temporizador (%TM) Uso de los bloques de funciones del temporizador En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones Timer. activar un evento.Q) El bit asociado %TMi. Entradas El bloque de funciones Timer contiene la siguiente entrada: Etiqueta Descripción Valor IN 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). por ejemplo. Salidas El bloque de funciones Timer contiene la siguiente salida: Etiqueta Descripción Valor Q Dirección de salida (%TMi. EIO0000001477 11/2014 141 . Ilustración En esta ilustración se muestra el bloque de funciones Timer.Objetos de software Descripción Introducción El bloque de funciones Timer se utiliza para especificar un periodo de tiempo antes de hacer algo.Q se establece en 1 (en función del tipo de Timer) cuando el Timer se agota. EIO0000001477 11/2014 . Periodo del temporizador = Preajuste x Base de tiempo Retardo del temporizador = Preajuste x Base de tiempo Este valor preestablecido configurado puede leerse. Comentario Comentario Se puede asociar un comentario con este objeto. El valor predeterminado es 9. Para obtener más información. Dirección Dirección del objeto de Timer (%TMi) Un programa solo puede contener un número limitado de objetos de Timer. Símbolo Símbolo El símbolo asociado con este objeto.9999. Tipo Tipo de Timer Uno de los siguientes:  TON (véase página 144): temporizador de retardo de conexión (predeterminado)  TOF (véase página 145): temporizador de retardo de desconexión  TP (véase página 146): temporizador de pulso (monoestable) 142 Base Base de tiempo La unidad de referencia de tiempo del temporizador. siga el procedimiento de configuración de un bloque de funciones (véase página 139) y lea la descripción de las modalidades de asignación de memoria en la Guía de funcionamiento de SoMachine Basic. Consulte la guía de programación de la plataforma correspondiente para saber cuál es el número máximo de temporizadores. El bloque de funciones Timer contiene los parámetros siguientes: Parámetro Descripción Valor Utilizado Dirección utilizada Si está seleccionada.Objetos de software Configuración Parámetros Para configurar los parámetros. probarse y modificarse utilizando el objeto asociado %TMi. consulte Definición y uso de los símbolos en la Guía de funcionamiento de SoMachine Basic. Cuanto más pequeña sea la unidad de referencia del temporizador. esta dirección se está utilizando actualmente en un programa.999.P. mayor será la precisión del temporizador:  1 ms (solo para las primeras seis instancias)  10 ms  100 ms  1s  1 min (predeterminado) Preajuste Valor preestablecido 0 . Su valor puede modificarse en una tabla de animación. El programa puede leer y comprobar el valor. %TMi.Objetos de software Objetos El bloque de funciones Timer contiene los objetos siguientes: Objeto Descripción Valor %TMi.P cuando el temporizador está en funcionamiento.P Valor preestablecido Consulte la descripción en la tabla anterior Parámetros. EIO0000001477 11/2014 143 .Q Salida de Timer Consulte la descripción en la tabla anterior Salidas.V Valor actual Palabra que aumenta de 0 al valor preestablecido %TMi. %TMi. pero no escribir en él. (4) El bit de salida %TMi. %TMi. (1) El Timer se ejecuta en el flanco ascendente de la entrada IN. 144 EIO0000001477 11/2014 . (5) Si se detecta un flanco descendente en la entrada IN. Diagrama de tiempos En este diagrama se muestra el funcionamiento del Timer de tipo TON. (3) El bit de salida %TMi.Objetos de software TON: temporizador de retardo de conexión Introducción Utilice el temporizador de tipo TON (On-Delay Timer) para controlar las acciones de retardo de conexión. (2) El valor actual %TMi. el temporizador (Timer) se detiene aunque el temporizador (Timer) no haya alcanzado el valor %TMi.P.P.V aumenta de 0 a %TMi.Q se establece en 1 cuando el valor actual ha alcanzado el valor preestablecido %TMi.Q permanece en 1 mientras la entrada IN esté en 1.V se establece en 0.P en incrementos de 1 unidad por cada pulso del parámetro de la referencia de tiempo TB. Este retardo se puede programar mediante el software. (2) El Timer se inicia en el flanco descendente de la entrada IN. %TMi.Objetos de software TOF: temporizador de retardo de desconexión Introducción Utilice el Timer de tipo TOF (Off-Delay Timer) para controlar las acciones de retardo de desconexión.V se establece en 0.Q se establece en 1.P. (6) En un flanco ascendente de la entrada IN. %TMi.V se establece en 0 aunque no se alcance el valor preestablecido. Este retardo se puede programar mediante el software.V aumenta hasta el valor preestablecido %TMi.P en incrementos de 1 unidad por cada pulso del parámetro de la referencia de tiempo TB. (4) El bit de salida %TMi. Diagrama de tiempos En este diagrama se muestra el funcionamiento del Timer de tipo TOF. %TMi. (3) El valor actual %TMi. (5) En un flanco ascendente de la entrada IN.Q se restablece a 0 cuando el valor actual alcanza el valor preestablecido %TMi. (1) En un flanco ascendente de la entrada IN. EIO0000001477 11/2014 145 . (5) Este Timer no se puede restablecer. El valor actual %TMi.V se establece en 0 cuando %TMi. (4) El valor actual %TMi.P y la entrada IN vuelve a 0. Diagrama de tiempos En este diagrama se muestra el funcionamiento del Timer de tipo TP.Objetos de software TP: temporizador de pulso Introducción El Timer de tipo TP (temporizador de pulso) se emplea para generar pulsos de una duración determinada.Q se establece en 0. Este retardo se puede programar mediante el software.P y la entrada IN se establece en 0. (1) El Timer se inicia en el flanco ascendente de la entrada IN.P en incrementos de 1 unidad por pulso del parámetro de la referencia de tiempo TB. (2) El valor actual %TMi.V se establece en 0 si el Timer aún no se ha iniciado y %TMi. 146 EIO0000001477 11/2014 .V es igual a %TMi.V del Timer aumenta de 0 al valor preestablecido %TMi.Q se establece en 1 cuando se inicia el Timer. (6) Cuando %TMi.P.Q se establece en 0 cuando el valor actual ha alcanzado el valor preestablecido %TMi. %TMi. (3) El bit de salida %TMi.V es igual a %TMi. 0 END_BLK 1 LD ST [%TM0.  TOF (Timer Off-Delay) (véase página 145) (temporizador de retardo de desconexión): utilizado 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.1 2 LD ST [%TM0.V>=400] %Q0. Programación Este ejemplo es un bloque de funciones Timer con instrucciones reversibles: Escalón Instrucción reversible 0 BLK %TM0 LD %M0 IN OUT_BLK LD Q ST %Q0.Objetos de software Ejemplo de programación Introducción Los bloques de funciones Timer tienen las siguientes modalidades de funcionamiento: TON (Timer On-Delay) (véase página 144) (temporizador de retardo de conexión): utilizado para especificar un periodo de tiempo entre la activación de una entrada específica y el encendido de un sensor de salida.2 EIO0000001477 11/2014 147 .  Los retardos o periodos de pulsos de Timers se pueden programar y configurar desde el software.Pulse) (véase página 146) (temporizador de pulso): utilizado para generar un pulso de duración determinada.  TP (Timer .V<400] %Q0. 148 EIO0000001477 11/2014 .2 NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente.0 2 LD ST [%TM0.V>=400] %Q0.V<400] %Q0.Objetos de software En este ejemplo se muestra el mismo bloque de funciones Timer con instrucciones no reversibles: Escalón Instrucción no reversible 0 LD IN %M0 %TM0 1 LD ST %TM0.1 3 LD ST [%TM0.Q %Q0. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado Página Descripción 150 Configuración 152 Funcionamiento del registro LIFO 154 Funcionamiento del registro FIFO 155 Ejemplo de programación 156 EIO0000001477 11/2014 149 .3 Registro LIFO/FIFO (%R) Registro LIFO/FIFO (%R) Uso de bloques de funciones del registro LIFO/FIFO En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones LIFO/FIFO Register.Objetos de software Sección 4. First Out). Entradas El bloque de funciones LIFO/FIFO Register contiene las siguientes entradas: 150 Etiqueta Descripción Valor R Restablecer entrada (o instrucción) En el estado 1.O. inicializa el LIFO/FIFO Register. First Out). O Entrada (o instrucción) Con cada flanco ascendente. conocida como LIFO. carga una palabra de datos del de recuperación LIFO/FIFO Register en la palabra asociada %Ri.Objetos de software Descripción Introducción 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:  Cola (First In.I en el LIFO/FIFO Register. conocida como FIFO. Ilustración En esta ilustración se muestra el bloque de funciones LIFO/FIFO Register.  Pila (Last In. I Entrada (o instrucción) Con cada flanco ascendente almacena el contenido de la palabra de almacenamiento asociada %Ri. EIO0000001477 11/2014 . F indica que el LIFO/FIFO Register está lleno.Objetos de software Salidas El bloque de funciones LIFO/FIFO Register contiene las siguientes salidas: Etiqueta Descripción Valor E Salida vacía (%Ri.E puede probarse. El valor de %Ri. por ejemplo.E indica que el LIFO/FIFO Register está vacío.F) El bit asociado %Ri.F puede probarse. en una tabla de animación o con una instrucción.E) El bit asociado %Ri. en una tabla de animación o con una instrucción. EIO0000001477 11/2014 151 . El valor de %Ri. por ejemplo. F Salida llena (%Ri. E Salida vacía Consulte la tabla anterior Salidas. Puede modificarse en una tabla de animación. esta dirección se está utilizando actualmente en un programa. Comentario Comentario Se puede asociar un comentario con este objeto.F Salida llena Consulte la tabla anterior Salidas.I Palabra de entrada de LIFO/FIFO Register Se puede leer. verificar y escribir. Consulte la guía de programación de la plataforma de hardware para saber cuál es el número máximo de registros. %Ri. Símbolo Símbolo El símbolo asociado con este objeto. Objetos El bloque de funciones LIFO/FIFO Register contiene los siguientes objetos: 152 Objeto Descripción %Ri. consulte Definición y uso de los símbolos en la Guía de funcionamiento de SoMachine Basic. EIO0000001477 11/2014 . Puede modificarse en una tabla de animación. El bloque de funciones LIFO/FIFO Register contiene los siguientes parámetros: Parámetro Descripción Valor Utilizado Dirección utilizada Si está seleccionada. Para obtener más información.Objetos de software Configuración Parámetros Para configurar los parámetros. Valor %Ri.O Palabra de salida de LIFO/FIFO Register Se puede leer. verificar y escribir. Tipo Tipo de LIFO/FIFO Register FIFO (cola) o LIFO (pila). Dirección Dirección de objetos LIFO/FIFO Register Un programa solo puede contener un número limitado de objetos LIFO/FIFO Register. siga el procedimiento de configuración de un bloque de funciones (véase página 139) y lea la descripción de las modalidades de asignación de memoria en la Guía de funcionamiento de SoMachine Basic. %Ri. EIO0000001477 11/2014 153 .E asociado a la salida E se establece en 1.Objetos de software Casos especiales En esta tabla hay una lista de casos especiales para programar el bloque de funciones LIFO/FIFO Register: Caso especial Descripción Efecto de un reinicio en frío (%S0=1) o INIT Inicializa el contenido del LIFO/FIFO Register. Efecto de un reinicio en caliente (%S1=1) o una detención del controlador No tiene ningún efecto sobre el valor actual del LIFO/FIFO Register ni sobre el estado de sus bits de salida. NOTA: El efecto de INIT es el mismo que %S0=1. El bit de salida %Ri. el contenido de la palabra de entrada %Ri.O (fig. b). Cuando el LIFO/FIFO Register está vacío (salida E=1). Cuando la pila está llena (salida F=1).I se almacena en la parte superior de la pila (fig.Objetos de software Funcionamiento del registro LIFO Introducción En la operación LIFO (Last In. 3 Resetear: La pila se puede restablecer en cualquier momento (estado 1 en la entrada R o activación de la instrucción R). 2 Recuperación: Cuando se recibe una petición de recuperación (flanco ascendente en la entrada O o activación de la instrucción O).O no se modifica y conserva su valor. First Out). no es posible continuar el almacenamiento. La palabra de salida %Ri. Ejemplo – EIO0000001477 11/2014 .E =1). a). la palabra de datos superior (la última palabra introducida) se carga en la palabra %Ri. el último elemento de datos introducido es el primero que se recupera. Funcionamiento En esta tabla se describe el funcionamiento de LIFO: Etapa 154 Descripción 1 Almacenamiento: Cuando se recibe una petición de almacenamiento (flanco ascendente en la entrada I o activación de la instrucción I). no es posible continuar la recuperación. La pila está vacía después de un reseteado (%Ri. el primer elemento de datos introducido es el primero que se recupera. el contenido de la palabra de entrada %Ri. no es posible continuar la recuperación. 3 Resetear: La cola se puede restablecer en cualquier momento (estado 1 en la entrada R o activación de la instrucción R).O no se modifica y conserva su valor.O y los contenidos del LIFO/FIFO Register se desplazan una posición hacia abajo en la cola (fig.Objetos de software Funcionamiento del registro FIFO Introducción En la operación FIFO (First In. La cola está vacía después de un reseteado (%Ri. La palabra de salida %Ri. Cuando la cola está llena (salida F=1). no es posible continuar el almacenamiento. 2 Recuperación: Cuando se recibe una petición de recuperación (flanco ascendente en la entrada O o activación de la instrucción O).I se almacena en la parte superior de la pila (fig. la palabra de datos inferior en la cola se carga en la palabra %Ri. Funcionamiento En esta tabla se describe el funcionamiento de FIFO: Etapa Descripción 1 Almacenamiento: Cuando se recibe una petición de almacenamiento (flanco ascendente en la entrada I o activación de la instrucción I). a). b). Cuando el LIFO/FIFO Register está vacío (salida E=1). EIO0000001477 11/2014 Ejemplo – 155 .E=1). First Out). La petición de almacenamiento en el LIFO/FIFO Register se realiza mediante %M1.3 ANDN %R2.F = 0).I) al recibir una petición de almacenamiento (%I0.3. y %R2.Objetos de software Ejemplo de programación Introducción El siguiente ejemplo de programación muestra el contenido de una palabra de memoria (%MW34) que se carga en un LIFO/FIFO Register (%R2.F [%R2.E O END_BLK 1 LD %I0.I:=%MW34] ST %M1 EIO0000001477 11/2014 . Programación Este ejemplo es un bloque de funciones LIFO/FIFO Register con instrucciones reversibles: 156 Escalón Instrucción reversible 0 BLK %R2 LD %M1 I LD %I0.3 [%MW20:=%R2.2 ANDN %R2.E = 0).O] 2 LD %I0. La petición de recuperación se confirma mediante la entrada %I0.O se carga en %MW20 si el registro no está vacío (%R2.2) si LIFO/FIFO Register %R2 no está completo (%R2. 2 ANDN %R2.3 [%MW20:=%R2. EIO0000001477 11/2014 157 .E O %R2 2 LD %I0.O] 3 LD %I0.F [%R2.Objetos de software En este ejemplo se muestra el mismo bloque de funciones LIFO/FIFO Register con instrucciones no reversibles: Escalón Instrucción no reversible 0 LD I 1 LD %I0.3 ANDN %R2.I:=%MW34] ST %M1 %M1 %R2 NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado 158 Página Descripción 159 Configuración 160 Ejemplo de programación 162 EIO0000001477 11/2014 .Objetos de software Sección 4.4 Registro de bits de desplazamiento (%SBR) Registro de bits de desplazamiento (%SBR) Uso de los bloques de funciones del registro de bits de desplazamiento En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones Shift Bit Register. j se establecen en 0. por ejemplo 111  Valor hexadecimal. por ejemplo 16#7 Entradas El bloque de funciones Shift Bit Register contiene las siguientes entradas: Etiqueta Descripción Valor R Restablecer entrada (o instrucción) Cuando el parámetro de función R es 1. CU Desplazar hacia la entrada (o instrucción) En un flanco ascendente. por ejemplo 7  Valor binario. desplaza un bit de registro derecha hacia la derecha. desplaza un bit de registro izquierda hacia la izquierda. CD Desplazar hacia la entrada (o instrucción) En un flanco ascendente. Ilustración 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.Objetos de software Descripción Introducción El bloque de funciones Shift Bit Register proporciona un desplazamiento de bits de datos binarios hacia la izquierda o la derecha (0 o 1). EIO0000001477 11/2014 159 . los bits de registro de 0 a 15 %SBRi. Objetos de software Configuración Parámetros Para configurar los parámetros. %SBRi. El bloque de funciones Shift Bit Register contiene los siguientes parámetros: Parámetro Descripción Valor Utilizado Dirección utilizada Si está seleccionada. Símbolo Símbolo El símbolo asociado con este objeto. Para obtener más información. Dirección Dirección de objeto de Shift Bit Register Un programa solo puede contener un número limitado de objetos de Shift Bit Register.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. Comentario Comentario Se puede asociar un comentario con este objeto. esta dirección se está utilizando actualmente en un programa. Consulte la guía de programación de la plataforma de hardware para saber cuál es el número máximo de registros. consulte Definición y uso de los símbolos en la Guía de funcionamiento de SoMachine Basic. Objetos El bloque de funciones Shift Bit Register contiene los siguientes objetos: 160 Objeto Descripción Valor %SBRi Número de registro De 0 a 7 Puede modificarse en una tabla de animación. siga el procedimiento de configuración de un bloque de funciones (véase página 139) y lea la descripción de las modalidades de asignación de memoria en la Guía de funcionamiento de SoMachine Basic. EIO0000001477 11/2014 . se puede utilizar el programa para mostrar en cascada diversos registros. El bit 0 se pierde. Casos especiales En esta tabla hay una lista de casos especiales para programar el bloque de funciones Shift Bit Register: Caso especial Descripción Efecto de un reinicio en frío (%S0=1) Establece todos los bits de la palabra de registro en 0. Si un registro de 16 bits no es adecuado. EIO0000001477 11/2014 161 . Efecto de un reinicio en caliente (%S1=1) No tiene efecto sobre los bits de la palabra de registro.Objetos de software Funcionamiento 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. Programación En este ejemplo. un bit se desplaza hacia la izquierda cada segundo mientras que el bit 0 asume el estado al bit 15.15 %SBR0.0 NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente.0 En instrucciones no reversibles: Escalón Instrucción no reversible 0 LD CU 1 LD ST %S6 %SBR0 %SBR0. 162 EIO0000001477 11/2014 . En instrucciones reversibles: Escalón Instrucción reversible 0 BLK %SBR0 LD %S6 CU END_BLK 1 LD ST %SBR0.15 %SBR0.Objetos de software Ejemplo de programación Introducción 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). Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado Página Descripción 164 Configuración 165 Ejemplo de programación 166 EIO0000001477 11/2014 163 .5 Contador de pasos (%SC) Contador de pasos (%SC) Uso de los bloques de funciones del contador de pasos En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones Step Counter.Objetos de software Sección 4. CD Disminuir entrada (o instrucción) En un flanco ascendente. EIO0000001477 11/2014 . se restablece el Step Counter. aumenta un paso el Step Counter.Objetos de software Descripción Introducción Un bloque de funciones Step Counter permite realizar una serie de pasos a los que se pueden asignar acciones. Ilustración Esta ilustración corresponde a un bloque de funciones Step Counter: Entradas El bloque de funciones Step Counter contiene las siguientes entradas: 164 Etiqueta Descripción Valor R Restablecer entrada (o instrucción) Cuando el parámetro de la función R es 1.j) se establece en 1. disminuye un paso el Step Counter. Cada vez que un paso esté activo. Solo se puede activar un paso de un Step Counter cada vez. el bit asociado (el bit de Step Counter %SCi. CU Aumentar entrada (o instrucción) En un flanco ascendente. El desplazamiento de un paso a otro depende de eventos internos o externos. siga el procedimiento de configuración de un bloque de funciones (véase página 139) y lea la descripción de las modalidades de asignación de memoria en la Guía de funcionamiento de SoMachine Basic.Objetos de software Configuración Parámetros Para configurar los parámetros. El bloque de funciones Step Counter contiene los parámetros siguientes: Parámetro Descripción Valor Utilizado Dirección utilizada Si está seleccionada. esta dirección se está utilizando actualmente en un programa. consulte Definición y uso de los símbolos en la Guía de funcionamiento de SoMachine Basic. Caso especial Esta tabla contiene una lista de casos especiales de funcionamiento del bloque de funciones Step Counter: Caso especial Descripción Efecto de un reinicio en frío (%S0=1) Inicializa el Step Counter. Para obtener más información. Objetos El bloque de funciones Step Counter contiene el siguiente objeto: Objeto Descripción Valor %SCi. EIO0000001477 11/2014 165 . Dirección Dirección de objetos Step Counter Un programa puede contener solamente un número limitado de objetos Step Counter. Puede modificarse en una tabla de animación.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. Símbolo Símbolo El símbolo asociado con este objeto. 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. Efecto de un reinicio en caliente (%S1=1) No tiene ningún efecto sobre el Step Counter. Comentario Comentario Se puede asociar un comentario con este objeto. 0 %Q0.  Programación Este ejemplo es un bloque de funciones Step Counter con instrucciones reversibles: Escalón Instrucción reversible 0 BLK %SC0 LD %SC0.3 o cuando llega al paso 3.1.Objetos de software Ejemplo de programación Introducción En este ejemplo se muestra un bloque de funciones Step Counter.  El paso 0 controla la salida %Q0.2 %Q0. el paso 1 controla la salida %Q0.1 2 LD ST %SC0.2.2 %SC0 2 LD CD %I0.2 CU LD %I0.2 3 LD ST %SC0.0 %Q0.3 En este ejemplo se muestra un bloque de funciones Step Counter con instrucciones no reversibles: 166 Escalón Instrucción no reversible 0 LD OR R %SC0. El Step Counter 0 se reduce mediante la entrada %I0.1 CD END_BLK 1 LD ST %SC0.3 %I0.3 %SC0 1 LD CU %I0.1 %Q0.  El Step Counter 0 se aumenta mediante la entrada %I0.3 OR %I0.  El Step Counter 0 se restablece a 0 mediante la entrada %I0.3.2 y el paso 2 controla la salida %Q0.1 %SC0 3 LD ST %SC0.3 R LD %I0.1.1 EIO0000001477 11/2014 . de modo que la entrada Reset se encuentra activa tras un ciclo de CPU.3 NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. El paso 3 está activo. el paso actual se establece en 0 y la entrada de restablecimiento se establece en 0 tras un ciclo de CPU. (7) En el flanco ascendente de la entrada CD. EIO0000001477 11/2014 167 .2 5 LD ST %SC0.Objetos de software Escalón Instrucción no reversible 4 LD ST %SC0. El paso se incrementa y se actualizan las salidas. En el flanco ascendente de la entrada CU. (6) El paso actual se incrementa en el flanco ascendente de la entrada CU. el paso se reduce y se actualizan las salidas. el paso se incrementa y se actualizan las salidas.1 %Q0. Diagrama de tiempos En este diagrama se muestra el funcionamiento del bloque de funciones Step Counter: (1) (2) (3) (4) (5) El paso 0 está activo.0 se establece en 1. de modo que %SC0.2 %Q0. Cuando Reset está activo. 6 Contador (%C) Contador (%C) Uso de bloques de funciones del contador En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones Counter.Objetos de software Sección 4. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado 168 Página Descripción 169 Configuración 171 Ejemplo de programación 174 EIO0000001477 11/2014 . Ilustración En esta ilustración se presenta el bloque de funciones Counter.V) en el valor preestablecido (%Ci.V) en 0 cuando la entrada de (o instrucción) reseteado (R) se ha establecido en 1. Estas 2 operaciones se pueden realizar de manera simultánea.P) cuando la entrada establecida (S) se ha establecido en 1. EIO0000001477 11/2014 Valor 169 . S Establecer entrada (o instrucción) Establece el contador (%Ci. Entradas El bloque de funciones Counter contiene las siguientes entradas: Etiqueta Descripción R Restablecer entrada Establece el contador (%Ci.Objetos de software Descripción Introducción El bloque de funciones Counter cuenta los eventos de forma progresiva y regresiva. CD Conteo regresivo Disminuye el valor del contador (%Ci.V) en 1 en un flanco ascendente en la entrada Conteo regresivo (CD). CU Conteo progresivo Aumenta el valor del contador (%Ci.V) en 1 en un flanco ascendente en la entrada Conteo progresivo (CU). V cambia de 9999 a 0 (establecido en 1 cuando %Ci.Objetos de software Salidas El bloque de funciones Counter contiene las siguientes salidas: 170 Etiqueta Descripción Valor E Desborde de conteo regresivo El bit asociado %Ci.F=1 (contador completo).E (contador vacío) se ha establecido en 1 cuando el contador alcanza el valor 0.V = %Ci. EIO0000001477 11/2014 . el valor del contador pasa a 9. En caso de disminución posterior.D (conteo realizado) se ha establecido en 1 cuando %Ci.999. D Salida predeterminada alcanzada El bit asociado %Ci. cuando %Ci.P.V alcanza 0 y se resetea a 0 si el Counter continúa con el conteo progresivo). F Desborde de conteo progresivo El bit asociado %Ci. Este valor configurado puede leerse. EIO0000001477 11/2014 171 .999. Símbolo Símbolo El símbolo asociado con este objeto. consulte Definición y uso de los símbolos en la Guía de funcionamiento de SoMachine Basic.E Vacío Consulte la tabla de salidas (véase página 170). esta dirección se está utilizando actualmente en un programa. Para obtener más información. Puede modificarse en una tabla de animación. Consulte la guía de programación de su controlador para averiguar el número de contadores.999].P Valor preestablecido Consulte la tabla de parámetros (véase página 171). Comentario Comentario Se puede asociar un comentario con este objeto. Puede modificarse en una tabla de animación. Puede modificarse en una tabla de animación. %Ci. %Ci. Puede modificarse en una tabla de animación. Solo se pueden leer. Puede modificarse en una tabla de animación. Dirección Dirección de objetos Counter Un programa puede contener un número limitado de objetos de contador. El bloque de funciones Counter contiene los parámetros siguientes: Parámetro Descripción Valor Utilizado Dirección utilizada Si está seleccionada. %Ci. siga el procedimiento de configuración de un bloque de funciones (véase página 139) y lea la descripción de las modalidades de asignación de memoria en la Guía de funcionamiento de SoMachine Basic.P. Objetos El bloque de funciones Counter contiene los objetos siguientes: Objeto Descripción Valor %Ci. Preajuste Valor preestablecido Valores aceptados por el valor preestablecido [0 − 9. %Ci. El valor predeterminado es 9.Objetos de software Configuración Parámetros Para configurar los parámetros.D Terminado Consulte la tabla de salidas (véase página 170). probarse y modificarse utilizando el objeto asociado %Ci.V Valor actual del Counter Esta palabra aumenta o disminuye según las entradas (o instrucciones) CU y CD (consulte la tabla de entradas (véase página 169)).F Completo Consulte la tabla de salidas (véase página 170). Objetos de software Operaciones En esta tabla se describen las fases principales de las operaciones del bloque de funciones Counter: Operación Acción Resultado Restablecer La entrada R se establece en 1 (o se activa la instrucción R). El valor actual %Ci.D cambia a 1.P. El bit de salida %Ci. El valor actual %Ci. El bit de salida "preajuste alcanzado" %Ci.F (desborde de conteo progresivo) se restablece a 0.V se fuerza a 0.D y %Ci. El bit de salida %Ci.V toma el valor %Ci.F (desborde de conteo regresivo) se restablece a 0.V disminuye en una unidad. Si el Counter continúa con el conteo regresivo. Conteo Aparece un flanco ascendente en la entrada de conteo progresivo CU (o se activa la instrucción CU). El valor actual %Ci. El valor actual %Ci. El bit de salida %Ci.F están en 0.V cambia de 9.V cambia de 0 a 9. El valor actual %Ci.999. Definir Si la entrada S se establece en 1 (o si se activa la instrucción S) y la entrada restablecida está en el estado 0 (o la instrucción R está inactiva). Conteo regresivo 172 EIO0000001477 11/2014 .F (desborde de conteo progresivo) cambia a 1.V aumenta en una unidad. El valor actual %Ci.D se establece en 1. %Ci.V es igual al valor preestablecido %Ci.P y la salida %Ci. La entrada restablecida tiene prioridad.E.999 a 0.E (desborde de conteo regresivo) cambia a 1. El bit de salida %Ci. Si el Counter continúa con el conteo progresivo. El valor actual %Ci. Las salidas %Ci. Aparece un flanco ascendente en la entrada de conteo regresivo CD (o se activa la instrucción CD).  El valor preestablecido se inicializa con el valor definido durante la configuración. EIO0000001477 11/2014 173 .E. y %Ci.F se establecen en 0.  Los bits de salida %Ci.D.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). Efecto de un reinicio en caliente (%S1=1) de una detención del controlador No tiene ningún efecto sobre el valor actual del Counter (%Ci.Objetos de software Casos especiales En esta tabla se muestra una lista de casos de configuración/funcionamiento especiales para el bloque de funciones Counter: Caso especial Descripción Efecto de un reinicio en frío (%S0=1) o INIT  El valor actual %Ci.V se establece en 0.V). %Ci. NOTA: El efecto de INIT es el mismo que %S0=1. Efecto de modificar el preajuste %Ci. 000.2 AND %M0 CU END_BLK 1 LD ST %C8.2 AND %M0 CU %C8 2 LD ST %I0.D %Q0.0 NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. Configuración Durante la configuración.P): se establece en 5.D=1).1. el valor Preajuste (%Ci. deben introducirse los parámetros: En este ejemplo.1 %C8 %C8. Programación Este ejemplo es un bloque de funciones Counter con instrucciones reversibles: Escalón Instrucción reversible 0 BLK %C8 LD %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.000 elementos.D %Q0.0 En este ejemplo se muestra el mismo bloque de funciones Counter con instrucciones no reversibles: Escalón Instrucción no reversible 0 LD R 1 LD %I0.Objetos de software Ejemplo de programación Introducción El ejemplo siguiente muestra un contador que permite contar hasta un máximo de 5. 174 EIO0000001477 11/2014 . El contador se restablece mediante la entrada %I0.1 R LD %I0. Cada pulso de entrada %I0. Objetos de software Ejemplo de un contador progresivo/regresivo Esta ilustración es un ejemplo de un bloque de funciones Counter.D establece %M0 y cambia la instrucción en orden de disminución.E) se enciende y restablece %M0 (orden de incremento).V aumenta hasta el valor preestablecido %C1. El indicador Vacío (%C1.P y el indicador Finalizado %C1.0. %M0 es la orden de aumento (%M0 = Falso) y de disminución (%M0 = Verdadero).0.0.V disminuirá hasta llegar a 0. EIO0000001477 11/2014 175 . en cada flanco frontal de %I0. En cada flanco frontal de %I0. Si %M0 está establecido en False. %C1. La salida %C1. %C1. En este ejemplo.D cambia a TRUE. El contador realiza un conteo del flanco frontal de %I0. Objetos de software Sección 4. 176 EIO0000001477 11/2014 .7 Contador rápido (%FC) Contador rápido (%FC) Contador rápido Descripción general Consulte la Guía de la biblioteca de funciones avanzadas de su controlador. EIO0000001477 11/2014 177 .8 Contador de alta velocidad (%HSC) Contador de alta velocidad (%HSC) Contador de alta velocidad Descripción general Consulte la Guía de la biblioteca de funciones avanzadas de su controlador.Objetos de software Sección 4. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado 178 Página Descripción 179 Configuración 180 Ejemplo de programación 183 EIO0000001477 11/2014 .Objetos de software Sección 4.9 Registro Drum (%DR) Registro Drum (%DR) Uso de bloques de funciones del registro Drum En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones Drum Register. hace que el Drum Register avance un paso de avance y actualiza los bits de control. En cada paso.Objetos de software Descripción Introducción El bloque de funciones Drum Register funciona según un principio similar a un Drum Register electromecánico que cambia el paso según los eventos externos. estos puntos superiores se simbolizan mediante el estado 1 para cada paso y se asignan a bits de salida %Qi. Ilustración En esta ilustración se muestra el bloque de funciones Drum Register en modalidad offline. muestra el número de paso actual. Salidas El bloque de funciones Drum Register contiene las siguientes salidas: Etiqueta Descripción Valor F Salida (%DRi.F) Indica que el paso actual equivale al último paso definido.j o a bits de memoria %Mi. EIO0000001477 11/2014 179 . Paso Aparece en la modalidad offline cuando se crea un bloque. ajusta el Drum Register al paso 0. En la modalidad online. el punto superior de una leva proporciona un comando que es ejecutado por el controlador. Pasos Muestra el número total de pasos configurados en el Asistente Drum.F. Se puede comprobar el bit asociado %DRi. En el caso de un bloque de funciones Drum Register. U Entrada (o instrucción) En un flanco ascendente. Entradas El bloque de funciones Drum Register contiene las siguientes entradas: Etiqueta Descripción Valor R Para volver al paso 0 (o instrucción) En el estado 1. F Completo Consulte la tabla de salidas (véase página 179). Dirección Dirección de objetos Drum Register Un programa puede contener solo un número limitado de objetos Drum Register. Para obtener más información. consulte Definición y uso de los símbolos en la Guía de funcionamiento de SoMachine Basic.j) o palabra de memoria (%Mi). En el transcurso del paso actual. %DRi. El valor escrito debe ser un valor inmediato decimal. Consulte la guía de programación de su controlador para averiguar el número máximo del Drum Register. Funcionamiento El bloque de funciones Drum Register 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. Configuración Asistente Drum Número de pasos: de 1 a 8. siga el procedimiento de configuración de un bloque de funciones (véase página 139) y lea la descripción de las modalidades de asignación de memoria en la Guía de funcionamiento de SoMachine Basic. los bits de control adquieren los estados binarios definidos para este paso. El bloque de funciones Drum Register contiene los siguientes parámetros: Parámetro Descripción Valor Utilizado Dirección utilizada Si está seleccionada.  Una lista de bits de control está asociada con una salida configurada (%Qi.Objetos de software Configuración Parámetros Para configurar los parámetros. esta dirección se está utilizando actualmente en un programa.S Número del paso actual 0<=%DRi. Salidas o bits de memoria asociados a los pasos: del Bit0 al Bit15.  180 EIO0000001477 11/2014 . Cuando se escribe.S<=7. Objetos El bloque de funciones Drum Register contiene el siguiente objeto: Objeto Descripción Valor %DRi. Comentario Comentario Se puede asociar un comentario con este objeto. Puede modificarse en una tabla de animación. Palabra que se puede leer y escribir. el efecto se produce en la siguiente ejecución del bloque de funciones. Símbolo Símbolo El símbolo asociado con este objeto. Luego observe en caso de desbordes (vuelve al paso 0). el valor de %M10 (reinicio del Drum).Objetos de software En este ejemplo se resumen las principales características del Drum Register: NOTA: La configuración también se puede llevar a cabo en bits de memoria (%Mi).0 a %Q0. %Q0. EIO0000001477 11/2014 181 .5 cuando cambie el valor de %M11 (evolución del Drum).0 a %Q0. %M11.5. Observe los valores de %DR0.S. %DR0.F. %Q0. %DR0. Escalón Instrucción 0 BLK %DR0 LD %M10 R LD %M11 U END_BLK Cree las siguientes entradas en una tabla de animación: %M10. Efecto de un salto del programa El hecho de que el Drum Register ya no se explore significa que los bits de control conservan su estado más reciente.Objetos de software Casos especiales Esta tabla contiene una lista de casos especiales para el funcionamiento de Drum Register: 182 Caso especial Descripción Efectos de un reinicio en frío (%S0=1) Restablece el Drum Register en el paso 0 (actualización de los bits de control). EIO0000001477 11/2014 . Efecto de un reinicio en caliente (%S1=1) Actualiza los bits de control después del paso actual. 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. 1 se establece en 1.0 a %Q0.Objetos de software Ejemplo de programación Introducción A continuación se muestra un ejemplo de programación de un Drum Register 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. EIO0000001477 11/2014 183 .5 se activan sucesivamente cada vez que la entrada %I0.0 es alto. Las primeras 6 salidas de %Q0. los siguientes valores se restablece en 0:  Salida del registro Drum F (%DRi.7 END_BLK NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente.0 a %Q0.1 U OUT_BLK LD F ST %Q0.0 R LD %I0.S = 0) Programación Este ejemplo es un programa del bloque de funciones Drum Register: Escalón Instrucción 0 BLK %DR1 LD %I0.5 respectivamente (consulte la Configuración (véase página 185)).F = 0)  Número del paso actual (%DRi. Cuando el valor de la entrada %I0. se actualizan las salidas. El usuario escribe el valor del número de paso: %DR0.Objetos de software Diagrama de tiempos En este diagrama se muestra el funcionamiento del Drum Register: (1) (2) (3) (4) (5) (6) (7) 184 En un flanco ascendente en la entrada U. un flanco ascendente en la entrada U restablece el paso actual a 0. El valor escrito por el usuario se actualiza en el siguiente tiempo de ejecución. Cuando el último paso está activo. la salida F se establece en 1. Cuando se alcanza el último paso. El valor actual (flanco ascendente) %DR0. EIO0000001477 11/2014 . se aumenta el paso actual. Cuando se actualiza el paso actual.R = 1 se establece en 0.S = 4. 3 4 %Q0.Objetos de software Configuració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 Register:  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 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: Bit Salida asociada 0 Salida no asociada 1 %Q0.2 3 %Q0.1 2 %Q0.5 EIO0000001477 11/2014 185 .4 5 %Q0. 186 EIO0000001477 11/2014 .10 Pulso (%PLS) Pulso (%PLS) Pulso Descripción general Consulte la Guía de la biblioteca de funciones avanzadas de su controlador.Objetos de software Sección 4. EIO0000001477 11/2014 187 .11 Modulación de ancho de pulsos (%PWM) Modulación de ancho de pulsos (%PWM) Modulación de ancho de pulsos Descripción general Consulte la Guía de la biblioteca de funciones avanzadas de su controlador.Objetos de software Sección 4. 12 Mensaje (%MSG) e intercambio (EXCH) Mensaje (%MSG) e intercambio (EXCH) Uso de los bloques de funciones del mensaje En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones Message.Objetos de software Sección 4. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado 188 Página Descripción general 189 Descripción 191 Configuración 194 Ejemplo de programación 198 Ejemplos de ASCII 200 Peticiones y ejemplos estándar Modbus 202 EIO0000001477 11/2014 . Sintaxis A continuación. %MSG2). EXCH2) o el bloque de funciones Message (%MSG1. SoMachine Basic ofrece las siguientes funciones para este tipo de comunicaciones: Instrucción de Intercambio (EXCH) para transmitir/recibir mensajes. Es posible acceder a los puertos de comunicación agregando el número de puerto a la instrucción de Intercambio (EXCH1.  Cuando se procesa una instrucción de Intercambio el controlador lógico utiliza el protocolo configurado para el puerto especificado.Objetos de software Descripción general Introducción Un controlador lógico puede configurarse para comunicarse en el protocolo Modbus o puede enviar o recibir mensajes en modalidad de caracteres (ASCII). se muestra el formato de la instrucción de Intercambio: [EXCHx %MWi:L] Donde: x = número de puerto. EIO0000001477 11/2014 189 .  Bloque de funciones Message (%MSG) para controlar los intercambios de datos. L = número total de palabras de la tabla de palabras. En esta tabla se muestra la instrucción de Intercambio y el bloque de funciones Message que permiten acceder a los puertos de comunicación del controlador: Puerto de comunicación Instrucción de intercambio Bloque de funciones del mensaje 2 líneas serie EXCH1 %MSG1 EXCH2 %MSG2 EXCH1 %MSG1 EXCH3 %MSG3 1 línea serie y 1 Ethernet Instrucción de intercambio La instrucción de Intercambio permite a un controlador lógico enviar o recibir información dirigida a dispositivos ASCII o Modbus o procedente de ellos. Los controladores lógicos implementan mensajes Modbus TCP en la red Ethernet utilizando la instrucción EXCH3 y el bloque de funciones %MSG3. A cada puerto de comunicación se le puede asignar un protocolo distinto. 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. El controlador lógico debe finalizar el intercambio desde la primera instrucción de Intercambio antes de que se pueda iniciar una segunda instrucción de Intercambio. Consulte Configuración de la tabla de transmisión (véase página 195). Se debe utilizar el bloque de funciones Message cuando se envíen varios mensajes. El intercambio de mensajes se realiza mediante la instrucción de Intercambio. 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  190 EIO0000001477 11/2014 . Esclavo Modbus El protocolo Modbus admite dos capas de conexión de datos de los formatos del modelo OSI: ASCII y RTU. La modalidad Modbus RTU no vuelve a formatear el mensaje antes de enviarlo. La modalidad maestro Modbus permite al controlador enviar una petición Modbus a un esclavo y esperar una respuesta. consulte el documento Protocolo de aplicación Modbus que está disponible en http://www. Pueden utilizarse los tres tipos de comunicaciones siguientes con el protocolo ASCII: Solo transmisión  Transmisión/recepción  Solo recepción  Protocolo Modbus Si se trata de una conexión serie. La modalidad esclavo Modbus permite al controlador responder a las peticiones Modbus estándar procedentes de un maestro Modbus. excluyendo los caracteres inicial y final.Objetos de software Protocolo ASCII El protocolo ASCII proporciona al Logic Controller un protocolo de modalidad de caracteres simple que permite transmitir o recibir datos mediante un dispositivo simple. cada byte del mensaje se envía como dos caracteres ASCII. 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. La modalidad maestro Modbus admite Modbus ASCII y Modbus RTU. El carácter de final de trama está predeterminado en 0x0A (LF).org. El valor de comprobación de la trama Modbus ASCII es un complemento a dos simple de la trama. En Ethernet. La trama Modbus ASCII comienza con un carácter inicial (’:’) y finaliza con dos caracteres finales (CR y LF). Cada esclavo debe tener una dirección exclusiva. Para obtener información detallada sobre el protocolo Modbus. El maestro puede dirigirse a los esclavos individuales o iniciar un mensaje de difusión para todos los esclavos. Este protocolo se admite mediante la instrucción de Intercambio y se controla mediante el bloque de funciones Message. sin embargo. Cuando se utiliza la modalidad Modbus ASCII.modbus. especificado como CRC. 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. No se devuelven respuestas a las peticiones de difusión del maestro. diversos maestros (clientes) pueden intercambiar con un esclavo (servidor). utiliza una modalidad de cálculo de suma de comprobación diferente. La modalidad maestro Modbus sólo se admite a través de la instrucción de Intercambio. Los esclavos devuelven un mensaje (respuesta) a las peticiones que se les envían individualmente. E = 0 y %MSGx.D = 1. %MSGx. EIO0000001477 11/2014 Valor 191 . Para obtener más información. Tiene tres funciones: Comprobación de errores de comunicación: La comprobación de errores verifica el tamaño de cada tabla de intercambio y la validez del intercambio en relación con la configuración.  La programación del bloque de funciones Message es opcional. los códigos se escriben en las palabras de sistema %SW63. Estado 0: modalidad normal. Ilustración En esta ilustración se presenta el bloque de funciones Message: Entradas El bloque de funciones Message contiene la siguiente entrada: Etiqueta Descripción R Restablecer entrada Estado 1: reinicializa la comunicación.Objetos de software Descripción Introducción El Message bloque de funciones gestiona el intercambio de datos. %SW64.  Coordinación de varios mensajes: Para garantizar la coordinación cuando se envían varios mensajes. respectivamente. EXCH2 y EXCH3. Cuando se detectan errores.  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. consulte la Guía de programación del controlador. y %SW65 para los bloques de intercambio EXCH1. el bloque de funciones Message proporciona la información necesaria para determinar el momento en el que ha finalizado el mensaje anterior. 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 E Error de comunicación detectado (%MSGx. etc. Códigos de errores de comunicación 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: 192 Palabra de sistema Función Descripción %SW63 Código de error del bloque EXCH1 Código de error EXCH1: 0: operación correcta 1: número excesivo de bytes para enviar (> 250) 2: tabla de envío demasiado pequeña 3: tabla de palabras demasiado pequeña 4: tabla de recepción desbordada 5: tiempo de inactividad transcurrido 6: envío 7 .Objetos de software Salidas El bloque de funciones Message contiene las siguientes salidas: Etiqueta Descripción Valor D Comunicación finalizada (%MSGx.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 EIO0000001477 11/2014 . velocidad en baudios. paridad. 10 . etc.)  Tabla de recepción llena (no actualizada) Estado 0: longitud del mensaje correcta. bits de datos.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.) o a una conexión física inestable que causa un empeoramiento de la señal.E) Estado 1:  Comando sin definir  Tabla mal configurada  Carácter incorrecto recibido (velocidad. 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. paridad. Puede utilizarse debido a una configuración incorrecta en los parámetros físicos (por ejemplo. (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). se indican los códigos de error específicos de Ethernet: 101: la dirección IP no existe. 111: el host no funciona. 102: se ha perdido la conexión TCP.ha finalizado el tiempo de conexión del proceso de recepción tras el envío de los datos 123 . 106: la red perdió la conexión durante el restablecimiento.Objetos de software Palabra de sistema Función Descripción %SW64 Código de error del bloque EXCH2 Código de error EXCH2: consulte %SW63. 105: no se puede alcanzar la red. IP duplicada) 122 . 6-13: consulte %SW63. chip. 103: no hay sockets disponibles (todos los canales de conexión están ocupados). 108: conexión restablecida por el dispositivo del mismo nivel. 121 . 120: índice desconocido (el dispositivo remoto no está indexado en la tabla de configuración). A continuación. 104: no hay red. 109: temporización de conexión transcurrida. 107: conexión cancelada por el dispositivo del mismo nivel. EIO0000001477 11/2014 193 .irrecuperable (MAC. %SW65 Código de error del bloque EXCH3 1-4. 110: intento de conexión rechazado.Inicio de Ethernet en curso. Efecto de un reinicio en caliente (%S1=1) No tiene ningún efecto. En este caso.E se establecen en 1. Se puede enviar un mensaje nuevo. 1 (o se activa la instrucción R). Uso del bit %MSGx. 194 EIO0000001477 11/2014 . Operaciones En esta tabla se describen las principales fases de las operaciones del bloque de funciones Message: Operación Acción Resultado Restablecer La entrada R se establece en el estado  Se detiene la transmisión de todos los mensajes que se están transmitiendo. Casos especiales Esta tabla contiene una lista de casos especiales para el funcionamiento de Message: Caso especial Descripción Efecto de un reinicio en frío (%S0=1) o INIT Fuerza la reinicialización de la comunicación. byte menos significativo) es mayor que 128 (+80 en formato hexadecimal por FA). debe comprobar el cableado y que el dispositivo de destino sea compatible con la comunicación Modbus.  La salida del error de comunicación se restablece a 0.Objetos de software Configuración Error detectado Si se ha detectado un error al utilizar una instrucción de intercambio.D para evitar la pérdida de mensajes cuando se envían varios mensajes.  El bit de finalización se establece en 1. Efecto de una detención del controlador Si se está transmitiendo un mensaje. El Logic Controller está preparado para enviar otro mensaje.D y %MSGx. Comunicación finalizada La salida D se establece en el estado 1.E. y %SW64 contiene el código de error para el puerto 2. el controlador detiene la transferencia y reinicializa las salidas %MSGx. Consulte el capítulo Palabras de sistema de la Guía de la biblioteca de funciones del controlador lógico. 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. los bits %MSGx. la palabra del sistema %SW63 contiene el código de error para el puerto 1.  Si existe algún problema al enviar un mensaje Modbus a un dispositivo Modbus.  Si el número de bytes definido en el bloque de datos asociado a la instrucción de Intercambio (palabra 1. NOTA: El efecto de INIT es el mismo que %S0=1.D y %MSGx. Byte n transmitido Byte n+1 transmitido Tabla de recepción Byte 1 recibido ...  El procesamiento de las instrucciones de Intercambio no se repite en caso de error detectado.Objetos de software Limitaciones 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.  Los mensajes múltiples se controlan a través de %MSGx. En caso de petición de difusión. mientras que la dirección de esclavo debe establecerse en 0.  La presencia (para protocolo Modbus) y configuración (RS-485) del puerto 2 se comprueban durante el encendido o restablecimiento.  Las instrucciones de Intercambio se configuran con un timeout en caso de protocolo Modbus.  La entrada de restablecimiento (R) puede utilizarse para anular el procesamiento de recepción de la instrucción de Intercambio.  Las instrucciones de Intercambio anulan los procesamientos del esclavo Modbus activo. Byte p recibido Byte p+1 recibido NOTA: Además de las peticiones a los esclavos individuales. el byte Comando debe establecerse en 00.D  Configuración de la tabla de transmisión/recepción El tamaño máximo de las tramas enviadas o recibidas es de: 250 bytes para protocolo Modbus.  La tabla de palabras asociada a la instrucción de Intercambio consta de las tablas de control.... Byte 2 recibido . transmisión y recepción: Tabla de control Tabla de transmisión Byte más significativo Byte menos significativo Modbus Modbus ASCII ASCII Comando Longitud (transmisión/recepción) Offset de recepción Reservado (0) Offset de transmisión Byte 1 transmitido Byte 2 transmitido .  El procesamiento de cualquier mensaje en el puerto 1 se cancela cuando SoMachine Basic está conectado. el controlador maestro Modbus puede iniciar una petición de difusión destinada a todos los esclavos. EIO0000001477 11/2014 195 .. Reservado (0) ..  256 bytes para protocolo ASCII.. en caso de que ésta se solicite.) dentro de la tabla de recepción que se agregará cuando se transmita el paquete.Objetos de software Tabla de control para protocolo ASCII El byte Longitud 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. las tablas de control y de transmisión se completarán antes de ejecutar la instrucción de Intercambio y deben ser de tipo %MW. etc. Tablas de transmisión/recepción para protocolo ASCII En la modalidad de sólo transmisión. 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 Offset de emisión contiene el rango (1 para el primer byte. 2 para el segundo byte. sobrescrita por el número de caracteres recibidos al final de la recepción. Se utiliza para gestionar envíos asociados a valores de byte/palabra en el protocolo Modbus. el tercer byte de la tabla se rellenaría con un 0. El byte Comando debe contener uno de los siguientes elementos:  0: Solo transmisión  1: Envío/recepción  2: Solo recepción Tabla de control para protocolo Modbus El byte Longitud contiene la longitud de la tabla de transmisión en bytes (250 máx. El byte de comando. Por ejemplo. Se utiliza para gestionar envíos asociados a valores de byte/palabra en el protocolo Modbus. en caso de que se produzca una petición RTU de Modbus (excepto para difusión). En la modalidad de transmisión/recepción. el controlador lógico cambia a la modalidad de recepción y está preparado para recibir bytes. Para difusión. Si el parámetro Offset de emisión es igual a 0. si este byte contiene 3. si este byte contiene 3. etc. Este parámetro es la longitud en bytes de la tabla de transmisión.). las tablas de control y transmisión se rellenan antes de ejecutar la instrucción de intercambio y pueden ser del tipo %KW o %MW. Si el parámetro Offset de emisión no es igual a 0. 196 EIO0000001477 11/2014 . este parámetro será igual a la longitud de la trama de transmisión. 2 para el segundo byte. En la modalidad de sólo transmisión no se requiere espacio para la recepción de caracteres. Se requiere espacio para un máximo de 256 bytes de recepción al final de la tabla de transmisión. Una vez que se han enviado todos los bytes. el tercer byte se ignorará. en caso de que ésta se solicite. %MSGx. y el tercer byte que ha recibido se introduciría en la cuarta ubicación de la tabla. Por ejemplo. haciendo que el cuarto byte de la tabla sea el tercero en transmitirse.). siempre debe ser igual a 1 (Tx y Rx). Cuando se han transmitido todos los bytes.D se establece en 1 y se puede ejecutar una nueva instrucción de intercambio. debe ser 0. El byte Offset de recepción contiene el rango (1 para el primer byte.) dentro de la tabla de transmisión del byte que se ignorará cuando se transmitan los bytes.  La tabla de recepción está llena. NOTA: 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 recibiendo. Tablas de transmisión/recepción para protocolo Modbus Al utilizar cualquiera de las dos modalidades (Modbus ASCII o Modbus RTU).Objetos de software En la modalidad de sólo recepción. El primer byte contiene la dirección del dispositivo. la entrada %MSGx. Los caracteres de inicio. los caracteres de trama correctos se eliminan de la respuesta. la recepción finaliza cuando termina el timeout. la tabla de control se rellena antes de ejecutar la instrucción de intercambio y debe ser del tipo %MW. El primer byte contiene la dirección del dispositivo (específica o de difusión). En este caso.  Los caracteres de fin de trama se reciben en modalidad ASCII. En el momento de la ejecución. salvo para la verificación de la suma de comprobación. fin y comprobación no se almacenan en las tablas de transmisión/recepción. Si el puerto de comunicación está configurado para Modbus ASCII. 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. Las entradas x de los bytes recibidos contienen los datos del protocolo Modbus (codificación RTU) que se van a recibir. el controlador lógico cambia a la modalidad de recepción y está preparado para recibir bytes. el segundo byte contiene el código de función y el resto contiene información asociada a ese código de función. El controlador lógico pasa inmediatamente a la modalidad de recepción y está preparado para recibir bytes. Si se selecciona un timeout de valor cero.R deberá estar activada. Si el puerto de comunicación está configurado para Modbus ASCII. EIO0000001477 11/2014 197 . Si se configura un timeout diferente de cero. no habrá ningún timeout de recepción. pero que no define todas las posibilidades. No se realizará ninguna validación de los datos que se estén transmitiendo. Cuando se han transmitido todos los bytes. los caracteres de trama correctos se agregan a la transmisión. Las entradas x del byte transmitido contienen los datos del protocolo Modbus (codificación RTU) que se van a transmitir. Por consiguiente. para detener la recepción. La recepción finaliza de una de las formas siguientes:  Se detecta un timeout en un carácter o en una trama. 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. la tabla de transmisión se completa con la petición antes de ejecutar la instrucción de Intercambio. Se requiere espacio para un máximo de 256 bytes de recepción al final de la tabla de control. NOTA: Se trata de una aplicación típica. aparece un código de error detectado (tabla de recepción desbordada) en las palabras de sistema %SW63 y %SW64. La recepción finaliza cuando se recibe el último byte utilizado para la trama o se llena la tabla de recepción. Ejemplo de transmisión de dos mensajes sucesivos en el puerto 1: Escalón Instrucción reversible Comentario 0 LD %M142 [%MW2:=16#0106] [%MW3:=0] [%MW4:=16#0106] [%MW5:=4] [%MW6:=7] Escribe en un esclavo. 198 EIO0000001477 11/2014 . Si se envían varios mensajes en el mismo ciclo.D AND %M0 [EXCH2%MW2:5] R %M0 %MSG2. 2 LDR %I0.D [EXCH2%MW2:5] S %M0 – NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. [%MW2:=16#0106]: Código de comando: 01 hex.Objetos de software Ejemplo de programación Introducción A continuación se muestran ejemplos de programación de un bloque de funciones Message.D = 1).0 AND %MSG2. sólo el primer mensaje se transmite utilizando el mismo puerto. código de función: 06 hex (Escritura de registro único) [%MW5:=4]: Dirección de registro [%MW6:=7]: Valor que se va a escribir 1 LD %MSG2. Programación de una transmisión de varios mensajes sucesivos La ejecución de la instrucción Intercambio activa un bloque de funciones Message en el programa de aplicación.D: detecta si el puerto está ocupado o no y gestiona la coordinación de múltiples mensajes en consecuencia. El mensaje se transmite si el bloque de funciones Message todavía no está activo (%MSGx. en la dirección 1: valor 7 en el registro 4. 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. Objetos de software Programación de un intercambio de reinicialización Un intercambio se cancela activando la entrada (o instrucción) R. Ejemplo de reinicialización de un intercambio: Escalón Instrucción reversible Comentario 0 BLK %MSG1 LD %M0 R END_BLK – NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente.D a 1. Permite reinicializar un intercambio si se detecta un error.E a 0 y la salida %MSGx. Esta entrada inicializa la comunicación y restablece la salida %MSGx. EIO0000001477 11/2014 199 . Los caracteres de inicio y fin no se visualizan en una tabla de animación. podría añadirse un tratamiento adicional del error utilizando %SW64. La cantidad de datos a enviar se establece en 4 bytes. Para conseguir más precisión.0 NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. solo si el puerto está preparado. Por ejemplo. Se especifica un valor de ocho palabras para la instrucción EXCH2.Objetos de software Ejemplos de ASCII Escritura en aplicación Ejemplo de aplicación ASCII: Escalón Instrucción Comentario 0 LD 1 [%MW10:=16#0104] [%MW11:=16#0000] [%MW12:=16#4F4B] [%MW10:=16#0104]: Código de comando: 01 hex.E %Q0. 2 LD ST END %MSG2. dos palabras que se usarán para transmitir información (%MW12 y %MW13) y cuatro palabras para recibir datos (de %MW14 a %MW17). 0A = LF y 0D = CR) se envía al final de la trama.    200 A continuación. Existen dos palabras de control (%MW10 y %MW11). pues solo se muestran caracteres de datos. 16#0A0D (códigos ASCII. inicialice las tablas de control y de transmisión que va a utilizar para la instrucción de Intercambio. si ha configurado el primer carácter de fin en 10 y el segundo carácter de fin en 13. cuando se utilizan. estos caracteres se transmiten automáticamente o se verifican en la recepción (con %SW63 y %SW64). Use SoMachine Basic para crear un programa con tres escalones: En primer lugar. compruebe el bit de estado asociado a %MSG2 y envíe la instrucción EXCH2. En cualquier caso. NOTA: Los caracteres de fin definidos en la configuración se envían automáticamente al final de la trama. Finalmente. EIO0000001477 11/2014 . En este ejemplo se configura un comando para enviar y recibir datos.D [EXCH2 %MW10:8] NOTA: La tabla tiene 8 elementos. longitud de la transmisión: 04 hex [%MW11:=16#0000]: 0000: nulo [%MW12:=16#4F4B]: correcto 1 LD 1 AND %MSG2. como se define en la aplicación. seguido por el carácter de fin de trama definido en la configuración. 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. Objetos de software Inicialización de la tabla de animación Ejemplo de inicialización de una tabla de animación en la modalidad online: Dirección Valor Formato %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. El último paso consiste en descargar la aplicación al controlador y ejecutarla. Esta información se intercambia con el controlador lógico y se visualiza en una tabla de animación. EIO0000001477 11/2014 201 . Inicialice una tabla de animación para animar y visualizar las palabras de %MW10 a %MW16. haga clic con el botón derecho en la casilla Valores de la tabla de animación. 7 Valor del primer bit (valor 00 Valor del segundo bit (si N2>1) o 01) expandido a un byte expandido a un byte 8 Valor del tercer bit (si N1>1) – expandido a un byte . 02 para el bit de entrada): Tabla de control Tabla de transmisión Tabla Índice Byte más significativo Byte menos significativo 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 Tabla de recepción 5 (después de la 6 respuesta) Esclavo en (de 1 a 247) 01 ó 02 (código de respuesta) 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].. – (1) Este byte también recibe la longitud de la cadena transmitida tras la respuesta.. donde el resultado es la parte entera de la división. (N2/2)+6 (si N2 es Valor del bit N º (si N >1) 2 1 par) expandido a un byte (N2/2+1)+6 (si N2 es impar) . .Objetos de software Peticiones y ejemplos estándar Modbus Maestro Modbus: lectura de N bits En esta tabla se representan las peticiones 01 y 02 (01 para el bit de memoria o salida.. 202 EIO0000001477 11/2014 ..... ... 04 para la palabra de entrada): Tabla de control Tabla de transmisión Tabla de recepción (después de la respuesta) Tabla Índice Byte más significativo Byte menos significativo 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) . la palabra asociada en la tabla de transmisión debe contener el valor FF00h... NOTA: El offset de recepción de 3 agrega un byte (valor = 0) en la tercera posición de la tabla de recepción. EIO0000001477 11/2014 203 . N+6 Palabra N leída (si N>2) (1) Este byte también recibe la longitud de la cadena transmitida tras la respuesta.. Maestro Modbus: escritura de un bit En esta tabla se representa la petición 05 (escriba un solo bit: salida o memoria): Tabla de control Tabla Índice Byte más significativo Byte menos significativo 0 01 (transmisión/recepción) 06 (longitud de transmisión)(1) 1 00 (offset de recepción) 00 (offset de transmisión) (1) Este byte también recibe la longitud de la cadena transmitida tras la respuesta.Objetos de software Maestro Modbus: lectura de N palabras En esta tabla se representan las peticiones 03 y 04 (03 para la palabra de memoria o salida. y 0 para asignar el valor 0 a un bit. (2) Para asignar el valor 1 a un bit. Esto permite un buen posicionamiento en esta tabla del número de bytes leídos y de los valores de las palabras leídas.. NOTA: 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). la palabra asociada en la tabla de transmisión debe contener el valor FF00h.. NOTA:  Esta petición no necesita utilizar un offset. y 0 para asignar el valor 0 a un bit. (2) Para asignar el valor 1 a un bit. Tabla de recepción (después de la respuesta) 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) (1) Este byte también recibe la longitud de la cadena transmitida tras la respuesta.  La trama de respuesta es la misma que la de esta petición (en un caso normal). 0xFF o 0x00(2).  204 EIO0000001477 11/2014 . Maestro Modbus: escritura de palabra En esta tabla se representa la petición 06 (escriba un solo bit: salida o memoria): Tabla de control Tabla de transmisión Tabla de recepción (después de la respuesta) Tabla Índice Byte más significativo Byte menos significativo 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) (1) Este byte también recibe la longitud de la cadena transmitida tras la respuesta.Objetos de software Tabla de transmisión Tabla Índice Byte más significativo Byte menos significativo 2 Esclavo en (de 1 a 247) o 0 en caso de difusión 05 (código de petición) 3 Valor que se va a escribir para el MSB de la palabra indexada 4.. . Permite también una correspondencia correcta entre los valores de las palabras en la tabla de transmisión. (N2/2)+5 (si N2 es par) (N2/2+1)+5 (si N2 es impar) Valor del byte N2 – Esclavo en (de 1 a 247) – Dirección del primer bit escrito – Números de los bits escritos (= N1) o 15 (código de respuesta) NOTA: El offset de transmisión = 7 suprime el séptimo byte de la trama enviada. donde el resultado es la parte entera de la división.. . Maestro Modbus: escritura de N palabras En esta tabla se representa la petición 16: Tabla de control EIO0000001477 11/2014 Tabla Índice Byte más significativo Byte menos significativo 0 01 (transmisión/recepción) 8 + (2*N) (longitud de transmisión) 1 00 (offset de recepción) 07 (offset de transmisión) 205 . 6 Valor del primer byte Valor del segundo byte 7 Valor del tercer byte Valor del cuarto byte . efecto de offset) N2 = Número de bytes de datos que se van a escribir = [1+(N1-1)/8]. ....Objetos de software Maestro Modbus: escritura de N bits En esta tabla se representa la petición 15 (escriba N bits: salida o memoria): Tabla de control Tabla de transmisión Tabla de recepción (después de la respuesta) Tabla Índice Byte más significativo Byte menos significativo 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.. . código de identificación de lectura de dispositivo [%MW804:=16#0000]: ID de objeto. EIO0000001477 11/2014 . Petición Modbus: lectura de identificación de dispositivo En esta tabla se representa la petición 43 (identificación del dispositivo de lectura): Escalón Instrucción Comentario 0 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. sin uso Petición Modbus: diagnóstico En esta tabla se representa la petición 8 (diagnóstico): 206 Escalón Instrucción Comentario 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.. Esta modalidad se denomina modalidad eco o espejo. 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) 16 (código de respuesta) NOTA: El offset de transmisión = 7 suprime el séptimo byte de la trama enviada. 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... efecto de offset) 6 Primer valor de la palabra que se va a escribir 7 Segundo valor que se va a escribir 2*N = Número de bytes que se van a escribir . .Objetos de software Tabla de transmisión Tabla de recepción (después de la respuesta) Tabla Índice Byte más significativo Byte menos significativo 2 Esclavo en (de 1 a 247) o 0 en caso de difusión 16 (código de petició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. Permite también una correspondencia correcta entre los valores de las palabras en la tabla de transmisión. se inicializa la tabla de palabras de la instrucción de Intercambio para leer cuatro palabras del esclavo en la dirección Modbus 2 que comienza en la ubicación %MW0. cada palabra de datos se dividiría en dos palabras en el bloque de Intercambio. Sin este offset.D [EXCH2 %MW0:11] – 2 LD ST END – %MSG2. escriba algunas palabras de memoria para un conjunto de valores conocidos. cree un programa de aplicación para el maestro y el esclavo. EIO0000001477 11/2014 207 . En el maestro. Con ayuda de SoMachine Basic. 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. NOTA: Observe el uso del offset de recepción establecido en %MW1 del maestro Modbus.0 Programa del esclavo: Escalón Instrucción Comentario 0 LD 1 [%MW0:=16#6566] [%MW1:=16#6768] [%MW2:=16#6970] [%MW3:=16#7172] END – NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente.E %Q0.Objetos de software Ejemplo 1: Escritura de la aplicación Modbus Programa maestro: Escalón Instrucción Comentario 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. Para el esclavo. offset de envío = 0 %MW2 a %MW4: transmisión [%MW2:=16#0203]: esclavo 2. Este offset se utiliza por comodidad. 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. se podría añadir una comprobación adicional de errores mediante %SW64 para una mayor precisión.0 EIO0000001477 11/2014 . En este ejemplo. la aplicación comprueba el bit de comunicación asociado a %MSG2. de %MW2 a %MW7 [%MW1:=16#0007] [%MW2:=16#0210]: dirección del esclavo 2. Por último. Inicialización de la tabla de animación en la modalidad online correspondiente a la parte de la tabla de recepción: Dirección Valor Formato %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.D [EXCH2 %MW0:12] – 2 LD ST END – %MSG2.Objetos de software Antes de ejecutar la instrucción EXCH2. 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. 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. Igualmente. 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. Ejemplo 2: Escritura de la aplicación Modbus Programa maestro: 208 Escalón Instrucción Comentario 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] [%MW0:=16#010C]: longitud de la tabla de transmisión: 0C hex = 12 dec. las palabras leídas del esclavo (comenzando por %MW7) están correctamente alineadas con los límites de palabras del maestro. abra una tabla de animación en el maestro.E %Q0. 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. se podría añadir una comprobación adicional de errores detectados mediante %SW64 para una mayor precisión.Objetos de software Programa del esclavo: Escalón Instrucción Comentario 0 LD 1 [%MW18:=16#FFFF] END – NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. se asignará espacio en el esclavo para las direcciones de memoria de %MW0 a %MW18. 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). Por último. la petición Modbus intentaría escribir en ubicaciones que no existen en el esclavo. El offset de 7 suprimirá el byte alto en la sexta palabra (el valor 00 hexadecimal en %MW5). escriba una única palabra de memoria %MW18. Antes de ejecutar la instrucción EXCH2. Inicialización de la tabla de animación en el maestro: Dirección Valor Formato %MW0 010C Hexadecimal %MW1 0007 Hexadecimal %MW2 0210 Hexadecimal %MW3 0010 Hexadecimal %MW4 0002 Hexadecimal %MW5 0004 Hexadecimal %MW6 6566 Hexadecimal %MW7 6768 Hexadecimal %MW8 0210 Hexadecimal %MW9 0010 Hexadecimal %MW10 0004 Hexadecimal EIO0000001477 11/2014 209 . Para el esclavo. de modo que se mantengan correctamente dentro de los límites de palabras. Con ayuda de SoMachine Basic. De esta forma. se alinean los valores de datos en la tabla de transmisión de la tabla de palabras. Igualmente. De este modo. En el maestro. la aplicación comprueba el bit de comunicación asociado a %MSG2. NOTA: Observe el uso del offset de transmisión establecido en %MW1 de la aplicación del maestro Modbus. Sin asignar el espacio. cree un programa de aplicación para el maestro y el esclavo. 210 EIO0000001477 11/2014 .Objetos de software Inicialización de la tabla de animación en el esclavo: Dirección Valor Formato %MW16 6566 Hexadecimal %MW17 6768 Hexadecimal Después de descargar y configurar todos los controladores lógicos para que se ejecuten. el código de respuesta. abra una tabla de animación en el controlador esclavo. la primera palabra escrita y el número de palabras escritas comenzando por %MW8 en el ejemplo anterior. Estos datos indican la dirección del esclavo. Los dos valores de %MW16 y %MW17 se escriben en el esclavo. se puede utilizar una tabla de animación para examinar la parte de la tabla de recepción de los datos de intercambio. En el maestro. Objetos de software Sección 4.13 Salida de tren de pulsos (%PTO) Salida de tren de pulsos (%PTO) Salida de tren de pulsos Descripción general Consulte la Guía de la biblioteca de funciones avanzadas de su controlador. EIO0000001477 11/2014 211 Objetos de software 212 EIO0000001477 11/2014 SoMachine Basic Objetos de comunicación EIO0000001477 11/2014 Capítulo 5 Objetos de comunicación Objetos de comunicación Introducció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). NOTA: No utilice la instrucción EXCH (con el bloque de funciones %MSG) simultáneamente con los bloques de funciones de comunicación. Contenido de este capítulo Este capítulo contiene las siguientes secciones: Sección Apartado Página 5.1 Leer datos desde un dispositivo remoto (%READ_VAR) 214 5.2 Escritura de datos en un dispositivo Modbus (%WRITE_VAR) 222 5.3 Leer y escribir datos en un dispositivo Modbus (%WRITE_READ_VAR) 228 5.4 Comunicación en una conexión ASCII (%SEND_RECV_MSG) 234 EIO0000001477 11/2014 213 Objetos de comunicación Sección 5.1 Leer datos desde un dispositivo remoto (%READ_VAR) Leer datos desde un dispositivo remoto (%READ_VAR) Utilizar bloques de funciones %READ_VAR En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones %READ_VAR. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado 214 Página Descripción 215 Configuración de la función 219 Ejemplo de programación 221 EIO0000001477 11/2014 Objetos de comunicación Descripción Introducción El bloque de funciones %READ_VAR se utiliza para leer datos desde un dispositivo remoto en Modbus SL o Modbus TCP. Ilustración En esta ilustración se muestra el bloque de funciones %READ_VAR: Entradas El bloque de funciones %READ_VAR contiene las siguientes entradas: Etiqueta Tipo Valor Ejecutar 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. Anular BOOL Detiene la ejecución de bloques de funciones cuando se detecte un flanco ascendente. La salida cancelada 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). NOTA: Configurar la salida Ejecutar o Anular 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 11/2014 215 indica que la ejecución del bloque de funciones se ha cancelado con la entrada Anular.Objetos de comunicación Salidas El bloque de funciones %READ_VAR contiene las siguientes salidas: Etiqueta Tipo Valor Terminado BOOL Si TRUE. TimedOut 01 hex Parada del intercambio porque se ha agotado el timeout. SendBufferTooSmall 0A hex El tamaño de búfer de transmisión es demasiado pequeño. BadAddress 03 hex El formato de dirección es incorrecto. Códigos de error de comunicación En esta tabla se describen los códigos de error escritos en el objeto %READ_VARi. indica que la ejecución del bloque de funciones está en curso. consulte los códigos de error de funcionamiento. BadRemoteAddr 04 hex La dirección remota es incorrecta. La longitud es incorrecta. Detenida la ejecución de bloques de funciones. (véase página 217) FF hex Se rechaza el mensaje. BadParameters 06 hex Los parámetros específicos son incorrectos. consulte las tablas códigos de error de comunicación (véase página 216) y códigos de error de funcionamiento (véase página 217). ProtocolSpecificError FE hex Indica un error de protocolo Modbus. BadMgtTable 05 hex El formato de la tabla de gestión es incorrecto. ProblemSendingRq 07 hex Emisión incorrecta de la petición al destinatario. (véase página 217). indica que la ejecución del bloque de funciones se completa correctamente sin errores detectados. Refused 216 0E hex EIO0000001477 11/2014 . consulte los códigos de error de funcionamiento. Error BOOL Si TRUE.CommError: Nombre Código de error Descripción detectado CommunicationOK 00 hex Intercambio correcto. Cancelado BOOL Si TRUE. Para obtener más información sobre CommError y OperError. Para obtener más información. indica que se ha detectado un error. RecvBufferTooSmall 09 hex El tamaño de búfer de recepción es demasiado pequeño. SystemResourceMissing 0B hex BadLength Falta el recurso del sistema. Ocupado BOOL Si TRUE. Para obtener más información. Abort 02 hex Parada del intercambio cuando lo solicite el usuario (entrada Anular). TargetCommInactive 0C hex Hay una función de comunicación de destino inactiva. BadLength 05 hex La longitud es incorrecta. SystemResourceMissing 0B hex Falta el recurso del sistema. TargetResourceMissing 01 hex Falta el recurso del sistema de destino. ChannelNotConfigured 0F hex Vía no configurada.Objetos de comunicación Códigos de error de funcionamiento Este código de retorno es significativo cuando el código de error de comunicación (objeto CommError) tiene el valor:  00 hex (correcto)  FF hex (rechazado)  FE hex (código de excepción Modbus) En esta tabla se describen los códigos de error escritos en el objeto %READ_VARi. BadResponse 02 hex La respuesta recibida es incorrecta. TargetMissing 0D hex Falta el destino. BadAddr 07 hex La dirección es incorrecta. CommChannelErr 06 hex Se ha detectado un error en el canal de comunicación.OperError: CommError Nombre Código de error Descripción detectado 00 hex (correcto) OperationOK 00 hex Intercambio correcto. FF hex (rechazado) EIO0000001477 11/2014 217 . NotProcessed 01 hex La petición no se ha procesado. MemoryParityError 08 hex El esclavo detecta un error de paridad en la memoria al intentar leer la memoria ampliada. GatewayPathUnavailable 0A hex La pasarela está sobrecargada o no está configurada correctamente. IllegalDataValue 03 hex El valor en el campo de datos de petición no es un valor autorizado para el esclavo. SlaveDeviceFailure 04 hex El esclavo no logra realizar una acción solicitada debido a un error irrecuperable. pero las comunicaciones han superado el timeout antes de que el esclavo haya finalizado. 218 EIO0000001477 11/2014 . IllegalDataAddress 02 hex La dirección de datos recibida por el esclavo no es una dirección autorizada para el esclavo.Objetos de comunicación CommError Nombre Código de error Descripción detectado FE hex (código de excepción Modbus) IllegalFunction 01 hex El código de función recibido en la petición no es una acción autorizada para el esclavo. GatewayTargetDeviceFailedToRespond 0B hex El esclavo no está presente en la red. Acknowledge 05 hex El esclavo ha confirmado la petición. SlaveDeviceBusy 06 hex El esclavo está ocupado procesando otro comando. El estado del esclavo puede ser erróneo para procesar una petición específica. Guía de programación)). M221. Un valor de 0 significa que no se ha aplicado timeout. esta respuesta se ignora. Si el sistema recibe una respuesta después de la caducidad del timeout. Guía de funcionamiento). Logic Controller. consulte la tabla Número máximo de objetos (véase Modicon Logic Controller. Enlace  SL1: Serie 1  SL2: Serie 2  ETH1: Ethernet Selección de puerto ID 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 Identificador del dispositivo Para obtener más información sobre el índice Ethernet. Símbolo Texto definido por el usuario El símbolo identifica este objeto de forma inequívoca. consulte la sección sobre definición y uso de símbolos de la SoMachine Basic Guía de funcionamiento (véase SoMachine Basic. el intercambio finaliza en error con un código de error (CommError = 01 hex). Dirección %READ_VARi. NOTA: 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. El timeout establece el tiempo máximo de espera de recepción de una respuesta. Guía de programación). Timeout La unidad está en ms. Guía de programación). Logic Controller. El bloque de funciones %READ_VAR tiene las propiedades siguientes: Propiedad Valor Descripción Utilizado Casilla de verificación activada / desactivada Indica si se está utilizando la dirección. Si el timeout finaliza. donde i va desde 0 hasta i es el identificador de instancia. Guía de programación) y Configuración de línea serie (véase Modicon M221. Para obtener más información. Para conocer la el número de objetos disponibles en este cantidad máxima de instancias. Logic Controller. consulte la Adición de servidores remotos (véase Modicon M221. NOTA: SL2 y ETH1 los puertos de comunicación incorporados sólo están disponibles en algunas referencias de los controladores. con 100 como valor predeterminado. EIO0000001477 11/2014 219 .Objetos de comunicación Configuración de la función Propiedades Haga doble clic en el bloque de funciones para abrir la tabla de propiedades de la función. Comentario Texto definido por el usuario Un comentario para asociar a este objeto.535 Cantidad     IndexData De 0 a 65. De 0 a 124 para %MW De 0 a 127 para %I De 0 a 127 para %Q De 0 a 124 para %IW Dirección del primer objeto para leer.535 La primera dirección de la tabla de palabras en la que se guardan los valores de lectura (%MW). Número de objetos que se van a leer EIO0000001477 11/2014 .Objetos de comunicación Propiedad ObjType Valor Descripción El tipo de objetos para leer: Los tipos de códigos de función de lectura Modbus son:  Mbs Fct 3: equivale al código de función 03 de Modbus  Mbs Fct 2: equivale al código de función 02 de Modbus  Mbs Fct 1: equivale al código de función 01 de Modbus  Mbs Fct 4: equivale al código de función 04 de Modbus  %MW (Mbs Fct 3): palabras de memoria (predeterminado)  %I (Mbs Fct 2): bits de entrada  %Q (Mbs Fct 1): bits de salida  %IW (Mbs Fct 4): palabras de entrada 220 FirstObj De 0 a 65. Programación Este ejemplo es un bloque de funciones Bloque de funciones %READ_VAR: Escalón Instrucción 0 BLK %READ_VAR0 LD %I0.2 END_BLK NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente.Objetos de comunicación Ejemplo de programación Introducción El bloque de funciones %READ_VAR se puede configurar como se muestra en este ejemplo de programación.1 ABORT OUT_BLK LD DONE ST %Q0.0 LD BUSY ST %Q0. EIO0000001477 11/2014 221 .1 LD ABORTED ST %M1 LD ERROR ST %Q0.0 EXECUTE LD %I0. 2 Escritura de datos en un dispositivo Modbus (%WRITE_VAR) Escritura de datos en un dispositivo Modbus (%WRITE_VAR) Utilizar bloques de funciones %WRITE_VAR En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones %WRITE_VAR.Objetos de comunicación Sección 5. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado 222 Página Descripción 223 Configuración de la función 225 Ejemplo de programación 227 EIO0000001477 11/2014 . Objetos de comunicación Descripción Introducción El bloque de funciones %WRITE_VAR se utiliza para escribir datos en un dispositivo externo utilizando el protocolo Modbus SL o Modbus TCP. Si se detecta un segundo flanco ascendente durante la ejecución del bloque de funciones. El bloque de funciones debe ver primero la entrada como FALSE para detectar un flanco ascendente posterior.CommError contiene el código 02 hex (el intercambio se detiene cuando lo solicita un usuario). Anular BOOL Detiene la ejecución de bloques de funciones cuando se detecte un flanco ascendente. La salida cancelada se establece en 1 y el objeto %WRITE_VARi. NOTA: Configurar la salida Ejecutar o Anular para TRUE en el primer ciclo de tarea en ejecución no se detecta como un flanco ascendente. Ilustración En esta ilustración se muestra el bloque de funciones %WRITE_VAR: Entradas El bloque de funciones %WRITE_VAR contiene las siguientes entradas: Etiqueta Tipo Valor Ejecutar BOOL Arranca la ejecución de bloques de funciones cuando se detecte un flanco ascendente. se ignora y el comando en curso no se ve afectado. EIO0000001477 11/2014 223 . 224 EIO0000001477 11/2014 . indica que la ejecución del bloque de funciones se completa correctamente sin errores detectados. Cancelado BOOL Si TRUE. consulte las tablas códigos de error de comunicación (véase página 216) y códigos de error de funcionamiento (véase página 217). Error BOOL Si TRUE. Para obtener más información sobre CommError y OperError. indica que la ejecución del bloque de funciones está en curso. indica que la ejecución del bloque de funciones se ha cancelado con la entrada Anular. Ocupado BOOL Si TRUE.Objetos de comunicación Salidas El bloque de funciones %WRITE_VAR contiene las siguientes salidas: Etiqueta Tipo Valor Terminado BOOL Si TRUE. indica que se ha detectado un error. Detenida la ejecución de bloques de funciones. Códigos de error de funcionamiento Consulte los códigos de error de funcionamiento (véase página 217). Códigos de error de comunicación Consulte los códigos de error de comunicación (véase página 216). Para obtener más información. Enlace  SL1: Serie 1  SL2: Serie 2  ETH1: Ethernet Selección de puerto 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 Identificador del dispositivo Para obtener más información sobre el índice Ethernet. consulte la tabla Número máximo de objetos (véase Modicon M221. Para conocer la cantidad máxima de instancias. consulte la Adición de servidores remotos (véase Modicon M221.Objetos de comunicación Configuración de la función Propiedades Haga doble clic en el bloque de funciones para abrir la tabla de propiedades de la función. Guía de programación). Guía de programación). ID EIO0000001477 11/2014 NOTA: SL2 y ETH1 los puertos de comunicación incorporados sólo están disponibles en algunas referencias de los controladores. i es el identificador de instancia. consulte la sección sobre definición y uso de símbolos de la SoMachine Basic Guía de funcionamiento. 225 . donde i va desde 0 hasta el número de objetos disponibles en este Logic Controller. Logic Controller. Logic Controller. Símbolo Texto definido por el usuario El símbolo identifica este objeto de forma inequívoca. Dirección %WRITE_VARi. El bloque de funciones %WRITE_VAR tiene las propiedades siguientes: Propiedad Valor Descripción Utilizado Casilla de verificación activada / desactivada Indica si se está utilizando la dirección. EIO0000001477 11/2014 . Logic Controller. el intercambio finaliza en error con un código de error (CommError = 01 hex). Logic Controller. Guía de programación)). 226 ObjType El tipo de objetos para escribir:  %MW (Mbs Fct 16): palabras de memoria (predeterminado)  %Q (Mbs Fct 15): bits de salida Los tipos de códigos de función de escritura Modbus son:  Mbs Fct 16: equivale al código de función 16 de Modbus  Mbs Fct 15: equivale al código de función 15 de Modbus FirstObj De 0 a 65.Objetos de comunicación Propiedad Valor Descripción Timeout La unidad está en ms. esta respuesta se ignora.535 La primera dirección de la tabla de palabras en la que se escriben los valores (%MW). Comentario Texto definido por el usuario Un comentario para asociar a este objeto. Un valor de 0 significa que no se ha aplicado timeout. Si el timeout finaliza. NOTA: 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. con 100 como valor predeterminado. El timeout establece el tiempo máximo de espera de recepción de una respuesta.535 Dirección del primer objeto cuyos valores se utilizan para escribir Cantidad  De 0 a 124 para %MW  De 0 a 127 para %Q Número de objetos que se van a escribir IndexData De 0 a 65. Si el sistema recibe una respuesta después de la caducidad del timeout. Guía de programación) y Configuración de línea serie (véase Modicon M221. 1 ABORT OUT_BLK LD DONE ST %Q0.0 LD BUSY ST %Q0. EIO0000001477 11/2014 227 .Objetos de comunicación Ejemplo de programación Introducción El bloque de funciones %WRITE_VAR se puede configurar como se muestra en este ejemplo de programación.0 EXECUTE LD %I0. Programación Este ejemplo es un bloque de funciones Bloque de funciones %WRITE_VAR: Escalón Instrucción 0 BLK %WRITE_VAR0 LD %I0.2 END_BLK NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente.1 LD ABORTED ST %M1 LD ERROR ST %Q0. 3 Leer y escribir datos en un dispositivo Modbus (%WRITE_READ_VAR) Leer y escribir datos en un dispositivo Modbus (%WRITE_READ_VAR) Utilizar bloques de funciones %WRITE_READ_VAR En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones %WRITE_READ_VAR. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado 228 Página Descripción 229 Configuración de la función 231 Ejemplo de programación 233 EIO0000001477 11/2014 .Objetos de comunicación Sección 5. Anular Detiene la ejecución de bloques de funciones cuando se detecte un flanco ascendente. El bloque de funciones debe ver primero la entrada como FALSE para detectar un flanco ascendente posterior.CommError contiene el código 02 hex (el intercambio se detiene cuando lo solicita un usuario). se ignora y el comando en curso no se ve afectado.Objetos de comunicación Descripción Introducció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. La salida cancelada se establece en 1 y el objeto %WRITE_READ_VARi. BOOL NOTA: Configurar la salida Ejecutar o Anular para TRUE en el primer ciclo de tarea en ejecución no se detecta como un flanco ascendente. EIO0000001477 11/2014 229 . Ilustración En esta ilustración se muestra el bloque de funciones %WRITE_READ_VAR: Entradas El bloque de funciones %WRITE_READ_VAR contiene las siguientes entradas: Etiqueta Tipo Valor Ejecutar 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. Ocupado BOOL Si TRUE. Códigos de error de comunicación Consulte los códigos de error de comunicación (véase página 216). Error BOOL Si TRUE. Detenida la ejecución de bloques de funciones. indica que se ha detectado un error.Objetos de comunicación Salidas El bloque de funciones %WRITE_READ_VAR contiene las siguientes salidas: Etiqueta Tipo Valor Terminado BOOL Si TRUE. indica que la ejecución del bloque de funciones se completa correctamente sin errores detectados. consulte las tablas códigos de error de comunicación (véase página 216) y códigos de error de funcionamiento (véase página 217). Para obtener más información sobre CommError y OperError. Cancelado BOOL Si TRUE. indica que la ejecución del bloque de funciones está en curso. 230 EIO0000001477 11/2014 . Códigos de error de funcionamiento Consulte los códigos de error de funcionamiento (véase página 217). indica que la ejecución del bloque de funciones se ha cancelado con la entrada Anular. consulte la Adición de servidores remotos (véase Modicon M221. donde i va desde 0 hasta i es el identificador de instancia. Enlace  SL1: Serie 1  SL2: Serie 2  ETH1: Ethernet Selección de puerto 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 Identificador del dispositivo Para obtener más información sobre el índice Ethernet. Dirección %WRITE_READ_VARi. Para el número de objetos disponibles en este Logic conocer la cantidad máxima de instancias. Símbolo Texto definido por el usuario El símbolo identifica este objeto de forma inequívoca. Logic Controller. Logic Controller. Guía de programación). 231 . Guía de programación). máximo de objetos (véase Modicon M221. ID EIO0000001477 11/2014 NOTA: SL2 y ETH1 los puertos de comunicación incorporados sólo están disponibles en algunas referencias de los controladores. consulte la sección sobre definición y uso de símbolos de la SoMachine Basic Guía de funcionamiento (véase SoMachine Basic. consulte la tabla Número Controller.Objetos de comunicación Configuración de la función Propiedades Haga doble clic en el bloque de funciones para abrir la tabla de propiedades de la función. Guía de funcionamiento). Para obtener más información. El bloque de funciones %WRITE_READ_VAR tiene las propiedades siguientes: Propiedad Valor Descripción Utilizado Casilla de verificación activada / desactivada Indica si se está utilizando la dirección. NOTA: 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. 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. Logic Controller. Si el sistema recibe una respuesta después de la caducidad del timeout. FirstReadObj De 0 a 65.535 Dirección del primer objeto para leer ReadQuantity De 0 a 124 Número de objetos que se van a leer IndexDataIn De 0 a 65. EIO0000001477 11/2014 . Guía de programación)).535 La primera dirección de la tabla de palabras en la que se escriben los valores (%MW). que equivale al código 23 de función de Modbus. Comentario Texto definido por el usuario Un comentario para asociar a este objeto. esta respuesta se ignora.535 La primera dirección de la tabla de palabras en la que se guardan los valores de lectura (%MW). Guía de programación) y Configuración de línea serie (véase Modicon M221.535 Dirección del primer objeto cuyos valores se utilizan para escribir WriteQuantity De 0 a 120 Número de objetos que se van a escribir IndexDataOut De 0 a 65. Si el timeout finaliza. el intercambio finaliza en error con un código de error (CommError = 01 hex). 232 ObjType %MW (Mbs Fct 23): palabras de memoria El tipo de código de función de lectura/escritura Modbus es Mbs Fct 23. FirstWriteObj De 0 a 65.Objetos de comunicación Propiedad Valor Descripción Timeout La unidad está en ms. Logic Controller. con 100 como valor predeterminado. EIO0000001477 11/2014 233 .Objetos de comunicación Ejemplo de programación Introducción El bloque de funciones %WRITE_READ_VAR se puede configurar como se muestra en este ejemplo de programación.1 ABORT OUT_BLK LD DONE ST %Q0.0 EXECUTE LD %I0.2 END_BLK NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente.1 LD ABORTED ST %M1 LD ERROR ST %Q0.0 LD BUSY ST %Q0. Programación Este ejemplo es un bloque de funciones Bloque de funciones %WRITE_READ_VAR: Escalón Instrucción 0 BLK %WRITE_READ_VAR0 LD %I0. 4 Comunicación en una conexión ASCII (%SEND_RECV_MSG) Comunicación en una conexión ASCII (%SEND_RECV_MSG) Utilizar bloques de funciones %SEND_RECV_MSG En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones %SEND_RECV_MSG.Objetos de comunicación Sección 5. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado 234 Página Descripción 235 Configuración de la función 238 Ejemplo de programación 240 EIO0000001477 11/2014 . El bloque de funciones debe ver primero la entrada como FALSE para detectar un flanco ascendente posterior. Si se detecta un segundo flanco ascendente durante la ejecución del bloque de funciones. EIO0000001477 11/2014 235 .CommError contiene el código 02 hex (el intercambio se detiene cuando lo solicita un usuario). Ilustración En esta ilustración se muestra el bloque de funciones %SEND_RECV_MSG: Entradas El bloque de funciones %SEND_RECV_MSG contiene las siguientes entradas: Etiqueta Tipo Valor Ejecutar BOOL Arranca la ejecución de bloques de funciones cuando se detecte un flanco ascendente. Anular BOOL Detiene la ejecución de bloques de funciones cuando se detecte un flanco ascendente.Objetos de comunicación Descripción Introducció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. NOTA: Configurar la salida Ejecutar o Anular para TRUE en el primer ciclo de tarea en ejecución no se detecta como un flanco ascendente. La salida cancelada se establece en 1 y el objeto %SEND_RECV_MSGi. se ignora y el comando en curso no se ve afectado. Objetos de comunicación Salidas El bloque de funciones %SEND_RECV_MSG contiene las siguientes salidas: Etiqueta Tipo Valor Terminado BOOL Si TRUE. Para obtener más información sobre CommError y OperError. indica que la ejecución del bloque de funciones se ha cancelado con la entrada Anular. sizeRecvBuffer no es una condición de finalización. Cancelado BOOL Si TRUE. el sistema recibe caracteres hasta que se cumple la condición de finalización. Ocupado BOOL Si TRUE. A continuación. Códigos de error de funcionamiento Consulte los códigos de error de funcionamiento (véase página 217). 236 EIO0000001477 11/2014 . consulte las tablas códigos de error de comunicación (véase página 216) y códigos de error de funcionamiento (véase página 217). Detenida la ejecución de bloques de funciones. indica que la ejecución del bloque de funciones está en curso. Códigos de error de comunicación Consulte los códigos de error de comunicación (véase página 216). Error BOOL Si TRUE. los caracteres recibidos se copian en BufferToRecv hasta los caracteres sizeRecvBuffer. indica que la ejecución del bloque de funciones se completa correctamente sin errores detectados. indica que se ha detectado un error. Cuando se alcanza la condición de finalización. Condiciones de finalización Para una operación de sólo envío. la salida Finalizado se establece en TRUE. la salida Finalizado 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. 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. EIO0000001477 11/2014 237 . Guía de programación): La condición de finalización se puede establecer en:  Un número de bytes recibidos: Longitud recibida de trama  Una finalización de silencio de trama: Timeout de trama recibido (ms)  Una estructura de trama: Primer carácter de fin Para una operación de sólo recepción. Logic Controller. 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). Enlace  SL1: Serie 1  SL2: Serie 2  ETH1: Ethernet Selección de puerto NOTA: SL2 y ETH1 los puertos de comunicación incorporados sólo están disponibles en algunas referencias de los controladores.Objetos de comunicación Configuración de la función Propiedades Haga doble clic en el bloque de funciones para abrir la tabla de propiedades de la función. Para obtener más información. Símbolo Texto definido por el usuario El símbolo identifica este objeto de forma inequívoca. Dirección %SEND_RECV_MSGi. Logic Controller. consulte la sección sobre definición y uso de símbolos de la SoMachine Basic Guía de funcionamiento (véase SoMachine Basic. El bloque de funciones %SEND_RECV_MSG tiene las propiedades siguientes: 238 Propiedad Valor Descripción Utilizado Casilla de verificación activada / desactivada Indica si se está utilizando la dirección. donde i va desde 0 hasta i es el identificador de instancia. el número de objetos disponibles en este Logic Para conocer la cantidad máxima de instancias. máximo de objetos (véase Modicon M221. Guía de programación). consulte la tabla Número Controller. Guía de funcionamiento). EIO0000001477 11/2014 . Si el sistema recibe una respuesta después de la caducidad del timeout.535 La primera dirección de la tabla de palabras en la que se guardan los valores de lectura (%MW). QuantityRecv De 0 a 254 Cantidad de datos recibidos en bytes Comentario Texto definido por el usuario Un comentario para asociar a este objeto. Logic Controller. Guía de programación) y Configuración de línea serie (véase Modicon M221. Si el timeout finaliza. Logic Controller. con 100 como valor predeterminado. NOTA: 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. el intercambio finaliza en error con un código de error (CommError = 01 hex). Guía de programación)). esta respuesta se ignora.535 Dirección del primer objeto para enviar SizeRecvBuffer De 0 a 254 Un valor de 0 significa que el bloque de funciones sólo envía datos.Objetos de comunicación Propiedad Valor Descripción Timeout La unidad está en ms. Un valor de 0 significa que no se ha aplicado timeout. EIO0000001477 11/2014 239 . QuantityToSend De 0 a 254 Un valor de 0 significa que el bloque de funciones sólo recibe datos. BufferToRecv De 0 a 65. Número de bytes para enviar BufferToSend De 0 a 65. El timeout establece el tiempo máximo de espera de recepción de una respuesta. Tamaño disponible en bytes del búfer de recepción. 0 LD BUSY ST %Q0.Objetos de comunicación Ejemplo de programación Introducción El bloque de funciones %SEND_RECV_MSG se puede configurar como se muestra en este ejemplo de programación. 240 EIO0000001477 11/2014 .2 END_BLK NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente.0 EXECUTE LD %I0.1 LD ABORTED ST %M1 LD ERROR ST %Q0.1 ABORT OUT_BLK LD DONE ST %Q0. Programación Este ejemplo es un bloque de funciones Bloque de funciones %SEND_RECV_MSG: Escalón Instrucción 0 BLK %SEND_RECV_MSG0 LD %I0. SoMachine Basic Fechadores (%SCH) EIO0000001477 11/2014 Capítulo 6 Fechadores (%SCH) Fechadores (%SCH) Uso de los fechadores En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones Schedule blocks. Contenido de este capítulo Este capítulo contiene los siguiente apartados: Apartado Página Descripción 242 Programación y configuración 244 EIO0000001477 11/2014 241 . 31 Mes de finalización Mes para finalizar los Schedule blocks. para ser utilizado. De lo contrario.. esta dirección se está utilizando actualmente en un programa. Los Schedule blocks solo se configuran en SoMachine Basic..31 Mes de inicio Mes para iniciar los Schedule blocks. 1. Enero. día u hora predefinidos. Configurado Si se selecciona la casilla de verificación.Fechadores (%SCH) Descripción Introducción Los Schedule blocks se utilizan para controlar las acciones en un mes. no se utiliza.k.diciembre EIO0000001477 11/2014 . está Indica si el número de Schedule blocks seleccionado está configurado configurado para ser utilizado. Consulte la guía de programación de la plataforma de hardware para saber cuál es el número máximo de Schedule blocks. Día de inicio Día del mes para iniciar los Schedule blocks.. Bit de salida Bit de salida Los Schedule blocks activan la asignación de salida: %Mi o %Qj. Los Schedule blocks tienen los siguientes parámetros: 242 Parámetro Descripción Valor Utilizado Dirección utilizada Si está seleccionada. Dirección Dirección de objetos Schedule blocks Un programa sólo puede contener un número limitado de objetos Schedule blocks. siga el procedimiento Configuración de un bloque de funciones (véase página 139) y consulte la descripción de Modalidades de asignación de memoria. 1. 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... NOTA: Compruebe el bit de sistema %S51 y la palabra de sistema %SW118 para confirmar que la opción Reloj de tiempo real (RTC) está instalada. no se insertan en un escalón de programa del mismo modo que otros bloques de funciones. La opción RTC también es necesaria para utilizar Schedule blocks.. Schedule blocks. Día de finalización Día del mes para finalizar los Schedule blocks. Parámetros Para configurar los parámetros. todos los bits de esta palabra de sistema se establecen en 1. %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. Salida de los fechadores Si se asigna la misma salida (%Mi o %Qj. las horas y los minutos para iniciar los Schedule blocks.k) a varios bloques.... Por ejemplo. está configurado para ser utilizado. los fechadores %SCH0 y %SCH1 están ambos asignados a la salida %Q0. EIO0000001477 11/2014 243 . Si se selecciona la casilla de verificación.59 Lunes Casillas de verificación que identifican el día de la semana para activar los Schedule blocks..23 Minuto: 0. Asignación de Schedule blocks en %SW114: De forma predeterminada (o después de un reinicio en frío).. Como resultado.. no se utiliza. Hora: 0. la salida está establecida desde las 12:00 h hasta las 13:00 en lunes y martes.0. De lo contrario. Martes Miércoles Jueves Viernes Sábado Domingo Comentario Habilitación de fechadores 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 fechadores (Schedule blocks).59 Hora de finalización El momento del día.23 Minuto: 0. Hora: 0. Comentario Se puede asociar un comentario con este objeto. las horas y los minutos para finalizar los Schedule blocks.. se asignará el OR de los resultados de cada uno de los bloques a este objeto (es posible tener varios Schedule blocks para la misma salida).Fechadores (%SCH) Parámetro Descripción Valor Hora de inicio El momento del día. La utilización de estos bits por parte del programa es opcional.. 2 Activa la salida %Q0. %I0.2 Día de inicio 21 Inicia la actividad el día 21 de junio Mes de inicio Junio Inicia la actividad en junio Hora de inicio 21 Inicia la actividad a las 21:00 Día de finalización 21 Detiene la actividad el día 21 de septiembre Mes de finalización Septiembre Detiene la actividad en septiembre Hora de finalización 22 Detiene la actividad a las 22:00 Lunes Casilla seleccionada Realiza la actividad el lunes Martes Casilla no seleccionada Sin actividad Miércoles Casilla seleccionada Realiza la actividad el miércoles Jueves Casilla no seleccionada Sin actividad Viernes Casilla seleccionada Realiza la actividad el viernes Sábado Casilla no seleccionada Sin actividad Domingo Casilla no seleccionada Sin actividad Con este programa.Fechadores (%SCH) Programación y configuración Introducción Los Schedule blocks se utilizan para controlar las acciones en un mes. día u hora predefinidos. Ejemplo de programación En esta tabla se muestran los parámetros de ejemplo de un programa de vaporización para un mes veraniego: Parámetro Valor Descripción Dirección Reloj de tiempo real 6 Schedule blocks número 6 Configurado Casilla seleccionada Casilla seleccionada para configurar los Schedule blocks número 6. 244 EIO0000001477 11/2014 . Bit de salida %Q0. se valida %SCH6.1 %SW114:X6 NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente.1: Escalón Instrucción Comentario 0 LD ST En este ejemplo. los Schedule blocks pueden deshabilitarse mediante un conmutador o un detector de humedad cableado en la entrada %I0. 2: EIO0000001477 11/2014 245 .Fechadores (%SCH) Diagrama de tiempos Este diagrama de tiempos muestra la activación de la salida %Q0. Fechadores (%SCH) 246 EIO0000001477 11/2014 . El propósito del control PID es mantener un proceso en ejecución tan cerca como sea posible del valor de consigna deseado.SoMachine Basic Función PID EIO0000001477 11/2014 Capítulo 7 Función PID Función PID Función PID Introducción La función PID se utiliza para controlar un proceso dinámico de manera continua. 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 EIO0000001477 11/2014 247 . Función PID 248 EIO0000001477 11/2014 . SoMachine Basic EIO0000001477 11/2014 Capítulo 8 Funciones de reloj Funciones de reloj Descripción general En este capítulo se describen las funciones de gestión de tiempo para los controladores. Contenido de este capítulo Este capítulo contiene los siguiente apartados: Apartado Página Funciones de reloj 250 Marcas de fecha y hora 251 Ajuste de fecha y hora 253 EIO0000001477 11/2014 249 . Funciones de reloj Introducción En controladores lógicos equipados con una función de reloj en tiempo real (RTC). La batería del controlador facilita que la configuración del reloj siga funcionando durante un año como máximo aunque el controlador esté apagado. puede utilizar las siguientes funciones del reloj de fecha/hora cuando SoMachine Basic esté conectado al controlador lógico:  Los bloques de funciones del Programador (véase página 241) se utilizan para controlar acciones a horas predefinidas o calculadas. El reloj de fecha/hora puede ajustarse mediante un programa (véase página 251). La vida útil promedio de la batería es de 4 años y debe reemplazarse antes del final de su vida útil. El reloj de fecha y hora tiene formato de 24 horas y tiene en cuenta los años bisiestos. Con el objetivo de no perder los datos durante la sustitución de la batería. El controlador no tiene una batería recargable. 250 EIO0000001477 11/2014 . cámbiela durante los 120 segundos posteriores a la extracción de la batería del controlador.  Fijación de fecha y hora (véase página 251) se utiliza para asignar fechas y horas a eventos y para medir la duración de los eventos. Una vez detectado un evento.Marcas de fecha y hora Introducción 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. 4 = Jueves. Estas palabras de sistema se pueden utilizar para almacenar la fecha y la hora de un evento. Fechado de un evento Para asociar una fecha a un evento.1: Escalón Instrucción 0 LDR %I0. 7 = Domingo EIO0000001477 11/2014 251 . Las instrucciones BTI se utilizan para convertir fechas y horas de formato BCD a formato binario. transmisión a una pantalla mediante la instrucción EXCH). consulte las Instrucciones de conversión BCD/binaria (véase página 74).1 [%MW11:5:=%SW49:5] NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. 6 = Sábado. Ejemplo de programación En este ejemplo se muestra cómo fechar un flanco ascendente en una entrada %I0. 3 = Miércoles. 5 = Viernes. Para obtener más información. la tabla de palabras tendrá el siguiente contenido: Codificación Byte más significativo Byte menos significativo %MW11 - Día de la semana (1) %MW12 00 Segundo %MW13 Hora Minuto %MW14 Mes Día %MW15 Siglo Año (1) 1 = Lunes. 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. 2 = Martes. 40 minutos %MW14 0603 06 = junio.Ejemplo de tabla de palabras Datos de ejemplo para el lunes 3 de junio de 2013 a las 13:40:30: Palabra Valor (hexadecimal) Significado %MW11 0001 lunes %MW12 0030 30 segundos %MW13 1340 13 horas. el día 03 %MW15 2013 2013 Fecha y hora de la última parada Las palabras de sistema %SW54 a %SW57 contienen la fecha y la hora de la última parada. 252 EIO0000001477 11/2014 . y la palabra %SW58 contiene el código que muestra la causa de la última parada. en formato BCD. Palabras de sistema Utilice las palabras de sistema de %SW49 a %SW53 o la palabra de sistema %SW59. NOTA: La fecha y la hora pueden definirse cuando la función RTC está disponible en su controlador lógico (consulte la guía de programación de su controlador lógico). En esta tabla se indica la palabra de sistema que contiene los valores de fecha y hora actuales (en BCD) para las funciones de reloj en tiempo real (RTC): Palabra de sistema Descripción %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. Como resultado. se produce lo siguiente:  Se cancela la actualización de las palabras de %SW49 a %SW53 mediante el reloj interno. Utilización de %SW49 a %SW53 Para establecer la fecha y la hora utilizando las palabras de sistema de %SW49 a %SW53.  Se transmiten los valores escritos en las palabras de %SW49 a %SW53 al reloj interno. Cuando haya establecido la fecha y la hora. deberá establecer el bit %S51 en 1.   (Consulte la Guía de funcionamiento de SoMachine Basic para obtener más información). el bit %S50 debe establecerse en 0.  Automático: con esta modalidad se muestra la hora actual del PC en el que se está ejecutando SoMachine Basic y que se utiliza para definir la hora del controlador lógico. EIO0000001477 11/2014 253 .Ajuste de fecha y hora Introducción Puede actualizar los ajustes de fecha y hora a través de uno de los métodos siguientes: SoMachine Basic El usuario puede seleccionar entre dos modalidades para configurar la hora del controlador lógico:  Manual: esta modalidad muestra un selector de fecha/hora y le permite seleccionar manualmente la hora del controlador lógico. 2 = Martes.Ejemplo de programación: Escalón Instrucción Comentario 0 LD %S50 R %S50 – 1 LD %I0. 7 = Domingo Datos de ejemplo para el lunes 03 de junio de 2013: 254 Palabra Valor (hexadecimal) Significado %MW10 0001 lunes %MW11 0030 30 segundos %MW12 1340 13 horas. 3 = Miércoles. 6 = Sábado. 5 = Viernes. Las palabras de %MW10 a %MW14 contienen la nueva fecha y hora (consulte Revisión del código BCD (véase página 74)) y corresponden a la codificación de las palabras de %SW49 a %SW53.1 [%SW49:=%MW10] [%SW50:=%MW11] [%SW51:=%MW12] [%SW52:=%MW13] [%SW53:=%MW14] S %S50 Consulte las Instrucciones de conversión de BCD/binario (véase página 74). 4 = Jueves. el día 03 %MW14 2013 2013 EIO0000001477 11/2014 . 40 minutos %MW13 0603 06 = junio. NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente. La tabla de palabras debe contener la nueva fecha y hora: Codificación Byte más significativo Byte menos significativo %MW10 – Día de la semana (1) %MW11 – Segundo %MW12 Hora Minuto %MW13 Mes Día %MW14 Siglo Año (1) 1 = Lunes. EIO0000001477 11/2014 255 . Consulte la guía de programación de su controlador para obtener una lista completa de palabras y bits de sistema. En esta tabla se describe cada bit de la palabra de sistema %SW59 para ajustar los parámetros de fecha y hora: Aumentar Reducir Parámetro 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) (1) El usuario no puede modificar (ni aumentar ni disminuir) el día de la semana ni los siglos.Utilización de %SW59 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. %SW59 aumenta o disminuye cada uno de los componentes de fecha y hora en un flanco ascendente. los minutos y los segundos del reloj interno. El establecimiento del bit %S59 en 1 permite configurar la fecha y la hora actuales mediante la palabra %SW59. Ejemplo de aplicación Este panel frontal se ha creado para modificar la hora. 2 ANDR %I0.4 ANDR %I0.0.0 ST %SW59:X3 Hora 2 LD %I0.3 ANDR %I0.4 ANDR %I0. 256 EIO0000001477 11/2014 .2.1 ST %SW59:X11 – 3 LD %I0.4 respectivamente.1.1 ST %SW59:X10 – 5 LD %I0.2 ANDR %I0.0 ST %SW59:X1 Segundo 6 LD %I0.3 ANDR %I0.  El botón pulsador "+" aumenta la visualización del tiempo seleccionado mediante la entrada %I0. Este programa lee las entradas del panel y ajusta el reloj interno: Escalón Instrucción Comentario 0 LD %M0 ST %S59 – 1 LD %I0.0 ST %SW59:X2 Minuto 4 LD %I0.  El botón pulsador "-" reduce la visualización del tiempo seleccionado mediante la entrada %I0. %I0.Descripción de los comandos:  El conmutador de horas/minutos/segundos selecciona la visualización de la hora para cambiarla mediante las entradas %I0.1 ST %SW59:X9 – NOTA: Consulte el procedimiento de reversibilidad (véase página 14) para obtener el diagrama de contactos equivalente.3 y %I0. B bloque de funciones Una unidad de programación que dispone de una o varias entradas y devuelve una o varias salidas. %MW Según el estándar IEC. números y algunos caracteres gráficos y de control). constantes.SoMachine Basic Glosario EIO0000001477 11/2014 Glosario ! % Según el estándar IEC. un objeto de lenguaje de tipo OUT digital). %MW representa un registro de palabra de memoria (por ejemplo un objeto de lenguaje del tipo palabra de memoria). contadores E entrada analógica Convierte los niveles de tensión o corriente recibidos en valores numéricos. %KW representa una palabra constante. Los FBs se llaman mediante una instancia (copia del bloque de funciones con nombre y variables dedicados). Puede almacenar y procesar estos valores en el controlador lógico. % 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. %Q representa un bit de salida (por ejemplo. %KW Según el estándar IEC. Ejemplos: temporizadores. etc. E/S. %Q Según el estándar IEC. A ASCII (Código estándar americano para el intercambio de información) Un protocolo que representa caracteres alfanuméricos (letras. EIO0000001477 11/2014 257 . y todas las instancias tienen un estado persistente (salidas y variables internas) de una llamada a la otra. S salida analógica Convierte los valores numéricos del controlador lógico y envía niveles de tensión o corriente proporcionales. 258 EIO0000001477 11/2014 . bobinas y bloques en una serie de escalones ejecutados de forma secuencial por un controlador (consulte IEC 61131-3). lenguaje de la lista de instrucciones 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.Glosario L lenguaje de diagrama de contactos Una representación gráfica de instrucciones de un programa de controlador con símbolos para contactos. Cada instrucción incluye un número de línea. un código de instrucción y un operando (consulte IEC 61131-3). 30 %KF. 50 ANDF. 88 ATAN. 30 %KW. 169 %DR. 159 %SC. 23 %QWS. 229 configuración. 242 %SEND_RECV_MSG. 50 ANDR. 238 descripción. 141 bloques de operación insertar instrucciones de asignación en. 26 %TM. 221 %S. 150 %READ_VAR. 88 259 . 223 configuración. 30 %MSG. 39 drum register. 215 ejemplo de programación. 88 aumentar. 179 %I. 135 shift bit register. 215 %SEND_RECV_MSG. 229 %WRITE_VAR. 169 descripción general. 191 principios de programación. 85 ACOS. 223 counter. 179 LIFO/FIFO register. 150 message. 164 %SCH. 23 %R. 21 ABS. 23 %IW. 223 ejemplo de programación. 18 bloques de funciones %READ_VAR. 66 EIO0000001477 11/2014 B bloques de comparación insertar expresiones IL en. 219 descripción. 141 %WRITE_READ_VAR. 66 COS. 26 %M.SoMachine Basic Índice EIO0000001477 11/2014 Índice Symbols A %C. 17 C cadenas de bits. 235 configuración. 200 ASIN. 229 ejemplo de programación. 235 %WRITE_READ_VAR. 191 %MW. 23 %IWS. 159 step counter. 88 AND. 30 %MF. 50 ANDN. 34 cálculo. 164 timer. 26 %Q. 227 %X. 240 %SW. 50 ASCII ejemplos. 233 %WRITE_VAR. 21 %SBR. 23 %KD. 231 descripción. 23 %QW. 235 ejemplo de programación. 21 %MD. 225 descripción. 215 configuración. 78 intercambio. 66 drum register configuración. 66 comparación. 85 expresión de comparación insertar en los escalones del diagrama de contactos. 57 conversión de ángulos. 189 NOP. 189 E EQUAL_ARR. 253 descripción general.Índice counter configuración. 183 instrucción NOP. 74 palabras simples y dobles. 38 DINT_TO_REAL. 104 ROUND. 82 tablas de objetos. 107 instrucciones de comparación. 251 D I DEG_TO_RAD. 250 marcas de fecha y hora. 44 flanco descendente detección. 102 END. 100 conversión de entero a ASCII. 98 conversión de entero/coma flotante. 23 260 EIO0000001477 11/2014 . 109 trigonométricas. 72 instrucciones de intercambio EXCH1. 61 palabras. 96 conversión de ASCII a flotante. 45 formato de dirección de entrada/salida. 23 disminuir. 90 conversión de ASCII a entero. 38 desborde de índice. 94 salto. 174 funciones de reloj ajuste de fecha y hora. 189 EXCH3. 76 instrucciones de desplazamiento. 64 tablas de objetos. 88 instrucciones aritméticas. 171 descripción. 66 dividir. 169 ejemplo de programación. 23 direcciones de E/S incrustadas. 62 insertar en escalones del diagrama de contactos. 80 subrutina. 57 instrucciones de conversión BCD/binario. 189 EXCH2. 17 numérico. 79 pila. 91 direccionamiento objetos de E/S. 85 F fechadores programación y configuración. 179 ejemplo de programación. 90 desborde índice. 111 EXCH. 79 instrucciones aritméticas. 91 conversión de flotante a ASCII. 180 descripción. 66 instrucciones booleanas. 244 FIND_. 113 flanco ascendente detección. 23 direccionamiento: formato. 43 instrucciones de asignación cadenas de bits. 18 EXPT. 189 EXP. Índice instrucciones de pila MPP. 122 LN. 56 OR. 104 MRD. 91 L LD. 30 objetos de palabra bloque de funciones. 20 dirección directa. 26 objetos de palabra doble bloque de funciones. 17 operador NOT. 104 instrucciones END. 48 carga. 150 ejemplo de programación. 66 N N. 152 descripción. 52 261 . 52 ORR. 46 LDR. 127 message configuración. 50 asignación. 34 indexados. 34 objetos de bit bloque de funciones. 50 operadores de asignación. 155 LIFO. 56 EIO0000001477 11/2014 O objetos definición de. 52 operadores OR exclusivos. 115 MEDIA. 156 FIFO. 72 INT_TO_REAL. 191 ejemplo de programación. 40 descripción. 56 operadores AND. 37 tablas. 39 objetos de bit de memoria descripción. 85 M MAX_ARR. 85 LOG. 46 NOT. 194 descripción. 154 LKUP. 198 MIN_ARR. 46 LIFO/FIFO register configuración. 46 operadores OR. 115 modbus peticiones y ejemplos estándar. 202 multiplicar. 54 OR. 54 operadores AND. 46 LDF. 30 OCCUR_ARR. 117 operaciones insertar en escalones del diagrama de contactos. 104 MPS. 48 operadores de carga. 44. 40 descripción. 78 instrucciones lógicas. 37 dirección indexada. 52 XOR. 45. 46 LDN. 52 ORF. 37 estructurados. 70 instrucciones numéricas desplazamiento. 52 ORN. 21 objetos de coma flotante descripción. 164 ejemplo de programación. 48 step counter configuración. 145 tipo TON. 66 W WRITE_IMM_OUT. 48 RAD_TO_DEG. 142 descripción. 85 ST. 160 descripción. 109 sumar. 48 SUM_ARR. 88 262 EIO0000001477 11/2014 . 88 SORT_ARR. 66 timer configuración. 48 schedule blocks descripción. 159 ejemplo de programación. 91 REAL_TO_INT. 66 resto. 54 XORR. 144 tipo TP. 118 S S. 118 ROR_ARR. 166 STN. 85 V valor absoluto.Índice P PID. 91 restar. 141 ejemplo de programación. 61 descripción general. 54 XORN. 54 XORF. 66 ROL_ARR. 242 shift bit register configuración. 90 raíz cuadrada. 147 tipo TOF. 54 T TAN. 162 SIN. 66 READ_IMM_IN. 60 R R. 146 TRUNC. 247 procesamiento numérico asignación. 120 SQRT. 129 REAL_TO_DINT. 131 X XOR. 165 descripción.
Copyright © 2024 DOKUMEN.SITE Inc.