You are on page 1of 316

SoMachine Basic

EIO0000001477 12/2016

SoMachine Basic
Guía de la biblioteca de funciones
genéricas
12/2016
EIO0000001477.07

www.schneider-electric.com

La información que se ofrece en esta documentación contiene descripciones de carácter general
y/o características técnicas sobre el rendimiento de los productos incluidos en ella. La presente
documentación no tiene como objeto sustituir dichos productos para aplicaciones de usuario
específicas, ni debe emplearse para determinar su idoneidad o fiabilidad. Los usuarios o
integradores tienen la responsabilidad de llevar a cabo un análisis de riesgos adecuado y
completo, así como la evaluación y las pruebas de los productos en relación con la aplicación o el
uso de dichos productos en cuestión. Ni Schneider Electric ni ninguna de sus filiales o asociados
asumirán responsabilidad alguna por el uso inapropiado de la información contenida en este
documento. Si tiene sugerencias de mejoras o modificaciones o ha hallado errores en esta
publicación, le rogamos que nos lo notifique.
No se podrá reproducir este documento de ninguna forma, ni en su totalidad ni en parte, ya sea
por medios electrónicos o mecánicos, incluida la fotocopia, sin el permiso expreso y por escrito de
Schneider Electric.
Al instalar y utilizar este producto es necesario tener en cuenta todas las regulaciones sobre
seguridad correspondientes, ya sean regionales, locales o estatales. Por razones de seguridad y
para garantizar que se siguen los consejos de la documentación del sistema, las reparaciones solo
podrá realizarlas el fabricante.
Cuando se utilicen dispositivos para aplicaciones con requisitos técnicos de seguridad, siga las
instrucciones pertinentes.
Si con nuestros productos de hardware no se utiliza el software de Schneider Electric u otro
software aprobado, pueden producirse lesiones, daños o un funcionamiento incorrecto del equipo.
Si no se tiene en cuenta esta información, se pueden causar daños personales o en el equipo.
© 2016 Schneider Electric. Reservados todos los derechos.

2 EIO0000001477 12/2016

Tabla de materias

Información de seguridad . . . . . . . . . . . . . . . . . . . . . . . . 9
Acerca de este libro . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Capítulo 1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Cómo utilizar los ejemplos de código fuente . . . . . . . . . . . . . . . . . . . . 18
Bloques de operación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Bloques de comparación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Capítulo 2 Objetos de lenguaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Objetos de bit de memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Objetos de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Objetos de palabra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Objetos de coma flotante y de palabra doble . . . . . . . . . . . . . . . . . . . 37
Objetos estructurados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Objetos indexados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Objetos de bloques de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Capítulo 3 Instrucciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.1 Procesamiento booleano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Instrucciones booleanas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Operadores de carga (LD, LDN, LDR, LDF). . . . . . . . . . . . . . . . . . 54
Operadores de asignación (ST, STN, R, S) . . . . . . . . . . . . . . . . . . 56
Operadores AND lógicos (AND, ANDN, ANDR, ANDF) . . . . . . . . . . 58
Operadores OR lógicos (OR, ORN, ORR, ORF) . . . . . . . . . . . . . . . . 60
Operadores OR exclusivos (XOR, XORN, XORR, XORF) . . . . . . . . . 62
Operador NOT (N) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Instrucciones de comparación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.2 Procesamiento numérico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Introducción a operaciones numéricas . . . . . . . . . . . . . . . . . . . . . . . . 68
Instrucciones de asignación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Asignación de cadenas de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Asignación de palabras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Operadores aritméticos en enteros . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Instrucciones lógicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Instrucciones de desplazamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Instrucciones de conversión de BCD/binario. . . . . . . . . . . . . . . . . . . . 82
Instrucciones de conversión de palabras simples y dobles. . . . . . . . . 84
EIO0000001477 12/2016 3

3.3 Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Instrucciones END . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Instrucciones NOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Instrucciones de salto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Instrucciones de subrutina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.4 Coma flotante. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Instrucciones aritméticas en objetos de coma flotante . . . . . . . . . . . . 94
Instrucciones trigonométricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Instrucciones de conversión de ángulos . . . . . . . . . . . . . . . . . . . . . . . 99
Instrucciones de conversión de entero/coma flotante . . . . . . . . . . . . . 100
3.5 ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Instrucciones ROUND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Instrucciones de conversión de ASCII a entero . . . . . . . . . . . . . . . . . . 105
Instrucciones de conversión de entero a ASCII . . . . . . . . . . . . . . . . . . 107
Instrucciones de conversión de ASCII a flotante . . . . . . . . . . . . . . . . . 109
Instrucciones de conversión de flotante a ASCII . . . . . . . . . . . . . . . . . 111
3.6 Operadores de pila. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Instrucciones de pila (MPS, MRD, MPP) . . . . . . . . . . . . . . . . . . . . . . . 113
3.7 Instrucciones sobre tablas de objetos . . . . . . . . . . . . . . . . . . . . . . . . . 115
Asignación de tablas de palabras, palabras dobles o coma flotante . . 116
Funciones de suma en tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Funciones de comparación de tablas . . . . . . . . . . . . . . . . . . . . . . . . . 120
Funciones de búsqueda en tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Funciones de búsqueda de valores máximo y mínimo en tablas . . . . 124
Número de apariciones de un valor en una tabla . . . . . . . . . . . . . . . . 126
Funciones de desplazamiento circular de tablas . . . . . . . . . . . . . . . . . 127
Funciones de clasificación en tablas . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Funciones de interpolación en la tabla de coma flotante (LKUP) . . . . 131
Funciones de MEDIA de los valores de una tabla de coma flotante . . 136
3.8 Instrucciones sobre los objetos de E/S . . . . . . . . . . . . . . . . . . . . . . . . 137
Entrada incrustada digital de lectura instantánea (READ_IMM_IN). . . 138
Salida incrustada digital de escritura instantánea (WRITE_IMM_OUT) 140
Parámetro de bloque de funciones de lectura inmediata (READ_IMM) 142
Parámetro de bloque de funciones de escritura inmediata
(WRITE_IMM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Capítulo 4 Objetos de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
4.1 Contador rápido (%FC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Contador rápido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

4 EIO0000001477 12/2016

4.2 Contador de alta velocidad (%HSC) . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Contador de alta velocidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
4.3 Pulso (%PLS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Pulso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
4.4 Modulación de ancho de pulsos (%PWM). . . . . . . . . . . . . . . . . . . . . . 149
Modulación de ancho de pulsos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Capítulo 5 Objetos de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Objetos de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Capítulo 6 Objetos de software . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
6.1 Uso de bloques de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Principios de programación del bloque de funciones . . . . . . . . . . . . . 155
Añadido de un bloque de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Configuración de un bloque de funciones . . . . . . . . . . . . . . . . . . . . . . 159
6.2 Temporizador (%TM). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
TON: temporizador de retardo de conexión . . . . . . . . . . . . . . . . . . . . 164
TOF: temporizador de retardo de desconexión. . . . . . . . . . . . . . . . . . 167
TP: temporizador de pulso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
6.3 Contador (%C). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
6.4 Mensaje (%MSG) e intercambio (EXCH) . . . . . . . . . . . . . . . . . . . . . . 180
Descripción general. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Ejemplos de ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Peticiones y ejemplos estándar Modbus . . . . . . . . . . . . . . . . . . . . . . . 196
6.5 Registro LIFO/FIFO (%R) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Funcionamiento del registro LIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Funcionamiento del registro FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212

EIO0000001477 12/2016 5

6.6 Drums (%DR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
6.7 Registro de bits de desplazamiento (%SBR) . . . . . . . . . . . . . . . . . . . . 222
Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
6.8 Contador de pasos (%SC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
6.9 Fechadores (%SCH) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Programación y configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
6.10 Reloj de tiempo real (%RTC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
6.11 PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Función PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
6.12 Pasos de Grafcet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Pasos de Grafcet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Capítulo 7 Objetos PTO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
7.1 Motion Task Table (%MT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
Motion Task Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
7.2 Salida de tren de pulsos (%PTO). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Salida de tren de pulsos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Capítulo 8 Objetos de accionamiento . . . . . . . . . . . . . . . . . . . . . . . . 249
Objetos de accionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Capítulo 9 Objetos de comunicación . . . . . . . . . . . . . . . . . . . . . . . . . 251
9.1 Leer datos desde un dispositivo remoto (%READ_VAR). . . . . . . . . . . 252
Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
Configuración de la función . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
9.2 Escritura de datos en un dispositivo Modbus (%WRITE_VAR) . . . . . . 262
Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Configuración de la función . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Ejemplo de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

6 EIO0000001477 12/2016

. . . . . . . . . . . . . . . ... . . . . . . . .. . .. . . . . . . . . 311 EIO0000001477 12/2016 7 . . . . . .. . . ... . . . 277 9. . ... . . .. . . . . . . . . . . . . . 271 Configuración de la función .. . . .. .. . . . . . . . . . .. . . .. . . . . . .. . . . . . . . . . . . . . . .. . .. . 270 Descripción . .. . . . . . .. . . . . . . . . . . . . 9. . . . .. . . . .. . . . . . . ... . . . . . . . . .. . .. . . . . . 285 9. . . . . . . . . . . . . . . . . . . . .. . . . . . .. . . . . . . . . . . . ... . . . . . . . .. . .. .. . . . . .. . .. . .. . . . .. 287 Configuración de funciones . . . . . . . . . . . 282 Ejemplo de programación .. . . . . . . . . .. . . . . . . . . . . . . . . .. . ... . . . . . . . 295 Capítulo 10 Funciones de reloj . .. . . . . . . .. .. . . . . . . . . . . . . . . . . . . . . . ... . . . . . . . . . .. . . .. .5 Enviar Recibir SMS (%SEND_RECV_SMS) . . . . . . . . .. . . . . . 305 Glosario . .. . . . . . . . . . . . . . .. . . 286 Descripción . . . .. . . . . . ... . . . .. . . . . . . . .. .. .. . . . . . . . . .. . 303 Ajuste de fecha y hora.. .. . .. . .. . . . . .3 Leer y escribir datos en un dispositivo Modbus (%WRITE_READ_VAR) . . . . . . 302 Marcas de fecha y hora . . . . . . . . . . . . . . . . . .. . . . . . . . . . . 278 Descripción . . . . . . .. . . . . . . . . . . . . . . . 301 Funciones de reloj .. . . . . .. . . . . . 273 Ejemplo de programación . . . . . . . . . . . 279 Configuración de la función .. . ..4 Comunicación en una conexión ASCII (%SEND_RECV_MSG) . ... .. 309 Índice . . . . .. . . . . . . . . . .. . .. .. .. . . . . .. . . . .. . . . . . . . .

8 EIO0000001477 12/2016 .

o para ofrecer información que aclara o simplifica los distintos procedimientos. 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. revisarlo o realizar su mantenimiento. Los mensajes especiales que se ofrecen a continuación pueden aparecer a lo largo de la documentación o en el equipo para advertir de peligros potenciales. EIO0000001477 12/2016 9 .

el funcionamiento y la instalación de equipos eléctricos. las revisiones y el mantenimiento de equipos eléctricos deberán ser realizados sólo por personal cualificado. y que ha sido formada en materia de seguridad para reconocer y evitar los riesgos que conllevan tales equipos. 10 EIO0000001477 12/2016 . el manejo. 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.TENGA EN CUENTA LO SIGUIENTE: La instalación.

4 Si aparece más de una referencia en los resultados de búsqueda Products. 6 Para guardar o imprimir una hoja de datos como archivo . 5 En función del tamaño de la pantalla. Campo de aplicación La información de este manual es aplicable sólo para SoMachine Basic productos compatibles. utilice los asteriscos (*). Las características que se indican en este manual deben coincidir con las que figuran online.  No incluya espacios en blanco en la referencia ni en el rango de productos.5. Las descripciones se aplican a todos los controladores lógicos compatibles con SoMachine Basic. Si ha introducido el nombre de un rango de productos. Este documento se ha actualizado para la publicación de SoMachine Basic V1. haga clic en Download XXX product datasheet.pdf. 3 Si ha introducido una referencia. 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. escriba la referencia del producto o el nombre del rango de productos. utilice esta última para su referencia. vaya a los resultados de búsqueda de Product datasheets y haga clic en la referencia deseada. haga clic en la referencia deseada. es posible que deba desplazar la página hacia abajo para consultar la hoja de datos.schneider-electric. De acuerdo con nuestra política de mejoras continuas. Para acceder a esta información online: Paso Acción 1 Vaya a la página de inicio de Schneider Electric www. EIO0000001477 12/2016 11 .  Para obtener información sobre cómo agrupar módulos similares.com. Las características técnicas de los dispositivos que se describen en este documento también se encuentran online. vaya a los resultados de búsqueda de Product Ranges y haga clic en la gama deseada. 2 En el cuadro Search. 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.

com/ww/en/download 12 EIO0000001477 12/2016 .schneider-electric.Guía de funcionamiento EIO0000001354 (ENG) EIO0000001355 (FRA) EIO0000001356 (GER) EIO0000001357 (SPA) EIO0000001358 (ITA) EIO0000001359 (CHS) EIO0000001366 (POR) EIO0000001367 (TUR) Modicon M221 Logic Controller Guía de la biblioteca de funciones EIO0000002007 (ENG) avanzadas EIO0000002008 (FRE) EIO0000002009 (GER) EIO0000002010 (SPA) EIO0000002011 (ITA) EIO0000002012 (CHS) EIO0000002013 (POR) EIO0000002014 (TUR) Puede descargar estas publicaciones técnicas y otra información técnica de nuestro sitio webhttp://www.Documentos relacionados Título de la documentación Número de referencia SoMachine Basic .

Installation and Operation of Adjustable-Speed Drive Systems" (Estándares de seguridad para la construcción y guía para la selección.1 (última edición). un corte de alimentación y un reinicio. por ejemplo. and Maintenance of Solid State Control" (Directrices de seguridad para la aplicación. instalación y utilización de sistemas de unidades de velocidad ajustable) o su equivalente aplicable a la ubicación específica.1  Cada instalación de este equipo debe probarse de forma individual y exhaustiva antes de entrar en servicio. Deben tenerse en cuenta las implicaciones de retardos de transmisión imprevistos o fallos del enlace. una parada de emergencia y una parada de sobrerrecorrido.Información relativa al producto ADVERTENCIA PÉRDIDA DE CONTROL  El diseñador del esquema de control debe tener en cuenta las posibles modalidades de fallo de rutas de control y. Installation.  Actualice el programa de aplicación siempre que cambie la configuración de hardware física. para ciertas funciones de control críticas. consulte NEMA ICS 1. "Safety Standards for Construction and Guide for Selection. ADVERTENCIA FUNCIONAMIENTO IMPREVISTO DEL EQUIPO  Utilice solo software aprobado por Schneider Electric para este equipo. la instalación y el mantenimiento del control de estado estático) y NEMA ICS 7. EIO0000001477 12/2016 13 . "Safety Guidelines for the Application. El incumplimiento de estas instrucciones puede causar la muerte. lesiones serias o daño al equipo.1 (última edición).  Para las funciones de control críticas deben proporcionarse rutas de control separadas o redundantes. Funciones de control críticas son. proporcionar los medios para lograr un estado seguro durante y después de un fallo de ruta.  Las rutas de control del sistema pueden incluir enlaces de comunicación. El incumplimiento de estas instrucciones puede causar la muerte. 1 Para obtener información adicional. lesiones serias o daño al equipo.  Tenga en cuenta todas las reglamentaciones para la prevención de accidentes y las directrices de seguridad locales.

Dispositivos de bloqueo asociados con ISO 14119:2013 protecciones: principios de diseño y selección ISO 13850:2006 Seguridad de la maquinaria. Parte 1: Requisitos y ensayos generales. de los términos y las definiciones de estándares internacionales. EN 61496-1:2013 Seguridad de la maquinaria: equipo de protección electrosensible. unidades y automatización general se incluyen. Evaluación del riesgo y reducción del riesgo EN 60204-1:2006 Seguridad de las máquinas. avería. IEC 61508-2:2010 Seguridad funcional de los sistemas de seguridad electrónicos programables eléctricos y electrónicos: requisitos de los sistemas de seguridad electrónicos programables eléctricos y electrónicos. Parada de emergencia: principios de diseño EN/IEC 62061:2005 Seguridad de la maquinaria. ISO 12100:2010 Seguridad de las máquinas. Principios generales para el diseño. estado de seguridad. función de seguridad. ISO 13849-1:2008 Seguridad de la maquinaria: partes de seguridad de los sistemas de control.Terminología derivada de los estándares Los términos técnicos. etc. reinicio tras fallo. 2006/42/EC Directiva de maquinaria 2014/30/EU Directiva de compatibilidad electromagnética 2014/35/EU Directiva de baja tensión 14 EIO0000001477 12/2016 . Principios generales del diseño. En el área de los sistemas de seguridad funcional. términos como seguridad. Estos estándares incluyen. Parte 1: Requisitos generales EN 1088:2008 Seguridad de la maquinaria. IEC 61508-3:2010 Seguridad funcional de los sistemas de seguridad electrónicos programables eléctricos y electrónicos: requisitos de software. símbolos y las descripciones correspondientes del presente manual o que aparecen en la parte interior o exterior de los propios productos se derivan. IEC 61784-3:2008 Comunicación digital de datos para la medición y control: buses de campo de seguridad funcional. parte 2: Requisitos y ensayos de los equipos. entre otros: Estándar Descripción EN 61131-2:2007 Controladores programables. Seguridad funcional de los sistemas de control programable de seguridad eléctrica y electrónica IEC 61508-1:2010 Seguridad funcional de sistemas de seguridad programable eléctricos y electrónicos: requisitos generales. fallo. mensaje de error. error. Equipo eléctrico de las máquinas. peligroso. funcionamiento incorrecto. pero sin limitarse a ellos. por lo general.

EIO0000001477 12/2016 15 . consulte las tablas de características de las referencias de dichos productos. Para obtener más información en relación con los diferentes estándares aplicables a los productos descritos en este documento. Además. y se define como tal para una zona de peligro o zona peligrosa en la Directiva de maquinaria (2006/42/EC) y ISO 12100:2010. NOTA: Los estándares mencionados anteriormente podrían o no aplicarse a los productos específicos citados en la presente documentación.Bus de campo para su uso en Sistemas de control Por último. el término zona de funcionamiento se puede utilizar junto con la descripción de peligros específicos. los términos utilizados en este documento se pueden usar de manera tangencial porque se obtienen de otros estándares como: Estándar Descripción Serie IEC 60034 Máquinas eléctricas giratorias Serie IEC 61800 Accionamientos eléctricos de potencia de velocidad variable Serie IEC 61158 Comunicación digital de datos para la medición y control .

16 EIO0000001477 12/2016 .

Contenido de este capítulo Este capítulo contiene los siguientes apartados: Apartado Página Cómo utilizar los ejemplos de código fuente 18 Bloques de operación 21 Bloques de comparación 24 EIO0000001477 12/2016 17 . SoMachine Basic Introducción EIO0000001477 12/2016 Capítulo 1 Introducción Introducción Descripción general En este capítulo se proporciona información sobre cómo utilizar los ejemplos de código fuente y los bloques que se requieren para ejecutar muchos de los ejemplos de operaciones e instrucciones de asignación que se indican en este documento.

4 Seleccione el número de línea 0000. Puede ser necesario más de un escalón para un ejemplo completo. haga clic en el botón LD > IL para visualizar el código fuente de Lista de instrucciones. cree un nuevo escalón haciendo clic en en la barra de herramientas.Introducción Cómo utilizar los 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. 5 Haga clic en el botón IL > LD para visualizar el código fuente de Lista de instrucciones. 3 En este escalón. 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. 2 En SoMachine Basic. 6 Repita los pasos previos para cualquiera de los escalones adicionales del programa de ejemplo. 18 EIO0000001477 12/2016 . 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 ANDN %R2.3 ANDN %R2. Introducción Ejemplo Programa Lista de instrucciones: Escalón Código fuente 0 BLK %R0 LD %M1 I LD %I0.3 [%MW20:=%R2.F [%R2.I:=%MW34] ST %M1 EIO0000001477 12/2016 19 .O] 2 LD %I0.E O END_BLK 1 LD %I0.

Introducción Diagrama de contactos correspondiente: 20 EIO0000001477 12/2016 .

El botón Codificación inteligente (véase página 21) aparece al final de la línea. 3 Haga doble clic en la línea de expresión de operación. al escribir "ABS(" se muestra: EIO0000001477 12/2016 21 . Haga clic en este botón para obtener ayuda sobre la selección de una función y la sintaxis de la instrucción. Por ejemplo: %MF10 := SIN(%MF12 + 60. 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: El Bloque de operación puede contener varios operandos y niveles de cálculo. al escribir "AS" se muestra ASCII_TO_FLOAT.  Ayuda sobre la sintaxis de una función. Información sobre herramientas de codificación inteligente Para facilitar la selección de funciones. que se actualiza de forma dinámica con los nombres de función que empiezan por los caracteres escritos. ASCII_TO_INT y ASIN.2 Para insertar un bloque de operación en un escalón: Paso Acción 1 Haga clic en el botón Bloque de operación en la barra de herramientas. Hay dos tipos de información sobre herramientas:  Una lista de nombres de función.0) + COS(%MF13) + %MF10 + 1. SoMachine Basic muestra información sobre herramientas cuando se escriben nombres de función en los bloques de operación. 4 Escriba una operación de lista de instrucciones válida o una instrucción de asignación y pulse INTRO. Por ejemplo. que se muestra al escribir un paréntesis de apertura. Por ejemplo. 2 Haga clic en el área de acción (las últimas 2 columnas) del escalón para insertar el Bloque de operación.

filtre la lista por categoría de función:  Todos los tipos  ASCII  Coma flotante  Objetos de E/S  Coma flotante  Procesamiento numérico  Tabla  PID 2 Seleccione una función para añadirla a la expresión. 22 EIO0000001477 12/2016 .Introducción Uso del asistente de Edición inteligente de código El asistente de Edición inteligente de código aparece al hacer clic en el botón Edición inteligente de código que se encuentra en la línea de expresión de la operación: Siga estas instrucciones: Paso Acción 1 Opcionalmente. 3 Haga clic en Insertar función.

EIO0000001477 12/2016 23 . 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. Introducció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.

24 EIO0000001477 12/2016 .Introducción Bloques de comparación Inserción de expresiones de comparación de IL en diagramas de contactos Puede utilizar el símbolo gráfico del Bloque de comparación para insertar expresiones de comparación de listas de instrucciones en escalones de diagrama de contactos: Siga estas instrucciones: Paso Acción 1 Haga clic en el botón Bloque de comparación en la barra de herramientas. 4 Escriba una operación de comparación de listas de instrucciones válida y pulse INTRO. 3 Haga doble clic en la línea Expresión de comparación. el borde del cuadro Expresión de comparación se vuelve de color rojo. Obtener ayuda con la sintaxis Si la operación de comparación de listas de instrucciones es incorrecta. 2 Haga clic en algún lugar del escalón para insertar el Bloque de comparación. 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.

SoMachine Basic Objetos de lenguaje EIO0000001477 12/2016 Capítulo 2 Objetos de lenguaje Objetos de lenguaje Contenido de este capítulo Este capítulo contiene los siguientes apartados: Apartado Página Objetos 26 Objetos de bit de memoria 27 Objetos de E/S 29 Objetos de palabra 32 Objetos de coma flotante y de palabra doble 37 Objetos estructurados 42 Objetos indexados 45 Objetos de bloques de funciones 47 EIO0000001477 12/2016 25 .

 Funciones predefinidas del sistema o de los bloques de funciones. 26 EIO0000001477 12/2016 . Por ejemplo. como bits de memoria y palabras. %Q0.Objetos de lenguaje Objetos Descripción general En SoMachine Basic. Los objetos solo pueden ser direccionados por un programa una vez que se ha asignado memoria.  Direcciones de las entradas y salidas digitales o analógicas. 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. 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. como temporizadores y contadores.3 es la dirección de una salida digital incrustada y %TM0 es la dirección de un bloque de funciones Timer. %MW12 es la dirección de una palabra de memoria.  Variables internas del controlador. como palabras y bits del sistema. Los objetos se direccionan mediante el prefijo %. Los objetos pueden ser:  Variables de software simples.

consulte Extracción de un bit de un objeto de palabra (véase página 36). Para obtener información sobre cómo dirigir los bits de E/S. EIO0000001477 12/2016 27 . Identificador de instancia i El identificador del objeto que representa su instancia secuencial en de objeto la memoria. 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). Para obtener información sobre cómo dirigir un bit extraído de una palabra. de memoria y de sistema: En esta tabla se describen los elementos en el formato de direccionamiento: Grupo Elemento Descripción Símbolo % El símbolo de porcentaje siempre precede a una variable de software. Para verificar la cantidad máxima de memoria disponible. Tipo de objeto M Los bits de memoria almacenan valores intermedios mientras se ejecuta un programa. consulte Objetos de E/S (véase página 29). 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. S Los bits de sistema proporcionan información de control y de estado del controlador. consulte la guía de programación del Logic Controller. X Los bits de pasos proporcionan el estado de las actividades del paso Grafcet. Sintaxis Utilice este formato para dirigir objetos de bits de pasos. La cantidad máxima de objetos depende de la cantidad de objetos configurada para los límites de la memoria disponible.

(1) Escrito mediante el programa o utilizando una tabla de animación.Objetos de lenguaje Descripción En esta tabla se enumeran y se describen los objetos de bits de pasos. El bit de %Xi Sí paso Xi se establece en 1 cuando el paso correspondiente está activo. además de controlar determinadas funciones a nivel de sistema. de memoria y de sistema que se utilizan como operandos en las instrucciones booleanas: Tipo Descripción Dirección o Acceso de valor escritura(1) Valores 0 ó 1 (Falso o Verdadero) 0ó1 – inmediatos Memoria Los bits de memoria son áreas de memoria interna %Mi Sí utilizadas para almacenar valores binarios. Ejemplo En esta página se muestran algunos ejemplos de direccionamiento de objetos de bit: 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 28 EIO0000001477 12/2016 . Pasos Grafcet Los bits %X1 a %Xi se asocian a pasos Grafcet. Nota: los objetos de E/S no utilizados no pueden emplearse como bits de memoria. y en 0 cuando el paso está desactivado. Sistema Los bits de sistema %S0 a %S127 permiten monitorizar la %Si Depende de i operación correcta del controlador y la ejecución correcta del programa de aplicación.

El número de posición máximo es 14. Los objetos de palabra de E/S pueden utilizarse en la mayoría de las instrucciones no booleanas como funciones e instrucciones que contienen operaciones aritméticas. Los objetos de bit de E/S pueden utilizarse como operandos y se pueden comprobar con instrucciones booleanas. (3) p es el número del cartucho del controlador. EIO0000001477 12/2016 29 . Todas las entradas y salidas físicas están asignadas a estos objetos en la memoria interna. (2) n es el número de módulos remotos configurados (máximo n+7). Tipo de objeto I – Entrada digital (objeto de bit) Q – Salida digital (objeto de bit) IW – Valor de la entrada analógica (objeto de palabra) QW – Valor de la salida analógica (objeto de palabra) IWS – Estado de canal de entrada analógica (objeto de palabra) QWS – Estado de canal de salida analógica (objeto de palabra) (1) m es el número de módulos locales configurados (máximo 7). Objetos de lenguaje Objetos de E/S Introducción Los objetos de E/S incluyen tanto bits como palabras. 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. 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). q es el número de canal del cartucho.

(2) y es el número de módulo y z es el número de canal..z(2) Sí salida Estado de la %IWSy. m+1. Descripción En esta tabla se enumeran y describen todos los objetos de E/S que se utilizan como operandos en instrucciones: Tipo Dirección o Acceso de Descripción valor escritura(1) Bits de entrada %Iy. entrada Estado de la %QWSy. El número de canales disponibles depende del tipo de cartucho. 30 EIO0000001477 12/2016 .z(2) No Estos objetos de palabra contienen el estado del canal palabra de analógico correspondiente. El número de posición máximo es 14. (3) Aunque no pueda escribir en los bits de entrada. (3) p es el número del cartucho del controlador. Palabra de %IWy..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 Bits de salida %Qy. estos se pueden forzar. p0q(3) Canal de E/S en un cartucho insertado en el logic controller.z(2) Sí memoria de datos y se actualizan entre cada exploración de la lógica del programa. Palabra de %QWy. 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.. q es el número de canal del cartucho.z(2) No palabra de salida (1) Escrito mediante el programa o utilizando una tabla de animación.Objetos de lenguaje Componente Elemento Valor Descripción Número de y 0 Canal de E/S incrustadas en el logic controller o en un módulo cartucho insertado en el logic controller. (2) n es el número de módulos remotos configurados (máximo n+7).z(2) No Estos objetos de palabra contienen el valor analógico del entrada canal correspondiente. Consulte Direccionamiento de sintaxis de E/S (véase página 29) para obtener descripciones de y y z. El número de canales disponibles depende del modelo del controlador lógico o del tipo del módulo de ampliación.m(1) Canal de E/S en un módulo de ampliación conectado directamente con el controlador. 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).

%IWS0. %Q3. Objetos de lenguaje Ejemplos En la tabla se presentan varios ejemplos de direccionamiento de E/S: Objeto de E/S Descripción %I0. EIO0000001477 12/2016 31 . %IW0.1 Entrada analógica 1 en el controlador (E/S incrustadas).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).5 Número de canal 5 de la entrada digital del controlador (las E/S incrustadas son el número de módulo 0). %QW2.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).1 Estado de canal de salida analógica del canal de salida 1 del módulo de ampliación en la dirección 1 (E/S del módulo de ampliación). %QWS1.101 Estado de canal de entrada analógica del canal de entrada 1 en el primer cartucho del logic controller.

Formato W Palabra de 16 bits. S Las palabras de sistema proporcionan información de control y estado para el controlador lógico. Sintaxis Utilice este formato para dirigir palabras de sistema. Su contenido solo se puede escribir o modificar utilizando SoMachine Basic. almacenados en la memoria de datos y que pueden contener un valor entero desde -32. Por ejemplo. 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.768 hasta 32. %QWi. si la referencia máxima en su aplicación para palabras de memoria es %MW9. En este ejemplo. el espacio asignado será desde %MW0 hasta %MW9.535). 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. 32 EIO0000001477 12/2016 . el valor de %MW10 no es válido y no se puede acceder a él ni interna ni externamente. %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). Ejemplos de objetos de palabra:  Valores inmediatos  Palabras de memoria (%MWi)  Palabras constantes (%KWi)  Palabras de intercambio de E/S (%IWi. %IWSi.767 (excepto para el bloque de funciones del Contador Rápido. que está entre 0 y 65.Objetos de lenguaje Objetos de palabra Introducción Objetos de palabra direccionados en forma de palabras de 16 bits.

768). Objetos de lenguaje Grupo Elemento Descripción Identificador de i El identificador del objeto que representa su instancia secuencial en la instancia de objeto memoria.  Si el primer carácter de un operando es un carácter de "fin". 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.  Todo carácter ASCII que se encuentre fuera del intervalo ['0' . Para verificar la cantidad máxima de memoria disponible. Máx.: 16#0000.: 32. Máx. Las palabras y los valores inmediatos (consulte la lista de excepciones (véase página 34) para conocer los enteros sin signo) pueden introducirse o recuperarse en el formato siguiente:  Decimal Mín. consulte la guía de programación del Logic Controller. el bit del sistema %S18 (desborde aritmético o error detectado) se establece en 1 y se devuelve el valor 32.'9'] ([16#30 . 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.16#39]) se considera un carácter de fin.767 o -32. excepto en el caso de un signo menos '-' (16#2D) cuando se coloca como primer carácter. por ejemplo)  Hexadecimal Mín.: -32.768.767 (1.579. La cantidad máxima de objetos depende de la cantidad de objetos configurada para los límites de la memoria disponible. 16#A536) Sintaxis alternativa: #A536  Las reglas de formato ASCII son las siguientes:  La función siempre lee primero el byte más significativo. Por ejemplo.768.767 o <-32.: 16#FFFF (por ejemplo.  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). se devuelve el valor 0 y el bit %S18 se establece en 1. "HELLO":  %MW0:="HE"  %MW1:="LL"  %MW2:="O" EIO0000001477 12/2016 33 .  En caso de desbordamiento (>32.

S1D.000 %PWM.147. y %HSC.535 %FC. %HSC.535 %HSC.T De 100 a 1.767 %PLS.648 a 2.ND De 0 a 2. lo que permite que los valores se puedan asignar a estas palabras.Objetos de lenguaje 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.P De 0 a 32. y %HSC.DV.767 Base 16 (hexadecimal) De 16#0000 a 16#FFFF Memoria Palabras "temporales" empleadas para %MWi Sí almacenar valores durante la operación en la memoria de datos.V y %FC.294.P De 0 a 32.C De 0 a 65.147. %HSC. el resto de los datos tiene los rangos de valores siguientes:  Palabras: de -32.R De 0 a 100 %PLS.N De 0 a 32. 34 EIO0000001477 12/2016 .294.147.V.483.S0.PD.295 %HSC.768 a 32.967.S0D.483.647 Aparte de los objetos de la lista de excepciones. Sin inmediatos el mismo formato que las palabras de 16 bits.767  Palabras dobles: de -2.S1.P De 0 a 65.967. %HSC. %HSC.767 %PLS.535 %FC.P.PD De 0 a 4.CD De 0 a 4.295 %HSC. Base 10 (decimal) De -32.767 %PWM.768 a 32. %HSC.647 Descripción En esta tabla se describen los objetos de palabra: Palabras Descripción Dirección o valor Acceso de escritura(1) Valores Se trata de valores enteros expresados en .VD y %FC. (1) Escrito mediante el programa o utilizando una tabla de animación.483. %HSC.

funciones. (1) Escrito mediante el programa o utilizando una tabla de animación. Guía de de la palabra funcionamiento).P. El número máximo de objetos disponibles está determinado por el controlador lógico. Guía de funcionamiento) Sistema Estas palabras de 16 bits ofrecen diversas %SWi Depende de i funciones:  Proporcionan acceso a los datos que proceden directamente del controlador mediante la lectura de las palabras %SWi. el ajuste de fechadores).P. Objetos de lenguaje Palabras Descripción Dirección o valor Acceso de escritura(1) Constantes Almacenan constantes o mensajes %KWi Sí. Sí funciones o parámetros actuales de los bloques de etc. Consulte la guía de programación de su controlador lógico para conocer el número máximo de objetos.  Realizan operaciones en la aplicación (por ejemplo. durante la alfanuméricos. constante (véase SoMachine Basic. Ejemplo En esta tabla se presentan diversos ejemplos de direccionamiento de objetos de palabras: Objeto de palabra Descripción %MW15 Palabra de memoria número 15 %KW26 Palabra constante número 26 %SW30 Palabra de sistema número 30 EIO0000001477 12/2016 35 . Su contenido se puede configuración y en la escribir o modificar con SoMachine Basic modalidad online durante la configuración y en la modalidad mediante Propiedades online (véase SoMachine Basic. Bloques de Estas palabras corresponden a los valores %TM2. %Ci.

Objetos de lenguaje Extracción de bits de los objetos de palabra En esta tabla se describe cómo extraer 1 de los 16 bits de los siguientes objetos de palabra: Objeto de palabra Dirección o valor Acceso de escritura(1) Memoria %MWi:Xk Sí Sistema %SWi:Xk Depende de i Constante %KWi:Xk No Valor de entrada %IWy.z:Xk(2) Sí Estado de entrada %IWSy. Por ejemplo. Xk Indica el número del bit que debe extraerse del objeto de palabra.z:Xk(2) Sí (1) Escrito mediante el programa o utilizando una tabla de animación. se extraerá el bit almacenado en la tercera posición secuencial de la palabra de memoria %MW0. 36 EIO0000001477 12/2016 . consulte Direccionamiento de objetos de E/S (véase página 29).X3. (2) Para obtener información sobre objetos de palabra de E/S. %MW0.z:Xk(2) No Estado de salida %QWSy.z:Xk(2) No Valor de salida %QWy.

debe escribirse: 1285.0). En esta tabla se representa el formato de un valor de coma flotante: Bit 31 Bits {30. 2.402824E+38) es el número máximo que se puede obtener Potencia de un entero por EXPT(y. lo que corresponde a números de coma flotante de decimal simple.. Objetos de lenguaje Objetos de coma flotante y de palabra doble Introducción Un objeto de coma flotante es un número real. NOTA: El valor 1285 se interpreta como un valor entero. es decir.0.3 o 1. un número con una parte fraccionaria (por ejemplo: 3. para tenerse en cuenta como valor de coma flotante.402824E+38 un real (donde: fraccionario EXPT(%MF. consulte la guía de programación de su controlador lógico.. Para visualizar los números de coma flotante no es necesario mostrar más de 6 dígitos tras la coma decimal. La longitud de las palabras es de 32 bits.. 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). Rango límite de funciones aritméticas en objetos de coma flotante En esta tabla se describe el rango límite de las funciones aritméticas en los objetos de coma flotante: Función aritmética Rango límite y operaciones no válidas Tipo Sintaxis NaN (No es un número) Infinito Raíz cuadrada de un SQRT(x) x<0 x> operando SQRT(3.23} Bits {22.0} Signo del exponente Exponente Significando La precisión de la representación es de 2 a 24. 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. Para obtener información sobre compatibilidad.. x) x < 0 e y = número X ^ Y > 3. Las operaciones con coma flotante y palabras dobles no se pueden realizar en todos los controladores lógicos.4E+38.%MW) x^y = %MW^%MF) EIO0000001477 12/2016 37 .

también la puede restablecer el programa para volver a utilizarla.402824E+38) Logaritmo natural LN(x) x<0 Sin valor máximo de x.402824E+38 en valor absoluto. el resultado es 0 Comprobación de validez Cuando el resultado no se encuentra dentro del rango válido. el resultado no es válido (–Infinito o +Infinito) %SW17:X4 to X15 Reservado El sistema restablece esta palabra a 0 tras un arranque en frío. 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: 38 EIO0000001477 12/2016 . Diferentes bits de la palabra %SW17: %SW17:X0 Operación no válida. el resultado no es válido (–Infinito o +Infinito) %SW17:X3 Resultado superior a +3. LN(3.402824E+38) es el número máximo que se puede obtener Exponencial natural EXP(x) Sin límite en el rango real x > 88. el bit de sistema %S18 se establece en 1. La palabra de estado %SW17 indica la causa de un error detectado en una operación de coma flotante. el resultado no es un número (NaN) %SW17:X1 Reservado %SW17:X2 División entre 0.973.72283 Si x < –103.Objetos de lenguaje Función aritmética Rango límite y operaciones no válidas Tipo Sintaxis NaN (No es un número) Infinito Logaritmo de Base 10 LOG(x) x<0 Cálculo posible hasta que se obtiene el valor máximo de x (3.

D Objeto de palabra doble de 32 bits. Identificador de instancia i Identificador que representa una instancia (posición secuencial) de de objeto un objeto en la memoria. Descripción de objetos de coma flotante y de palabra doble En esta tabla se describen los objetos de coma flotante y de palabra doble: Tipo de objeto Descripción Dirección Acceso de escritura Valores inmediatos Números enteros (palabra doble) o . durante la flotante configuración y en la modalidad online mediante Propiedades de la palabra constante (véase SoMachine Basic. Formato F Objeto de coma flotante de 32 bits. Consulte la guía de programación de su controlador lógico para conocer el número máximo de objetos. %MDi Sí memoria Valor de constante Se utiliza para almacenar constantes. EIO0000001477 12/2016 39 . Guía de funcionamiento) NOTA: El número máximo de objetos está determinado por el controlador lógico. Objetos de lenguaje 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 Los objetos de memoria se utilizan para almacenar valores intermedios mientras se ejecuta un programa. Guía de funcionamiento) Constante doble %KDi Sí. consulte la guía de programación de la plataforma de hardware para obtener más información. Coma flotante de Objetos empleados para almacenar %MFi Sí memoria valores durante la operación en la Palabra doble de memoria de datos. Sin decimales (coma flotante) de formato idéntico al de los objetos de 32 bits. durante la configuración y en la modalidad online mediante Propiedades de la palabra constante (véase SoMachine Basic. K Las constantes se utilizan para almacenar valores constantes o mensajes alfanuméricos (únicamente para palabras dobles). %KFi Sí.

Así. la palabra flotante %MFi y la palabra doble %MDi se corresponden con las palabras de longitud simple %MWi y %MWi+1. En esta tabla se muestra cómo se superponen las palabras de memoria dobles y las flotantes: Flotante y doble Dirección impar Palabras de memoria %MF0 / %MD0 %MW0 %MF1 / %MD1 %MW1 %MF2 / %MD2 %MW2 %MF3 / %MD3 %MW3 %MF4 / %MD4 %MW4 . %MW5 . de doble longitud y flotantes se guardan en el espacio de datos en una misma zona de memoria...Objetos de lenguaje Ejemplo En esta tabla se presentan algunos ejemplos del direccionamiento de objetos de palabra doble y coma flotante: 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 Posibilidad de solapamiento entre objetos Las palabras simples. la palabra %MWi contiene los bits menos significativos y la palabra %MWi+1 los bits más significativos de la palabra %MFi.... %MFi / %MDi %MWi %MFi+1 / %MDi+1 %MWi+1 40 EIO0000001477 12/2016 .. .

. EIO0000001477 12/2016 41 .. %KFi / %KDi %KWi %KFi+1 / %KDi+1 %KWi+1 Ejemplo: %MF0 corresponde a %MW0 y %MW1... .. Objetos de lenguaje En esta tabla se muestra el solapamiento de constantes flotantes y dobles: Flotante y doble Dirección impar Palabras de memoria %KF0 / %KD0 %KW0 %KF1 / %KD1 %KW1 %KF2 / %KD2 %KW2 %KF3 / %KD3 %KW3 %KF4 / %KD4 %KW4 .. %KF43 corresponde a %KW43 y %KW44. %KW5 .

tabla de palabras. 42 EIO0000001477 12/2016 .0:L (1) Sí Bits de sistema %Si:L En función de i con i múltiplo de 8 Bits de pasos Grafcet %Xi:L Sí (mediante el programa) con i múltiplo de 8 Bits de memoria %Mi:L Sí con i múltiplo de 8 (1) Sólo se pueden leer los bits de E/S de 0 a 16 de una cadena de bits. L Representa la longitud de los objetos estructurados (cadenas de bits. tabla de palabras dobles y tabla de palabras flotantes). Para controladores lógicos con 24 o 32 canales de E/S. consulte la guía de programación de la plataforma de hardware para obtener más información.0:L o %I1. los bits superiores a 16 no se pueden leer en una cadena de bits.Objetos de lenguaje Objetos estructurados Introducción Los objetos estructurados son combinaciones de objetos adyacentes. Tipos de bits disponibles Tipos de bits disponibles para cadenas de bits: Tipo Dirección Acceso de escritura Bits de entrada digital %I0. 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).0:L (1) No Bits de salida digital %Q0. Las cadenas de bits pueden utilizarse con la instrucción de asignación (véase página 56). 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.0:L o %Q1. El número de bits está determinado por el controlador lógico.

EIO0000001477 12/2016 43 . el valor máximo es 255). Tablas de palabras dobles Una tabla de palabras dobles es una serie de palabras adyacentes del mismo tipo y de una longitud definida (L. consulte la guía de programación de la plataforma de hardware para obtener más información. Objetos de lenguaje Tablas de palabras Una tabla de palabras es una serie de palabras adyacentes del mismo tipo y de una longitud definida (L. Ejemplo: Tabla de palabras %KW10:7 Las tablas de palabras pueden utilizarse con la instrucción de asignación (véase página 56). 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 56). Tipos de palabras disponibles Tipos de palabras disponibles para tablas de palabras: Tipo Dirección Acceso de escritura Palabras de memoria %MWi:L Sí Palabras constantes %KWi:L No Palabras de sistema %SWi:L En función de i El número de palabras está determinado por el controlador lógico. 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 56). el valor máximo es 255). Tipos de palabras flotantes disponibles Tipos de palabras disponibles para tablas de palabras flotantes: Tipo Dirección Acceso de escritura Palabras de memoria %MFi:L Sí Palabras constantes %KFi:L No 44 EIO0000001477 12/2016 .Objetos de lenguaje Tipos de palabras dobles disponibles Tipos de palabras disponibles para tablas de palabras dobles: Tipo Dirección Acceso de escritura Palabras de memoria %MDi:L Sí Palabras constantes %KDi:L No Tablas de palabras flotantes Una tabla de palabras flotantes es una serie de palabras adyacentes del mismo tipo y de una longitud definida (L.

El contenido del índice se añade a la dirección directa del objeto. 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. 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. 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. Objetos disponibles para el direccionamiento indexado En esta tabla se describen los tipos de objetos disponibles para las direcciones indexadas: Tipo Dirección Acceso de escritura Palabras de memoria %MWi[MWj] Sí Palabras constantes %KWi[%MWj] No Palabras dobles de memoria %MDi[MWj] Sí Palabras dobles constantes %KDi[%MWj] No Comas flotantes de memoria %MFi[MWj] Sí Comas flotantes constantes %KFi[%MWj] No i Identificador de instancia de objeto que representa una instancia (posición secuencial) de un objeto en la memoria. El índice lo define una palabra de memoria %MWi. Si la palabra %MW2 tiene un valor de 12. Consulte la guía de programación de su controlador lógico para conocer el número máximo de objetos. Ejemplo: %M26 es un bit de memoria con la dirección directa 26. escribir en %MW108[%MW2] es igual que escribir en %MW120 (108 más 12). Los objetos indexados pueden utilizarse con la instrucción de asignación (véase página 69) y en instrucciones de comparación (véase página 65). 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. j Identificador de instancia de objeto del objeto de índice cuyo contenido debe añadirse a la dirección directa de otro objeto. EIO0000001477 12/2016 45 .

%S20 (estado inicial = 0):  En caso de desborde del índice: establecido en 1 por el controlador. El programa debe leer %S20 para un posible procesamiento. A continuación deberá confirmar que se restablece a 0. ADVERTENCIA FUNCIONAMIENTO IMPREVISTO DEL EQUIPO  Escriba instrucciones de programación para comprobar la validez de los operandos que se van a utilizar en operaciones matemáticas.  Reconocimiento de desborde: establecido manualmente en 0 en el programa después de modificar el índice. el sistema establece en 1 el bit de sistema %S20 y se asigna al objeto un valor de índice de 0.  No utilice operandos de diferentes tipos de datos en operaciones matemáticas. En caso de desborde de índice. En resumen:  La dirección del objeto más el contenido del índice es menor que 0. 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. lesiones serias o daño al equipo. 46 EIO0000001477 12/2016 .Objetos de lenguaje Este tipo de direccionamiento permite explorar series de objetos del mismo tipo (como palabras de memoria y constantes) de manera sucesiva.  Monitorice siempre los bits del sistema asignados para indicar resultados matemáticos no válidos. modificando el contenido del objeto del índice en el programa. El incumplimiento de estas instrucciones puede causar la muerte.  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. NOTA: El usuario es el responsable de monitorizar cualquier desborde.

x). Ejemplo En esta ilustración se muestra un bloque de funciones StepCounter: EIO0000001477 12/2016 47 . afectadas en la configuración) directamente sin relación con el ciclo del controlador.x y %Q0. y en una tabla de animación que utilice estas entradas/salidas no se pueden mostrar los estados actuales de estas. El controlador no actualiza los bits de imágenes (%I0. NOTA: Los bloques de funciones (%FC. %PLS y %PWM) y la alarma de estado dirigen sus entradas y salidas (%I0.x y %Q0. Todas las instancias de bloque de funciones tienen un estado persistente (salidas y variables internas) desde una llamada a la otra. A un bloque de funciones siempre se le llama a través de una instancia (una copia de un bloque de funciones con su propio nombre y variables dedicados).x. estos bits de entrada y salida no se pueden utilizar directamente en el programa del usuario. 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. %HSC. Por lo tanto.

 Especificando el tipo de bloque (por ejemplo. %Ci. solo tiene que agregar el carácter D a la sintaxis original de los objetos de palabra estándar. 48 EIO0000001477 12/2016 .VD es el valor actual del contador rápido en formato de palabra doble.V. En este ejemplo se muestra cómo direccionar el valor actual de un contador rápido en formato estándar y en formato de palabra doble:  %FCi. tales como contadores rápidos (%FC).  %FCi.  Valores actuales: por ejemplo. parámetros de preselección). LD %Ci. Objetos de palabra Los objetos de palabra corresponden a parámetros especificados y a valores. 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. base de tiempo). contadores de alta velocidad (%HSC) y generadores de pulsos (%PLS. LD E) si están cableados al bloque en programación (véase página 155) reversible. %PWM). 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. el valor actual de conteo. Para direccionar los objetos de palabra doble de 32 bits usados con bloques de funciones. Objetos de palabra doble Los objetos de palabra doble aumentan la capacidad computacional del controlador lógico mientras se ejecutan las funciones del sistema. Puede accederse a las entradas en forma de instrucciones.E). pero a otros no (por ejemplo.Objetos de lenguaje Objetos de bit Los objetos de bit corresponden a las salidas del bloque de funciones.V es el valor actual del contador rápido en formato estándar.

1 Procesamiento booleano 50 3.4 Coma flotante 93 3.8 Instrucciones sobre los objetos de E/S 137 EIO0000001477 12/2016 49 .3 Programa 85 3.7 Instrucciones sobre tablas de objetos 115 3.2 Procesamiento numérico 67 3.5 ASCII 102 3. SoMachine Basic Instrucciones EIO0000001477 12/2016 Capítulo 3 Instrucciones Instrucciones Contenido de este capítulo Este capítulo contiene las siguientes secciones: Sección Apartado Página 3.6 Operadores de pila 113 3.

R. ANDF) 58 Operadores OR lógicos (OR. ANDN. ANDR. XORF) 62 Operador NOT (N) 64 Instrucciones de comparación 65 50 EIO0000001477 12/2016 . LDF) 54 Operadores de asignación (ST. ORN. LDR. STN. XORR. XORN.1 Procesamiento booleano Procesamiento booleano Objeto de esta sección En esta sección se ofrece una introducción a las instrucciones de procesamiento booleano.Instrucciones Sección 3. S) 56 Operadores AND lógicos (AND. LDN. ORF) 60 Operadores OR exclusivos (XOR. ORR. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado Página Instrucciones booleanas 51 Operadores de carga (LD.

EIO0000001477 12/2016 51 . Se detecta un flanco cuando el estado de una entrada cambia de "explorar n-1" a "explorar n". 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. Instrucciones Instrucciones booleanas Introducción Las instrucciones booleanas pueden compararse con los elementos del lenguaje del diagrama de contactos. Dicho flanco permanece detectado durante la exploración actual. abierto conectado a un segmento de alimentación de un diagrama de contactos. de bits (resultado de lógica anterior).0 NOTA: Consulte el procedimiento de reversibilidad (véase página 18) 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.0 El objeto de bit asociado toma acción almacenamiento (ST) equivale un valor lógico del acumulador a una bobina.1 ST %Q0. El resultado booleano de los elementos de prueba se aplica a los elementos de acción como muestran las siguientes instrucciones: Escalón Instrucción 0 LD %I0.0 AND %I0. Elementos de La instrucción de ST %Q0. Estas instrucciones se resumen en la tabla siguiente: Elemento Operador Ejemplo de Descripción instrucción Elementos de La instrucción de carga (LD) es LD %I0.0 El contacto se cierra cuando el prueba equivalente al primer contacto bit %I0.0 tiene el estado 1.

este se indica con un retardo en la exploración. El flanco ascendente detecta el cambio del valor de entrada de 0 a 1.Instrucciones Detección de un flanco En esta tabla se resumen las instrucciones de detección de flancos y su temporización: Flanco Instrucción IL Diagrama de Diagrama de tiempos contactos Flanco LDR %M0 ascendente Flanco LDF %M0 descendente Los objetos sólo se actualizan al inicio del siguiente ciclo MAESTRO tras la detección del flanco. %M0). Como se muestra en este ejemplo. ej. NOTA: Los flancos ascendentes y descendentes sólo se pueden aplicar con objetos de bit de entrada (%I) y de bit de memoria (%M). Detección de flanco ascendente La instrucción de cargar flanco ascendente (LDR) equivale a un contacto de detección de flanco ascendente. Si se produce un cambio de estado en un bit de memoria (p..0 NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. 52 EIO0000001477 12/2016 . se utiliza un contacto de detección de transición positiva para detectar un flanco ascendente: Escalón Instrucción 0 LDR %I0.

El flanco descendente detecta el cambio de la entrada de control de 1 a 0. EIO0000001477 12/2016 53 . Instrucciones Detección de flanco descendente La instrucción de cargar flanco descendente (LDF) equivale a un contacto de detección de flanco descendente.0 NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. Como se muestra en este ejemplo. se utiliza un contacto de detección de transición negativa para detectar un flanco descendente: Escalón Instrucción 0 LDF %I0.

x %IW:Xk. %M. %Q. %QWS:Xk. de flanco ascendente y de flanco descendente. LDN. 54 EIO0000001477 12/2016 . %MW:Xk. LDR y LDF sólo se utilizan con entradas del logic controller y palabras de memoria. %M LDF Ejemplos de codificación Ejemplos de instrucciones de carga: Escalón Instrucción 0 LD %I0.5 NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente.3 1 LDN %M0 ST %Q0.4 3 LDF %I0. LDN. %IWS:Xk. Sintaxis En esta tabla se enumeran los tipos de operadores de carga con los equivalentes del diagrama de contactos y los operandos permitidos: Operadores Equivalente del diagrama Operandos permitidos de contactos LD 0/1 %I. %X. LDR y LDF corresponden respectivamente a los contactos abierto.Instrucciones Operadores de carga (LD. %BLK. cerrado. %KW:Xk LDR %I. LDF) Introducción Los operadores de carga LD. %QW:Xk.3 ST %Q0. LDN %SW:Xk.1 ST %Q0.2 2 LDR %I0. LDR. %S.1 ST %Q0.

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: NOTA: La detección de flancos del bit de memoria (%M) se lleva a cabo entre exploraciones de tareas maestras. EIO0000001477 12/2016 55 .

4 1 LD %I0. %M. %BLK. 56 EIO0000001477 12/2016 . Ejemplos de codificación Ejemplos de instrucciones de asignación: Escalón Instrucción 0 LD %I0. %SW:Xk(1) STN S %Q. %S.x %QW:Xk. %BLK.3 STN %Q0. %SW:Xk(1) R (1) %S o %SW:Xk se encuentran en objetos de sistema que no son de sólo lectura. STN. STN.4 NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. %MW:Xk.x %QW:Xk. S) Introducción Los operadores de asignación ST. Sintaxis En esta tabla se enumeran los tipos de operadores de asignación con los equivalentes del diagrama de contactos y los operandos permitidos: Operadores Equivalente del diagrama de Operandos permitidos contactos ST %Q. inversa. S y R corresponden respectivamente a las bobinas directa.2 S %Q0. %MW:Xk. %S(1). R.1 ST %Q0.Instrucciones Operadores de asignación (ST. %X.2 R %Q0. Set y Reset. %M.

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 12/2016 57 .

1 AND %M1 ST %Q0. ANDN %SW:Xk.5 S %Q0. %KW:Xk ANDR %I.Instrucciones Operadores AND lógicos (AND. %X.5 58 EIO0000001477 12/2016 .x %IW:Xk. ANDF) Introducción Los operadores AND realizan una operación lógica AND entre el operando (o su inverso. %S.3 ANDR %I0. ANDR. ANDN.4 3 LD %M3 ANDF %I0. %M ANDF Ejemplos de codificación Ejemplos de instrucciones AND lógicas: Escalón Instrucción 0 LD %I0.4 S %Q0. %BLK. %MW:Xk. %QWS:Xk. %Q. %QW:Xk.2 2 LD %I0. flanco ascendente o flanco descendente) y el resultado booleano de la instrucción anterior.0 ST %Q0.3 1 LD %M0 ANDN %I0. Sintaxis En esta tabla se enumeran los tipos de operadores AND con los equivalentes del diagrama de contactos y los operandos permitidos: Operadores Equivalente del diagrama Operandos permitidos de contactos AND 0/1 %I. %M. %IWS:Xk.

Instrucciones NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. Diagrama de tiempos En el siguiente diagrama se muestran la temporización (y el efecto en la salida) del código de los ejemplos de codificación: EIO0000001477 12/2016 59 .

1 60 EIO0000001477 12/2016 . %MW:Xk. ORN. %M.x %IW:Xk. %IWS:Xk. %KW:Xk ORN ORR %I. %M ORF Ejemplos de codificación Ejemplos de instrucciones OR lógicas: Escalón Instrucción 0 LD %I0. ORR. %S. %X.2 ORN %M2 ST %Q0. %QW:Xk.1 OR %M1 ST %Q0. flanco ascendente o flanco descendente) y el resultado booleano de la instrucción anterior. %Q. %BLK. 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 Operandos permitidos diagrama de contactos OR 0/1 %I. ORF) Introducción Los operadores OR realizan una operación lógica OR entre el operando (o su inverso.Instrucciones Operadores OR lógicos (OR. %QWS:Xk.0 1 LD %I0. %SW:Xk.

6 S %Q0. Instrucciones Escalón Instrucción 2 LD %M0 ORR %I0.0 NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. Diagrama de tiempos En el siguiente diagrama se muestran la temporización (y el efecto en la salida) del código de los ejemplos de codificación: EIO0000001477 12/2016 61 .5 3 LDF %I0.5 ORF %I0.3 S %Q0.

x %IW:Xk. %QW:Xk. %SW:Xk. %BLK.1 XOR %M1 ST %Q0. 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. %QWS:Xk.Instrucciones Operadores OR exclusivos (XOR.3 62 EIO0000001477 12/2016 . 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. XORN. %Q. %MW:Xk. XORR. %X. 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. %M XORF Ejemplos de codificación En caso de utilizar la instrucción XOR: Escalón Instrucción 0 LD %I0. 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. Sintaxis En la tabla siguiente se enumeran los tipos de operadores XOR y los operandos permitidos: Operadores Equivalente del diagrama de Operandos permitidos contactos XOR %I. %IWS:Xk. %KW:Xk XORN XORR %I. %M. %S.

1 ) ST %Q0. Instrucciones Instrucciones lógicas equivalentes del operador XOR: Escalón Instrucción 0 LD %I0.  Contactos XOR de forma paralela con otros elementos del diagrama de contactos (consulte el ejemplo siguiente). 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.3 NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. la inserción de un elemento de forma paralela con el contacto XOR generará un error detectado de validación: EIO0000001477 12/2016 63 . Tal como se muestra en el siguiente ejemplo.1 ANDN %M1 OR( %M1 ANDN %I0.

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: 64 EIO0000001477 12/2016 .0 NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. Ejemplos de codificación Ejemplo de una instrucción NOT: Escalón Instrucción 0 LD %I0.1 N ST %Q0.Instrucciones Operador NOT (N) Introducción El operador NOT (N) tiene un operando implícito: el resultado almacenado en el acumulador booleano. NOT niega el valor del acumulador. Sintaxis En esta tabla se muestra el operador N: Operador Equivalente del diagrama de Operandos permitidos contactos N No aplicable.

Instrucciones Instrucciones de comparación Introducción Los operadores de comparación se utilizan para comparar 2 operandos. %MWi. %QWi. Sintaxis de las instrucciones de comparación: Operador Sintaxis >. %KWi[%MWi] Palabras dobles %MDi.x. flotante %KFi.x %QW. %SWi. EIO0000001477 12/2016 65 . %SWi. %IW. Valor inmediato. %MFi. >=. %MFi[%MWi]. <> LD [Op1 operador Op2] AND [Op1 operador Op2] OR [Op1 operador Op2] En esta tabla se muestra la información de los operandos: Tipo Op1 Op2 Palabras %MWi. %MDi[%MWi]. %KWi. %KDi Valor inmediato. %KD[%MWi] Palabras de coma %MFi. %KDi. En esta tabla se enumeran los tipos de operadores de comparación: Operador Función > Comprueba si Op1 es mayor que Op2 >= Comprueba si Op1 es mayor o igual que Op2 < Comprueba si Op1 es menor que Op2 <= Comprueba si Op1 es menor o igual que Op2 = Comprueba si Op1 es igual que Op2 <> Comprueba si Op1 es distinto de Op2 Sintaxis A continuación. %MDi. %QWSi. %MWi[%MWi]. %KFi[%MWi] NOTA: Las instrucciones de comparación pueden utilizarse entre paréntesis. %BLK. %KWi. %IW. %IWSi. Puede insertar expresiones de comparación de la lista de instrucciones (véase página 24) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de comparación. =. <=. %BLK. %KFi Valor de coma flotante inmediato. se describe la sintaxis de la lista de instrucciones. <.

5 Ejemplo de utilización de una instrucción de comparación entre paréntesis: Escalón Instrucción 0 LD %M0 AND( [%MF20>10. El resultado es 1 cuando la comparación solicitada es verdadera. 66 EIO0000001477 12/2016 .3 1 LD %M0 AND [%MW20<%KW35] ST %Q0.1 NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente.0 ) ST %Q0.Instrucciones Ejemplos de codificación La comparación se ejecuta entre corchetes siguiendo las instrucciones LDAND y OR.0] OR %I0.4 2 LD %I0.2 AND [%MW10>100] ST %Q0.2 OR [%MF30>=%MF40] ST %Q0. Ejemplos de instrucciones de comparación: Escalón Instrucción 0 LD %I0.

Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado Página Introducción a operaciones numéricas 68 Instrucciones de asignación 69 Asignación de cadenas de bits 70 Asignación de palabras 72 Operadores aritméticos en enteros 74 Instrucciones lógicas 78 Instrucciones de desplazamiento 80 Instrucciones de conversión de BCD/binario 82 Instrucciones de conversión de palabras simples y dobles 84 EIO0000001477 12/2016 67 .2 Procesamiento numérico Procesamiento numérico Objeto de esta sección En esta sección se ofrece una introducción al procesamiento numérico. Instrucciones Sección 3.

Si el resultado de la operación lógica anterior era falso (acumulador booleano = 0). la instrucción numérica no se ejecuta y el operando permanece intacto. 68 EIO0000001477 12/2016 .Instrucciones Introducción a operaciones numéricas Presentación Normalmente. se ejecuta la instrucción numérica. Se escriben entre corchetes. las instrucciones numéricas se aplican a palabras de 16 bits y a palabras dobles de 32 bits. Si el resultado de la operación lógica anterior era verdadero (acumulador booleano = 1).

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. Sintaxis de las instrucciones de asignación: Operador Sintaxis := [Op1 := Op2] Op1 toma el valor de Op2 Pueden realizarse operaciones de asignación en:  Cadenas de bits  Palabras  Palabras dobles  Palabras flotantes  Tablas de palabras  Tablas de palabras dobles  Tablas de palabras flotantes  Objetos de salida de tren de pulsos EIO0000001477 12/2016 69 . Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 21) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación.

PD. %Mi:L. %SWi Valor inmediato.PD NOTA: La abreviatura %BLK. %Ci. %TMi.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. %Ri. %FCi. %MDi. %MDi[%MWi] %MWi.P %KDi[%MWi]. %PLSi. %PWMi.O. %Xi:L %QWSi.P.P. %PLSi.P.P. %Ri. %MDi[%MWi]. %KWi.%BLK.PD. %FCi.x (por ejemplo.%Qi:L.x. %IWSi.PD %Si:L. se describe la sintaxis de la lista de instrucciones. %Si:L. palabra %MWi. doble %MWi[%MWi].O. %Ci. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 21) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación.P %Ci. %QWi. %MWi[%MWi].P) se utiliza para describir cualquier palabra de bloque de funciones. %Ii:L %TMi. %PWMi. Sintaxis de las asignaciones de cadenas de bits: Operador Sintaxis := [Op1 := Op2] Op1 toma el valor de Op2 En la tabla siguiente se ofrece información detallada de los operandos: Tipo Op1 Op2 Palabra.%QWi. %KWi[%MWi].P. %FCi. %Ci.I.P.P. %Ri. %Ri.P. %Mi:L. %Xi:L.I. 70 EIO0000001477 12/2016 . %SWi. %FCi. %C0. %IW. %Qi:L.

Instrucciones Estructura Ejemplos de asignaciones de cadenas de bits: Escalón Instrucción 0 LD 1 [%Q0.2 [%MW100:=%M0:16] 2 LDR %I0. EIO0000001477 12/2016 71 .3 [%MW104:16:=%KW0] NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente.0:8:=%M64:8] 1 LD %I0. Normas de uso:  Para asignación de cadena de bits a palabra: los bits de la cadena se transfieren a la palabra comenzando por la derecha (primer bit de la cadena al bit 0 de la palabra) y los bits de palabra no implicados en la transferencia (longitud ≤16) se establecen en 0.  Para asignación de palabra a cadena de bits: los bits de palabra se transfieren desde la derecha (bit de palabra 0 al primer bit de la cadena).

%IW. %SWi. .). Para las cadenas de bits %Mi:L. por ejemplo) (indexada o no)  Palabra doble (indexada) a palabra doble (indexada o no)  Valor entero inmediato a palabra (Ejemplo 3) o palabra doble (indexada o no)  Cadena de bits a palabra o palabra doble  Coma flotante (indexada o no) a coma flotante (indexada o no)  Palabra o palabra doble a cadena de bits  Valor de coma flotante inmediato a coma flotante (indexado o no) Sintaxis A continuación. cadena de bits %MWi[MWi]. palabra %BLK. %MFi[%MWj]. %IWSi. %MDi[%MWj]. %MWi. %Xi:L.. R3. %Si:L y %Xi:L. %MFi[%MWj] Valor de coma flotante inmediato. %KFi[%MWj] NOTA: La abreviatura %BLK. %KFi. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 21) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. %MDi. %MDi. doble. %KDi[MWj]. %KWi[MWi]. %MFi. %Mi:L.. %Qi:L. %SWi Valor inmediato.. %MWi.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. %KDi. %Xi:L %MDi[%MWj]. %QWi.. %Mi:L.. QWSi. %QWi. se describe la sintaxis de la lista de instrucciones. 16. 72 EIO0000001477 12/2016 . . %Qi:L. %Si:L. %MWi[MWi]. la dirección de base del primer bit de la cadena debe ser un múltiplo de 8 (0. Sintaxis de asignaciones de palabras: Operador Sintaxis := [Op1 := Op2] Op1 toma el valor de Op2 En esta tabla se muestra la información de los operandos: Tipo Op1 Op2 Palabra.x. %KWi.I) se utiliza para describir cualquier palabra del bloque de funciones. %Si:L.x (por ejemplo. 96. %Ii:L Coma flotante %MFi. 8.

3 [%MW10:=100] NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente.2 [%MW0[%MW10]:=%KW0[%MW20]] 2 LD %I0. Instrucciones Estructura Ejemplos de asignaciones de palabras: Escalón Instrucción 0 LD 1 [%SW112:=%MW100] 1 LD %I0. EIO0000001477 12/2016 73 .

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. Restar dos operandos * Multiplicar dos operandos / Dividir dos operandos REM Resto de la división de los dos operandos SQRT Raíz cuadrada de un operando INC Aumentar un operando DEC Disminuir un operando ABS Valor absoluto de un operando Sintaxis A continuación. DEC [operador Op1] SQRT (1) [Op1: = SQRT(Op2)] ABS (1) [Op1: = ABS(Op2)] 74 EIO0000001477 12/2016 . se describe la sintaxis de la lista de instrucciones./.-. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 21) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. En esta tabla se enumeran los tipos de operadores aritméticos: Operador Función + Sumar dos operandos .*.REM [Op1: = Op2 operador Op3] INC. Sintaxis de las instrucciones aritméticas: Operador Sintaxis +.

%BLK. %BLK. los límites son -2.x(2) Palabras dobles %MDi. %BLK. La función ABS sólo se puede emplear con palabras dobles (%MD y %KD) y comas flotantes (%MF y %KF). el bit %S18 (desborde) se establece en 1 y el resultado no es significativo (consulte el escalón 1 del ejemplo de aplicación (véase página 77)). Estructura Ejemplos de instrucciones aritméticas: Escalón Instrucción 0 LD %M0 [%MW0:=%MW10+10] 1 LD %I0. Instrucciones En esta tabla se muestra la información de los operandos: Tipo Op1 Op2 y Op3(1) Palabras %MWi. (2) %BLK.x Immediate value.647. %QWi.483.648 y 2. %QWSi. NOTA: Para las palabras dobles.147.x representa todos objetos de bloques.2 [%MW0:=SQRT(%MW10)] 2 LDR %I0.147.3 [%MW10:=32767] NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. %BLK.x (Valor inmediato. Op2 no puede ser un valor inmediato. el bit %S18 (desborde) se establece en 1 y el resultado no es significativo. %MDi. Por lo tanto. %BLK.x(2) Valor inmediato. %SWi. El programa de usuario gestiona el bit %S18.483. %SWi. Casos especiales Suma  Desborde durante la operación con palabras Si el resultado supera la capacidad de la palabra de resultados. %MDi. %QWi. %KWi.x) (2) (1) Con este operador. OP1 y OP2 deben ser palabras dobles o comas flotantes. %KDi. %IWSi. %MWi. Multiplicación  Desborde durante la operación Si el resultado supera la capacidad de la palabra resultado. EIO0000001477 12/2016 75 . %IWi. %KDi.

El controlador los establece en 1 y el programa debe restablecerlos para que puedan volver a utilizarse (para ver un ejemplo. el bit %S18 se establece en 1. el equipo utilizado y las instrucciones del programa que se hayan ejecutado antes y después de la detección de los posibles errores. lesiones serias o daño al equipo. la división es imposible y el bit del sistema %S18 se establece en 1.  Desborde durante la operación Si el cociente de la división supera la capacidad de la palabra resultado.  Monitorice siempre los bits del sistema asignados para indicar resultados matemáticos no válidos. Extracción de la raíz cuadrada  Desborde durante la operación La extracción de la raíz cuadrada sólo se realiza en valores positivos. 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. Si el operando de la raíz cuadrada es negativo. consulte la página anterior).  No utilice operandos de diferentes tipos de datos en operaciones matemáticas. Las consecuencias de cualquiera de estos errores detectados dependen de la configuración. De este modo. el bit de sistema %S18 se establece en 1 y el resultado es incorrecto. El incumplimiento de estas instrucciones puede causar la muerte.Instrucciones División/resto  División entre 0 Si el divisor es 0. Algunos de los errores matemáticos detectados podrían tener un efecto importante en la ejecución de su aplicación. el resultado siempre es positivo. NOTA: El programa de aplicación es responsable de la gestión de los bits de sistema %S17 y %S18. 76 EIO0000001477 12/2016 . ADVERTENCIA FUNCIONAMIENTO IMPREVISTO DEL EQUIPO  Escriba instrucciones de programación para comprobar la validez de los operandos que se van a utilizar en operaciones matemáticas. El resultado es incorrecto.

442) es incorrecto.241 y %MW2 = 21.094). Si %MW1 = 23. que no puede expresarse en una palabra de 16 bits con signo. su valor se fija en 32. cuando el resultado es superior a 32.767. el bit %S18 se establece en 1 y el valor de %MW0 (-20. EIO0000001477 12/2016 77 .767. el resultado sería (45. Instrucciones Ejemplo de aplicación Desborde durante la suma: Escalón Instrucción 0 LD %M0 [%MW0:=%MW1+%MW2] 1 LDN %S18 [%MW10:=%MW0] 2 LD %S18 [%MW10 :=32767] NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente.853. En este ejemplo. Por lo tanto.

Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 21) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación.3 [%MW102:=NOT(%MW100)] NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. %SWi. %QWi. %KWi. se describe la sintaxis de la lista de instrucciones.Instrucciones Instrucciones lógicas Introducción Los operadores lógicos pueden utilizarse para realizar operaciones lógicas entre 2 operandos de palabra o. %IWSi. %IWi. XOR [Op1: = Op2 operador %MWi. en 1 operando de palabra. NOT [Op1:=NOT(Op2)] %SWi. En esta tabla se enumeran los diferentes tipos de instrucciones lógicas: Instrucción Función AND AND (ámbito de bit) entre dos operandos OR OR lógico (ámbito de bit) entre dos operandos XOR OR exclusivo (ámbito de bit) entre dos operandos NOT Complemento lógico (ámbito de bit) de un operando Sintaxis A continuación. %BLK. %QWi.x (1) Con NOT. OR. Valor inmediato (1). en el caso del NOT lógico. Op2 no puede ser un valor inmediato.x %MWi. 78 EIO0000001477 12/2016 . Op3] %BLK. Sintaxis de las instrucciones lógicas: Operador Sintaxis Op1 Op2 y Op3 AND. Estructura Ejemplos de instrucciones lógicas: Escalón Instrucción 0 LD %M0 [%MW0:=%MW10 AND 16#00FF] 1 LD 1 [%MW0:=%KW5 OR %MW10] 2 LD %I0. %QWSi.

el resultado será %MW15 = 0001 0010 (binario) (18. Instrucciones Ejemplo de aplicación Instrucción AND lógica: [%MW15:=%MW32 AND %MW12] Cuando %MW32 = 0001 1011 (binario) (27. EIO0000001477 12/2016 79 . decimal). decimal) y %MW12 = 0011 0110 (binario) (54. decimal).

Desplazamiento circular ROL(op2.n) Desplazamiento lógico de n posiciones hacia la derecha. ambos incluidos  palabra doble: 1-32.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: Instrucción Función Desplazamiento lógico SHL(op2.n) Desplazamiento circular de n posiciones hacia la derecha. n Valor inmediato entero para:  palabra: 1-16. ROR(op2.n) Desplazamiento circular de n posiciones hacia la izquierda.n) Desplazamiento lógico de n posiciones hacia la izquierda. SHR(op2. ambos incluidos NOTA: El bit de sistema %S17 indica el valor del último bit expulsado. 80 EIO0000001477 12/2016 .

x %BLK. %BLK.x %QWSi. se describe la sintaxis de la lista de instrucciones. %BLK. %QWi. EIO0000001477 12/2016 81 . %KWi.2 [%MW10:=ROR(%KW9. ROR n Valor inmediato entero para:  palabra: 1-16.n)] ROL.x Estructura Ejemplos de instrucciones de desplazamiento: Escalón Instrucción 0 LDR %I0. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 21) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación.5)] 1 LDR %I0. SHR [Op1: = operador (Op2. ambos incluidos En esta tabla se muestra la información de los operandos: Tipos Op1 Op2 Palabras %MWi. ambos incluidos  palabra doble: 1-32. %KDi %BLK. Instrucciones Sintaxis A continuación. %IWSi. %SWi %MWi.x Palabras dobles %MDi %MDi.1 [%MW0:=SHL(%MW10. %SWi.8)] NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. %IWi. Sintaxis de las instrucciones de desplazamiento: Operador Sintaxis SHL. %QWi.

82 EIO0000001477 12/2016 . La palabra %MW5 se convierte en la palabra %MW12 mediante la instrucción BTI. el bit de sistema %S18 se establece en 1 si el valor no es BCD.Instrucciones Instrucciones de conversión de BCD/binario Introducción Las instrucciones de conversión realizan conversiones entre distintas representaciones de números. Durante una conversión. Representación BCD de números decimales: Decimal 0 1 2 3 4 5 6 7 8 9 BCD 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 Ejemplos:  La palabra %MW5 expresa el valor BCD 2450 que corresponde al valor binario: 0010 0100 0101 0000. Este bit se debe verificar y restablecer a 0 mediante el programa.  La palabra%MW12 expresa el valor decimal 2450 que corresponde al valor binario: 0000 1001 1001 0010. La palabra %MW12 se convierte en la palabra %MW5 mediante la instrucción ITB. por consiguiente. En esta tabla se enumeran los tipos de instrucciones de conversión de BCD/binario: Instrucción Función BTI Conversión de BCD a binario ITB Conversión de binario a BCD Revisión del código BCD El decimal codificado en binario (BCD) representa un dígito decimal (entre 0 y 9) codificado con cuatro bits binarios. Un objeto de palabra de 16 bits puede contener un número de cuatro dígitos (entre 0000 y 9999) y. un objeto de palabra doble de 32 bits podrá contener uno de ocho cifras.

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.x %BLK. Instrucciones Sintaxis A continuación.x Estructura Ejemplos de instrucciones de conversión BCD/binario: Escalón Instrucción 0 LD %M0 [%MW0:=BTI(%MW10)] 1 LD %I0. %IWSi. %BLK.2 [%MW10:=ITB(%KW9)] NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. %KDi %BLK.x Palabra doble %MDi %MDi.x %QWSi. %QWi. %KWi. La instrucción ITB se utiliza para mostrar los valores numéricos (por ejemplo. se describe la sintaxis de la lista de instrucciones. el valor actual de un bloque de funciones) en monitores de operación con codificación BCD. %SWi %MWi. %QWi. ITB [Op1 := operador (Op2)] En esta tabla se muestra la información de los operandos: Tipos Op1 Op2 Palabras %MWi. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 21) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. %IWi. %BLK. Sintaxis de las instrucciones de conversión BCD/binario: Operador Sintaxis BTI. EIO0000001477 12/2016 83 . %SWi. el resultado de un cálculo.

HW Extrae el byte más significativo de una palabra doble a una palabra. DWORD Convierte una palabra de 16 bits en una palabra doble de 32 bits. %KWi. %BLK. %MWi.x Estructura Ejemplos de instrucciones de conversión de palabras simples y dobles: Escalón Instrucción 0 LD %M0 [%MW0:=HW(%MD10)] 1 LD %I0. 84 EIO0000001477 12/2016 . Sintaxis A continuación. Sintaxis de las instrucciones de conversión de palabras simples y dobles: Operador Sintaxis Op1 Op2 Op3 LW.x valor inmediato valor inmediato DWORD Op1 = operador (Op2) %MDi. %KDi. se describe la sintaxis de la lista de instrucciones.2 [%MD10:=DWORD(%KW9)] 2 LD %I0. %KDi.Instrucciones Instrucciones de conversión de palabras simples y dobles Introducción En esta tabla se describen las instrucciones utilizadas para realizar conversiones entre palabras simples y dobles: Instrucción Función LW Extrae el byte menos significativo de una palabra doble a una palabra. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 21) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. HW Op1 = operador (Op2) %MWi %MDi. %MWi.3 [%MD11:=CONCATW(%MW10.x CONCATW Op1 = operador (Op2. [-] %BLK. %MWi.%MW5)] NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. %KWi [-] %BLK. Op3)) %MDi. %KWi. CONCATW Concatena dos palabras para formar una palabra doble. %KDi.

3 Programa Programa Objeto de esta sección En esta sección se ofrece una introducción a las instrucciones del programa. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado Página Instrucciones END 86 Instrucciones NOP 88 Instrucciones de salto 89 Instrucciones de subrutina 91 EIO0000001477 12/2016 85 . Instrucciones Sección 3.

0 ST %Q0. END. cuando se alcanza el final del periodo se actualizan las salidas y se inicia la exploración siguiente.2 4 END 86 EIO0000001477 12/2016 .1 1 LD %M2 ST %Q0.1 ST %Q0.Instrucciones Instrucciones END Introducción Las instrucciones END definen el final de la ejecución de una exploración del programa.0 1 LD %I0.3 ST %Q0.2 ENDC 3 LD %I0. Ejemplos Ejemplo de una instrucción END incondicional: Escalón Instrucción 0 LD %M1 ST %Q0. ENDC y ENDCN Hay disponibles 4 instrucciones END diferentes:  END: fin incondicional del programa  ENDC: fin de programa si el resultado booleano de la instrucción de prueba precedente es 1  ENDCN: fin de programa si el resultado booleano de la instrucción de prueba precedente es 0  ENDT: final del escalón de transición en un programa Grafcet (SFC) (sólo válido en un escalón de transición) De forma predeterminada (modalidad normal).1 2 LD %I0. cuando se activa el fin de un programa.2 2 END Ejemplo de una instrucción END condicional: Escalón Instrucción 0 LD %I0. Si la exploración es periódica. las salidas se actualizan y se inicia la siguiente exploración.

Instrucciones NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. EIO0000001477 12/2016 87 .

88 EIO0000001477 12/2016 . 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.Instrucciones Instrucciones NOP Introducción Las instrucciones NOP no realizan ninguna operación.

EIO0000001477 12/2016 89 .  JMPC: salto de programa si el resultado booleano de la lógica anterior es 1. JMPC y JMPCN Existen tres instrucciones de salto diferentes disponibles:  JMP: salto de programa incondicional. JMP. Ejemplos Ejemplos de instrucciones de salto: Escalón Instrucción 0 LD %M15 JMPC %L8 1 LD [%MW24<%MW12] ST %Q0.0 ST %Q0.3 JMPC %L12 2 %L8: LD %M12 AND %M13 ST %M12 JMPC %L12 3 LD %M11 S %Q0. 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).0 4 %L12: LD %I0.4 NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente.  JMPCN: salto de programa si el resultado booleano de la lógica anterior es 0.

 La etiqueta solo puede situarse antes de una instrucción LD.  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. LDF o BLK.Instrucciones Directrices  Las instrucciones de salto no están permitidas entre paréntesis y no deben situarse entre las instrucciones AND.  El número de etiqueta de la etiqueta %Li debe definirse solo una vez en un programa. Un tiempo de exploración prolongado puede provocar la activación del temporizador de watchdog. debe prestarse especial atención al tiempo de exploración del programa. 90 EIO0000001477 12/2016 . LDR. OR y una instrucción de cierre de paréntesis ")". LDN.

Consulte también Gestión de POU para obtener más información sobre cómo gestionar POU con tareas y escalones. Ejemplos Ejemplo de instrucciones que contienen una subrutina: Escalón Instrucción 0 LD %M15 AND %M5 ST %Q0. Guía de funcionamiento) para obtener información sobre cómo crear una POU disponible y una subrutina. 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 una POU disponible SRn.0 ST %Q0.0 EIO0000001477 12/2016 91 . consulte Creación de una tarea periódica (véase SoMachine Basic. Instrucciones Instrucciones de subrutina Introducción Las instrucciones de subrutina hacen que un programa lleve a cabo una subrutina y luego vuelva al programa principal en el punto desde el que se llamó a la subrutina. Para obtener más información sobre las subrutinas. Guía de funcionamiento). y cómo definir el número de subrutina.1 END Ejemplo de instrucción de subrutina (SR1): Escalón Instrucción 0 (SR1) LD %I0.0 1 LD [%MW24>%MW12] SR1 2 LD %I0. Consulte POU disponibles (véase SoMachine Basic. donde n es el número de subrutinas.4 AND %M13 ST %Q0. 3 La instrucción de subrutina debe escribirse independientemente de la POU disponible del programa principal. Procedimiento Se crea una subrutina en una POU disponible.

Instrucciones NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. se debe tener cuidado. Por lo tanto.  Las instrucciones de subrutina no están permitidas entre paréntesis y no deben situarse entre las instrucciones AND. se detectará un error del compilador. 92 EIO0000001477 12/2016 . Esto se debe a que es posible que la subrutina modifique el contenido del acumulador booleano. OR y una instrucción de cierre de paréntesis ")". Directrices  Una subrutina no debe llamar a otra subrutina.  Cuando una instrucción de asignación va seguida directamente de una llamada a una subrutina en IL. Si se intenta llamar a una subrutina de una POU disponible. es posible que tenga un valor de retorno diferente al que tenía antes de la llamada.

4 Coma flotante Coma 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 94 Instrucciones trigonométricas 97 Instrucciones de conversión de ángulos 99 Instrucciones de conversión de entero/coma flotante 100 EIO0000001477 12/2016 93 . Instrucciones Sección 3.

Instrucciones

Instrucciones aritméticas en objetos de coma flotante

Introducción
Estas instrucciones permiten efectuar una operación aritmética entre 2 operandos de coma
flotante o en 1 operando de coma flotante:

Instrucción Objetivo
+ Suma de dos operandos
- Resta de dos operandos
* Multiplicación de dos operandos
/ División de dos operandos
LOG Logaritmo de Base 10
LN Logaritmo natural
SQRT Raíz cuadrada de un operando
ABS Valor absoluto de un operando
TRUNC Parte entera de un valor de coma flotante
EXP Exponencial natural
EXPT Potencia de un entero por un real

Sintaxis
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignación (véase página 21) en los escalones del
diagrama de contactos utilizando un elemento gráfico de Bloque de operación.
Operadores y sintaxis de las instrucciones aritméticas en coma flotante:

Operadores Sintaxis
+, - *, / Op1:=Op2 operador Op3
SQRT, ABS, TRUNC, LOG, EXP, LN Op1:=operador (Op2)
EXPT Op1:=operador (Op2,Op3)

Operandos de las instrucciones aritméticas en coma flotante:

Operadores Op1 Op2 Op3
+, - *, / %MFi %MFi, %KFi, valor %MFi, %KFi, valor
inmediato inmediato
SQRT, ABS, LOG, %MFi %MFi, %KFi [-]
EXP, LN
Nota: SoMachine Basic impide el uso de la función con un %MWi como Op1.

94 EIO0000001477 12/2016

Instrucciones

Operadores Op1 Op2 Op3
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.

Estructura
Ejemplo de una instrucción aritmética:

Escalón Instrucción
0 LD %M0
[%MF0:=%MF10+129.7]
1 LD %I0.2
[%MF1:=SQRT(%MF10)]
2 LDR %I0.3
[%MF2:=ABS(%MF20)]
3 LDR %I0.4
[%MF3:=TRUNC(%MF2)]
4 LD %M1
[%MF4:=LOG(%MF10)]
5 LD %I0.5
[%MF5:=LN(%MF20)]
6 LD %I0.0
[%MF6:=EXP(%MF30)]
7 LD %I0.1
[%MF7:=EXPT(%MF40,%MW52)]

NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de
contactos equivalente.

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 99) 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 99); la palabra %SW17 indica la causa del error detectado.
 Cuando el operando de la función es un número no válido (por ejemplo, logaritmo de un número
negativo), produce un resultado indeterminado o infinito y cambia el bit de %S18 a 1. La palabra
%SW17 señala la causa del error detectado.
NOTA: En la instrucción TRUNC, el bit de sistema %S17 no se ve afectado.

EIO0000001477 12/2016 95

Instrucciones

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).

96 EIO0000001477 12/2016

Instrucciones

Instrucciones trigonométricas

Introducción
Estas instrucciones permiten realizar operaciones trigonométricas:

SIN seno de un ángulo expresado en radianes ASIN
arco seno (resultado entre y )

COS coseno de un ángulo expresado en radianes ACOS
arco coseno (resultado entre 0 y )
TAN tangente de un ángulo expresado en ATAN
radianes arco tangente (resultado entre y

)

Sintaxis
A continuación, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignación (véase página 21) en los escalones del
diagrama de contactos utilizando un elemento gráfico de Bloque de operación.
Operadores, operandos y sintaxis de las instrucciones de operaciones trigonométricas

Operadores Sintaxis Op1 Op2
SIN, COS, TAN, Op1:=operador(Op2) %MFi %MFi, %KFi
ASIN, ACOS, ATAN

Estructura
Ejemplo de instrucciones Trigonometric:

Escalón Instrucción
0 LD %M0
[%MF0:=SIN(%MF10)]
1 LD %I0.0
[%MF1:=TAN(%MF20)]
2 LD %I0.3
[%MF2:=ATAN(%MF30)]

NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de
contactos equivalente.

EIO0000001477 12/2016 97

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.

98 EIO0000001477 12/2016

Instrucciones

Instrucciones de conversión de ángulos

Introducción
Estas instrucciones permiten llevar a cabo operaciones de conversión:

DEG_TO_RAD Conversión de grados a radianes, el resultado es el valor del ángulo comprendido
entre 0 y
RAD_TO_DEG Conversión de un ángulo expresado en radianes, el resultado es el valor del ángulo
comprendido entre 0 y 360 grados

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 21) 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

Operadores Sintaxis Op1 Op2
DEG_TO_RAD Op1:=operador(Op2) %MFi %MFi, %KFi
RAD_TO_DEG

Estructura
Ejemplo de instrucciones de conversión:

Escalón Instrucción
0 LD %M0
[%MF0:=DEG_TO_RAD(%MF10)]
1 LD %M2
[%MF2:=RAD_TO_DEG(%MF20)]

NOTA: Consulte el procedimiento de reversibilidad (véase página 18) 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.

EIO0000001477 12/2016 99

Operadores y sintaxis (conversión de una palabra entera a flotante): Operadores Sintaxis INT_TO_REAL Op1=INT_TO_REAL(Op2) Operandos (conversión de una palabra entera a flotante): Op1 Op2 %MFi %MWi. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 21) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación.000 a 6.Instrucciones Instrucciones de conversión de entero/coma flotante Introducción Existen cuatro instrucciones de conversión: INT_TO_REAL Conversión de una palabra entera a flotante DINT_TO_REAL Conversión de una palabra doble (entera) a flotante REAL_TO_INT Conversión de una palabra flotante a entera (el resultado es el valor algebraico más cercano) REAL_TO_DINT Conversión de una palabra flotante a entera doble (el resultado es el valor algebraico más cercano) Sintaxis A continuación.8905e+07 100 EIO0000001477 12/2016 . se describe la sintaxis de la lista de instrucciones.905.47e+02 Operadores y sintaxis (conversión de una palabra doble entera a flotante): Operadores Sintaxis DINT_TO_REAL Op1=DINT_TO_REAL(Op2) Operandos (conversión de una palabra doble entera a flotante): Op1 Op2 %MFi %MDi.%KWi Ejemplo: Conversión de una palabra entera a flotante: 147 a 1.%KDi Ejemplo: Conversión de una palabra doble entera a flotante: 68.

el valor flotante está fuera de los límites de la palabra (o palabra doble). el valor se redondeará hacia el número par.235. %KFi Ejemplo:  Conversión de flotante a palabra entera: 5.5 a 12. el valor suministrado será aquel cuyo bit menos significativo sea igual a 0". %KFi Palabras dobles %MDi %MFi. 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.978. ya sea superior o inferior.5 a 10.8 [%MD2:=REAL_TO_DINT(%MF9)] NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente.6 a -1.979 NOTA: Si durante una conversión de real a entero (o de real a palabra doble entera). Instrucciones Operadores y sintaxis (conversión de flotante a palabra entera o palabra doble entera): Operadores Sintaxis REAL_TO_INT Op1=operador (Op2) REAL_TO_DINT Operadores (conversión de flotante a palabra entera o palabra doble entera): Tipo Op1 Op2 Palabras %MWi %MFi. Por ejemplo:  Redondeo del valor 10.  Redondeo del valor 11.6 a 5.979  Conversión de flotante a palabra doble entera: -1.978. el bit %S18 se establece en 1. EIO0000001477 12/2016 101 . Precisión de redondeo La norma IEEE 754 define cuatro modalidades de redondeo para las operaciones con flotantes.235. Estructura Ejemplo de instrucción de conversión de entero/flotante: Escalón Instrucción 0 LD 1 [%MF0:=INT_TO_REAL(%MW10)] 1 LD %I0. Es decir.

Instrucciones Sección 3. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado Página Instrucciones ROUND 103 Instrucciones de conversión de ASCII a entero 105 Instrucciones de conversión de entero a ASCII 107 Instrucciones de conversión de ASCII a flotante 109 Instrucciones de conversión de flotante a ASCII 111 102 EIO0000001477 12/2016 .5 ASCII ASCII Objeto de esta sección En esta sección se describen las instrucciones avanzadas de ASCII.

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 21) en los escalones del
diagrama de contactos utilizando un elemento gráfico de Bloque de operación.
Para la instrucción ROUND, utilice la sintaxis: Op1 := ROUND( Op2,Op3 ).
Por ejemplo:
[%MW0:7:=ROUND(%MW8,4)]

Parámetros
En esta tabla se describen los parámetros de la función ROUND:

Parámetros Descripción
Op1 %MW en el que se almacena el resultado.
Op2 %MW que contiene la coma flotante que se va a redondear.
Op3 Número de dígitos significativos necesarios en el redondeo.
Entero de 1 a 8

Reglas de utilización
Las reglas de la instrucción ROUND son las siguientes:
 El operando se redondea siempre hacia abajo.
 El carácter de fin de la cadena del operando se utiliza como carácter de fin de la cadena de
resultado.
 El carácter de fin puede ser cualquier carácter ASCII que no se encuentre en el intervalo [0 - 9]
([16#30 - 16#39]), excepto:
 punto '.' (16#2E),
 menos '-' (16#2D),
 más '+' (16#2B),
 EXP 'e' o 'E' (16#65 o 16#45).

 El resultado y el operando no deben tener un tamaño superior a 13 bytes: el tamaño máximo
de una cadena ASCII es de 13 bytes.
 No se admite la notación científica.

EIO0000001477 12/2016 103

Instrucciones

Casos especiales
El software comprueba la sintaxis. Los ejemplos siguientes producirían errores de sintaxis:

Sintaxis incorrecta Sintaxis correcta
%MW10:= ROUND(%MW1,4) %MW10:7 := ROUND(%MW1,4)
falta ":7" en el resultado
%MW10:13:= ROUND(%MW1,4) %MW10:7 := ROUND(%MW1,4)
%MW10:n, donde n ≠ 7 es incorrecto

Ejemplo de aplicación
En esta tabla se muestran ejemplos de la instrucción ROUND:

Ejemplo Resultado
ROUND("987654321", 5) "987650000"
ROUND("-11.1", 8) "-11.1"
ROUND("NAN") "NAN"

104 EIO0000001477 12/2016

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 21) en los escalones del
diagrama de contactos utilizando un elemento gráfico de Bloque de operación.
Para las instrucciones de conversión ASCII a entero, use la sintaxis siguiente:
Op1 := ASCII_TO_INT( Op2 )
Por ejemplo:
[%MW0:=ASCII_TO_INT(%MW8)]

Parámetros
En esta tabla se describen los parámetros de la función de conversión de ASCII a entero:

Parámetros Descripción
Op1 %MW en el que se almacena el resultado
Op2 %MW o %KW

Reglas de utilización
Las reglas de las instrucciones de conversión de ASCII a entero son las siguientes:
 Op2 debe estar entre -32.768 y 32.767.
 La función siempre lee primero el byte más significativo.
 Todo carácter ASCII que se encuentre fuera del rango [0 - 9] ([16#30 - 16#39]) se considera un
carácter de fin, excepto en el caso de un signo menos '-' (16#2D) cuando se coloca como primer
carácter.
 En caso de desbordamiento (>32.767 o <-32.768), el bit de sistema %S18 (desborde aritmético
o error detectado) se establece en 1 y se devuelve el valor 32.767 o -32.768.
 Si el primer carácter del operando es un carácter "separador", se devuelve el valor 0 y el bit
%S18 se establece en 1.
 No se admite la notación científica.

EIO0000001477 12/2016 105

Instrucciones

Ejemplo de aplicación
Tenga en cuenta que los siguientes datos ASCII se han almacenado entre %MW10 y %MW13:

Parámetro Valor hexadecimal Valor ASCII
%MW10 16#3932 9, 2
%MW11 16#3133 1, 3
%MW12 16#2038 ‘ ‘, 8
%MW13 16#3820 8, ‘ ‘

En esta tabla se muestran ejemplos de la conversión de ASCII a entero:

Ejemplo Resultado
%MW20 := ASCII_TO_INT(%MW10) %MW20 = 29318
%MW20 := ASCII_TO_INT(%MW12) %MW20 = 8
%MW20 := ASCII_TO_INT(%MW13) %MW20 = 0 y %S18 se establece en 1

106 EIO0000001477 12/2016

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 21) 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:

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)

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:

Sintaxis incorrecta Sintaxis correcta
%MW10 := INT_TO_ASCII(%MW1) %MW10:4 := INT_TO_ASCII(%MW1)
falta ":4" en el resultado
%MW10:n := INT_TO_ASCII(%MW1) %MW10:4 := INT_TO_ASCII(%MW1)
%MW10:n, donde n ≠ 4 es incorrecto

EIO0000001477 12/2016 107

Instrucciones

Ejemplo de aplicación
Para la instrucción MW10:4 := INT_TO_ASCII(%MW1):

Si... Entonces...
Valor entero Valor hexadecimal Valor ASCII
%MW10 = 16#3231 2, 1
%MW1 = 123
%MW11 = 16#0D33 3
%MW10 = 16#3534 5, 4
%MW1 = 45
%MW11 = 16#000D 'enter'
%MW1 = 7 %MW10 = 16#0D37 'enter', 7
%MW10 = 16#3145 1, '-'
%MW11 = 16#3332 3, 2
%MW1 = -12369
%MW10 = 16#3936 9, 6
%MW11 = 16#000D 'enter'

108 EIO0000001477 12/2016

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.  EXP 'e' o 'E' (16#65 o 16#45).  El formato de la cadena ASCII puede estar en notación científica (es decir.9] ([16#30 .34567e+13) o decimal (es decir.  más '+' (16#2B). Para las instrucciones de conversión de ASCII a flotante. se describe la sintaxis de la lista de instrucciones.  Todo carácter ASCII que no se encuentre en el intervalo [0 . -2.1. utilice la sintaxis siguiente: Op1 := ASCII_TO_FLOAT( Op2 ).#INF (+ o – valor infinito).  %SW17:X3 se establece en 1. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 21) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación.16#39]) se considera un carácter de "fin". 9. EIO0000001477 12/2016 109 .' (16#2E). Por ejemplo: [%MF0:=ASCII_TO_FLOAT(%MW8)] Parámetros En esta tabla se describen los parámetros de la función de conversión de ASCII a flotante: Parámetros Descripción Op1 %MF Op2 %MW or %KW Reglas de utilización Las reglas de conversión de ASCII a flotante son las siguientes:  La función siempre lee primero el byte más significativo.402824E+38):  El bit de sistema %S18 (desborde aritmético o error detectado) se establece en 1.  En caso de desborde (el resultado del cálculo es >3.402824E+38 o <-3.3457).  menos '-' (16#2D). excepto:  punto '. Sintaxis A continuación.  Se devuelve el valor +/.826.

se redondea a 0.Se devuelve #QNAN. '. Ejemplo de aplicación Tenga en cuenta que los siguientes datos ASCII se han almacenado entre %MW10 y %MW14: Parámetro Valor hexadecimal Valor ASCII %MW10 16#382D 8.2 En esta tabla se muestran ejemplos de la conversión de ASCII a flotante: Ejemplo Resultado %MF20 := ASCII_TO_FLOAT(%MW10) %MF20 = -826. '-' %MW11 16#322E 2.0.5 %MF20 := ASCII_TO_FLOAT(%MW11) %MF20 = 1.175494E-38 y 1.Instrucciones  Si el resultado del cálculo se encuentra entre -1.#QNAN %MF20 := ASCII_TO_FLOAT(%MW12) %MF20 = 6500. 'e' %MW14 16#2032 ' '.  El bit %SW17:X0 se establece en 1.  Si el operando no es un número:  Valor 1.#QNAN %MF20 := ASCII_TO_FLOAT(%MW14) %MF20 = 2.0 %MF20 := ASCII_TO_FLOAT(%MW13) %MF20 = 1.175494E-38. 6 %MW13 16#2B65 '+'.' %MW12 16#3536 5.0 110 EIO0000001477 12/2016 .

se describe la sintaxis de la lista de instrucciones.  La representación se realiza mediante notación científica convencional. 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.  El carácter de fin es "Enter" (ASCII 13). Sintaxis A continuación. Por ejemplo: [%MW0:7:=FLOAT_TO_ASCII(%MF8)] Parámetros En esta tabla se describen los parámetros de la función de conversión de flotante a ASCII: Parámetro Descripción Op1 %MW Op2 %MF or %KF Reglas de utilización Las reglas de conversión de flotante a ASCII son las siguientes:  La función siempre escribe primero el byte más significativo.  Los resultados "Infinito" o "No es un número" devuelven la cadena "NAN". Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 21) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. use la sintaxis siguiente: Op1 := FLOAT_TO_ASCII(Op2). EIO0000001477 12/2016 111 .  No se admite la notación científica.  La precisión de conversión es de 6 cifras. Para las instrucciones de conversión de flotante a ASCII.  La función determina automáticamente cuántos %MW se deben llenar con valores ASCII.

4567.234 1. Los ejemplos siguientes producirían errores de sintaxis: Sintaxis incorrecta Sintaxis correcta %MW10 := FLOAT_TO_ASCII(%MF1) %MW10:7 := FLOAT_TO_ASCII(%MF1) falta ":7" en el resultado %MW10:n := FLOAT_TO_ASCII(%MF1) %MW10:7 := FLOAT_TO_ASCII(%MF1) %MW10:n donde n ≠ 7 es incorrecto Ejemplo de aplicación Para la instrucción %MW10:7 := FLOAT_TO_ASCII(%MF1): Número para convertir Resultado 123.21e-07 9.23456e+09 0.800 1.87654 1.000000921 9.Instrucciones Errores de sintaxis El software comprueba la sintaxis.234e+03 112 EIO0000001477 12/2016 .87654321 9.

NOTA: Estas instrucciones no se pueden utilizar en una expresión entre paréntesis. NOTA: Para cada instrucción MPS (introducir) debe mostrarse una instrucción MPP (extraer) coincidente en el mismo escalón. EIO0000001477 12/2016 113 . Las instrucciones MPS. MRD y MPP utilizan un área de almacenamiento temporal denominada "pila" que puede almacenar hasta 32 expresiones booleanas.6 Operadores de pila Operadores de pila Instrucciones de pila (MPS. 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 los valores a la parte inferior de la pila. MPP) Introducción Las instrucciones de pila procesan el acceso a las bobinas. MRD. MPP Sacar memoria de pila Copia el valor de la parte superior de la pila en el acumulador (sacar) y desplaza el resto de los valores hacia la parte superior de la pila. Instrucciones Sección 3. MRD Leer memoria desde pila Lee la parte superior de la pila en el acumulador.

0 MRD AND %I0.2 ST %Q0.3 NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente.2 MPP AND %I0.4 ST %Q0.1 ST %Q0. 114 EIO0000001477 12/2016 .Instrucciones Funcionamiento En este diagrama se muestra cómo funcionan las instrucciones de pila: Ejemplo de aplicación Ejemplo de uso de instrucciones de pila: Escalón Instrucción 0 LD %I0.3 ST %Q0.1 MRD AND %I0.0 AND %M1 MPS AND %I0.

7 Instrucciones sobre tablas de objetos Instrucciones sobre tablas de objetos Objeto de esta sección En esta sección se describen las instrucciones para gestionar las tablas de objetos de:  Palabras dobles  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. Instrucciones Sección 3. palabras dobles o coma flotante 116 Funciones de suma en tablas 118 Funciones de comparación de tablas 120 Funciones de búsqueda en tablas 122 Funciones de búsqueda de valores máximo y mínimo en tablas 124 Número de apariciones de un valor en una tabla 126 Funciones de desplazamiento circular de tablas 127 Funciones de clasificación en tablas 129 Funciones de interpolación en la tabla de coma flotante (LKUP) 131 Funciones de MEDIA de los valores de una tabla de coma flotante 136 EIO0000001477 12/2016 115 .

x (por ejemplo. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 21) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. %QW. %KFi:L L Longitud de la tabla (máximo 255). se describe la sintaxis de la lista de instrucciones.%MDi:L. Sintaxis de las asignaciones de tablas de palabras. %MWi. Sintaxis A continuación.  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.Instrucciones Asignación de tablas de palabras. %SWi:L. %KWi. 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 117)) 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 117))  Tabla de palabras a tabla de palabras (vea el escalón 2 de la estructura de ejemplo (véase página 117)) La longitud de la tabla (L) debe ser igual para ambas tablas. palabras dobles y coma flotante: Operador Sintaxis := [Op1 := Op2] Op1 toma el valor de Op2 En esta tabla se muestra la información de los operandos: Tipo Op1 Op2 Tabla de palabras %MWi:L. %KDi:L Tablas de palabras %MFi:L Valor de coma flotante inmediato. %KDi. %SWi. %KFi. flotantes %MFi:L.x Tablas de palabras %MDi:L Valor entero inmediato. valor entero inmediato. R3. 116 EIO0000001477 12/2016 . NOTA: La abreviatura %BLK. %SWi:L %MWi:L. %IW. dobles %MDi.I) se utiliza para describir cualquier palabra del bloque de funciones. %BLK.  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. %MFi.

Instrucciones Estructura Ejemplos de asignaciones de tablas de palabras: Escalón Instrucción 0 LD 1 [%MW0:10:=100] 1 LD %I0.0 [%MW0:10:=%MW11] 2 LDR %I0. EIO0000001477 12/2016 117 .3 [%MW10:20:=%KW20:20] NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente.

Estructura Ejemplo de función de suma: Escalón Instrucción 0 LD %I0. se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 21) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación.  Si la tabla se compone de palabras flotantes. 118 EIO0000001477 12/2016 . el resultado se presenta en forma de palabra doble. Sintaxis A continuación. NOTA: Cuando el resultado no se encuentra dentro del rango válido de formato de palabra doble según el operando de la tabla. Sintaxis de la instrucción de suma en tabla: Res:=SUM_ARR(Tab) Parámetros de la instrucción de suma en tabla: Tipo Resultado (Res) Tabla (Tab) Tablas de palabras dobles %MDi %MDi:L.2 [%MD5:=SUM_ARR(%MD3:1)] 1 LD 1 [%MD5:=SUM_ARR(%KD5:2)] 2 LD 1 [%MF2:=SUM_ARR(%MF8:5)] NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente.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.%KDi:L Tablas de palabras flotantes %MFi %MFi:L. el bit de sistema %S18 se establece en 1.%KFi:L L Longitud de la tabla (máximo 255). el resultado se presenta en forma de palabra flotante.

%MD34= 30. %MD36= 40 Por tanto. %MD4:= 10 + 20 + 30 + 40 EIO0000001477 12/2016 119 . Instrucciones Ejemplo de aplicación %MD4:=SUM_ARR(%MD30:4) Donde %MD30= 10. %MD32= 20.

Sintaxis de la instrucción de comparación de tablas: Res:=EQUAL_ARR(Tab1.2 [%MW5:=EQUAL_ARR(%MD20:7. de lo contrario.%KD0:7)] 1 LD 1 [%MW0:=EQUAL_ARR(%MD20:7.%KFi:L L Longitud de la tabla (máximo 255). elemento por elemento. Estructura Ejemplo de función de comparación de tablas: Escalón Instrucción 0 LD %I0.%KD0:7)] 2 LD 1 [%MF2:=SUM_ARR(%MF8:5)] NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. La comparación se realiza en la totalidad de la tabla. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 21) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación.Tab2) Parámetros de las instrucciones de comparación de tablas: Tipo Resultado (Res) Tablas (Tab1 y Tab2) Tablas de palabras dobles %MWi %MDi:L. Sintaxis A continuación.Instrucciones Funciones de comparación de tablas Introducción La función EQUAL_ARR realiza la comparación de dos tablas. el valor mostrado es igual a -1. el rango de los primeros elementos diferentes se muestra en forma de palabra.%KDi:L Tablas de palabras flotantes %MWi %MFi:L. NOTA: Las tablas deben tener la misma longitud y ser del mismo tipo. 120 EIO0000001477 12/2016 . Si aparece una diferencia. se describe la sintaxis de la lista de instrucciones.

%KD0:4) Comparación de las 2 tablas: Rango Tabla de palabras Tablas de palabras constantes Diferencia 0 %MD30=10 %KD0=10 = 1 %MD32=20 %KD2=20 = 2 %MD34=30 %KD4=60 Diferente 3 %MD36=40 %KD6=40 = El valor de la palabra %MW5 es 2 (primer rango diferente) EIO0000001477 12/2016 121 . Instrucciones Ejemplo de aplicación %MW5:=EQUAL_ARR(%MD30:4.

%KFi flotantes Tablas de palabras %MWi %MDi:L.Instrucciones Funciones de búsqueda en tablas Introducción Se proponen tres funciones de búsqueda:  FIND_EQR: búsqueda de la posición en una tabla de palabras dobles o de flotantes del primer elemento igual a un valor determinado.%KDi:L %MDi.  FIND_GTR: búsqueda de la posición en una tabla de palabras dobles o de flotantes del primer elemento mayor que un valor determinado. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 21) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. Sintaxis A continuación. se describe la sintaxis de la lista de instrucciones.  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.Val) FIND_GTR FIND_LTR Parámetros de las instrucciones de búsqueda en tablas de palabras flotantes y palabras dobles: Tipo Resultado (Res) Tabla (Tab) Valor (Val) Tablas de palabras %MWi %MFi:L.%KDi dobles L Longitud de la tabla (máximo 255). El resultado de estas instrucciones es igual al rango del primer elemento encontrado o a -1 si la búsqueda es infructuosa.%KFi:L %MFi. 122 EIO0000001477 12/2016 . Sintaxis de las instrucciones de búsqueda en tablas: Función Sintaxis FIND_EQR Res:=Función(Tab.

3 [%MW6:=FIND_GTR(%MD20:7. Ejemplo de aplicación %MW5:=FIND_EQR(%MD30:4. rango 3 %MD36=40 - EIO0000001477 12/2016 123 .%KD0) Búsqueda de la posición de la primera palabra doble = %KD0=30 en la tabla: Rango Tabla de palabras Resultado 0 %MD30=10 - 1 %MD32=20 - 2 %MD34=30 Valor (val).%KF4)] NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente.%KD0)] 2 LD 1 [%MW7:=FIND_LTR(%MF40:5.%KD0)] 1 LD %I0.2 [%MW5:=FIND_EQR(%MD20:7. Instrucciones Estructura Ejemplo de función de búsqueda en tablas: Escalón Instrucción 0 LD %I0.

incluido el índice de la dirección de base (el valor máximo de L es 255). Para obtener más información.Instrucciones Funciones de búsqueda de valores máximo y mínimo en tablas Introducción Se proponen dos funciones de búsqueda:  MAX_ARR: búsqueda del valor máximo en una tabla de palabras dobles y de flotantes. Sintaxis A continuación.%KDn:L Tablas de palabras flotantes %MFi %MFn:L. Estructura Ejemplo de función de búsqueda en tablas: Escalón Instrucción 0 LD %I0. consulte Posibilidad de solapamiento entre objetos (véase página 40).2 [%MD0:=MIN_ARR(%MD20:7)] 1 LD 1 [%MF8:=MIN_ARR(%MF40:5)] 124 EIO0000001477 12/2016 .  MIN_ARR: búsqueda del valor mínimo en una tabla de palabras dobles y de flotantes. L Número de posiciones que deben considerarse en una búsqueda. El resultado de estas instrucciones es igual al valor máximo (o mínimo) encontrado en la tabla. NOTA: En L se incluyen sólo las direcciones que no se superponen durante la búsqueda. Sintaxis de las instrucciones de búsqueda de valores máximos y mínimos en tablas: Función Sintaxis MAX_ARR Result:=Function(Tab) MIN_ARR Parámetros de las instrucciones de búsqueda de valores máximos y mínimos en tablas: Tipo Resultado (Res) Tabla (Tab) Tablas de palabras dobles %MDi %MDn:L.%KFn:L i Indicador de instancia de objeto para la variable de memoria. se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 21) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. n Índice de memoria de la tabla que indica la dirección de base para la búsqueda.

Instrucciones NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. EIO0000001477 12/2016 125 .

Sintaxis A continuación.%KFi:L %MFi.%KDi dobles Tablas de palabras %MFi %MFi:L. Sintaxis de las instrucciones de búsqueda de valores máximos y mínimos en tablas: Función Sintaxis OCCUR_ARR Res:=Función(Tab.%KDi:L %MDi. 126 EIO0000001477 12/2016 . se describe la sintaxis de la lista de instrucciones.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.%KF0)] 1 LD %I0.2 [%MW5:=OCCUR_ARR(%MD20:7. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 21) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación.3 [%MW5:=OCCUR_ARR(%MF20:7.Val) Parámetros de las instrucciones de búsqueda de valores máximos y mínimos en tablas: Tipo Resultado (Res) Tabla (Tab) Valor (Val) Tablas de palabras %MWi %MDi:L. Estructura Ejemplo de número de apariciones: Escalón Instrucción 0 LD %I0.%KFi flotantes L Longitud de la tabla (máximo 255).%MD1)] NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente.

se describe la sintaxis de la lista de instrucciones. Ilustración de las funciones de ROL_ARR  ROR_ARR: realiza el desplazamiento circular de n posiciones desde abajo hacia arriba de los elementos de la tabla de palabras flotantes.Tab) ROR_ARR EIO0000001477 12/2016 127 . Sintaxis de las instrucciones de desplazamiento circular en tablas de palabras dobles o de flotantes ROL_ARR y ROR_ARR Función Sintaxis ROL_ARR Función(n. Ilustración de las funciones de ROR_ARR Sintaxis A continuación. 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. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 21) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación.

no se efectuará ningún desplazamiento. 128 EIO0000001477 12/2016 .%MF40:5)] NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente.4 [ROR_ARR(2.%MD20:7)] 1 LD %I0.%MD20:7)] 2 LD %I0. immediate value %MFi:L Tablas de palabras dobles %MWi.3 [ROR_ARR(2. immediate value %MDi:L L Longitud de la tabla (máximo 255).2 [ROL_ARR(%KW0. NOTA: Si el valor de n es negativo o nulo. Estructura Ejemplo de función de desplazamiento circular en tablas: Escalón Instrucción 0 LD %I0.Instrucciones Parámetros de las instrucciones de desplazamiento circular en tablas de palabras flotantes: ROL_ARR y ROR_ARR: Tipo Número de posiciones (n) Tabla (Tab) Tablas de palabras flotantes %MWi.

 Dirección = 0: no se realiza ninguna clasificación.%MF40:8)] EIO0000001477 12/2016 129 . Sintaxis de las funciones de clasificación en tablas: Función Sintaxis SORT_ARR Función(dirección. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 21) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación.  Dirección < 0: la clasificación se efectúa en orden descendente. immediate value %MFi:L L Longitud de la tabla (máximo 255).Tab) El parámetro "dirección" proporciona el orden de la clasificación:  Dirección > 0: la clasificación se efectúa en orden ascendente. se describe la sintaxis de la lista de instrucciones. El resultado (tabla ordenada) se devuelve en el parámetro Tab (tabla para clasificar).%MF0:6)] 2 LD %I0.3 [SORT_ARR(0. Estructura Ejemplo de función de clasificación en tablas: Escalón Instrucción 0 LD %I0. 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.2 [SORT_ARR(%MW20.%MF0:6)] 1 LD %I0.1 [SORT_ARR(%MW20. immediate value %MDi:L Tablas de palabras flotantes %MWi. Sintaxis A continuación. Parámetros de las funciones de clasificación en tablas: Tipo Dirección de la clasificación Tabla (Tab) Tablas de palabras dobles %MWi.

130 EIO0000001477 12/2016 .Instrucciones NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente.

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. NOTA: Si dos valores consecutivos Xi cualesquiera son iguales (Xi=Xi+1=X). donde . EIO0000001477 12/2016 131 . donde . para solucionar esta excepción se usa el algoritmo siguiente en lugar de la ecuación (1): (Ecuación 2) para . como se define en esta ecuación: (Ecuación 1) para . En este caso. Revisión de la interpolación lineal La función LKUP utiliza la regla de interpolación lineal. sabiendo que los valores de están dispuestos en orden ascendente: . la ecuación (1) resulta en una excepción no válida.

Instrucciones Representación gráfica Este gráfico muestra la regla de interpolación lineal descrita anteriormente: Sintaxis A continuación.Yi) usuario definida por el usuario [Op1: = LKUP(Op2.Op3)] %MWi %MF0 Valor entero. %MWi. dos de los cuales son atributos de función. tal como se describe en esta tabla: Sintaxis Op1 Op2 Op3 Variable de salida Valor (X) definido por el Matriz de variables (Xi.or %KWi 132 EIO0000001477 12/2016 . se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 21) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. La función LKUP usa tres operandos.

Dada una matriz de (m) pares de datos (Xi. Rango válido para Op2: . En función del valor de Op1.Yi). 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. Definición de Op3 Op3 establece el tamaño (Op3 / 2) de la matriz de coma flotante en la que se almacenan los pares de datos (Xi. el resultado de la interpolación (Y) está contenido en %MF2 de la matriz Op3 (véase página 133). Xm < Xm-1 2 Se ha detectado un error de interpolación: Op2 fuera de rango. Instrucciones Definición de Op1 Op1 es la palabra de memoria que contiene la variable de salida de la función de interpolación. como se explica en esta tabla: Op1 (%MWi)) Descripción 0 Interpolación correcta 1 Se ha detectado un error de interpolación: matriz incorrecta.Yi). X > Xm 8 Tamaño no válido de la matriz de datos:  Op3 se define como número impar o bien  Op3 < 6. y qué es lo que puede haber causado un fallo. puede saber si la interpolación se ha realizado correctamente o no. empezando por %MF4 (observe que los objetos de coma flotante %MF0 y %MF2 se reservan para la consigna del usuario X y el valor Y interpolado. el índice superior (u) de la matriz de coma flotante (%MFu) se establece mediante las relaciones siguientes:  (Ecuación 3)  (Ecuación 4) EIO0000001477 12/2016 133 . respectivamente). Para un valor dado (X). X < X1 4 Se ha detectado un error de interpolación: Op2 fuera de rango. Los datos Xi e Yi se almacenan en objetos de coma flotante con índices pares. NOTA: Op1 no contiene el valor (Y) de interpolación calculado.

donde u=18 se calcula mediante la ecuación 4 descrita anteriormente.10)] NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. Estructura Las operaciones de interpolación se realizan de la forma siguiente: Escalón Instrucción 0 LD %I0. El elemento más alto de la serie %MFu.Instrucciones La matriz de coma flotante Op3 (%MFi) presenta una estructura similar a la de este ejemplo (donde Op3=8): (X) (X1) (X2) (X3) %MF0 %MF4 %MF8 %MF12 %MF2 %MF6 %MF10 %MF14 (Y) (Y1) (Y2) (Y3) (Op3=8) NOTA: Como resultado de la estructura de la matriz de coma flotante anterior. dos puntos de datos para que pueda haber interpolación lineal).  10 es Op3 (calculado mediante la ecuación 3 explicada anteriormente).  %MF2 almacena el valor (Y) calculado resultante de la interpolación lineal. Establece el tamaño de la matriz de coma flotante.3 [%MW22:=LKUP(%MF0. Ejemplo de aplicación Uso de una función de interpolación LKUP: [%MW20:=LKUP(%MF0.2 [%MW20:=LKUP(%MF0. Op3 debe cumplir los dos requisitos siguientes.%KW1)] 1 LD %I0. al menos. 134 EIO0000001477 12/2016 .10)] En este ejemplo:  %MW20 es Op1 (la variable de salida). se activará un error en la función LKUP:  Op3 es un número par y  Op3 ≥ 6 (ya que debe haber. de lo contrario.  %MF0 es el valor (X) definido por el usuario cuyo valor (Y) correspondiente se debe calcular mediante interpolación lineal.

Instrucciones Existen cuatro pares de puntos de datos almacenados en la matriz Op3 [%MF4.  %MF12 contiene X3.%MF10 contiene Y2.  %MF8 contiene X2.%MF18]:  %MF4 contiene X1.%MF14 contiene Y3. EIO0000001477 12/2016 135 ...  %MF16 contiene X4..%MF6 contiene Y1.%MF18 contiene Y4.

Sintaxis de la función de cálculo de la media de una tabla de coma flotante: Función Sintaxis MEAN Resultado=Función(Op1) Parámetros de la función de cálculo para un número L determinado (máximo 255) de valores de una tabla de comas flotantes: Op1 Resultado (Res) %MFi:L. Sintaxis A continuación.Instrucciones Funciones de MEDIA de los valores de una tabla de coma flotante Introducción La función MEAN permite calcular la media de un número determinado de valores de una tabla de coma flotante.2 [%MF0:=MEAN(%MF10:5)] NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. se describe la sintaxis de la lista de instrucciones. %KFi:L %MFi Estructura Ejemplo de función de media: Escalón Instrucción 0 LD %I3. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 21) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. 136 EIO0000001477 12/2016 .

Instrucciones Sección 3. 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) 138 Salida incrustada digital de escritura instantánea (WRITE_IMM_OUT) 140 Parámetro de bloque de funciones de lectura inmediata (READ_IMM) 142 Parámetro de bloque de funciones de escritura inmediata (WRITE_IMM) 143 EIO0000001477 12/2016 137 .8 Instrucciones sobre los objetos de E/S Instrucciones sobre los objetos de E/S Objeto de esta sección En esta sección se describen las instrucciones sobre los objetos de E/S.

%MWi %KWi i Indicador de instancia de objeto para la variable de memoria. Código de retorno de la función En esta tabla se describe el código de retorno de la función: Código Descripción 0 No se ha detectado ningún error. Ejemplo %MW0 := READ_IMM_IN(2) En la ejecución de este bloque de operación. Para la instrucción READ_IMM_IN. Así se evita tener que esperar el siguiente tiempo de ciclo de tarea para actualizar la imagen de entrada. Sintaxis A continuación. 1 La entrada declarada es mayor que la entrada máxima permitida. Op2 Valor inmediato (entero) Define el índice de entrada (%I0. el valor actual de la entrada %I0. se describe la sintaxis de la lista de instrucciones. utilice la sintaxis siguiente: Op1 := READ_IMM_IN(Op2) Donde: Operando Tipo Descripción Op1 %MWi Almacena el código de retorno de la función (consulte la siguiente tabla). 138 EIO0000001477 12/2016 . Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 21) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. 2 La entrada declarada está forzada. El código de retorno de la función se guarda en la palabra de memoria %MW0. NOTA: Esta instrucción sólo es válida para las entradas incrustadas digitales (salidas integradas en el Logic Controller).x).2 se lee y la imagen de entrada se actualiza inmediatamente.Instrucciones Entrada incrustada digital de lectura instantánea (READ_IMM_IN) Introducción La instrucción READ_IMM_IN lee una entrada incrustada digital durante la ejecución de una tarea y actualiza la imagen de entrada inmediatamente.

Instrucciones Estructura Ejemplo de la instrucción READ_IMM_IN: Escalón Instrucción 0 LD %M0 [%MW0:=READ_IMM_IN(%MW5)] NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. EIO0000001477 12/2016 139 .

NOTA: Esta función sólo es válida para las salidas digitales incrustadas (salidas integradas en el Logic Controller). Código de retorno de la función En esta tabla se describe el código de retorno de la función: Código Descripción 0 No se ha detectado ningún error. Para la instrucción WRITE_IMM_OUT. 140 EIO0000001477 12/2016 . utilice la sintaxis siguiente: Op1 := WRITE_IMM_OUT(Op2) Donde: Operando Tipo Descripción Op1 %MWi Almacena el código de retorno de la función (consulte la siguiente tabla). 4 La salida declarada está forzada.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.x). Op2 Valor inmediato (entero) Define el índice de salida (%Q0. Así se evita tener que esperar el siguiente tiempo de ciclo de tarea para escribir a la salida incrustada. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 21) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. y el valor se lee desde la imagen de salida. Sintaxis A continuación. se describe la sintaxis de la lista de instrucciones. %MWi %KWi i Indicador de instancia de objeto para la variable de memoria. 3 La salida declarada es mayor que la salida máxima permitida. 5 La salida declarada se utiliza como una salida de hardware dedicada. 6 La salida declarada se utiliza como una salida de alarma.

El código de retorno de la función se guarda en la palabra de memoria %MW0. EIO0000001477 12/2016 141 . Instrucciones Ejemplo %MW0 := WRITE_IMM_OUT(%MW5) (con %MW5 = 2) En la ejecución de este bloque de operación.2 se escribe físicamente en la salida digital incrustada. la imagen de salida %Q0. Estructura Ejemplo de la instrucción WRITE_IMM_OUT: Escalón Instrucción 0 LD %M0 [%MW0:= WRITE_IMM_OUT(%MW4)] NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente.

Esta instrucción lee un parámetro de bloque de funciones dado %HSCx.VD en Op1 y actualiza el valor en la imagen de E/S y en el registro correspondiente.PD. La instrucción READ_IMM lee directamente desde los registros HSC. utilice la sintaxis siguiente: READ_IMM(Op1) Donde: Operando Tipo Descripción Op1 %HSCx.3 para utilizar la instrucción READ_IMM. Esta función sólo está disponible para determinados parámetros de bloques de funciones.V. 142 EIO0000001477 12/2016 .P)] NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. Para la instrucción READ_IMM. Sintaxis A continuación.V y HSC. consulte Contador de alta velocidad (%HSC). se describe la sintaxis de la lista de instrucciones. Ejemplo A continuación se muestra un ejemplo de uso de la instrucción READ_IMM: Escalón Instrucción 0 LD %M0 [READ_IMM(%HSC0. Para obtener más información.P en bloques de funciones de Contador de alta velocidad (%HSC). Guía de funcionamiento) como mínimo del Nivel 3. %HSCx.P. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 21) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. %HSCx. NOTA: La aplicación debe estar configurada con un nivel funcional (véase SoMachine Basic.Instrucciones Parámetro de bloque de funciones de lectura inmediata (READ_IMM) Introducción La instrucción READ_IMM lee un parámetro de bloque de funciones durante la ejecución de una tarea y actualiza la imagen de entrada durante el mismo ciclo. x Identificador de instancia de objeto del bloque de funciones.

VD dado en Op1 y actualiza el valor en la imagen de E/S. %HSCx.PD. %HSCx. se describe la sintaxis de la lista de instrucciones. x Identificador de instancia de objeto del bloque de funciones. Ejemplo A continuación se muestra un ejemplo de uso de la instrucción WRITE_IMM: Escalón Instrucción 0 LD %M1 [WRITE_IMM(%HSC0. utilice la sintaxis siguiente: WRITE_IMM(Op1) Donde: Operando Tipo Descripción Op1 %HSCx. consulte Contador de alta velocidad (%HSC). EIO0000001477 12/2016 143 .P en bloques de funciones de Contador de alta velocidad (%HSC).3 para utilizar la instrucción WRITE_IMM.V)] NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente.V y HSC. Instrucciones Parámetro de bloque de funciones de escritura inmediata (WRITE_IMM) Introducción La instrucción WRITE_IMM escribe un parámetro de bloque de funciones durante la ejecución de una tarea y actualiza la imagen de salida durante el mismo ciclo. Puede insertar operaciones de lista de instrucciones e instrucciones de asignación (véase página 21) en los escalones del diagrama de contactos utilizando un elemento gráfico de Bloque de operación. Sintaxis A continuación. Para obtener más información. Para la instrucción WRITE_IMM. Esta función sólo está disponible para determinados parámetros de bloques de funciones.V. Esta instrucción escribe un parámetro de bloque de funciones %HSCx.P. La instrucción WRITE_IMM escribe directamente desde los registros HSC. NOTA: La aplicación debe estar configurada con un nivel funcional como mínimo del Nivel 3.

Instrucciones 144 EIO0000001477 12/2016 .

4 Modulación de ancho de pulsos (%PWM) 149 EIO0000001477 12/2016 145 .2 Contador de alta velocidad (%HSC) 147 4.3 Pulso (%PLS) 148 4.1 Contador rápido (%FC) 146 4. SoMachine Basic Objetos de E/S EIO0000001477 12/2016 Capítulo 4 Objetos de E/S Objetos de E/S Contenido de este capítulo Este capítulo contiene las siguientes secciones: Sección Apartado Página 4.

Objetos de E/S Sección 4.1 Contador rápido (%FC) Contador rápido (%FC) Contador rápido Descripción general Consulte la Guía de la biblioteca de funciones avanzadas de su controlador. 146 EIO0000001477 12/2016 .

Objetos de E/S Sección 4.2 Contador de alta velocidad (%HSC) Contador de alta velocidad (%HSC) Contador de alta velocidad Descripción general Consulte la Guía de la biblioteca de funciones avanzadas de su controlador. EIO0000001477 12/2016 147 .

148 EIO0000001477 12/2016 .3 Pulso (%PLS) Pulso (%PLS) Pulso Descripción general Consulte la Guía de la biblioteca de funciones avanzadas de su controlador.Objetos de E/S Sección 4.

EIO0000001477 12/2016 149 . Objetos de E/S Sección 4.4 Modulación de ancho de pulsos (%PWM) Modulación de ancho de pulsos (%PWM) Modulación de ancho de pulsos Descripción general Consulte la Guía de la biblioteca de funciones avanzadas de su controlador.

Objetos de E/S 150 EIO0000001477 12/2016 .

consulte la guía de programación del logic controller. Para obtener más información sobre cómo configurar objetos de red. se utilizan los siguientes tipos de objetos de red:  %IN: entradas digitales (IOScanner)  %QN: salidas digitales (IOScanner)  %IWN: registros de entrada (IOScanner)  %QWN: registros de salida (IOScanner)  %IWNS: códigos de diagnóstico de red de IOScanner NOTA: Las referencias a entradas y salidas se realizan desde el punto de vista del maestro EtherNet/IP o cliente Modbus TCP. Modbus TCP o IOScanner serie Modbus. EIO0000001477 12/2016 151 . Hay dos tipos de objeto de red para la comunicación EtherNet/IP:  %QWE: Input Assembly  %IWE: Output Assembly Hay dos tipos de objeto de red para la comunicación Modbus TCP:  %QWM: registros de entrada  %IWM: registros de salida Para IOScanner serie Modbus. SoMachine Basic Objetos de red EIO0000001477 12/2016 Capítulo 5 Objetos de red Objetos de red Objetos de red Presentación Los objetos de red se utilizan para la comunicación a través de EtherNet/IP.

Objetos de red 152 EIO0000001477 12/2016 .

1 Uso de bloques de funciones 154 6.4 Mensaje (%MSG) e intercambio (EXCH) 180 6.11 PID 242 6.8 Contador de pasos (%SC) 227 6.12 Pasos de Grafcet 243 EIO0000001477 12/2016 153 . SoMachine Basic Objetos de software EIO0000001477 12/2016 Capítulo 6 Objetos de software Objetos de software Contenido de este capítulo Este capítulo contiene las siguientes secciones: Sección Apartado Página 6.6 Drums (%DR) 214 6.7 Registro de bits de desplazamiento (%SBR) 222 6.10 Reloj de tiempo real (%RTC) 237 6.5 Registro LIFO/FIFO (%R) 205 6.9 Fechadores (%SCH) 232 6.3 Contador (%C) 172 6.2 Temporizador (%TM) 160 6.

Objetos de software Sección 6.1 Uso de bloques de funciones Uso 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 155 Añadido de un bloque de funciones 157 Configuración de un bloque de funciones 159 154 EIO0000001477 12/2016 .

Configure (véase página 159) el bloque de funciones especificando los valores de sus parámetros.  OUT_BLK: se emplea para conectar las salidas del bloque directamente. CU %Ci). 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). Conecte las entradas y salidas según sea necesario.000 CU %C1 1. Objetos de software Principios de programación del bloque de funciones Descripción general Un bloque de funciones es un objeto reutilizable que acepta uno o varios valores de entrada y devuelve uno o varios valores de salida. 2. Programas de la lista de instrucciones Para añadir un bloque de funciones a un programa de lista de instrucciones. Los parámetros de los bloques de funciones no están disponibles si:  su controlador no admite el bloque de funciones. Inserte (véase página 157) el bloque de funciones en un escalón.074 CD %C1 1. puede utilizar uno de los siguientes métodos:  Instrucciones del bloque de funciones (por ejemplo. OUT_BLK y END_BLK para la programación reversible de los bloques de funciones:  BLK: indica el principio del bloque. Por ejemplo: Línea Instrucción 1. 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. EIO0000001477 12/2016 155 .  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.209 R %C1 Utilice las instrucciones BLK.  Instrucciones específicas (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.  END_BLK: indica el final del bloque. 3.

D AND %M1 ST %Q0. Ejemplo sin salidas cableadas En este ejemplo se muestra la programación reversible de un bloque de funciones Counter sin salidas cableadas: Escalón Instrucción 0 BLK %C8 LDF %I0.2 AND %M0 CU END_BLK 1 LD %C8.1 AND %M0 CU OUT_BLK LD D AND %M1 ST %Q0. 156 EIO0000001477 12/2016 .1 R LD %I0.0 END_BLK NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente.4 NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente.Objetos de software Ejemplo con salidas cableadas En este ejemplo se muestra un bloque de funciones Counter en un programa con salidas cableadas: Escalón Instrucción 0 BLK %C8 LDF %I0.1 R LD %I0.

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. a continuación. Objetos de software Añadido de un bloque de funciones Para insertar un bloque de funciones en un programa de diagrama de contactos Siga el procedimiento siguiente: Paso Acción 1 Cree un nuevo escalón del diagrama de contactos en el área de trabajo de programación de SoMachine Basic. Objetos de bloques de funciones disponibles En esta tabla se muestran los objetos de bloques de funciones disponibles: Objeto de bloque de funciones Descripción Timer LIFO/FIFO Register Shift Bit Register Step Counter Counter Fast Counter High Speed Counter EIO0000001477 12/2016 157 . Consulte la Guía de funcionamiento de SoMachine Basic para obtener más detalles. Resultado: Se muestra una lista de todos los objetos de bloques de funciones disponibles (consulte la tabla siguiente). 4 Mueva el bloque de funciones a la posición deseada en el escalón y. haga clic para insertarlo. 3 Seleccione el bloque de funciones.

158 EIO0000001477 12/2016 . Bloques de funciones PTO.Guía de la biblioteca. Bloques de funciones de comunicación NOTA: Para obtener una lista de los bloques de funciones de comunicación.Objetos de software Objeto de bloque de funciones Descripción Drum Pulse Pulse Width Modulation Message Pulse Train Output NOTA: Para ver una lista completa de objetos PTO consulte la M221 Funciones avanzadas . consulte Objetos de comunicación (véase página 251).

haga clic en la etiqueta [Símbolo] dentro del bloque de funciones y comience a escribir el nombre del símbolo para asociarlo con este bloque de funciones. haga clic en el símbolo para usarlo. Para modificar la dirección predeterminada. "%TM0" para un bloque de funciones Timer. Cuando lo desee. haga clic en la etiqueta [Introducir comentario] dentro del bloque de funciones y escriba una breve descripción del bloque de funciones. NOTA: Además. 3 De manera opcional. Aparece una dirección predeterminada en el cuadro de texto. Objetos de software Configuración de un bloque de funciones Para configurar un bloque de funciones en un programa de diagrama de contactos Siga el procedimiento siguiente: Paso Acción 1 Haga clic en la etiqueta [Dirección] dentro del bloque de funciones. Por ejemplo. A fin de crear un nuevo símbolo para este bloque de funciones. elimine el último dígito de la dirección (el identificador de la instancia). EIO0000001477 12/2016 159 . 2 De manera opcional. puede visualizar la tabla Propiedades haciendo doble clic en el bloque de funciones en un escalón. como se explica en el tema "Parámetros" de las descripciones de cada bloque de funciones. 4 Configure los parámetros disponibles de cada bloque de funciones. Aparece una lista de todas las direcciones disponibles. Las propiedades del bloque de funciones aparecen en el centro del objeto de bloque de funciones y en la tabla Propiedades. puede hacer doble clic en cualquier parte dentro del bloque de funciones para visualizar las propiedades. Temporizador de pulso. en la mitad inferior del área de trabajo de programación. escriba el nombre del símbolo para crearlo y seleccione el objeto para asociarlo con el símbolo. Aparece una lista de todos los símbolos existentes con nombres que comienzan con el carácter o caracteres que ha escrito. por ejemplo. Seleccione la dirección que se utilizará para identificar esta instancia del bloque de funciones. Consulte la Guía de funcionamiento de SoMachine Basic para obtener más información sobre el uso de símbolos.

2 Temporizador (%TM) Temporizador (%TM) Uso de los bloques de funciones del temporizador En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones Timer.Objetos de software Sección 6. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado Página Descripción 161 Configuración 162 TON: temporizador de retardo de conexión 164 TOF: temporizador de retardo de desconexión 167 TP: temporizador de pulso 169 Ejemplo de programación 170 160 EIO0000001477 12/2016 .

Ilustración En esta ilustración se muestra el bloque de funciones Timer.Q) Timer) cuando el Timer se agota. EIO0000001477 12/2016 161 . Entradas El bloque de funciones Timer contiene la siguiente entrada: Etiqueta Descripción Valor IN Dirección (o Inicia el Timer cuando se detecta un flanco ascendente (tipos TON instrucción) de entrada o TP) o un flanco descendente (tipo TOF). Salidas El bloque de funciones Timer contiene la siguiente salida: Etiqueta Descripción Valor Q Dirección de salida El bit asociado %TMi. activar un evento.Q se establece en 1 (en función del tipo de (%TMi. por ejemplo. Objetos de software Descripción Introducción El bloque de funciones Timer se utiliza para especificar un periodo de tiempo antes de hacer algo.

Si se ha seleccionado la casilla Retentivo. El conteo se reinicia a partir de este valor.3 para poder usar el parámetro Retentivo. El conteo se reinicia desde 0. esta dirección se está utilizando No actualmente en un programa. siga el procedimiento de configuración de un bloque de funciones (véase página 159) y lea la descripción de las modalidades de asignación de memoria en la Guía de funcionamiento de SoMachine Basic. Para obtener más No información. Símbolo Símbolo El símbolo asociado con este objeto. el valor se restablece cuando se detecta un flanco descendente del parámetro IN. Consulte la guía de programación de la plataforma correspondiente para saber cuál es el número máximo de temporizadores. consulte Definición y uso de los símbolos en la Guía de funcionamiento de SoMachine Basic.Objetos de software Configuración Parámetros Para configurar los parámetros. Dirección Dirección del objeto de Un programa puede contener sólo un número limitado No Timer (%TMi) de objetos Timer. NOTA: La aplicación debe estar configurada con un nivel funcional como mínimo del Nivel 3. El bloque de funciones Timer contiene los parámetros siguientes: Parámetro Descripción Rango ¿Editable en modalidad online? Utilizado Dirección utilizada Si está seleccionada. 162 EIO0000001477 12/2016 . el temporizador retiene el valor cuando se detecta un flanco descendente del parámetro IN antes de que se alcance el valor Preajuste. Tipo Tipo Timer Uno de los siguientes: Sí1  TON (véase página 164): Temporizador de retardo de conexión (predeterminado)  TOF (véase página 167): Temporizador de retardo de desconexión  TP (véase página 169): Temporizador de pulso (monoestable) Retentivo True/False Si no se ha seleccionado la casilla Retentivo (valor Sí1 predeterminado).

%TMi. preestablecido %TMi.Q Salida Timer Consulte la descripción en la tabla Salidas anterior. No 1 El temporizador se restablece de forma inmediata en 0 después de cualquier cambio en el valor del parámetro en modalidad online. EIO0000001477 12/2016 163 . mayor será la precisión del temporizador:  1 ms (solo para las primeras seis instancias)  10 ms  100 ms  1s  1 min (predeterminado) Preajuste Valor preestablecido 0 . Su valor puede modificarse en una tabla de animación. El programa puede leer y comprobar el valor.9999.P.V Valor actual Palabra que aumenta de 0 al valor preestablecido %TMi. Sí1 Cuanto más pequeña sea la unidad de referencia del temporizador. pero no escribir en él. probarse y modificarse con el objeto asociado %TMi. El valor predeterminado es 9. Comentario Comentario Se puede asociar un comentario con este objeto.P Valor Consulte la descripción en la tabla Parámetros anterior.P cuando el temporizador está en funcionamiento. Objetos El bloque de funciones Timer contiene los objetos siguientes: Objeto Descripción Rango %TMi. Sí1 Periodo del temporizador = Preajuste x Base de tiempo Retardo del temporizador = Preajuste x Base de tiempo Este valor preestablecido configurado puede leerse. Objetos de software Parámetro Descripción Rango ¿Editable en modalidad online? Base Base de tiempo La unidad de referencia de tiempo del temporizador.999.

Efecto de un salto del programa Un salto sobre el bloque del temporizador no inmoviliza el temporizador. El temporizador continúa aumentando hasta que alcanza el valor preestablecido (%TMi.Q una sola vez en el programa. el bit de Done (%TMi.P). El valor del temporizador no cambia durante un corte de alimentación. Efecto de una detención del controlador La detención del controlador no inmoviliza el valor. Comprobación por bit %TMi. El valor preestablecido se restablece al valor definido durante la configuración.Q) asignado a la salida Q del bloque del temporizador cambia de estado. 164 EIO0000001477 12/2016 .Q (bit Permite probar el bit %TMi.P La modificación del valor preestablecido mediante una instrucción o un ajuste del valor con SoMachine Basic sólo tiene efecto cuando se vuelve a activar el temporizador.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. Establece el %TMi. En este punto.Q de salida en 0. Done) Efecto de modificar el preajuste %TMi. Sin embargo. Este retardo se puede programar mediante el software. Casos especiales La tabla siguiente incluye una lista de casos especiales para programar el bloque de funciones de temporizador: Caso especial Descripción Efecto de un reinicio en frío (%S0%=1) Fuerza el valor a 0. la salida asociada conectada directamente a la salida del bloque no se activa y el autómata no la explora. Efecto de un reinicio en caliente No tiene ningún efecto en el valor del temporizador ni en su valor (%S1=1) preestablecido.

V se establece en 0 Diagrama de tiempos con la casilla Retentivo seleccionada En este diagrama se muestra el funcionamiento del temporizador (Timer) de tipo TON si se ha seleccionado la casilla Retentivo. (3) En el flanco descendente de la entrada IN. el temporizador (Timer) se detiene aunque el temporizador (Timer) no haya alcanzado el valor %TMi.P en incrementos de una unidad por cada pulso del parámetro de la base de tiempo TB. %TMi.P.V aumenta de 0 a %TMi. (3) El bit de salida %TMi. el temporizador (Timer) se detiene y permanece sin cambios a la espera del siguiente flanco ascendente de la entrada IN.P.V aumenta de 0 a %TMi. (4) El bit de salida %TMi. EIO0000001477 12/2016 165 .Q se define en 1 cuando el valor ha alcanzado el valor preestablecido %TMi. (5) Si se detecta un flanco descendente en la entrada IN. (1) El Timer se inicia en el flanco ascendente de la entrada IN (2) El valor %TMi.Q permanece en 1 mientras la entrada IN esté en 1. Objetos de software Diagrama de tiempos En este diagrama se muestra el funcionamiento del tipo TON Timer. (1) El Timer se inicia en el flanco ascendente de la entrada IN (2) El valor %TMi.P en incrementos de una unidad por cada pulso del parámetro de la base de tiempo TB.

el valor %TMi.Objetos de software (4) En el flanco ascendente de la entrada IN.P. si el temporizador (Timer) ha alcanzado el valor preestablecido %TMi.P. 166 EIO0000001477 12/2016 .Q se establece en 1 cuando el valor alcanza el valor preestablecido %TMi. (6) Cuando se detecta un flanco descendente en la entrada IN. (5) El bit de salida %TMi.V se establece en 0. se inicia de nuevo el temporizador (Timer) desde el valor en el que se detuvo.

EIO0000001477 12/2016 167 .V se establece en 0.V aumenta hasta el valor preestablecido %TMi. %TMi. %TMi. Objetos de software TOF: temporizador de retardo de desconexión Introducción Utilice el tipo de temporizador TOF (Off-Delay Timer) de Timer para controlar las acciones de retraso. (2) El Timer se inicia en el flanco descendente de la entrada IN.Q se establece en 1.P. (1) En un flanco ascendente de la entrada IN.V se establece en 0 aunque no se alcance el valor preestablecido. Diagrama de tiempos En este diagrama se muestra el funcionamiento del tipo TOF Timer.Q se restablece a 0 cuando el valor alcanza el valor preestablecido %TMi.P en incrementos de una unidad por cada pulso del parámetro de la base de tiempo TB. (5) En un flanco ascendente de la entrada IN. Este retardo se puede programar mediante el software. (3) El valor %TMi. (6) En un flanco ascendente de la entrada IN. (4) El bit de salida %TMi. %TMi.

Objetos de software Diagrama de tiempos con la casilla Retentivo seleccionada En este diagrama se muestra el funcionamiento del temporizador (Timer) de tipo TOF si se ha seleccionado la casilla Retentivo. el temporizador se detiene y permanece sin cambios a la espera del siguiente flanco descendente de la entrada IN.V se establece en 0 y %TMi. %TMi. 168 EIO0000001477 12/2016 .P. %TMi.Q se establece en 1.Q se restablece a 0 cuando el valor alcanza el valor preestablecido %TMi.Q se establece en 1.P en incrementos de una unidad por cada pulso del parámetro de la base de tiempo TB. (2) El Timer se inicia en el flanco descendente de la entrada IN.V aumenta hasta el valor preestablecido %TMi. (4) En el flanco ascendente de la entrada IN. (6) En un flanco ascendente de la entrada IN. (5) El bit de salida %TMi. (3) El valor %TMi. (1) En un flanco ascendente de la entrada IN.

(5) Este Timer no se puede restablecer.V se establece en 0 si el Timer aún no se ha iniciado y %TMi. (6) Cuando %TMi.P en incrementos de 1 unidad por pulso del parámetro de la referencia de tiempo TB.P y la entrada IN se establece en 0.Q se establece en 0 cuando el valor actual ha alcanzado el valor preestablecido %TMi.P y la entrada IN vuelve a 0. El valor actual %TMi.V se establece en 0 cuando %TMi. (3) El bit de salida %TMi. EIO0000001477 12/2016 169 . (2) El valor actual %TMi. (4) El valor actual %TMi.Q se establece en 1 cuando se inicia el Timer. %TMi. (1) El Timer se inicia en el flanco ascendente de la entrada IN. 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. Diagrama de tiempos En este diagrama se muestra el funcionamiento del Timer de tipo TP. Este retardo se puede programar mediante el software.Q se establece en 0.V es igual a %TMi.V es igual a %TMi.P.V del Timer aumenta de 0 al valor preestablecido %TMi.

V<400] ST %Q0.Objetos de software Ejemplo de programación Introducción Los bloques de funciones Timer tienen las siguientes modalidades de funcionamiento:  TON (Timer On-Delay) (véase página 164) (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.1 2 LD [%TM0.2 En este ejemplo se muestra el mismo bloque de funciones Timer con instrucciones no reversibles: Escalón Instrucción no reversible 0 LD %M0 IN %TM0 1 LD %TM0.0 170 EIO0000001477 12/2016 .  TOF (Timer Off-Delay) (véase página 167) (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. Programación Este ejemplo es un bloque de funciones Timer con instrucciones reversibles: Escalón Instrucción reversible 0 BLK %TM0 LD %M0 IN OUT_BLK LD Q ST %Q0.Q ST %Q0.Pulse) (véase página 169) (temporizador de pulso): utilizado para generar un pulso de duración determinada.  TP (Timer .0 END_BLK 1 LD [%TM0. Los retardos o periodos de pulsos de Timers se pueden programar y configurar desde el software.V>=400] ST %Q0.

V>=400] ST %Q0. Objetos de software Escalón Instrucción no reversible 2 LD [%TM0.1 3 LD [%TM0. EIO0000001477 12/2016 171 .V<400] ST %Q0.2 NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente.

Objetos de software Sección 6. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado Página Descripción 173 Configuración 175 Ejemplo de programación 178 172 EIO0000001477 12/2016 .3 Contador (%C) Contador (%C) Uso de bloques de funciones del contador En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones Counter.

S Establecer entrada Establece el contador (%Ci. Objetos de software Descripción Introducción El bloque de funciones Counter cuenta los eventos de forma progresiva y regresiva. Entradas El bloque de funciones Counter contiene las siguientes entradas: Etiqueta Descripción Valor R Restablecer entrada Establece el contador (%Ci. Estas 2 operaciones se pueden realizar de manera simultánea.P) (o instrucción) cuando la entrada establecida (S) se ha establecido en 1.V) en el valor preestablecido (%Ci. Ilustración En esta ilustración se presenta el bloque de funciones Counter. EIO0000001477 12/2016 173 .V) en 0 cuando la entrada de (o instrucción) reseteado (R) se ha establecido en 1.V) en 1 en un flanco ascendente en la entrada Conteo regresivo (CD).V) en 1 en un flanco ascendente en la entrada Conteo progresivo (CU). CD Conteo regresivo Disminuye el valor del contador (%Ci. CU Conteo progresivo Aumenta el valor del contador (%Ci.

cuando %Ci. En caso de disminución posterior.V cambia progresivo de 9999 a 0 (establecido en 1 cuando %Ci. D Salida El bit asociado %Ci.999. alcanzada F Desborde de conteo El bit asociado %Ci.P.E (contador vacío) se ha establecido en 1 cuando regresivo el contador alcanza el valor 0.D (conteo realizado) se ha establecido en 1 predeterminada cuando %Ci. el valor del contador pasa a 9.Objetos de software Salidas El bloque de funciones Counter contiene las siguientes salidas: Etiqueta Descripción Valor E Desborde de conteo El bit asociado %Ci. 174 EIO0000001477 12/2016 .F=1 (contador completo).V alcanza 0 y se resetea a 0 si el Counter continúa con el conteo progresivo).V = %Ci.

%Ci. Puede modificarse en una tabla de animación. Puede modificarse en una tabla de animación. Comentario Comentario Se puede asociar un comentario con este objeto. Preajuste Valor preestablecido Valores aceptados por el valor preestablecido [0 − Sí 9.V Valor actual de Esta palabra aumenta o disminuye según las entradas (o Counter instrucciones) CU y CD (consulte la tabla de entradas (véase página 173)).P. Solo se pueden leer. esta dirección se está No utilizando actualmente en un programa. Consulte la guía de programación de su controlador para averiguar el número de contadores.P Valor preestablecido Consulte la tabla de parámetros (véase página 175). El valor predeterminado es 9. consulte Definición y uso de los símbolos en la Guía de funcionamiento de SoMachine Basic. Para obtener No más información. Objetos de software Configuración Parámetros Para configurar los parámetros.E Vacío Consulte la tabla de salidas (véase página 174). Puede modificarse en una tabla de animación. probar y modificar utilizando el objeto asociado %Ci. %Ci. EIO0000001477 12/2016 175 . siga el procedimiento de configuración de un bloque de funciones (véase página 159) y lea la descripción de las modalidades de asignación de memoria en la Guía de funcionamiento de SoMachine Basic.999].999. Dirección Dirección de objeto Un programa sólo puede contener un número No Counter limitado de objetos de contador. No Objetos El bloque de funciones Counter contiene los objetos siguientes: Objeto Descripción Valor %Ci. Símbolo Símbolo El símbolo asociado con este objeto. Este valor configurado se puede leer. El bloque de funciones Counter contiene los parámetros siguientes: Parámetro Descripción Valor ¿Editable en modalidad online? Utilizado Dirección utilizada Si está seleccionada.

progresivo) cambia a 1. Conteo Aparece un flanco ascendente en la El valor actual %Ci. salidas %Ci. progresivo) se restablece a 0.D y %Ci.F están a 0.V es igual al valor El bit de salida "preajuste alcanzado" %Ci. Las 1 (o se activa la instrucción R).V se fuerza a 0.P. regresivo) se restablece a 0.E.D se establece en 1. Operaciones En esta tabla se describen las principales fases de las operaciones del bloque de funciones Counter: Operación Acción Resultado Restablecer La entrada R se establece en el estado El valor actual %Ci.F (desborde de conteo regresivo.V aumenta en una entrada de conteo progresivo CU (o se unidad.V cambia de 0 a El bit de salida %Ci. 176 EIO0000001477 12/2016 .P y se activa la instrucción S) y la entrada la salida %Ci. El valor actual %Ci.F (desborde de conteo progresivo. Establecer Si la entrada S se establece en 1 (o si El valor actual %Ci.V toma el valor %Ci. Si el Counter continúa con el conteo El bit de salida %Ci. Puede modificarse en una tabla de animación.E (desborde de conteo 9999. El valor actual %Ci. Puede modificarse en una tabla de animación. activa la instrucción CD).Objetos de software Objeto Descripción Valor %Ci.V disminuye en una entrada de conteo regresivo CD (o se unidad. restablecida está en el estado 0 (o la instrucción R está inactiva). El valor actual %Ci. %Ci.F Completo Consulte la tabla de salidas (véase página 174). Conteo regresivo Aparece un flanco ascendente en la El valor actual %Ci. Si el Counter continúa con el conteo El bit de salida %Ci. cambia a 1. %Ci. regresivo) cambia a 1. activa la instrucción CU).V cambia de 9999 El bit de salida %Ci.F (desborde de conteo a 0.D preestablecido %Ci.D Terminado Consulte la tabla de salidas (véase página 174). La entrada de restablecimiento tiene prioridad.

E.  Los bits de salida %Ci. NOTA: El efecto de INIT es el mismo que %S0=1. Objetos de software Casos especiales En esta tabla se muestra una lista de casos de configuración/funcionamiento especiales para el bloque de funciones Counter: Caso especial Descripción Efecto de un reinicio en frío (%S0=1) o INIT  El valor actual %Ci. y %Ci. Efecto de modificar el preajuste %Ci. Efecto de un reinicio en caliente (%S1=1) de No tiene ningún efecto en el valor actual de Counter una detención del controlador (%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).D. %Ci.V). EIO0000001477 12/2016 177 .F se establecen en 0.V se establece en 0.  El valor preestablecido se inicializa con el valor definido durante la configuración.

Programación Este ejemplo es un bloque de funciones Counter con instrucciones reversibles: Escalón Instrucción reversible 0 BLK %C8 LD %I0.D ST %Q0. 178 EIO0000001477 12/2016 .0 NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente.2 AND %M0 CU %C8 2 LD %C8.D=1). el valor Preajuste (%Ci.Objetos de software Ejemplo de programación Introducción El ejemplo siguiente muestra un contador que permite contar hasta un máximo de 5.2 AND %M0 CU END_BLK 1 LD %C8.000 elementos. Configuración Durante la configuración.P): se establece en 5.1 R LD %I0. Cada pulso de entrada %I0. deben introducirse los parámetros: En este ejemplo.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.0 En este ejemplo se muestra el mismo bloque de funciones Counter con instrucciones no reversibles: Escalón Instrucción no reversible 0 LD %I0.1.000. El contador se restablece mediante la entrada %I0.1 R %C8 1 LD %I0.D ST %Q0.

0.V disminuirá hasta llegar a 0. En este ejemplo. En cada flanco frontal de %I0. La salida %C1.P y el indicador Finalizado %C1. Objetos de software Ejemplo de un contador progresivo/regresivo Esta ilustración es un ejemplo de un bloque de funciones Counter. en cada flanco frontal de %I0. %M0 es la orden de aumento (%M0 = Falso) y de disminución (%M0 = Verdadero).0. Si %M0 está establecido en False. El indicador Vacío (%C1.E) se enciende y restablece %M0 (orden de incremento).D cambia a TRUE. El contador realiza un conteo del flanco frontal de %I0.0. %C1.D establece %M0 y cambia la instrucción en orden de disminución. EIO0000001477 12/2016 179 .V aumenta hasta el valor preestablecido %C1. %C1.

Objetos de software Sección 6. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado Página Descripción general 181 Descripción 183 Configuración 187 Ejemplo de programación 192 Ejemplos de ASCII 194 Peticiones y ejemplos estándar Modbus 196 180 EIO0000001477 12/2016 .4 Mensaje (%MSG) e intercambio (EXCH) Mensaje (%MSG) e intercambio (EXCH) Uso de los bloques de funciones del mensaje En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones Message.

En esta tabla se muestra la instrucción de Intercambio y el bloque de funciones Message que permiten acceder a los puertos de comunicación del controlador: Puerto de comunicación Instrucción de intercambio Bloque de funciones del mensaje 2 líneas serie EXCH1 %MSG1 EXCH2 %MSG2 1 línea serie y 1 Ethernet EXCH1 %MSG1 EXCH3 %MSG3 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. Cuando se procesa una instrucción de Intercambio el controlador lógico utiliza el protocolo configurado para el puerto especificado.  Bloque de funciones Message (%MSG) para controlar los intercambios de datos. El usuario define una tabla de palabras (%MWi:L) que contiene la información de control y los datos que se enviarán o recibirán. El intercambio de mensajes se realiza mediante la instrucción de Intercambio. %MSG2). SoMachine Basic ofrece las siguientes funciones para este tipo de comunicaciones:  Instrucción de Intercambio (EXCH) para transmitir/recibir mensajes. EIO0000001477 12/2016 181 . Consulte Configuración de la tabla de transmisión (véase página 188). A cada puerto de comunicación se le puede asignar un protocolo distinto. Los controladores lógicos implementan mensajes Modbus TCP en la red Ethernet utilizando la instrucción EXCH3 y el bloque de funciones %MSG3. 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. EXCH2) o el bloque de funciones Message (%MSG1. Objetos de software Descripción general Introducción Un controlador lógico puede configurarse para comunicarse en el protocolo Modbus o puede enviar o recibir mensajes en modalidad de caracteres (ASCII). se muestra el formato de la instrucción de Intercambio: [EXCHx %MWi:L] Donde: x = número de puerto. L = número total de palabras de la tabla de palabras. Es posible acceder a los puertos de comunicación agregando el número de puerto a la instrucción de Intercambio (EXCH1. Se debe utilizar el bloque de funciones Message cuando se envíen varios mensajes. Sintaxis A continuación.

En Ethernet. cada byte del mensaje se envía como dos caracteres ASCII. Para obtener información detallada sobre el protocolo Modbus. especificado como CRC. La modalidad maestro Modbus sólo se admite a través de la instrucción de Intercambio. El maestro puede dirigirse a los esclavos individuales o iniciar un mensaje de difusión para todos los esclavos. La capa de conexión de datos de Modbus tiene las limitaciones siguientes:  Dirección 1-247  Bits: 128 bits previa petición  Palabras: 125 palabras de 16 bits previa petición 182 EIO0000001477 12/2016 . diversos maestros (clientes) pueden intercambiar con un esclavo (servidor). El carácter de final de trama está predeterminado en 0x0A (LF). utiliza una modalidad de cálculo de suma de comprobación diferente.org. Este protocolo se admite mediante la instrucción de Intercambio y se controla mediante el bloque de funciones Message. Los esclavos devuelven un mensaje (respuesta) a las peticiones que se les envían individualmente. La modalidad Modbus RTU no vuelve a formatear el mensaje antes de enviarlo. La modalidad maestro Modbus permite al controlador enviar una petición Modbus a un esclavo y esperar una respuesta. La modalidad maestro Modbus admite Modbus ASCII y Modbus RTU. Cuando se utiliza la modalidad Modbus ASCII. excluyendo los caracteres inicial y final. el protocolo Modbus es un protocolo maestro/esclavo que permite a un único maestro solicitar respuestas de los esclavos o realizar acciones dependiendo de las peticiones. La modalidad esclavo Modbus permite al controlador responder a las peticiones Modbus estándar procedentes de un maestro Modbus. consulte el documento Protocolo de aplicación Modbus que está disponible en http://www. Pueden utilizarse los tres tipos de comunicaciones siguientes con el protocolo ASCII:  Solo transmisión  Transmisión/recepción  Solo recepción Protocolo Modbus Si se trata de una conexión serie. sin embargo. Esclavo Modbus El protocolo Modbus admite dos capas de conexión de datos de los formatos del modelo OSI: ASCII y RTU. El valor de comprobación de la trama Modbus ASCII es un complemento a dos simple de la trama. La trama Modbus ASCII comienza con un carácter inicial (':') y finaliza con dos caracteres finales (CR y LF). No se devuelven respuestas a las peticiones de difusión del maestro. 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.modbus.Objetos de software Protocolo ASCII El protocolo ASCII proporciona al Logic Controller un protocolo de modalidad de caracteres simple que permite transmitir o recibir datos mediante un dispositivo simple. Cada esclavo debe tener una dirección exclusiva.

y %SW65 para los bloques de intercambio EXCH1. Objetos de software Descripción Introducción El Message bloque de funciones gestiona el intercambio de datos. consulte la Guía de programación del controlador. EXCH2 y EXCH3.  Coordinación de varios mensajes: Para garantizar la coordinación cuando se envían varios mensajes. Cuando se detectan errores. el bloque de funciones Message proporciona la información necesaria para determinar el momento en el que ha finalizado el mensaje anterior. %SW64. 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. los códigos se escriben en las palabras de sistema %SW63.  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. respectivamente. La programación del bloque de funciones Message es opcional. Ilustración En esta ilustración se presenta el bloque de funciones Message: EIO0000001477 12/2016 183 . Para obtener más información.

Verifique también que el IOScanner no esté activo en el puerto de comunicación.E) se establece en 0  Se establece un error en cualquier bloque de funciones activo (%READ_VAR. Salidas El bloque de funciones Message contiene las siguientes salidas: Etiqueta Descripción Valor D Comunicación Estado 1: finalizada  Final de la transmisión (si hay transmisión) (%MSGx. verifique que no hay ningún intercambio activo (%MSGx.E)  Carácter incorrecto recibido (velocidad. Por consiguiente. Si intenta utilizar varios bloques de funciones de comunicación.)  Tabla de recepción llena (no actualizada) Estado 0: longitud del mensaje correcta. los bloques de funciones devuelven un código de error.R)  La salida de Comunicación finalizada (%MSGx.Objetos de software Entradas El bloque de funciones Message contiene la siguiente entrada: Etiqueta Descripción Valor R Restablecer entrada Establecido en 1: reinicializa la comunicación: (%MSGx. 184 EIO0000001477 12/2016 .D) se establece en 1  La salida de Error de comunicación detectado (%MSG.D es TRUE) en curso en un puerto de comunicación antes de iniciar un bloque de funciones de comunicación. etc. paridad. NOTA: En un puerto de comunicación sólo puede estar activo un bloque de funciones Message. %WRITE_VAR. conexión establecida En la tabla siguiente se indican los códigos de error que se escriben en las palabras de sistema cuando se detecta un error de comunicación. Por consiguiente.). NOTA: El IOScanner no actualiza las salidas del bloque de funciones %MSG. MSG o instrucciones EXCH a la vez en el mismo puerto de comunicación. el bit %MSG.D es inadecuado para la función del IOScanner. etc.D)  Final de la recepción (carácter final recibido)  Error  Restablecimiento del bloque Estado 0: petición en curso E Error de Estado 1: comunicación  Comando sin definir detectado  Tabla mal configurada (%MSGx. una instrucción EXCH o un bloque de funciones de comunicación a la vez durante un ciclo de tarea maestra. bloque de funciones Message o instrucción EXCH.

) o a una conexión física inestable que causa un empeoramiento de la señal. error del bloque EXCH2 EIO0000001477 12/2016 185 . paridad. 10: no se puede utilizar %KW si se está recibiendo 11: offset de envío mayor que la tabla de envío 12: offset de recepción mayor que la tabla de recepción 13: procesamiento EXCH detenido por el controlador %SW64 Código de Código de error EXCH2: consulte %SW63. Objetos de software Códigos de error 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: Palabra de Función Descripción sistema %SW63 Código de Código de error EXCH1: error del 0: operación correcta bloque 1: el número de bytes que se va a transmitir excede el límite (> 255) EXCH1 2: tabla de envío insuficiente 3: tabla de palabras insuficiente 4: tabla de recepción desbordada 5: tiempo de inactividad transcurrido 6: envío 7: comando incorrecto en la tabla 8: puerto seleccionado no configurado/disponible 9: error de recepción: Este código de error refleja una trama de recepción incorrecta o dañada. Puede utilizarse debido a una configuración incorrecta en los parámetros físicos (por ejemplo. velocidad en baudios. bits de datos. etc.

EXCH3 A continuación. 106: la red perdió la conexión durante el restablecimiento. 108: conexión restablecida por el dispositivo del mismo nivel. 110: intento de conexión rechazado. 107: conexión cancelada por el dispositivo del mismo nivel. (Tenga en cuenta que el código de error 5 no error del es válido y se sustituye por los códigos de error 109 y 122 específicos de bloque Ethernet que se describen a continuación). 109: temporización de conexión transcurrida. IP duplicada) 122: ha finalizado el tiempo de conexión del proceso de recepción tras el envío de los datos 123 . 6-13: consulte %SW63. chip.Objetos de software Palabra de Función Descripción sistema %SW65 Código de 1-4. 120: índice incorrecto (el dispositivo remoto no está indexado en la tabla de configuración) 121: error del sistema (MAC. 105: no se puede alcanzar la red. se indican los códigos de error específicos de Ethernet: 101: dirección IP incorrecta 102: sin conexión TCP 103: no hay sockets disponibles (todos los canales de conexión están ocupados). 186 EIO0000001477 12/2016 .Inicio de Ethernet en curso. 104: no hay red. 111: el host no funciona.

mensaje.D y %MSGx. Objetos de software Configuración Error detectado Si se ha detectado un error al utilizar una instrucción de intercambio.D y %MSGx. Se puede enviar un mensaje nuevo. Uso del bit %MSGx.  La salida del error de comunicación se restablece a 0. Comunicación La salida D se establece en el El Logic Controller está preparado para enviar otro finalizada estado 1. Efecto de una detención del controlador Si se está transmitiendo un mensaje.E. Operaciones En esta tabla se describen las principales fases de las operaciones del bloque de funciones Message: Operación Acción Resultado Restablecer La entrada R se establece en el  Se detiene la transmisión de todos los mensajes que estado 1 (o se activa la se están transmitiendo. los bits %MSGx. byte menos significativo) es mayor que 128 (+80 en formato hexadecimal por FA).  El bit de finalización se establece en 1.  Si el número de bytes definido en el bloque de datos asociado a la instrucción de Intercambio (palabra 1. Error de La salida del error de comunicación se establece en 1: comunicación  Debido a un error de programación de comunicaciones o a un error de transmisión de detectado mensajes. la palabra del sistema %SW63 contiene el código de error para el puerto 1.E se establecen en 1. EIO0000001477 12/2016 187 . y %SW64 contiene el código de error para el puerto 2. el controlador detiene la transferencia y reinicializa las salidas %MSGx. En este caso.  Si existe algún problema al enviar un mensaje Modbus a un dispositivo Modbus. instrucción R). Consulte el capítulo Palabras de sistema de la Guía de programación del logic controller. debe comprobar el cableado y que el dispositivo de destino sea compatible con la comunicación Modbus.D para evitar la pérdida de mensajes cuando se envían varios mensajes. Casos especiales Esta tabla contiene una lista de casos especiales para el funcionamiento de Message: Caso especial Descripción Efecto de un reinicio en frío (%S0=1) o INIT Fuerza la reinicialización de la comunicación. Efecto de un reinicio en caliente (%S1=1) No tiene ningún efecto.

.  La presencia (para protocolo Modbus) y configuración (RS-485) del puerto 2 se comprueban durante el encendido o restablecimiento..  La entrada de restablecimiento (R) puede utilizarse para anular el procesamiento de recepción de la instrucción de Intercambio. .  256 bytes para protocolo ASCII.. La tabla de palabras asociada a la instrucción de Intercambio consta de las tablas de control. 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..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.  Las instrucciones de Intercambio anulan los procesamientos del esclavo Modbus activo. Byte p recibido Byte p+1 recibido 188 EIO0000001477 12/2016 .Objetos de software NOTA: El efecto de INIT es el mismo que %S0=1. Byte n transmitido Byte n+1 transmitido Tabla de recepción Byte 1 recibido Byte 2 recibido ...  Los mensajes múltiples se controlan a través de %MSGx. transmisión y recepción: 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 Byte 1 transmitido Byte 2 transmitido transmisión .  Las instrucciones de Intercambio se configuran con un timeout en caso de protocolo Modbus..  El procesamiento de cualquier mensaje en el puerto 1 se cancela cuando SoMachine Basic está conectado.  El procesamiento de las instrucciones de Intercambio no se repite en caso de error detectado. ..

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. Si el parámetro Offset de emisión no es igual a 0. sobrescrita por el número de caracteres recibidos al final de la recepción. Tabla de control para protocolo ASCII El byte Longitud contiene la longitud de la tabla de transmisión en bytes (250 máx. Objetos de software NOTA: Además de las peticiones a los esclavos individuales. etc. EIO0000001477 12/2016 189 . Por ejemplo.) dentro de la tabla de recepción que se agregará cuando se transmita el paquete. En caso de petición de difusión. el byte Comando debe establecerse en 00. etc.). Para difusión. si este byte contiene 3. Se utiliza para gestionar envíos asociados a valores de byte/palabra en el protocolo Modbus.) dentro de la tabla de transmisión del byte que se ignorará cuando se transmitan los bytes. 2 para el segundo byte. debe ser 0. Por ejemplo. Si el parámetro Offset de emisión es igual a 0. el tercer byte se ignorará. Este parámetro es la longitud en bytes de la tabla de transmisión. El byte Offset de emisión contiene el rango (1 para el primer byte. El byte de comando. 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. este parámetro será igual a la longitud de la trama de transmisión. en caso de que ésta se solicite. sobrescrita por el número de caracteres recibidos al final de la recepción. si este byte contiene 3. y el tercer byte que ha recibido se introduciría en la cuarta ubicación de la tabla. el tercer byte de la tabla se rellenaría con un 0. en caso de que se produzca una petición RTU de Modbus (excepto para difusión). 2 para el segundo byte. el controlador maestro Modbus puede iniciar una petición de difusión destinada a todos los esclavos. Se utiliza para gestionar envíos asociados a valores de byte/palabra en el protocolo Modbus. El byte Offset de recepción contiene el rango (1 para el primer byte. en caso de que ésta se solicite.). mientras que la dirección de esclavo debe establecerse en 0. siempre debe ser igual a 1 (Tx y Rx). haciendo que el cuarto byte de la tabla sea el tercero en transmitirse.

para detener la recepción. y deben ser de tipo %MW. En la modalidad de sólo recepción. En la modalidad de sólo transmisión no se requiere espacio para la recepción de caracteres. En el momento de la ejecución. En la modalidad de transmisión/recepción. 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). Cuando se han transmitido todos los bytes. Cuando se han transmitido todos los bytes. la entrada %MSGx. Se requiere espacio para un máximo de 256 bytes de recepción al final de la tabla de transmisión. Si se selecciona un timeout de valor cero. la tabla de transmisión se completa con la petición antes de ejecutar la instrucción de intercambio (EXCH). el segundo byte contiene el código de función y el resto contiene información asociada a ese código de función. la recepción finaliza cuando termina el timeout. Tablas de transmisión/recepción para protocolo Modbus Al utilizar cualquiera de las dos modalidades (Modbus ASCII o Modbus RTU). %MSGx. pero que no define todas las posibilidades. el controlador lógico determina cuál es la capa de conexión de datos y realiza todas las conversiones necesarias para procesar la transmisión y la respuesta. La recepción finaliza de una de las formas siguientes:  Se detecta un timeout en un carácter o en una trama. la tabla de control se rellena antes de ejecutar la instrucción de intercambio y debe ser del tipo %MW.  Los caracteres de fin de trama se reciben en modalidad ASCII. 190 EIO0000001477 12/2016 . Por consiguiente. No se realizará ninguna validación de los datos que se estén transmitiendo. aparece un código de error detectado (tabla de recepción desbordada) en las palabras de sistema %SW63 y %SW64. las tablas de control y transmisión de tipo %MW se rellenan antes de ejecutar la instrucción de intercambio (EXCH). La recepción finaliza cuando se recibe el último byte utilizado para la trama o se llena la tabla de recepción. el controlador lógico cambia a la modalidad de recepción y está preparado para recibir bytes. las tablas de control y de transmisión se completan antes de ejecutar la instrucción de intercambio (EXCH). En este caso. Se requiere espacio para un máximo de 256 bytes de recepción al final de la tabla de control. Si se configura un timeout diferente de cero. NOTA: Se trata de una aplicación típica.D se establece en 1 y se puede ejecutar una nueva instrucción de intercambio (EXCH). no habrá ningún timeout de recepción. Los caracteres de inicio. el controlador lógico cambia a la modalidad de recepción y está preparado para recibir bytes.  La tabla de recepción está llena. Si el puerto de comunicación está configurado para Modbus ASCII.R deberá estar activada. Las entradas x del byte transmitido contienen los datos del protocolo Modbus (codificación RTU) que se van a transmitir.Objetos de software Tablas de transmisión/recepción para protocolo ASCII En modalidad de sólo transmisión. Una vez que se han enviado todos los bytes. fin y comprobación no se almacenan en las tablas de transmisión/recepción. El controlador lógico pasa inmediatamente a la modalidad de recepción y está preparado para recibir bytes.

NOTA: Se trata de una aplicación típica. Objetos de software Las entradas x de los bytes recibidos contienen los datos del protocolo Modbus (codificación RTU) que se van a recibir. salvo para la verificación de la suma de comprobación. El primer byte contiene la dirección del dispositivo. EIO0000001477 12/2016 191 . pero que no define todas las posibilidades. Si el puerto de comunicación está configurado para Modbus ASCII. el segundo byte contiene el código de función (o código de respuesta) y el resto contiene información asociada a ese código de función. No se realizará ninguna validación de los datos que se estén recibiendo. los caracteres de trama correctos se eliminan de la respuesta.

[%MW3:=0] [%MW2:=16#0106]: Código de comando: [%MW4:=16#0106] 01 hex. sólo el primer mensaje se transmite utilizando el mismo puerto.D %MSG2. Ejemplo de transmisión de dos mensajes sucesivos en el puerto 1: Escalón Instrucción reversible Comentario 0 LD %M142 Escribe en un esclavo.D = 1).Objetos de software Ejemplo de programación Introducción A continuación se muestran ejemplos de programación de un bloque de funciones Message. 192 EIO0000001477 12/2016 .0 – AND %MSG1. El mensaje se transmite si el bloque de funciones Message todavía no está activo (%MSGx.D: detecta si el puerto está ocupado o AND %M0 no y gestiona la coordinación de múltiples [EXCH1 %MW2:8] mensajes en consecuencia. Si se envían varios mensajes en el mismo ciclo. longitud de la transmisión: 06 hex [%MW5:=4] [%MW3:=0]: Sin recepción ni offset de [%MW6:=7] transmisión [%MW4:=16#0106]: Dirección esclavo: 01 hex. código de función: 06 hex (Escritura de registro único) [%MW5:=4]: Dirección de registro [%MW6:=7]: Valor que va a escribirse 1 LD %MSG1. en la dirección 1: valor [%MW2:=16#0106] 7 en el registro 4. R %M0 2 LDR %I0.D [EXCH1 %MW2:8] S %M0 NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. 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.

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. Ejemplo de reinicialización de un intercambio: Escalón Instrucción reversible Comentario 0 BLK %MSG1 – LD %M0 R END_BLK NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. Permite reinicializar un intercambio si se detecta un error.D a 1. EIO0000001477 12/2016 193 .

Existen dos palabras de control (%MW10 y %MW11). 16#0A0D (códigos ASCII. La cantidad de datos a enviar se establece en 4 bytes. AND %MSG2. dos palabras que se usarán para transmitir información (%MW12 y %MW13) y cuatro palabras para recibir datos (de %MW14 a %MW17).0 END NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. En este ejemplo se configura un comando para enviar y recibir datos. Use SoMachine Basic para crear un programa con tres escalones:  En primer lugar.E ST %Q0. Para conseguir más precisión. estos caracteres se transmiten automáticamente o se verifican en la recepción (con %SW63 y %SW64).Objetos de software Ejemplos de ASCII Escritura en aplicación Ejemplo de aplicación ASCII: Escalón Instrucción Comentario 0 LD 1 [%MW10:=16#0104]: Código de comando: 01 hex. como se define en la aplicación. En cualquier caso. pues solo se muestran caracteres de datos. podría añadirse un tratamiento adicional del error utilizando %SW64. cuando se utilizan. Se especifica un valor de ocho palabras para la instrucción EXCH2. Por ejemplo. solo si el puerto está preparado. compruebe el bit de estado asociado a %MSG2 y envíe la instrucción EXCH2. 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.D [EXCH2 %MW10:8] 2 LD %MSG2. si ha configurado el primer carácter de fin en 10 y el segundo carácter de fin en 13. seguido por el carácter de fin de trama definido en la configuración. inicialice las tablas de control y de transmisión que va a utilizar para la instrucción de Intercambio.  A continuación. 194 EIO0000001477 12/2016 . NOTA: Los caracteres de fin definidos en la configuración se envían automáticamente al final de la trama. Los caracteres de inicio y fin no se visualizan en una tabla de animación.  Finalmente. longitud [%MW10:=16#0104] de la transmisión: 04 hex [%MW11:=16#0000] [%MW11:=16#0000]: 0000: nulo [%MW12:=16#4F4B] [%MW12:=16#4F4B]: correcto 1 LD 1 NOTA: La tabla tiene 8 elementos. 0A = LF y 0D = CR) se envía al final de la trama.

El último paso consiste en descargar la aplicación al controlador y ejecutarla. Objetos de software Inicialización de la tabla de animación Ejemplo de inicialización de una tabla de animación en la modalidad online: Dirección Valor Formato %MW10 0104 Hexadecimal %MW11 0000 Hexadecimal %MW12 4F4B Hexadecimal %MW13 0A0D Hexadecimal %MW14 AL ASCII %MW15 OH ASCII %MW16 A ASCII Para visualizar los posibles formatos. Esta información se intercambia con el controlador lógico y se visualiza en una tabla de animación. haga clic con el botón derecho en la casilla Valores de la tabla de animación. EIO0000001477 12/2016 195 . Inicialice una tabla de animación para animar y visualizar las palabras de %MW10 a %MW16.

... 196 EIO0000001477 12/2016 . 7 Valor del primer bit (valor Valor del segundo bit (si N2>1) 00 o 01) expandido a un expandido a un byte byte 8 Valor del tercer bit (si – N1>1) expandido a un byte ... .. 02 para el bit de entrada): Tabla Byte más significativo Byte menos significativo Índice Tabla de control 0 01 06 (longitud de transmisión)(1) (transmisión/recepción) 1 03 (offset de recepción) 00 (offset de transmisión) Tabla de 2 Esclavo en (de 1 a 247) 01 ó 02 (código de petición) transmisión 3 Dirección del primer bit que se leerá en el esclavo 4 N1 = Número de bits que se van a leer Tabla de recepción 5 Esclavo en (de 1 a 247) 01 ó 02 (código de respuesta) (después de la 6 00 (byte añadido por la N2 respuesta) acción offset de = Número de bytes de datos que recepción) se van a leer = [1+(N1-1)/8]. (N2/2)+6 (si N2 es par) Valor del bit N2 (si N1>1) – º (N2/2+1)+6 (si N2 es expandido a un byte impar) (1) Este byte también recibe la longitud de la cadena transmitida tras la respuesta..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. donde el resultado es la parte entera de la división..

. 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. NOTA: El offset de recepción de 3 agrega un byte (valor = 0) en la tercera posición de la tabla de recepción. la palabra asociada en la tabla de transmisión debe contener el valor FF00h. Maestro Modbus: escritura de un bit En esta tabla se representa la petición 05 (escriba un solo bit: salida o memoria): Tabla Byte más significativo Byte menos significativo Índice 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. Esto permite un buen posicionamiento en esta tabla del número de bytes leídos y de los valores de las palabras leídas. EIO0000001477 12/2016 197 .... y 0 para asignar el valor 0 a un bit. .. (2) Para asignar el valor 1 a un bit. N+6 Palabra N leída (si N>2) (1) Este byte también recibe la longitud de la cadena transmitida tras la respuesta. 04 para la palabra de entrada): Tabla Byte más significativo Byte menos significativo Índice 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 5 Esclavo en (de 1 a 247) 03 ó 04 (código de respuesta) (después de la 6 00 (byte añadido por la acción 2*N (número de bytes leídos) respuesta) offset de recepción) 7 Primera palabra leída 8 Segunda palabra leída (si N>1) ..

198 EIO0000001477 12/2016 .  La trama de respuesta es la misma que la de esta petición (en un caso normal).Objetos de software Tabla Byte más significativo Byte menos significativo Índice Tabla de transmisión 2 Esclavo en (de 1 a 247) o 0 en 05 (código de petición) caso de difusión 3 Valor que se va a escribir para el MSB de la palabra indexada 4. (2) Para asignar el valor 1 a un bit. 4 Valor de bit que se va a escribir en el esclavo (16#0000 = Falso y 16#FF00 = Verdadero) Tabla de recepción 5 Esclavo en (de 1 a 247) 05 (código de respuesta) (después de la 6 Dirección del bit escrito respuesta) 7 Valor escrito (1) Este byte también recibe la longitud de la cadena transmitida tras la respuesta.  La trama de respuesta es la misma que la de esta petición (en un caso normal). y 0 para asignar el valor 0 a un bit. 0xFF o 0x00(2)... la palabra asociada en la tabla de transmisión debe contener el valor FF00h. NOTA:  Esta petición no necesita utilizar un offset. NOTA:  Esta petición no necesita utilizar un offset. Maestro Modbus: escritura de palabra En esta tabla se representa la petición 06 (escriba un solo bit: salida o memoria): Tabla Byte más significativo Byte menos significativo Índice 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 06 (código de petición) caso de difusió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 5 Esclavo en (de 1 a 247) 06 (código de respuesta) (después de la 6 Dirección de la palabra escrita respuesta) 7 Valor escrito (1) Este byte también recibe la longitud de la cadena transmitida tras la respuesta.

. . (N2/2)+5 (si N2 es Valor del byte N2o par) (N2/2+1)+5 (si N2 es impar) Tabla de recepción – Esclavo en (de 1 a 247) 15 (código de respuesta) (después de la – Dirección del primer bit escrito respuesta) – Números de los bits escritos (= N1) NOTA: El offset de transmisión = 7 suprime el séptimo byte de la trama enviada. N2 efecto de offset) = 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 .. Objetos de software Maestro Modbus: escritura de N bits En esta tabla se representa la petición 15 (escriba N bits: salida o memoria): Tabla Byte más significativo Byte menos significativo Índice Tabla de control 0 01 8 + número de bytes (transmisión) (transmisión/recepción) 1 00 (offset de recepción) 07 (offset de transmisión) Tabla de 2 Esclavo en (de 1 a 247) o 15 (código de petición) transmisión 0 en caso de difusión 3 Dirección del primer bit que se va a escribir 4 N1 = Número de bits que se van a escribir 5 00 (byte no enviado.... Permite también una correspondencia correcta entre los valores de las palabras en la tabla de transmisión.. EIO0000001477 12/2016 199 .

sin uso 200 EIO0000001477 12/2016 .. Petición Modbus: lectura de identificación de dispositivo En esta tabla se representa la petición 43 (identificación del dispositivo de lectura): Escalón Instrucción Comentario 0 LD 1 [%MW800:=16#0106]: encabezado Modbus estándar [%MW800:=16#0106] [%MW801:=16#0000]: ningún offset de envío y recepción [%MW801:=16#0000] [%MW802:=16#032B]: dirección de esclavo. código funcional [%MW802:=16#032B] [%MW803:=16#0E01]: tipo MEI. efecto de 2*N = Número de bytes que se offset) 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 N+6 Esclavo en (de 1 a 247) 16 (código de respuesta) (después de la N+7 Dirección de la primera palabra escrita respuesta) N+8 Número de palabras escritas (= N) 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.. código de identificación de [%MW803:=16#0E01] lectura de dispositivo [%MW804:=16#0000] [%MW804:=16#0000]: ID de objeto.Objetos de software Maestro Modbus: escritura de N palabras En esta tabla se representa la petición 16: Tabla Byte más significativo Byte menos significativo Índice 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) Tabla de transmisión 2 Esclavo en (de 1 a 247) o 0 en 16 (código de petición) caso de difusión 3 Dirección de la primera palabra que se va a escribir 4 N = Número de palabras que se van a escribir 5 00 (byte no enviado. ..

Esta modalidad se denomina modalidad eco o espejo.0 END Programa del esclavo: Escalón Instrucción Comentario 0 LD 1 – [%MW0:=16#6566] [%MW1:=16#6768] [%MW2:=16#6970] [%MW3:=16#7172] END NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente.D [EXCH2 %MW0:11] 2 LD %MSG2. Objetos de software Petición Modbus: diagnóstico En esta tabla se representa la petición 8 (diagnóstico): Escalón Instrucción Comentario 0 LD 1 [%MW1000:=16#0106]: encabezado Modbus estándar [%MW1000:=16#0106] [%MW1001:=16#0000]: ningún offset de envío y recepción [%MW1001:=16#0000] [%MW1002:=16#0308]: dirección de esclavo. función 3 (lectura de varias [%MW3:=16#0000] palabras) [%MW4:=16#0004] [%MW3:=16#0000]: dirección de la primera palabra que se va a leer en el esclavo: a dirección 0 [%MW4:=16#0004]: número de palabras que se van a leer: 4 palabras (%MW0 a %MW3) 1 LD 1 – AND %MSG2.E – ST %Q0. offset de envío = 0 [%MW1:=16#0300] %MW2 a %MW4: transmisión [%MW2:=16#0203] [%MW2:=16#0203]: esclavo 2. código funcional [%MW1002:=16#0308] [%MW1003:=16#0000]: código de subfunción [%MW1003:=16#0000] [%MW1004:=16#1234]: cualquier dato [%MW1004:=16#1234] La respuesta de esclavo será una copia de la petición. EIO0000001477 12/2016 201 . Ejemplo 1: Escritura de la aplicación Modbus Programa maestro: Escalón Instrucción Coment ario 0 LD 1 [%MW0:=16#0106]: longitud de transmisión = 6 [%MW0:=16#0106] [%MW1:=16#0300]: offset de recepción = 3.

abra una tabla de animación en el maestro.Objetos de software Con ayuda de SoMachine Basic. Por último. la aplicación comprueba el bit de comunicación asociado a %MSG2. Este offset se utiliza por comodidad. Para el esclavo. las palabras leídas del esclavo (comenzando por %MW7) están correctamente alineadas con los límites de palabras del maestro. de forma que se mantengan correctamente dentro de los límites de palabras. NOTA: Observe el uso del offset de recepción establecido en %MW1 del maestro Modbus. De este modo. 202 EIO0000001477 12/2016 . las palabras se alinean 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. cada palabra de datos se dividiría en dos palabras en el bloque de Intercambio. El offset de 3 añadirá un byte (valor = 0) en la tercera posición del área de recepción de la tabla. se podría añadir una comprobación adicional de errores mediante %SW64 para una mayor precisión. Antes de ejecutar la instrucción EXCH2. escriba algunas palabras de memoria para un conjunto de valores conocidos. cree un programa de aplicación para el maestro y el esclavo. En el maestro. 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. Sin este offset. 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. Inicialización de la tabla de animación en la modalidad online correspondiente a la parte de la tabla de recepción: Dirección Valor Formato %MW5 0203 Hexadecimal %MW6 0008 Hexadecimal %MW7 6566 Hexadecimal %MW8 6768 Hexadecimal %MW9 6970 Hexadecimal %MW10 7172 Hexadecimal Después de descargar y configurar los controladores lógicos para que se ejecuten. En este ejemplo.

Objetos de software

Ejemplo 2: Escritura de la aplicación Modbus
Programa maestro:

Escalón Instrucción Comentario
0 LD 1 [%MW0:=16#010C]: longitud de la tabla de transmisión: 0C hex = 12
[%MW0:=16#010C] dec, de %MW2 a %MW7
[%MW1:=16#0007] [%MW1:=16#0007]
[%MW2:=16#0210]
[%MW2:=16#0210]: dirección del esclavo 2, escritura de palabras con
[%MW3:=16#0010]
el código funcional 10h
[%MW4:=16#0002]
[%MW3:=16#0010]: de la dirección 16 en el esclavo
[%MW5:=16#0004]
[%MW6:=16#6566] [%MW4:=16#0002]: escritura de 2 palabras
[%MW7:=16#6768] [%MW5:=16#0004]: número de bytes que se van a escribir
[%MW6:=16#6566]: valor de la primera palabra
[%MW7:=16#6768]: valor de la segunda palabra
1 LD 1 –
AND %MSG2.D
[EXCH2 %MW0:12]
2 LD %MSG2.E –
ST %Q0.0
END

Programa del esclavo:

Escalón Instrucción Comentario
0 LD 1 –
[%MW18:=16#FFFF]
END

NOTA: Consulte el procedimiento de reversibilidad (véase página 18) 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.

EIO0000001477 12/2016 203

Objetos de software

Antes de ejecutar la instrucción EXCH2, la aplicación comprueba el bit de comunicación asociado
a %MSG2. Por último, el estado de error de %MSG2 se detecta y almacena en el primer bit de salida
de la E/S del controlador de base local. Igualmente, se podría añadir una comprobación adicional
de errores detectados mediante %SW64 para una mayor precisión.
Inicialización de la tabla de animación en el maestro:

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

Inicialización de la tabla de animación en el esclavo:

Dirección Valor Formato
%MW16 6566 Hexadecimal
%MW17 6768 Hexadecimal

Después de descargar y configurar todos los controladores lógicos para que se ejecuten, abra una
tabla de animación en el controlador esclavo. Los dos valores de %MW16 y %MW17 se escriben en
el esclavo.
En el maestro, se puede utilizar una tabla de animación para examinar la parte de la tabla de
recepción de los datos de intercambio. Estos datos indican la dirección del esclavo, el código de
respuesta, la primera palabra escrita y el número de palabras escritas comenzando por %MW8 en
el ejemplo anterior.

204 EIO0000001477 12/2016

Objetos de software

Sección 6.5
Registro LIFO/FIFO (%R)

Registro LIFO/FIFO (%R)

Uso de bloques de funciones del registro LIFO/FIFO
En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques
de funciones LIFO/FIFO Register.

Contenido de esta sección
Esta sección contiene los siguientes apartados:
Apartado Página
Descripción 206
Configuración 208
Funcionamiento del registro LIFO 210
Funcionamiento del registro FIFO 211
Ejemplo de programación 212

EIO0000001477 12/2016 205

Objetos de software

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 En el estado 1, inicializa el LIFO/FIFO Register.
entrada (o
instrucción)
I Entrada (o Con cada flanco ascendente almacena el contenido de la palabra
instrucción) de asociada %Ri.I en el LIFO/FIFO Register.
almacenamiento
O Entrada (o Con cada flanco ascendente, carga una palabra de datos del
instrucción) de LIFO/FIFO Register en la palabra asociada %Ri.O.
recuperación

206 EIO0000001477 12/2016

Objetos de software

Salidas
El bloque de funciones LIFO/FIFO Register contiene las siguientes salidas:

Etiqueta Descripción Valor
E Salida vacía El bit asociado %Ri.E indica que el LIFO/FIFO Register está vacío.
(%Ri.E) El valor de %Ri.E puede probarse, por ejemplo, en una tabla de
animación o con una instrucción.
F Salida llena El bit asociado %Ri.F indica que el LIFO/FIFO Register está lleno.
(%Ri.F) El valor de %Ri.F puede probarse, por ejemplo, en una tabla de
animación o con una instrucción.

EIO0000001477 12/2016 207

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 159) y lea la descripción de las modalidades de asignación de memoria en la Guía
de funcionamiento de SoMachine Basic.
El bloque de funciones LIFO/FIFO Register contiene los parámetros siguientes:

Parámetro Descripción Valor ¿Editable en
modalidad
online?
Utilizado Dirección utilizada Si está seleccionada, esta dirección se está utilizando No
actualmente en un programa.
Dirección Dirección de objeto Un programa puede contener sólo un número limitado de No
LIFO/FIFO Register 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 No
información, consulte Definición y uso de los símbolos en
la Guía de funcionamiento de SoMachine Basic.
Tipo Tipo LIFO/FIFO FIFO (cola) o LIFO (pila). Sí
Register
Comentario Comentario Se puede asociar un comentario con este objeto. No

Objetos
El bloque de funciones LIFO/FIFO Register contiene los objetos siguientes:

Objeto Descripción Valor
%Ri.I LIFO/FIFO Register Se puede leer, verificar y escribir.
palabra de entrada Puede modificarse en una tabla de animación.
%Ri.O LIFO/FIFO Register Se puede leer, verificar y escribir.
palabra de salida 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.

208 EIO0000001477 12/2016

Objetos de software Casos especiales En esta tabla hay una lista de casos especiales para programar el bloque de funciones LIFO/FIFO Register: Caso especial Descripción Efecto de un reinicio en frío (%S0=1) o INIT Inicializa el contenido de LIFO/FIFO Register. Efecto de un reinicio en caliente (%S1=1) o una No tiene ningún efecto en el valor actual de LIFO/FIFO detención del controlador Register ni en el estado de sus bits de salida. EIO0000001477 12/2016 209 . NOTA: El efecto de INIT es el mismo que %S0=1. El bit de salida %Ri.E asociado a la salida E se establece en 1.

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). Cuando el LIFO/FIFO Register está vacío (salida E=1).O no se modifica y conserva su valor.Objetos de software Funcionamiento del registro LIFO Introducción En la operación LIFO (Last In. la palabra de datos superior (la última palabra introducida) se carga en la palabra %Ri. b). no es posible continuar el almacenamiento. 210 EIO0000001477 12/2016 . a). 3 Resetear: – La pila se puede restablecer en cualquier momento (estado 1 en la entrada R o activación de la instrucción R).E =1). 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). La pila está vacía después de un reseteado (%Ri. Cuando la pila está llena (salida F=1). First Out).O (fig. no es posible continuar la recuperación.I se almacena en la parte superior de la pila (fig. el contenido de la palabra de entrada %Ri. el último elemento de datos introducido es el primero que se recupera. La palabra de salida %Ri.

E=1).O no se modifica y conserva su valor. el primer elemento de datos introducido es el primero que se recupera. Objetos de software Funcionamiento del registro FIFO Introducción En la operación FIFO (First In. 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). La cola está vacía después de un reseteado (%Ri. Cuando el LIFO/FIFO Register está vacío (salida E=1). Cuando la cola está llena (salida F=1). EIO0000001477 12/2016 211 .O y los contenidos del LIFO/FIFO Register se desplazan una posición hacia abajo en la cola (fig. First Out). no es posible continuar la recuperación. el contenido de la palabra de entrada %Ri. La palabra de salida %Ri. no es posible continuar el almacenamiento. 2 Recuperación: Cuando se recibe una petición de recuperación (flanco ascendente en la entrada O o activación de la instrucción O).I se almacena en la parte superior de la pila (fig. 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 palabra de datos inferior en la cola se carga en la palabra %Ri. a). b).

2 ANDN %R2.2) si LIFO/FIFO Register %R2 no está completo (%R2.3 [%MW20:=%R2.F [%R2.3.O] 3 LD %I0.E O END_BLK 1 LD %I0.2 ANDN %R2.Objetos de software Ejemplo de programación Introducción El siguiente ejemplo de programación muestra el contenido de una palabra de memoria (%MW34) que se carga en un LIFO/FIFO Register (%R2.E O %R2 2 LD %I0.F [%R2.I:=%MW34] ST %M1 En este ejemplo se muestra el mismo bloque de funciones LIFO/FIFO Register con instrucciones no reversibles: Escalón Instrucción no reversible 0 LD %M1 I %R2 1 LD %I0.O se carga en %MW20 si el registro no está vacío (%R2.F = 0).3 ANDN %R2. La petición de almacena- miento en el LIFO/FIFO Register se realiza mediante %M1.E = 0).O] 2 LD %I0.3 [%MW20:=%R2. Programación Este ejemplo es un bloque de funciones LIFO/FIFO Register con instrucciones reversibles: Escalón Instrucción reversible 0 BLK %R2 LD %M1 I LD %I0.3 ANDN %R2. La petición de recuperación se confirma mediante la entrada %I0. y %R2.I) al recibir una petición de almacenamiento (%I0.I:=%MW34] ST %M1 212 EIO0000001477 12/2016 .

Objetos de software NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. EIO0000001477 12/2016 213 .

6 Drums (%DR) Drums (%DR) Uso de los bloques de funciones de Drum En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones Drum. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado Página Descripción 215 Configuración 216 Ejemplo de programación 219 214 EIO0000001477 12/2016 .Objetos de software Sección 6.

Paso Aparece en la modalidad offline cuando se crea un bloque.F. Ilustración En esta figura se muestra el bloque de funciones Drum en modalidad offline. En el caso de un bloque de funciones Drum. estos puntos superiores se simbolizan mediante el estado 1 para cada paso y se asignan a bits de salida %Qi. EIO0000001477 12/2016 215 .F) Indica que el paso actual equivale al último paso definido. En cada paso. hace que el Drum avance un paso y actualiza los bits de control.j o a bits de memoria %Mi. muestra el número de paso actual. Se puede probar el bit asociado %DRi. Salidas El bloque de funciones Drum contiene la siguiente salida: Etiqueta Descripción Valor F Salida (%DRi. Pasos Muestra el número total de pasos configurados en el Asistente Drum. el punto superior de una leva proporciona un comando. Objetos de software Descripción Introducción El bloque de funciones Drum funciona según un principio similar a un secuenciador Drum electromecánico. Entradas El bloque de funciones Drum contiene las siguientes entradas: Etiqueta Descripción Valor R Para volver al paso 0 (o instrucción) En el estado 1. En la modalidad online. ajusta el Drum al paso 0. que es ejecutado por el controlador. que cambia el paso según los eventos externos. U Entrada (o instrucción) de avance En un flanco ascendente.

Configuración Asistente Drum Haga clic para mostrar el Asistente Drum Sí (todos los (véase página 217). Palabra que se puede leer y escribir. Cuando se escribe. Símbolo Símbolo El símbolo asociado con este objeto. Para No obtener más información. consulte Definición y uso de los símbolos en la Guía de funcionamiento de SoMachine Basic. El bloque de funciones Drum contiene los parámetros siguientes: Parámetro Descripción Rango ¿Editable en modalidad online? Utilizado Dirección utilizada Si está seleccionada. el efecto se produce en la siguiente ejecución del bloque de funciones. siga el procedimiento de configuración de un bloque de funciones (véase página 159) y lea la descripción de las modalidades de asignación de memoria en la Guía de funcionamiento de SoMachine Basic. Consulte la Guía de programación de su controlador para determinar el número máximo de objetos Drum. El valor escrito debe ser un valor inmediato decimal. esta dirección se está No utilizando actualmente en un programa. Dirección Dirección de objeto Un programa puede contener sólo un número No Drum limitado de objetos Drum.Objetos de software Configuración Parámetros Para configurar los parámetros.S<=7. %DRi. Se puede modificar en una tabla de animación o en la modalidad online. Objetos El bloque de funciones Drum contiene el siguiente objeto: Objeto Descripción Rango %DRi. parámetros de la ventana Asistente Drum) Comentario Comentario Se puede asociar un comentario con este No objeto.F Completo Consulte la tabla de salidas (véase página 215). 216 EIO0000001477 12/2016 .S Número del paso actual 0<=%DRi.

 Una lista de bits de control está asociada con una salida configurada (%Qi. En el transcurso del paso actual. NOTA: La configuración también se puede llevar a cabo mediante bits de memoria (%Mi). Asistente Drum Utilice el Asistente Drum para configurar el bloque de funciones Drum.j) o una palabra de memoria (%Mi). así como las salidas o los bits de memoria asociados a cada paso: del Bit0 al Bit15 y. EIO0000001477 12/2016 217 . Objetos de software Funcionamiento El bloque de funciones Drum consta de:  Una matriz de datos constantes (las levas) organizada en 8 pasos (de 0 a 7) y 16 bits (estado del paso) organizada en columnas numeradas de 0 a 15. haga clic en OK. los bits de control adquieren los estados binarios definidos para este paso. a continuación. Configure el campo Número de pasos con un valor entre 1 y 8.

(%S0=1) Efecto de un reinicio en Actualiza los bits de control después del paso actual. Actualización de los bits de Solo ocurre cuando se produce un cambio de paso o un reinicio en frío o en control caliente. caliente (%S1=1) Efecto de un salto del El hecho de que el Drum ya no se explore significa que los bits de control programa conservan su estado más reciente. 218 EIO0000001477 12/2016 .Objetos de software Casos especiales Esta tabla contiene una lista de casos especiales para el funcionamiento de Drum: Caso especial Descripción Efectos de un reinicio en frío Restablece el Drum en el paso 0 (actualización de los bits de control).

Objetos de software Ejemplo de programación Introducción A continuación se muestra un ejemplo de programación de un Drum que está configurado de modo que ninguno de los controles está establecido en el paso 0 y los controles están establecidos para los pasos 1 a 6 de las salidas %Q0.1 se establece en 1.0 es alto.7 END_BLK NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. Las primeras 6 salidas de %Q0.S = 0) Programación Este ejemplo es un bloque de funciones Programa del bloque de funciones de Drum: Escalón Instrucción 0 BLK %DR1 LD %I0.0 a %Q0.5 respectivamente (consulte la Configuración (véase página 221)).1 U OUT_BLK LD F ST %Q0.5 se activan sucesivamente cada vez que la entrada %I0. Cuando el valor de la entrada %I0. EIO0000001477 12/2016 219 .0 a %Q0. los siguientes valores se restablecen a 0:  Salida de Drum F (%DRi.F = 0)  Número del paso actual (%DRi.0 R LD %I0.

(3) Cuando se alcanza el último paso. (2) Cuando se actualiza el paso actual.Objetos de software Diagrama de tiempos En este diagrama se muestra el funcionamiento de Drum: (1) En un flanco ascendente en la entrada U. (4) Cuando el último paso está activo. la salida F se establece en 1. se aumenta el paso actual. 220 EIO0000001477 12/2016 . un flanco ascendente en la entrada U restablece el paso actual a 0. se actualizan las salidas.

4 5 %Q0.5 EIO0000001477 12/2016 221 . Objetos de software (5) El valor actual (flanco ascendente) %DR0.2 3 %Q0.1 2 %Q0.S = 4 (7) El valor escrito por el usuario se actualiza en el siguiente tiempo de ejecución.R = 1 se establece en 0. 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: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Paso 0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Paso 1: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Paso 2: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 Paso 3: 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 Paso 4: 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 Paso 5: 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0  Asignación de los bits de control: En esta tabla se muestran las salidas asociadas de los bits de control: Bit Salida asociada 0 Salida no asociada 1 %Q0. (6) El usuario escribe el valor del número de paso: %DR0.3 4 %Q0.

Objetos de software Sección 6.7 Registro de bits de desplazamiento (%SBR) Registro de bits de desplazamiento (%SBR) Uso de los bloques de funciones del registro de bits de desplazamiento En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones Shift Bit Register. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado Página Descripción 223 Configuración 224 Ejemplo de programación 226 222 EIO0000001477 12/2016 .

desplaza un bit de registro hacia la (o instrucción) izquierda izquierda.j se establecen en 0. por ejemplo 16#7 Entradas El bloque de funciones Shift Bit Register contiene las siguientes entradas: Etiqueta Descripción Valor R Restablecer entrada (o Cuando el parámetro de función R es 1. 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). los bits de registro de instrucción) 0 a 15 %SBRi. por ejemplo 7  Valor binario. CD Desplazar hacia la entrada En un flanco ascendente. por ejemplo 111  Valor hexadecimal. desplaza un bit de registro hacia la (o instrucción) derecha derecha. CU Desplazar hacia la entrada En un flanco ascendente. Ilustración En esta ilustración se muestra el bloque de funciones Shift Bit Register: El valor actual del Shift Bit Register se muestra en el centro del bloque de funciones:  Valor decimal. EIO0000001477 12/2016 223 .

Dirección Dirección de objeto de Shift Un programa solo puede contener un número limitado de Bit Register objetos de Shift Bit Register. 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.Objetos de software Configuración Parámetros Para configurar los parámetros. esta dirección se está utilizando actualmente en un programa. Para obtener más información. El bloque de funciones Shift Bit Register contiene los siguientes parámetros: Parámetro Descripción Valor Utilizado Dirección utilizada Si está seleccionada.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. siga el procedimiento de configuración de un bloque de funciones (véase página 159) y lea la descripción de las modalidades de asignación de memoria en la Guía de funcionamiento de SoMachine Basic. Símbolo Símbolo El símbolo asociado con este objeto. 224 EIO0000001477 12/2016 . Consulte la guía de programación de la plataforma de hardware para saber cuál es el número máximo de registros. Objetos El bloque de funciones Shift Bit Register contiene los siguientes objetos: Objeto Descripción Valor %SBRi Número de registro De 0 a 7 Puede modificarse en una tabla de animación. %SBRi.

Casos especiales En esta tabla hay una lista de casos especiales para programar el bloque de funciones Shift Bit Register: Caso especial Descripción Efecto de un reinicio en frío (%S0=1) Establece todos los bits de la palabra de registro en 0. Si un registro de 16 bits no es adecuado. se puede utilizar el programa para mostrar en cascada diversos registros. El bit 0 se pierde. Efecto de un reinicio en caliente (%S1=1) No tiene efecto sobre los bits de la palabra de registro. Objetos de software Funcionamiento En la siguiente ilustración se muestra un modelo de bit antes y después de una operación de desplazamiento: Esto también es aplicable para una petición de desplazamiento de un bit a la derecha (bit 15 a bit 0) mediante la instrucción CD. EIO0000001477 12/2016 225 .

0 NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente.15 ST %SBR0. 226 EIO0000001477 12/2016 .0 En instrucciones no reversibles: Escalón Instrucción no reversible 0 LD %S6 CU %SBR0 1 LD %SBR0. Programación En este ejemplo.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).15 ST %SBR0. un bit se desplaza hacia la izquierda cada segundo mientras que el bit 0 asume el estado al bit 15. En instrucciones reversibles: Escalón Instrucción reversible 0 BLK %SBR0 LD %S6 CU END_BLK 1 LD %SBR0.

8 Contador de pasos (%SC) Contador de pasos (%SC) Uso de los bloques de funciones del contador de pasos En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones Step Counter. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado Página Descripción 228 Configuración 229 Ejemplo de programación 230 EIO0000001477 12/2016 227 . Objetos de software Sección 6.

Solo se puede activar un paso de un Step Counter cada vez. El desplazamiento de un paso a otro depende de eventos internos o externos. el bit asociado (el bit de Step Counter %SCi. Cada vez que un paso esté activo. disminuye un paso el Step instrucción) Counter. 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 Cuando el parámetro de la función R es 1. 228 EIO0000001477 12/2016 . se restablece el instrucción) Step Counter.j) se establece en 1. aumenta un paso el Step instrucción) Counter.Objetos de software Descripción Introducción Un bloque de funciones Step Counter permite realizar una serie de pasos a los que se pueden asignar acciones. CD Disminuir entrada (o En un flanco ascendente. CU Aumentar entrada (o En un flanco ascendente.

Caso especial Esta tabla contiene una lista de casos especiales de funcionamiento del bloque de funciones Step Counter: Caso especial Descripción Efecto de un reinicio en frío (%S0=1) Inicializa el Step Counter. consulte Definición y uso de los símbolos en la Guía de funcionamiento de SoMachine Basic. Objetos El bloque de funciones Step Counter contiene el siguiente objeto: Objeto Descripción Valor %SCi. Efecto de un reinicio en caliente (%S1=1) No tiene ningún efecto sobre el Step Counter. Dirección Dirección de objetos Un programa puede contener solamente un número limitado Step Counter 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. esta dirección se está utilizando actualmente en un programa. Comentario Comentario Se puede asociar un comentario con este objeto. Puede modificarse en una tabla de animación. Objetos de software Configuración Parámetros Para configurar los parámetros. Símbolo Símbolo El símbolo asociado con este objeto. siga el procedimiento de configuración de un bloque de funciones (véase página 159) y lea la descripción de las modalidades de asignación de memoria en la Guía de funcionamiento de SoMachine Basic.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. EIO0000001477 12/2016 229 . Para obtener más información. El bloque de funciones Step Counter contiene los parámetros siguientes: Parámetro Descripción Valor Utilizado Dirección utilizada Si está seleccionada.

3.  El Step Counter 0 se restablece a 0 mediante la entrada %I0.1 2 LD %SC0.1 CD %SC0 230 EIO0000001477 12/2016 .1 ST %Q0.2 y el paso 2 controla la salida %Q0.3 R %SC0 1 LD %I0.3 o cuando llega al paso 3.  El Step Counter 0 se reduce mediante la entrada %I0.3 OR %I0.1.  El paso 0 controla la salida %Q0.2 3 LD %SC0.Objetos de software Ejemplo de programación Introducción En este ejemplo se muestra un bloque de funciones Step Counter. el paso 1 controla la salida %Q0.3 OR %I0.1.0 ST %Q0.  El Step Counter 0 se aumenta mediante la entrada %I0.1 CD END_BLK 1 LD %SC0.2 ST %Q0. Programación Este ejemplo es un bloque de funciones Step Counter con instrucciones reversibles: Escalón Instrucción reversible 0 BLK %SC0 LD %SC0.3 R LD %I0.3 En este ejemplo se muestra un bloque de funciones Step Counter con instrucciones no reversibles: Escalón Instrucción no reversible 0 LD %SC0.2.2 CU LD %I0.2 CU %SC0 2 LD %I0.

Objetos de software Escalón Instrucción no reversible 3 LD %SC0. (5) Cuando Reset está activo. el paso se reduce y se actualizan las salidas.1 4 LD %SC0.0 se establece en 1.2 5 LD %SC0. Diagrama de tiempos En este diagrama se muestra el funcionamiento del bloque de funciones Step Counter: (1) El paso 0 está activo. el paso actual se establece en 0 y la entrada de restablecimiento se establece en 0 tras un ciclo de CPU. el paso se incrementa y se actualizan las salidas.3 NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. (7) En el flanco ascendente de la entrada CD. (3) El paso se incrementa y se actualizan las salidas.2 ST %Q0. (6) El paso actual se incrementa en el flanco ascendente de la entrada CU. de modo que la entrada Reset se encuentra activa tras un ciclo de CPU. (4) El paso 3 está activo.0 ST %Q0. (2) En el flanco ascendente de la entrada CU. EIO0000001477 12/2016 231 .1 ST %Q0. de modo que %SC0.

Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado Página Descripción 233 Programación y configuración 235 232 EIO0000001477 12/2016 .Objetos de software Sección 6.9 Fechadores (%SCH) Fechadores (%SCH) Uso de los fechadores Esta sección proporciona descripciones y directrices de programación para utilizar bloques de funciones de Schedule blocks.

Los Schedule blocks sólo se configuran en SoMachine Basic. Mes de inicio El mes para iniciar los Schedule Schedule blocks. blocks. Bit de salida Bit de salida Los Schedule blocks activan la asignación de salida: %Mi o %Qj. Consulte la guía de la plataforma de hardware para saber cuál es el número máximo de Schedule blocks.... no se introducen en el escalón de un programa del mismo modo que otros bloques de función. Día de inicio Día del mes para iniciar los Schedule 1. está blocks seleccionado está configurado configurado para ser utilizado. Dirección Dirección de objeto Schedule Un programa puede contener sólo un número blocks limitado de objetos Schedule blocks.31 finalización Schedule blocks. Los Schedule blocks presentan las siguientes funciones: Parámetro Descripción Valor Utilizado Dirección utilizada Si está seleccionada. siga el procedimiento Configuración de un bloque de funciones (véase página 159) y consulte la descripción de Modalidades de asignación de memoria (véase SoMachine Basic. Objetos de software Descripción Introducción Los Schedule blocks se utilizan para controlar las acciones en un mes. De lo contrario. Parámetros Para configurar los parámetros. EIO0000001477 12/2016 233 . se utiliza. Día de Día del mes para finalizar los 1.. NOTA: Compruebe el bit del sistema %S51 y la palabra del sistema %SW118 para confirmar que la opción Reloj de tiempo real (RTC) está instalada. día u hora predefinidos. Guía de funcionamiento).k. Configurado Indica si el número de Schedule Si se selecciona la casilla de verificación.31 blocks. no para ser utilizado. 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. La opción RTC también es necesaria para utilizar Schedule blocks. esta dirección se está utilizando actualmente en un programa.

%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.diciembre finalización blocks.23 finalización minutos para finalizar los Schedule Minuto: 0.. 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 Schedule blocks.. 234 EIO0000001477 12/2016 . las horas y los Hora: 0. se asignará finalmente el OR de los resultados de cada uno de los bloques a este objeto (es posible tener varios Schedule blocks para la misma salida).. Asignación de Schedule blocks en %SW114: De forma predeterminada (o después de un reinicio en frío). Como resultado. Hora de inicio El momento del día.... está Martes el día de la semana para activar los configurado para ser utilizado. se utiliza. Por ejemplo.59 blocks. los fechadores %SCH0 y %SCH1 están ambos asignados a la salida %Q0... Salida de los fechadores Si se asigna la misma salida (%Mi o %Qj.59 blocks. Lunes Casillas de verificación que identifican Si se selecciona la casilla de verificación. las horas y los Hora: 0.. De lo contrario. la salida está establecida desde las 12:00 h hasta las 13:00 en lunes y martes.23 minutos para iniciar los Schedule Minuto: 0.k) a varios bloques.0. no Schedule blocks.Objetos de software Parámetro Descripción Valor Mes de El mes para finalizar los Schedule Enero. todos los bits de esta palabra de sistema se establecen en 1. Hora de El momento del día. Miércoles Jueves Viernes Sábado Domingo Comentario Comentario Se puede asociar un comentario con este objeto. La utilización de estos bits por parte del programa es opcional..

ST %SW114:X6 EIO0000001477 12/2016 235 . los Schedule blocks pueden deshabilitarse mediante un conmutador o un detector de humedad cableado en la entrada %I0.1 En este ejemplo. se valida %SCH6.2 Activar salida %Q0. Ejemplo de programación En esta tabla se muestran los parámetros de ejemplo de un programa de vaporización para un mes veraniego: Parámetro Valor Descripción ¿Editable en modalidad online? Dirección Reloj de tiempo real 6 Schedule blocks número 6 No Configurado Casilla seleccionada Casilla seleccionada para configurar los No Schedule blocks número 6.1: Escalón Instrucción Comentario 0 LD %I0. Bit de salida %Q0.2 Sí Día de inicio 21 Inicia la actividad el día 21 de junio Sí Mes de inicio Junio Inicia la actividad en junio Sí Hora de inicio 21 Inicia la actividad a las 21:00 Sí Día de finalización 21 Detiene la actividad el día 21 de septiembre Sí Mes de finalización Septiembre Detiene la actividad en septiembre Sí Hora de 22 Detiene la actividad a las 22:00 Sí finalización Lunes Casilla seleccionada Realiza la actividad el lunes Sí Martes Casilla no seleccionada Sin actividad Sí Miércoles Casilla seleccionada Realiza la actividad el miércoles Sí Jueves Casilla no seleccionada Sin actividad Sí Viernes Casilla seleccionada Realiza la actividad el viernes Sí Sábado Casilla no seleccionada Sin actividad Sí Domingo Casilla no seleccionada Sin actividad Sí Con este programa. día u hora predefinidos. Objetos de software Programación y configuración Introducción Los Schedule blocks se utilizan para controlar las acciones en un mes.

Diagrama de tiempos Este diagrama de tiempos muestra la activación de la salida %Q0.2: 236 EIO0000001477 12/2016 .Objetos de software NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente.

Objetos de software Sección 6.0 para utilizar los bloques de funciones de RTC.10 Reloj de tiempo real (%RTC) Reloj de tiempo real (%RTC) Uso de bloques de funciones de RTC En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones RTC. NOTA: La aplicación debe estar configurada con un nivel funcional como mínimo del Nivel 5. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado Página Descripción 238 Configuración 241 EIO0000001477 12/2016 237 .

En el estado 1. Entradas El bloque de funciones RTC contiene las siguientes entradas: Etiqueta Objeto Valor Habilitar . 238 EIO0000001477 12/2016 . Habilita el bloque de funciones cuando se detecta un flanco ascendente de esta entrada.Objetos de software Descripción Introducción El bloque de funciones de RTC permite leer y escribir en el Reloj de tiempo real (RTC) de M221 Logic Controller. el bloque de funciones se deshabilita y se restablecen las salidas. En el estado 0. Ilustración En esta ilustración se muestra el bloque de funciones de RTC. los valores de entrada RD y WR se leen de forma continuada para determinar la acción que se debe llevar a cabo.

MONTH Mes Valor predeterminado: 6 De -32767 a 32768 Year %RTCi.YEAR Año Valor predeterminado: 2017 De -32767 a 32768 Hours %RTCi.SECONDS Segundos Valor predeterminado: 0 De -32767 a 32768 EIO0000001477 12/2016 239 .  RD = 1 y WR = 1. la salida de Error se establece en 1 y la salida de ErrorId (véase página 240) se establece en 256 (lectura y escritura simultáneas). No admitido.MINUTES Minutos Valor predeterminado: 0 De -32767 a 32768 Seconds %RTCi. Guía de funcionamiento) para visualizar los valores de los objetos. Si no se realiza correctamente.  RD = 1 y WR = 0. La salida de Done se establece en 0. El RTC se actualiza. Las salidas Done y Error se establecen en 0. Utilice una tabla de animación (véase SoMachine Basic. se actualiza el RTC utilizando los valores de objeto especificados en los parámetros de RTC asociados con este bloque de funciones (véase a continuación).HOURS Horas Valor predeterminado: 0 De -32767 a 32768 Minutes %RTCi. Cuando se detecta el flanco ascendente de WR. Ninguna acción. Day %RTCi.  RD = 0 y WR = 1. la salida Done se establece en 1 y la salida Error se establece en 0.DAY Día Valor predeterminado: 12 De -32767 a 32768 Month %RTCi. Si la actualización se realiza correctamente. Objetos de software Etiqueta Objeto Valor RD . Se lee el valor de RTC. Los objetos de entrada se actualizan de forma continuada con los valores leídos del RTC. la salida de Done se establece en 1 y la salida de Error se establece en 0. Una combinación de los valores de las dos entradas determina la acción se que se va a llevar a cabo: WR -  RD = 0 y WR = 0. Si se realiza correctamente. la salida de Done se establece en 0 y la salida de Error se establece en 1.

ErrorId %RTCi. Rango: de 0 a 7 0: el bloque de funciones no se ha ejecutado todavía. DayOfWeek %RTCi. Código de error Descripción 0 Sin errores 1 Error de año 2 Error de mes 3 Error de día 4 Error de semana 5 Error de hora 6 Error de minuto 7 Error de segundo 8 Error de combinación 9 Error interno de RTC 256 Lectura y escritura simultáneas 257 Actualización de RTC en curso (bit del sistema %S50 = 1) 240 EIO0000001477 12/2016 .Objetos de software Salidas El bloque de funciones RTC contiene las siguientes salidas: Etiqueta Objeto Valor Done %RTCi. El objeto de salida ErrorId indica la causa del error. De 1 a 7: día de la semana. Consulte Códigos de error (véase página 240) a continuación.ErrorId cuando la salida Error se establece en 1. La ejecución del bloque de funciones ha finalizado.Done Se establece en 1 cuando las operaciones de lectura y escritura del RTC se realizan correctamente. Códigos de error A continuación se indican los códigos de error que se pueden devolver en el objeto %RTCi. Se establece en 0 cuando la operación de lectura o escritura no se realiza correctamente. Error %RTCi.DayOfWeek Devuelve el día de la semana.Error Se establece en 1 si se produce un error durante la ejecución.ErrorId Identificador del código de error. calculado a partir del valor de la semana actual.

EIO0000001477 12/2016 241 . Dirección Dirección de objeto %RTCi. seleccione Herramientas → Objetos de software → RTC. RTC propiedades Para configurar los parámetros. utilizando actualmente en un programa. consulte Definición y uso de los símbolos en la Guía de funcionamiento de SoMachine Basic. Para mostrar la página RTC propiedades. donde i es el número de objeto. La página RTC propiedades muestra las propiedades siguientes: Propiedad Descripción Rango ¿Editable en modalidad online? Utilizado La dirección del objeto Si está seleccionada. siga el procedimiento de configuración de un bloque de funciones (véase página 159) y lea la descripción de las modalidades de asignación de memoria en la Guía de funcionamiento de SoMachine Basic. Para Sí obtener más información. esta dirección se está No está en uso. Día Día del mes De 1 a 31 Sí Mes Mes del año De 1 a 12 Sí Año Año Igual o superior a 2000 Sí Horas Hora del día De 0 a 23 Sí Minutos Minutos de la hora De 0 a 59 Sí Segundos Segundos del minuto De 0 a 59 Sí Comentario Comentario Se puede asociar un comentario con este Sí objeto. Consulte la Guía de programación de su controlador para determinar el número máximo de objetos RTC.  En la ficha Programación. No RTC Un programa puede contener sólo un número limitado de objetos RTC. Objetos de software Configuración Presentación Configure las propiedades del bloque de funciones RTC con los valores que se van a utilizar para actualizar el RTC en el logic controller. Símbolo Símbolo El símbolo asociado con este objeto. siga uno de estos pasos:  Haga doble clic en un bloque de funciones de RTC.

Objetos de software Sección 6. Consulte la Guía de la biblioteca de funciones avanzadas para obtener información detallada sobre el comportamiento y funcionalidades del PID y la implementación de la función PID:  Modalidades de funcionamiento del PID  Configuración de ajuste automático del PID  Configuración estándar del PID  Asistente de PID  Programación del PID  Parámetros del PID  Papel principal e influencia de los parámetros del PID  Método de ajuste de los parámetros del PID 242 EIO0000001477 12/2016 . El propósito del control PID es mantener un proceso en ejecución tan cerca como sea posible del valor de consigna deseado.11 PID PID Función PID Introducción La función PID se utiliza para controlar un proceso dinámico de manera continua.

esta dirección está en uso en un programa. Objetos de software Sección 6. Parámetros La ventana Propiedades de paso de Grafcet muestra las siguientes propiedades: Parámetro Descripción Valor Utilizado Dirección utilizada Si se selecciona.12 Pasos de Grafcet Pasos de Grafcet Pasos de Grafcet Descripción general Los objetos de paso de Grafcet (%Xi) se utilizan para identificar el estado del paso Grafcet correspondiente i de un programa. Para obtener más información. Dirección Dirección de objetos de Un programa puede contener hasta 96 objetos de paso de paso de Grafcet Grafcet. Símbolo Símbolo El símbolo asociado con este objeto. Comentario Comentario Comentario asociado con este objeto. Guía de funcionamiento) en la Guía de funcionamiento de SoMachine Basic. EIO0000001477 12/2016 243 . consulte Definición y uso de los símbolos (véase SoMachine Basic.

Objetos de software 244 EIO0000001477 12/2016 .

SoMachine Basic Objetos PTO EIO0000001477 12/2016 Capítulo 7 Objetos PTO Objetos PTO Contenido de este capítulo Este capítulo contiene las siguientes secciones: Sección Apartado Página 7.1 Motion Task Table (%MT) 246 7.2 Salida de tren de pulsos (%PTO) 247 EIO0000001477 12/2016 245 .

246 EIO0000001477 12/2016 .Objetos PTO Sección 7.1 Motion Task Table (%MT) Motion Task Table (%MT) Motion Task Table Descripción general Consulte la Guía de la biblioteca de funciones avanzadas de su controlador.

Objetos PTO Sección 7. EIO0000001477 12/2016 247 .2 Salida de tren de pulsos (%PTO) Salida de tren de pulsos (%PTO) Salida de tren de pulsos Descripción general Consulte la Guía de la biblioteca de funciones avanzadas de su controlador.

Objetos PTO 248 EIO0000001477 12/2016 .

SoMachine Basic Objetos de accionamiento EIO0000001477 12/2016 Capítulo 8 Objetos de accionamiento Objetos de accionamiento Objetos de accionamiento Descripción general Los objetos de accionamiento controlan las unidades ATV y otros dispositivos configurados en el IOScanner serie Modbus. Consulte la Guía de la biblioteca de funciones avanzadas de su logic controller. EIO0000001477 12/2016 249 .

Objetos de accionamiento 250 EIO0000001477 12/2016 .

3 Leer y escribir datos en un dispositivo Modbus (%WRITE_READ_VAR) 270 9.4 Comunicación en una conexión ASCII (%SEND_RECV_MSG) 278 9.2 Escritura de datos en un dispositivo Modbus (%WRITE_VAR) 262 9. NOTA: En un puerto de comunicación sólo puede estar activo un bloque de funciones de comunicación cada vez durante un ciclo de tarea maestra.D es TRUE) en un puerto de comunicación.1 Leer datos desde un dispositivo remoto (%READ_VAR) 252 9.5 Enviar Recibir SMS (%SEND_RECV_SMS) 286 EIO0000001477 12/2016 251 . compruebe que no esté en proceso ningún intercambio activo (%MSGx. Contenido de este capítulo Este capítulo contiene las siguientes secciones: Sección Apartado Página 9. los bloques de funciones devuelven un código de error. Por lo tanto. antes de iniciar un bloque de funciones de comunicación o una instrucción EXCH. SoMachine Basic Objetos de comunicación EIO0000001477 12/2016 Capítulo 9 Objetos de comunicación Objetos de comunicación Introducción Los bloques de funciones de comunicación se utilizan para la comunicación con dispositivos Modbus y enviar/recibir mensajes en la modalidad de caracteres (ASCII). Si intenta utilizar varios bloques de funciones de comunicación o instrucciones EXCH de manera simultánea en el mismo puerto de comunicación.

Objetos de comunicación Sección 9.1 Leer datos desde un dispositivo remoto (%READ_VAR) Leer datos desde un dispositivo remoto (%READ_VAR) Utilizar bloques de funciones %READ_VAR En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones %READ_VAR. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado Página Descripción 253 Configuración de la función 257 Ejemplo de programación 261 252 EIO0000001477 12/2016 .

Ilustración En esta ilustración se muestra el bloque de funciones %READ_VAR: Entradas El bloque de funciones %READ_VAR contiene las siguientes entradas: Etiqueta Tipo Rango Ejecutar BOOL Arranca la ejecución de bloques de funciones cuando se detecte un flanco ascendente. Anular BOOL Detiene la ejecución de bloques de funciones cuando se detecte un flanco ascendente. Objetos de comunicación Descripción Introducción El bloque de funciones %READ_VAR se utiliza para leer datos desde un dispositivo remoto en Modbus SL o Modbus TCP. La salida cancelada se establece en 1 y el objeto %READ_VARi. EIO0000001477 12/2016 253 . se ignora y el comando en curso no se ve afectado.CommError contiene el código 02 hex (el intercambio se detiene cuando lo solicita un usuario). Si se detecta un segundo flanco ascendente durante la ejecución del bloque de funciones.

El bloque de funciones debe ver primero la entrada como FALSE para detectar un flanco ascendente posterior. Error BOOL Si TRUE. consulte la tabla Códigos de error de comunicación (véase página 254). Salidas El bloque de funciones %READ_VAR contiene las siguientes salidas: Etiqueta Tipo Rango Terminado BOOL Si TRUE.Objetos de comunicación 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. En esta tabla se describen los objetos de salida del bloque de funciones: Objeto de salida Tipo Descripción CommError BYTE Para obtener información sobre %READ_VARi. Abort 2 (02 hex) Parada del intercambio cuando lo solicite el usuario (entrada Anular). BadAddress 03 (3 hex) El formato de dirección es incorrecto. TimedOut 1 (01 hex) Intercambio detenido porque se ha agotado el timeout. consulte las tablas códigos de error de comunicación (véase página 254) y códigos de error de funcionamiento (véase página 255). Ocupado BOOL Si TRUE. indica que se ha detectado un error. Para obtener más información sobre CommError y OperError. Códigos de error de comunicación En esta tabla se describen los códigos de error escritos en el objeto de palabra %READ_VARi.) Intercambio correcto. indica que la ejecución del bloque de funciones se completa correctamente sin errores detectados. BadRemoteAddr 04 (4 hex) La dirección remota es incorrecta. OperError DWORD Para obtener información sobre %READ_VARi.OperError. Detenida la ejecución de bloques de funciones.CommError: Nombre Código de Descripción error detectado CommunicationOK 00 (0 hex. Cancelado BOOL Si TRUE. 254 EIO0000001477 12/2016 .CommError. indica que la ejecución del bloque de funciones se ha cancelado con la entrada Anular. consulte la tabla Códigos de error de funcionamiento (véase página 255). indica que la ejecución del bloque de funciones está en curso.

Objetos de comunicación

Nombre Código de Descripción
error
detectado
BadMgtTable 05 (5 hex) El formato de la tabla de gestión es incorrecto.
BadParameters 6 (06 hex) Los parámetros específicos son incorrectos.
ProblemSendingRq 7 (07 hex) Emisión incorrecta de la petición al destinatario.
RecvBufferNotAlloc 9 (09 hex) El tamaño de búfer de recepción es insuficiente.
SendBufferNotAlloc 10 (0A hex) El tamaño de búfer de transmisión es insuficiente.
SystemResourceMissing 11 (0B hex) Recurso del sistema no disponible.
BadLength 14 (0E hex) La longitud es incorrecta.
ProtocolSpecificError 254 (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 255)
Refused 255 (FF hex) Se rechaza el mensaje. Para obtener más información,
consulte los códigos de error de funcionamiento.
(véase página 255).

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:
 0 (00 hex) (correcto)
 254 (FE hex) (código de excepción Modbus)
 255 (FF hex) (rechazado)

En esta tabla se describen los códigos de error escritos en el objeto de palabra doble
%READ_VARi.OperError:

CommError Nombre Código de error Descripción
detectado
0 (00 hex) OperationOK 0 (00000000 hex) Intercambio correcto.
(correcto) NotProcessed 1 (00000001 hex) La petición no se ha procesado.
BadResponse 2 (00000002 hex) La respuesta recibida es incorrecta.

EIO0000001477 12/2016 255

Objetos de comunicación

CommError Nombre Código de error Descripción
detectado
254 (FE hex) IllegalFunction 1 (00000001 hex) El código de función recibido en la
(código de petición no es una acción autorizada
excepción para el esclavo. El estado del esclavo
Modbus) puede ser erróneo para procesar una
petición específica.
IllegalDataAddress 2 (00000002 hex) La dirección de datos recibida por el
esclavo no es una dirección autorizada
para el esclavo.
IllegalDataValue 3 (00000003 hex) El valor en el campo de datos de
petición no es un valor autorizado para
el esclavo.
SlaveDeviceFailure 4 (00000004 hex) El esclavo no logra realizar una acción
solicitada debido a un error grave.
Acknowledge 5 (00000005 hex) El esclavo ha confirmado la petición,
pero las comunicaciones han superado
el timeout antes de que el esclavo haya
finalizado.
SlaveDeviceBusy 6 (00000006 hex) El esclavo está ocupado procesando
otro comando.
MemoryParityError 8 (00000008 hex) El esclavo detecta un error de paridad
en la memoria al intentar leer la
memoria ampliada.
GatewayPathUnavailable 10 (0000000A hex) La pasarela está sobrecargada o no
está configurada correctamente.
GatewayTargetDevice- 11 (0000000B hex) El esclavo no está presente en la red.
FailedToRespond
255 (FF hex) TargetResourceMissing 1 (00000001 hex) El recurso del sistema de destino no
(rechazado) está disponible.
BadLength 5 (00000005 hex) La longitud es incorrecta.
CommChannelErr 6 (00000006 hex) Se ha detectado un error en el canal de
comunicación.
BadAddr 7 (00000007 hex) La dirección es incorrecta.
SystemResourceMissing 11 (0000000B hex) Recurso del sistema no disponible.
TargetCommInactive 12 (0000000C hex) Hay una función de comunicación de
destino inactiva.
TargetMissing 13 (0000000D hex) No se puede establecer la
comunicación con el destino.
ChannelNotConfigured 15 (0000000F hex) Vía no configurada.

256 EIO0000001477 12/2016

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
(véase Compact Modbus SL Logic Controller M221 Book, System User Guide).
Las propiedades de este bloque de funciones no se pueden modificar en la modalidad online.
El bloque de funciones %READ_VAR tiene las propiedades siguientes:

Propiedad Valor Descripción
Used Casilla de verificación Indica si se está utilizando la dirección.
activada/desactivada
Address %READ_VARi, donde i va desde 0 hasta i es el identificador de instancia. Para conocer el
el número de objetos disponibles en este número máximo de instancias, consulte Número
Logic Controller. máximo de objetos (véase Modicon M221, Logic
Controller, Guía de programación).
Symbol 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).
Link  SL1: Serie 1 Selección de puerto.
 SL2: Serie 2
NOTA: SL2 y ETH1 los puertos de comunicación
 ETH1: Ethernet
incorporados sólo están disponibles en algunas
referencias de los controladores.
ID Este parámetro depende de la Identificador del dispositivo.
configuración de la conexión: Para obtener más información sobre el índice
 De 1 a 247 para la dirección de Ethernet, consulte la Adición de servidores
esclavo de líneas serie remotos (véase Modicon M221, Logic Controller,
 De 1 a 16 para el índice Ethernet Guía de programación).

EIO0000001477 12/2016 257

Objetos de comunicación

Propiedad Valor Descripción
Timeout Especificado en unidades de 100 ms, El timeout establece el tiempo máximo de espera
con un valor predeterminado de 100 de recepción de una respuesta.
(10 segundos). Si el timeout finaliza, el intercambio finaliza en
Un valor de 0 significa que no se ha error con un código de error (CommError =
aplicado timeout. 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 leer: Los tipos de códigos de función de lectura Modbus
 %MW (Mbs Fct 3): palabras de son:
memoria (predeterminado)  Mbs Fct 3: equivale al código de función 03 de
 %I (Mbs Fct 2): bits de entrada Modbus
 %Q (Mbs Fct 1): bits de salida  Mbs Fct 2: equivale al código de función 02 de
 %IW (Mbs Fct 4): palabras de Modbus
entrada  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 del dispositivo remoto
desde donde se leen los valores.
Cantidad  De 1 a 125 para %MW Número de objetos que se van a leer desde el
 De 1 a 2000 para %I dispositivo remoto.
 De 1 a 2000 para %Q o %M
 De 1 a 125 para %IW

IndexData De 0 a 7999 Dirección de la tabla de palabras local (%MW) en la
que se guardan los valores leídos.
Durante la lectura de bits (%I o %Q), los bits
recuperados se escriben en la tabla de palabras
comenzando por la primera dirección
especificada. Por ejemplo, al leer 16 bits con
IndexData = 10 y Cantidad = 16, el resultado se
almacena en %MW10:X0 hasta %MW10:X15.
Comment Texto definido por el usuario Un comentario para asociar a este objeto.

258 EIO0000001477 12/2016

Objetos de comunicación

Objetos
El bloque de funciones %READ_VAR contiene los objetos siguientes:

Objeto Descripción Rango
%READ_VARi.LINK Selección de puerto Consulte Propiedades
(véase página 257). Se puede leer y
escribir. Se puede modificar en una
tabla de animación.
%READ_VARi.ID Identificador del dispositivo remoto Consulte Propiedades
(véase página 257). Se puede leer y
escribir. Se puede modificar en una
tabla de animación.
%READ_VARi.TIMEOUT Timeout del bloque de funciones Consulte Propiedades
(véase página 257). Se puede leer y
escribir. Se puede modificar en una
tabla de animación.
%READ_VARi.OBJTYPE Tipo de objetos que se van a leer Consulte Propiedades
(véase página 257). Se puede leer y
escribir. Se puede modificar en una
tabla de animación.
%READ_VARi.FIRSTOBJ Dirección del primer objeto del Consulte Propiedades
dispositivo remoto desde donde se (véase página 257). Se puede leer y
leen los valores. escribir. Se puede modificar en una
tabla de animación.
%READ_VARi.QUANTITY Número de objetos que se van a Consulte Propiedades
leer desde el dispositivo remoto. (véase página 257). Se puede leer y
escribir. Se puede modificar en una
tabla de animación.
%READ_VARi.INDEXDATA Dirección de la tabla de palabras Consulte Propiedades
local (%MW) en la que se guardan (véase página 257). Se puede leer en
los valores leídos. una tabla de animación.
%READ_VARi.COMMERROR Códigos de error de comunicación Consulte los códigos de error de
comunicación (véase página 254).
Sólo lectura. Se puede leer en una
tabla de animación.
%READ_VARi.OPERERROR Códigos de error de Consulte los códigos de error de
funcionamiento funcionamiento (véase página 255).
Sólo lectura. Se puede leer en una
tabla de animación.
%READ_VARi.DONE Ejecución completada Consulte Salidas (véase página 254).
correctamente Sólo lectura. Se puede leer en una
tabla de animación.

EIO0000001477 12/2016 259

Objetos de comunicación

Objeto Descripción Rango
%READ_VARi.BUSY La ejecución está en proceso Consulte Salidas (véase página 254).
Sólo lectura. Se puede leer en una
tabla de animación.
%READ_VARi.ABORTED La ejecución se ha cancelado Consulte Salidas (véase página 254).
Sólo lectura. Se puede leer en una
tabla de animación.
%READ_VARi.ERROR Se ha detectado un error Consulte Salidas (véase página 254).
Sólo lectura. Se puede leer en una
tabla de animación.

260 EIO0000001477 12/2016

EIO0000001477 12/2016 261 . Programación Este ejemplo es un bloque de funciones Bloque de funciones %READ_VAR: Escalón Instrucción 0 BLK %READ_VAR0 LD %I0.0 LD BUSY ST %Q0.1 ABORT OUT_BLK LD DONE ST %Q0.1 LD ABORTED ST %M1 LD ERROR ST %Q0.2 END_BLK NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente.0 EXECUTE LD %I0. 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.

2 Escritura de datos en un dispositivo Modbus (%WRITE_VAR) Escritura de datos en un dispositivo Modbus (%WRITE_VAR) Utilizar bloques de funciones %WRITE_VAR En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones %WRITE_VAR.Objetos de comunicación Sección 9. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado Página Descripción 263 Configuración de la función 265 Ejemplo de programación 269 262 EIO0000001477 12/2016 .

CommError contiene el código 02 hex (el intercambio se detiene cuando lo solicita un usuario). se ignora y el comando en curso no se ve afectado. EIO0000001477 12/2016 263 . El bloque de funciones debe ver primero la entrada como FALSE para detectar un flanco ascendente posterior. Anular BOOL Detiene 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. Ilustración En esta ilustración se muestra el bloque de funciones %WRITE_VAR: Entradas El bloque de funciones %WRITE_VAR contiene las siguientes entradas: Etiqueta Tipo Rango Ejecutar BOOL Arranca la ejecución de bloques de funciones cuando se detecte un flanco ascendente. NOTA: Configurar la salida Ejecutar o Anular para TRUE en el primer ciclo de tarea en ejecución no se detecta como un flanco ascendente. La salida cancelada se establece en 1 y el objeto %WRITE_VARi. 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.

OperError DWORD Para obtener información sobre %READ_VARi. indica que la ejecución del bloque de funciones se completa correctamente sin errores detectados. Error BOOL Si TRUE. indica que se ha detectado un error. Cancelado BOOL Si TRUE. Ocupado BOOL Si TRUE.OperError. consulte la tabla Códigos de error de comunicación (véase página 254). indica que la ejecución del bloque de funciones se ha cancelado con la entrada Anular. consulte la tabla Códigos de error de funcionamiento (véase página 255). Códigos de error de funcionamiento Consulte los códigos de error de funcionamiento (véase página 255). Códigos de error de comunicación Consulte los códigos de error de comunicación (véase página 254). 264 EIO0000001477 12/2016 . Para obtener más información sobre CommError y OperError. Detenida la ejecución de bloques de funciones. indica que la ejecución del bloque de funciones está en curso. consulte las tablas códigos de error de comunicación (véase página 254) y códigos de error de funcionamiento (véase página 255).Objetos de comunicación Salidas El bloque de funciones %WRITE_VAR contiene las siguientes salidas: Etiqueta Tipo Rango Terminado BOOL Si TRUE.CommError. En esta tabla se describen los objetos de salida del bloque de funciones: Objeto de salida Tipo Descripción CommError BYTE Para obtener información sobre %READ_VARi.

conexión: Para el valor 0. Para objetos disponibles en este Logic Controller. Logic Controller. serie En este caso. el controlador maestro  0 para difusión Modbus inicia una petición de difusión  De 1 a 247 para la dirección de esclavo de líneas destinada a todos los esclavos conectados.  SL2: Serie 2 NOTA: SL2 y ETH1 los puertos de  ETH1: Ethernet comunicación incorporados sólo están disponibles en algunas referencias de los controladores. Símbolo Texto definido por el usuario El símbolo identifica este objeto de forma inequívoca. Link  SL1: Serie 1 Selección de puerto. El bloque de funciones %WRITE_VAR tiene las propiedades siguientes: Propiedad Valor Descripción Used Casilla de verificación activada / desactivada Indica si se está utilizando la dirección. Guía de funcionamiento). En el modo de petición de difusión. Objetos de comunicación Configuración de la función Propiedades Haga doble clic en el bloque de funciones para abrir la tabla de propiedades de la función. Guía de programación). Address %WRITE_VARi. Para obtener más información sobre el índice Ethernet. Para obtener más información. donde i va desde 0 hasta el número de i es el identificador de instancia. conocer la cantidad máxima de instancias. consulte la tabla Número máximo de objetos (véase Modicon M221. Las propiedades de este bloque de funciones no se pueden modificar en la modalidad online. ID Este parámetro depende de la configuración de la Identificador del dispositivo. Guía de programación). EIO0000001477 12/2016 265 . consulte la Adición de servidores remotos (véase Modicon M221. los esclavos no envían tramas de petición al maestro. Logic Controller. el ID de esclavo debe  De 1 a 16 para el índice Ethernet establecerse en 0. consulte la sección sobre definición y uso de símbolos de la SoMachine Basic Guía de funcionamiento (véase SoMachine Basic.

Se ignora para objetos de tipo Single Coil y Single Register. Cantidad  De 1 a 123 (registro interno) para %MW Número de objetos que se van a escribir en  De 1 a 1968 (bit interno) para %M o %Q el dispositivo remoto. Equivale al código de función Modbus 15  Multiple register (Mbs 16): palabras de memoria (%MW). esta respuesta se ignora. ObjType Se admiten los siguientes códigos de función Modbus: El tipo de objetos que se escribirá:  Single coil (Mbs 5)  Single coil (Mbs 5): bits de memoria  Single register (Mbs 6) (%M) o bits de salida (%Q). Equivale al código de función Modbus 16 NOTA: Para utilizar los códigos de función Modbus Single Coil (Mbs 5) o Single Register (Mbs 6). Un valor de 0 significa que no se ha aplicado timeout. Guía de programación)). Si el sistema recibe una respuesta después de la caducidad del timeout. Guía de programación) y Configuración de línea serie (véase Modicon M221.535 Dirección del primer objeto del dispositivo remoto en el que se escriben los valores. Equivale al código de función Modbus 6  Multiple coil (Mbs 15): bits de memoria (%M) o bits de salida (%Q).0. el intercambio finaliza en error con un código de error (CommError = 01 hex). la aplicación debe configurarse con un nivel funcional mínimo de 5. Logic Controller. 266 EIO0000001477 12/2016 . espera de recepción de una respuesta. FirstObj De 0 a 65. Logic Controller. 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. Equivale al  Multiple coil (Mbs 15) código de función Modbus 6  Multiple register (Mbs 16)  Single register (Mbs 6): palabra de memoria (%MW). Si el timeout finaliza.Objetos de comunicación Propiedad Valor Descripción Timeout Especificado en unidades de 100 ms. con un valor El timeout establece el tiempo máximo de predeterminado de 100 (10 segundos).

(véase página 265). Se puede modificar en una tabla de animación. Se puede leer escriben los valores. %WRITE_VARi. al escribir 16 bits con IndexData = 10 y Cantidad = 16. Se puede modificar en una tabla de animación. %WRITE_VARi.LINK Selección de puerto Consulte Propiedades (véase página 265). Se puede leer y escribir. Durante la escritura de bits (%M o %Q). Se puede modificar en una tabla de animación.ID Identificador del dispositivo remoto Consulte Propiedades (véase página 265). Comment Texto definido por el usuario Un comentario para asociar a este objeto. Se puede leer y escribir. los valores que se vayan a escribir se recuperan de la tabla de palabras comenzando por la primera dirección especificada.QUANTITY Número de objetos que se van a Consulte Propiedades escribir en el dispositivo remoto.OBJTYPE Tipo de objetos que se van a Consulte Propiedades escribir (véase página 265). los valores se recuperan de %MW10:X0 hasta %MW10:X15. Se puede leer y escribir.FIRSTOBJ Dirección del primer objeto del Consulte Propiedades dispositivo remoto en el que se (véase página 265). y escribir. Objetos de comunicación Propiedad Valor Descripción IndexData De 0 a 7999 Dirección de la tabla de palabras local (%MW) que contiene los valores que se van a escribir en el dispositivo remoto. Se puede modificar en una tabla de animación.TIMEOUT Timeout del bloque de funciones Consulte Propiedades (véase página 265). %WRITE_VARi. Se puede modificar en una tabla de animación. Por ejemplo. %WRITE_VARi. %WRITE_VARi. Se puede leer y escribir. Se puede modificar en una tabla de animación. EIO0000001477 12/2016 267 . Se puede leer y escribir. Objetos El bloque de funciones %WRITE_VAR contiene los objetos siguientes: Objeto Descripción Rango %WRITE_VARi.

DONE Ejecución completada Consulte Salidas correctamente (véase página 264).OPERERROR Códigos de error de Consulte los códigos de error de funcionamiento funcionamiento (véase página 264). Se puede leer en una tabla de animación. Se puede modificar en dispositivo remoto. Se puede leer valores que se van a escribir en el y escribir. Sólo lectura. %WRITE_VARi. Sólo lectura. Se puede leer en una tabla de animación. Sólo lectura. Se puede leer en una tabla de animación. Sólo lectura. Sólo lectura. %WRITE_VARi.ABORTED La ejecución se ha cancelado Consulte Salidas (véase página 264). %WRITE_VARi. Sólo lectura.INDEXDATA Dirección de la tabla de palabras Consulte Propiedades local (%MW) que contiene los (véase página 265). Se puede leer en una tabla de animación.BUSY La ejecución está en proceso Consulte Salidas (véase página 264).ERROR Se ha detectado un error Consulte Salidas (véase página 264). Se puede leer en una tabla de animación. %WRITE_VARi.COMMERROR Códigos de error de comunicación Consulte los códigos de error de comunicación (véase página 264). %WRITE_VARi. 268 EIO0000001477 12/2016 . %WRITE_VARi. Se puede leer en una tabla de animación.Objetos de comunicación Objeto Descripción Rango %WRITE_VARi. una tabla de animación.

0 EXECUTE LD %I0. 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.1 ABORT OUT_BLK LD DONE ST %Q0. Programación Este ejemplo es un bloque de funciones Bloque de funciones %WRITE_VAR: Escalón Instrucción 0 BLK %WRITE_VAR0 LD %I0.2 END_BLK NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. EIO0000001477 12/2016 269 .0 LD BUSY ST %Q0.1 LD ABORTED ST %M1 LD ERROR ST %Q0.

3 Leer y escribir datos en un dispositivo Modbus (%WRITE_READ_VAR) Leer y escribir datos en un dispositivo Modbus (%WRITE_READ_VAR) Utilizar bloques de funciones %WRITE_READ_VAR En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones %WRITE_READ_VAR.Objetos de comunicación Sección 9. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado Página Descripción 271 Configuración de la función 273 Ejemplo de programación 277 270 EIO0000001477 12/2016 .

Ilustración En esta ilustración se muestra el bloque de funciones %WRITE_READ_VAR: Entradas El bloque de funciones %WRITE_READ_VAR contiene las siguientes entradas: Etiqueta Tipo Rango Ejecutar BOOL Arranca la ejecución de bloques de funciones cuando se detecte un flanco ascendente. se ignora y el comando en curso no se ve afectado. 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.CommError contiene el código 02 hex (el intercambio se detiene cuando lo solicita un usuario). EIO0000001477 12/2016 271 . Este bloque de funciones ejecuta una única petición de escritura seguida de una única petición de lectura en la misma transacción. Si se detecta un segundo flanco ascendente durante la ejecución del bloque de funciones. La salida cancelada se establece en 1 y el objeto %WRITE_READ_VARi. Anular BOOL Detiene la ejecución de bloques de funciones cuando se detecte un flanco ascendente.

OperError DWORD Para obtener información sobre %READ_VARi. 272 EIO0000001477 12/2016 . Códigos de error de funcionamiento Consulte los códigos de error de funcionamiento (véase página 255). Error BOOL Si TRUE. consulte las tablas códigos de error de comunicación (véase página 254) y códigos de error de funcionamiento (véase página 255).Objetos de comunicación 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. Cancelado BOOL Si TRUE. El bloque de funciones debe ver primero la entrada como FALSE para detectar un flanco ascendente posterior. Salidas El bloque de funciones %WRITE_READ_VAR contiene las siguientes salidas: Etiqueta Tipo Rango Terminado BOOL Si TRUE. Para obtener más información sobre CommError y OperError. Ocupado BOOL Si TRUE. En esta tabla se describen los objetos de salida del bloque de funciones: Objeto de salida Tipo Descripción CommError BYTE Para obtener información sobre %READ_VARi. indica que la ejecución del bloque de funciones se completa correctamente sin errores detectados. indica que la ejecución del bloque de funciones se ha cancelado con la entrada Anular. consulte la tabla Códigos de error de comunicación (véase página 254).CommError. Detenida la ejecución de bloques de funciones.OperError. indica que la ejecución del bloque de funciones está en curso. indica que se ha detectado un error. consulte la tabla Códigos de error de funcionamiento (véase página 255). Códigos de error de comunicación Consulte los códigos de error de comunicación (véase página 254).

Guía de funcionamiento). Símbolo Texto definido por el usuario El símbolo identifica este objeto de forma inequívoca. Guía de programación). 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 Used Casilla de verificación activada / Indica si se está utilizando la dirección. Link  SL1: Serie 1 Selección de puerto  SL2: Serie 2 NOTA: SL2 y ETH1 los puertos de  ETH1: Ethernet comunicación incorporados sólo están disponibles en algunas referencias de los controladores. disponibles en este Logic Controller. consulte la tabla Número máximo de objetos (véase Modicon M221. consulte la Adición de servidores esclavo de líneas serie remotos (véase Modicon M221. Para desde 0 hasta el número de objetos conocer la cantidad máxima de instancias. Logic  De 1 a 16 para el índice Ethernet Controller. desactivada Address %WRITE_READ_VARi. Las propiedades de este bloque de funciones no se pueden modificar en la modalidad online. EIO0000001477 12/2016 273 . consulte la sección sobre definición y uso de símbolos de la SoMachine Basic Guía de funcionamiento (véase SoMachine Basic. ID Este parámetro depende de la Identificador del dispositivo configuración de la conexión: Para obtener más información sobre el índice  De 1 a 247 para la dirección de Ethernet. Guía de programación). Para obtener más información. donde i va i es el identificador de instancia. Logic Controller.

Guía de programación)). Comment Texto definido por el usuario Un comentario para asociar a este objeto. que equivale al código 23 de función de Modbus.Objetos de comunicación Propiedad Valor Descripción Timeout Especificado en unidades de El timeout establece el tiempo máximo de 100 ms. predeterminado de 100 Si el timeout finaliza. después de la caducidad del timeout. 274 EIO0000001477 12/2016 . IndexDataIn De 0 a 7999 Dirección de la tabla de palabras local (%MW) en la que se guardan los valores leídos.535 Dirección del primer objeto del dispositivo remoto en el que se escriben los valores. con un valor espera de recepción de una respuesta. 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. FirstWriteObj De 0 a 65. WriteQuantity De 1 a 121 Número de objetos que se van a escribir en el dispositivo remoto. Guía de programación) y Configuración de línea serie (véase Modicon M221. ReadQuantity De 1 a 125 Número de objetos que se van a leer desde el dispositivo remoto. ObjType %MW (Mbs Fct 23): palabras de El tipo de código de función de memoria lectura/escritura Modbus es Mbs Fct 23.535 Dirección del primer objeto del dispositivo remoto desde donde se leen los valores. Si el sistema recibe una respuesta aplicado timeout. FirstReadObj De 0 a 65. error con un código de error (CommError = Un valor de 0 significa que no se ha 01 hex). IndexDataOut De 0 a 7999 Dirección de la tabla de palabras local (%MW) que contiene los valores que se van a escribir en el dispositivo remoto. Logic Controller. esta respuesta se ignora. Logic Controller. el intercambio finaliza en (10 segundos).

leer y escribir. animación. Se puede contiene los valores que se leer y escribir. Se puede modificar en una tabla de animación. Se puede leer y escribir. Se puede donde se leen los valores.TIMEOUT Timeout del bloque de Consulte Propiedades funciones (véase página 273). %WRITE_READ_VARi. Se puede modificar en una tabla de animación. %WRITE_READ_VARi. Se puede leer y escribir. leer y escribir. Se puede leer y escribir. %WRITE_READ_VARi. %WRITE_READ_VARi. Se puede van a escribir en el dispositivo modificar en una tabla de remoto. EIO0000001477 12/2016 275 . Se puede modificar en una tabla de animación. Objetos de comunicación Objetos El bloque de funciones %WRITE_READ_VAR contiene los objetos siguientes: Objeto Descripción Rango %WRITE_READ_VARi. Se puede modificar en una tabla de animación. Se puede modificar en una tabla de animación.OBJTYPE Tipo de objetos que se van a Consulte Propiedades leer (véase página 273). Se puede se escriben los valores.LINK Selección de puerto Consulte Propiedades (véase página 273). leer y escribir.ID Identificador del dispositivo Consulte Propiedades remoto (véase página 273). Se puede modificar en una tabla de animación.WRITEQUANTITY Número de objetos que se van Consulte Propiedades a escribir en el dispositivo (véase página 273).FIRSTREADOBJ Dirección del primer objeto del Consulte Propiedades dispositivo remoto desde (véase página 273). Se puede modificar en una tabla de animación. %WRITE_READ_VARi. Se puede remoto. %WRITE_READ_VARi. %WRITE_READ_VARi.INDEXDATAOUT Dirección de la tabla de Consulte Propiedades palabras local (%MW) que (véase página 273). Se puede leer y escribir.FIRSTWRITEOBJ Dirección del primer objeto del Consulte Propiedades dispositivo remoto en el que (véase página 273).

Se puede se guardan los valores leídos. Se puede leer en una tabla de animación.BUSY La ejecución está en proceso Consulte Salidas (véase página 272). Sólo lectura.Objetos de comunicación Objeto Descripción Rango %WRITE_READ_VARi. Sólo lectura. Se puede leer en una tabla de animación. Se puede modificar en una tabla de animación. %WRITE_READ_VARi. leer y escribir. %WRITE_READ_VARi.ERROR Se ha detectado un error Consulte Salidas (véase página 272). Sólo lectura. Se puede leer en una tabla de animación. Se puede leer en una tabla de animación.OPERERROR Códigos de error de Consulte los códigos de error de funcionamiento funcionamiento (véase página 272). Se puede leer en una tabla de animación.INDEXDATAIN Dirección de la tabla de Consulte Propiedades palabras local (%MW) en la que (véase página 273). Se puede modificar en una tabla de animación. %WRITE_READ_VARi. %WRITE_READ_VARi. Sólo lectura. 276 EIO0000001477 12/2016 . Sólo lectura. %WRITE_READ_VARi. %WRITE_READ_VARi.COMMERROR Códigos de error de Consulte los códigos de error de comunicación comunicación (véase página 272). Se puede leer en una tabla de animación.ABORTED La ejecución se ha cancelado Consulte Salidas (véase página 272). leer y escribir. Se puede remoto. Sólo lectura. %WRITE_READ_VARi.DONE Ejecución completada Consulte Salidas correctamente (véase página 272).READQUANTITY Número de objetos que se van Consulte Propiedades a leer desde el dispositivo (véase página 273).

2 END_BLK NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. 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: Escalón Instrucción 0 BLK %WRITE_READ_VAR0 LD %I0.1 ABORT OUT_BLK LD DONE ST %Q0.0 EXECUTE LD %I0.0 LD BUSY ST %Q0. EIO0000001477 12/2016 277 .1 LD ABORTED ST %M1 LD ERROR ST %Q0.

Objetos de comunicación Sección 9. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado Página Descripción 279 Configuración de la función 282 Ejemplo de programación 285 278 EIO0000001477 12/2016 .4 Comunicación en una conexión ASCII (%SEND_RECV_MSG) Comunicación en una conexión ASCII (%SEND_RECV_MSG) Utilizar bloques de funciones %SEND_RECV_MSG En esta sección se proporcionan descripciones y directrices de programación para utilizar bloques de funciones %SEND_RECV_MSG.

Si se detecta un segundo flanco ascendente durante la ejecución del bloque de funciones. Anular BOOL Detiene la ejecución de bloques de funciones cuando se detecte un flanco ascendente. se ignora y el comando en curso no se ve afectado. 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.CommError contiene el código 02 hex (el intercambio se detiene cuando lo solicita un usuario). Ilustración En esta ilustración se muestra el bloque de funciones %SEND_RECV_MSG: Entradas El bloque de funciones %SEND_RECV_MSG contiene las siguientes entradas: Etiqueta Tipo Valor Ejecutar BOOL Arranca la ejecución de bloques de funciones cuando se detecte un flanco ascendente. La salida cancelada se establece en 1 y el objeto %SEND_RECV_MSGi. EIO0000001477 12/2016 279 .

280 EIO0000001477 12/2016 . indica que la ejecución del bloque de funciones se ha cancelado con la entrada Anular. Detenida la ejecución de bloques de funciones. la salida Finalizado se establece en TRUE cuando se han enviado todos los datos (incluido cualquier carácter de arranque/parada). la salida Finalizado se establece en TRUE. Condiciones de finalización Para una operación de sólo envío. Salidas El bloque de funciones %SEND_RECV_MSG contiene las siguientes salidas: Etiqueta Tipo Valor Terminado BOOL Si TRUE. Para una operación de sólo recepción. indica que se ha detectado un error. Códigos de error de funcionamiento Consulte los códigos de error de funcionamiento (véase página 255). indica que la ejecución del bloque de funciones está en curso. sizeRecvBuffer no es una condición de finalización. A continuación. Códigos de error de comunicación Consulte los códigos de error de comunicación (véase página 254). El bloque de funciones debe ver primero la entrada como FALSE para detectar un flanco ascendente posterior. Error BOOL Si TRUE. los caracteres recibidos se copian en BufferToRecv hasta los caracteres sizeRecvBuffer. indica que la ejecución del bloque de funciones se completa correctamente sin errores detectados. el sistema recibe caracteres hasta que se cumple la condición de finalización. Cancelado BOOL Si TRUE. Para obtener más información sobre CommError y OperError. Cuando se alcanza la condición de finalización. consulte las tablas códigos de error de comunicación (véase página 254) y códigos de error de funcionamiento (véase página 255). Ocupado BOOL Si TRUE.Objetos de comunicación 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.

Guía de programación): La condición de finalización se puede establecer en:  Un número de bytes recibidos: Longitud recibida de trama  Una finalización de silencio de trama: Timeout de trama recibido (ms)  Una estructura de trama: Primer carácter de fin Para una operación de sólo recepción. Logic Controller. primero se envían los caracteres a la línea y entonces se reciben hasta que se cumple la condición de finalización (el mismo proceso que en sólo recepción). Objetos de comunicación La condición de finalización debe estar establecida en la pantalla Configuración de la línea serie (véase Modicon M221. EIO0000001477 12/2016 281 .

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. donde i va desde 0 i es el identificador de instancia. NOTA: El timeout establecido en el bloque de funciones anula el valor establecido en las pantallas de configuración de SoMachine Basic (Configuración de Modbus TCP y Configuración de línea serie. timeout. Symbol Texto definido por el usuario El símbolo identifica este objeto de forma inequívoca. con un El timeout establece el tiempo valor predeterminado de 100 (10 segundos). consulte la guía de programación para el controlador lógico. Timeout Especificado en unidades de 100 ms. El bloque de funciones %SEND_RECV_MSG tiene las propiedades siguientes: Propiedad Valor Descripción Used Casilla de verificación activada/desactivada Indica si se está utilizando la dirección. esta respuesta se ignora. Si el sistema recibe una respuesta después de la caducidad del timeout. Guía de funcionamiento). instancias. Si el timeout finaliza. consulte la guía de programación del controlador lógico). hasta el número de objetos disponibles en este Para conocer la cantidad máxima de Logic Controller. Address %SEND_RECV_MSGi. máximo de espera de recepción de Un valor de 0 significa que no se ha aplicado una respuesta. el intercambio finaliza en error con un código de error (CommError = 01 hex). Las propiedades de este bloque de funciones no se pueden modificar en la modalidad online. Para obtener más información. 282 EIO0000001477 12/2016 . Link  SL1: Serie 1 Selección de puerto  SL2: Serie 2 NOTA: El puerto de comunicación incorporado SL2 sólo está disponible en algunas referencias de controladores. consulte la sección sobre definición y uso de símbolos de la SoMachine Basic Guía de funcionamiento (véase SoMachine Basic.

QUANTITYTOSEND Número de bytes para enviar Consulte Propiedades (véase página 282). Objetos El bloque de funciones %SEND_RECV_MSG contiene los objetos siguientes: Objeto Descripción Rango %SEND_RECV_MSGi. Se puede leer y escribir. %SEND_RECV_MSGi. %SEND_RECV_MSGi. EIO0000001477 12/2016 283 . Se puede leer y escribir.BUFFERTOSEND Dirección del primer objeto Consulte Propiedades para enviar (véase página 282). funciones sólo envía datos.TIMEOUT Timeout del bloque de Consulte Propiedades funciones (véase página 282). %SEND_RECV_MSGi. Se puede leer y escribir. Se puede modificar en una tabla de animación. Se puede modificar en una tabla de animación. Objetos de comunicación Propiedad Valor Descripción QuantityToSend De 0 a 254 Número de bytes para enviar Un valor de 0 significa que el bloque de funciones sólo recibe datos. Se puede modificar en una tabla de animación.LINK Selección de puerto Consulte Propiedades (véase página 282). BufferToSend De 0 a 7999 Dirección del primer objeto para enviar SizeRecvBuffer De 0 a 254 Tamaño disponible en bytes del búfer Un valor de 0 significa que el bloque de de recepción. QuantityRecv De 0 a 254 Cantidad de datos recibidos en bytes Comentario Texto definido por el usuario Un comentario para asociar a este objeto. BufferToRecv De 0 a 7999 La primera dirección de la tabla de palabras en la que se guardan los valores de lectura (%MW). Se puede modificar en una tabla de animación. Se puede leer y escribir.

OPERERROR Códigos de error de Consulte los códigos de error funcionamiento de funcionamiento (véase página 280). %SEND_RECV_MSGi. %SEND_RECV_MSGi. Sólo lectura. Se puede leer en una tabla de animación.COMMERROR Códigos de error de Consulte los códigos de error comunicación de comunicación (véase página 280). Se puede leer en una tabla de animación.DONE Ejecución completada Consulte Salidas correctamente (véase página 280). %SEND_RECV_MSGi. %SEND_RECV_MSGi. %SEND_RECV_MSGi. Sólo se pueden leer.QUANTITYRECV Cantidad de datos recibidos en Consulte Propiedades bytes (véase página 282). Sólo lectura.BUSY La ejecución está en proceso Consulte Salidas (véase página 280). Se puede leer en una tabla de animación.ERROR Se ha detectado un error Consulte Salidas (véase página 280). %SEND_RECV_MSGi. %SEND_RECV_MSGi. Se puede los valores de lectura leer y escribir. Sólo lectura. Se puede modificar en una tabla de animación.ABORTED La ejecución se ha cancelado Consulte Salidas (véase página 280). Se puede modificar en una tabla de animación. %SEND_RECV_MSGi.BUFFERTORECV Primera dirección de la tabla de Consulte Propiedades palabras en la que se guardan (véase página 282). Se puede leer en una tabla de animación. Se puede modificar en una tabla de animación.SIZERECVBUFFER Tamaño disponible en bytes Consulte Propiedades del búfer de recepción (véase página 282). Sólo lectura.Objetos de comunicación Objeto Descripción Rango %SEND_RECV_MSGi. Se puede leer en una tabla de animación. 284 EIO0000001477 12/2016 . Sólo lectura. Se puede leer y escribir. Sólo lectura. Se puede leer en una tabla de animación.

2 END_BLK NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. EIO0000001477 12/2016 285 .0 EXECUTE LD %I0. Programación Este ejemplo es un bloque de funciones Bloque de funciones %SEND_RECV_MSG: Escalón Instrucción 0 BLK %SEND_RECV_MSG0 LD %I0.0 LD BUSY ST %Q0.1 ABORT OUT_BLK LD DONE ST %Q0.1 LD ABORTED ST %M1 LD ERROR ST %Q0. Objetos de comunicación Ejemplo de programación Introducción El bloque de funciones %SEND_RECV_MSG se puede configurar como se muestra en este ejemplo de programación.

5 Enviar Recibir SMS (%SEND_RECV_SMS) Enviar Recibir SMS (%SEND_RECV_SMS) Utilización del bloque de funciones %SEND_RECV_SMS En esta sección se proporcionan descripciones y directrices de programación para utilizar el bloque de funciones %SEND_RECV_SMS.Objetos de comunicación Sección 9. Contenido de esta sección Esta sección contiene los siguientes apartados: Apartado Página Descripción 287 Configuración de funciones 295 286 EIO0000001477 12/2016 .

independientemente de los comandos remotos enviados al controlador. El incumplimiento de estas instrucciones puede causar la muerte. NOTA: La aplicación debe estar configurada con un nivel funcional como mínimo del Nivel 3. no se envíen o no se reciban. No utilice la función de SMS para funciones críticas para la seguridad u otras funciones críticas. ADVERTENCIA FUNCIONAMIENTO IMPREVISTO DEL EQUIPO  Asegúrese de que un observador local. o recibir un SMS para finalizar una función de la máquina. Se debe tener cuidado y adoptar las medidas adecuadas para utilizar la función de SMS como dispositivo de control remoto.2 para utilizar la función de SMS. Por ejemplo.  Configure e instale la entrada Run/Stop en la aplicación con el objetivo de poder mantener el control local sobre el inicio y la detención del controlador. cambios de estado del controlador. o  Recibir un SMS filtrado por una tabla de números de teléfono aprobados En un programa sólo se puede utilizar 1 bloque de funciones %SEND_RECV_SMS. el controlador puede enviar un SMS para transmitir una alarma a un teléfono móvil especificado. esté presente al utilizarlo desde una ubicación remota. Puede que los comandos y mensajes SMS transmitidos a la máquina se retrasen. con el fin de evitar consecuencias no deseadas en el funcionamiento solicitado de máquinas. El bloque de funciones %SEND_RECV_SMS se utiliza para una de estas opciones:  Enviar un SMS a un solo destinatario. Objetos de comunicación Descripción Introducción El bloque de funciones %SEND_RECV_SMS sirve para enviar y recibir mensajes SMS (servicio de mensajes cortos) mediante un módem conectado a una línea serie. lesiones serias o daño al equipo. La función de SMS depende de una red de telecomunicaciones externa y sus parámetros. EIO0000001477 12/2016 287 . competente y cualificado. o alteración de la memoria de datos o de los parámetros de funcionamiento de la máquina.

Objetos de comunicación ADVERTENCIA FUNCIONAMIENTO IMPREVISTO DEL EQUIPO  No permita funciones críticas para la seguridad en comandos por SMS. El incumplimiento de estas instrucciones puede causar la muerte. Ilustración En esta ilustración se muestra el bloque de funciones %SEND_RECV_SMS: 288 EIO0000001477 12/2016 . lesiones serias o daño al equipo. y pruébela periódicamente para verificar la cobertura de la red.  No utilice comandos o mensajes SMS para ninguna función que sea crítica. NOTA: Verifique las funciones de SMS y la red de telecomunicaciones asociada durante la puesta en funcionamiento.

para seleccionar el texto que se va a enviar desde la tabla Mensajes. El bloque de funciones debe ver primero la entrada como 0 para detectar un flanco ascendente posterior. se ignora y el comando en curso no se ve afectado.  En la recepción. para seleccionar una cadena de la tabla Comandos que coincida con el texto recibido. EIO0000001477 12/2016 289 . Si es 0. Index WORD De 0 a 15 Se utiliza el valor del índice:  En el envío. El valor 0 significa que no se ha establecido timeout. 0 corresponde a la primera cadena de la tabla.SL2 del módem. Timeout WORD De 0 a 255 Establece el tiempo máximo de espera de recepción de una respuesta del módem. Se establece en FFFF hex si no se encuentra ninguna cadena coincidente. La salida Aborted se establece en 1 y el objeto %SEND_RECV_SMSi. el bloque de funciones está configurado para enviar un SMS. NOTA: Configurar la salida Execute o Abort para 1 en el primer ciclo de tarea en ejecución no se detecta como un flanco ascendente. Si se detecta un segundo flanco ascendente durante la ejecución del bloque de funciones. En esta tabla se describen los objetos de entrada del bloque de funciones: Objeto de entrada Tipo Rango de Descripción valores Link BYTE 1 . Especificado en unidades de 100 ms. el bloque de funciones está configurado para recibir un SMS.SL1 Indica la línea serie utilizada para la comunicación a través 2 .CommError contiene el código 02 hex (intercambio detenido en un flanco ascendente en la entrada Abort). con un valor predeterminado de 100 (10 segundos). S BOOL Si es 1. Anular BOOL Detiene la ejecución del bloque de funciones cuando se detecta un flanco ascendente. Objetos de comunicación Entradas En esta tabla se describen las entradas del bloque de funciones: Etiqueta Tipo Rango Execute BOOL Inicia la ejecución del bloque de funciones cuando se detecta un flanco ascendente.

NOTA: Mientras la salida Busy está establecida en TRUE. el valor de %SEND_RECV_SMSi. el valor de %SEND_RECV_SMSi.VAD 2147483648 a sustituye al marcador de posición $VAD en el texto del 2147483647 SMS.  Durante la recepción.  Durante la recepción.VAD contiene el valor en el que se inserta el marcador de posición $VAD en el SMS almacenado en la tabla Comandos. la máscara se utiliza para seleccionar el destinatario del SMS de la tabla Números de teléfono.  Durante la recepción. Busy BOOL Si TRUE. indica que la ejecución del bloque de funciones está en curso. Sin embargo.VBD contiene el valor en el que se inserta el marcador de posición $VBD en el SMS almacenado en la tabla Comandos.Abort. los cambios en la entrada Execute no afectan a la ejecución del bloque de funciones en curso. el valor de %SEND_RECV_SMSi.VBD 2147483648 a sustituye al marcador de posición $VBD en el texto del 2147483647 SMS. NOTA: Cuando la salida Busy se establece en TRUE. indica que la ejecución del bloque de funciones ha finalizado correctamente y no se han detectado errores. si se llama a otro bloque de funciones %SEND_RECV_SMS. se rechaza este SMS (CommError = 255 (FF hex) y OperError = 11 (0000000B hex)). Aborted BOOL Si es TRUE. Aborted o Error se establece en TRUE. la máscara se aplica a la tabla Números de teléfono para crear una lista de números válidos. 290 EIO0000001477 12/2016 . la ejecución continúa hasta que una de las salidas Done.Objetos de comunicación Objeto de entrada Tipo Rango de Descripción valores VAD DINT De –  Durante el envío. VBD DINT De –  Durante el envío. indica que la ejecución del bloque de funciones se ha cancelado con la entrada %SEND_RECV_SMSi. MASKPHONE WORD De 0 a 15  Durante el envío. el valor de %SEND_RECV_SMSi. Salidas En esta tabla se describen las salidas del bloque de funciones: Etiqueta Tipo Rango Done BOOL Si es TRUE.

NOTA: En este caso. los cambios en la entrada Execute no afectan a la ejecución del bloque de funciones en curso. el objeto de salida %SEND_RECV_SMSi. 3 (03 hex) BadLink Enlace incorrecto. si se llama a otro bloque de funciones %SEND_RECV_SMS.OperError. se rechaza este SMS (CommError = 255 (FF hex) y OperError = 11 (0000000B hex)). Objetos de comunicación Etiqueta Tipo Rango Error BOOL Si es TRUE.CommError y %SEND_RECV_SMSi. 4 (04 hex) BadCommand Comando incorrecto. Para obtener información sobre %SEND_RECV_SMSi. EIO0000001477 12/2016 291 . 1 (01 hex) TimedOut Intercambio detenido porque se ha agotado el timeout. 2 (02 hex) Abort Intercambio detenido en un flanco ascendente en la entrada %SEND_RECV_SMSi. Aborted o Error se establece en TRUE. la ejecución continúa hasta que una de las salidas Done. Códigos de error de comunicación En esta tabla se describen los códigos de error escritos en el objeto de salida %SEND_RECV_SMSi. consulte la tabla Códigos de error de funcionamiento (véase página 292). Se ha detenido la ejecución del bloque de funciones. NOTA: Mientras la salida Busy está establecida en TRUE. En esta tabla se describen los objetos de salida del bloque de funciones: Objeto de salida Tipo Descripción CommError BYTE Para obtener información sobre %SEND_RECV_SMSi.OperError contiene el nivel de señal del módem en vez de un código de error.Abort. NOTA: Cuando la salida Busy se establece en TRUE. OperError DWORD Para obtener información sobre %SEND_RECV_SMSi. consulte la tabla Códigos de error de comunicación (véase página 291).CommError.CommError: Código de error Nombre Descripción decimal (hexadecimal) detectado 0 (00 hex) CommunicationOK Intercambio correcto.OperError. Sin embargo. consulte las tablas Códigos de error de comunicación (véase página 291) y Códigos de error de funcionamiento (véase página 292). indica que se ha detectado un error.

el objeto de salida %SEND_RECV_SMSi. el objeto de salida %SEND_RECV_SMSi. 7 (07 hex) ProblemSendingSms Error de comando de envío de SMS.OperError Inferior a 9 Valor marginal (la atenuación sobrepasa el límite necesario para que la red inalámbrica funcione) De 10 a 14 OK De 15 a 19 Bueno Superior a 20 Excelente 292 EIO0000001477 12/2016 . Consulte los códigos de error de funcionamiento (véase página 292). 254 (FE hex) ProtocolSpecificError Indica que se ha detectado un error de protocolo.OperError contiene más información.Objetos de comunicación Código de error Nombre Descripción decimal (hexadecimal) detectado 5 (05 hex) BadMgtTable El formato de la tabla de gestión es incorrecto. 10 (0A hex) SendValueError Valor no válido. 14 (0E hex) BadLength La longitud es incorrecta. Consulte los códigos de error de funcionamiento (véase página 292). 9 (09 hex) RecvCmdError Comando no válido. el objeto de salida %SEND_RECV_SMSi.CommError es 0 (00 hex) (protocolo correcto). 11 (0B hex) SystemResourceMissing Recurso del sistema no disponible. NOTA: En este caso.OperError especifica la RSSI (del inglés Received Signal Strength Indication. NOTA: En este caso. indicación de fuerza de la señal recibida): Valor decimal en el objeto Nivel de señal del módem RSSI %SEND_RECV_SMSi.OperError contiene más información. 255 (FF hex) Refused SMS rechazado. 6 (06 hex) BadParameters Los parámetros específicos son incorrectos.CommError) tiene el valor:  0 (00 hex) (protocolo correcto)  254 (FE hex) (protocolo incorrecto)  255 (FF hex) (SMS rechazado) Cuando %SEND_RECV_SMSi. Códigos de error de funcionamiento Este código de retorno es significativo cuando el código de error de comunicación (objeto de salida %SEND_RECV_SMSi.

Cuando %SEND_RECV_SMSi.OperError devuelve más información: Valor decimal (hexadecimal) en el Nombre Descripción objeto %SEND_RECV_SMSi. 1280 (00000500 hex) ModemNoCarrier La señal de portadora del módem se ha perdido o desconectado.OperError 1 (00000001 hex) TargetResourceMissing El recurso del sistema de destino no está disponible.CommError es 255 (FF hex) (SMS rechazado). 1536 (00000600 hex) ModemBadAnswer La respuesta del módem es incorrecta. 8192 (00002000 hex) SimPinCodeInvalid El código PIN es incorrecto. Errores específicos de uso de la tarjeta SIM 4096 (00001000 hex) SimConfigurationFailed La configuración de la tarjeta SIM es incorrecta. El módem responde NO CARRIER para el comando de marcación. 768 (00000300 hex) ModemBusy El módem responde BUSY para el comando de marcación. 6 (00000006 hex) CommChannelErr Se ha detectado un error en el canal de comunicación. 512 (00000200 hex) ModemReconfSLFailed La configuración de la línea de serie en la configuración de usuario es incorrecta. se solicita un código PUK.OperError 256 (00000100 hex) ModemConfSLAsciiFailed La configuración ASCII de la línea serie es incorrecta. 16384 (00004000 hex) SimSmsCenterInvalid El número de teléfono del centro de SMS es incorrecto. Objetos de comunicación Cuando %SEND_RECV_SMSi. Por ejemplo. EIO0000001477 12/2016 293 . 11 (0000000B hex) SystemResourceMissing Recurso del sistema no disponible. el objeto de salida %SEND_RECV_SMSi. 12 (0000000C hex) TargetCommInactive La función de comunicación de destino no está activa. 5 (00000005 hex) BadLength La longitud es incorrecta.OperError devuelve más información: Valor decimal (hexadecimal) en el Nombre Descripción objeto %SEND_RECV_SMSi.CommError es 254 (FE hex) (protocolo incorrecto). 1024 (00000400 hex) ModemNoDialtone El módem responde NODIALTONE para el comando de marcación. el objeto de salida %SEND_RECV_SMSi.

Sólo se emite si el número de teléfono del emisor coincide con una entrada de la lista de números aprobados (lista banca).OperError 13 (0000000D hex) TargetMissing El destino no está disponible. 17 (00000011 hex) MessageNotMatching El mensaje recibido no coincide con ningún mensaje de la lista de comandos. 294 EIO0000001477 12/2016 . 16 (00000010 hex) PhoneNumberNotMatching El número de teléfono del mensaje recibido no coincide con la lista de números aprobados (lista blanca).Objetos de comunicación Valor decimal (hexadecimal) en el Nombre Descripción objeto %SEND_RECV_SMSi. 15 (0000000F hex) ChannelNotConfigured El canal de comunicación no está configurado.

es decir.2). compruebe que el nivel funcional de la aplicación (ficha Programación > Tareas > Comportamiento) esté como mínimo en el Nivel 3. consulte el Asistente de SMS.  Haga clic en Aplicar para cerrar el Asistente de SMS NOTA: Si la dirección del bloque de funciones (por ejemplo %SEND_RECV_SMS0) no es válida y hacer doble clic está deshabilitado. verifique que los índices para los mensajes. El incumplimiento de estas instrucciones puede causar la muerte. Para obtener más información acerca de la instalación y la configuración de los modems SR2MOD03. ADVERTENCIA FUNCIONAMIENTO IMPREVISTO DEL EQUIPO Antes de utilizar el bloque de funciones. Objetos de comunicación Configuración de funciones Pasos principales El siguiente procedimiento describe los pasos principales para configurar el bloque de funciones %SEND_RECV_SMS tras conectar un módem a la línea serie: Paso Acción 1 En la ficha Configuración de SoMachine Basic. 4 En la ficha Programación. consulte Propiedades (véase página 298). consulte Modems inalámbricos SR2MOD02 y SR2MOD03 . edite los campos de la tabla de propiedades de la función. 2 Verifique que el módem esté conectado a la línea serie del controlador y que:  La tarjeta SIM está desbloqueada. Para obtener información sobre estos campos. consulte la guía de programación correspondiente a su controlador lógico.Guía del usuario (EIO00000001575). comandos y números de teléfono utilizados en el bloque de funciones sean los adecuados. EIO0000001477 12/2016 295 . el Comando Init y el protocolo ASCII. configure la línea serie con el módem. lesiones serias o daño al equipo. Comandos y Números de teléfono Para obtener más información. no protegida mediante un código PIN  El número de teléfono del centro de SMS está configurado correctamente en la tarjeta SIM 3 En la ficha Programación:  Añada el bloque de funciones %SEND_RECV_SMS y haga doble clic en el bloque de funciones para ver la tabla de propiedades de la función  Haga clic en el botón Configuración de SMS para abrir la ventana Asistente de SMS  Edite las tablas Mensajes. Para obtener más información.

NOTA: Consulte la documentación del módem para ver el formato de los códigos de marcación internacionales.  Comandos Especifique las cadenas que se utilizan cuando el controlador recibe un SMS. La ventana Asistente de SMS tiene tres fichas con tablas para configurar:  Mensajes Especifique las cadenas que se utilizan cuando el controlador envía un SMS. Tenga en cuenta los límites de número de caracteres y el formato.Objetos de comunicación Asistente de SMS Para utilizar el bloque de funciones %SEND_RECV_SMS. 296 EIO0000001477 12/2016 . el número de teléfono de origen se valida antes de considerar el SMS entrante. fecha y hora. Cuando una llamada y el SMS correspondiente se transmiten a la aplicación a través del módem. Haga clic en el botón Configuración de SMS en el área de propiedades de Enviar Recibir SMS para abrir la ventana Asistente de SMS. seleccione el destinatario en esta tabla. configure las tablas de comandos. Al programar el bloque de funciones para la recepción de mensajes SMS. seleccione los números de teléfono de origen autorizados en esta lista. Las cadenas incluidas en las tablas del asistente se pueden interpretar con los siguientes formatos y límite de tamaño de mensaje: Formato de caracteres Tablas Mensajes y Comandos GSM 7-bit Máximo 105 caracteres UNICODE Máximo 45 caracteres NOTA: El formato de caracteres viene determinado automáticamente por los caracteres del campo de texto. Cada tabla contiene un máximo de 16 entradas con un índice en cada línea de 0 a 15. mensajes y números de teléfono. Para obtener más información. Tenga en cuenta los límites de número de caracteres y el formato. Utilice marcadores de posición para incluir variables. Utilice marcadores de posición para incluir variables. consulte la línea MASKPHONE en Propiedades (véase página 298).  Números de teléfono Al programar el bloque de funciones para el envío de mensajes SMS. La lista de números de teléfono autorizados seleccionados añade seguridad a la aplicación.

(1) Ignorado para Comandos Ejemplos Este ejemplo muestra el uso de marcadores de posición en los mensajes: Mensajes Mensaje $DATE : $TIME . VBD = 2 EIO0000001477 12/2016 297 . el botón Aplicar está activo. Objetos de comunicación Se pueden añadir los siguientes marcadores de posición en el texto de Mensajes o Comandos para que se interpreten como variables: Marcador de Sustituido en la ejecución por: Número de Número de caracteres posición caracteres en en formato UNICODE formatos GSM 7-bit $DATE(1) YY/MM/DD (fecha actual) 8+1 16 + 2 $TIME(1) HH:MM:SS (hora actual) 8+1 16 + 2 $VAD El valor DWORD del parámetro 12 máximo 24 máximo %SEND_RECV_SMSi. $VBD El valor DWORD del parámetro 12 máximo 24 máximo %SEND_RECV_SMSi.Valor A = $VAD y Valor B = $VBD configurado Valores de los VAD = 10. VBD = 2000 marcadores de posición SMS final enviado 15/04/27 : 11:15:43 .VAD convertido a texto.VBD convertido a texto.Valor A = 10 y Valor B = 2000 Este ejemplo muestra el uso de marcadores de posición en los comandos: Comandos Comando Valor A = $VAD y Valor B = $VBD configurado SMS recibido Valor A = 300 y Valor B = 2 Valores capturados VAD = 300. marcadores de posición válidos). $$ El símbolo $ 1 2 NOTA: Cuando el texto introducido es válido (límite de caracteres no excedido.

El símbolo identifica este objeto de forma inequívoca. Address %SEND_RECV_SMSi. Link 1 . el valor del índice se utiliza para seleccionar un texto para enviar en la tabla Mensajes.CommError = 01 hex).VAD contiene el valor en el que se inserta el marcador de posición $VAD en el SMS almacenado en la tabla Comandos. se ha aplicado timeout. VAD De –214748364 a 2147483647  Durante el envío. el valor corresponde al índice de la tabla primera cadena de la lista. donde i i es el identificador de instancia.VBD contiene el valor en el que se inserta el marcador de posición $VBD en el SMS almacenado en la tabla Comandos. Symbol Texto definido por el usuario. consulte la guía de programación correspondiente a su controlador lógico.  Durante la recepción. Para obtener más información. el valor de %SEND_RECV_SMSi. recibe una respuesta después de la caducidad del timeout. esta Un valor de 0 significa que no respuesta se ignora.SL2 Configuración).. el valor de %SEND_RECV_SMSi. el intercambio finaliza con un código de predeterminado de 100 error (%SEND_RECV_SMSi. 100 ms. el valor de %SEND_RECV_SMSi. Logic Controller.VAD sustituye al marcador de posición $VAD en el texto del SMS. VBD De –214748364 a 2147483647  Durante el envío. Las propiedades de este bloque de funciones no se pueden modificar en la modalidad online. Si el sistema (10 segundos). 298 EIO0000001477 12/2016 .SL1 Línea serie en la que se ha configurado el módem (ficha 2 . Index De 0 a 15  En el envío. El bloque de funciones %SEND_RECV_SMS tiene las propiedades siguientes: Propiedad Valor Descripción Used Casilla de verificación Indica si se está utilizando la dirección. Comandos que coincide con el texto recibido. el valor de %SEND_RECV_SMSi. con un valor Si se supera el timeout. Para saber el número máximo de va desde 0 hasta el número de instancias. Guía de funcionamiento).VBD sustituye al marcador de posición $VBD en el texto del SMS. consulte la guía de programación de su controlador objetos disponibles en este lógico. Timeout De 0 a 255 El timeout establece el tiempo máximo de espera de recepción de Especificado en unidades de una respuesta del módem. Para obtener más información. NOTA: 0 corresponde a la  En la recepción.  Durante la recepción. consulte Definición y uso de los símbolos (véase SoMachine Basic.Objetos de comunicación Propiedades Haga doble clic en el bloque de funciones para abrir la tabla de propiedades de la función. activada/desactivada. NOTA: El timeout establecido en el bloque de funciones anula el valor configurado en la pantalla de configuración SoMachine Basic.

a 1000000000000000 bin  Durante el envío. Se puede leer y escribir. Se puede modificar en una tabla de animación.VBD VBD .marcador de posición B Consulte Propiedades (véase página 298). Se puede modificar en una tabla de animación. la máscara se aplica a la tabla Números de teléfono para crear una lista de números de teléfono de origen válidos. Objetos de comunicación Propiedad Valor Descripción MASKPHONE De 0000000000000000 bin El valor inicial de la máscara.INDEX Índice en la tabla de Mensajes o Consulte Propiedades Comandos (véase página 298). Se puede modificar en una tabla de animación. Se puede leer y escribir. %SEND_RECV_SMSi. Ejemplo: 0000000000000100 bin significa que el tercer número de teléfono de la lista Números de teléfono (índice 2) ha enviado el SMS. %SEND_RECV_SMSi. %SEND_RECV_SMSi. Se puede leer y escribir. Se puede modificar en una tabla de animación. Objetos El bloque de funciones %SEND_RECV_SMS contiene los objetos siguientes: Objeto Descripción Valor %SEND_RECV_SMSi.VAD VAD .  Durante la recepción.marcador de posición A Consulte Propiedades (véase página 298).TIMEOUT Timeout del bloque de funciones Consulte Propiedades (véase página 298). %SEND_RECV_SMSi. %SEND_RECV_SMSi. esta máscara se utiliza para seleccionar el destinatario del SMS de la tabla Números de teléfono. Se puede leer teléfono y escribir. EIO0000001477 12/2016 299 . Se puede leer y escribir. Se puede leer y escribir. Comment Texto definido por el usuario Un comentario para asociar a este objeto. Ejemplo: 0000000000000010 bin = el SMS se envía al segundo número de teléfono (índice 1) que aparece en la tabla Números de teléfono. Un bit de la máscara indica el número de teléfono utilizado para enviar el SMS al controlador lógico. Se puede modificar en una tabla de animación.LINK Selección de puerto Consulte Propiedades (véase página 298).MASKPHONE Máscara para seleccionar Consulte Propiedades entradas en la tabla de números de (véase página 298). Se puede modificar en una tabla de animación.

Se puede modificar en una tabla de animación. Sólo se pueden leer. Se puede modificar en una tabla de animación. %SEND_RECV_SMSi. %SEND_RECV_SMSi. %SEND_RECV_SMSi.OPERERROR Códigos de error de Consulte los códigos de error de funcionamiento funcionamiento (véase página 292). Se puede modificar en una tabla de animación.Objetos de comunicación Objeto Descripción Valor %SEND_RECV_SMSi. %SEND_RECV_SMSi.COMMERROR Códigos de error de comunicación Consulte los códigos de error de comunicación (véase página 291).DONE Ejecución completada Consulte Salidas correctamente (véase página 290).ABORTED La ejecución se ha cancelado Consulte Salidas (véase página 290). Se puede modificar en una tabla de animación. 300 EIO0000001477 12/2016 . Sólo se pueden leer. Sólo se pueden leer. Sólo se pueden leer. Sólo se pueden leer.ERROR Se ha detectado un error Consulte Salidas (véase página 290).BUSY La ejecución está en proceso Consulte Salidas (véase página 290). Se puede modificar en una tabla de animación. Se puede modificar en una tabla de animación. Sólo se pueden leer. %SEND_RECV_SMSi.

SoMachine Basic EIO0000001477 12/2016 Capítulo 10 Funciones de reloj Funciones de reloj Descripción general En este capítulo se describen las funciones de gestión de tiempo para los controladores. Contenido de este capítulo Este capítulo contiene los siguientes apartados: Apartado Página Funciones de reloj 302 Marcas de fecha y hora 303 Ajuste de fecha y hora 305 EIO0000001477 12/2016 301 .

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 reloj de fecha y hora tiene formato de 24 horas y tiene en cuenta los años bisiestos. o para actualizar el RTC en el logic controller con una fecha y hora definidas por el usuario. puede utilizar las siguientes funciones del reloj de fecha/hora cuando SoMachine Basic esté conectado al controlador lógico:  Los bloques de funciones RTC (véase página 237) se utilizan para leer la hora y la fecha del RTC.Funciones de reloj Introducción En controladores lógicos equipados con una función de reloj en tiempo real (RTC).  Los bloques de funciones del Programador (véase página 233) se utilizan para controlar acciones a horas predefinidas o calculadas. cámbiela durante los 120 segundos posteriores a la extracción de la batería del controlador. El controlador no tiene una batería recargable. 302 EIO0000001477 12/2016 .  Fijación de fecha y hora (véase página 303) se utiliza para asignar fechas y horas a eventos y para medir la duración de los eventos. La vida útil promedio de la batería es de 4 años y debe reemplazarse antes del final de su vida útil. El reloj de fecha/hora puede ajustarse mediante un programa (véase página 303). Con el objetivo de no perder los datos durante la sustitución de la batería.

5 = Viernes. consulte las Instrucciones de conversión BCD/binaria (véase página 82). 6 = Sábado. 3 = Miércoles. Una vez detectado un evento. 7 = Domingo EIO0000001477 12/2016 303 . 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. Estas palabras de sistema se pueden utilizar para almacenar la fecha y la hora de un evento. la tabla de palabras tendrá el siguiente contenido: Codificación Byte más significativo Byte menos significativo %MW11 . Ejemplo de programación En este ejemplo se muestra cómo fechar un flanco ascendente en una entrada %I0.Marcas de fecha y hora Introducción Las palabras de sistema %SW49 a %SW53 contienen la fecha y la hora actuales en formato BCD que resulta útil para realizar visualizaciones o transmisiones a un dispositivo periférico. 4 = Jueves. Las instrucciones BTI se utilizan para convertir fechas y horas de formato BCD a formato binario. transmisión a una pantalla mediante la instrucción EXCH).1 [%MW11:5:=%SW49:5] NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. 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. Para obtener más información. Fechado de un evento Para asociar una fecha a un evento.1: Escalón Instrucción 0 LDR %I0.

en formato BCD. 304 EIO0000001477 12/2016 . 40 minutos %MW14 0603 06 = junio. el día 03 %MW15 2013 2013 Fecha y hora de la última parada Las palabras de sistema %SW54 a %SW57 contienen la fecha y la hora de la última parada. y la palabra %SW58 contiene el código que muestra la causa de la última parada.Ejemplo de tabla de palabras Datos de ejemplo para el lunes 3 de junio de 2013 a las 13:40:30: Palabra Valor (hexadecimal) Significado %MW11 0001 lunes %MW12 0030 30 segundos %MW13 1340 13 horas.

Utilización de %SW49 a %SW53 Para establecer la fecha y la hora utilizando las palabras de sistema de %SW49 a %SW53. Guía de funcionamiento).  Automático: este método utiliza la hora del PC en el que se ejecuta SoMachine Basic. Puede elegir entre dos métodos:  Manual: este método muestra un selector de hora/fecha y le permite seleccionar manualmente la hora del logic controller. EIO0000001477 12/2016 305 . de %SW49 a %SW53 o la palabra del sistema %SW59.  En modalidad online.  En un programa. El controlador reanuda a continuación la actualización de %SW49 a %SW53 mediante el RTC. Si %S50 está establecido en 1. consulte Gestión de RTC (véase SoMachine Basic. En un flanco descendente de %S50 (%S50 establecido en 0). NOTA: La fecha y la hora sólo pueden definirse cuando la característica RTC está disponible en su logic controller (consulte la guía de programación del logic controller). actualice las palabras del sistema. En esta tabla se indican las palabras del sistema que contienen los valores de fecha y hora actuales (en BCD) para las funciones de reloj en tiempo real (RTC): Palabra de sistema Descripción %SW49 xN día de la semana (N=1 para el lunes) %SW50 00SS: segundos %SW51 HHMM: hora y minutos %SW52 MMDD: mes y día %SW53 CCYY: siglo y año Consulte la guía de programación de su controlador para obtener una lista completa de palabras y bits de sistema. mediante los bloques de funciones RTC (véase página 237). Guía de funcionamiento). el bit %S50 debe establecerse en 1. Este método sólo está disponible en modalidad online (véase SoMachine Basic. el RTC interno del controlador se actualiza con los valores de %SW49 a %SW53. Para obtener más información. el logic controller no actualiza las palabras del sistema de %SW49 a %SW53. ya sea de forma directa o por programación mediante bloques de funciones.Ajuste de fecha y hora Introducción Los ajustes de fecha y hora en el logic controller pueden actualizarse mediante uno de estos métodos:  Utilice la ficha Gestión de RTC de la ficha Puesta en funcionamiento de SoMachine Basic.

%SW59 aumenta o disminuye cada uno de los componentes de fecha y hora en un flanco ascendente. [%SW51:=%MW12] [%SW52:=%MW13] [%SW53:=%MW14] S %S50 NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente. 40 minutos %MW13 0603 06 = junio. el día 03 %MW14 2013 2013 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. La tabla de palabras debe contener la nueva fecha y hora: Codificación Byte más significativo Byte menos significativo %MW11 – Segundo %MW12 Hora Minuto %MW13 Mes Día %MW14 Siglo Año Ejemplo de datos para el 3 de junio de 2013: Palabra Valor (hexadecimal) Significado %MW11 0030 30 segundos %MW12 1340 13 horas. 306 EIO0000001477 12/2016 .1 Consulte las Instrucciones de conversión de [%SW50:=%MW11] BCD/binario (véase página 82). NOTA: Se calcula automáticamente %SW49 (día de la semana) en función de la fecha proporcionada. Ejemplo de programación: Escalón Instrucción Comentario 0 LD %S50 – R %S50 1 LD %I0. Las palabras de %MW11 a %MW14 contienen la nueva fecha y hora (consulte Revisión del código BCD (véase página 82)) y corresponden a la codificación de las palabras de %SW50 a %SW53. El establecimiento del bit %S59 en 1 permite configurar la fecha y la hora actuales mediante la palabra %SW59.

3 y %I0. EIO0000001477 12/2016 307 .2. Ejemplo de aplicación Este panel frontal se ha creado para modificar la hora.0. En esta tabla se describe cada bit de la palabra de sistema %SW59 para ajustar los parámetros de fecha y hora: Aumentar Reducir Parámetro Bit 0 Bit 8 Día de la semana(1) Bit 1 Bit 9 Segundos Bit 2 Bit 10 Minutos Bit 3 Bit 11 Horas Bit 4 Bit 12 Días Bit 5 Bit 13 Mes Bit 6 Bit 14 Años Bit 7 Bit 15 Siglos(1) (1) El usuario no puede modificar (ni aumentar ni disminuir) el día de la semana ni los siglos.4 respectivamente.  El botón pulsador "+" aumenta la visualización del tiempo seleccionado mediante la entrada %I0.1. Descripción de los comandos:  El conmutador de horas/minutos/segundos selecciona la visualización de la hora para cambiarla mediante las entradas %I0.  El botón pulsador "-" reduce la visualización del tiempo seleccionado mediante la entrada %I0. Consulte la guía de programación de su controlador para obtener una lista completa de palabras y bits de sistema. %I0. los minutos y los segundos del reloj interno.

Este programa lee las entradas del panel y ajusta el reloj interno: Escalón Instrucción Comentario 0 LD %M0 – ST %S59 1 LD %I0. 308 EIO0000001477 12/2016 .4 Segundo ANDR %I0.0 ST %SW59:X1 6 LD %I0.1 ST %SW59:X9 NOTA: Consulte el procedimiento de reversibilidad (véase página 18) para obtener el diagrama de contactos equivalente.2 Hora ANDR %I0.0 ST %SW59:X3 2 LD %I0.4 – ANDR %I0.3 – ANDR %I0.1 ST %SW59:X11 3 LD %I0.2 – ANDR %I0.1 ST %SW59:X10 5 LD %I0.3 Minuto ANDR %I0.0 ST %SW59:X2 4 LD %I0.

Los FBs se llaman mediante una instancia (copia del bloque de funciones con nombre y variables dedicados). etc. E/S. símbolos y documentación. % 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. controlador Automatiza procesos industriales (también conocido como controlador lógico programable o controlador programable). contadores bus de ampliación Un bus de comunicación electrónico entre los módulos de E/S de ampliación y un controlador. Ejemplos: temporizadores. y todas las instancias tienen un estado persistente (salidas y variables internas) de una llamada a otra. A aplicación Un programa que incluye datos de configuración. constantes. un objeto de lenguaje de tipo OUT digital). SoMachine Basic Glosario EIO0000001477 12/2016 Glosario ! % Según el estándar IEC. números y algunos caracteres gráficos y de control). ASCII (Código estándar estadounidense para el intercambio de información) Un protocolo que representa caracteres alfanuméricos (letras. EIO0000001477 12/2016 309 . %Q representa un bit de salida (por ejemplo. C configuración Organización e interconexión de los componentes de hardware en un sistema y los parámetros del hardware y software que determina las características operativas del sistema. B bloque de funciones Una unidad de programación que dispone de una o varias entradas y devuelve una o varias salidas. %Q Según el estándar IEC.

lenguaje de la lista de instrucciones Un programa escrito en el lenguaje de la lista de instrucciones que se compone de una serie de instrucciones basadas en texto y ejecutadas secuencialmente por el controlador. bobinas y bloques en una serie de escalones ejecutados de forma secuencial por un controlador (consulte IEC 61131-3). R RTC (reloj de tiempo real) Un reloj calendario de fecha/hora con respaldo de batería que funciona de forma continua aunque el controlador no reciba alimentación.Glosario E E/S (entrada/salida) entrada analógica Convierte los niveles de tensión o corriente recibidos en valores numéricos. S salida analógica Convierte los valores numéricos del controlador lógico y envía niveles de tensión o corriente proporcionales. mientras dure la batería. Puede almacenar y procesar estos valores en el controlador lógico. 310 EIO0000001477 12/2016 . un código de instrucción y un operando (consulte IEC 61131-3). L lenguaje de diagrama de contactos Una representación gráfica de instrucciones de un programa de controlador con símbolos para contactos. Cada instrucción incluye un número de línea. P programa El componente de una aplicación consistente en código fuente compilado capaz de poder ser instalado en la memoria de un controlador lógico.

38 %SEND_RECV_MSG. 29 ASCII %QW. 29 %Xi (paso de Grafcet). 58 %MW. 265 %C. 279 bloque de funciones configuración. 269 %I. 58 %Q. 273 descripción. 161 %WRITE_READ_VAR. 27 ACOS. 194 %QWS. 282 %SEND_RECV_SMS. 279 bloques de comparación ejemplo de programación. 233 %S18. 287 descripción. 29 ASIN. 263 configuración. 217 %READ_VAR. 29 %KD. 253 ejemplo de programación. 37 A %KW. 37 AND. propiedades . 37 ANDF. 287 configuración. 58 %MF. 32 ABS. 173 descripción. 261 %S. 295 descripción. 271 configuración. 223 B %SC. 32 %TM. 228 bits de sistema %SCH. 206 Asistente Drum. 37 %KF. 183 ANDN. 29 %X. 27 %SBR. 257 aumentar. 32 ANDR. 24 %SEND_RECV_SMS. 285 insertar expresiones IL en. 243 %IWS. 97 %MD. 94 %M. 97 configuración. 253 ATAN. 29 ejemplos. 74 descripción. 277 EIO0000001477 12/2016 311 . 271 ejemplo de programación. 27 %IW. 58 %MSG. 97 %R. 215 ejemplo de programación. 287 %SW. 263 %DR. SoMachine Basic Índice EIO0000001477 12/2016 Índice Symbols %WRITE_VAR.

propiedades de paso. 120 message. 161 EXPT. 228 contactos. 52 código fuente. 279 ejemplo de programación. 46 DINT_TO_REAL. 46 desborde de índice. 219 %WRITE_READ_VAR. 94 Reloj de tiempo real (RTC). 155 EXP. 243 índice. 74 dividir. 181 principios de programación. 271 Drum %WRITE_VAR. 175 funciones de reloj descripción. 74 detección. 29 Objetos de accionamiento. 29 objetos de red. uso de ejemplos. 206 EQUAL_ARR. 18 flanco descendente COS. 88 312 EIO0000001477 12/2016 . 122 cadenas de bits. 53 counter formato de dirección de entrada/salida. 42 flanco ascendente cálculo. 18 LIFO/FIFO register. 183 EXCH. 238 expresión de comparación shift bit register. 173 ajuste de fecha y hora. 24 timer. 21 F fechadores programación y configuración. 302 marcas de fecha y hora. 215 E fechadores. 29 configuración. 173 descripción general. 151 disminuir. 235 C FIND_. 249 objetos de E/S.Índice bloques de funciones Drum %READ_VAR. 178 descripción general. 305 ejemplo de programación. 216 %SEND_RECV_MSG. 94 bloques de operación insertar instrucciones de asignación en. 223 insertar en los escalones del diagrama de step counter. 263 descripción. código fuente. 74 I instrucción NOP. 97 detección. 233 ejemplos. 100 H direccionamiento herramientas formato. 47 Drum. 253 configuración. 303 D DEG_TO_RAD. 215 counter. 99 G desborde Grafcet.

208 pila. 86 ASCII. 115 LN. 113 EIO0000001477 12/2016 313 . 211 SR. 100 conversión de ASCII a entero. 118 LOG. 65 modbus instrucciones de conversión peticiones y ejemplos estándar. 113 MPS. 51 M instrucciones de asignación MAX_ARR. 94 tablas de objetos. 183 palabras. 107 L conversión de entero/coma flotante. 91 LIFO. 74 instrucciones booleanas. 52. 113 MRD. 53. 54 NOP. 91 aritméticas. 136 insertar en escalones del diagrama de message contactos. 97 instrucciones aritméticas. 80 conversión de ángulos. 54 conversión de flotante a ASCII. 78 booleano. 74 palabras simples y dobles. 21 configuración. Índice instrucciones instrucciones de SR (subrutina). 113 descripción. 181 instrucciones de pila MPP. 187 numérico. 116 MIN_ARR. 64 EXCH2. 105 conversión de ASCII a flotante. 109 conversión de entero a ASCII. 65 desplazamiento. 111 LDF. 86 LDN. 88 LIFO/FIFO register objetos de entrada/salida. 89 FIFO. 91 LKUP. 70 MEDIA. 103 ejemplo de programación. 50 instrucciones numéricas comparación. 102 instrucciones lógicas. 54 END. 131 tabla de objetos. 124 instrucciones de comparación. 196 BCD/binario. 192 tablas de objetos. 84 instrucciones de desplazamiento. 99 INT_TO_REAL. 72 ejemplo de programación. 74 instrucciones END. 212 salto. 69 descripción. 54 intercambio. 181 LDR. 94 trigonométricas. 124 cadenas de bits. 82 multiplicar. 210 subrutina. 206 ROUND. 100 LD. 145 configuración. 181 EXCH3. 80 instrucciones de intercambio N EXCH1. 181 N.

60 SQRT. 151 software. 226 carga. 60 SUM_ARR. 118 ORF. 223 asignación. 64 SORT_ARR. 37 objetos de red. 151. 74 objetos de bit de memoria READ_IMM_IN. 32 ROR_ARR. 74 bloque de funciones. 224 AND. 60 ORR. 62 STN. 42 R Objetos de accionamiento. 228 operadores OR. 126 S operaciones S. 68 red. 62 ST. 69 indexados. 56 objetos de bit RAD_TO_DEG. 56 insertar en escalones del diagrama de schedule blocks contactos. 42 asignación. 58 descripción. 100 descripción. 60 314 EIO0000001477 12/2016 . 127 descripción. 37 restar. 60 ejemplo de programación. 64 shift bit register operadores configuración. 100 objetos de coma flotante REAL_TO_INT. 21 descripción. 45 procesamiento numérico estructurados. 233 operador NOT.Índice O P objetos palabras de sistema definición de. 97 NOT. 48 configuración. 54 descripción. 229 operadores de carga. 27 REAL_TO_DINT. 129 OR. 56 OR. 94 XOR. 151 OCCUR_ARR. 74 objetos de palabra resto. 26 %SW17. 242 dirección indexada. 56 operadores AND. 60 sumar. 249 R. 45 descripción general. 48 raíz cuadrada. 45 PID. 48 ROL_ARR. 127 objetos de palabra doble RTC bloque de funciones. 99 bloque de funciones. 138 descripción. 74 ORN. 38 dirección directa. 56 ejemplo de programación. 241 descripción. 153 tablas. 54 SIN. 56 configuración. 58 step counter operadores de asignación. 230 operadores OR exclusivos.

167 tipo TON. 140 X XOR. 170 tipo TOF. 94 U uso de ejemplos de código fuente. 62 XORN. 62 XORF. 162 descripción. 164 tipo TP. 161 ejemplo de programación. 97 timer configuración. 62 XORR. 169 TRUNC. 18 V valor absoluto. 62 EIO0000001477 12/2016 315 . Índice T tablas instrucciones. 74 W WRITE_IMM_OUT. 115 TAN.

Índice 316 EIO0000001477 12/2016 .