somachine basic_guía de la biblioteca de funciones genericas

262
EIO0000001477.03 www.schneider-electric.com SoMachine Basic EIO0000001477 11/2014 SoMachine Basic Guía de la biblioteca de funciones genéricas 11/2014

Upload: ricky-mclaughlin

Post on 24-Jan-2016

185 views

Category:

Documents


20 download

DESCRIPTION

SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

TRANSCRIPT

Page 1: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 2: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 3: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 4: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 5: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 6: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 7: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 8: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 9: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 10: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 11: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 12: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

12 EIO0000001477 11/2014

Page 13: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 14: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 15: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 16: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

Introducción

Diagrama de contactos correspondiente:

16 EIO0000001477 11/2014

Page 17: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 18: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 19: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 20: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 21: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 22: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 23: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 24: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 25: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 26: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 27: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 28: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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.

(1) Escrito mediante el programa o utilizando una tabla de animación.

28 EIO0000001477 11/2014

Page 29: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 30: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 31: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 32: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 33: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 34: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

(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

Page 35: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 36: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 37: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 38: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 39: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 40: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 41: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 42: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 43: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 44: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 45: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 46: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 47: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 48: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 49: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 50: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 51: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 52: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 53: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 54: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 55: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 56: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 57: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 58: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 59: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 60: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 61: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 62: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 63: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 64: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 65: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 66: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 67: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 68: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 69: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 70: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 71: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 72: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 73: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 74: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 75: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 76: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 77: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 78: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 79: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 80: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 81: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 82: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 83: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 84: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 85: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 86: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 87: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 88: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 89: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 90: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 91: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 92: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 93: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 94: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 95: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 96: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 97: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 98: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 99: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 100: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 101: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 102: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 103: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 104: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 105: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 106: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 107: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 108: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 109: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 110: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 111: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 112: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 113: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 114: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 115: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 116: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 117: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 118: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 119: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 120: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 121: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 122: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 123: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 124: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 125: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 126: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 127: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 128: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 129: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 130: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 131: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 132: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 133: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 134: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 135: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 136: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 137: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 138: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 139: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 140: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 141: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 142: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 143: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 144: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 145: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 146: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 147: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 148: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 149: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 150: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 151: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 152: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 153: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 154: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 155: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 156: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 157: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 158: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 159: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 160: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 161: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 162: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 163: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 164: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 165: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 166: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 167: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 168: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 169: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 170: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 171: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 172: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 173: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 174: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 175: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 176: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 177: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 178: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 179: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 180: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 181: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 182: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 183: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 184: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 185: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 186: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 187: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 188: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 189: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 190: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 191: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 192: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 193: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 194: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 195: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 196: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 197: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 198: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 199: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 200: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 201: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 202: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 203: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 204: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 205: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 206: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 207: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 208: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 209: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 210: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 211: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 212: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

Objetos de software

212 EIO0000001477 11/2014

Page 213: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 214: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 215: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 216: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 217: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 218: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 219: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 220: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 221: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 222: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 223: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 224: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 225: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 226: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 227: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 228: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 229: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 230: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 231: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 232: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 233: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 234: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 235: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 236: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 237: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 238: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 239: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 240: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 241: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 242: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 243: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 244: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 245: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

Fechadores (%SCH)

Diagrama de tiempos

Este diagrama de tiempos muestra la activación de la salida %Q0.2:

EIO0000001477 11/2014 245

Page 246: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

Fechadores (%SCH)

246 EIO0000001477 11/2014

Page 247: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 248: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

Función PID

248 EIO0000001477 11/2014

Page 249: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 250: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 251: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 252: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 253: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 254: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 255: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 256: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 257: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 258: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 259: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

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

Page 260: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

Í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

Page 261: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

Í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

Page 262: SoMachine Basic_Guía de La Biblioteca de Funciones Genericas

Í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