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